From 93d4112bc34740b1f0eefc7a5a280047c1bdbc97 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sat, 1 Dec 2018 14:42:49 -0500 Subject: [PATCH 01/23] bootloader compiles --- fido2/crypto.c | 2 +- fido2/ctap.c | 2 +- fido2/ctaphid.c | 3 +- fido2/device.h | 3 + fido2/extensions/extensions.c | 63 +++++++++- fido2/extensions/wallet.c | 58 +-------- fido2/extensions/wallet.h | 15 ++- fido2/log.h | 2 +- fido2/main.c | 2 +- fido2/test_power.c | 2 +- fido2/u2f.c | 4 +- targets/stm32l442/Makefile | 7 +- targets/stm32l442/bootloader.mk | 81 +++++++++++++ targets/stm32l442/bootloader/bootloader.h | 38 ++++++ targets/stm32l442/bootloader/main.c | 105 ++++++++++++++++ targets/stm32l442/src/app.h | 2 +- targets/stm32l442/src/crypto.c | 2 +- targets/stm32l442/src/device.c | 139 +++++++++++++++++++++- targets/stm32l442/src/fifo.h | 2 +- targets/stm32l442/src/flash.c | 2 +- targets/stm32l442/src/main.c | 2 +- targets/stm32l442/src/redirect.c | 2 +- 22 files changed, 458 insertions(+), 80 deletions(-) create mode 100644 targets/stm32l442/bootloader.mk create mode 100644 targets/stm32l442/bootloader/bootloader.h create mode 100644 targets/stm32l442/bootloader/main.c diff --git a/fido2/crypto.c b/fido2/crypto.c index 35cf333..9c12921 100644 --- a/fido2/crypto.c +++ b/fido2/crypto.c @@ -18,7 +18,7 @@ #include "aes.h" #include "ctap.h" #include "device.h" -#include "app.h" +#include APP_CONFIG #ifdef USING_PC typedef enum diff --git a/fido2/ctap.c b/fido2/ctap.c index 8ac0a7a..43793e5 100644 --- a/fido2/ctap.c +++ b/fido2/ctap.c @@ -34,7 +34,7 @@ #include "util.h" #include "log.h" #include "device.h" -#include "app.h" +#include APP_CONFIG #include "wallet.h" #include "device.h" diff --git a/fido2/ctaphid.c b/fido2/ctaphid.c index e573405..2a30b28 100644 --- a/fido2/ctaphid.c +++ b/fido2/ctaphid.c @@ -30,7 +30,7 @@ #include "time.h" #include "util.h" #include "log.h" -#include "app.h" +#include APP_CONFIG typedef enum { @@ -616,6 +616,7 @@ uint8_t ctaphid_handle_packet(uint8_t * pkt_raw) break; #endif #ifndef DISABLE_CTAPHID_CBOR +#error rere case CTAPHID_CBOR: printf1(TAG_HID,"CTAPHID_CBOR\n"); diff --git a/fido2/device.h b/fido2/device.h index e07cc1e..027e7de 100644 --- a/fido2/device.h +++ b/fido2/device.h @@ -90,4 +90,7 @@ void ctap_store_rk(int index,CTAP_residentKey * rk); void ctap_load_rk(int index,CTAP_residentKey * rk); void ctap_overwrite_rk(int index,CTAP_residentKey * rk); +// Boot laoder application +int bootloader_bridge(uint8_t klen, uint8_t * keyh); + #endif diff --git a/fido2/extensions/extensions.c b/fido2/extensions/extensions.c index cfa0012..dd535be 100644 --- a/fido2/extensions/extensions.c +++ b/fido2/extensions/extensions.c @@ -23,9 +23,66 @@ #include "extensions.h" #include "u2f.h" #include "wallet.h" +#include "device.h" #include "log.h" + +int is_extension_request(uint8_t * kh, int len) +{ + wallet_request * req = (wallet_request *) kh; + + if (len < WALLET_MIN_LENGTH) + return 0; + + return memcmp(req->tag, WALLET_TAG, sizeof(WALLET_TAG)-1) == 0; +} + + +int extension_needs_atomic_count(uint8_t klen, uint8_t * keyh) +{ + return ((wallet_request *) keyh)->operation == WalletRegister + || ((wallet_request *) keyh)->operation == WalletSign; +} + +int16_t bridge_u2f_to_extensions(uint8_t * _chal, uint8_t * _appid, uint8_t klen, uint8_t * keyh) +{ + int8_t ret = 0; + uint32_t count; + uint8_t up = 1; + uint8_t sig[72]; + if (extension_needs_atomic_count(klen, keyh)) + { + count = ctap_atomic_count(0); + } + else + { + count = 10; + } + + u2f_response_writeback(&up,1); + u2f_response_writeback((uint8_t *)&count,4); + u2f_response_writeback((uint8_t *)&ret,1); +#ifdef IS_BOOTLOADER + ret = bootloader_bridge(klen, keyh); +#else + ret = bridge_u2f_to_wallet(_chal, _appid, klen, keyh); +#endif + + if (ret != 0) + { + u2f_reset_response(); + u2f_response_writeback(&up,1); + u2f_response_writeback((uint8_t *)&count,4); + + memset(sig,0,sizeof(sig)); + sig[0] = ret; + u2f_response_writeback(sig,72); + } + + return U2F_SW_NO_ERROR; +} + int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) { @@ -37,7 +94,7 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) if (req->p1 == U2F_AUTHENTICATE_CHECK) { - if (is_wallet_device((uint8_t *) &auth->kh, auth->khl)) // Pin requests + if (is_extension_request((uint8_t *) &auth->kh, auth->khl)) // Pin requests { rcode = U2F_SW_CONDITIONS_NOT_SATISFIED; } @@ -50,13 +107,13 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) } else { - if ( ! is_wallet_device((uint8_t *) &auth->kh, auth->khl)) // Pin requests + if ( ! is_extension_request((uint8_t *) &auth->kh, auth->khl)) // Pin requests { rcode = U2F_SW_WRONG_PAYLOAD; printf1(TAG_WALLET,"Ignoring U2F request\n"); goto end; } - rcode = bridge_u2f_to_wallet(auth->chal, auth->app, auth->khl, (uint8_t*)&auth->kh); + rcode = bridge_u2f_to_extensions(auth->chal, auth->app, auth->khl, (uint8_t*)&auth->kh); } } else if (req->ins == U2F_VERSION) diff --git a/fido2/extensions/wallet.c b/fido2/extensions/wallet.c index c93bb1a..9241a9b 100644 --- a/fido2/extensions/wallet.c +++ b/fido2/extensions/wallet.c @@ -20,7 +20,7 @@ SOFTWARE. */ #include "wallet.h" -#include "app.h" +#include APP_CONFIG #include "ctap.h" #include "ctap_errors.h" #include "crypto.h" @@ -52,26 +52,6 @@ typedef enum #endif -typedef enum -{ - WalletSign = 0x10, - WalletRegister = 0x11, - WalletPin = 0x12, - WalletReset= 0x13, - WalletVersion= 0x14, - WalletRng = 0x15, -} WalletOperation; - -int is_wallet_device(uint8_t * kh, int len) -{ - wallet_request * req = (wallet_request *) kh; - - if (len < WALLET_MIN_LENGTH) - return 0; - - return memcmp(req->tag, WALLET_TAG, sizeof(WALLET_TAG)-1) == 0; -} - // return 1 if hash is valid, 0 otherwise int check_pinhash(uint8_t * pinAuth, uint8_t * msg, uint8_t len) { @@ -200,8 +180,7 @@ int16_t bridge_u2f_to_wallet(uint8_t * _chal, uint8_t * _appid, uint8_t klen, ui int reqlen = klen; int i; int8_t ret = 0; - uint32_t count; - uint8_t up = 1; + uint8_t sig[200]; uint8_t * args[5] = {NULL,NULL,NULL,NULL,NULL}; @@ -222,21 +201,6 @@ int16_t bridge_u2f_to_wallet(uint8_t * _chal, uint8_t * _appid, uint8_t klen, ui printf1(TAG_WALLET, "u2f2wallet [%d]: ",reqlen); dump_hex1(TAG_WALLET, msg_buf,reqlen); - if (req->operation == WalletRegister || req->operation == WalletSign) - { - count = ctap_atomic_count(0); - } - else - { - count = 10; - } - - u2f_response_writeback(&up,1); - u2f_response_writeback((uint8_t *)&count,4); - u2f_response_writeback((uint8_t *)&ret,1); - -#ifndef IS_BOOTLOADER - int offset = 0; for (i = 0; i < MIN(5,req->numArgs); i++) { @@ -466,24 +430,8 @@ int16_t bridge_u2f_to_wallet(uint8_t * _chal, uint8_t * _appid, uint8_t klen, ui ret = CTAP1_ERR_INVALID_COMMAND; break; } -#else - ret = bootloader_bridge(klen, keyh); -#endif cleanup: - if (ret != 0) - { - u2f_reset_response(); - u2f_response_writeback(&up,1); - u2f_response_writeback((uint8_t *)&count,4); - memset(sig,0,sizeof(sig)); - sig[0] = ret; - u2f_response_writeback(sig,72); - } - else - { - /*u2f_response_writeback(sig,sizeof(sig));*/ - } - return U2F_SW_NO_ERROR; + return ret; } diff --git a/fido2/extensions/wallet.h b/fido2/extensions/wallet.h index 349467c..a6e9676 100644 --- a/fido2/extensions/wallet.h +++ b/fido2/extensions/wallet.h @@ -92,10 +92,21 @@ typedef struct }__attribute__((packed)) wallet_request; -int16_t bridge_u2f_to_wallet(uint8_t * chal, uint8_t * appid, uint8_t klen, uint8_t * keyh); +typedef enum +{ + WalletSign = 0x10, + WalletRegister = 0x11, + WalletPin = 0x12, + WalletReset= 0x13, + WalletVersion= 0x14, + WalletRng = 0x15, +} WalletOperation; + + +int16_t bridge_u2f_to_extensions(uint8_t * chal, uint8_t * appid, uint8_t klen, uint8_t * keyh); // return 1 if request is a wallet request -int is_wallet_device(uint8_t * req, int len); +int is_extension_request(uint8_t * req, int len); void wallet_init(); diff --git a/fido2/log.h b/fido2/log.h index 3f0ba33..12a9a09 100644 --- a/fido2/log.h +++ b/fido2/log.h @@ -22,7 +22,7 @@ #ifndef _LOG_H #define _LOG_H -#include "app.h" +#include APP_CONFIG #include #ifndef DEBUG_LEVEL diff --git a/fido2/main.c b/fido2/main.c index 8c2cdb3..bb09ac0 100644 --- a/fido2/main.c +++ b/fido2/main.c @@ -30,7 +30,7 @@ #include "util.h" #include "log.h" #include "ctap.h" -#include "app.h" +#include APP_CONFIG #if !defined(TEST) diff --git a/fido2/test_power.c b/fido2/test_power.c index 38e2b4f..ef62b00 100644 --- a/fido2/test_power.c +++ b/fido2/test_power.c @@ -19,7 +19,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include "app.h" +#include APP_CONFIG #ifdef TEST_POWER /* diff --git a/fido2/u2f.c b/fido2/u2f.c index 22b98ff..3a4f690 100644 --- a/fido2/u2f.c +++ b/fido2/u2f.c @@ -26,7 +26,7 @@ #include "log.h" #include "device.h" #include "wallet.h" -#include "app.h" +#include APP_CONFIG // void u2f_response_writeback(uint8_t * buf, uint8_t len); static int16_t u2f_register(struct u2f_register_request * req); @@ -284,8 +284,6 @@ static int16_t u2f_register(struct u2f_register_request * req) crypto_ecc256_load_attestation_key(); - /*printf("check key handle size: %d vs %d\n", U2F_KEY_HANDLE_SIZE, sizeof(struct u2f_key_handle));*/ - printf1(TAG_U2F, "sha256: "); dump_hex1(TAG_U2F,hash,32); crypto_ecc256_sign(hash, 32, sig); diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 54209d2..5c13eac 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -10,7 +10,7 @@ SRC += src/startup_stm32l432xx.s src/system_stm32l4xx.c SRC += $(wildcard lib/*.c) $(wildcard lib/usbd/*.c) # FIDO2 lib -SRC += ../../fido2/util.c ../../fido2/u2f.c ../../fido2/test_power.c ../../fido2/test_power.c +SRC += ../../fido2/util.c ../../fido2/u2f.c ../../fido2/test_power.c SRC += ../../fido2/stubs.c ../../fido2/log.c ../../fido2/ctaphid.c ../../fido2/ctap.c SRC += ../../fido2/ctap_parse.c ../../fido2/main.c @@ -39,7 +39,7 @@ HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb # Solo CHIP=STM32L442xx -DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER +DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"app.h\" # DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) @@ -67,6 +67,9 @@ all: $(TARGET).elf %.hex: %.elf $(CP) -O ihex $^ $(TARGET).hex +bootloader: + make -f bootloader.mk + clean: rm -f *.o src/*.o src/*.elf *.elf *.hex $(OBJ) diff --git a/targets/stm32l442/bootloader.mk b/targets/stm32l442/bootloader.mk new file mode 100644 index 0000000..409f58f --- /dev/null +++ b/targets/stm32l442/bootloader.mk @@ -0,0 +1,81 @@ +CC=arm-none-eabi-gcc +CP=arm-none-eabi-objcopy +SZ=arm-none-eabi-size +AR=arm-none-eabi-ar + +# ST related +SRC = bootloader/main.c src/init.c src/redirect.c src/flash.c src/rng.c src/led.c src/device.c +SRC += src/fifo.c src/crypto.c src/attestation.c +SRC += src/startup_stm32l432xx.s src/system_stm32l4xx.c +SRC += $(wildcard lib/*.c) $(wildcard lib/usbd/*.c) + +# FIDO2 lib +SRC += ../../fido2/util.c ../../fido2/u2f.c ../../fido2/extensions/extensions.c +SRC += ../../fido2/stubs.c ../../fido2/log.c ../../fido2/ctaphid.c ../../fido2/ctap.c + +# Crypto libs +SRC += ../../crypto/sha256/sha256.c ../../crypto/micro-ecc/uECC.c + + +OBJ1=$(SRC:.c=.o) +OBJ=$(OBJ1:.s=.o) + +INC = -Ibootloader/ -Isrc/ -Isrc/cmsis/ -Ilib/ -Ilib/usbd/ -I../../fido2/ -I../../fido2/extensions +INC += -I../../tinycbor/src -I../../crypto/sha256 -I../../crypto/micro-ecc +INC += -I../../crypto/tiny-AES-c + +LDSCRIPT=stm32l432xx.ld + +CFLAGS= $(INC) + +TARGET=solo +HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb + +# Nucleo board +#CHIP=STM32L432xx +# Solo +CHIP=STM32L442xx + +DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"bootloader.h\" +# DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 + +CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) +LDFLAGS_LIB=$(HW) $(SEARCH) -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -lnosys +LDFLAGS=$(HW) $(LDFLAGS_LIB) -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref + + +.PRECIOUS: %.o + +all: $(TARGET).elf + $(SZ) $^ + +%.o: %.c + $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ + +../../crypto/micro-ecc/uECC.o: ../../crypto/micro-ecc/uECC.c + $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ + +%.o: %.s + $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ + +%.elf: $(OBJ) + $(CC) $^ $(HW) $(LDFLAGS) -o $@ + +%.hex: %.elf + $(CP) -O ihex $^ $(TARGET).hex + +clean: + rm -f *.o src/*.o src/*.elf *.elf *.hex $(OBJ) + +flash: $(TARGET).hex + STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect + STM32_Programmer_CLI -c port=SWD -halt -d $(TARGET).hex -rst + +detach: + STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 + +cbor: + cd ../../tinycbor/ && make clean + cd ../../tinycbor/ && make CC="$(CC)" AR=$(AR) \ +LDFLAGS="$(LDFLAGS_LIB)" \ +CFLAGS="$(CFLAGS)" diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h new file mode 100644 index 0000000..98d5fb0 --- /dev/null +++ b/targets/stm32l442/bootloader/bootloader.h @@ -0,0 +1,38 @@ +#ifndef _APP_H_ +#define _APP_H_ +#include + +#define DEBUG_UART USART1 + +#define DEBUG_LEVEL 0 + +#define NON_BLOCK_PRINTING 0 + + +#define BOOT_TO_DFU 0 + + +#define IS_BOOTLOADER 1 +#define ENABLE_U2F_EXTENSIONS +// #define ENABLE_U2F + +#define DISABLE_CTAPHID_PING +#define DISABLE_CTAPHID_WINK +#define DISABLE_CTAPHID_CBOR + +void printing_init(); +void hw_init(void); + +//#define TEST +//#define TEST_POWER + +#define LED_INIT_VALUE 0x001000 + +// Button +#define SOLO_BUTTON_PORT GPIOA +#define SOLO_BUTTON_PIN LL_GPIO_PIN_0 + +#define SKIP_BUTTON_CHECK_WITH_DELAY 0 +#define SKIP_BUTTON_CHECK_FAST 1 + +#endif diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c new file mode 100644 index 0000000..9139f14 --- /dev/null +++ b/targets/stm32l442/bootloader/main.c @@ -0,0 +1,105 @@ +/* + Copyright 2018 Conor Patrick + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. +*/ +#include +#include +#include + +#include "cbor.h" +#include "device.h" +#include "ctaphid.h" +//#include "bsp.h" +#include "util.h" +#include "log.h" +#include "ctap.h" +#include "app.h" + +uint8_t REBOOT_FLAG = 0; + +#if !defined(TEST) + +int main(int argc, char * argv[]) +{ + uint8_t hidmsg[64]; + uint32_t t1 = 0; + + set_logging_mask( + /*0*/ + // TAG_GEN| + // TAG_MC | + // TAG_GA | + // TAG_WALLET | + TAG_STOR | + // TAG_CP | + // TAG_CTAP| + // TAG_HID| + /*TAG_U2F|*/ + // TAG_PARSE | + // TAG_TIME| + // TAG_DUMP| + TAG_GREEN| + TAG_RED| + TAG_ERR + ); + + device_init(); + printf1(TAG_GEN,"init device\n"); + + printf1(TAG_GEN,"init ctaphid\n"); + ctaphid_init(); + + printf1(TAG_GEN,"init ctap\n"); + ctap_init(); + + memset(hidmsg,0,sizeof(hidmsg)); + + printf1(TAG_GEN,"recv'ing hid msg \n"); + + + while(1) + { + if (millis() - t1 > 100) + { + /*printf("heartbeat %ld\n", beat++);*/ + heartbeat(); + t1 = millis(); + } + + device_manage(); + + if (usbhid_recv(hidmsg) > 0) + { + ctaphid_handle_packet(hidmsg); + memset(hidmsg, 0, sizeof(hidmsg)); + } + else + { + } + ctaphid_check_timeouts(); + } + + // Should never get here + usbhid_close(); + printf1(TAG_GREEN, "done\n"); + return 0; +} + +#endif diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index a05b461..f506427 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -4,7 +4,7 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 0 +#define DEBUG_LEVEL 1 #define NON_BLOCK_PRINTING 0 diff --git a/targets/stm32l442/src/crypto.c b/targets/stm32l442/src/crypto.c index be437b8..9bab3d4 100644 --- a/targets/stm32l442/src/crypto.c +++ b/targets/stm32l442/src/crypto.c @@ -18,7 +18,7 @@ #include "aes.h" #include "ctap.h" #include "device.h" -#include "app.h" +#include APP_CONFIG #include "log.h" diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index 7979173..30bd620 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -7,7 +7,7 @@ #include "stm32l4xx_ll_usart.h" #include "usbd_hid.h" -#include "app.h" +#include APP_CONFIG #include "flash.h" #include "rng.h" #include "led.h" @@ -17,6 +17,8 @@ #include "log.h" #include "ctaphid.h" #include "ctap.h" +#include "crypto.h" +#include "uECC.h" #define PAGE_SIZE 2048 @@ -36,9 +38,9 @@ #define APPLICATION_START_ADDR flash_addr(APPLICATION_START_PAGE) #define APPLICATION_END_PAGE ((PAGES - 19)) // 119 is NOT included in application -#define APPLICATION_END_ADDR (flash_addr(APPLICATION_END_PAGE)-4) // NOT included in application +#define APPLICATION_END_ADDR (flash_addr(APPLICATION_END_PAGE)-8) // NOT included in application -#define AUTH_WORD_ADDR (flash_addr(APPLICATION_END_PAGE)-4) +#define AUTH_WORD_ADDR (flash_addr(APPLICATION_END_PAGE)-8) uint32_t __90_ms = 0; uint32_t __device_status = 0; @@ -497,3 +499,134 @@ void _Error_Handler(char *file, int line) { } } + + +#ifdef IS_BOOTLOADER + +extern uint8_t REBOOT_FLAG; + +typedef enum +{ + BootWrite = 0x40, + BootDone = 0x41, + BootCheck = 0x42, + BootErase = 0x43, +} WalletOperation; + + +typedef struct { + uint8_t op; + uint8_t addr[3]; + uint8_t tag[4]; + uint8_t len; + uint8_t payload[255 - 9]; +} __attribute__((packed)) BootloaderReq; + +//#define APPLICATION_START_ADDR 0x8000 +//#define APPLICATION_START_PAGE (0x8000/PAGE_SIZE) + +//#define APPLICATION_END_ADDR (PAGE_SIZE*125-4) // NOT included in application + +static void erase_application() +{ + int page; + for(page = APPLICATION_START_PAGE; page < APPLICATION_END_PAGE; page++) + { + flash_erase_page(page); + } +} + +static void authorize_application() +{ + uint32_t zero = 0; + uint32_t * ptr; + ptr = (uint32_t *)AUTH_WORD_ADDR; + flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); +} +static int is_authorized_to_boot() +{ + uint32_t * auth = (uint32_t *)AUTH_WORD_ADDR; + return *auth == 0; +} + +int bootloader_bridge(uint8_t klen, uint8_t * keyh) +{ + static int has_erased = 0; + BootloaderReq * req = (BootloaderReq * )keyh; + uint8_t payload[256]; + uint8_t hash[32]; + uint8_t * pubkey = (uint8_t*)"\x57\xe6\x80\x39\x56\x46\x2f\x0c\x95\xac\x72\x71\xf0\xbc\xe8\x2d\x67\xd0\x59\x29\x2e\x15\x22\x89\x6a\xbd\x3f\x7f\x27\xf3\xc0\xc6\xe2\xd7\x7d\x8a\x9f\xcc\x53\xc5\x91\xb2\x0c\x9c\x3b\x4e\xa4\x87\x31\x67\xb4\xa9\x4b\x0e\x8d\x06\x67\xd8\xc5\xef\x2c\x50\x4a\x55"; + const struct uECC_Curve_t * curve = NULL; + + /*printf("bootloader_bridge\n");*/ + if (req->len > 255-9) + { + return CTAP1_ERR_INVALID_LENGTH; + } + + memset(payload, 0xff, sizeof(payload)); + memmove(payload, req->payload, req->len); + + uint32_t addr = (*((uint32_t*)req->addr)) & 0xffffff; + + uint32_t * ptr = (uint32_t *)addr; + + switch(req->op){ + case BootWrite: + /*printf("BootWrite 0x%08x\n", addr);*/ + if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR) + { + return CTAP2_ERR_NOT_ALLOWED; + } + + if (!has_erased) + { + erase_application(); + has_erased = 1; + } + if (is_authorized_to_boot()) + { + printf2(TAG_ERR, "Error, boot check bypassed\n"); + exit(1); + } + flash_write((uint32_t)ptr,payload, req->len + (req->len%4)); + break; + case BootDone: + // printf("BootDone\n"); + ptr = (uint32_t *)APPLICATION_START_ADDR; + crypto_sha256_init(); + crypto_sha256_update(ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); + crypto_sha256_final(hash); + // printf("hash: "); dump_hex(hash, 32); + // printf("sig: "); dump_hex(payload, 64); + curve = uECC_secp256r1(); + + if (! uECC_verify(pubkey, + hash, + 32, + payload, + curve)) + { + return CTAP2_ERR_OPERATION_DENIED; + } + authorize_application(); + REBOOT_FLAG = 1; + break; + case BootCheck: + /*printf("BootCheck\n");*/ + return 0; + break; + case BootErase: + /*printf("BootErase\n");*/ + erase_application(); + return 0; + break; + default: + return CTAP1_ERR_INVALID_COMMAND; + } + return 0; +} + + + +#endif diff --git a/targets/stm32l442/src/fifo.h b/targets/stm32l442/src/fifo.h index 115e04f..2b6b868 100644 --- a/targets/stm32l442/src/fifo.h +++ b/targets/stm32l442/src/fifo.h @@ -1,7 +1,7 @@ #ifndef _FIFO_H_ #define _FIFO_H_ -#include "app.h" +#include APP_CONFIG #ifndef TEST_FIFO #define TEST_FIFO 0 diff --git a/targets/stm32l442/src/flash.c b/targets/stm32l442/src/flash.c index f6254a8..63f6f7a 100644 --- a/targets/stm32l442/src/flash.c +++ b/targets/stm32l442/src/flash.c @@ -3,7 +3,7 @@ #include #include "stm32l4xx.h" -#include "app.h" +#include APP_CONFIG #include "flash.h" #include "log.h" #include "device.h" diff --git a/targets/stm32l442/src/main.c b/targets/stm32l442/src/main.c index 25e9a5c..e1a4ac0 100644 --- a/targets/stm32l442/src/main.c +++ b/targets/stm32l442/src/main.c @@ -20,7 +20,7 @@ #include "usbd_hid.h" /*#include "usbd_hid.h"*/ -#include "app.h" +#include APP_CONFIG #include "flash.h" #include "rng.h" #include "led.h" diff --git a/targets/stm32l442/src/redirect.c b/targets/stm32l442/src/redirect.c index 5c8dbf4..e75b183 100644 --- a/targets/stm32l442/src/redirect.c +++ b/targets/stm32l442/src/redirect.c @@ -1,6 +1,6 @@ #include "stm32l4xx_ll_usart.h" -#include "app.h" +#include APP_CONFIG #include "fifo.h" #if DEBUG_LEVEL>0 From ac7950f4c47e88d898ac047ed788738378e7fddd Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sat, 1 Dec 2018 17:10:49 -0500 Subject: [PATCH 02/23] remove printf references, add bootloader script, merge hex files --- Makefile | 2 +- fido2/crypto.c | 16 +- fido2/ctaphid.c | 1 - fido2/device.h | 10 ++ fido2/extensions/extensions.c | 2 +- fido2/extensions/wallet.c | 2 - fido2/main.c | 2 +- fido2/stubs.c | 12 +- fido2/util.c | 7 +- targets/stm32l442/Makefile | 8 +- targets/stm32l442/bootloader.mk | 8 +- targets/stm32l442/bootloader/bootloader.h | 6 +- targets/stm32l442/bootloader/main.c | 81 ++++++++- targets/stm32l442/bootloader_stm32l4xx.ld | 201 ++++++++++++++++++++++ targets/stm32l442/lib/usbd/usbd_hid.c | 11 +- targets/stm32l442/merge_hex.py | 28 +++ targets/stm32l442/requirements.txt | 1 + targets/stm32l442/src/app.h | 2 +- targets/stm32l442/src/device.c | 38 +++- targets/stm32l442/src/fifo.c | 37 ++-- targets/stm32l442/src/init.c | 5 +- targets/stm32l442/stm32l432xx.ld | 3 +- 22 files changed, 409 insertions(+), 74 deletions(-) create mode 100644 targets/stm32l442/bootloader_stm32l4xx.ld create mode 100644 targets/stm32l442/merge_hex.py create mode 100644 targets/stm32l442/requirements.txt diff --git a/Makefile b/Makefile index 54b292a..7be1e42 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ else export LDFLAGS = -Wl,--gc-sections endif LDFLAGS += $(LIBCBOR) -CFLAGS = -O2 -fdata-sections -ffunction-sections +CFLAGS = -O2 -fdata-sections -ffunction-sections INCLUDES = -I./tinycbor/src -I./crypto/sha256 -I./crypto/micro-ecc/ -Icrypto/tiny-AES-c/ -I./fido2/ -I./pc -I./fido2/extensions diff --git a/fido2/crypto.c b/fido2/crypto.c index 9c12921..9248644 100644 --- a/fido2/crypto.c +++ b/fido2/crypto.c @@ -104,7 +104,7 @@ void crypto_sha256_hmac_init(uint8_t * key, uint32_t klen, uint8_t * hmac) if(klen > 64) { - printf("Error, key size must be <= 64\n"); + printf2(TAG_ERR,"Error, key size must be <= 64\n"); exit(1); } @@ -134,7 +134,7 @@ void crypto_sha256_hmac_final(uint8_t * key, uint32_t klen, uint8_t * hmac) if(klen > 64) { - printf("Error, key size must be <= 64\n"); + printf2(TAG_ERR,"Error, key size must be <= 64\n"); exit(1); } memmove(buf, key, klen); @@ -168,7 +168,7 @@ void crypto_ecc256_sign(uint8_t * data, int len, uint8_t * sig) { if ( uECC_sign(_signing_key, data, len, sig, _es256_curve) == 0) { - printf("error, uECC failed\n"); + printf2(TAG_ERR,"error, uECC failed\n"); exit(1); } } @@ -205,19 +205,19 @@ void crypto_ecdsa_sign(uint8_t * data, int len, uint8_t * sig, int MBEDTLS_ECP_I if (_key_len != 32) goto fail; break; default: - printf("error, invalid ECDSA alg specifier\n"); + printf2(TAG_ERR,"error, invalid ECDSA alg specifier\n"); exit(1); } if ( uECC_sign(_signing_key, data, len, sig, curve) == 0) { - printf("error, uECC failed\n"); + printf2(TAG_ERR,"error, uECC failed\n"); exit(1); } return; fail: - printf("error, invalid key length\n"); + printf2(TAG_ERR,"error, invalid key length\n"); exit(1); } @@ -257,7 +257,7 @@ void crypto_ecc256_make_key_pair(uint8_t * pubkey, uint8_t * privkey) { if (uECC_make_key(pubkey, privkey, _es256_curve) != 1) { - printf("Error, uECC_make_key failed\n"); + printf2(TAG_ERR,"Error, uECC_make_key failed\n"); exit(1); } } @@ -266,7 +266,7 @@ void crypto_ecc256_shared_secret(const uint8_t * pubkey, const uint8_t * privkey { if (uECC_shared_secret(pubkey, privkey, shared_secret, _es256_curve) != 1) { - printf("Error, uECC_shared_secret failed\n"); + printf2(TAG_ERR,"Error, uECC_shared_secret failed\n"); exit(1); } diff --git a/fido2/ctaphid.c b/fido2/ctaphid.c index 2a30b28..86ec845 100644 --- a/fido2/ctaphid.c +++ b/fido2/ctaphid.c @@ -616,7 +616,6 @@ uint8_t ctaphid_handle_packet(uint8_t * pkt_raw) break; #endif #ifndef DISABLE_CTAPHID_CBOR -#error rere case CTAPHID_CBOR: printf1(TAG_HID,"CTAPHID_CBOR\n"); diff --git a/fido2/device.h b/fido2/device.h index 027e7de..536ab85 100644 --- a/fido2/device.h +++ b/fido2/device.h @@ -44,6 +44,7 @@ void usbhid_close(); void main_loop_delay(); void heartbeat(); +void bootloader_heartbeat(); void authenticator_read_state(AuthenticatorState * ); @@ -62,6 +63,9 @@ void device_manage(); // A timer should be set up to call `ctaphid_update_status` void device_set_status(int status); +// Returns if button is currently pressed +int device_is_button_pressed(); + // Test for user presence // Return 1 for user is present, 0 user not present, -1 if cancel is requested. extern int ctap_user_presence_test(); @@ -93,4 +97,10 @@ void ctap_overwrite_rk(int index,CTAP_residentKey * rk); // Boot laoder application int bootloader_bridge(uint8_t klen, uint8_t * keyh); +// Trigger software reset +void device_reboot(); + +// for bootloader +int is_authorized_to_boot(); + #endif diff --git a/fido2/extensions/extensions.c b/fido2/extensions/extensions.c index dd535be..00accea 100644 --- a/fido2/extensions/extensions.c +++ b/fido2/extensions/extensions.c @@ -100,7 +100,7 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) } else { - rcode = U2F_SW_WRONG_DATA; + rcode = U2F_SW_WRONG_DATA; } printf1(TAG_WALLET,"Ignoring U2F request\n"); goto end; diff --git a/fido2/extensions/wallet.c b/fido2/extensions/wallet.c index 9241a9b..0a4ce9f 100644 --- a/fido2/extensions/wallet.c +++ b/fido2/extensions/wallet.c @@ -312,8 +312,6 @@ int16_t bridge_u2f_to_wallet(uint8_t * _chal, uint8_t * _appid, uint8_t klen, ui memmove(chksum, args[0] + lens[0] - 4, 4); lens[0] -= 4; - /*printf("chksum: "); dump_hex1(TAG_WALLET, chksum, 4);*/ - // perform integrity check /*printf1(TAG_WALLET,"shasum on [%d]: ",lens[0]); dump_hex1(TAG_WALLET, args[0], lens[0]);*/ crypto_sha256_init(); diff --git a/fido2/main.c b/fido2/main.c index bb09ac0..d864845 100644 --- a/fido2/main.c +++ b/fido2/main.c @@ -76,7 +76,7 @@ int main(int argc, char * argv[]) { if (millis() - t1 > 100) { - /*printf("heartbeat %ld\n", beat++);*/ + /*printf1(TAG_GEN,"heartbeat %ld\n", beat++);*/ heartbeat(); t1 = millis(); } diff --git a/fido2/stubs.c b/fido2/stubs.c index 4897530..c70ac8e 100644 --- a/fido2/stubs.c +++ b/fido2/stubs.c @@ -31,18 +31,18 @@ void ctap_init() { - printf("STUB: ctap_init\n"); + printf1(TAG_GEN,"STUB: ctap_init\n"); } #endif #if defined(STUB_CTAPHID) void ctaphid_init() { - printf("STUB: ctaphid_init\n"); + printf1(TAG_GEN,"STUB: ctaphid_init\n"); } void ctaphid_handle_packet(uint8_t * hidmsg) { - printf("STUB: ctaphid_handle_packet\n"); + printf1(TAG_GEN,"STUB: ctaphid_handle_packet\n"); } void ctaphid_check_timeouts() @@ -57,7 +57,7 @@ void ctaphid_check_timeouts() void ctap_reset_state() { - printf("STUB: ctap_reset_state\n"); + printf1(TAG_GEN,"STUB: ctap_reset_state\n"); } void ctap_response_init(CTAP_RESPONSE * resp) @@ -66,12 +66,12 @@ void ctap_response_init(CTAP_RESPONSE * resp) void u2f_request(struct u2f_request_apdu* req, CTAP_RESPONSE * resp) { - printf("STUB: u2f_request\n"); + printf1(TAG_GEN,"STUB: u2f_request\n"); } uint8_t ctap_request(uint8_t * pkt_raw, int length, CTAP_RESPONSE * resp) { - printf("STUB: ctap_request\n"); + printf1(TAG_GEN,"STUB: ctap_request\n"); return 0; } #endif diff --git a/fido2/util.c b/fido2/util.c index 5394b74..0d6f9bb 100644 --- a/fido2/util.c +++ b/fido2/util.c @@ -22,6 +22,7 @@ #include #include +#if DEBUG_LEVEL void dump_hex(uint8_t * buf, int size) { while(size--) @@ -30,5 +31,9 @@ void dump_hex(uint8_t * buf, int size) } printf("\n"); } +#else +void dump_hex(uint8_t * buf, int size) +{ +} - +#endif diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 5c13eac..940d00c 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -71,12 +71,16 @@ bootloader: make -f bootloader.mk clean: - rm -f *.o src/*.o src/*.elf *.elf *.hex $(OBJ) + rm -f *.o src/*.o src/*.elf bootloader/*.o $(OBJ) flash: $(TARGET).hex - STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect + # STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect STM32_Programmer_CLI -c port=SWD -halt -d $(TARGET).hex -rst +flashall: + # STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect + STM32_Programmer_CLI -c port=SWD -halt -d all.hex -rst + detach: STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 diff --git a/targets/stm32l442/bootloader.mk b/targets/stm32l442/bootloader.mk index 409f58f..b7c2b8b 100644 --- a/targets/stm32l442/bootloader.mk +++ b/targets/stm32l442/bootloader.mk @@ -24,11 +24,11 @@ INC = -Ibootloader/ -Isrc/ -Isrc/cmsis/ -Ilib/ -Ilib/usbd/ -I../../fido2/ -I../. INC += -I../../tinycbor/src -I../../crypto/sha256 -I../../crypto/micro-ecc INC += -I../../crypto/tiny-AES-c -LDSCRIPT=stm32l432xx.ld +LDSCRIPT=bootloader_stm32l4xx.ld CFLAGS= $(INC) -TARGET=solo +TARGET=bootloader HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb # Nucleo board @@ -39,7 +39,7 @@ CHIP=STM32L442xx DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"bootloader.h\" # DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 -CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) +CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) -g LDFLAGS_LIB=$(HW) $(SEARCH) -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -lnosys LDFLAGS=$(HW) $(LDFLAGS_LIB) -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref @@ -65,7 +65,7 @@ all: $(TARGET).elf $(CP) -O ihex $^ $(TARGET).hex clean: - rm -f *.o src/*.o src/*.elf *.elf *.hex $(OBJ) + rm -f *.o src/*.o bootloader/*.o src/*.elf $(OBJ) flash: $(TARGET).hex STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index 98d5fb0..bfd78aa 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -4,7 +4,7 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 0 +#define DEBUG_LEVEL 1 #define NON_BLOCK_PRINTING 0 @@ -16,6 +16,8 @@ #define ENABLE_U2F_EXTENSIONS // #define ENABLE_U2F +#define APPLICATION_JUMP_ADDR (0x08000000 + 32 * 2048) + #define DISABLE_CTAPHID_PING #define DISABLE_CTAPHID_WINK #define DISABLE_CTAPHID_CBOR @@ -26,7 +28,7 @@ void hw_init(void); //#define TEST //#define TEST_POWER -#define LED_INIT_VALUE 0x001000 +#define LED_INIT_VALUE 0x101000 // Button #define SOLO_BUTTON_PORT GPIOA diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 9139f14..24b6af1 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -32,18 +32,62 @@ #include "ctap.h" #include "app.h" +#include "stm32l4xx.h" + uint8_t REBOOT_FLAG = 0; -#if !defined(TEST) + +#if defined ( __CC_ARM ) +__asm void BOOT_jump(uint32_t sp, uint32_t pc) +{ + /* Set new MSP, PSP based on SP (r0)*/ + msr msp, r0 + msr psp, r0 + + /* Jump to PC (r1)*/ + bx r1 +} +#else +void __attribute__((optimize("O0"))) BOOT_jump(uint32_t sp, uint32_t pc) +{ + (void) sp; + (void) pc; + /* Set new MSP, PSP based on SP (r0)*/ + __asm("msr msp, r0"); + __asm("msr psp, r0"); + + /* Jump to PC (r1)*/ + __asm("mov pc, r1"); +} +#endif + + +void __attribute__((optimize("O0"))) BOOT_boot(void) +{ + uint32_t pc, sp; + + uint32_t *bootAddress = (uint32_t *)(APPLICATION_JUMP_ADDR); + + /* Set new vector table */ + SCB->VTOR = (uint32_t)bootAddress; + + /* Read new SP and PC from vector table */ + sp = bootAddress[0]; + pc = bootAddress[1]; + + /* Do a jump by loading the PC and SP into the CPU registers */ + BOOT_jump(sp, pc); +} int main(int argc, char * argv[]) { uint8_t hidmsg[64]; uint32_t t1 = 0; + uint32_t boot = 1; set_logging_mask( /*0*/ - // TAG_GEN| + TAG_GEN| // TAG_MC | // TAG_GA | // TAG_WALLET | @@ -63,11 +107,28 @@ int main(int argc, char * argv[]) device_init(); printf1(TAG_GEN,"init device\n"); + t1 = millis(); + while(device_is_button_pressed()) + { + if ((millis() - t1) > 2000) + { + boot = 0; + break; + } + } + + if (boot && is_authorized_to_boot()) + { + BOOT_boot(); + } + else + { + printf1(TAG_RED,"Not authorized to boot\r\n"); + } + printf1(TAG_GEN,"init ctaphid\n"); ctaphid_init(); - printf1(TAG_GEN,"init ctap\n"); - ctap_init(); memset(hidmsg,0,sizeof(hidmsg)); @@ -76,10 +137,9 @@ int main(int argc, char * argv[]) while(1) { - if (millis() - t1 > 100) + if (millis() - t1 > 8) { - /*printf("heartbeat %ld\n", beat++);*/ - heartbeat(); + bootloader_heartbeat(); t1 = millis(); } @@ -94,6 +154,11 @@ int main(int argc, char * argv[]) { } ctaphid_check_timeouts(); + + if (REBOOT_FLAG) + { + device_reboot(); + } } // Should never get here @@ -101,5 +166,3 @@ int main(int argc, char * argv[]) printf1(TAG_GREEN, "done\n"); return 0; } - -#endif diff --git a/targets/stm32l442/bootloader_stm32l4xx.ld b/targets/stm32l442/bootloader_stm32l4xx.ld new file mode 100644 index 0000000..59a0907 --- /dev/null +++ b/targets/stm32l442/bootloader_stm32l4xx.ld @@ -0,0 +1,201 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32L432KCUx Device with +** 256KByte FLASH, 64KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright Ac6. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Ac6 permit registered System Workbench for MCU users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x2000c000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 32K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K +SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(8); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(8); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(8); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(8); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(8); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(8); + } >FLASH + + .ARM.extab : + { + . = ALIGN(8); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(8); + } >FLASH + .ARM : { + . = ALIGN(8); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(8); + } >FLASH + + .preinit_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + } >FLASH + + .init_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + } >FLASH + .fini_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(8); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(8); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(8); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + _sisram2 = LOADADDR(.sram2); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .sram2 : + { + . = ALIGN(8); + _ssram2 = .; /* create a global symbol at sram2 start */ + *(.sram2) + *(.sram2*) + + . = ALIGN(8); + _esram2 = .; /* create a global symbol at sram2 end */ + } >SRAM2 AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/targets/stm32l442/lib/usbd/usbd_hid.c b/targets/stm32l442/lib/usbd/usbd_hid.c index 0cc9512..905480d 100644 --- a/targets/stm32l442/lib/usbd/usbd_hid.c +++ b/targets/stm32l442/lib/usbd/usbd_hid.c @@ -76,6 +76,7 @@ #include "usbd_core.h" #include "fifo.h" +#include "log.h" extern int usbhid_rdy ; @@ -252,7 +253,7 @@ static void dump_pma() uint16_t val; uint32_t offset = (uint32_t)(USB)->BTABLE; - printf("btable: %02lx\r\n",offset); + printf1(TAG_GREEN,"btable: %02lx\r\n",offset); for (int i = 0; i < 2; i++) { @@ -261,8 +262,8 @@ static void dump_pma() uint16_t addr_rx = pma_ptr[i * 4 + 2]; uint16_t cnt_rx = pma_ptr[i * 4 + 3]; - printf("EP%d addr_tx == %02x, count_tx == %02x\r\n", i, addr_tx,cnt_tx ); - printf("EP%d addr_rx == %02x, count_rx == %02x\r\n", i, addr_rx,cnt_rx ); + printf1(TAG_GREEN,"EP%d addr_tx == %02x, count_tx == %02x\r\n", i, addr_tx,cnt_tx ); + printf1(TAG_GREEN,"EP%d addr_rx == %02x, count_rx == %02x\r\n", i, addr_rx,cnt_rx ); } uint16_t ep1_tx = pma_ptr[1 * 4 + 0]; @@ -270,9 +271,9 @@ static void dump_pma() for (int i = 0; i < 32; i++) { val = pma_ptr[ep1_tx + i]; - printf("%04x ",val); + printf1(TAG_GREEN,"%04x ",val); } - printf("\r\n"); + printf1(TAG_GREEN,"\r\n"); } /** diff --git a/targets/stm32l442/merge_hex.py b/targets/stm32l442/merge_hex.py new file mode 100644 index 0000000..5bf5522 --- /dev/null +++ b/targets/stm32l442/merge_hex.py @@ -0,0 +1,28 @@ +# Merges bootloader and application into 1 file for ST Solo +# +# Patches settings in flash so bootloader will boot application. + +from intelhex import IntelHex +import sys + +if len(sys.argv) < 3: + print('usage: %s [...] ') + sys.exit(1) + +def flash_addr(num): + return 0x08000000 + num * 2048 + +PAGES = 128 +APPLICATION_END_PAGE = PAGES - 19 +AUTH_WORD_ADDR = (flash_addr(APPLICATION_END_PAGE)-8) + +first = IntelHex(sys.argv[1]) +for i in range(2, len(sys.argv)-1): + first.merge(IntelHex( sys.argv[i] ), overlap = 'replace') + +first[AUTH_WORD_ADDR] = 4 +first[AUTH_WORD_ADDR+1] = 5 +first[AUTH_WORD_ADDR+2] = 6 +first[AUTH_WORD_ADDR+3] = 7 + +first.tofile(sys.argv[len(sys.argv)-1], format='hex') diff --git a/targets/stm32l442/requirements.txt b/targets/stm32l442/requirements.txt new file mode 100644 index 0000000..a7dde12 --- /dev/null +++ b/targets/stm32l442/requirements.txt @@ -0,0 +1 @@ +intelhex diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index f506427..a05b461 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -4,7 +4,7 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 1 +#define DEBUG_LEVEL 0 #define NON_BLOCK_PRINTING 0 diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index 30bd620..16decc5 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -88,6 +88,10 @@ void device_set_status(int status) __device_status = status; } +int device_is_button_pressed() +{ + return IS_BUTTON_PRESSED(); +} void delay(uint32_t ms) { @@ -95,7 +99,10 @@ void delay(uint32_t ms) while ((millis() - time) < ms) ; } +void device_reboot() +{ +} void device_init() { hw_init(); @@ -111,8 +118,10 @@ void device_init() printf1(TAG_GEN,"hello solo\r\n"); } +void usb_init(void); void usbhid_init() { + usb_init(); printf1(TAG_GEN,"hello solo\r\n"); } int usbhid_recv(uint8_t * msg) @@ -543,7 +552,7 @@ static void authorize_application() ptr = (uint32_t *)AUTH_WORD_ADDR; flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); } -static int is_authorized_to_boot() +int is_authorized_to_boot() { uint32_t * auth = (uint32_t *)AUTH_WORD_ADDR; return *auth == 0; @@ -558,7 +567,6 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) uint8_t * pubkey = (uint8_t*)"\x57\xe6\x80\x39\x56\x46\x2f\x0c\x95\xac\x72\x71\xf0\xbc\xe8\x2d\x67\xd0\x59\x29\x2e\x15\x22\x89\x6a\xbd\x3f\x7f\x27\xf3\xc0\xc6\xe2\xd7\x7d\x8a\x9f\xcc\x53\xc5\x91\xb2\x0c\x9c\x3b\x4e\xa4\x87\x31\x67\xb4\xa9\x4b\x0e\x8d\x06\x67\xd8\xc5\xef\x2c\x50\x4a\x55"; const struct uECC_Curve_t * curve = NULL; - /*printf("bootloader_bridge\n");*/ if (req->len > 255-9) { return CTAP1_ERR_INVALID_LENGTH; @@ -573,7 +581,6 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) switch(req->op){ case BootWrite: - /*printf("BootWrite 0x%08x\n", addr);*/ if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR) { return CTAP2_ERR_NOT_ALLOWED; @@ -592,13 +599,10 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) flash_write((uint32_t)ptr,payload, req->len + (req->len%4)); break; case BootDone: - // printf("BootDone\n"); ptr = (uint32_t *)APPLICATION_START_ADDR; crypto_sha256_init(); crypto_sha256_update(ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); crypto_sha256_final(hash); - // printf("hash: "); dump_hex(hash, 32); - // printf("sig: "); dump_hex(payload, 64); curve = uECC_secp256r1(); if (! uECC_verify(pubkey, @@ -613,11 +617,9 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) REBOOT_FLAG = 1; break; case BootCheck: - /*printf("BootCheck\n");*/ return 0; break; case BootErase: - /*printf("BootErase\n");*/ erase_application(); return 0; break; @@ -627,6 +629,26 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) return 0; } +void bootloader_heartbeat() +{ + static int state = 0; + static uint32_t val = 0x10; + int but = IS_BUTTON_PRESSED(); + if (state) + { + val--; + } + else + { + val++; + } + + if (val > 30 || val < 1) + { + state = !state; + } + led_rgb((val * 3)<<8 | (val*10) << 16); +} #endif diff --git a/targets/stm32l442/src/fifo.c b/targets/stm32l442/src/fifo.c index 645c28b..cb809b5 100644 --- a/targets/stm32l442/src/fifo.c +++ b/targets/stm32l442/src/fifo.c @@ -2,6 +2,7 @@ #include #include #include "fifo.h" +#include "log.h" FIFO_CREATE(debug,4096,1) @@ -16,7 +17,7 @@ void fifo_test() uint8_t data[10][100]; uint8_t verif[10][100]; - printf("init\r\n"); + printf1(TAG_GREEN,"init\r\n"); for (int i = 0; i < 10; i++) { memset(data[i],i,100); @@ -24,43 +25,43 @@ void fifo_test() for (int i = 0; i < 10; i++) { - printf("rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); + printf1(TAG_GREEN,"rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); ret = fifo_test_add(data[i]); - printf("%d\r\n",i); + printf1(TAG_GREEN,"%d\r\n",i); if (ret != 0) { - printf("fifo_test_add fail\r\n"); + printf1(TAG_GREEN,"fifo_test_add fail\r\n"); goto fail; } } for (int i = 0; i < 10; i++) { - printf("rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); + printf1(TAG_GREEN,"rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); ret = fifo_test_take(verif[i]); - printf("%d\r\n",i ); + printf1(TAG_GREEN,"%d\r\n",i ); if (ret != 0) { - printf("fifo_test_take fail\r\n"); + printf1(TAG_GREEN,"fifo_test_take fail\r\n"); goto fail; } if (memcmp(verif[i], data[i], 100) != 0) { - printf("fifo_test_take result fail\r\n"); - dump_hex(data[i],100); - dump_hex(verif[i],100); + printf1(TAG_GREEN,"fifo_test_take result fail\r\n"); + dump_hex1(TAG_GREEN,data[i],100); + dump_hex1(TAG_GREEN,verif[i],100); goto fail; } } for (int i = 0; i < 10; i++) { - printf("rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); + printf1(TAG_GREEN,"rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); ret = fifo_test_add(data[i]); if (ret != 0) { - printf("fifo_test_add 2 fail\r\n"); + printf1(TAG_GREEN,"fifo_test_add 2 fail\r\n"); goto fail; } } @@ -68,7 +69,7 @@ void fifo_test() ret = fifo_test_add(data[0]); if (ret == 0) { - printf("fifo_test_add should have failed\r\n"); + printf1(TAG_GREEN,"fifo_test_add should have failed\r\n"); goto fail; } @@ -76,17 +77,17 @@ void fifo_test() for (int i = 0; i < 10; i++) { - printf("rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); + printf1(TAG_GREEN,"rhead: %d, whead: %d\r\n", fifo_test_rhead(), fifo_test_whead()); ret = fifo_test_take(verif[i]); if (ret != 0) { - printf("fifo_test_take fail\r\n"); + printf1(TAG_GREEN,"fifo_test_take fail\r\n"); goto fail; } if (memcmp(verif[i], data[i], 100) != 0) { - printf("fifo_test_take result fail\r\n"); + printf1(TAG_GREEN,"fifo_test_take result fail\r\n"); goto fail; } } @@ -94,11 +95,11 @@ void fifo_test() ret = fifo_test_take(verif[0]); if (ret == 0) { - printf("fifo_test_take should have failed\r\n"); + printf1(TAG_GREEN,"fifo_test_take should have failed\r\n"); goto fail; } - printf("test pass!\r\n"); + printf1(TAG_GREEN,"test pass!\r\n"); return ; fail: while(1) diff --git a/targets/stm32l442/src/init.c b/targets/stm32l442/src/init.c index 904d67e..8cd2d1c 100644 --- a/targets/stm32l442/src/init.c +++ b/targets/stm32l442/src/init.c @@ -38,7 +38,6 @@ static void MX_USART1_UART_Init(void); static void MX_TIM2_Init(void); static void MX_TIM6_Init(void); static void MX_RNG_Init(void); -static void usb_init(); #define Error_Handler() _Error_Handler(__FILE__,__LINE__) void _Error_Handler(char *file, int line); @@ -91,7 +90,7 @@ void hw_init(void) __enable_irq(); NVIC_EnableIRQ(TIM6_IRQn); #ifndef TEST_SOLO_STM32 - usb_init(); + #endif } @@ -202,7 +201,7 @@ void SystemClock_Config(void) NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); } -static void usb_init() +void usb_init() { USBD_Init(&Solo_USBD_Device, &Solo_Desc, 0); USBD_RegisterClass(&Solo_USBD_Device, &USBD_HID); diff --git a/targets/stm32l442/stm32l432xx.ld b/targets/stm32l442/stm32l432xx.ld index 2c44fe9..cbefde8 100644 --- a/targets/stm32l442/stm32l432xx.ld +++ b/targets/stm32l442/stm32l432xx.ld @@ -41,7 +41,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 238K /* Leave out 18 Kb for data */ +/* First 32 KB is bootloader */ +FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 206K-8 /* Leave out 18 Kb at end for data */ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K } From 9ff5dc63738b101eb23dacd0088ed12bfe7eceda Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sun, 2 Dec 2018 20:30:28 -0500 Subject: [PATCH 03/23] bug fixes, now it boots application --- fido2/ctap.c | 2 +- fido2/main.c | 11 ++- targets/stm32l442/Makefile | 8 +- targets/stm32l442/bootloader/bootloader.h | 2 +- targets/stm32l442/bootloader/main.c | 68 +++++++------- targets/stm32l442/merge_hex.py | 8 +- targets/stm32l442/src/app.h | 2 +- targets/stm32l442/src/device.c | 4 +- targets/stm32l442/src/init.c | 104 +++++++++------------- targets/stm32l442/src/system_stm32l4xx.c | 6 -- targets/stm32l442/stm32l432xx.ld | 3 +- 11 files changed, 104 insertions(+), 114 deletions(-) diff --git a/fido2/ctap.c b/fido2/ctap.c index 43793e5..f1a4ccd 100644 --- a/fido2/ctap.c +++ b/fido2/ctap.c @@ -1463,7 +1463,7 @@ uint8_t ctap_request(uint8_t * pkt_raw, int length, CTAP_RESPONSE * resp) else { printf2(TAG_ERR, "unwanted GET_NEXT_ASSERTION. lastcmd == 0x%02x\n", getAssertionState.lastcmd); - dump_hex1(TAG_GREEN, &getAssertionState, sizeof(getAssertionState)); + dump_hex1(TAG_GREEN, (uint8_t*)&getAssertionState, sizeof(getAssertionState)); status = CTAP2_ERR_NOT_ALLOWED; } break; diff --git a/fido2/main.c b/fido2/main.c index d864845..2b304ea 100644 --- a/fido2/main.c +++ b/fido2/main.c @@ -61,11 +61,15 @@ int main(int argc, char * argv[]) device_init(); printf1(TAG_GEN,"init device\n"); - printf1(TAG_GEN,"init ctaphid\n"); - ctaphid_init(); + usbhid_init(); + printf1(TAG_GEN,"init usb\n"); + + + ctaphid_init(); + printf1(TAG_GEN,"init ctaphid\n"); - printf1(TAG_GEN,"init ctap\n"); ctap_init(); + printf1(TAG_GEN,"init ctap\n"); memset(hidmsg,0,sizeof(hidmsg)); @@ -76,7 +80,6 @@ int main(int argc, char * argv[]) { if (millis() - t1 > 100) { - /*printf1(TAG_GEN,"heartbeat %ld\n", beat++);*/ heartbeat(); t1 = millis(); } diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 940d00c..54dfb0a 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -42,7 +42,7 @@ CHIP=STM32L442xx DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"app.h\" # DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 -CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) +CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) -g LDFLAGS_LIB=$(HW) $(SEARCH) -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -u _printf_float -lnosys LDFLAGS=$(HW) $(LDFLAGS_LIB) -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref -ltinycbor @@ -68,7 +68,7 @@ all: $(TARGET).elf $(CP) -O ihex $^ $(TARGET).hex bootloader: - make -f bootloader.mk + $(MAKE) -f bootloader.mk clean: rm -f *.o src/*.o src/*.elf bootloader/*.o $(OBJ) @@ -78,7 +78,9 @@ flash: $(TARGET).hex STM32_Programmer_CLI -c port=SWD -halt -d $(TARGET).hex -rst flashall: - # STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect + #$(MAKE) -f bootloader.mk -j8 + python .\merge_hex.py .\solo.hex .\bootloader.hex all.hex + STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect STM32_Programmer_CLI -c port=SWD -halt -d all.hex -rst detach: diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index bfd78aa..2f4c41b 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -16,7 +16,7 @@ #define ENABLE_U2F_EXTENSIONS // #define ENABLE_U2F -#define APPLICATION_JUMP_ADDR (0x08000000 + 32 * 2048) +#define APPLICATION_JUMP_ADDR (0x08000000 + 32 * 1024) #define DISABLE_CTAPHID_PING #define DISABLE_CTAPHID_WINK diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 24b6af1..0040d07 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -37,46 +37,52 @@ uint8_t REBOOT_FLAG = 0; -#if defined ( __CC_ARM ) -__asm void BOOT_jump(uint32_t sp, uint32_t pc) + + +// void __attribute__((optimize("O0"))) BOOT_boot(void) +void BOOT_boot(void) { - /* Set new MSP, PSP based on SP (r0)*/ - msr msp, r0 - msr psp, r0 - - /* Jump to PC (r1)*/ - bx r1 -} -#else -void __attribute__((optimize("O0"))) BOOT_jump(uint32_t sp, uint32_t pc) -{ - (void) sp; - (void) pc; - /* Set new MSP, PSP based on SP (r0)*/ - __asm("msr msp, r0"); - __asm("msr psp, r0"); - - /* Jump to PC (r1)*/ - __asm("mov pc, r1"); -} -#endif + uint32_t sp; + typedef void (*pFunction)(void); + pFunction jump; -void __attribute__((optimize("O0"))) BOOT_boot(void) -{ - uint32_t pc, sp; + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set MSION bit */ + RCC->CR |= RCC_CR_MSION; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000U; + + /* Reset HSEON, CSSON , HSION, and PLLON bits */ + RCC->CR &= 0xEAF6FFFFU; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x00001000U; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Disable all interrupts */ + RCC->CIER = 0x00000000U; + uint32_t *bootAddress = (uint32_t *)(APPLICATION_JUMP_ADDR); + printf("stack addr: %02lx\r\n",bootAddress[0]); + printf("jmp addr: %02lx\r\n",bootAddress[1]); + /* Set new vector table */ - SCB->VTOR = (uint32_t)bootAddress; + SCB->VTOR = APPLICATION_JUMP_ADDR; /* Read new SP and PC from vector table */ sp = bootAddress[0]; - pc = bootAddress[1]; + jump = (pFunction)bootAddress[1]; /* Do a jump by loading the PC and SP into the CPU registers */ - BOOT_jump(sp, pc); + __set_MSP(sp); + jump(); + //jmp(); } int main(int argc, char * argv[]) @@ -126,9 +132,11 @@ int main(int argc, char * argv[]) printf1(TAG_RED,"Not authorized to boot\r\n"); } - printf1(TAG_GEN,"init ctaphid\n"); + usbhid_init(); + printf1(TAG_GEN,"init usb\n"); + ctaphid_init(); - + printf1(TAG_GEN,"init ctaphid\n"); memset(hidmsg,0,sizeof(hidmsg)); diff --git a/targets/stm32l442/merge_hex.py b/targets/stm32l442/merge_hex.py index 5bf5522..79efedc 100644 --- a/targets/stm32l442/merge_hex.py +++ b/targets/stm32l442/merge_hex.py @@ -20,9 +20,9 @@ first = IntelHex(sys.argv[1]) for i in range(2, len(sys.argv)-1): first.merge(IntelHex( sys.argv[i] ), overlap = 'replace') -first[AUTH_WORD_ADDR] = 4 -first[AUTH_WORD_ADDR+1] = 5 -first[AUTH_WORD_ADDR+2] = 6 -first[AUTH_WORD_ADDR+3] = 7 +first[AUTH_WORD_ADDR] = 0 +first[AUTH_WORD_ADDR+1] = 0 +first[AUTH_WORD_ADDR+2] = 0 +first[AUTH_WORD_ADDR+3] = 0 first.tofile(sys.argv[len(sys.argv)-1], format='hex') diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index a05b461..f506427 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -4,7 +4,7 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 0 +#define DEBUG_LEVEL 1 #define NON_BLOCK_PRINTING 0 diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index 16decc5..e76e90b 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -34,7 +34,7 @@ #define RK_END_PAGE (PAGES - 14 + RK_NUM_PAGES) -#define APPLICATION_START_PAGE (0) +#define APPLICATION_START_PAGE (16) #define APPLICATION_START_ADDR flash_addr(APPLICATION_START_PAGE) #define APPLICATION_END_PAGE ((PAGES - 19)) // 119 is NOT included in application @@ -122,8 +122,8 @@ void usb_init(void); void usbhid_init() { usb_init(); - printf1(TAG_GEN,"hello solo\r\n"); } + int usbhid_recv(uint8_t * msg) { if (fifo_hidmsg_size()) diff --git a/targets/stm32l442/src/init.c b/targets/stm32l442/src/init.c index 8cd2d1c..7cab7bc 100644 --- a/targets/stm32l442/src/init.c +++ b/targets/stm32l442/src/init.c @@ -21,6 +21,7 @@ #include "usbd_desc.h" #include "usbd_hid.h" #include "device.h" +#include APP_CONFIG /* USER CODE BEGIN Includes */ @@ -45,79 +46,54 @@ void _Error_Handler(char *file, int line); void hw_init(void) { - /* USER CODE BEGIN 1 */ +#ifdef IS_BOOTLOADER + SCB->VTOR = FLASH_BASE; +#else +#endif + LL_Init(); - /* USER CODE END 1 */ + SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN); - /* MCU Configuration----------------------------------------------------------*/ - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - LL_Init(); + SystemClock_Config(); // TODO bootloader should not change clk freq. - // enable power clock - SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_PWREN); + MX_GPIO_Init(); + MX_TIM2_Init(); // PWM for LEDs - // enable USB power - SET_BIT(PWR->CR2, PWR_CR2_USV); + MX_TIM6_Init(); // ~1 ms timer - // Enable USB Clock - SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); +#if DEBUG_LEVEL > 0 + MX_USART1_UART_Init();// debug uart +#endif + MX_RNG_Init(); - /* USER CODE BEGIN Init */ - - /* USER CODE END Init */ - - /* Configure the system clock */ - SystemClock_Config(); - - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ - - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_TIM2_Init(); - - MX_TIM6_Init(); - #ifndef TEST_SOLO_STM32 - MX_USART1_UART_Init(); - - MX_RNG_Init(); - #endif - - TIM6->SR = 0; - __enable_irq(); - NVIC_EnableIRQ(TIM6_IRQn); -#ifndef TEST_SOLO_STM32 - - #endif - + TIM6->SR = 0; + __enable_irq(); + NVIC_EnableIRQ(TIM6_IRQn); } + static void LL_Init(void) { + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); + NVIC_SetPriorityGrouping(4); - LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); - LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); - - NVIC_SetPriorityGrouping(4); - - /* System interrupt init*/ - /* MemoryManagement_IRQn interrupt configuration */ - NVIC_SetPriority(MemoryManagement_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); - /* BusFault_IRQn interrupt configuration */ - NVIC_SetPriority(BusFault_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); - /* UsageFault_IRQn interrupt configuration */ - NVIC_SetPriority(UsageFault_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); - /* SVCall_IRQn interrupt configuration */ - NVIC_SetPriority(SVCall_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); - /* DebugMonitor_IRQn interrupt configuration */ - NVIC_SetPriority(DebugMonitor_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); - /* PendSV_IRQn interrupt configuration */ - NVIC_SetPriority(PendSV_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); - /* SysTick_IRQn interrupt configuration */ - NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* System interrupt init*/ + /* MemoryManagement_IRQn interrupt configuration */ + NVIC_SetPriority(MemoryManagement_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* BusFault_IRQn interrupt configuration */ + NVIC_SetPriority(BusFault_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* UsageFault_IRQn interrupt configuration */ + NVIC_SetPriority(UsageFault_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* SVCall_IRQn interrupt configuration */ + NVIC_SetPriority(SVCall_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* DebugMonitor_IRQn interrupt configuration */ + NVIC_SetPriority(DebugMonitor_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* PendSV_IRQn interrupt configuration */ + NVIC_SetPriority(PendSV_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + /* SysTick_IRQn interrupt configuration */ + NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); } @@ -203,6 +179,12 @@ void SystemClock_Config(void) void usb_init() { + // enable USB power + SET_BIT(PWR->CR2, PWR_CR2_USV); + + // Enable USB Clock + SET_BIT(RCC->APB1ENR1, RCC_APB1ENR1_USBFSEN); + USBD_Init(&Solo_USBD_Device, &Solo_Desc, 0); USBD_RegisterClass(&Solo_USBD_Device, &USBD_HID); USBD_Start(&Solo_USBD_Device); diff --git a/targets/stm32l442/src/system_stm32l4xx.c b/targets/stm32l442/src/system_stm32l4xx.c index c76fe45..44f5432 100644 --- a/targets/stm32l442/src/system_stm32l4xx.c +++ b/targets/stm32l442/src/system_stm32l4xx.c @@ -219,12 +219,6 @@ void SystemInit(void) /* Disable all interrupts */ RCC->CIER = 0x00000000U; - /* Configure the Vector Table location add offset address ------------------*/ -#ifdef VECT_TAB_SRAM - SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ -#else - SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ -#endif } /** diff --git a/targets/stm32l442/stm32l432xx.ld b/targets/stm32l442/stm32l432xx.ld index cbefde8..be6d0ab 100644 --- a/targets/stm32l442/stm32l432xx.ld +++ b/targets/stm32l442/stm32l432xx.ld @@ -42,7 +42,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ MEMORY { /* First 32 KB is bootloader */ -FLASH (rx) : ORIGIN = 0x08010000, LENGTH = 206K-8 /* Leave out 18 Kb at end for data */ +/*FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 238K-8 [> Leave out 18 Kb at end for data <]*/ +FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 206K-8 /* Leave out 18 Kb at end for data */ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K } From 0c461bb5d83fc94e85a7b52d7a732bd7dc624b66 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sun, 2 Dec 2018 21:58:15 -0500 Subject: [PATCH 04/23] refactor makefiles, document how to build --- targets/stm32l442/Makefile | 97 +++++--------------------------- targets/stm32l442/README.md | 34 +++++++++++ targets/stm32l442/application.mk | 80 ++++++++++++++++++++++++++ targets/stm32l442/bootloader.mk | 16 +----- 4 files changed, 130 insertions(+), 97 deletions(-) create mode 100644 targets/stm32l442/README.md create mode 100644 targets/stm32l442/application.mk diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 54dfb0a..7cc9832 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -1,93 +1,24 @@ -CC=arm-none-eabi-gcc -CP=arm-none-eabi-objcopy -SZ=arm-none-eabi-size -AR=arm-none-eabi-ar -# ST related -SRC = src/main.c src/init.c src/redirect.c src/flash.c src/rng.c src/led.c src/device.c -SRC += src/fifo.c src/crypto.c src/attestation.c -SRC += src/startup_stm32l432xx.s src/system_stm32l4xx.c -SRC += $(wildcard lib/*.c) $(wildcard lib/usbd/*.c) +all: + $(MAKE) -f application.mk -j8 -# FIDO2 lib -SRC += ../../fido2/util.c ../../fido2/u2f.c ../../fido2/test_power.c -SRC += ../../fido2/stubs.c ../../fido2/log.c ../../fido2/ctaphid.c ../../fido2/ctap.c -SRC += ../../fido2/ctap_parse.c ../../fido2/main.c - -# Crypto libs -SRC += ../../crypto/sha256/sha256.c ../../crypto/micro-ecc/uECC.c ../../crypto/tiny-AES-c/aes.c - - -OBJ1=$(SRC:.c=.o) -OBJ=$(OBJ1:.s=.o) - -INC = -Isrc/ -Isrc/cmsis/ -Ilib/ -Ilib/usbd/ -I../../fido2/ -I../../fido2/extensions -INC += -I../../tinycbor/src -I../../crypto/sha256 -I../../crypto/micro-ecc -INC += -I../../crypto/tiny-AES-c - -SEARCH=-L../../tinycbor/lib - -LDSCRIPT=stm32l432xx.ld - -CFLAGS= $(INC) - -TARGET=solo -HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb - -# Nucleo board -#CHIP=STM32L432xx -# Solo -CHIP=STM32L442xx - -DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"app.h\" -# DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 - -CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) -g -LDFLAGS_LIB=$(HW) $(SEARCH) -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -u _printf_float -lnosys -LDFLAGS=$(HW) $(LDFLAGS_LIB) -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref -ltinycbor - - -.PRECIOUS: %.o - -all: $(TARGET).elf - $(SZ) $^ - -%.o: %.c - $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ - -../../crypto/micro-ecc/uECC.o: ../../crypto/micro-ecc/uECC.c - $(CC) $^ $(HW) -O3 $(CFLAGS) -o $@ - -%.o: %.s - $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ - -%.elf: $(OBJ) - $(CC) $^ $(HW) $(LDFLAGS) -o $@ - -%.hex: %.elf - $(CP) -O ihex $^ $(TARGET).hex - -bootloader: - $(MAKE) -f bootloader.mk +boot: + $(MAKE) -f bootloader.mk -j8 clean: - rm -f *.o src/*.o src/*.elf bootloader/*.o $(OBJ) + $(MAKE) -f application.mk clean + $(MAKE) -f bootloader.mk clean -flash: $(TARGET).hex - # STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect - STM32_Programmer_CLI -c port=SWD -halt -d $(TARGET).hex -rst - -flashall: - #$(MAKE) -f bootloader.mk -j8 - python .\merge_hex.py .\solo.hex .\bootloader.hex all.hex +flash: solo.hex bootloader.hex + python merge_hex.py solo.hex bootloader.hex all.hex STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect STM32_Programmer_CLI -c port=SWD -halt -d all.hex -rst -detach: - STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 +bootloader.hex: + echo "You need to build the bootloader first." + +solo.hex: + echo "You need to build the application first." cbor: - cd ../../tinycbor/ && make clean - cd ../../tinycbor/ && make CC="$(CC)" AR=$(AR) \ -LDFLAGS="$(LDFLAGS_LIB)" \ -CFLAGS="$(CFLAGS)" + $(MAKE) -f application.mk -j8 cbor diff --git a/targets/stm32l442/README.md b/targets/stm32l442/README.md new file mode 100644 index 0000000..3c48ddd --- /dev/null +++ b/targets/stm32l442/README.md @@ -0,0 +1,34 @@ +# STM32L4xx Solo + +This documents how to build the firmware for Solo for the STM32L4xx microcontroller. + +# Building + +First build the cbor library. + +```bash +make cbor +``` + +Now build the Solo bootloader. + +``` +make boot +``` + +Now build the Solo application. + +``` +make clean # remove object files from bootloader, keep bootloader.hex +make +``` + +Merge the two files together. This script also patches a spot in memory to +allow the bootloader to boot the application. This memory spot is later used for +signed firmware updates. + +``` +python merge_hex.py solo.hex bootloader.hex all.hex +``` + +You can now program Solo with `all.hex`. diff --git a/targets/stm32l442/application.mk b/targets/stm32l442/application.mk new file mode 100644 index 0000000..4ee26e3 --- /dev/null +++ b/targets/stm32l442/application.mk @@ -0,0 +1,80 @@ +CC=arm-none-eabi-gcc +CP=arm-none-eabi-objcopy +SZ=arm-none-eabi-size +AR=arm-none-eabi-ar + +# ST related +SRC = src/main.c src/init.c src/redirect.c src/flash.c src/rng.c src/led.c src/device.c +SRC += src/fifo.c src/crypto.c src/attestation.c +SRC += src/startup_stm32l432xx.s src/system_stm32l4xx.c +SRC += $(wildcard lib/*.c) $(wildcard lib/usbd/*.c) + +# FIDO2 lib +SRC += ../../fido2/util.c ../../fido2/u2f.c ../../fido2/test_power.c +SRC += ../../fido2/stubs.c ../../fido2/log.c ../../fido2/ctaphid.c ../../fido2/ctap.c +SRC += ../../fido2/ctap_parse.c ../../fido2/main.c + +# Crypto libs +SRC += ../../crypto/sha256/sha256.c ../../crypto/micro-ecc/uECC.c ../../crypto/tiny-AES-c/aes.c + + +OBJ1=$(SRC:.c=.o) +OBJ=$(OBJ1:.s=.o) + +INC = -Isrc/ -Isrc/cmsis/ -Ilib/ -Ilib/usbd/ -I../../fido2/ -I../../fido2/extensions +INC += -I../../tinycbor/src -I../../crypto/sha256 -I../../crypto/micro-ecc +INC += -I../../crypto/tiny-AES-c + +SEARCH=-L../../tinycbor/lib + +LDSCRIPT=stm32l432xx.ld + +CFLAGS= $(INC) + +TARGET=solo +HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb + +# Nucleo board +#CHIP=STM32L432xx +# Solo +CHIP=STM32L442xx + +DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"app.h\" +# DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 + +CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) -g +LDFLAGS_LIB=$(HW) $(SEARCH) -specs=nano.specs -specs=nosys.specs -Wl,--gc-sections -u _printf_float -lnosys +LDFLAGS=$(HW) $(LDFLAGS_LIB) -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref -ltinycbor + + +.PRECIOUS: %.o + +all: $(TARGET).elf + $(SZ) $^ + +%.o: %.c + $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ + +../../crypto/micro-ecc/uECC.o: ../../crypto/micro-ecc/uECC.c + $(CC) $^ $(HW) -O3 $(CFLAGS) -o $@ + +%.o: %.s + $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ + +%.elf: $(OBJ) + $(CC) $^ $(HW) $(LDFLAGS) -o $@ + +%.hex: %.elf + $(CP) -O ihex $^ $(TARGET).hex + +clean: + rm -f *.o src/*.o src/*.elf bootloader/*.o $(OBJ) + +detach: + STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 + +cbor: + cd ../../tinycbor/ && make clean + cd ../../tinycbor/ && make CC="$(CC)" AR=$(AR) \ +LDFLAGS="$(LDFLAGS_LIB)" \ +CFLAGS="$(CFLAGS)" diff --git a/targets/stm32l442/bootloader.mk b/targets/stm32l442/bootloader.mk index b7c2b8b..9aad2b1 100644 --- a/targets/stm32l442/bootloader.mk +++ b/targets/stm32l442/bootloader.mk @@ -16,10 +16,10 @@ SRC += ../../fido2/stubs.c ../../fido2/log.c ../../fido2/ctaphid.c ../../fido2 # Crypto libs SRC += ../../crypto/sha256/sha256.c ../../crypto/micro-ecc/uECC.c - OBJ1=$(SRC:.c=.o) OBJ=$(OBJ1:.s=.o) + INC = -Ibootloader/ -Isrc/ -Isrc/cmsis/ -Ilib/ -Ilib/usbd/ -I../../fido2/ -I../../fido2/extensions INC += -I../../tinycbor/src -I../../crypto/sha256 -I../../crypto/micro-ecc INC += -I../../crypto/tiny-AES-c @@ -49,6 +49,7 @@ LDFLAGS=$(HW) $(LDFLAGS_LIB) -T$(LDSCRIPT) -Wl,-Map=$(TARGET).map,--cref all: $(TARGET).elf $(SZ) $^ + %.o: %.c $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ @@ -66,16 +67,3 @@ all: $(TARGET).elf clean: rm -f *.o src/*.o bootloader/*.o src/*.elf $(OBJ) - -flash: $(TARGET).hex - STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect - STM32_Programmer_CLI -c port=SWD -halt -d $(TARGET).hex -rst - -detach: - STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 - -cbor: - cd ../../tinycbor/ && make clean - cd ../../tinycbor/ && make CC="$(CC)" AR=$(AR) \ -LDFLAGS="$(LDFLAGS_LIB)" \ -CFLAGS="$(CFLAGS)" From bfa2d2830d7345db1fbd2713e3e52a73b3247c02 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Sun, 2 Dec 2018 23:31:34 -0500 Subject: [PATCH 05/23] signed update working --- fido2/extensions/extensions.c | 2 +- fido2/log.c | 1 + fido2/log.h | 3 +- targets/stm32l442/Makefile | 9 +- targets/stm32l442/bootloader/main.c | 3 +- targets/stm32l442/src/device.c | 25 +++- targets/stm32l442/stm32l432xx.ld | 4 +- tools/firmware.json | 1 + tools/http2udb.py | 47 +------ tools/sign_firmware.py | 62 +++++++++ web/js/wallet.js | 27 ++-- web/self-signed-tls.sh | 202 ---------------------------- 12 files changed, 116 insertions(+), 270 deletions(-) create mode 100644 tools/firmware.json create mode 100644 tools/sign_firmware.py delete mode 100644 web/self-signed-tls.sh diff --git a/fido2/extensions/extensions.c b/fido2/extensions/extensions.c index 00accea..dd535be 100644 --- a/fido2/extensions/extensions.c +++ b/fido2/extensions/extensions.c @@ -100,7 +100,7 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) } else { - rcode = U2F_SW_WRONG_DATA; + rcode = U2F_SW_WRONG_DATA; } printf1(TAG_WALLET,"Ignoring U2F request\n"); goto end; diff --git a/fido2/log.c b/fido2/log.c index b2f0b6e..2db43b0 100644 --- a/fido2/log.c +++ b/fido2/log.c @@ -55,6 +55,7 @@ struct logtag tagtable[] = { {TAG_TIME,"TIME"}, {TAG_WALLET,"WALLET"}, {TAG_STOR,"STOR"}, + {TAG_BOOT,"BOOT"}, }; diff --git a/fido2/log.h b/fido2/log.h index 12a9a09..3b2af12 100644 --- a/fido2/log.h +++ b/fido2/log.h @@ -22,7 +22,7 @@ #ifndef _LOG_H #define _LOG_H -#include APP_CONFIG +#include APP_CONFIG #include #ifndef DEBUG_LEVEL @@ -55,6 +55,7 @@ typedef enum TAG_WALLET = (1 << 14), TAG_STOR = (1 << 15), TAG_DUMP2 = (1 << 16), + TAG_BOOT = (1 << 17), TAG_FILENO = (1<<31) } LOG_TAG; diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 7cc9832..00a24cf 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -1,9 +1,9 @@ all: - $(MAKE) -f application.mk -j8 + $(MAKE) -f application.mk -j8 solo.hex boot: - $(MAKE) -f bootloader.mk -j8 + $(MAKE) -f bootloader.mk -j8 bootloader.hex clean: $(MAKE) -f application.mk clean @@ -14,6 +14,11 @@ flash: solo.hex bootloader.hex STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect STM32_Programmer_CLI -c port=SWD -halt -d all.hex -rst +flashboot: solo.hex bootloader.hex + python merge_hex.py solo.hex bootloader.hex all.hex + STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect + STM32_Programmer_CLI -c port=SWD -halt -d bootloader.hex -rst + bootloader.hex: echo "You need to build the bootloader first." diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 0040d07..0d1d48a 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -105,6 +105,7 @@ int main(int argc, char * argv[]) // TAG_PARSE | // TAG_TIME| // TAG_DUMP| + TAG_BOOT| TAG_GREEN| TAG_RED| TAG_ERR @@ -134,7 +135,7 @@ int main(int argc, char * argv[]) usbhid_init(); printf1(TAG_GEN,"init usb\n"); - + ctaphid_init(); printf1(TAG_GEN,"init ctaphid\n"); diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index e76e90b..df0a73d 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -19,6 +19,7 @@ #include "ctap.h" #include "crypto.h" #include "uECC.h" +#include "u2f.h" #define PAGE_SIZE 2048 @@ -520,7 +521,8 @@ typedef enum BootDone = 0x41, BootCheck = 0x42, BootErase = 0x43, -} WalletOperation; + BootVersion = 0x44, +} BootOperation; typedef struct { @@ -564,7 +566,9 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) BootloaderReq * req = (BootloaderReq * )keyh; uint8_t payload[256]; uint8_t hash[32]; - uint8_t * pubkey = (uint8_t*)"\x57\xe6\x80\x39\x56\x46\x2f\x0c\x95\xac\x72\x71\xf0\xbc\xe8\x2d\x67\xd0\x59\x29\x2e\x15\x22\x89\x6a\xbd\x3f\x7f\x27\xf3\xc0\xc6\xe2\xd7\x7d\x8a\x9f\xcc\x53\xc5\x91\xb2\x0c\x9c\x3b\x4e\xa4\x87\x31\x67\xb4\xa9\x4b\x0e\x8d\x06\x67\xd8\xc5\xef\x2c\x50\x4a\x55"; + uint8_t version = 1; + + uint8_t * pubkey = (uint8_t*)"\x85\xaa\xce\xda\xd4\xb4\xd8\x0d\xf7\x0e\xe8\x91\x6d\x69\x8e\x00\x7a\x27\x40\x76\x93\x7a\x1d\x63\xb1\xcf\xe8\x22\xdd\x9f\xbc\x43\x3e\x34\x0a\x05\x9d\x8a\x9d\x72\xdc\xc2\x4b\x56\x9c\x64\x3d\xc1\x0d\x14\x64\x69\x52\x31\xd7\x54\xa3\xb6\x69\xa7\x6f\x6b\x81\x8d"; const struct uECC_Curve_t * curve = NULL; if (req->len > 255-9) @@ -575,18 +579,20 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) memset(payload, 0xff, sizeof(payload)); memmove(payload, req->payload, req->len); - uint32_t addr = (*((uint32_t*)req->addr)) & 0xffffff; + uint32_t addr = ((*((uint32_t*)req->addr)) & 0xffffff) | 0x8000000; uint32_t * ptr = (uint32_t *)addr; switch(req->op){ case BootWrite: + printf1(TAG_BOOT, "BootWrite: %08lx\r\n",(uint32_t)ptr); if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR) { + printf1(TAG_BOOT,"Bound exceeded [%08lx, %08lx]\r\n",APPLICATION_START_ADDR,APPLICATION_END_ADDR); return CTAP2_ERR_NOT_ALLOWED; } - if (!has_erased) + if (!has_erased || is_authorized_to_boot()) { erase_application(); has_erased = 1; @@ -596,12 +602,15 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) printf2(TAG_ERR, "Error, boot check bypassed\n"); exit(1); } + flash_write((uint32_t)ptr,payload, req->len + (req->len%4)); break; case BootDone: + printf1(TAG_BOOT, "BootDone: "); + dump_hex1(TAG_BOOT, payload, 32); ptr = (uint32_t *)APPLICATION_START_ADDR; crypto_sha256_init(); - crypto_sha256_update(ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); + crypto_sha256_update((uint8_t*)ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); crypto_sha256_final(hash); curve = uECC_secp256r1(); @@ -620,9 +629,15 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) return 0; break; case BootErase: + printf1(TAG_BOOT, "BootErase.\r\n"); erase_application(); return 0; break; + case BootVersion: + printf1(TAG_BOOT, "BootVersion.\r\n"); + u2f_response_writeback(&version,1); + return 0; + break; default: return CTAP1_ERR_INVALID_COMMAND; } diff --git a/targets/stm32l442/stm32l432xx.ld b/targets/stm32l442/stm32l432xx.ld index be6d0ab..8e69379 100644 --- a/targets/stm32l442/stm32l432xx.ld +++ b/targets/stm32l442/stm32l432xx.ld @@ -42,8 +42,8 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ MEMORY { /* First 32 KB is bootloader */ -/*FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 238K-8 [> Leave out 18 Kb at end for data <]*/ -FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 206K-8 /* Leave out 18 Kb at end for data */ +/*FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 238K-8 [> Leave out 38 Kb at end for data <]*/ +FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 186K-8 /* Leave out 38 Kb at end for data */ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K } diff --git a/tools/firmware.json b/tools/firmware.json new file mode 100644 index 0000000..9fd5826 --- /dev/null +++ b/tools/firmware.json @@ -0,0 +1 @@ +{"firmware": "OjAyMDAwMDA0MDgwMEYyDQo6MTA4MDAwMDAwMEMwMDAyMDhEOUQwMDA4REQ5RDAwMDhERDlEMDAwODVBDQo6MTA4MDEwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDgwMDAwMDAwMERBDQo6MTA4MDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBERDlEMDAwOENFDQo6MTA4MDMwMDBERDlEMDAwODAwMDAwMDAwREQ5RDAwMDhERDlEMDAwOEJBDQo6MTA4MDQwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwODI4DQo6MTA4MDUwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwODE4DQo6MTA4MDYwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwODA4DQo6MTA4MDcwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwOEY4DQo6MTA4MDgwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwOEU4DQo6MTA4MDkwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwOEQ4DQo6MTA4MEEwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwOEM4DQo6MTA4MEIwMDBERDlEMDAwODAwMDAwMDAwMDAwMDAwMDBERDlEMDAwOEJDDQo6MTA4MEMwMDBERDlEMDAwODAwMDAwMDAwMDAwMDAwMDBERDlEMDAwOEFDDQo6MTA4MEQwMDAwMDAwMDAwMEREOUQwMDA4REQ5RDAwMDgwMDAwMDAwMDlDDQo6MTA4MEUwMDBERDlEMDAwOEREOUQwMDA4MDAwMDAwMDAwMDAwMDAwMDhDDQo6MTA4MEYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwDQo6MTA4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBERDlEMDAwOEVEDQo6MTA4MTEwMDAwMDAwMDAwMDAwMDAwMDAwRDE5MjAwMDhERDlEMDAwODcyDQo6MTA4MTIwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwODQ3DQo6MTA4MTMwMDBERDlEMDAwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEJEDQo6MTA4MTQwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhBRDkyMDAwODYyDQo6MTA4MTUwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDhERDlEMDAwODE3DQo6MTA4MTYwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDgwMDAwMDAwMDg5DQo6MTA4MTcwMDBERDlEMDAwOEREOUQwMDA4MDAwMDAwMDAwMDAwMDAwMEZCDQo6MTA4MTgwMDBERDlEMDAwOEREOUQwMDA4REQ5RDAwMDgwMDAwMDAwMDY5DQo6MTA4MTkwMDAxMEI1MDU0QzIzNzgzM0I5MDQ0QjEzQjEwNDQ4QUZGMzQxDQo6MTA4MUEwMDAwMDgwMDEyMzIzNzAxMEJEMjgwMzAwMjAwMDAwMDAwMDgwDQo6MTA4MUIwMDA2ODlBMDEwODA4QjUwMzRCMUJCMTAzNDkwMzQ4QUZGM0E0DQo6MTA4MUMwMDAwMDgwMDhCRDAwMDAwMDAwMkMwMzAwMjA2ODlBMDEwODEwDQo6MTA4MUQwMDA4MUYwMDA0MTAyRTAwMEJGODNGMDAwNDMzMEI1NEZFQTc4DQo6MTA4MUUwMDA0MTA0NEZFQTQzMDU5NEVBMDUwRjA4QkY5MEVBMDIwRkU1DQo6MTA4MUYwMDAxRkJGNTRFQTAwMEM1NUVBMDIwQzdGRUE2NDVDN0ZFQTc4DQo6MTA4MjAwMDA2NTVDMDBGMEUyODA0RkVBNTQ1NEQ0RUI1NTU1QjhCRjlBDQo6MTA4MjEwMDA2RDQyMENERDJDNDQ4MEVBMDIwMjgxRUEwMzAzODJFQTBCDQo6MTA4MjIwMDAwMDAwODNFQTAxMDE4MEVBMDIwMjgxRUEwMzAzMzYyRDlEDQo6MTA4MjMwMDA4OEJGMzBCRDExRjAwMDRGNEZFQTAxMzE0RkY0ODAxQzcwDQo6MTA4MjQwMDA0Q0VBMTEzMTAyRDA0MDQyNjFFQjQxMDExM0YwMDA0RjgyDQo6MTA4MjUwMDA0RkVBMDMzMzRDRUExMzMzMDJEMDUyNDI2M0VCNDMwMzM5DQo6MTA4MjYwMDA5NEVBMDUwRjAwRjBBNzgwQTRGMTAxMDRENUYxMjAwRUQ3DQo6MTA4MjcwMDAwRERCMDJGQTBFRkMyMkZBMDVGMjgwMTg0MUYxMDAwMTMyDQo6MTA4MjgwMDAwM0ZBMEVGMjgwMTg0M0ZBMDVGMzU5NDEwRUUwQTVGMTA2DQo6MTA4MjkwMDAyMDA1MEVGMTIwMEUwMTJBMDNGQTBFRkMyOEJGNENGMDM3DQo6MTA4MkEwMDAwMjBDNDNGQTA1RjNDMDE4NTFFQkUzNzEwMUYwMDA0NUVEDQo6MTA4MkIwMDAwN0Q1NEZGMDAwMEVEQ0YxMDAwQzdFRUIwMDAwNkVFQkZBDQo6MTA4MkMwMDAwMTAxQjFGNTgwMUYxQkQzQjFGNTAwMUYwQ0QzNDkwODg0DQo6MTA4MkQwMDA1RkVBMzAwMDRGRUEzQzBDMDRGMTAxMDQ0RkVBNDQ1MkRCDQo6MTA4MkUwMDAxMkY1ODAwRjgwRjA5QTgwQkNGMTAwNEYwOEJGNUZFQTYyDQo6MTA4MkYwMDA1MDBDNTBGMTAwMDA0MUVCMDQ1MTQxRUEwNTAxMzBCRDQyDQo6MTA4MzAwMDA1RkVBNEMwQzQwNDE0MUVCMDEwMTExRjQ4MDFGQTRGMUU0DQo6MTA4MzEwMDAwMTA0RTlEMTkxRjAwMDBGMDRCRjAxNDYwMDIwQjFGQTM5DQo6MTA4MzIwMDA4MUYzMDhCRjIwMzNBM0YxMEIwM0IzRjEyMDAyMENEQTcxDQo6MTA4MzMwMDAwQzMyMDhERDAyRjExNDBDQzJGMTBDMDIwMUZBMENGMDRGDQo6MTA4MzQwMDAyMUZBMDJGMTBDRTAwMkYxMTQwMkQ4QkZDMkYxMjAwQ0I0DQo6MTA4MzUwMDAwMUZBMDJGMTIwRkEwQ0ZDRENCRjQxRUEwQzAxOTA0MDZBDQo6MTA4MzYwMDBFNDFBQTJCRjAxRUIwNDUxMjk0MzMwQkQ2RkVBMDQwNEIzDQo6MTA4MzcwMDAxRjNDMUNEQTBDMzQwRURDMDRGMTE0MDRDNEYxMjAwMjlFDQo6MTA4MzgwMDAyMEZBMDRGMDAxRkEwMkYzNDBFQTAzMDAyMUZBMDRGM0IwDQo6MTA4MzkwMDA0NUVBMDMwMTMwQkRDNEYxMEMwNEM0RjEyMDAyMjBGQTA3DQo6MTA4M0EwMDAwMkYwMDFGQTA0RjM0MEVBMDMwMDI5NDYzMEJEMjFGQTQ1DQo6MTA4M0IwMDAwNEYwMjk0NjMwQkQ5NEYwMDAwRjgzRjQ4MDEzMDZCRjBCDQo6MTA4M0MwMDA4MUY0ODAxMTAxMzQwMTNENEVFNzdGRUE2NDVDMThCRkZGDQo6MTA4M0QwMDA3RkVBNjU1QzI5RDA5NEVBMDUwRjA4QkY5MEVBMDIwRjk2DQo6MTA4M0UwMDAwNUQwNTRFQTAwMEMwNEJGMTk0NjEwNDYzMEJEOTFFQThFDQo6MTA4M0YwMDAwMzBGMUVCRjAwMjEwMDIwMzBCRDVGRUE1NDVDMDVEMTkxDQo6MTA4NDAwMDA0MDAwNDk0MTI4QkY0MUYwMDA0MTMwQkQxNEY1ODAwNENGDQo6MTA4NDEwMDAzQ0JGMDFGNTgwMTEzMEJEMDFGMDAwNDU0NUYwRkU0MTQzDQo6MTA4NDIwMDA0MUY0NzAwMTRGRjAwMDAwMzBCRDdGRUE2NDVDMUFCRjc4DQo6MTA4NDMwMDAxOTQ2MTA0NjdGRUE2NTVDMUNCRjBCNDYwMjQ2NTBFQUFGDQo6MTA4NDQwMDAwMTM0MDZCRjUyRUEwMzM1OTFFQTAzMEY0MUY0MDAyMURCDQo6MTA4NDUwMDAzMEJEMDBCRjkwRjAwMDBGMDRCRjAwMjE3MDQ3MzBCNTYxDQo6MTA4NDYwMDA0RkY0ODA2NDA0RjEzMjA0NEZGMDAwMDU0RkYwMDAwMTM2DQo6MTA4NDcwMDA1MEU3MDBCRjkwRjAwMDBGMDRCRjAwMjE3MDQ3MzBCNUY3DQo6MTA4NDgwMDA0RkY0ODA2NDA0RjEzMjA0MTBGMDAwNDU0OEJGNDA0MkNDDQo6MTA4NDkwMDA0RkYwMDAwMTNFRTcwMEJGNDIwMDRGRUFFMjAxNEZFQTIxDQo6MTA4NEEwMDAzMTAxNEZFQTAyNzAxRkJGMTJGMDdGNDM5M0YwN0Y0RkZDDQo6MTA4NEIwMDA4MUYwNjA1MTcwNDczMkYwN0Y0MjA4QkY3MDQ3OTNGMEZGDQo6MTA4NEMwMDA3RjRGMDRCRjQxRjQwMDIxNzA0NzMwQjU0RkY0NjA3NDEyDQo6MTA4NEQwMDAwMUYwMDA0NTIxRjAwMDQxMUNFNzAwQkY1MEVBMDEwMjE1DQo6MTA4NEUwMDAwOEJGNzA0NzMwQjU0RkYwMDAwNTBBRTA1MEVBMDEwMkJFDQo6MTA4NEYwMDAwOEJGNzA0NzMwQjUxMUYwMDA0NTAyRDU0MDQyNjFFQjJFDQo6MTA4NTAwMDA0MTAxNEZGNDgwNjQwNEYxMzIwNDVGRUE5MTVDM0ZGNDZFDQo6MTA4NTEwMDBEOEFFNEZGMDAzMDI1RkVBREMwQzE4QkYwMzMyNUZFQTBCDQo6MTA4NTIwMDBEQzBDMThCRjAzMzIwMkVCREMwMkMyRjEyMDAzMDBGQUJDDQo6MTA4NTMwMDAwM0ZDMjBGQTAyRjAwMUZBMDNGRTQwRUEwRTAwMjFGQUUxDQo6MTA4NTQwMDAwMkYxMTQ0NEJERTYwMEJGMTBGODAxMkIxMUY4MDEzQjA1DQo6MTA4NTUwMDAwMTJBMjhCRjlBNDJGN0QwRDAxQTcwNDcwMzQ2MTNGODcxDQo6MTA4NTYwMDAwMTJCMDAyQUZCRDExODFBMDEzODcwNDcwMDAwMDAwMEM3DQo6MTA4NTcwMDAwMUYwRkYwMTEwMkEyQkRCMTBGMDA3MEYwOEQwMTBGOEQ0DQo6MTA4NTgwMDAwMTNCMDEzQThCNDIyREQwMTBGMDA3MEY0MkIzRjZEMUQ4DQo6MTA4NTkwMDBGMEI0NDFFQTAxMjE0MUVBMDE0MTIyRjAwNzA0N0ZGMEYxDQo6MTA4NUEwMDAwMDA3MDAyM0YwRTgwMjU2MDgzQzg1RUEwMTA1ODZFQTQ4DQo6MTA4NUIwMDAwMTA2ODVGQTQ3RjVBM0ZBODdGNTg2RkE0N0Y2QTVGQTg0DQo6MTA4NUMwMDA4N0Y2OEVCOUVFRDFGMEJDMDFGMEZGMDEwMkYwMDcwMjkwDQo6MTA4NUQwMDAzMkIxMTBGODAxM0IwMTNBODNFQTAxMDMxM0IxRjhEMTNCDQo6MTA4NUUwMDAwMDIwNzA0NzAxMzg3MDQ3MDAyRDA2QkYzNTQ2MDMzODFDDQo6MTA4NUYwMDAwNzM4MTVGMDAxMEYwN0QxMDEzMDE1RjQ4MDdGMDJCRjU1DQo6MTA4NjAwMDAwMTMwMTVGNEMwM0YwMTMwRjBCQzAxMzg3MDQ3MDBCRkE1DQo6MTA4NjEwMDA3MEI1NEZGMEZGMEM0Q0Y0RTA2QzFDRUExMTU0MURCRjE4DQo6MTA4NjIwMDAxQ0VBMTM1NTk0RUEwQzBGOTVFQTBDMEYwMEYwREVGOEUzDQo6MTA4NjMwMDAyQzQ0ODFFQTAzMDYyMUVBNEM1MTIzRUE0QzUzNTBFQUM4DQo6MTA4NjQwMDAwMTM1MThCRjUyRUEwMzM1NDFGNDgwMTE0M0Y0ODAxMzE5DQo6MTA4NjUwMDAzOEQwQTBGQjAyQ0U0RkYwMDAwNUUxRkIwMkU1MDZGMEFBDQo6MTA4NjYwMDAwMDQyRTBGQjAzRTU0RkYwMDAwNkUxRkIwMzU2OUNGMEZGDQo6MTA4NjcwMDAwMDBGMThCRjRFRjAwMTBFQTRGMUZGMDRCNkY1MDA3RjA1DQo6MTA4NjgwMDA2NEY1NDA3NDA0RDI1RkVBNEUwRTZENDE0NkVCMDYwNjc3DQo6MTA4NjkwMDA0MkVBQzYyMTQxRUE1NTUxNEZFQUM1MjA0MEVBNUU1MDAwDQo6MTA4NkEwMDA0RkVBQ0UyRUI0RjFGRDBDODhCRkJDRjVFMDZGMUVEOEFBDQo6MTA4NkIwMDBCRUYxMDA0RjA4QkY1RkVBNTAwRTUwRjEwMDAwNDFFQkUxDQo6MTA4NkMwMDAwNDUxNzBCRDA2RjAwMDQ2NDZFQTAxMDE0MEVBMDIwMDhFDQo6MTA4NkQwMDA4MUVBMDMwMUI0RUI1QzA0QzJCRkQ0RUIwQzA1NDFFQUIwDQo6MTA4NkUwMDAwNDUxNzBCRDQxRjQ4MDExNEZGMDAwMEUwMTNDMDBGM0M1DQo6MTA4NkYwMDBBQjgwMTRGMTM2MEZERUJGMDAyMDAxRjAwMDQxNzBCREU5DQo6MTA4NzAwMDBDNEYxMDAwNDIwM0MzNURBMEMzNDFCREMwNEYxMTQwNDAxDQo6MTA4NzEwMDBDNEYxMjAwNTAwRkEwNUYzMjBGQTA0RjAwMUZBMDVGMjhEDQo6MTA4NzIwMDA0MEVBMDIwMDAxRjAwMDQyMjFGMDAwNDExMEVCRDM3MDVBDQo6MTA4NzMwMDAyMUZBMDRGNjQyRUIwNjAxNUVFQTQzMEUwOEJGMjBFQTg2DQo6MTA4NzQwMDBEMzcwNzBCREM0RjEwQzA0QzRGMTIwMDUwMEZBMDRGMzI5DQo6MTA4NzUwMDAyMEZBMDVGMDAxRkEwNEYyNDBFQTAyMDAwMUYwMDA0MUJCDQo6MTA4NzYwMDAxMEVCRDM3MDQxRjEwMDAxNUVFQTQzMEUwOEJGMjBFQTJFDQo6MTA4NzcwMDBEMzcwNzBCREM0RjEyMDA1MDBGQTA1RjI0RUVBMDIwRTc2DQo6MTA4NzgwMDAyMEZBMDRGMzAxRkEwNUYyNDNFQTAyMDMyMUZBMDRGMEE1DQo6MTA4NzkwMDAwMUYwMDA0MTIxRkEwNEYyMjBFQTAyMDAwMEVCRDM3MDVDDQo6MTA4N0EwMDA1RUVBNDMwRTA4QkYyMEVBRDM3MDcwQkQ5NEYwMDAwRjVDDQo6MTA4N0IwMDAwRkQxMDFGMDAwNDY0MDAwNDFFQjAxMDExMUY0ODAxRjkwDQo6MTA4N0MwMDAwOEJGMDEzQ0Y3RDA0MUVBMDYwMTk1RjAwMDBGMThCRjQxDQo6MTA4N0QwMDA3MDQ3MDNGMDAwNDY1MjAwNDNFQjAzMDMxM0Y0ODAxRjdEDQo6MTA4N0UwMDAwOEJGMDEzREY3RDA0M0VBMDYwMzcwNDc5NEVBMEMwRjM3DQo6MTA4N0YwMDAwQ0VBMTM1NTE4QkY5NUVBMEMwRjBDRDA1MEVBNDEwNjREDQo6MTA4ODAwMDAxOEJGNTJFQTQzMDZEMUQxODFFQTAzMDEwMUYwMDA0MUM5DQo6MTA4ODEwMDA0RkYwMDAwMDcwQkQ1MEVBNDEwNjA2QkYxMDQ2MTk0NkYxDQo6MTA4ODIwMDA1MkVBNDMwNjE5RDA5NEVBMEMwRjAyRDE1MEVBMDEzNkZEDQo6MTA4ODMwMDAxM0QxOTVFQTBDMEYwNUQxNTJFQTAzMzYxQ0JGMTA0NjNFDQo6MTA4ODQwMDAxOTQ2MEFEMTgxRUEwMzAxMDFGMDAwNDE0MUYwRkU0MUREDQo6MTA4ODUwMDA0MUY0NzAwMTRGRjAwMDAwNzBCRDQxRjBGRTQxNDFGNDYxDQo6MTA4ODYwMDA3ODAxNzBCRDcwQjU0RkYwRkYwQzRDRjRFMDZDMUNFQTYxDQo6MTA4ODcwMDAxMTU0MURCRjFDRUExMzU1OTRFQTBDMEY5NUVBMEMwRjE2DQo6MTA4ODgwMDAwMEYwQTdGOEE0RUIwNTA0ODFFQTAzMEU1MkVBMDMzNUQxDQo6MTA4ODkwMDA0RkVBMDEzMTAwRjA4ODgwNEZFQTAzMzM0RkYwODA1NUYyDQo6MTA4OEEwMDA0NUVBMTMxMzQzRUExMjYzNEZFQTAyMjI0NUVBMTExNTFGDQo6MTA4OEIwMDA0NUVBMTA2NTRGRUEwMDI2MEVGMDAwNDE5RDQyMDhCRkQwDQo6MTA4OEMwMDA5NjQyNDRGMUZEMDQwNEY1NDA3NDAyRDI1QjA4NEZFQTdEDQo6MTA4OEQwMDAzMjAyQjYxQTY1RUIwMzA1NUIwODRGRUEzMjAyNEZGNDI5DQo6MTA4OEUwMDA4MDEwNEZGNDAwMkNCNkVCMDIwRTc1RUIwMzBFMjJCRjg2DQo6MTA4OEYwMDBCNjFBNzU0NjQwRUEwQzAwNUIwODRGRUEzMjAyQjZFQjQ2DQo6MTA4OTAwMDAwMjBFNzVFQjAzMEUyMkJGQjYxQTc1NDY0MEVBNUMwMEY0DQo6MTA4OTEwMDA1QjA4NEZFQTMyMDJCNkVCMDIwRTc1RUIwMzBFMjJCRjg0DQo6MTA4OTIwMDBCNjFBNzU0NjQwRUE5QzAwNUIwODRGRUEzMjAyQjZFQjg1DQo6MTA4OTMwMDAwMjBFNzVFQjAzMEUyMkJGQjYxQTc1NDY0MEVBREMwMDQ0DQo6MTA4OTQwMDA1NUVBMDYwRTE4RDA0RkVBMDUxNTQ1RUExNjc1NEZFQUE2DQo6MTA4OTUwMDAwNjE2NEZFQUMzMDM0M0VBNTI3MzRGRUFDMjAyNUZFQUM0DQo6MTA4OTYwMDAxQzFDQzBEMTExRjQ4MDFGMEJEMTQxRUEwMDAxNEZGMDUzDQo6MTA4OTcwMDAwMDAwNEZGMDAwNENCNkU3MTFGNDgwMUYwNEJGMDE0MzI0DQo6MTA4OTgwMDAwMDIwQjRGMUZEMEM4OEJGQkNGNUUwNkYzRkY2QUZBRTQwDQo6MTA4OTkwMDBCNUVCMDMwQzA0QkZCNkVCMDIwQzVGRUE1MDBDNTBGMUQwDQo6MTA4OUEwMDAwMDAwNDFFQjA0NTE3MEJEMEVGMDAwNEU0RUVBMTEzMTUzDQo6MTA4OUIwMDAxNEVCNUMwNEMyQkZENEVCMEMwNTQxRUEwNDUxNzBCRDVBDQo6MTA4OUMwMDA0MUY0ODAxMTRGRjAwMDBFMDEzQzkwRTY0NUVBMDYwRTlFDQo6MTA4OUQwMDA4REU2MENFQTEzNTU5NEVBMEMwRjA4QkY5NUVBMEMwRkNDDQo6MTA4OUUwMDAzRkY0M0JBRjk0RUEwQzBGMEFEMTUwRUEwMTM0N0ZGNDE0DQo6MTA4OUYwMDAzNEFGOTVFQTBDMEY3RkY0MjVBRjEwNDYxOTQ2MkNFN0VCDQo6MTA4QTAwMDA5NUVBMEMwRjA2RDE1MkVBMDMzNTNGRjRGREFFMTA0NjREDQo6MTA4QTEwMDAxOTQ2MjJFNzUwRUE0MTA2MThCRjUyRUE0MzA2N0ZGNDlFDQo6MTA4QTIwMDBDNUFFNTBFQTQxMDQ3RkY0MERBRjUyRUE0MzA1N0ZGNDJFDQo6MTA4QTMwMDBFQkFFMTJFNzRGRjBGRjNDMDZFMDAwQkY0RkYwMDEwQzM5DQo6MTA4QTQwMDAwMkUwMDBCRjRGRjAwMTBDNERGODA0Q0Q0RkVBNDEwQzlEDQo6MTA4QTUwMDA3RkVBNkM1QzRGRUE0MzBDMThCRjdGRUE2QzVDMUJEMDZBDQo6MTA4QTYwMDAwMUIwNTBFQTQxMEMwQ0JGNTJFQTQzMEM5MUVBMDMwRkVCDQo6MTA4QTcwMDAwMkJGOTBFQTAyMEYwMDIwNzA0NzEwRjEwMDBGOTFFQTQ4DQo6MTA4QTgwMDAwMzBGNThCRjk5NDIwOEJGOTA0MjJDQkZEODE3NkZFQTE2DQo6MTA4QTkwMDBFMzcwNDBGMDAxMDA3MDQ3NEZFQTQxMEM3RkVBNkM1Q0U0DQo6MTA4QUEwMDAwMkQxNTBFQTAxM0MwN0QxNEZFQTQzMEM3RkVBNkM1Q0VCDQo6MTA4QUIwMDBENkQxNTJFQTAzM0NEM0QwNURGODA0MEI3MDQ3MDBCRjE3DQo6MTA4QUMwMDA4NDQ2MTA0NjYyNDY4QzQ2MTk0NjYzNDYwMEUwMDBCRjY1DQo6MTA4QUQwMDAwMUI1RkZGN0I3RkYwMDI4NDhCRjEwRjEwMDBGMDFCRDM3DQo6MTA4QUUwMDA0REY4MDhFREZGRjdGNEZGMENCRjAxMjAwMDIwNURGODAyDQo6MTA4QUYwMDAwOEZCMDBCRjRERjgwOEVERkZGN0VBRkYzNEJGMDEyMDg3DQo6MTA4QjAwMDAwMDIwNURGODA4RkIwMEJGNERGODA4RURGRkY3RTBGRjFGDQo6MTA4QjEwMDA5NEJGMDEyMDAwMjA1REY4MDhGQjAwQkY0REY4MDhFRDcwDQo6MTA4QjIwMDBGRkY3Q0VGRjk0QkYwMTIwMDAyMDVERjgwOEZCMDBCRkQ3DQo6MTA4QjMwMDA0REY4MDhFREZGRjdDNEZGMzRCRjAxMjAwMDIwNURGOEI5DQo6MTA4QjQwMDAwOEZCMDBCRjRGRUE0MTBDN0ZFQTZDNUMwMkQxNTBFQTlGDQo6MTA4QjUwMDAwMTNDMEFEMTRGRUE0MzBDN0ZFQTZDNUMwMkQxNTJFQTM1DQo6MTA4QjYwMDAwMzNDMDJEMTRGRjAwMDAwNzA0NzRGRjAwMTAwNzA0NzA2DQo6MTA4QjcwMDA0RkVBNDEwMjEyRjUwMDEyMTVEMjExRDU2RkY0Nzg3MzQ1DQo6MTA4QjgwMDBCM0VCNjI1MjEyRDk0RkVBQzEyMzQzRjAwMDQzNDNFQUU4DQo6MTA4QjkwMDA1MDUzMTFGMDAwNEYyM0ZBMDJGMDE4QkY0MDQyNzA0N0MzDQo6MTA4QkEwMDA0RkYwMDAwMDcwNDc1MEVBMDEzMDA1RDExMUYwMDA0MDREDQo6MTA4QkIwMDAwOEJGNkZGMDAwNDA3MDQ3NEZGMDAwMDA3MDQ3MDBCRkUzDQo6MTA4QkMwMDAwMjRCRDg2OEMwRjMwMjIwNzA0NzAwQkYwMEVEMDBFMDAwDQo6MTA4QkQwMDAwNTRCREE2QzAyNDNEQTY0REI2QzgyQjAxODQwMDE5MDFBDQo6MTA4QkUwMDAwMTlCMDJCMDcwNDcwMEJGMDAxMDAyNDAwNTRCOUE2RDE4DQo6MTA4QkYwMDAwMjQzOUE2NTlCNkQ4MkIwMTg0MDAxOTAwMTlCMDJCMEMwDQo6MTA4QzAwMDA3MDQ3MDBCRjAwMTAwMjQwMDAyMDcwNDc0RDRBMTM2OEIzDQo6MTA4QzEwMDAyM0YwMDcwMzQzRjAwMjAzMTBCNTEzNjAxMzY4MDNGMDU5DQo6MTA4QzIwMDAwNzAzMDIyQjAzRDA2RjIxNDc0ODAwRjA3NUZFNDc0QTI3DQo6MTA4QzMwMDA0NzRDMTM2ODIzRjRDMDYzNDNGNDAwNzMxMzYwRDRGODAzDQo6MTA4QzQwMDA5ODMwNDNGMDAxMDNDNEY4OTgzMEQ0Rjg5ODMwOUEwNzZDDQo6MTA4QzUwMDBGQkQ1MjM2ODQzRjAwMTAzMjM2MDIzNjg5QjA3RkNENTAxDQo6MTA4QzYwMDAyMzY4NDNGMDA4MDMyMzYwMjM2ODIzRjBGMDAzNDNGMEY0DQo6MTA4QzcwMDBCMDAzMjM2MDYzNjgyM0Y0N0Y0MzYzNjBBMzY4MjNGMDM5DQo6MTA4QzgwMDAwMzAzQTM2MEEzNjgxM0YwMEMwRkZCRDFBMzY4MzE0ODYyDQo6MTA4QzkwMDAyM0YwRjAwM0EzNjBBMzY4MjNGNEUwNjNBMzYwQTM2ODU4DQo6MTA4Q0EwMDA0M0Y0NjA1M0EzNjAwMkYwMkRGQzJCNEEyOTQ4MTM2ODVCDQo6MTA4Q0IwMDA0M0YwMDQwMzEzNjAwMkYwMzNGQ0Q0Rjg4ODMwMjNGMDRGDQo6MTA4Q0MwMDAwMzAzQzRGODg4MzBENEY4ODgzMDIzRjA0MDYzQzRGODM0DQo6MTA4Q0QwMDA4ODMwNEZGMDgwNzBGRkY3ODlGRkEzNkI0M0YwODA3M0ZCDQo6MTA4Q0UwMDBBMzYzQTM2QjIzRjA4MDczQTM2MzFDNEI1QTY4MjJGMDI5DQo6MTA4Q0YwMDBFMDYyNUE2MDVBNjgyMkYwMDA0MjVBNjA1QTY4MjJGMEQ0DQo6MTA4RDAwMDA0MDUyNDJGMDAwNTI1QTYwNUE2ODEyMEMxMjA0NDJGNDY3DQo6MTA4RDEwMDAzQjQyNDJGMDdGMDI1QTYwNUE2ODIyRjQ3RjAyNDJGNERBDQo6MTA4RDIwMDAwODEyNUE2MDFBNjgyMkY0N0M1MjQyRjQwMDUyMUE2MDA3DQo6MTA4RDMwMDBGRkY3NDZGRkZGRjc2OEZGMDk0QjAwMDFDMEIyODNGODU5DQo6MTA4RDQwMDAyMzAwMTBCRDAwMjAwMjQwODhBMTAxMDgwMDcwMDA0MEVGDQo6MTA4RDUwMDAwMDEwMDI0MDAwNkNEQzAyMTBFMDAwRTAwMDYwMDA0MDA3DQo6MTA4RDYwMDAwMEVEMDBFMDJERTlGMDQxOTY0RTMzNkU0M0YwMDEwMzMzDQo6MTA4RDcwMDAzMzY2MzM2RTk0QjAwM0YwMDEwMzAwOTM0RkYwODA1MERDDQo6MTA4RDgwMDAwMDlCRkZGNzMzRkY5MDRBRDM2ODIzRjRFMDYzMUIwNDkyDQo6MTA4RDkwMDAxQjBDNDNGMEJGNjM0M0Y0MDEzM0QzNjBGRkY3MTBGRkI0DQo6MTA4REEwMDBGRkY3MzJGRjAwMDFDMEIyMTA3NkZGRjcwOUZGRkZGN0FGDQo6MTA4REIwMDAyQkZGMDAwMUMwQjI1MDc2RkZGNzAyRkZGRkY3MjRGRjQwDQo6MTA4REMwMDAwMDAxQzBCMjkwNzZGRkY3RkJGRUZGRjcxREZGMDAwMTI4DQo6MTA4REQwMDBDMEIyRDA3N0ZGRjdGNEZFRkZGNzE2RkYwMDAxQzBCMjc0DQo6MTA4REUwMDA4MkY4MjAwMEZGRjdFQ0ZFRkZGNzBFRkYwMDAxQzBCMjkzDQo6MTA4REYwMDA4MkY4MjIwMEZGRjdFNEZFRkZGNzA2RkYwMDAxQzBCMjkxDQo6MTA4RTAwMDA4MkY4MjMwMEIzNkQ0M0YwODA1M0IzNjVGRkY3RkVGRTk1DQo6MTA4RTEwMDAwMTIwNEZGMDgwNDRGRkY3REJGRTAyMjAwMDI1RkZGNzIyDQo6MTA4RTIwMDBEN0ZFMDEyMEZGRjdFMkZFNEZGNDdBNzgyNTYxMDFBOTExDQo6MTA4RTMwMDAyMDQ2Q0RFOTAzODVBREY4MDQ1MDAyOTUwMUYwQzRGRDRDDQo6MTA4RTQwMDAyMzY4NDNGMDgwMDMyMzYwQTM2ODIzRjRBMDMzMjNGMDU2DQo6MTA4RTUwMDAwNzAzMDEyN0EzNjAwQ0FBNjAyMzEwMjEyMDQ2Q0RFOTU3DQo6MTA4RTYwMDAwQzM3Q0RFOTBFNzgxMDk1MDFGMEU4RkRBMzY5REZGODI1DQo6MTA4RTcwMDA2ODgxMjNGNDgwNjNBMzYxMENBQTRGRjQ4MDcxMjA0NkJCDQo6MTA4RTgwMDBDREU5MEQ3NzAxRjBEQUZERDhGODA0MzAyM0YwMDQwM0MyDQo6MTA4RTkwMDAwQ0FBQzhGODA0MzA0RkY0ODA1MTIwNDZDREU5MEQ3Nzc0DQo6MTA4RUEwMDAwMUYwQ0NGREQ4RjgwNDMwMjNGNDgwNjNDOEY4MDQzMDE2DQo6MTA4RUIwMDBBMzY4MjNGMDA4MDNBMzYwQTM2ODIzRjQ4MDQzQTM2MDlFDQo6MTA4RUMwMDBBMzY4MjNGNDNGNDNBMzYwNjM2ODIzRjA3MDAzNjM2MEU3DQo6MTA4RUQwMDBBMzY4MjNGMDgwMDNBMzYwMDZBOTBFMjM0RkYwMDIwOEM1DQo6MTA4RUUwMDA0RkYwOTA0MENERTkwNjM4Q0RFOTA4NTVDREU5MEE1NzU1DQo6MTA4RUYwMDAwMUYwQTNGQjIzNjgzQjQzMjM2MDEwMjAwNEY1ODA1NDVBDQo6MTA4RjAwMDBGRkY3NzRGRTRCRjY4MDMzQURGODMwMzAwQ0E5NUEyM0NFDQo6MTA4RjEwMDAyMDQ2MEU5MzBEOTUwMUYwNTdGRDIzNjgyQjQ4MjNGMDUyDQo6MTA4RjIwMDA4MDAzMjM2MDYzNjgyM0YwNzAwMzYzNjBBMzY4MjNGMDA5DQo6MTA4RjMwMDA4MDAzQTM2MEUzNjgzQjQzRTM2MDIzNjgzQjQzMjM2MDEzDQo6MTA4RjQwMDAzMzZFNDNGNDgwNDMzMzY2MzM2RTBBOTUwM0Y0ODA0M0YzDQo6MTA4RjUwMDAwMTkzMDE5QkMwMjNDREU5MDYzODAzMjNDREU5MDgzNUYxDQo6MTA4RjYwMDAwNkE5MDcyM0E2RjU1ODQ2MEI5MzAxRjA2NkZCNEZGNEJDDQo6MTA4RjcwMDBFMTMzQ0RFOTBDMzUwQ0E5MEMyMzMwNDZDREU5MTAzNTkxDQo6MTA4RjgwMDBDREU5MEU1NTEyOTUwMUYwQTlGRTczNjgyM0Y0OTA0M0M0DQo6MTA4RjkwMDA3MzYwQjM2ODIzRjAyQTAzQjM2MDMzNjgzQjQzMzM2MEU0DQo6MTA4RkEwMDA0RkY0ODAyMEZGRjcxNEZFMDk0QTEzNjg0M0YwMDQwM0NFDQo6MTA4RkIwMDAxMzYwMjU2MTYyQjYwNzRCNEZGNDgwMDI1QTYwMTRCMDBCDQo6MTA4RkMwMDBCREU4RjA4MTAwMTAwMjQwMDBFRDAwRTAwMDA0MDA0ODIwDQo6MTA4RkQwMDAwMDA4MDY1MDAwRTEwMEUwMTgwMDAwNDAwRDRBMEU0OTZDDQo6MTA4RkUwMDA1MzY4NDNGNDgwNjMxMEI1NTM2MDAyRjVEMDMyMEI0Q0U0DQo6MTA4RkYwMDA5MzZENDNGMDgwNjM5MzY1MjA0NjAwMjIwMkYwODlGQjY1DQo6MTA5MDAwMDAyMDQ2MDc0OTAyRjA5QUZCMjA0NkJERTgxMDQwMDJGMEQ2DQo6MTA5MDEwMDA5Q0JCMDBCRjAwNzAwMDQwMDgwMDAwMjA4NDU4MDAyMDY2DQo6MTA5MDIwMDA0ODAwMDAyMDAzNEJEQTY5MTIwNkZDRDU4MEIyMTg4NThGDQo6MTA5MDMwMDA3MDQ3MDBCRjAwMzgwMTQwMTBCNThDMThBMTQyMDFEMTIzDQo6MTA5MDQwMDAwMDIwMTBCRDExRjgwMTBCRkZGN0VDRkZGNkU3MDAwMDYwDQo6MTA5MDUwMDAwNDRCNUE2OTAwMkFCRkJGMDM0QTlBNjAwMkYxODgzMjYyDQo6MTA5MDYwMDA5QTYwNzA0NzAwMjAwMjQwMjMwMTY3NDUxM0I1NzJCNjJEDQo6MTA5MDcwMDAxNzQ5MEI2OURDMDNGQ0Q0RkZGN0VBRkYwQjY5MEI2MUFFDQo6MTA5MDgwMDA0QjY5MjNGNEZGNjMyM0YwMDcwMzRCNjE0QjY5NDNGMDAzDQo6MTA5MDkwMDAwMjAzNDNFQUMwMDA0ODYxNEI2OTQzRjQ4MDMzNEI2MUVCDQo6MTA5MEEwMDAwQjRCMUM0NjFBNjlEMTAzRkNENDFBNjk5MjA3MDdENUU5DQo6MTA5MEIwMDAxQjY5MDA5MzU1MjIwNzRCMDc0OTA4NDgwM0YwRENGOTY4DQo6MTA5MEMwMDA2MzY5MjNGMDA3MDM2MzYxNjJCNjAyQjAxMEJEMDBCRjlEDQo6MTA5MEQwMDAwMDIwMDI0MDkzQTEwMTA4QUVBMTAxMDgxMDAwMDA4MDA5DQo6MTA5MEUwMDAzN0I1NzJCNjEyNDkwQzQ2MEQ2OUVEMDNGQ0Q0MEQ2OTEzDQo6MTA5MEYwMDAwRDYxNEQ2OTQ1RjAwMTA1NEQ2MTAyNjA0MzYwMjM2OUQyDQo6MTA5MTAwMDBEQTAzRkNENDIzNjk5QjA3MDdENTIzNjkwMDkzNkUyMkY5DQo6MTA5MTEwMDAwODRCMDk0OTA5NDgwM0YwQUZGOTA1NEIwMTIyMUE2MUQwDQo6MTA5MTIwMDA1QTY5MjJGMDAxMDI1QTYxNjJCNjAzQjAzMEJEMDBCRjM1DQo6MTA5MTMwMDAwMDIwMDI0MEJBQTEwMTA4QUVBMTAxMDgxMDAwMDA4MDgxDQo6MTA5MTQwMDAxODRCMkRFOUY3NEY4OTQ2MTU0NjFDNjkxNEY0ODAzNEY1DQo6MTA5MTUwMDBGQkQxRkZGNzdERkZDNUYxMDgwQTIwRjAwNzA2MERFQkY0DQo6MTA5MTYwMDAwNTBCQUM0MjA0RUIwNjA4MDJEMzAzQjBCREU4RjA4RjU4DQo6MTA5MTcwMDAyRjFCMDgyRjNBNDYwOUVCMDQwMTI4QkYwODIyNjg0NjM2DQo6MTA5MTgwMDAwREYwMThGRjA3MkYwNkQ4MEFFQjA0MDJGRjIxQUJFQjA2DQo6MTA5MTkwMDAwNDAwMERGMDI4RkZEREU5MDAyMzQwNDZGRkY3QTBGRkEzDQo6MTA5MUEwMDAwODM0REVFNzAwMjAwMjQwMDI0QTUzNjk0M0YwMDA0M0RFDQo6MTA5MUIwMDA1MzYxNzA0NzAwMjAwMjQwMDhCNTEzNEExMzRCMTQ0OTBEDQo6MTA5MUMwMDAwMDI4MENCRjE4NDYxMDQ2MEI2QTIwRjBFMDYwODM0MjZFDQo6MTA5MUQwMDAxOUQwNzJCNjBCNjlEQTAzRkNENEZGRjczOUZGNEI2OTdCDQo6MTA5MUUwMDA1QjAwNDFCRjBCNEJDQjYwMDNGMTQ0MzNDQjYwMDg0QkJBDQo6MTA5MUYwMDAxODYyNUE2OTQyRjQwMDMyNUE2MTFBNjlEMjAzRkNENEU3DQo6MTA5MjAwMDBGRkY3RDJGRjYyQjYwOEJEQUFGOEZGRjdBQUY4RkZGRjgyDQo6MTA5MjEwMDAwMDIwMDI0MDNCMkExOTA4N0ZCNTEzNEMwMDIyMDJBRDAyDQo6MTA5MjIwMDA4QTQyMDFEMzA0QjA3MEJENjM2OERCMDdGQ0Q1QTM2ODM0DQo6MTA5MjMwMDAwMjkzNjM2ODEzRjA2NjAzMEFEMDYzNjgwMDkzMEI0OEQ3DQo6MTA5MjQwMDAwQjRCMEM0OTE4MjIwM0YwMTdGOTAxMjAwREYwNEVGRUNDDQo6MTA5MjUwMDBENjE4QjE0MkU2RDM1RTVEQzY1NDAxMzMwNDJCRjdEMTc0DQo6MTA5MjYwMDAwNDMyMDQzMERDRTcwMEJGMDAwODA2NTAxMDAwMDA4MDI0DQo6MTA5MjcwMDBEN0ExMDEwOEVBQTEwMTA4NEZGNDdBNzNDMkIyNUE0Mzk4DQo6MTA5MjgwMDA0RkYwODA0MTEyMEExMEI1OUExQThBNjMwMjBDQzBGMzlCDQo6MTA5MjkwMDAwNzIwNUE0MzRGRjRDMDY0QjJGQkY0RjI5QTFBNDM0M0Q2DQo6MTA5MkEwMDAxQjBBQzNGNTdBNzNDQTYzMEI2NDEwQkQwMTQ4MDBGMDUyDQo6MTA5MkIwMDBFM0JFMDBCRjIwNUMwMDIwMDM0QjA0NEE1QjZBMTI2OEQ3DQo6MTA5MkMwMDA1QTIwMDBGQjAyMzA3MDQ3MDAxMDAwNDA0NDAzMDAyMDg5DQo6MTA5MkQwMDAwOEI1MEI0QjAwMjIxQTYxMEE0QTEzNjgwMTMzMTM2MDY4DQo6MTA5MkUwMDBGRkY3RUFGRjA4NEIxQjY4QzAxQTA4MjgwN0Q5MDc0QjhEDQo6MTA5MkYwMDAxODY4MjBCMTQwQjJCREU4MDg0MDAzRjAzREJBMDhCRDhGDQo6MTA5MzAwMDAwMDEwMDA0MDQ0MDMwMDIwNEMwMzAwMjA0ODAzMDAyMENDDQo6MTA5MzEwMDAzOEI1MDQ0NjcyQjZGRkY3Q0ZGRjA2NEIxODYwNjJCNjQ5DQo6MTA5MzIwMDAwNTREMkNCMTJCNjhBMzQyMDJEMDYwQjIwM0YwMjRGQUExDQo6MTA5MzMwMDAyQzYwMzhCRDRDMDMwMDIwNDgwMzAwMjAxMEI1MDE0NkM2DQo6MTA5MzQwMDBGRkY3QkFGRjA0NDZGRkY3QjdGRjAwMUI4ODQyRkFEM0M2DQo6MTA5MzUwMDAxMEJEMDAwMDcwQjVGRkY3MDVGRDRGRjA5MDQwMDEyNEVGDQo6MTA5MzYwMDAwMzY4OTRGQUE0RjJCMkZBODJGMkEyNDAwMzI1MDVGQTQ1DQo6MTA5MzcwMDAwMkYyMjNFQTAyMDI5NEZBQTRGMzAyNjBDMjY4OTRGQUE5DQo6MTA5MzgwMDBBNEYxQjFGQTgxRjE5NEZBQTRGM0ExNDBCM0ZBODNGMzAyDQo6MTA5MzkwMDAwNUZBMDFGMUEzNDAyMkVBMDEwMjA0RkEwM0YzMTM0M0EwDQo6MTA5M0EwMDBDMzYwMDAyMEZGRjcwOEZGMDAyMjIwNDYwMjRCMTE0NjUxDQo6MTA5M0IwMDBCREU4NzA0MDAzRjA2MEI4RkZBMzAxMDhGRkY3MEVCRUUwDQo6MTA5M0MwMDAxMEI1MDQ0NjAwRjBGRUZBODBCMTIwNDYwMEYwREFGQTRCDQo6MTA5M0QwMDAwMDIyMTE0NjA2NEI0RkY0ODAzMDAzRjA0REY4NEZGNDU1DQo6MTA5M0UwMDA4MDMwNDAyMjIxNDYwM0YwOEZGODQwMjAxMEJEMDBCRjlFDQo6MTA5M0YwMDAxNkE0MDEwODA4QjU0MDIyMDAyMTBDNDgwREYwRjNGRDI5DQo6MTA5NDAwMDAwQTQ4RkZGN0RERkYwMDI4MDFEQzAwMjAwOEJEMDc0OEZGDQo6MTA5NDEwMDAwM0YwRENGOTkxMjhGOEQxMDAyMjRGRjQwMDcwMDQ0QkRFDQo6MTA5NDIwMDAxMTQ2MDNGMDI5Rjg0RkYwRkYzMEVGRTc1MDAzMDAyMDFBDQo6MTA5NDMwMDAwQ0E0MDEwODAwMjIxMEI1MTE0NjA0NDYwQzRCNEZGNDUxDQo6MTA5NDQwMDA4MDMwMDNGMDE5Rjg0MDIyMjE0NjRGRjQ4MDMwMDNGMEI5DQo6MTA5NDUwMDA1QkY4MDg0QTEzODgwM0YwMzAwMzMwMkJGQUQwMjI0NjE5DQo6MTA5NDYwMDA0MDIzODEyMTA0NDhCREU4MTA0MDAyRjA0NEI5MDBCRjA4DQo6MTA5NDcwMDAxQUE0MDEwODA0NjgwMDQwODQ1ODAwMjBGRkY3REFCRkVFDQo6MTA5NDgwMDA0RkYwOTA0MzBGNDgxMDRBMTBCNDFDNjkwMzY4MTE2OEVDDQo6MTA5NDkwMDAwNEYwMDEwNDdCQjEwMTM5MTE2MDEyNjg1MTFFMUQyOUNEDQo6MTA5NEEwMDA4MkJGQjNGQTgzRjM1QjA5MDM2MDUwMDAyQ0I5NURGODA3DQo6MTA5NEIwMDAwNDRCRkZGN0UxQkUwMTMxRUVFNzUwMDI0MEVBMDI0MDAzDQo6MTA5NEMwMDBGNUU3MDBCRjk0MDMwMDIwMDAwMDAwMjBEMDIyMDE0OUVFDQo6MTA5NEQwMDAwREYwNzBCRDAwRjgwMzA4RDAyMjAxNDkwREYwNkFCREZGDQo6MTA5NEUwMDAwMEYwMDMwODFGQjUxMDIyMDY0OTY4NDYwREYwNjJGRDIyDQo6MTA5NEYwMDA5REY4MDAwMEEwRjFBNTAzNTg0MjU4NDEwNUIwNURGODYxDQo6MTA5NTAwMDAwNEZCMDBCRjAwRjAwMzA4MTBCNTA0NDY0OUI5N0YyMEYyDQo6MTA5NTEwMDBGRkY3QUNGRDA2NDhEMDIyMjE0NkJERTgxMDQwRkZGNzFBDQo6MTA5NTIwMDAwRkJFN0UyMEZGRjdBMkZERDAyMjIxNDYwMTQ4RjRFN0JFDQo6MTA5NTMwMDAwMEY4MDMwODAwRjAwMzA4MkRFOUYwNDE2MTRFODZCMDAxDQo6MTA5NTQwMDAzMzY4MDQ5MzAxMzMwNDQ2MEJEMTA2QUQwMTIzNDVGODdCDQo6MTA5NTUwMDAwODNEN0MyMEZGRjc4QUZEMDQyMjI5NDYzMDQ2RkZGN0FDDQo6MTA5NTYwMDBFRkZEMDAyMzA1OTM0NEIxNTc0ODU4NEI1ODQ5RjYyMjY0DQo6MTA5NTcwMDAwMkYwODJGRjAxMjAwREYwQjlGQzU2NEU1NDRGREZGODg3DQo6MTA5NTgwMDA0ODgxMDU5QTA0RjEwMDczMDNGNTdBNDM5RDAwMkI2ODI2DQo6MTA5NTkwMDA1OTFDMEVEMDkzNDIwNkQyMzM0NjRGRjQ4MDcyMzk0NjlFDQo6MTA5NUEwMDA0MDQ2MDJGMDY5RkYwMjM0MkI2ODA1OTNCNEY1MDA3RjUyDQo6MTA5NUIwMDBFN0QxRERFOTA0MjMzM0JCQ0RFOTAxMjQ0NDQ5MDA5MzFEDQo6MTA5NUMwMDA0RkY0ODY3MjQ0NEI0MDQ4MDJGMDU2RkYwNDlCMUIwMjQ2DQo6MTA5NUQwMDAwMTMzN0QyMDA1OTNGRkY3NDlGRDA0MjIwNUE5M0Y0ODhCDQo6MTA5NUUwMDBGRkY3QUVGRDA0OUIwNkFDMDEzMzQ0RjgwODNEN0MyMDM4DQo6MTA5NUYwMDBGRkY3M0NGRDMzNDgwNDIyMjE0NkZGRjdBMUZEMDU5ODAzDQo6MTA5NjAwMDAwNkIwQkRFOEYwODEwMTMzQjJFQjEzMkYwNTkzNTREMkJEDQo6MTA5NjEwMDBDREU5MDAzMjJFNDkzMjRCMkI0ODRGRjQ4RTcyMDJGMEM2DQo6MTA5NjIwMDAyQkZGMDU5QjA2QUQxQjBBNDVGODA4M0Q3QzIwRkZGNzg0DQo6MTA5NjMwMDAxREZEMDQyMjI5NDYyMzQ4RkZGNzgyRkRCNEY1MDA3RjczDQo6MTA5NjQwMDAxRkQxRERFOTA0MjNCMkVCMTMyRjA4RDJDREU5MDAzMjlDDQo6MTA5NjUwMDAxRjQ5MjQ0QjFDNDg0RkY0OTM3MjAyRjAwREZGMDU5QkU5DQo6MTA5NjYwMDAwNkFDMUIwQTAxMzM0NEY4MDgzRDdDMjBGRkY3RkVGQ0UyDQo6MTA5NjcwMDAyMTQ2MDQyMjEzNDhGRkY3NjNGRDdEMjBGRkY3RjZGQzI3DQo6MTA5NjgwMDAwMDI0MDRGMTAwNzAwMEY1N0E0MDA0MjI4MDAwMDVBOTRFDQo6MTA5NjkwMDBGRkY3NTZGRDE0NEIwNTk4MUE2ODkwNDIwQkQxMDQ5QkI2DQo6MTA5NkEwMDAwMjk0MDAyMkNERTkwMDAzMTE0NjEwNEI0RkY0ODA2MDc0DQo6MTA5NkIwMDAwMkYwRTJGRUZFRTcxODYwQTJFN0I0RjUwMDdGRTBEMTE5DQo6MTA5NkMwMDBDREU3MDBCRjAwRTAwMzA4MTAwMDAwODAwNEEyMDEwOEZEDQo6MTA5NkQwMDAxOEEyMDEwODI1QTIwMTA4M0ZBMjAxMDgwMEU4MDMwODFBDQo6MTA5NkUwMDBBMUEyMDEwOEVFQTIwMTA4OTAwMzAwMjAzQUEzMDEwOEZDDQo6MTA5NkYwMDA3MDQ3MDAwMDcwQjVGRkY3REZGRDA1NDYxQzQ4RkZGNzE3DQo6MTA5NzAwMDBCQkZEMDVGNTlDNTU0RkYwOTA0NjA4MzUzNDY5MTRGMEMzDQo6MTA5NzEwMDAwMTA0MUNEMEZGRjdEMEZEMDBGNTlDNTQwODM0NEZGMDM1DQo6MTA5NzIwMDA5MDQ1RkZGN0M5RkQ4NDQyMUJEMzAxMjBGRkY3MDZGRUQ5DQo6MTA5NzMwMDBGRkY3NjBGRUQ4QjkyQjY5REIwN0YyRDQ0RkY0ODI1MEYzDQo6MTA5NzQwMDBGRkY3OUFGRDMyMjBGRkY3RjlGRDAxMjAwRkUwRkZGNzQ4DQo6MTA5NzUwMDBCM0ZEODU0MjA3RDIwNzRCMjI0NjIxNDYwMTIwMDJGMDg1DQo6MTA5NzYwMDA4QkZFMDAyMDAzRTBGRkY3NDVGRTAwMjhDRUQwNzBCRDQxDQo6MTA5NzcwMDAyMDM1RkYwMEVCQTMwMTA4MDhCNUZGRjc0REZEMDEyMEUwDQo6MTA5NzgwMDAwOEJEMDAwMDAwMjIxMEI1MDc0QjExNDY0RkY0MDA3MEQxDQo6MTA5NzkwMDAwMkYwNzJGRTcyMjQyMDQ2MDEzNEU0QjJGRkY3NjZGQzQ4DQo6MTA5N0EwMDA3QzJDRjhEMTEwQkQwMEJGOURBMzAxMDgzMjIwNzA0NzZBDQo6MTA5N0IwMDAyREU5RjM0MTRGRjRCNDc2MDZGQjAwRjRFNzBBMDdGNTEwDQo6MTA5N0MwMDA4MDMzNzIzMzA0RjRGRjY0MDRFQkMzMjQwMDIyQ0RFOTM4DQo6MTA5N0QwMDAwMDA0MDU0Njg4NDYwRDRCMTE0NjRGRjQwMDcwMDJGMDE4DQo6MTA5N0UwMDA0QkZFMDkyRjA3RDgzMjQ2NDE0NjIwNDYwMkIwQkRFODVEDQo6MTA5N0YwMDBGMDQxRkZGN0E1QkMwMDk1MDU0QjA2NDkwNjQ4NDBGMjJEDQo6MTA5ODAwMDBDQjEyMDJGMDM5RkUwMkIwQkRFOEYwODFBREEzMDEwODMxDQo6MTA5ODEwMDBDNEEzMDEwODE4QTIwMTA4MTAwMDAwODAyREU5RjM0MTNCDQo6MTA5ODIwMDA0RkY0QjQ3NjA2RkIwMEY0RTcwQTA3RjU4MDMzNzIzMzkxDQo6MTA5ODMwMDAwNEY0RkY2NDA0RUJDMzI0MDAyMkNERTkwMDA0MDU0NkQwDQo6MTA5ODQwMDA4ODQ2MEQ0QjExNDY0RkY0MDA3MDAyRjAxNUZFMDkyRkFCDQo6MTA5ODUwMDAwN0Q4MzI0NjIxNDY0MDQ2MDJCMEJERThGMDQxMERGMDNGDQo6MTA5ODYwMDBBOUJCMDA5NTA1NEIwNjQ5MDY0ODQwRjJERDEyMDJGMEZGDQo6MTA5ODcwMDAwM0ZFMDJCMEJERThGMDgxNzJBMzAxMDhDNEEzMDEwODkxDQo6MTA5ODgwMDAxOEEyMDEwODEwMDAwMDgwMkRFOUYwNDE0RkY0QjQ3N0QwDQo6MTA5ODkwMDBBREY2MDgwRDA3RkIwMEY1MDAyMjAwOTAwNDQ2ODg0NjRGDQo6MTA5OEEwMDBFRTBBMTk0QjExNDY0RkY0MDA3MDAyRjBFNUZEMDkyRTQ3DQo6MTA5OEIwMDAyMUQ4MDZGNTgwMzA3MjMwQzQwMjRGRjQwMDYyMjE0NjkwDQo6MTA5OEMwMDAwMkE4MERGMDZDRkIwMkFCMDVGNEZGNjAzQTQ2NDE0NjdFDQo6MTA5OEQwMDAxODQ0MERGMDY0RkIwNkYxNzIwMEMwQjJGRkY3QzZGQjNFDQo6MTA5OEUwMDBFQTE5MDJGNEZGNjIwMkE5MjA0NkZGRjcyOUZDMERGNkVGDQo6MTA5OEYwMDAwODBEQkRFOEYwODEwMDk0MDQ0QjA1NDkwNTQ4NEZGNDdDDQo6MTA5OTAwMDBGOTcyMDJGMEI5RkRGMkU3ODlBMzAxMDhDNEEzMDEwOEM2DQo6MTA5OTEwMDAxOEEyMDEwODEwMDAwMDgwMDdCNTA1NEJDREU5MDAwMTMxDQo6MTA5OTIwMDA0RkY0RkQ3MjAzNDkwNDQ4MDJGMEE2RkRGRUU3MDBCRkI0DQo6MTA5OTMwMDBGNEExMDEwODE4QTIwMTA4MTAwMDAwODBGOEI1MEU0RDJFDQo6MTA5OTQwMDAyRTY4NjMyRTAxNDYxM0RDMEM0RjBENDgzQzY4NDAyMjA0DQo6MTA5OTUwMDAwMEVCODQxMDBERjAyRUZCMDEzNDYzMkNDOEJGMDAyM0Y0DQo6MTA5OTYwMDAwNkYxMDEwNkQ0QkYzQzYwM0I2MDJFNjAwMDIwRjhCRENDDQo6MTA5OTcwMDA0RkYwRkYzMEZCRTcwMEJGOUMwMzAwMjBBMDFDMDAyMDNEDQo6MTA5OTgwMDBBMDAzMDAyMDEwQjUwQzRDMEM0QjIxNjg0MDIyMDNFQkM3DQo6MTA5OTkwMDA4MTExMERGMDBGRkIwQTRCMUE2ODAwMkEwOUREMjE2OEJFDQo6MTA5OUEwMDAwMTMxNjMyOUM4QkYwMDIxMDEzQTIxNjAxQTYwMDAyMEZCDQo6MTA5OUIwMDAxMEJENEZGMEZGMzBGQkU3OTgwMzAwMjBBMDAzMDAyMDBDDQo6MTA5OUMwMDA5QzAzMDAyMDAxNEIxODY4NzA0NzAwQkY5QzAzMDAyMEQ3DQo6MTA5OUQwMDAwMTQ4MDdGMDU5QjgwMEJGMTAxRDAwMjAxMEI1NDAyMjAzDQo6MTA5OUUwMDAwNDQ2MDE0NjA2NDgwREYwRTVGQTA2NEEwNEYxNDAwMzM0DQo6MTA5OUYwMDA2MDM0NTNGODA0MUI0MkY4MDQxQkEzNDJGOUQxMTBCRDk0DQo6MTA5QTAwMDBCMDFDMDAyMDgwMUQwMDIwRjhCNTBDNEUwQzRDNDAyN0U3DQo6MTA5QTEwMDAzQTQ2MjAyNTAwMjEzMDQ2MERGMEU1RkEyQTQ2MDAyMTdEDQo6MTA5QTIwMDAyMDQ2MERGMEUwRkEzOTQ2MzA0NkZGRjdBNUZFMjk0NkZDDQo6MTA5QTMwMDAyMDQ2QkRFOEY4NDBGRkY3OUZCRTAwQkZCMDFDMDAyMEU1DQo6MTA5QTQwMDA4MDFEMDAyMDBBNDYwMTQ2MDE0ODA3RjA0OUI4MDBCRkMyDQo6MTA5QTUwMDAxMDFEMDAyMDAxNDYwMTQ4MDdGMDYwQjgxMDFEMDAyMENEDQo6MTA5QTYwMDAzMEI1OTFCMDA0NDYwRDQ2NDAyMjAwMjE2ODQ2MERGMDA1DQo6MTA5QTcwMDBCQUZBNjRCMTAxMkMyM0QwNDAyRDBBRDkxMjQ4MTM0QkY1DQo6MTA5QTgwMDAxMzQ5NkYyMjAyRjBGOEZDMDEyMDBERjAyRkZBMTE0QzVGDQo6MTA5QTkwMDAyMDI1MjE0NjJBNDY2ODQ2MERGMDgxRkEwMDI0MURGODRCDQo6MTA5QUEwMDAwNDMwODNGMDM2MDMwREY4MDQzMDAxMzQ0MDJDRjZEMTM1DQo6MTA5QUIwMDBGRkY3OEVGRjIxNDY2ODQ2RkZGN0M0RkYxMUIwMzBCREE3DQo6MTA5QUMwMDAyMDI1MDU0Q0U1RTcwMEJGMTAwMDAwODA3MUE0MDEwOEM3DQo6MTA5QUQwMDA5MEE0MDEwOEIwMUMwMDIwODAxRDAwMjA3MEI1MDQ0NjMxDQo6MTA5QUUwMDA5MEIwMTA0NjBFNDYxNTQ2RkZGN0I0RkY0MDIyMDAyMTA1DQo6MTA5QUYwMDA2ODQ2MERGMDc4RkE1NEIxNDAyRTBBRDkxNDQ4MTU0QjM3DQo6MTA5QjAwMDAxNTQ5OEQyMjAyRjBCOEZDMDEyMDBERjBFRkY5MTM0QzNEDQo6MTA5QjEwMDAyMDI2MjE0NjMyNDY2ODQ2MERGMDQxRkEwMDI0MURGODAxDQo6MTA5QjIwMDAwNDMwODNGMDVDMDMwREY4MDQzMDAxMzQ0MDJDRjZEMThFDQo6MTA5QjMwMDBGRkY3NEVGRjIxNDY2ODQ2RkZGNzg0RkYyMDIxMjg0NkE1DQo6MTA5QjQwMDBGRkY3ODBGRjI4NDZGRkY3ODVGRjEwQjA3MEJEMDBCRjBDDQo6MTA5QjUwMDAxMDAwMDA4MDcxQTQwMTA4OTBBNDAxMDhCMDFDMDAyMDJFDQo6MTA5QjYwMDAwOEI1MDQ0ODBBRjBBRUZFMEFGMEIyRkUwMjRCMTg2MEQ3DQo6MTA5QjcwMDAwOEJEMDBCRjc5OTcwMDA4QTQxQzAwMjAwMzRCMDQ0QUNEDQo6MTA5QjgwMDAxQTYwMDQ0QjIwMjIxQTYwNzA0NzAwQkZBQzFDMDAyMEYyDQo6MTA5QjkwMDA4NkE3MDEwOEE4MUMwMDIwMDdCNTBCNEIxQjY4MDA5MzgzDQo6MTA5QkEwMDAxMzQ2MEE0NjAxNDYwOTQ4MDA2ODBCRjBGMUZBNDBCOTJEDQo6MTA5QkIwMDAwNzQ4MDg0QjA4NDlBRjIyMDJGMDVFRkMwMTIwMERGMDc3DQo6MTA5QkMwMDA5NUY5MDNCMDVERjgwNEZCQTQxQzAwMjBBQzFDMDAyMDM4DQo6MTA5QkQwMDAxMDAwMDA4MDVEQTQwMTA4OTBBNDAxMDgwOEI1MDg0QjlFDQo6MTA5QkUwMDAxQTY4MEFGMDdERkUwMTI4MDlEMDA2NDgwNjRCMDc0OThEDQo6MTA5QkYwMDA0MEYyMEIxMjAyRjA0MEZDMDEyMDBERjA3N0Y5MDhCRDk1DQo6MTA5QzAwMDBBNDFDMDAyMDEwMDAwMDgwMUVBNDAxMDg5MEE0MDEwOERDDQo6MTA5QzEwMDAwOEI1MDg0QjFCNjgwQUYwQTNGRjAxMjgwOUQwMDY0OEM1DQo6MTA5QzIwMDAwNjRCMDc0OTRGRjQ4QTcyMDJGMDI2RkMwMTIwMERGMDIyDQo6MTA5QzMwMDA1REY5MDhCREE0MUMwMDIwMTAwMDAwODAzQkE0MDEwOEIxDQo6MTA5QzQwMDA5MEE0MDEwODAxMjgxMEI1MEM0NjE0QkYwMTQ2MDg0OTJDDQo6MTA5QzUwMDAwODQ4MEJGMEUxRkMxMDIyMjE0NjA3NDgxQ0I5QkRFODdBDQo6MTA5QzYwMDAxMDQwMERGMEMwQjlCREU4MTA0MDBERjBBM0I5MDBCRjIxDQo6MTA5QzcwMDA4MDFEMDAyMDIwNUIwMDIwMTA1QzAwMjAwMTQ2MTAyMjg3DQo6MTA5QzgwMDAwMjQ4MDlCOTBERjBBRkI5MERGMDk0QjkxMDVDMDAyMDhEDQo6MTA5QzkwMDAwQTQ2MDE0NjAxNDgwQkYwRUJCQzAwQkYyMDVCMDAyMEU4DQo6MTA5Q0EwMDAwQTQ2MDE0NjAxNDgwQkYwQjlCQzAwQkYyMDVCMDAyMDBBDQo6MTA5Q0IwMDAyREU5RjA0MTA2OUM4ODQ2MDAyMTA3NDYxNTQ2MDg0NkQ2DQo6MTA5Q0MwMDAyMjQ2MUU0NkZGRjdDQ0ZFNDE0NjM4NDZGRkY3QkFGRTU1DQo6MTA5Q0QwMDAyODQ2MEM0RDMxNDZGRkY3QjVGRTI4NDYyMDIxRkZGN0Y4DQo6MTA5Q0UwMDBCMUZFMDAyMTIyNDYwODQ2RkZGN0Y4RkUwNUYxMjAwMEVDDQo6MTA5Q0YwMDAwMDIxRkZGN0E3RkYyMDQ2MjAyMUJERThGMDQxRkZGNzM0DQo6MTA5RDAwMDBDRkJGMDBCRkIwMUMwMDIwMTNCNTA1NEMwMDk0RkZGNzc3DQo6MTA5RDEwMDBDRkZGMDQ0QjFDNjAwNDRCMjAyMjFBNjAwMkIwMTBCRDIwDQo6MTA5RDIwMDBGMDFDMDAyMEFDMUMwMDIwQTgxQzAwMjA3MEI1OUFCMENDDQo6MTA5RDMwMDAwMkFFMUM0NjAwMjMxNTQ2MDA5NjFBNDZGRkY3QjhGRkYwDQo6MTA5RDQwMDA0MDIyMDAyMTBBQTgwREYwNEVGOTBGNEIwQUE5MUE2ODBCDQo6MTA5RDUwMDAzMDQ2MEJGMEI1RjgwQUFCMTJBQTFFNDYwM0NFOTY0MjY3DQo6MTA5RDYwMDAyODYwNjk2MDMzNDYwNUYxMDgwNUY2RDEyMzQ2MUFBRDJGDQo6MTA5RDcwMDAxNDQ2MDNDQ0FDNDIxODYwNTk2MDIyNDYwM0YxMDgwMzM0DQo6MTA5RDgwMDBGNkQxMUFCMDcwQkQwMEJGQTQxQzAwMjBERkY4MzREMDlCDQo6MTA5RDkwMDAwMDIxMDNFMDBDNEI1QjU4NDM1MDA0MzEwQjQ4MEM0QjQzDQo6MTA5REEwMDA0MjE4OUE0MkY2RDMwQjRBMDJFMDAwMjM0MkY4MDQzQkUxDQo6MTA5REIwMDAwOTRCOUE0MkY5RDMwMEYwMTNGODBERjBCREY4MDZGMDA0DQo6MTA5REMwMDA3MUZERkVFNzAwQzAwMDIwRjhDNzAxMDgwMDAwMDAyMDc4DQo6MTA5REQwMDAyODAzMDAyMDI4MDMwMDIwRDg2MTAwMjBGRUU3MDAwMEFGDQo6MTA5REUwMDAwRTRBRDJGODg4MzA0M0Y0NzAwM0MyRjg4ODMwMEM0QjI2DQo6MTA5REYwMDAxQTY4MDAyMTQyRjAwMTAyMUE2MDk5NjAxQTY4MjJGMDg0DQo6MTA5RTAwMDBBODUyMjJGNDEwMjIxQTYwNEZGNDgwNTJEQTYwMUE2OEM1DQo6MTA5RTEwMDAyMkY0ODAyMjFBNjA5OTYxNzA0NzAwQkYwMEVEMDBFMEQzDQo6MTA5RTIwMDAwMDEwMDI0MDJERTlGMDQxMDQ0Njg2QjAwMDI4NkJEMEI2DQo6MTA5RTMwMDA5MEY4MjkzNDAzRjBGRjAyMUJCOTgwRjgyODI0MDFGMEMwDQo6MTA5RTQwMDA3NUZCMjU0NjAzMjM1NUY4MTAwQjg0RjgyOTM0MDBGMEUwDQo6MTA5RTUwMDBBNEZGMEZDRDZFNDYwRkM2MkI2ODMzNjAwNEYxMDQwOEQzDQo6MTA5RTYwMDA5OEU4MEUwMDIwNjgwMEYwODdGRjAwMjEyMDY4MDBGMENEDQo6MTA5RTcwMDA5RUZGMDAyMTIyNDYyMzQ2MDRGMTEwMDUwMTI2MDg0NkQ0DQo6MTA5RTgwMDA4M0Y4MjgxMEQ5ODYwMTMxMEYyOTgzRjgyOTYwODNGOEQ3DQo6MTA5RTkwMDAyQjAwQzNFOTBFMDAxODY0MDNGMTIwMDNGMEQxMDAyMzY2DQo6MTA5RUEwMDAxRjQ2ODJGODI4MzIwMTMzMEYyQjgyRjgyOTcyODJGODdDDQo6MTA5RUIwMDAyQjcyQzJGODM4NzJDMkY4M0M3MkMyRjg0MDcyMDJGMURBDQo6MTA5RUMwMDAyMDAyRUVEMTBGQ0Q2RTQ2MEZDNjJCNjgzMzYwOThFOEE2DQo6MTA5RUQwMDAwRTAwMjA2ODAwRjA2REZGMDEyMzg0RjgyNDcwODRGOEUwDQo6MTA5RUUwMDAyOTM0RTM2OTAxMkIwMkQxMjA0NjAwRjA5MUZCMjM2QTVCDQo6MTA5RUYwMDAwMTJCMDJEMTIwNDYwMEYwNzlGQjIwNjgwMUYwRkNGOTJCDQo6MTA5RjAwMDAwMDIwMDZCMEJERThGMDgxMDEyMEZBRTc5MEY4MjgzNDdGDQo6MTA5RjEwMDAwMTJCMTBCNTA0NDYwQ0QwMDEyMzgwRjgyODM0MDA2OENBDQo6MTA5RjIwMDAwMUYwRTJGOTIwNjgwMEYwMkVGRjAwMjA4NEY4MjgwNEY4DQo6MTA5RjMwMDAxMEJEMDIyMEZDRTc5MEY4MjgyNDAxMkExMEI1MDQ0NjQxDQo6MTA5RjQwMDAwQkQwMDEyMjgwRjgyODI0ODRGODI0MTAwMDY4MDFGMDQ2DQo6MTA5RjUwMDBDNUY5MDAyMDg0RjgyODA0MTBCRDAyMjBGQ0U3NzBCNTg0DQo6MTA5RjYwMDAwMUYwMEYwNjA0NDYxMUYwODAwRjRGRUE0NjEwMDU0NjM3DQo6MTA5RjcwMDAxRUQwMjU0NDAwRjEyODAxMDEyMDIxNDQ4NUY4MjkwMDQ0DQo6MTA5RjgwMDAwQTYxNEE3ODBFNzBDQjcwMDJCMUNFODEwMjJCMDRCRkY5DQo6MTA5RjkwMDAwMDIzMEI3MTk0RjgyODM0MDEyQjExRDAwMTIzODRGODhEDQo6MTA5RkEwMDAyODM0MjA2ODAwRjAyMkZGMDAyMDg0RjgyODA0NzBCREM3DQo6MTA5RkIwMDAyNTQ0MDBGNTBBNzEwMDIwMjE0NDg1RjgyOTAyREZFN0Q1DQo6MTA5RkMwMDAwMjIwRjRFNzEwQjUwNDQ2MDFGMDBGMDA0MzAxMTFGMDQwDQo6MTA5RkQwMDA4MDBGMUE0NjE1RDAyMjQ0MDNGMTI4MDEwMTIzMjE0NEExDQo6MTA5RkUwMDA4MkY4MjkzMDA4NzA5NEY4MjgzNDAxMkIxMUQwMDEyMzBEDQo6MTA5RkYwMDA4NEY4MjgzNDIwNjgwMUYwNTFGODAwMjA4NEY4MjgwNEZGDQo6MTBBMDAwMDAxMEJEMjI0NDAzRjUwQTcxMDAyMzIxNDQ4MkY4MjkzMjREDQo6MTBBMDEwMDBFOEU3MDIyMEY0RTc3MEI1MDFGMDBGMDEwMEVCNDExNjBDDQo6MTBBMDIwMDA0QzAxMDAyNTg2RjgyODEyMDRGNTBBNzEwMTQ0QzZGODhGDQo6MTBBMDMwMDAzQzIyQzZGODQwMzJDNkY4NDQ1Mjg2RjgyOTUyMDA2OEREDQo6MTBBMDQwMDAwMUYwNzZGOTI4NDY3MEJENzBCNTAxRjAwRjAxMDBFQjA0DQo6MTBBMDUwMDA0MTE1NEMwMTJCNjQwMDI2MDEyMzg1RjgyODEwMDRGMURBDQo6MTBBMDYwMDAyODAxMDE0NEVBNjM2RTY0ODVGODI5MzAwMDY4MDFGMDM0DQo6MTBBMDcwMDA1RkY5MzA0NjcwQkQwMDAwMkRFOUY4NEYwNDQ2MDA2OEQ2DQo6MTBBMDgwMDAwMUYwNDJGOTAwMDQwOUQ1REZGODU0QTRERkY4NTRCNDE0DQo6MTBBMDkwMDAyMDY4QjBGODQ0MzAxQTA0MDBGMUNCODAyMDY4MDFGMDQ5DQo6MTBBMEEwMDAzM0Y5NDEwNTBGRDUyMjY4QjJGODQ0MzAyM0Y0ODA2M0I4DQo6MTBBMEIwMDAxQjA0MUIwQzIwNDZBMkY4NDQzMDAxRjA4QUZBMDAyMTUwDQo6MTBBMEMwMDAyMDQ2RkZGNzM4RkYyMDY4MDFGMDFFRjk0MzA0MDhENTQ5DQo6MTBBMEQwMDAyMjY4QjJGODQ0MzAyM0Y0ODA0MzFCMDQxQjBDQTJGODFFDQo6MTBBMEUwMDA0NDMwMjA2ODAxRjAxMEY5ODcwNDA4RDUyMjY4QjJGOERFDQo6MTBBMEYwMDA0NDMwMjNGNDAwNTMxQjA0MUIwQ0EyRjg0NDMwMjA2OEE2DQo6MTBBMTAwMDAwMUYwMDJGOUM2MDQyNkQ1MjI2OEIyRjg0MDMwMjNGMEU3DQo6MTBBMTEwMDAwNDAzMUIwNDFCMENBMkY4NDAzMEIyRjg0MDMwMjNGMEJCDQo6MTBBMTIwMDAwODAzMUIwNDFCMENBMkY4NDAzMDk0Rjg2MDM0MDEyQjg4DQo6MTBBMTMwMDAwNUQxMDAyMTg0Rjg2MDE0MjA0NjAwRjA3REZBMjA0NjA1DQo6MTBBMTQwMDAwMUYwNTVGQTIyNjhCMkY4NDQzMDIzRjQ4MDUzMUIwNDFFDQo6MTBBMTUwMDAxQjBDQTJGODQ0MzAyMDY4MDFGMEQ2RjgwNTA1MUJENTg5DQo6MTBBMTYwMDAyMDY4QjBGODQwMzA0M0YwMDgwM0EwRjg0MDMwQjBGODYxDQo6MTBBMTcwMDA0NDMwMjNGNDAwNjMxQjA0MUIwQ0EwRjg0NDMwQjBGOEY3DQo6MTBBMTgwMDA0MDMwNDNGMDA0MDNBMEY4NDAzMDAxRjBCREY4QzAwNEIzDQo6MTBBMTkwMDAwMkQ0MjA0NjAxRjAyQUZBMjA2ODAxRjBCNUY4MDEwNjQxDQo6MTBBMUEwMDAyNkQ1MjM2OEIzRjg0NDIwMjJGMDgwMDIxMjA0MTIwQzUyDQo6MTBBMUIwMDBBM0Y4NDQyMDk0Rjg2MDI0MDAyQTQwRjA4QTgxQjNGODgwDQo6MTBBMUMwMDA0MDIwNDJGMDA0MDJBM0Y4NDAyMEIzRjg0MDIwNDJGMEJGDQo6MTBBMUQwMDAwODAyQTNGODQwMjBCM0Y4NTQzMDlCMDgwMTIxMDNGMDkzDQo6MTBBMUUwMDAzQzAzODRGODYwMTRDNEY4NjQzNDIwNDYwMEYwMjRGQTc4DQo6MTBBMUYwMDAyMDY4MDFGMDg5Rjg4MjA1MEJENTIyNjhCMkY4NDQzMDU2DQo6MTBBMjAwMDAyM0Y0MDA3MzFCMDQxQjBDQTJGODQ0MzAyMDQ2MDFGMDE5DQo6MTBBMjEwMDBEQ0Y5MjA2ODAxRjA3OEY4QzMwNTA4RDUyMjY4QjJGOEE3DQo6MTBBMjIwMDA0NDMwMjNGNDgwNzMxQjA0MUIwQ0EyRjg0NDMwQkRFOEI3DQo6MTBBMjMwMDBGODhGQjBGODQ0MTA4OUIyMTFGMDBGMDc0MEYwQTE4MEY4DQo6MTBBMjQwMDAxMUYwMTAwMTAzODgyN0QxMEFFQTAzMDMwMzgwQjBGODU0DQo6MTBBMjUwMDA1MDIwOTRGODI4MzAwMEYyMDI0MDEwNDRFMjZCMzBGOEFEDQo6MTBBMjYwMDAzMzMwQzNGMzA5MDM2MzY0MTM0NEUzNjMyMDQ2MDFGMDBFDQo6MTBBMjcwMDBBNUY5OTRGODI0MzAwMDJCM0ZGNDBBQUYyMjZDMDAyQTkxDQo6MTBBMjgwMDA3RkY0MDZBRjk0RjgyNDMwMjE2ODQzRjA4MDAzQTFGOEVFDQo6MTBBMjkwMDA0QzMwODRGODI0MjBGQkU2OUJCMjFBMDUxREQ1QjBGODlCDQo6MTBBMkEwMDA1MDEwOTRGODI4MjIwMEYyMDY0MzBCNDQwNEY1ODY2MTBFDQo6MTBBMkIwMDAzM0Y4MzIzMEI0RjgyRTIyQzNGMzA5MDNDNEY4NDQzMjIxDQo6MTBBMkMwMDAwMUYwMDZGOTIyNjgxMzg4MjNGMDcwMDMxQjA1MUIwREFCDQo6MTBBMkQwMDAxMzgwMjA0NjAxRjA1QUY5REFFNjFGMDQ3RkY1RDhBRTY0DQo6MTBBMkUwMDAwMzg4MjNGMDcwMDMxQjA1MUIwRDAzODBCMEY4NTAxMDhBDQo6MTBBMkYwMDA5NEY4MjgyMjAwRjIwNjQzMEI0NDMzRjgzMjMwQzNGM0JCDQo6MTBBMzAwMDAwOTAzQzRGODQ0MzI2M0IxQjRGODJFMjJENEY4M0MxMkU1DQo6MTBBMzEwMDAwMUYwREVGOEQ0RjgzQzMyRDRGODQ0MjIxMzQ0QzRGOEY3DQo6MTBBMzIwMDAzQzMyMDAyMTIwNDYwMUYwMzdGOTIyNjhENEY4MzgzMjU3DQo6MTBBMzMwMDBCMkY4NTAxMDAyRjIwNjQ1ODlCMjUzQjk2QjVBMjNGNEIxDQo6MTBBMzQwMDA0MDYzOUIwNDlCMEM2RkVBNDM0MzZGRUE1MzQzNkI1Mjk5DQo6MTBBMzUwMDAwN0UwM0QyQjEwRDg1ODA4REUwNzQ4QkYwMTMwODAwMkM3DQo6MTBBMzYwMDA2ODUyMTM4ODBCRUEwMzAzODNGNDQwNTM0M0Y0MDA0MzE5DQo6MTBBMzcwMDA0M0YwODAwMzEzODA4QkU2NTg0ODVCMDk0MEVBODMyMzRGDQo6MTBBMzgwMDBFNUU3M0VCMjMwRjgyNjkwMUZGQTg5RjkxOUY0MDA0RjNDDQo6MTBBMzkwMDAzREQwMzBGODI2MzAyM0YwNzAwMzFCMDUxQjBENEZFQTJCDQo6MTBBM0EwMDA0NzE4MjBGODI2MzAwNEVCMDgwMTkxRjgzNDMyMDAyQkNFDQo6MTBBM0IwMDA1M0QxQjBGODUwNTA5MUY4MjgyMjAwRjIwNjQzMkI0NEI0DQo6MTBBM0MwMDAzM0Y4MzI1MEM1RjMwOTA1MzVCMUIxRjgyRTIyRDFGODcyDQo6MTBBM0QwMDAzQzEyMkI0NjAxRjA3Q0Y4MDRFQjQ2MTMwNEVCMDgwMTE5DQo6MTBBM0UwMDBEM0Y4NDQyMjJBNDRDM0Y4NDQyMkQxRjgzQzIyMkE0NDE4DQo6MTBBM0YwMDBDMUY4M0MyMkQzRjg0MDMyMUJCMUQxRjgzODAyODU0MjczDQo6MTBBNDAwMDA1RUQyQTA0NDIwNDY5OEY4MjgxMjAxRjBDNUY4MTlGMDUxDQo6MTBBNDEwMDA4MDBGM0ZGNDNEQUUyMzY4MzNGODI2MjAwQUVBMDIwMjlCDQo6MTBBNDIwMDAyM0Y4MjYyMDA0RUI0NzE3QjNGODUwMTA5N0Y4MjgyMDlDDQo6MTBBNDMwMDAwM0YyMDI0MzBCNDQwNEVCNDYxNjMzRjgzMjIwQzJGMzE2DQo6MTBBNDQwMDAwOTAyNzI2NEZCNkI5N0Y4MjgxMDFBNDRGQTYzMzM2Q0E0DQo6MTBBNDUwMDAyMDQ2REJCQjAxRjBCMkY4MUFFNjkxRjgyODMyMzBGODVBDQo6MTBBNDYwMDAyMzUwREEwMEIwRjg1MDMwNkQwNDAzNDQxMzQ0MURENTc2DQo6MTBBNDcwMDBCM0Y4MDI1NEM1RjMwOTA1MzVCMUIxRjgzMDIyMkI0NkMzDQo6MTBBNDgwMDBEMUY4M0MxMjAxRjAyNEY4MDRFQjA4MDMyMjY4OTNGODk5DQo6MTBBNDkwMDAyODEyMzJGODIxMzAyM0Y0RTA0MzIzRjA3MDAzNDNGNDEwDQo6MTBBNEEwMDAwMDQzNDNGMEMwMDMyMkY4MjEzMDk1RTdCM0Y4MDY1NDg3DQo6MTBBNEIwMDBDNUYzMDkwNTAwMkRFN0QwMkI0NkIxRjgzMjIyREZFN0JFDQo6MTBBNEMwMDA5MUY4MjgxMjIwNDZGRkY3QTZGREEwRTdGRkY3QkNGRDk0DQo6MTBBNEQwMDBERUU1MjA0NjAxRjA4QUY4OEFFNjAwQkYwMDgwRkZGRjMzDQo6MTBBNEUwMDAwRjhGRkZGRjhGQkZGRkZGMzhCNTQzNjgwMUYwMEYwNUU3DQo6MTBBNEYwMDA5RDQyMDQ0NjJERDgxMUYwODAwRjRGRjAyMDAzMUVEMDRFDQo6MTBBNTAwMDAwMEVCNDUxMjAzRkIwNTAzMDEyMTI4MzM4MkY4MjkxMEQzDQo6MTBBNTEwMDAwMTIyOUE3MDFENzA5NEY4MjgxNDkxNDIxQkQwODRGODdGDQo6MTBBNTIwMDAyODI0MTk0NjIwNjgwMEYwN0ZGRTI1QjkwNEY1ODY2MUNEDQo6MTBBNTMwMDAyMDY4MDBGMEVDRkUwMDIwODRGODI4MDQzOEJEMDNGQkZFDQo6MTBBNTQwMDAwMTAzMDBFQjQxMTEwMDIyMDNGNTBBNzM4MUY4MjkyMjZGDQo6MTBBNTUwMDBERUU3MDEyMEYyRTcwMjIwRjBFNzM4QjUwNDQ2MDFGMDFCDQo6MTBBNTYwMDAwRjAwNjM2ODk4NDIyNEQ4NDMwMTExRjA4MDBGMUE0NjA3DQo6MTBBNTcwMDAxN0QwMjI0NDAzRjEyODAxMDEyMzIxNDQ4MkY4MjkzMDE1DQo6MTBBNTgwMDAwMDI1OEQ3MDA4NzA5NEY4MjgzNDAxMkIxM0QwMDEyMzE2DQo6MTBBNTkwMDA4NEY4MjgzNDIwNjgwMEYwNjNGRTg0RjgyODU0Mjg0NkE0DQo6MTBBNUEwMDAzOEJEMjI0NDAzRjUwQTcxMDAyMzIxNDQ4MkY4MjkzMjgwDQo6MTBBNUIwMDBFNkU3MDEyMEY0RTcwMjIwRjJFNzExRjA4MDBGMUJCRjZEDQo6MTBBNUMwMDAwMUYwMEYwMTAwRUI0MTEwMDBFQjQxMTAyODMwMDhCRkYzDQo6MTBBNUQwMDAwMEY1MEE3MDk5QjIxQUI5MDI3M0MxODAwMDIwNzA0NzYxDQo6MTBBNUUwMDAwMTIyMUIwQzAyNzMwMTgxNDM4MUY3RTcwMzY4MDEyMkZBDQo6MTBBNUYwMDBDMEY4NkMyNEIzRjg1ODIwNDJGMDAxMDJBM0Y4NTgyMEE4DQo6MTBBNjAwMDBCM0Y4NTgyMDQyRjAwMjAyQTNGODU4MjAwMDIwNzA0NzA3DQo6MTBBNjEwMDAwMzY4MDI0NjAxMjFDMEY4NjgxNDAwMjA4MkY4NjAwNDMzDQo6MTBBNjIwMDBCM0Y4NTQyMDBBNDNBM0Y4NTQyMEIzRjg1NDIwNDJGMDVFDQo6MTBBNjMwMDAwMjAyQTNGODU0MjA3MDQ3NzA0NzJERTlGMDRGMEE2OEQyDQo6MTBBNjQwMDA5MkZBQTJGNDRENjhCNEZBODRGNDA1RjFGRjNDNEZGMDlEDQo6MTBBNjUwMDAwMTA4MDMyNjRGRjAwRjBFMzJGQTA0RjMwQ0QxQkNGMUJGDQo6MTBBNjYwMDAwMTBGMDZEODQzNjhDOTY4MjNFQTAyMDM0QTQzMUE0MzI0DQo6MTBBNjcwMDA0MjYwMDEyMEJERThGMDhGMDhGQTA0RjMxMzQwNjJEMDc1DQo6MTBBNjgwMDBEMEY4MDBBMDkzRkFBM0Y5QjlGQTg5Rjk5M0ZBQTNGN0REDQo6MTBBNjkwMDBCN0ZBODdGNzRGRUE0OTA5MDZGQTA5Rjk3RjAwMkFFQTZCDQo6MTBBNkEwMDAwOTA5MDVGQTA3Rjc0OUVBMDcwN0JDRjEwMTBGMDc2MDM2DQo6MTBBNkIwMDAxNkQ4ODc2ODkzRkFBM0Y5QjlGQTg5Rjk5M0ZBQTNGQTM1DQo6MTBBNkMwMDA0RkVBNDkwOTA2RkEwOUY5MjdFQTA5MDlCQUZBOEFGQUEyDQo6MTBBNkQwMDA4RjY4NEZFQTRBMEEwN0ZBMEFGNzQ5RUEwNzA3ODc2MENDDQo6MTBBNkUwMDBDNzY4OTNGQUEzRjlCOUZBODlGOTkzRkFBM0ZBNEZFQTdBDQo6MTBBNkYwMDA0OTA5MDZGQTA5RjkyN0VBMDkwOUJBRkE4QUZBMEY2OTMzDQo6MTBBNzAwMDA0RkVBNEEwQTA3RkEwQUY3NDlFQTA3MDcwMjJEQzc2MDIzDQo6MTBBNzEwMDAxOUQxRkYyQkQxRjgxNDkwMTdEOEQwRjgyMEEwOTNGQUI0DQo6MTBBNzIwMDBBM0ZCQkJGQThCRkI5M0ZBQTNGN0I3RkE4N0Y3NEZFQUMxDQo6MTBBNzMwMDA4QjAzMEVGQTAzRjNCRjAwMkFFQTAzMDMwOUZBMDdGOUIxDQo6MTBBNzQwMDA0M0VBMDkwMzAzNjIwMTM0ODZFNzQ3NkExQjBBOTNGQTY2DQo6MTBBNzUwMDBBM0ZBQkFGQThBRkE5M0ZBQTNGM0IzRkE4M0YzNEZFQUE1DQo6MTBBNzYwMDA4QTBBMEVGQTBBRkE5QjAwMjdFQTBBMDcwOUZBMDNGOThEDQo6MTBBNzcwMDA0N0VBMDkwNzQ3NjJFNkU3MDI0QjE4NjhDMEYzODAyMDAyDQo6MTBBNzgwMDA3MDQ3MDBCRjAwMTAwMjQwMDI0QkQzRjg5MDAwQzBGM0E2DQo6MTBBNzkwMDA0MDAwNzA0NzAwMTAwMjQwMDI0QjE4NjhDMEYzQzAwMDMwDQo6MTBBN0EwMDA3MDQ3MDBCRjAwMTAwMjQwMDM0QjA0NEE5QjY4QzNGMzhDDQo6MTBBN0IwMDAwMzEzRDM1Q0Q4NDA3MDQ3MDAxMDAyNDBBN0E3MDEwOERDDQo6MTBBN0MwMDAwMzRCMDQ0QTlCNjhDM0YzMDIyM0QzNUNEODQwNzA0NzExDQo6MTBBN0QwMDAwMDEwMDI0MEI3QTcwMTA4MDM0QjA0NEE5QjY4QzNGMzZCDQo6MTBBN0UwMDBDMjIzRDM1Q0Q4NDA3MDQ3MDAxMDAyNDBCN0E3MDEwOENEDQo6MTBBN0YwMDAxRTRBRDM2ODAzRjAwMzAzMDIyQjEwQjUzNEQwMDMyQjk5DQo6MTBBODAwMDAwQkQwMUI0OUZGRjdDOEZGMDQ0NkYwQjlGRkY3QzRGRkEwDQo6MTBBODEwMDBCMEIxMTM2ODUxRjgyNDAwMDBFMDE2NDhENDY4RDE2ODNDDQo6MTBBODIwMDBEMzY4QzRGMzAyMTJDM0YzNDE2MzAxMzIwMTMzQjBGQkI2DQo6MTBBODMwMDBGMkYwQzFGMzA2MjI1MDQzNUIwMEIwRkJGM0YwMTBCRDExDQo6MTBBODQwMDBEMkY4OTQ0MEM0RjMwMzI0RTRFN0ZGRjdBNUZGMjhCMTRFDQo6MTBBODUwMDAxMzY4QzNGMzAzMTM1MUY4MjMwMERGRTdEMkY4OTQzMEYxDQo6MTBBODYwMDAxQjA5MDNGMEYwMDNGNkU3MDM0OEQ3RTcwMDEwMDI0MEE2DQo6MTBBODcwMDBDMEE3MDEwODAwMTI3QTAwMDAyNEY0MDAxQjRBOTM2ODY0DQo6MTBBODgwMDAwM0YwMEMwMzEwQjUwQzJCMEVEOERGRTgwM0YwMEQwRDEwDQo6MTBBODkwMDAwRDBEMkQwRDBEMEQwNzBEMEQwRDA5MDAxNDQ4MTBCREVBDQo6MTBBOEEwMDBCREU4MTA0MEZGRjdBNEJGRkZGNzc2RkYxMTRDMDE0NjRCDQo6MTBBOEIwMDA1OEI5RkZGNzcxRkYxOEIxMTM2ODU0RjgyMTAwRUVFNzlCDQo6MTBBOEMwMDBEMkY4OTQxMEMxRjMwMzIxRjdFN0ZGRjc2NUZGMjhCMTMxDQo6MTBBOEQwMDAxMzY4QzNGMzAzMTM1NEY4MjMwMEUwRTdEMkY4OTQzMDZEDQo6MTBBOEUwMDAxQjA5MDNGMEYwMDNGNkU3MDM0OEQ4RTcwMDEwMDI0MDI1DQo6MTBBOEYwMDAwMDEyN0EwMEMwQTcwMTA4MDAyNEY0MDAwMzI4MDhCNTVDDQo6MTBBOTAwMDAyOEQxMkU0QjJFNEFEM0Y4ODgzMDAzRjAwMzAzNDNGNEFBDQo6MTBBOTEwMDA0MDMzOTM0MjA5RDBCM0YxMDMxRjBDRDAwMTNBOTM0MjY0DQo6MTBBOTIwMDAxMEQxQkRFODA4NDBGRkY3QTlCRkZGRjcyNUZGMDAyOEI5DQo6MTBBOTMwMDA0MkQxMDAyMDQxRTBGRkY3MjdGRjAwMjhGOUQwNEZGNDczDQo6MTBBOTQwMDAwMDQwM0FFMEZGRjc5QUZGRkZGNzJFRkZCREU4MDg0MDBFDQo6MTBBOTUwMDBGRkY3NDJCRjBDMjhFQ0QxMTg0QkQzRjg4ODMwMDNGMDM2DQo6MTBBOTYwMDAwQzAzNDNGNDQwMjNBM0Y1NDAyMzBDMkJFMUQ4MDFBMkIwDQo6MTBBOTcwMDA1MkY4MjNGMEE5QTkwMDA4MzNBOTAwMDgzM0E5MDAwODU4DQo6MTBBOTgwMDAzM0E5MDAwODIzQTkwMDA4MzNBOTAwMDgzM0E5MDAwODQ3DQo6MTBBOTkwMDAzM0E5MDAwODJCQTkwMDA4MzNBOTAwMDgzM0E5MDAwODJGDQo6MTBBOUEwMDAzM0E5MDAwODM3QTkwMDA4RkZGNzY4RkZGRkY3RkNGRThFDQo6MTBBOUIwMDBCREU4MDg0MEZGRjcwNEJGMDI0ODA4QkQwMDEwMDI0MDkwDQo6MTBBOUMwMDAwMjAwMDMwMDAwMjRGNDAwMUE0QTAzNjg5MDQyMTBCNTA0DQo6MTBBOUQwMDAwMkQwQjBGMTgwNEYwOUQxNEM2ODIzRjA3MDAzOTA0MjRGDQo6MTBBOUUwMDA0M0VBMDQwMzA5RDBCMEYxODA0RjA2RDAxMjRBOTA0MkU2DQo6MTBBOUYwMDAwM0QwMDJGNTgwNjI5MDQyMDNEMUNBNjgyM0Y0NDA3MzA5DQo6MTBBQTAwMDAxMzQzMDM2MDhCNjhDMzYyMEI4ODgzNjIwOTRCOTg0MkNGDQo6MTBBQTEwMDAwN0QwMDNGNUEwNTM5ODQyMDNEMDAzRjU4MDYzOTg0MjEyDQo6MTBBQTIwMDAwMUQxMEI3QzAzNjM0MzY5NDNGMDAxMDM0MzYxMDEyMEJGDQo6MTBBQTMwMDAxMEJEMDBCRjAwMkMwMTQwMDA0MDAxNDBCMUY1ODA3RkY3DQo6MTBBQTQwMDAzMEI1MDBGMEI1ODAwNUQ4MDEyOTNCRDAxMDI5NzNEMDZFDQo6MTBBQTUwMDAwMDIwNzBFMEIxRjU4MDNGMDBGMEU1ODBCMUY1ODAxRjg3DQo6MTBBQTYwMDAwMEYwMEQ4MUIxRjU4MDVGRjJEMTAzNkExNTY4MjNGNDFGDQo6MTBBQTcwMDA4MDUzMDM2MjAzNkE0NDY4QzE2OTIxRjA4MDcxMjFGNDQ0DQo6MTBBQTgwMDBFNjQxNDFFQTA1MjExNTY5MjNGNDAwNTM0M0VBMDUzMzAxDQo6MTBBQTkwMDA1NTY4MjNGNDgwNTM0M0VBMDUzMzhGNERBODQyMDdEMDBEDQo6MTBBQUEwMDAwNUY1QTA1NUE4NDIwM0QwMDVGNTgwNjVBODQyMDREMTVDDQo6MTBBQUIwMDA5NTY5MjRGNDgwNDQ0NEVBODUxNEQyNjg0NDYwQzE2MUY1DQo6MTBBQUMwMDAwMjY0MzZFMDAzNkExNTY4MjNGMDAxMDMwMzYyMDM2QTM3DQo6MTBBQUQwMDA0MTY4ODQ2OTI0RjQ4MDM0MjRGMDczMDQyQzQzMTU2OTlDDQo6MTBBQUUwMDAyM0YwMDIwMzJCNDM1NTY4MjNGMDAxMDMyQjQzN0E0REQ3DQo6MTBBQUYwMDBBODQyMDdEMDA1RjVBMDU1QTg0MjAzRDAwNUY1ODA2NTBBDQo6MTBBQjAwMDBBODQyMTJEMTU1NjkyM0YwMDgwMzQzRUE4NTAzOTU2OEVBDQo6MTBBQjEwMDAyM0YwMDQwMzQzRUE4NTAzOTU2OTIxRjQ4MDcxMjk0M0Y2DQo6MTBBQjIwMDBENTY5MjFGNDAwNzE0MUVBNDUwMUQyNjg0MTYwODQ2MTMwDQo6MTBBQjMwMDA0MjYzMDM2MjAxMjAzMEJEMDM2QTE1NjgyM0YwMTAwM0VEDQo6MTBBQjQwMDAwMzYyMDM2QTQxNjg4NDY5MjRGMDgwNzQyNEY0RTY0NDUzDQo6MTBBQjUwMDA0NEVBMDUyNDE1NjkyM0YwMjAwMzQzRUEwNTEzNTU2OEU4DQo6MTBBQjYwMDAyM0YwMTAwMzQzRUEwNTEzNUI0REE4NDIwN0QwMDVGNTE3DQo6MTBBQjcwMDBBMDU1QTg0MjAzRDAwNUY1ODA2NUE4NDIxM0QxNTU2OUI4DQo6MTBBQjgwMDAyM0YwODAwMzQzRUE4NTEzOTU2ODIzRjA0MDAzNDNFQUVBDQo6MTBBQjkwMDA4NTEzOTU2OTIxRjQ4MDYxNDFFQTg1MDFENTY5MjFGNDI1DQo6MTBBQkEwMDAwMDYxNDFFQUM1MDFEMjY4NDE2MDg0NjE4MjYzQzBFNzA3DQo6MTBBQkIwMDAwMzZBMTU2ODIzRjQ4MDczMDM2MjAzNkE0MTY4QzQ2OUY5DQo6MTBBQkMwMDAyNEY0ODAzNDI0RjA3MzA0MkM0MzE1NjkyM0Y0MDA3M0I3DQo6MTBBQkQwMDA0M0VBMDUyMzU1NjgyM0Y0ODA3MzQzRUEwNTIzM0U0RDc5DQo6MTBBQkUwMDBBODQyMDdEMDA1RjVBMDU1QTg0MjAzRDAwNUY1ODA2NTE5DQo6MTBBQkYwMDBBODQyMTNEMTU1NjkyM0Y0MDA2MzQzRUE4NTIzOTU2ODdEDQo6MTBBQzAwMDAyM0Y0ODA2MzQzRUE4NTIzOTU2OTIxRjQ4MDUxNDFFQTY2DQo6MTBBQzEwMDAwNTExRDU2OTIxRjQwMDUxNDFFQTQ1MTFEMjY4NDE2MDFFDQo6MTBBQzIwMDBDNDYxQzI2Mzg1RTcwMzZBMTQ2ODIzRjQ4MDMzMDM2MjU2DQo6MTBBQzMwMDAwMzZBNDE2RDIxRjQ4MDMxMjFGMDcwMDEwQzQzMTE2OUU4DQo6MTBBQzQwMDAyM0Y0MDAzMzQzRUEwMTQzNTE2ODIzRjQ4MDMzNDNFQTk5DQo6MTBBQzUwMDAwMTQzMjE0OTg4NDIwN0QwMDFGNUEwNTE4ODQyMDNEMDIxDQo6MTBBQzYwMDAwMUY1ODA2MTg4NDIwNkQxNDE2ODk1NjkyMUY0ODAzMUZGDQo6MTBBQzcwMDA0MUVBMDUyMTQxNjBEMjY4NDQ2NTgyNjU1OUU3MDM2QTZCDQo6MTBBQzgwMDAxNDY4MjNGNDgwMTMwMzYyMDM2QTQxNkQyMUYwODA3MTFDDQo6MTBBQzkwMDAyMUY0RTA0MTQxRUEwNDI0MTE2OTIzRjQwMDEzNDNFQTVBDQo6MTBBQ0EwMDAwMTUzNTE2ODIzRjQ4MDEzNDNFQTAxNTMwQTQ5ODg0MjRGDQo6MTBBQ0IwMDAwN0QwMDFGNUEwNTE4ODQyMDNEMDAxRjU4MDYxODg0Mjk4DQo6MTBBQ0MwMDAwNkQxNDE2ODk1NjkyMUY0ODAyMTQxRUE4NTIxNDE2MERFDQo6MTBBQ0QwMDBEMjY4NDQ2NUMyNjUyQ0U3MDAyQzAxNDAzOEI1MDM2ODkyDQo6MTBBQ0UwMDBEQjA3MDQ0NjBENDYwMUQ1MDAyMDM4QkRFQTY4NkI2OEQ1DQo6MTBBQ0YwMDAwMTY4MTM0MzJBNjkxMzQzQUE2OTEzNDMxQjRBMEE0MDk0DQo6MTBBRDAwMDAxMzQzMDM2MDQzNjhBQTY4MjNGNDQwNTMxMzQzNDM2MDJBDQo6MTBBRDEwMDA4MzY4NkE2OTIzRjQ0MDczMTM0MzgzNjAxNDRCOTg0MjM5DQo6MTBBRDIwMDAxQUQxMDMyMEZGRjdFQUZEMDAyOERERDAyQTY4MDAyQUE3DQo6MTBBRDMwMDBEQUQwQTk2OUIxRjUwMDRGNEZFQTUyMDMxMUQxMDNFQjA0DQo6MTBBRDQwMDA0MDAzQjNGQkYyRjM0RkY2RjA3MjFBNDBDM0YzNDIwMzMxDQo6MTBBRDUwMDAxMzQzRTM2MDAxMjBDOEU3MDY0Qjk4NDJDNEQxMEMyMDlFDQo6MTBBRDYwMDBFMEU3MDM0NEIzRkJGMkYzOUJCMkYyRTdGMzY5RkZFRkQyDQo6MTBBRDcwMDAwMDM4MDE0MDAwNDQwMDQwODRCMDAxQTg4MEU4MEUwMDgzDQo6MTBBRDgwMDAwNEIwMDAyMDcwNDdCMEY4NDAzMDQzRjQzRjQzNDNGMDM0DQo6MTBBRDkwMDA4MDAzQTBGODQwMzAwMDIwNzA0N0IwRjg0MDMwMjNGNDIyDQo6MTBBREEwMDA3RTUzNUIwNDVCMENBMEY4NDAzMDAwMjA3MDQ3MDAyMDBEDQo6MTBBREIwMDA3MDQ3ODRCMDEwQjUwM0FDODRFODBFMDAwMDIyMDEyMzc0DQo6MTBBREMwMDBBMEY4NDAzMEJERTgxMDQwQTBGODQwMjBBMEY4NDQyMDkyDQo6MTBBREQwMDBBMEY4NTAyMEIwRjg0MDMwNDNGNDNGNDM0M0YwODAwM0U0DQo6MTBBREUwMDBBMEY4NDAzMDA0QjAxMDQ2NzA0NzAwMDBGMEI1MEM3ODcxDQo6MTBBREYwMDAzMEY4MjQyMDAzNDZDODc4MjJGNEVDNDIyMkYwNzAwMjk2DQo6MTBBRTAwMDAwMzI4MDNEOERGRTgwMEYwNDM0QTQ1NDcwMTIwMjNGODMwDQo6MTBBRTEwMDAyNDIwMEU3ODlFNEMzNUIyMzNGODI1MjAyMjQwMzI0MzUwDQo6MTBBRTIwMDA0MkY0MDA0MjQyRjA4MDAyMjNGODI1MjAwRDdCMEE3ODhDDQo6MTBBRTMwMDAwMDJEN0VEMUNFODg0Rjc4NzYwODA4MjU3NjAwMTVGQjQ4DQo6MTBBRTQwMDAwMjMyNzdCM0IzRjg1MDUwMkE0NEEyRjgwMDY0MEQ3ODY4DQo6MTBBRTUwMDAzM0Y4MjUyMDU2MDYwOEQ1MzNGODI1MjAxNDQwNDRGNDREDQo6MTBBRTYwMDAwMDQ0NDRGMEMwMDQyM0Y4MjU0MENBNzgwQzc4MDEyQTM1DQo6MTBBRTcwMDAzM0Y4MjQxMDg3NEEwMkVBMDEwMjE4QkY4MkYwMjAwMjQ4DQo6MTBBRTgwMDA0MkY0MDA0MjQyRjA4MDAyMjNGODI0MjBGMEJENDJGNDU0DQo6MTBBRTkwMDAwMDcyMDAyMEJCRTc0MkY0QzA2MkZBRTc0MkY0ODA2MjJEDQo6MTBBRUEwMDBGN0U3QjNGODUwNDAyMjQ0MEM2OUEyRjgwNDY0MEE3ODJBDQo6MTBBRUIwMDBCM0Y4NTA2MDE1RkIwMjMyQjZCMjAyRjIwNjQyNTRCOTQyDQo6MTBBRUMwMDA5NDVCMjRGNDQwNjRBNDA0QTQwQzZGRUE0NDQ0NkZFQTQ1DQo6MTBBRUQwMDA1NDQ0OTQ1MzA3RTAzRDJDMjZEODY1MDhFNDA3NDhCRjQ2DQo6MTBBRUUwMDAwMTM1QUQwMjk1NTMwQzc4MzNGODI0MjA1MjA0MEJENTZDDQo6MTBBRUYwMDAzM0Y4MjQyMDIyRjBGMDAyMTIwNTEyMEQ0MkY0NDA0MkYxDQo6MTBBRjAwMDA0MkYwODAwMjIzRjgyNDIwMDk3ODMzRjgyMTIwMjJGNDJCDQo6MTBBRjEwMDA4MDQyMjJGMDcwMDI4MkY0NDA1MjQyRjQwMDQyNDJGMDM5DQo6MTBBRjIwMDA4MDAyMjNGODIxMjBCMUU3NUI0RDY0MDk0NUVBODQyNEJGDQo6MTBBRjMwMDBDRkU3MTJCMjMzRjgyMjUwMjU0MDQ1RjQwMTQ1NDVGMEUxDQo6MTBBRjQwMDA4MDA1MjNGODIyNTAwRDc4QjNGODUwNjAwODIyMTJGQkQ4DQo6MTBBRjUwMDAwNTM1MzU0NDBFODkyNkYwMDEwNkE1RjgwMDY0MEU3ODAzDQo6MTBBRjYwMDBCM0Y4NTA1MDEyRkIwNjMyMkE0NDREODkyNUYwMDEwNUYyDQo6MTBBRjcwMDBBMkY4MDQ1NDBBNzg0RDc4MTJCMjAwMkQ0M0QxMzNGODY4DQo6MTBBRjgwMDAyMjUwNkYwNDA4RDUzM0Y4MjI1MDJDNDA0NEY0NDA0NDNBDQo6MTBBRjkwMDA0NEYwODAwNDIzRjgyMjQwMEM3ODMzRjgyNDIwNTYwNjJEDQo6MTBBRkEwMDAwQkQ1MzNGODI0MjAyMkYwRjAwMjEyMDUxMjBENDJGNEUyDQo6MTBBRkIwMDAwMDQyNDJGMEMwMDIyM0Y4MjQyMDBDNzgzM0Y4MjQyMDA5DQo6MTBBRkMwMDAyMkYwRjAwMjEyMDUxMjBENDJGNDAwNDI0MkYwQzAwMkRCDQo6MTBBRkQwMDAyM0Y4MjQyMDBENzgzM0Y4MjUyMDIyRjQ4MDQyMjJGMDMzDQo6MTBBRkUwMDA3MDAyNDhGMjgwMDQ4MkY0NDA1MjIyNDMyM0Y4MjUyMDY0DQo6MTBBRkYwMDAwOTc4MzNGODIxMjAyMkY0RTA0MjIyRjA0MDAyMTQ0MzgxDQo6MTBCMDAwMDAyM0Y4MjE0MDQyRTczM0Y4MjI1MDZEMDQwOEQ1MzNGODg1DQo6MTBCMDEwMDAyMjUwMkM0MDQ0RjQ0MDQ0NDRGMDgwMDQyM0Y4MjI0MDYxDQo6MTBCMDIwMDAwQzc4MzNGODI0MjA1MjA2MEJENTMzRjgyNDIwMjJGMDc0DQo6MTBCMDMwMDBGMDAyMTIwNTEyMEQ0MkY0MDA0MjQyRjBDMDAyMjNGODYxDQo6MTBCMDQwMDAyNDIwMEM3ODMzRjgyNDIwMjJGMEYwMDIxMjA1MTIwRDhGDQo6MTBCMDUwMDA0MkY0NDA0MjQyRjA4MDAyMjNGODI0MjAwQzc4Q0E3ODVGDQo6MTBCMDYwMDAyNEIyMDEyQTMzRjgyNDUwMEE0QTAyRUEwNTAyMThCRjIyDQo6MTBCMDcwMDA4MkYwMjAwMjQyRjQwMDQyNDJGMDgwMDIyM0Y4MjQyMEIxDQo6MTBCMDgwMDAwOTc4MzNGODIxMjAyMkYwRjAwMjkyMDQ5MjBDNDRFNzcwDQo6MTBCMDkwMDA4RjhGRkZGRkJGOEZGRkZGMDA4MEZGRkYxMEI1MEM3QjdFDQo6MTBCMEEwMDA0QTc4MEI3OEJDQkJGMkIxMzBGODIzMjA1MjA2MEJENTlFDQo6MTBCMEIwMDAzMEY4MjMyMDIyRjBGMDAyMTIwNTEyMEQ0MkY0MDA0MjczDQo6MTBCMEMwMDA0MkYwQzAwMjIwRjgyMzIwMEE3ODMwRjgyMjMwMjNGMDIyDQo6MTBCMEQwMDBDMDAzMUIwNTFCMEQ0M0Y0MDA0MzQzRjA4MDAzMjBGODFEDQo6MTBCMEUwMDAyMjMwMDAyMDEwQkQzMEY4MjMyMDU0MDQwQkQ1MzBGODU2DQo6MTBCMEYwMDAyMzIwMjJGMEYwMDIxMjA1MTIwRDQyRjQ0MDQyNDJGMEU5DQo6MTBCMTAwMDA4MDAyMjBGODIzMjAwQTc4MzBGODIyMzAyM0YwRjAwMzYwDQo6MTBCMTEwMDA5QjA0OUIwQ0RGRTcwMDJBNDREMTMwRjgyMzIwNTIwNDIzDQo6MTBCMTIwMDAwQkQ1MzBGODIzMjAyMkYwRjAwMjEyMDUxMjBENDJGNDY0DQo6MTBCMTMwMDA0MDQyNDJGMDgwMDIyMEY4MjMyMDBBNzgzMEY4MjIzMDgyDQo6MTBCMTQwMDA1QzA2MEJENTMwRjgyMjMwMjNGMEYwMDMxQjA1MUIwREY1DQo6MTBCMTUwMDA0M0Y0MDA0MzQzRjBDMDAzMjBGODIyMzAwQTc4MzBGODZCDQo6MTBCMTYwMDAyMjMwMjNGMEYwMDMxQjA1MUIwRDQzRjQwMDQzNDNGMDkyDQo6MTBCMTcwMDBDMDAzMjBGODIyMzAwQzc4MzBGODI0MzAyM0Y0ODA0M0M4DQo6MTBCMTgwMDAyM0YwNzAwMzQ4RjI4MDAyMTM0MzIwRjgyNDMwMDk3ODNBDQo6MTBCMTkwMDAzMEY4MjEzMDIzRjRFMDQzMjNGMDQwMDMxQTQzMjBGODMxDQo6MTBCMUEwMDAyMTIwOUVFNzMwRjgyMzIwNTIwNDBCRDUzMEY4MjMyMENEDQo6MTBCMUIwMDAyMkYwRjAwMjEyMDUxMjBENDJGNDQwNDI0MkYwODAwMkU5DQo6MTBCMUMwMDAyMEY4MjMyMDBBNzgzMEY4MjIzMDVCMDYwQkQ1MzBGOEJGDQo6MTBCMUQwMDAyMjMwMjNGMEYwMDMxQjA1MUIwRDQzRjQwMDQzNDNGMDIyDQo6MTBCMUUwMDBDMDAzMjBGODIyMzAwQTc4MzBGODIyMzAyM0YwRjAwMzMwDQo6MTBCMUYwMDAxQjA1MUIwRDQzRjQ0MDQzNDNGMDgwMDMyMEY4MjIzMDJEDQo6MTBCMjAwMDAwQzc4MzBGODI0MzAyM0Y0RTA0MzIzRjA0MDAzNDhGMjc0DQo6MTBCMjEwMDA4MDAyMTM0MzIwRjgyNDMwMDk3ODMwRjgyMTMwMjNGNEQ5DQo6MTBCMjIwMDA4MDQzMjNGMDcwMDNCOUU3NEI3ODBBNzg3QkIxMzBGODlDDQo6MTBCMjMwMDAyMjMwMjNGNEUwNDMyM0YwNDAwMzgzRjAxMDAzNDNGNDZGDQo6MTBCMjQwMDAwMDQzNDNGMDgwMDMyMEY4MjIzMDAwMjA3MDQ3MzBGODlDDQo6MTBCMjUwMDAyMjMwMjNGNDgwNDMyM0YwNzAwMzgzRjQ4MDUzRUVFNzFEDQo6MTBCMjYwMDA0Qjc4MEE3ODAzQjMzMEY4MjIzMDVCMDYwQkQ1MzBGODAwDQo6MTBCMjcwMDAyMjMwMjNGMEYwMDMxQjA1MUIwRDQzRjQwMDQzNDNGMDgxDQo6MTBCMjgwMDBDMDAzMjBGODIyMzAwQTc4MzBGODIyMzAyM0Y0RTA0MzVCDQo6MTBCMjkwMDAyM0YwNDAwMzgzRjAzMDAzNDNGNDAwNDM0M0YwODAwMzgyDQo6MTBCMkEwMDAyMEY4MjIzMDAwMjA3MDQ3MzBGODIyMzA1QjA0MEJENUE0DQo6MTBCMkIwMDAzMEY4MjIzMDIzRjBGMDAzMUIwNTFCMEQ0M0Y0NDA0MzBDDQo6MTBCMkMwMDA0M0YwODAwMzIwRjgyMjMwMEE3ODMwRjgyMjMwMjNGNDRCDQo6MTBCMkQwMDA4MDQzMjNGMDcwMDM4M0Y0NDA1M0RERTcxMUI5ODAyM0VBDQo6MTBCMkUwMDBBMEY4NEMzMDAwMjA3MDQ3QjBGODU4MzA0M0Y0MDA0M0M5DQo6MTBCMkYwMDBBMEY4NTgzMDAwMjA3MDQ3QjBGODU4MzBDM0YzMEUwMzYwDQo6MTBCMzAwMDBBMEY4NTgzMDAwMjA3MDQ3QjBGODQ0MDA3MDQ3MDAyMDgzDQo6MTBCMzEwMDA3MDQ3MDJGNTgwNjIwMTMzMDI0NDVCMDgwMUVCNDMwMzhFDQo6MTBCMzIwMDA1MjFBOTk0MjAwRDE3MDQ3MDg4ODUwNTIwMjMxRjhFNzBBDQo6MTBCMzMwMDBGOEI1MDQ0NjQ4Nzg4QTY5MEU2OTBGN0IwMTI4MEQ0NkU2DQo6MTBCMzQwMDA1QkQxQjI0MjhEQkY5MjFCMDAyMzE2NDY4QTYxOThCRjIzDQo6MTBCMzUwMDA4QjYxQjZCMjQ5NjlFRkI5MzM0NkVBODgyMDQ2RkZGN0Y4DQo6MTBCMzYwMDBEOEZGQjRGODUwMTAyQTc4MDRGMjAyNDMwQjQ0MjNGOEIzDQo6MTBCMzcwMDAzMjYwMkE3ODM0RjgyMjMwMjNGNEUwNDMyM0YwNDAwMzhCDQo6MTBCMzgwMDA4M0YwMzAwMzQzRjQwMDQzNDNGMDgwMDMyNEY4MjIzMDc5DQo6MTBCMzkwMDAwMDIwRjhCRDJCNzgzNEY4MjMwMERBMDBCNEY4NTAzMEUwDQo6MTBCM0EwMDAyMzQ0MTM0NDQ3MDY0QkJGQTNGODA2NjRBM0Y4MDI2NDgyDQo6MTBCM0IwMDA2QTg5MkE4OTMzNDYyMDQ2RkZGN0FCRkY2Qjc4MkE3OEUzDQo6MTBCM0MwMDA2QkI5MTJCMjM0RjgyMjMwMjNGMEYwMDMxQjA1MUIwREM5DQo6MTBCM0QwMDA0M0Y0MDA0MzQzRjBDMDAzMjRGODIyMzBDOUU3MDEyQkIzDQo6MTBCM0UwMDBDN0QxMTJCMjM0RjgyMjMwMjNGMEYwMDMxQjA1MUIwRDM1DQo6MTBCM0YwMDA0M0Y0NDA0MzQzRjA4MDAzRUVFN0IyNDI4QkJGOTIxQjFEDQo6MTBCNDAwMDAwMDIzOEE2MThCNjE5OEJGMTY0NjA5Nzg5N0I5QjRGODEyDQo6MTBCNDEwMDA1MDAwMDRGMjA2NDIwMjQ0MDJFQkMxMDJBRUJCMTM4OEE0DQo6MTBCNDIwMDAyM0Y0NDA2MzlCMDQ5QjBDNkZFQTQzNDM2RkVBNTM0MzRFDQo6MTBCNDMwMDAxMzgwMzJFMDg4QjlCNEY4NTAwMDA0RjIwMjQyMDI0NEFBDQo6MTBCNDQwMDAwMkVCQzEwMkE2QjkxMTg4MjFGNDQwNjE4OTA0ODkwQzdDDQo6MTBCNDUwMDA2RkVBNDE0MTZGRUE1MTQxMTE4MDZBNzgyODc4NUFCQkZFDQo6MTBCNDYwMDBCNEY4NTAxMDA0RjIwNjQyMEE0NDAyRUJDMDAyRDVFN0Q5DQo6MTBCNDcwMDAzRDJFMDVEODcxMDhGMDA3NDhCRjAxMzE4OTAyRUJFNzdFDQo6MTBCNDgwMDAxMjQ4NzEwOTQwRUE4MTIxRTZFNzNEMkUwRkQ4NzEwODg0DQo6MTBCNDkwMDBGMzA3NDhCRjAxMzE4OTAyMTE4MDJBNzgzNEY4MjIzMDNEDQo6MTBCNEEwMDAyM0Y0ODA0MzIzRjA3MDAzODNGNDQwNTM2QUU3MDc0QjhGDQo6MTBCNEIwMDA3MTA5NDNFQTgxMjNCQkU3MDEyQTAxQkZCNEY4NTAyMDk4DQo6MTBCNEMwMDAwNEYyMDY0MTg5MTgyMUY4MzA2MEU2RTcwMDgwRkZGRkFBDQo6MTBCNEQwMDAwMkY1ODA2MkYwQjUxMDQ0NUQwODBDNDYyRTQ2NDcxQTBFDQo6MTBCNEUwMDAzQTE5MDIzNDM2QjlEQjA3NDRCRjMwRjgxNTMwMDFGODk5DQo6MTBCNEYwMDAxNTMwRjBCRDEyODgwNEY4MDIyQzEyMEEwNEY4MDEyQzUxDQo6MTBCNTAwMDAwMTNFRURFNzRGRjQ3QTczQjBGQkYzRjAwMzRCMDAyMkZBDQo6MTBCNTEwMDAwMTM4NTg2MDlBNjAwNTIyMUE2MDcwNDcxMEUwMDBFMDE4DQo6MTBCNTIwMDAwMTRCMTg2MDcwNDcwMEJGMDQwMDAwMjAxNDRBOTM2RDVGDQo6MTBCNTMwMDA0M0YwODA2MzkzNjU4MzY5MDEyQjAxQkZBMkY1ODYzMkQ2DQo6MTBCNTQwMDAxMzY4NDNGNDgwMjMxMzYwMEU0QkRBNjhDMkYzMDIyMkJGDQo6MTBCNTUwMDBDMkYxMDcwMTEzMUQwNDI5MjhCRjA0MjEwNjJCNEZGMDU3DQo6MTBCNTYwMDBGRjMzMDNGQTAxRjM4Q0JGMDMzQTAwMjJEQjQzOTM0MDFEDQo6MTBCNTcwMDAxQjAxMDU0QURCQjI4MkY4NDMzMzA4MjM5MzYwNzA0NzBFDQo6MTBCNTgwMDAwMDEwMDI0MDAwRUQwMEUwMDBFMTAwRTAwMEY1ODY2MUZGDQo6MTBCNTkwMDBEMEY4NzAwNDAwRjBGMEI4MDBFQjQxMTMxMEI1RDNGODA4DQo6MTBCNUEwMDAzQzIyRDBGODcwMDQwQzQ2MDBGMDEzRjkwMTJDMDREMUIxDQo6MTBCNUIwMDAyMDQ2QkRFODEwNDAwMEYwQzdCQzEwQkQwMEVCNDExM0IxDQo6MTBCNUMwMDBEMEY4NzAwNERBNkIwMEYwM0NCOUQwRjg3MDA0MDBGMEU5DQo6MTBCNUQwMDBCRUI5MTBCNTA0NDYwMTIxRDBGODcwMDQwMEYwQjRGOUVBDQo6MTBCNUUwMDBENEY4NzAwNEJERTgxMDQwMDBGMDg3Qjk3MDQ3NzA0Nzg4DQo6MTBCNUYwMDAxRTRBNTM2ODQzRjQ4MDYzMTBCNTUzNjAwNDQ2MUM0QUU2DQo6MTBCNjAwMDAxQzQ4MDgyM0MwRTkwMDIzQzBGODcwNDQwMDIzMDIyMjJDDQo6MTBCNjEwMDBDNEY4OTgwMkMwRTkwMjIzQzBFOTA0MjNDMEU5MDYzMzU0DQo6MTBCNjIwMDAwMzYyRkVGN0ZGRkIxOEIxRjcyMTEzNDhGRUY3NzRGOTI4DQo6MTBCNjMwMDAwMDIyMTE0NjE4MjNENEY4OTgwMkZFRjdCRUZGNTgyM0MzDQo6MTBCNjQwMDAwMDIyODAyMUQ0Rjg5ODAyRkVGN0I3RkY5ODIzMDAyMjQ5DQo6MTBCNjUwMDAwMTIxRDRGODk4MDJGRUY3QjBGRkQ4MjMwMDIyODEyMUZGDQo6MTBCNjYwMDBENEY4OTgwMkZFRjdBOUZGMDAyMDEwQkQwMDcwMDA0MDNBDQo6MTBCNjcwMDAwMDY4MDA0MDIwNUMwMDIwRjBBNzAxMDgwOEI1RDBGODYxDQo6MTBCNjgwMDA5ODAyRkVGNzQzRkMwMDIwMDhCRDEwQjUxQzQ2RDBGODE4DQo6MTBCNjkwMDA5ODAyMTM0NjIyNDZGRUY3NjJGQzAwMjAxMEJEMDhCNTUyDQo6MTBCNkEwMDBEMEY4OTgwMkZFRjc4RUZDMDAyMDA4QkQwOEI1RDBGODRGDQo6MTBCNkIwMDA5ODAyRkVGNzE5RkYwMDIwMDhCRDA4QjVEMEY4OTgwMkRGDQo6MTBCNkMwMDBGRUY3NEJGRjAwMjAwOEJEMEEwNkQwRjg5ODMyNDVCRkIwDQo6MTBCNkQwMDAwMUYwN0YwMTAzRUI0MTEzMDNFQjQxMTM5M0Y4MkEwMEMwDQo6MTBCNkUwMDA1OEJGOTNGODJBMDI3MDQ3MDhCNUQwRjg5ODAyRkVGN0MxDQo6MTBCNkYwMDAyMkZDMDAyMDA4QkQwOEI1RDBGODk4MDJGRUY3QTRGQzkzDQo6MTBCNzAwMDAwMDIwMDhCRDA4QjVEMEY4OTgwMkZFRjc4NEZDMDAyMEEwDQo6MTBCNzEwMDAwOEJEMDhCNTgwQjFEMEY4OEMzMjEzQjEwMDIzQzBGODUxDQo6MTBCNzIwMDA4QzMyMDlCMUMwRjg4ODEyMDEyMzgwRjg3NDMyMDI3MDlCDQo6MTBCNzMwMDBGRkY3NUVGRjAwMjAwOEJEMDIyMEZDRTcxOUIxQzBGODRBDQo6MTBCNzQwMDA4QzEyMDAyMDcwNDcwMjIwNzA0NzA4QjVGRkY3OTZGRjYzDQo6MTBCNzUwMDAwMDIwMDhCRDA4QjVEMEY4OEMzMjBCQjkwMjIwMDhCRDE2DQo6MTBCNzYwMDAxQjY4OTg0NzAwMjhGQUQwRjhFNzA4QjVEMEY4OEMzMjYzDQo6MTBCNzcwMDA1QjY4OTg0NzAwMjAwOEJEMzhCNTA0NDYwMEY1MjA3NTgxDQo6MTBCNzgwMDAyODQ2MDBGMEJGRkEwMTIzOTRGODgwMTJDNEY4NkMzMjA2DQo6MTBCNzkwMDBCNEY4ODYzMkM0Rjg3MDMyMDFGMDFGMDMwMTJCMEVEMENBDQo6MTBCN0EwMDAwN0QzMDIyQjEwRDAwMUYwODAwMTIwNDZGRkY3N0VGRjY3DQo6MTBCN0IwMDAwM0UwMjk0NjIwNDYwMEYwRTFGODAwMjAzOEJEMjk0Njg0DQo6MTBCN0MwMDAyMDQ2MDBGMEYzRjlGOEU3Mjk0NjIwNDYwMEYwMTNGQTg2DQo6MTBCN0QwMDBGM0U3NzBCNTA1NDYxNjQ2MzlCQkQwRjg2QzMyMDMyQjNCDQo6MTBCN0UwMDAxRUQxRDBGODRDMzFEMEY4NTAyMTkzNDIwQkQ5OUIxQTdFDQo6MTBCN0YwMDA5QTQyQzBGODRDMzE4Q0JGOUFCMjkyQjIzMTQ2MDBGMEY2DQo6MTBCODAwMDBEMEZCMDAyMDcwQkREMEY4OEMzMjFCNjkyM0IxOTBGOEJBDQo6MTBCODEwMDA3NDIyMDMyQTAwRDE5ODQ3Mjg0NjAwRjBDQUZCRjBFN0JCDQo6MTBCODIwMDAwNTJCRUVEMUZGRjc0MkZGRUJFN0QwRjg4QzMyOUI2OTk2DQo6MTBCODMwMDAyQkIxOTBGODc0MjIwMzJBMDFEMTk4NDdFMUU3MDIyMDQ2DQo6MTBCODQwMDBFMEU3NzBCNTEzNDYwNDQ2MEU0NjAwMjk0OEQxRDBGODBCDQo6MTBCODUwMDA2QzIyMDIyQTNERDFEMEU5MDg1Mjk1NDIxNEQ5QUExQTg1DQo6MTBCODYwMDAwMjYyMTk0NjkyQjIwMEYwOTRGQjMzNDYxQTQ2MTk0NjFBDQo6MTBCODcwMDAyMDQ2RkZGNzQ3RkY5NEY4NzgzMjAxMkI0RkYwMDAwMDg1DQo6MTBCODgwMDAwMUQxODRGODc4MDI3MEJEQzM2OUIzRkJGMkY1MDJGQjA1DQo6MTBCODkwMDAxNTM1NjVCOTlBNDIwQUQ4RDBGODcwMjI5MzQyMDZEMjdCDQo6MTBCOEEwMDAyQTQ2MDBGMDc2RkJDNEY4NzA1MjJCNDZERUU3RDRGODQ3DQo6MTBCOEIwMDA4QzMyREI2ODJCQjE5NEY4NzQyMjAzMkEwMUQxMjA0NjI0DQo6MTBCOEMwMDA5ODQ3ODAyMTIwNDZGRkY3RjFGRTIwNDYwMEYwN0NGQkUwDQo6MTBCOEQwMDBEMUU3MzJGMDA0MDNDRUQxODAyMUZGRjdFN0ZFQ0FFN0JCDQo6MTBCOEUwMDBEMEY4OEMzMjVCNjkzM0IxOTBGODc0MjIwMzJBMDJEMTBDDQo6MTBCOEYwMDA5ODQ3MDAyMEM3RTcwMjIwQzVFNzcwQjUwMDIyMDQ0NjNDDQo6MTBCOTAwMDAxMTQ2MDEyNTQwMjY0MDIzRkZGN0JGRkUzMzQ2ODAyMTI0DQo6MTBCOTEwMDBDNEY4NDQ1MUM0Rjg1MDYxMDAyMjIwNDZGRkY3QjVGRTM4DQo6MTBCOTIwMDBENEY4OTAzMkE1NjEwMDIxNjY2Mjg0Rjg3NDUyQzRGODlDDQo6MTBCOTMwMDA2QzEyNjE2MEM0Rjg3QzEyMjNCMUQ0Rjg4QzMyMjA0NkJBDQo6MTBCOTQwMDA1QjY4OTg0NzAwMjA3MEJEMDE3NDAwMjA3MDQ3MDhCNUZGDQo6MTBCOTUwMDA5MEY4NzQyMjAzMkEwNEQxRDBGODhDMzJEQjY5MDNCMTQ5DQo6MTBCOTYwMDA5ODQ3MDAyMDA4QkQxMEI1ODAyMTA0NDZGRkY3OUVGRUQxDQo6MTBCOTcwMDAyMDQ2MDAyMUJERTgxMDQwRkZGNzk4QkUzN0I1MEI3ODkwDQo6MTBCOTgwMDAwM0YwNjAwMzIwMkIwNDQ2MEQ0NjE0RDA0MDJCMTJEMDQ4DQo6MTBCOTkwMDAwMDJCNDBGMDhCODA0Qjc4MDkyQjAwRjI4NzgwREZFODhBDQo6MTBCOUEwMDAxM0YwREYwMEY4MDA4NTAwRjEwMDg1MDA3QTAwMTMwMDM1DQo6MTBCOUIwMDA4NTAwQ0EwMDk4MDBENEY4OEMzMjI5NDY5QjY4MjA0NjNFDQo6MTBCOUMwMDA5ODQ3MDAyMDAzQjAzMEJENEI4ODFBMEEwMTNBMDYyQTc2DQo6MTBCOUQwMDA2Q0Q4REZFODAyRjAwNDIwMkQ2QjZCNEQ1NjAwRDBGOEQ4DQo6MTBCOUUwMDA4ODMyMUI2ODIwN0MwREYxMDYwMTk4NDdCREY4MDYyMEJGDQo6MTBCOUYwMDA1MkIxRUI4ODQzQjE5QTQyMjhCRjFBNDYwMTQ2MjA0NjBEDQo6MTBCQTAwMDBBREY4MDYyMDAwRjBCOEZBRUI4ODAwMkJEOUQxMjA0NjFCDQo6MTBCQTEwMDAwMEYwQ0ZGQUQ1RTcwMjdDRDBGODhDMzIzMkI5OUI2QUJEDQo6MTBCQTIwMDAwREYxMDYwMDk4NDcwMjIzNDM3MERGRTdEQjZBRjdFNzcyDQo6MTBCQTMwMDBEQkIyMDUyQjNBRDhERkU4MDNGMDAzMDcwQjBGMTMxNzJGDQo6MTBCQTQwMDBEMEY4ODgzMjVCNjhDREU3RDBGODg4MzI5QjY4QzlFN0M4DQo6MTBCQTUwMDBEMEY4ODgzMkRCNjhDNUU3RDBGODg4MzIxQjY5QzFFN0M3DQo6MTBCQTYwMDBEMEY4ODgzMjVCNjlCREU3RDBGODg4MzI5QjY5QjlFN0M2DQo6MTBCQTcwMDAwMzdDREJCOUQwRjg4QzMyMERGMTA2MDA1QjZCOTg0Nzg0DQo6MTBCQTgwMDBCNEU3MDM3QzkzQjlEMEY4OEMzMjBERjEwNjAwMUI2QjQwDQo6MTBCQTkwMDA5ODQ3MDcyM0M4RTc4Qjg4NDNCOUNCODgzM0I5NEQ4OENCDQo6MTBCQUEwMDA3RjJEMDNEODkwRjg3NDMyMDMyQjAzRDEyMDQ2RkZGNzgzDQo6MTBCQUIwMDA1QUZGODZFN0U5QjI4MEY4NzYxMkZGRjcxNUZFMjA0NkI2DQo6MTBCQUMwMDAwMEYwNzdGQTFEQjEwMjIzODRGODc0MzI3OUU3MDEyMzdDDQo6MTBCQUQwMDBGQUU3ODk3ODM0NEQwMTI5Mjk3MEU3RDg5MEY4NzQzMjUzDQo6MTBCQUUwMDAwMjJCMDhEMDAzMkIxNEQwRkZGNzNERkYyOTc4MjA0NjA2DQo6MTBCQUYwMDBGRkY3M0JGRTY1RTcwMDI5ODlEMDAxMjEwMzIzNDE2MDYwDQo6MTBCQjAwMDA4MEY4NzQzMjIwNDZGRkY3MjVGRTAyMjg3RkY0N0ZBRkNEDQo6MTBCQjEwMDBDQ0U3MzFCOTAyMjM4MEY4NzQzMjQxNjBGRkY3MjVGRThCDQo6MTBCQjIwMDA3NUU3NDE2ODAxMjkzRkY0NzJBRkM5QjJGRkY3MURGRTA2DQo6MTBCQjMwMDAyOTc4NjE2MEU2RTdDQTg4MDEyQUI3RDE5MEY4NzQzMkEzDQo6MTBCQjQwMDAwMDJCQjNEMDAyMkIwM0Q5MDMyQkFGRDEwMTFEMDNFMDhGDQo6MTBCQjUwMDAwMTQ2MDAyMzQxRjgwODNGMjA0NjAwRjAwREZBMzBFNzg3DQo6MTBCQjYwMDA5MEY4NzQzMjAxM0IwMjJCQTBEOENCODgwMjJCOUREMUQ4DQo6MTBCQjcwMDAwMDIyQzI2MEQwRjg3QzIyMDJCMUMzNjAwMjIyMDRGMTJDDQo6MTBCQjgwMDAwQzAxRTlFNzRCODgwMTJCN0ZGNDFCQUZDNEY4N0MzMjMyDQo6MTBCQjkwMDAzREU3OTBGODc0MzIwMTNCMDIyQjg3RDg0Qjg4MDEyQjhDDQo6MTBCQkEwMDA3RkY0MEZBRjAwMjNGMUU3QTAxRDAwMjAzOEI1MEI3ODFDDQo6MTBCQkIwMDAwM0YwNjAwMzIwMkIwNDQ2MEQ0NjAyRDA0MDJCMDBEMDNBDQo6MTBCQkMwMDBBQkI5OTRGODc0MzIwMTNCMDIyQjEwRDgyQjc5MDEyQkJFDQo6MTBCQkQwMDAwREQ4RDRGODhDMzIyOTQ2OUI2ODIwNDY5ODQ3RUI4OENDDQo6MTBCQkUwMDAxQkI5MTBCOTIwNDYwMEYwRTRGOTAwMjAzOEJEMjA0NjBBDQo6MTBCQkYwMDBGRkY3QjlGRUY5RTczOEI1MEE3ODAyRjA2MDAyMjAyQUFCDQo6MTBCQzAwMDAwNDQ2MEI0NjE0RDA0MDJBMTJEMDZBQjk1QTc4OEQ4ODVGDQo6MTBCQzEwMDAwMTJBRTlCMjIwRDAzNkQzMDMyQTA1RDE5MEY4NzQyMjQ0DQo6MTBCQzIwMDAwMjJBMjdEMDAzMkEwQkQwMjA0NkZGRjc5Q0ZFMDVFMDBFDQo6MTBCQzMwMDBENEY4OEMyMjE5NDY5MjY4MjA0NjkwNDcwMDIwMzhCRERGDQo6MTBCQzQwMDA1QTg4MkFCOTRBMDYwM0QwREI4ODBCQjlGRkY3MkVGREM0DQo6MTBCQzUwMDAyMDQ2MDBGMEFFRjlGMUU3OTBGODc0MjIwMjJBMDlEMEVDDQo6MTBCQzYwMDAwMzJBRTFEMTVCODgwMDJCRThEMTREMDZGMEQwRkZGNzI1DQo6MTBCQzcwMDAyNEZERURFNzRCMDZEN0QwRkZGNzE4RkQ4MDIxMjA0NkM1DQo6MTBCQzgwMDBGRkY3MTRGRERBRTc5MEY4NzQzMjAyMkIxOEQwMDMyQjdCDQo6MTBCQzkwMDBDQUQxMDFGMDBGMDIxNDIzMTVGMDgwMEYwM0ZCMDIwMjNBDQo6MTBCQ0EwMDAxREQwOTI2OTAwMkFCRkQwMDFGMDdGMDUwNUZCMDMzNTQ2DQo6MTBCQ0IwMDAwNTQ0MTFGMDdGMDMxREQxMkI2MDAyMjIyOTQ2MEFFMEMyDQo6MTBCQ0MwMDA0QTA2QjFEMTJCMDY0Q0JGMDBGMTE0MDEwMEY1QTA3MTVBDQo6MTBCQ0QwMDAwMDIzMEI2MDAyMjIyMDQ2MDBGMDRFRjlBRUU3RDJGOEI2DQo6MTBCQ0UwMDA0NDIxMDAyQUEwRDAwMUYwN0YwNTAzRkIwNTA1MDVGNURFDQo6MTBCQ0YwMDBBMDc1REVFNzIwNDZGRkY3RTdGQzA4QjEwMTIzREJFNzhDDQo6MTBCRDAwMDAyODYwREFFNzBCNzgwMzcwNEI3ODQzNzBDQTc4OEI3ODM5DQo6MTBCRDEwMDAwM0VCMDIyMzQzODA0QTc5MEI3OTAzRUIwMjIzODM4MEYwDQo6MTBCRDIwMDBDQTc5OEI3OTAzRUIwMjIzQzM4MDcwNDcxMEI1ODAyMTU5DQo6MTBCRDMwMDAwNDQ2RkZGN0JCRkMyMDQ2MDAyMUJERTgxMDQwRkZGNzlBDQo6MTBCRDQwMDBCNUJDMzBCNTg4QjEwNTQ2MkIxQTE1RjgwMTRCREJCMkVFDQo6MTBCRDUwMDAwMDJDRjlEMTAxMzM1QjAwMTM4MDBCNzAwMzIzNEI3MDZGDQo6MTBCRDYwMDAwMTM4MDIyMzEwRjgwMTVGMDVCOTMwQkQ1QTFDRDJCMjY4DQo6MTBCRDcwMDBDRDU0MDIzM0RCQjI4QzU0RjRFNzAwMDAxMjIzMEI4MDY1DQo6MTBCRDgwMDAwMDQ4NzA0NzA1QTgwMTA4MDQyMzBCODAwMDQ4NzA0NzREDQo6MTBCRDkwMDAzM0E4MDEwODEwQjUwNDRDMDQ0ODBBNDYyMTQ2RkZGN0IxDQo6MTBCREEwMDBEMEZGMjA0NjEwQkQwMEJGOTQ2MDAwMjAyMUE4MDEwOEVDDQo6MTBCREIwMDAxMEI1MDQ0QzA0NDgwQTQ2MjE0NkZGRjdDMkZGMjA0NjRFDQo6MTBCREMwMDAxMEJEMDBCRjk0NjAwMDIwMTdBODAxMDgxMEI1MDQ0Q0Y2DQo6MTBCREQwMDAwNDQ4MEE0NjIxNDZGRkY3QjRGRjIwNDYxMEJEMDBCRkM1DQo6MTBCREUwMDA5NDYwMDAyMDI2QTgwMTA4MjkyMzAzODAwMDQ4NzA0NzlBDQo6MTBCREYwMDA5ODAwMDAyMEQwRjg5MDMyMDAyMDE4NzM3MDQ3MDAwMDlGDQo6MTBCRTAwMDAwQTIzMDM4MDAwNDg3MDQ3OEMwMDAwMjAwN0I1MDAyMkY5DQo6MTBCRTEwMDBBREY4MDYyMDBBNzhEMEY4OTAzMjEyRjA2MDAyMUNEMEZCDQo6MTBCRTIwMDAyMDJBMkREMTRBNzgwMjNBMDkyQTI5RDhERkU4MDJGMERGDQo6MTBCRTMwMDAxMjA5MjgyODI4MjgyODI4MEUwNThBNzgxQTYwMDAyMDQ4DQo6MTBCRTQwMDAyMUUwMDEyMjE5NDYwMEYwOTdGOEY4RTc0QTg4MTIwQTIzDQo6MTBCRTUwMDA1QTYwRjRFNzAxMjIxOTFERjVFNzRBNzgwQjJBMEZEODNBDQo6MTBCRTYwMDBERkU4MDJGMDA2MEUwRTBFMEUwRTE0MEUwRTBFMjYyRTNCDQo6MTBCRTcwMDA5MEY4NzQzMjAzMkIwM0QxMDIyMjBERjEwNjAxRTJFN0EwDQo6MTBCRTgwMDBGRkY3NTRGRjAyMjAwM0IwNURGODA0RkI0Qjg4MUIwQTQ4DQo6MTBCRTkwMDAyMjJCMDVEMUNBODgwRTQ5MjIyQTI4QkYyMjIyRDJFN0E2DQo6MTBCRUEwMDAyMTJCRUREMUNBODgwQjQ5MDkyQTI4QkYwOTIyQ0FFN0VDDQo6MTBCRUIwMDA5MEY4NzQyMjAzMkFFM0QxMDEyMjAzRjEwODAxQzJFN0JBDQo6MTBCRUMwMDA5MEY4NzQyMjAzMkFEQkQxOEE3ODlBNjBCN0U3MDBCRjIyDQo6MTBCRUQwMDAyNDAwMDAyMDgwMDAwMDIwMTBCNTgxMjEwNDQ2RkZGN0Q3DQo6MTBCRUUwMDBERUZCMDEyMTIwNDZGRkY3REFGQjAwMjBFMDYyQzRGODA4DQo6MTBCRUYwMDA1ODAxMTBCRDEwQjU0MDIzMDQ0NjAzMjI4MTIxRkZGN0VEDQo6MTBCRjAwMDBDNEZCNDAyMzAzMjIwMTIxMjA0NkZGRjdCRUZCMDEyMTkxDQo6MTBCRjEwMDAwNzRCRTE2MkM0Rjg1ODExQzRGODkwMzIwMDI0MUM3MzM2DQo6MTBCRjIwMDAwNDRBMDU0ODQwMjNGRkY3RURGQjIwNDYxMEJEMDBCRjQzDQo6MTBCRjMwMDBFMTFEMDAyMEExMUQwMDIwODQ1ODAwMjBEMEY4OTAzMjdGDQo6MTBCRjQwMDAwMDIwMTg3MzcwNDcwMDAwNzBCNTA5NEM0MDI1MjA0NjRBDQo6MTBCRjUwMDBGREY3RjRGQzJBNDYwMDIxMjA0NjBCRjA0NEY4MkI0NjVFDQo6MTBCRjYwMDAyMjQ2MDEyMTAzNDhCREU4NzA0MEZGRjdDQkJCMDBCRjZDDQo6MTBCRjcwMDBBMTFEMDAyMDg0NTgwMDIwMTBCNTEzNDYwMjIyQzBGOEVEDQo6MTBCRjgwMDA2QzIyQzBFOTA3MzMwQTQ2MDAyMUZGRjdCNEZCMDAyMDBBDQo6MTBCRjkwMDAxMEJEMDhCNTEzNDYwQTQ2MDAyMUZGRjdBQ0ZCMDAyMDkwDQo6MTBCRkEwMDAwOEJEMDhCNTEzNDYwQTQ2MDAyMUZGRjdBQkZCMDAyMDg5DQo6MTBCRkIwMDAwOEJEMDhCNTA0MjNDMEY4NkMzMjAwMjMxQTQ2MTk0NkEwDQo6MTBCRkMwMDBGRkY3OTlGQjAwMjAwOEJEMDhCNTA1MjNDMEY4NkMzMkM3DQo6MTBCRkQwMDAwMDIzMUE0NjE5NDZGRkY3OTVGQjAwMjAwOEJENzA0NzVEDQo6MTBCRkUwMDA3MEI1MEQ0Njg4QjAwMDIxMDY0NjE0NDYwODQ2NkE0NkRDDQo6MTBCRkYwMDBGREY3MzZGRDIwMjEwNkYxMTAwMEZERjcyM0ZEMjg0NjUwDQo6MTBDMDAwMDAyMDIxRkRGNzFGRkQwMDIxNkE0NjA4NDZGREY3NjZGRDY5DQo6MTBDMDEwMDAwNEFENkI0NjIyNDYxQzQ2MDNDQ0FDNDIxMDYwNTE2MDE2DQo6MTBDMDIwMDAyMzQ2MDJGMTA4MDJGNkQxMDhCMDcwQkQxRkI1MDQ0NkUwDQo6MTBDMDMwMDA2QTQ2RkZGN0Q1RkYxMDIyNjk0NjIwNDYwQUYwQTBGRkE2DQo6MTBDMDQwMDBFOEIxMDAyMjExNDYwRjRCODAyMDAwRjAxNUZBMDAyMkMzDQo6MTBDMDUwMDAwRDRCMTE0NjgwMjAwMEYwMEZGQTEwMjI2OTQ2ODAyMDE3DQo6MTBDMDYwMDAwMEYwNTJGQTAwMjIxMTQ2MDg0QjgwMjAwMEYwMDRGQTNBDQo6MTBDMDcwMDA4MDIwMTAyMjIxNDYwMEYwNDdGQTRGRjBGRjMwMDRCMDM0DQo6MTBDMDgwMDAxMEJEMDBCRjM3QTgwMTA4NTlBODAxMDg2NUE4MDEwODFDDQo6MTBDMDkwMDAwRjRCNzBCNTFDNjg0MUYyMDIwNjA0RjU4MDUyQTM1Qjk5DQo6MTBDMEEwMDAxMjg4MEQ0NjU5MTg5MTQyMDhERDBBNDgwQTRCMEI0OTdGDQo6MTBDMEIwMDA3RjIyMDBGMEUxRjkwMTIwMEFGMDE4RkYyQTQ2MDE0NjJDDQo6MTBDMEMwMDBFMDE4MEFGMDc3RkZBMzVCMUQ0NEE1NTMwMDIwNzBCRDY0DQo6MTBDMEQwMDBGNDFEMDAyMDEwMDAwMDgwMzVBOTAxMDg2M0E5MDEwOEEzDQo6MTBDMEUwMDAwN0I1MDg0QjE4Njg5QTg4MDA5MDlCNzlBREY4MDQyMDMyDQo6MTBDMEYwMDAwNjIxNjg0NjhERjgwNjMwRkZGN0NBRkYwMjQ4MDNCMEY0DQo6MTBDMTAwMDA1REY4MDRGQjc1QTkwMTA4MDA5MEZGRkYyREU5RjA0RkQxDQo6MTBDMTEwMDAwNDQ2QzY0QTI3Nzg4MDc5NjY3OTIzNzkxMTYwQkJCMEQ2DQo6MTBDMTIwMDA5MDQ2OUZCMTAwMjJDMjRCMTE0NjgwMjAwMEYwQTRGOTM2DQo6MTBDMTMwMDA0RkY0REM0NDAwMjIwMDk0QkU0QjExNDY4MDIwMDBGMEY2DQo6MTBDMTQwMDA5QkY5RDhGODAwMDAwMkYwNEZGOTIzRTAxRDA0NDVFQUZFDQo6MTBDMTUwMDAwNjI1NjY3ODAzMkU0NUVBMDAwNTAwRjA1OTgxMEREOEMyDQo6MTBDMTYwMDAwMTJFMzVEMDAyMkUwMEYwRDA4MDAwMjJCMjRCMTE0NkI1DQo6MTBDMTcwMDAxMDIwMDBGMDgxRjk0RkY0REE0NERCRTdDMDJFMDFEMDQzDQo6MTBDMTgwMDBGRjJFRjJEMTAwMjJBRDRCMTE0NjgwMjAwMEYwNzRGOTUxDQo6MTBDMTkwMDA0RkY0MTA0NDIzMEEwMTIxMjhBODhERjhBMDMwRkZGNzlFDQo6MTBDMUEwMDA3N0ZGMDEyMTI4QTg4REY4QTA0MEZGRjc3MUZGMDAyMjNBDQo6MTBDMUIwMDAxMTQ2QTM0QjgwMjAwMEYwNUZGOUQ4RjgwMDEwNDFGMjNGDQo6MTBDMUMwMDAwMjAzODAyMENBNUEwMEYwOUZGOTNCQjBCREU4RjA4RjBGDQo6MTBDMUQwMDA5QzRCM0E0NjM5NDY4MDIwMDBGMDRFRjk0MDJEMDJEMDYzDQo6MTBDMUUwMDA0RkY0Q0U0NEE2RTdGREY3NjdGODRGRjQ4MDYzODI0NjJDDQo6MTBDMUYwMDA0RkYwMDAwQkFERjgwQzMwRkRGNzdDRkEwMDI4MDBGMDkyDQo6MTBDMjAwMDA4MTgwMjAyMTEwQThGREY3QjdGQTA0RjEwNzA5MENBQUQ0DQo6MTBDMjEwMDAyNzM0MjE0NjEwNDZGRkY3RTNGRTMwMjEyMEFCMThBQTUxDQo6MTBDMjIwMDAwREVCMDEwMEZERjc4MkZERkRGN0QyRkIzMTQ2MDNBOEJGDQo6MTBDMjMwMDBGREY3MDhGQzIwNDYyMDIxRkRGNzA0RkMyMDIxNDg0NjlDDQo6MTBDMjQwMDBGREY3MDBGQzMwMjEwREVCMDEwMEZERjdGQkZCMzE0NjUzDQo6MTBDMjUwMDAwREYxMEQwMEZERjdGNkZCMjk0NjE4QThGREY3RjJGQkRFDQo6MTBDMjYwMDAwNEE4RkRGN0Y3RkJGREY3ODlGQzc3NEIzQTQ2Mzk0NjAyDQo6MTBDMjcwMDA4MDIwMDBGMDAxRjkyMDIyMDRBOTgwMjAwMEYwNDRGOTc4DQo6MTBDMjgwMDA0QTQ2MjAyMTA0QThGREY3ODdGQzA1MjMwMjIxMDNBOEM0DQo6MTBDMjkwMDA4REY4MEMzMEZGRjdGQ0ZFMjk0NjE4QThGRkY3RjhGRUQyDQo6MTBDMkEwMDAzMDI0MzE0NjAzQTg4REY4MEM0MEZGRjdGMUZFMjE0NkZCDQo6MTBDMkIwMDAwREVCMDQwMEZGRjdFQ0ZFNjQ0QjY1NDgxOTg4NjU0Q0Y0DQo6MTBDMkMwMDBGRkY3RTZGRTI4QTk0ODQ2MDFGMEJFRjk4MUIyMjhBODhBDQo6MTBDMkQwMDBGRkY3REVGRUZDRjdGMEZGMDAyM0IwRUIwQTAyNjNFQjkyDQo6MTBDMkUwMDAwQjAzMTk0NjEwNDZDREU5MDAwMTVCNEJBNEIyMDAyMkI2DQo6MTBDMkYwMDAxMTQ2NEZGNDAwNjAwMEYwQkZGOEI0RjUxMDRGN0ZGNDIyDQo6MTBDMzAwMDAxOUFGNDdFNzQ2RjY4NTE0RTRFNzNBNDY1MzRCMzk0NkZBDQo6MTBDMzEwMDA4MDIwMDBGMEIxRjhGQ0Y3Q0ZGRjAwMjMxRjQ2QTM3ODgwDQo6MTBDMzIwMDAwMTIyMDcyQjA2NDY4REY4MTAyMDE0RDEwNEYxMjcwMUI1DQo6MTBDMzMwMDAwNEYxNDgwMEZGRjc3QUZFMDAyODY2RDE0NkY2ODUxNDFFDQo6MTBDMzQwMDBGQ0Y3QkFGRjAwMjE4NjFCNjFFQjA3MDdBNEIyQ0RFOTE5DQo6MTBDMzUwMDAwMDY3NDM0QkNCRTcwMzJCMDJEMDRGRjRENTQ0RUZFNzA0DQo6MTBDMzYwMDA5NEY4NDdBMEJBRjEzMDBGRjdEMTA0RjE0ODA5MDRGMTZEDQo6MTBDMzcwMDAyNzA1Mjk0NjQ4NDZGRkY3NTlGRTAzNDYwMDI4RUNEMTE5DQo6MTBDMzgwMDAwMjQ2NTE0NjQ4NDZGREY3QkZGQ0ZERjdCM0Y5MDAyOEM5DQo6MTBDMzkwMDBENEQwMDAyMEZERjdEMEY4MEM5MEZERjcxOUZCMjAyMTM4DQo6MTBDM0EwMDAyODQ2RkRGNzRGRkIwMTIxMDRBOEZERjc0QkZCMDczNDlFDQo6MTBDM0IwMDAwNDIxMENBOEZERjc0NkZCMjAyMTIwNDZGREY3NDJGQjk3DQo6MTBDM0MwMDAxOEE4RkRGNzQ3RkIwMDIyMUY0QjExNDY4MDIwMDBGMDA0DQo6MTBDM0QwMDA1M0Y4MjAyMjE4QTk4MDIwMDBGMDk2RjgyMjQ2MjAyMTQ4DQo6MTBDM0UwMDAxOEE4RkRGN0Q5RkIwMTIxMDRBOEZGRjc1MUZFMDQyMThEDQo6MTBDM0YwMDAwQ0E4RkZGNzRERkUyOEE5MjA0NjAxRjAyNUY5ODFCMkNGDQo6MTBDNDAwMDAyOEE4RkZGNzQ1RkUxMzRDOUFFNzQ2RjY4NDE0OTdFN0YxDQo6MTBDNDEwMDAxNDRCM0E0NjM5NDY4MDIwMDBGMDJFRjgwMDJEN0ZGNDY4DQo6MTBDNDIwMDBERkFFRkZGNzVERkU4NEIyNjdFNzAwQkZGNDFEMDAyMEJBDQo6MTBDNDMwMDA3MUE4MDEwODE1QTkwMTA4RjlBODAxMDhFREE4MDEwOENCDQo6MTBDNDQwMDAyQUE5MDEwODdGQTgwMTA4OERBODAxMDg4NEE3MDEwODZFDQo6MTBDNDUwMDA5REE0MDEwODAwOTBGRkZGOTZBODAxMDhCMEE4MDEwODVDDQo6MTBDNDYwMDBDMkE4MDEwOEUwQTgwMTA4MDE0QjE4NjA3MDQ3MDBCRjhFDQo6MTBDNDcwMDBDNDAwMDAyMDcwNDcwMDAwMDhCNDFDNEIxQjY4MjNGMDY4DQo6MTBDNDgwMDAwMDQzMDM0Mjc3QjUwNDQ2MEQ0NjE2NDYxREQwMTg0QUIwDQo6MTBDNDkwMDAwMDIzNTJGODMzMDAwNDQyNEZFQUMzMDExQUQwMEE0NDgxDQo6MTBDNEEwMDA1MTY4MEI3ODEzQjExMzQ4MEJGMDQwRkIyMDQ2RkZGNzlGDQo6MTBDNEIwMDBFMUZGMDAyQzA0REEzMjQ2Mjk0NjBGNDgwQkYwMzZGQjI4DQo6MTBDNEMwMDAwOEE5MDc5ODAxOTEwQkYwQkJGQzAzQjBCREU4NzA0MEQwDQo6MTBDNEQwMDAwMUIwNzA0NzAxMzMxMTJCREJEMTA4NDgwODRCMDk0OUUzDQo6MTBDNEUwMDA1NTIyRkZGN0M5RkYwMTIwMEFGMDAwRkRDNDAwMDAyMDFCDQo6MTBDNEYwMDBDODAwMDAyMDdDQTkwMTA4QTVBOTAxMDgxMDAwMDA4MDNGDQo6MTBDNTAwMDA4MkE5MDEwODkzQTkwMTA4MzhCNTA4NEIxQjY4MjNGMERDDQo6MTBDNTEwMDAwMDQzMDM0MjBDNDYxNTQ2MDdEMEZGRjdBQkZGMjk0NjAwDQo6MTBDNTIwMDAyMDQ2QkRFODM4NDBGRkY3NUFCRDM4QkRDNDAwMDAyMEEyDQo6MTBDNTMwMDAwOTRBMzBCNTAwMjMxODI0MDRGQjAzRjE4RDU4ODU0MkM1DQo6MTBDNTQwMDAwM0QxMEE0NDAwMjAxMDc0MzBCRDAxMzMwOTJCRjNEMTBDDQo6MTBDNTUwMDA0RkYwRkYzMEY4RTcwMEJGRjgxRDAwMjAwNDRBMDAyMzI5DQo6MTBDNTYwMDAxMzgwMDQ0QTEzNjAwNDRBMTM2MDA0NEExMzYwNzA0NzNFDQo6MTBDNTcwMDBBMjNDMDAyMEFDM0MwMDIwQjAzQzAwMjBBNDNDMDAyMEE5DQo6MTBDNTgwMDAwNDRCMTg4ODI4QjEwNDRCMUI2ODk4NDIwQ0JGMDIyMDRBDQo6MTBDNTkwMDAwMTIwNzA0N0EyM0MwMDIwQUMzQzAwMjAwQjRBMzhCNTdCDQo6MTBDNUEwMDAxODIxMDAyMzAxRkIwMzI1MkM3QzQ0QjkwMTIzMjg2MEJBDQo6MTBDNUIwMDAyQjc0RkNGNzgxRkVDNUU5MDIwNDIwNDYzOEJEMDEzMzI3DQo6MTBDNUMwMDAwOTJCRUZEMTRGRjBGRjMwRjhFNzAwQkZGODFEMDAyMDM2DQo6MTBDNUQwMDAzOEI1MEM0QzAwMjIxODIzMDNGQjAyRjUyOTU5ODE0MjdGDQo6MTBDNUUwMDAwOUQxRkNGNzY5RkU2MzE5MDAyMjAxMjFDM0U5MDIwMkE3DQo6MTBDNUYwMDAxOTc0MTA0NjM4QkQwMTMyMDkyQUVERDE0RkYwRkYzMEQxDQo6MTBDNjAwMDBGOEU3MDBCRkY4MUQwMDIwMkRFOUYwNDcwNDQ2MEU0NjZDDQo6MTBDNjEwMDAxNzQ2MEQ0NjRGRjAwNDA4NEZGMDA1MDk0RkYwMDcwQTgyDQo6MTBDNjIwMDBBQjFCOUY0MjAxRENCREU4RjA4N0Q0RTkwMzIzNkFCOTY0DQo6MTBDNjMwMDA2MjY4QzRGODE1MjBDNEY4MEM4MENCQjkyMjc4NjI3NjAxDQo6MTBDNjQwMDAyMjg5RTI3NjExMEFBMTc2QzRGODBDQTBFMjY4NTExQzk2DQo6MTBDNjUwMDBFMTYwMjI0NDE1RjgwMTBCNTA3NTAxMzM0MDI5MjM2MTM0DQo6MTBDNjYwMDBERUQxMDRGMTE1MDBGQ0Y3MDlGRjAwMjNFMzYwRDdFN0YyDQo6MTBDNjcwMDAyMjdENjI3NjUxMUMyMTc1QzRGODBDOTBFNkU3QzM2OEYwDQo6MTBDNjgwMDAxMEI1NjNCOTAzNjk1M0I5NDM2OEMwRjgxNTMwMDM3ODJFDQo6MTBDNjkwMDA0Mzc2MDM4OUMzNzYxQTBBMDcyMzgyNzZDMzYwQzM2ODg4DQo6MTBDNkEwMDAwMDJCMENERDAwRjExNTA0RTAxOEMzRjE0MDAyMDAyMTVEDQo6MTBDNkIwMDAwQUYwOTlGQzIwNDZCREU4MTA0MEZDRjdERkJFMTBCRDMzDQo6MTBDNkMwMDAxMEI1OThCMDA0NDY4REY4MDcxMDU4MjIwMDIxMDJBODMyDQo6MTBDNkQwMDAwQUYwODlGQ0JGMjMwMTIyMERGMTA3MDEwMkE4OERGOEExDQo6MTBDNkUwMDAwODMwQURGODEwMjAwMzk0RkZGNzhFRkYwMkE4RkZGNzgzDQo6MTBDNkYwMDBDNkZGMThCMDEwQkRGRkY3MzFCRjAwMDAyREU5RjM0QkE2DQo6MTBDNzAwMDAxQTRDREZGODZDODBERkY4NkM5MDA0RjFGMDA1NDBGMjExDQo6MTBDNzEwMDBFRDI2MDAyNzIzN0MxM0IzRkNGN0NFRkRENEU5MDIyM0RBDQo6MTBDNzIwMDA0RkYwMDAwQzgwMUE2Q0VCMDMwMThGNDIwOEJGODY0MjY5DQo6MTBDNzMwMDAxNUQyMDAyMjIzNjgwMDkzMTE0NjQzNDY0RkY0ODA1MERGDQo6MTBDNzQwMDBGRkY3OUFGRTA1MjEyMDY4RkZGN0JBRkYwMDIzMjM3NDQ0DQo6MTBDNzUwMDAyMjY4RDlGODAwMzA5QTQyMDFEMUZGRjdGRkZFMTgzNDYxDQo6MTBDNzYwMDBBQzQyRDdEMTAyQjBCREU4RjA4QjAwQkZGODFEMDAyMDZEDQo6MTBDNzcwMDAzMEFBMDEwOEE0M0MwMDIwMDBCNTlCQjAwMDIyOERGODJGDQo6MTBDNzgwMDAwRjAwMDA5MDBGNEIxMTQ2NEZGNDgwNTBGRkY3NzRGRURFDQo6MTBDNzkwMDA1ODIyMDAyMTA0QTgwQUYwMjZGQzBCNEIxQjY4MDU5M0M1DQo6MTBDN0EwMDAwMTIyQkIyMzBERjEwRjAxMDRBODhERjgxMDMwQURGODY0DQo6MTBDN0IwMDAxODIwRkZGNzI5RkYwNEE4RkZGNzYxRkYxQkIwNURGODAxDQo6MTBDN0MwMDAwNEZCMDBCRjNCQUQwMTA4QTQzQzAwMjAyREU5RjA0NzZEDQo6MTBDN0QwMDAwMDIyMDQ0NkFERjU4MTVEODJCMDExNDZCNDRCNEZGNEEyDQo6MTBDN0UwMDA4MDUwRkZGNzQ5RkUyMzY4MDA5MzAwMjIxMTQ2QjE0QkE5DQo6MTBDN0YwMDA0RkY0ODA1MEZGRjc0MEZFMjM3OTAwOTMwMDIyQUU0QkE4DQo6MTBDODAwMDAxMTQ2NEZGNDgwNTBGRkY3MzdGRTk0RjkwNDMwMDAyQkE3DQo6MTBDODEwMDAwQkRBQjRGODA1MzA1QkJBOUJCMjAwMjIwMDkzMTE0NkU0DQo6MTBDODIwMDBBNjRCNEZGNDgwNTBGRkY3MjdGRTIyNzkyNTY4ODYyQTExDQo6MTBDODMwMDA3Q0QxQjRGODA1MzBCM0Y1MDA2RjA4RDBBMDRCQTE0OTA2DQo6MTBDODQwMDBBMTQ4NEZGNENENzJGRkY3MTdGRTAzMjRBM0UwNDVCOUNBDQo6MTBDODUwMDA5RTRCOUM0OTlDNDg0RkY0RDA3MkZGRjcwREZFMEIyNDcxDQo6MTBDODYwMDA5OUUwRkZGNzQ4RkYyNzY4NzgxQzFFRDEwMDIyOTg0QkZCDQo6MTBDODcwMDAxMTQ2NEZGNDgwNTBGRkY3RkZGRDk2NEIxRTY4MDEzNkJFDQo6MTBDODgwMDA3MjFFMDMzMjA2RjEwMTAxMEREODMwNDYxRTYwRkZGNzFCDQo6MTBDODkwMDA4NUZFMDEzMDIxRDE5MDRCNDBGMkJCMTI4OTQ5OEE0ODc0DQo6MTBDOEEwMDBGRkY3RUFGRDc2RTAwRTQ2RUFFNzAwMjIxMTQ2OEI0QkUxDQo6MTBDOEIwMDA0RkY0ODA1MEZGRjdFMEZEMjc2ODg5NEEwMDIzMTgyMUQ0DQo6MTBDOEMwMDAwMUZCMDNGMDgwNTg4NzQyMDBGMDNDODIwMTMzMDkyQkMyDQo6MTBDOEQwMDBGNkQxMzg0NkZGRjc2MkZFMzdFMjU4MjIwMDIxMDlBODU4DQo6MTBDOEUwMDAwQUYwODFGQjU0RjgwNzBGMEE5Nzg2MjM2MTY4OERGOEQ4DQo6MTBDOEYwMDAyNDMwMDRBQjAzOTMwM0MzMDM5QjAzOTk5RTYwMDIyMzdDDQo6MTBDOTAwMDBDQjYwMDUyMzExMjIwQjc0MDlBOEFERjgyQzIwRkZGNzhBDQo6MTBDOTEwMDA3QkZFMDlBOEZGRjdCM0ZFMzA0NkZGRjcwOUZFMDAyNEFGDQo6MTBDOTIwMDAyMDQ2MERGNTgxNUQwMkIwQkRFOEYwODc2OTFDOTZEMDA4DQo6MTBDOTMwMDA2QjQ5MDAyMzE4MjAwRTQ2MDBGQjAzRjc3RjU4QkQ0MkM5DQo6MTBDOTQwMDAwQUQwMDEzMzA5MkJGN0QxMTMwNjA1RDVGRkY3MThGRURFDQo6MTBDOTUwMDAxMEI5Mjg0NkZGRjcyMkZFMjE2ODAwMjMxODIyMDJGQkE3DQo6MTBDOTYwMDAwM0YwMzA1ODgxNDIwMEYwRjI4MTAxMzMwOTJCRjZEMUY3DQo6MTBDOTcwMDA5NEY5MDQzMDAwMkI3OURBNUE0QjQwRjIxNjIyOERFN0Y1DQo6MTBDOTgwMDAwMDJCMENEQTAwOTI1ODRCNEU0OTRGNDg0MEYyRTMxMjBDDQo6MTBDOTkwMDBGRkY3NzJGRDA2MjQyODQ2RkZGN0NBRkQ4MkUwNTM0QkREDQo6MTBDOUEwMDAwMDkxNDBGMkU5MTI0NzQ5NDc0OEZGRjc2NUZEQjZFN0I1DQo6MTBDOUIwMDAwMDJCMkJEQUI0RjgwNTMwNUJCQTlBQjI0MUY2Qjk1MEM1DQo6MTBDOUMwMDA4MjQyM0ZGNjQyQUY0QTQ4MDM4MDRBNEI0QTQ4QzNGODg2DQo6MTBDOUQwMDAwMEMwNEE0QjM5MkExOTYwNDk0QjI4QkYzOTIyMUE2MEQ2DQo6MTBDOUUwMDA0ODRCNEZGMEZGMzExOTYwRTExRDBBRjBFM0ZBMjA2ODZGDQo6MTBDOUYwMDBGRkY3RUVGRDAwMjg0MUQwNDM0QjQwRjIwOTIyMzI0OEI4DQo6MTBDQTAwMDAzMDQ5RkZGNzM5RkQwMTIwMEFGMDcwRkExOEIxM0I0QkFEDQo6MTBDQTEwMDAxQjY4OTk0MjA0RDAwMDkxMzQ0QjQwRjJGQjEyQzJFN0VDDQo6MTBDQTIwMDAzMzRCMzg0QUIzRjgwMDgwMTM2ODM1NEYwMTMzNjM0NTAwDQo6MTBDQTMwMDAzRTY4MTM2MDEyRDFBOEVCMDYwMjJGNDgzQjJBMDRGMThFDQo6MTBDQTQwMDAwNTAxMzA0NDA0REMwQUYwQjVGQUM3RjgwMDgwQ0VFN0VGDQo6MTBDQTUwMDAzQjIyM0IzNjBBRjBBRUZBM0U2MEM4RTcyQjRCMTk0OTQxDQo6MTBDQTYwMDAxOTQ4NDBGMjAyMjJGRkY3MDdGRDk1RTEyODRCMTU0OUNFDQo6MTBDQTcwMDAxNTQ4NDBGMjBGMjJGRkY3RkZGQzUwRTcxQzRCMUU4OEMxDQo6MTBDQTgwMDAxQzRCMUE2OEQ0QjJGRkY3N0JGRDA0MjgzRkY0NDdBRjc0DQo6MTBDQTkwMDAwMzI4M0ZEMTI4NDZGRkY3NEJGRDA0MkMwMkQxRkZGN0I2DQo6MTBDQUEwMDA1REZEMDQyNDIxNDYyODQ2RkZGNzBBRkUzN0U3MDBCRjU0DQo6MTBDQUIwMDA0M0FBMDEwODUwQUEwMTA4NUVBQTAxMDg2QkFBMDEwODRFDQo6MTBDQUMwMDA3OUFBMDEwOEE1QUEwMTA4MTAwMDAwODBCQkFBMDEwOEU0DQo6MTBDQUQwMDBEMUFBMDEwODUwMDEwMDIwRjlBQTAxMDhFM0FBMDEwODFGDQo6MTBDQUUwMDBGODFEMDAyMERCQUIwMTA4NERBQjAxMDg1REFCMDEwODcwDQo6MTBDQUYwMDBBMjNDMDAyMEE4M0MwMDIwRTgxRTAwMjBBNDNDMDAyMDBFDQo6MTBDQjAwMDBBQzNDMDAyMEIwM0MwMDIwOUVBQjAxMDg4NEFCMDEwODg3DQo6MTBDQjEwMDBCOUFCMDEwODAxMjgwMkQxRkNGN0NFRkJGRkU2QTRGMTc2DQo6MTBDQjIwMDA4MTAzMTAyQjAwRjIwMTgxREZFODEzRjAxNTAwRkYwMEY0DQo6MTBDQjMwMDBCRjAwRkYwMEZGMDAxMTAwRkYwMDRGMDBGRjAwRkYwMERCDQo6MTBDQjQwMDBGRjAwRkYwMEZGMDBGRjAwRkYwMDYyMDBGNDAwOTQ0QkI1DQo6MTBDQjUwMDA0MEYyNEIyMjUzRTc5MzRGOTM0QjAwMjIxMTQ2NEZGNDgwDQo6MTBDQjYwMDA4MDUwRkZGNzg5RkM1ODIyMDAyMTM4NDYwQUYwM0JGQTMyDQo6MTBDQjcwMDA4MTIzM0I3MDdENjAzRTgxRkNGNzlFRkIzMjQ2OEI0OUYyDQo6MTBDQjgwMDA4MDQ2Mzg0NkZGRjc0MEZEMzg0NkZGRjc3OEZERkNGNzUyDQo6MTBDQjkwMDA5M0ZCMDAyMkEwRUIwODAwMDA5MDg1NEIxMTQ2NEZGNDU4DQo6MTBDQkEwMDAwMDYwRkZGNzY5RkMyODQ2RkZGN0MyRkNGRkY3RDZGQ0UwDQo6MTBDQkIwMDAwMDIyODA0QjExNDY0RkY0ODA1MEZGRjc1REZDN0U0QjA2DQo6MTBDQkMwMDAxQjc4MDAyQjNGRjRBQ0FFQTlFNjAwMjIxMTQ2N0I0QjRDDQo6MTBDQkQwMDA0RkY0ODA1MEZGRjc1MEZDNzI0QjU4MjIwMDIxMTg0NjRBDQo6MTBDQkUwMDAwQUYwMDFGQTg4MjI0NTYwMDI3MEZGRjc0OEZEREFFNzkzDQo6MTBDQkYwMDAwMDIyNzM0QjExNDY0RkY0ODA1MEZGRjczREZDNDZCOUJEDQo6MTBDQzAwMDA3MDRCNEZGNDFDNzI3MDQ5NzA0OEZGRjczNUZDMDMyMURDDQo6MTBDQzEwMDA0OUU3REZGOEE0ODE5OEY4MDA3MDQ3QjE2QzRCMDAyMjE3DQo6MTBDQzIwMDAxMTQ2NEZGNDgwNTBGRkY3MjdGQzA2MjEzQkU3NEZGMEY5DQo6MTBDQzMwMDAwMTBBMDlBODg4RjgwMEEwMDFGMEQ2RkIzMTQ2MDlBQTJDDQo6MTBDQzQwMDA1QTQ4NTg0RTAyRjA1QUY4NTgyMjM5NDYwNDkwMzA0NjU1DQo6MTBDQzUwMDAwQUYwQzlGOTkwMjMzMzcwMERGNTgxNTMwNjMzNzU2MERFDQo6MTBDQzYwMDAxQjg4NTM0NDMzODFGQ0Y3MjdGQjUyNDY4MTQ2MDRBOUI1DQo6MTBDQzcwMDAzMDQ2RkZGN0M5RkMwREY1ODE1MzA2MzMwOUE5MUE4ODIwDQo6MTBDQzgwMDAzMDQ2RkZGN0MxRkMzMDQ2RkZGN0Y5RkNGQ0Y3MTRGQjE4DQo6MTBDQzkwMDBBMEVCMDkwMDAwOTA0RjRCM0E0NjM5NDY0RkY0MDA2MDM0DQo6MTBDQ0EwMDBGRkY3RUFGQjg4RjgwMDcwN0RFNzAwMjI0QTRCMTE0NjQ3DQo6MTBDQ0IwMDA0RkY0ODA1MEZGRjdFMEZCMUVCOTQ4NEI0MEYyOTIyMjQwDQo6MTBDQ0MwMDBBMUU3M0Q0Rjk3RjgwMDgwQjhGMTAwMEYwMUQwNDQ0QjI5DQo6MTBDQ0QwMDBBNUU3MzQ0RTAxMjMwOUE4M0I3MDBERjEyODA5MDFGMEE2DQo6MTBDQ0UwMDA4M0ZCMDlBOTMxNDhGRkY3MTFGQTU4MjI0MTQ2MzA0NjIzDQo6MTBDQ0YwMDAwQUYwNzlGOTgzMjNCOUY4RkUyRjMzNzAwOUE5MzA0Njc5DQo6MTBDRDAwMDAzMjgxNzU2MEZGRjc4MEZDMzA0NkZGRjdCOEZDODdGODhBDQo6MTBDRDEwMDAwMDgwNDhFNzAwMjIzMzRCMTE0NjRGRjQ4MDUwRkZGNzY0DQo6MTBDRDIwMDBBQkZCMjU0QjAwMjIxQTcwM0RFNzAwOTIyRTRCMjY0OUEzDQo6MTBDRDMwMDAyNjQ4NDBGMkFFMjJGRkY3OUZGQjAxMjEyODQ2RkZGNzZEDQo6MTBDRDQwMDBCRkZDMzBFNzM4NDZGRkY3NDNGQzNFNDZBMUU1RkZGNzVFDQo6MTBDRDUwMDAxN0ZDOTRGODA0QzAwMTI4NEZGQThDRjM3RkY0MjhBRTM2DQo6MTBDRDYwMDAyMjRBMTI2ODkxNDI3RkY0MEJBRTAwMkJCRkY2NEZBRTAxDQo6MTBDRDcwMDAxRjRCMTU0OTE1NDg0RkY0RUQ3MkZGRjc3REZCMUQ0QjE2DQo6MTBDRDgwMDAxMTQ5MUI4ODAxOTMxQzRCMTA0ODFCNjgwMDkzNDBGMjBCDQo6MTBDRDkwMDBEQjEyMUE0QkZGRjc3MEZCMjg0NkZGRjdDOUZCN0VFNjU0DQo6MTBDREEwMDBFMUFCMDEwOEI4M0MwMDIwMTVBQzAxMDhFODFFMDAyMEVBDQo6MTBDREIwMDAyM0FDMDEwOEFCQTMwMTA4QjQzQzAwMjAzQUFDMDEwODQ1DQo6MTBDREMwMDA0OEFDMDEwODU2QUMwMTA4QTVBQTAxMDgxMDAwMDA4MDczDQo6MTBDREQwMDA4NEFDMDEwODlCQUMwMTA4QjJBQzAxMDhCRkFDMDEwOEVGDQo6MTBDREUwMDBGMEFDMDEwODA2QUQwMTA4MTZBRDAxMDhBNDNDMDAyMDE2DQo6MTBDREYwMDAyRUFCMDEwOEEyM0MwMDIwQUMzQzAwMjAzQkFCMDEwODVDDQo6MTBDRTAwMDBEMUY4NDMzMEQwRjg0MzAwMTgxQTcwNDdGOEI1MjAyMjAzDQo6MTBDRTEwMDAwNjQ2MEQ0NjIyMzAyMjMxMEFGMEIyRjgwNDQ2ODBCOUE3DQo6MTBDRTIwMDA5NkY4ODY3MDA1RjE0NjAxM0E0NjA2RjE0NjAwMEFGMDhBDQo6MTBDRTMwMDBBN0Y4MjBCOTk1Rjg4NjQwRTMxQjVDNDI1QzQxMjA0Njg4DQo6MTBDRTQwMDBGOEJEMDAyNEZCRTczOEI1MDU0NjA4NDYwQzQ2RkJGNzVEDQo6MTBDRTUwMDA4NUZCMjE0NjAyNDYyODQ2QkRFODM4NDAwOEYwNURCRjA0DQo6MTBDRTYwMDAxMEI1MDQ0NjAwMjBGQ0Y3NjdGQjAzNDYxMEI5RkNGNzM5DQo6MTBDRTcwMDA2M0ZCMDM0NjFBMEU4NEY4MjEyMDFBMEM4NEY4MjIyMDQyDQo6MTBDRTgwMDAxQTBBODRGODIzMjA4NEY4MjQzMDE4NDYxMEJEMDAwMEM0DQo6MTBDRTkwMDAxMEI1MEI0Q0QwMjJGRjIxMjA0NjBBRjBBNEY4MDRGMTczDQo6MTBDRUEwMDA0RTAwODAyMUZDRjc2OEZDMDgyMzg0Rjg0ODMwQTUyMzU1DQo6MTBDRUIwMDAyMzgwMDAyM0E0Rjg0QTMwQkRFODEwNDBGQ0Y3NjJCQzkwDQo6MTBDRUMwMDAwNDYxMDAyMDJERTlGRjQxMEU0NjE1NDY2OTQ2MDUyMjAyDQo6MTBDRUQwMDAwNDQ2MUY0NjA4RjA4REZGNEQ0QTgwNDZDRjIxMDJGMEUwDQo6MTBDRUUwMDBFNUY4QjhGMTAwMEYwNEQwMTAyNDIwNDYwNEIwQkRFOEU2DQo6MTBDRUYwMDBGMDgxMDEyMjAwMjM2ODQ2MDhGMDg5RkU0NDRBODA0NkZBDQo6MTBDRjAwMDBENDIxMDJGMEQzRjhCOEYxMDAwRkVERDEwMjIyMDAyM0IyDQo6MTBDRjEwMDA2ODQ2MDhGMDdDRkUzRTRBODA0NkQ2MjEwMkYwQzZGOEZDDQo6MTBDRjIwMDBCOEYxMDAwRkUwRDEwMzIyMDAyMzY4NDYwOEYwNkZGRTNEDQo6MTBDRjMwMDAzNzRBODA0NkRCMjEwMkYwQjlGOEI4RjEwMDBGRDNEMUFGDQo6MTBDRjQwMDAzQTQ2RkIxNzY4NDYwOEYwNjJGRTMxNEEwNzQ2REQyMTgzDQo6MTBDRjUwMDAwMkYwQUNGODAwMkZDN0QxNEZGMEZGMzI0RkYwRkYzMzkzDQo6MTBDRjYwMDA2ODQ2MDhGMDU0RkUyQTRBMDc0NkUyMjEwMkYwOUVGODdEDQo6MTBDRjcwMDAwMDJGQjlEMTAxMjIwMDIzNjg0NjA4RjA0OEZFMjQ0QTU4DQo6MTBDRjgwMDAwNzQ2RTQyMTAyRjA5MkY4MDAyRkFERDE2RkYwMDEwMkM0DQo6MTBDRjkwMDA0RkYwRkYzMzY4NDYwOEYwM0FGRTFENEEwNzQ2RUEyMTgzDQo6MTBDRkEwMDAwMkYwODRGODAwMkY5RkQxMzE0NjIwMjI2ODQ2MDhGMDE1DQo6MTBDRkIwMDBBM0ZFMTc0QTA2NDZFQzIxMDJGMDc4RjgwMDJFOTNEMTIyDQo6MTBDRkMwMDA2RkYwMDIwMjRGRjBGRjMzNjg0NjA4RjAyMEZFMTA0QTZGDQo6MTBDRkQwMDAwNjQ2RjEyMTAyRjA2QUY4MDAyRTg1RDEyOTQ2MjAyMjZBDQo6MTBDRkUwMDA2ODQ2MDhGMDg5RkUwQTRBMDU0NkYzMjEwMkYwNUVGODE5DQo6MTBDRkYwMDAwMDJEN0ZGNDc5QUY2OTQ2MjA0NjA4RjAxNkZGMDQ0QUY5DQo6MTBEMDAwMDAwNDQ2RjcyMTAyRjA1MkY4MDAyQzNGRjQ2RUFGNkJFN0I0DQo6MTBEMDEwMDA1RkFEMDEwODMwQjU4OUIwNkE0NjA0NDYwRDQ2MTM0ODM1DQo6MTBEMDIwMDAxMDIxRkNGNzFERkQyMDIxMjg0NkZDRjcwQkZENkE0NjY4DQo6MTBEMDMwMDAxMDIxMEU0OEZDRjc1MkZEMTAyMjY5NDYyMDQ2MDlGMEU3DQo6MTBEMDQwMDA5RkZGODBCMTBBNEIwQjQ5MEI0ODRDMjJGRkY3MTRGQUEzDQo6MTBEMDUwMDAxMDIyMTA0NjIxNDZGRkY3NTdGQTEwMjIxMDQ2Njk0NjYzDQo6MTBEMDYwMDBGRkY3NTJGQTMzMjAwOUIwMzBCRDAwQkZCNDYwMDAyMDkyDQo6MTBEMDcwMDA4RUI1MDEwODVGQUQwMTA4MTAwMDAwODAzMEI1OTFCMDk5DQo6MTBEMDgwMDAwNTIyMDRBOTA0NDYwOEYwQjRGRUExNEEwNTQ2NUYyMTIyDQo6MTBEMDkwMDAwMkYwMENGODE1QjExMDIwMTFCMDMwQkQwMTIyMDAyM0IwDQo6MTBEMEEwMDAwNEE4MDhGMEEyRkQ5QTRBMDU0NjYzMjEwMUYwRkVGRjlDDQo6MTBEMEIwMDAwMDJERjBEMTAyMjI2OTQ2MDRBODA4RjA4OUZFOTQ0QUE2DQo6MTBEMEMwMDAwNTQ2NjYyMTAxRjBGMkZGMDAyREU0RDE5MTQ5Njg0NjQyDQo6MTBEMEQwMDBGRkY3QjlGRThFNEEwNTQ2NjkyMTAxRjBFN0ZGMDAyREYyDQo6MTBEMEUwMDBEOUQxOEQ0OTY4NDZGRkY3QUVGRTg5NEEwNTQ2NkIyMUM2DQo6MTBEMEYwMDAwMUYwRENGRjAwMkRDRUQxNjk0NjA0QTgwOEYwOTVGRUIyDQo6MTBEMTAwMDA4MzRBMDU0NjZFMjEwMUYwRDFGRjAwMkRDM0QxMDMyMkQxDQo6MTBEMTEwMDAwMDIzMDRBODA4RjA2OUZEN0Q0QTA1NDY3MjIxMDFGMDRDDQo6MTBEMTIwMDBDNUZGMDAyREI3RDExMDIyN0M0OTBERUIwMjAwMDhGMDlEDQo6MTBEMTMwMDBFM0ZENzc0QTA1NDY3NTIxMDFGMEI4RkYwMDJEQUFEMTFEDQo6MTBEMTQwMDAwNTIyMDAyMzA0QTgwOEYwNTBGRDcxNEEwNTQ2NzkyMTA0DQo6MTBEMTUwMDAwMUYwQUNGRjAwMkQ5RUQxNEZGNDk2NjIwMDIzMDRBODhEDQo6MTBEMTYwMDAwOEYwNTVGRDZBNEEwNTQ2N0MyMTAxRjA5RkZGMDAyRDFEDQo6MTBEMTcwMDA5MUQxMDYyMjAwMjMwNEE4MDhGMDM3RkQ2NDRBMDU0NjMxDQo6MTBEMTgwMDA4MDIxMDFGMDkzRkYwMDJEODVEMTAxMjIwQ0E5MDRBODc0DQo6MTBEMTkwMDAwOEYwMUVGRTVFNEEwNTQ2ODMyMTAxRjA4N0ZGMDAyRDQwDQo6MTBEMUEwMDA3RkY0NzlBRjAxMjIwMDIzMENBODA4RjAzMEZENTg0QTIzDQo6MTBEMUIwMDAwNTQ2ODYyMTAxRjA3QUZGMDAyRDdGRjQ2Q0FGMENBOUEzDQo6MTBEMUMwMDAwNEE4MDhGMDMyRkU1MjRBMDU0Njg5MjEwMUYwNkVGRjlDDQo6MTBEMUQwMDAwMDJEN0ZGNDYwQUYwNDIyMDAyMzA0QTgwOEYwMDVGREIxDQo6MTBEMUUwMDA0QjRBMDU0NjhGMjEwMUYwNjFGRjAwMkQ3RkY0NTNBRkJDDQo6MTBEMUYwMDAwNDIyMDhBOTA0QTgwOEYwRkNGRDQ1NEEwNTQ2OTIyMTJFDQo6MTBEMjAwMDAwMUYwNTRGRjAwMkQ3RkY0NDZBRjA0MjI0NDQ5MDhBOEUyDQo6MTBEMjEwMDAwOEYwODNGRDNFNEEwNTQ2OTUyMTAxRjA0N0ZGMDAyREE5DQo6MTBEMjIwMDA3RkY0MzlBRjE0MjEwOEE4MDhGMDFERkQzODRBMDU0NkRGDQo6MTBEMjMwMDA5ODIxMDFGMDNCRkYwMDJEN0ZGNDJEQUYwMjIyMzk0OUU4DQo6MTBEMjQwMDAwOEE4MDhGMDZBRkQzMjRBMDU0NjlDMjEwMUYwMkVGRjJEDQo6MTBEMjUwMDAwMDJEN0ZGNDIwQUYxNTIxMDhBODA4RjAwNEZEMkM0QTBBDQo6MTBEMjYwMDAwNTQ2OUYyMTAxRjAyMkZGMDAyRDdGRjQxNEFGMDIyMjFBDQo6MTBEMjcwMDAyRDQ5MDhBODA4RjA1MUZEMjU0QTA1NDZBMzIxMDFGMEQzDQo6MTBEMjgwMDAxNUZGMDAyRDdGRjQwN0FGMTUyMTA4QTgwOEYwRUJGQzZGDQo6MTBEMjkwMDAxRjRBMDU0NkE2MjEwMUYwMDlGRjAwMkQ3RkY0RkJBRUQxDQo6MTBEMkEwMDAwOTIyMjI0OTA4QTgwOEYwMzhGRDE5NEEwNTQ2QjMyMTg5DQo6MTBEMkIwMDAwMUYwRkNGRTAwMkQ3RkY0RUVBRTFENEI1OTc4NEIxRUE1DQo6MTBEMkMwMDA1OTQyNTk0MTE0MzEwOEE4MDhGMENERkMxMDRBMDU0NkNFDQo6MTBEMkQwMDBCNjIxMDFGMEVCRkUwMDJEN0ZGNEREQUUwOEE5MDRBODE1DQo6MTBEMkUwMDAwOEYwQTNGRDBBNEEwNTQ2QkMyMTAxRjBERkZFMDAyRDJGDQo6MTBEMkYwMDA3RkY0RDFBRTA0QTkyMDQ2MDhGMDk3RkQwNDRBMDQ0NjA1DQo6MTBEMzAwMDBDMjIxMDFGMEQzRkUwMDJDN0ZGNEM1QUUyMDQ2QzNFNjU3DQo6MTBEMzEwMDA1RkFEMDEwODc1QTkwMTA4RjFCMDAxMDhGQUIwMDEwODc0DQo6MTBEMzIwMDAwQkIxMDEwODEwQjEwMTA4MTNCMTAxMDgxNkIxMDEwOEQxDQo6MTBEMzMwMDAwNDYxMDAyMDcwQjU4QUIwMEQ0NjA2NDYwMTkyMDAyMUI2DQo6MTBEMzQwMDAwMkFBMDEyMDFDNDZGQ0Y3OEJGQjIwMjEzMDQ2RkNGNzhCDQo6MTBEMzUwMDA3OUZCMjg0NjEyMjFGQ0Y3NzVGQjA0MjEwREVCMDEwMDM3DQo6MTBEMzYwMDBGQ0Y3NzBGQjAyQUEwMDIxMDEyMEZDRjdCN0ZCMDZBRDE5DQo6MTBEMzcwMDAwMkFBMjM0NjE0NDYwM0NDQUM0MjE4NjA1OTYwMjI0NkU4DQo6MTBEMzgwMDAwM0YxMDgwM0Y2RDEwQUIwNzBCRDAwMDAxMEI1MDAyMTBBDQo6MTBEMzkwMDAwNDQ2MDU0OEZDRjdCOEY4MkNCMTAxMjEwMjQ4QkRFODY1DQo6MTBEM0EwMDAxMDQwRkNGN0IxQjgxMEJEMDQ2MTAwMjAyREU5RjA0RjJBDQo6MTBEM0IwMDBBREY1NEQ3RDA1NDYxRTQ2OURGODVDMzMwMzkzMTQ0NjNFDQo6MTBEM0MwMDA4ODQ2REE5RkZDRjcwNEZCRDVGODAwMTEyODQ2RkNGN0U1DQo6MTBEM0QwMDAzOUZCMjA0NkZDRjczRUZCMDAyMjkxNEIxMTQ2NEZGNEVGDQo6MTBEM0UwMDA4MDYwRkZGNzQ5RjhENUY4MDAyMTI5NDY0RkY0ODA2MEE2DQo6MTBEM0YwMDBGRkY3OEFGODAwMjI4QjRCMTE0NjRGRjQ4MDYwRkZGNzREDQo6MTBENDAwMDAzQkY4MjAyMjIxNDY0RkY0ODA2MEZGRjc3REY4MjA0NjRDDQo6MTBENDEwMDBGRkY3MjZGRDgzNDYwMjIwRkJGNzdBRkZGQ0Y3NkFGOTQ3DQo6MTBENDIwMDBCMEYxMDAwQTAwRjBGNzgwQzBGMkY3ODA3RTREMDEyMEQ1DQo6MTBENDMwMDBGQkY3NkVGRjZCNzg1QTFFNTM0MjUzNDEwMzlBNEFFQTM4DQo6MTBENDQwMDA4MzAzREJCMjkyQjk4NEY4MjAzMDI1MjUwMjIyMDAyMzIxDQo6MTBENDUwMDA0MDQ2MDhGMERDRkI3NTRBMDY0NjQwRjJCNTExMDFGMDgzDQo6MTBENDYwMDAyNUZFMDAyRTAwRjBDNDgwMTAyNDVERTA0M0YwNDAwMzUwDQo6MTBENDcwMDAwNEYxN0QwOTg0RjgyMDMwQTZGMTdEMDIwMDIzNDk0NjlEDQo6MTBENDgwMDAwNEE4MDhGMDUxRkE2QTRCMDRGMTI1MDIwM0YxMTAwMUQ3DQo6MTBENDkwMDA1M0Y4MDQwQjQyRjgwNDBCOEI0MkY5RDE0NjIyMDAyMUM5DQo6MTBENEEwMDAwNEYxMzcwNjg0RjgzNjIwODRGODM1MTAzMDQ2MDRGMTRDDQo6MTBENEIwMDA0NzBBMDlGMDk4RkQxMjIxNTA0NkZDRjc1REY5QzRGOEJGDQo6MTBENEMwMDA3OUIwQTQ0NjA0RjE1OTAyMDRGMTIwMEU2MzQ2MDNDQjVGDQo6MTBENEQwMDA3MzQ1MTA2MDUxNjA5QzQ2MDJGMTA4MDJGNkQxMzM0NjU0DQo6MTBENEUwMDA1QTQ2NTE0NjIwNDZGRkY3MjVGRjdGQjM0NjIyMzE0Njc0DQo6MTBENEYwMDAxOEE4MDlGMDU0RkQ0RkY0OTE3MkQ2OTkwREYxQTYwMEM5DQo6MTBENTAwMDAwOUYwNERGREI1Rjg0QTcwNEZGMDAwMEFCQTQ1MTBEQjNFDQo6MTBENTEwMDBGQ0Y3NENGOUI4NDIzOEQ4NDY0QjQ0NDk0NjQ4NDBGMkVCDQo6MTBENTIwMDA5QjEyRkVGN0E5RkYyODI0MjA0NjBERjU0RDdEQkRFODhFDQo6MTBENTMwMDBGMDhGNzJBOTUwNDZGQ0Y3NzFGOTcyQTkxOEE4RkZGNzhEDQo6MTBENTQwMDA2NUZDRjhCMTE4QTk1MDQ2RkNGNzlFRjkwMDIyM0I0QjQ4DQo6MTBENTUwMDAxMTQ2NEZGNDAwNzBGRUY3OEZGRjQ2MjIzMTQ2NEZGNDFDDQo6MTBENTYwMDAwMDcwRkVGN0QxRkYwMzlCMDEyQjIyRDAzNDRCMkY0OUQzDQo6MTBENTcwMDAzMTQ4NDBGMjAxMTJGRUY3N0ZGRjA0OURBNUVCMDkwNTNCDQo6MTBENTgwMDA3RDM1NjNFNzBBRjEwMTBBQzBFN0I1Rjg0QTMwMDEyMEFBDQo6MTBENTkwMDAwMTMzQTVGODRBMzBGRkY3RjlGRTE4QTkzODQ2RkNGNzIxDQo6MTBENUEwMDAwN0Y5MjAyMjBERjE4MjAxNEZGNDAwNzBGRUY3QUNGRjY1DQo6MTBENUIwMDBDQ0U3RDg5QjA3MzMxMUQxMTBBQjA4QUEzMDQ2NDYyMURGDQo6MTBENUMwMDBGQ0Y3QjRGQjEwQUEwOEE5RDg5QjA0QThGRkY3N0FGQ0MzDQo6MTBENUQwMDAxNjRBNEZGNDg3NzEwMUYwNjlGRENFRTdEODlCMDA5MzlFDQo6MTBENUUwMDA0RkY0ODU3MjE3NEIxMTQ5MTM0OEZFRjc0NUZGQzRFNzA2DQo6MTBENUYwMDAyMTQ2MkE0NjQwNDYwOEYwN0ZGQjBDNEEwNDQ2NDBGMjhBDQo6MTBENjAwMDBCNzExMDFGMDUzRkQwMDJDN0ZGNDJFQUZEOTlCMDAyQkY2DQo6MTBENjEwMDA4QUQwMUQ2MDg4RTcyNzI0ODZFNzJEMjQ4NEU3MDBCRjkxDQo6MTBENjIwMDA2Q0IyMDEwODUyQjEwMTA4MDQ2MTAwMjA1RkFEMDEwODJEDQo6MTBENjMwMDBGQUIwMDEwODczQjIwMTA4MTAwMDAwODA5NUIyMDEwODI5DQo6MTBENjQwMDBBM0IyMDEwOEQwQjIwMTA4MkRFOUY3NEYwMDIzODE0NkFCDQo6MTBENjUwMDAwRTQ2MTlGODAzMjA1RkIyMUFCOTAxMzMyMDJCNUZCMkNFDQo6MTBENjYwMDBGN0QxMDlGMTFGMDI0RkYwMDAwODEyRjgwMTNGNDNCOTRBDQo6MTBENjcwMDAwOEYxMDEwODVGRkE4OEYzMjAyQjRGRkE4M0Y4RjREMTAwDQo6MTBENjgwMDA5ODQ2MDlFQjA4MDMxOUY4MDcwMDkzRjgyMDQwRkFCMjBFDQo6MTBENjkwMDAzMDIzQzUwOTMzNzBDMkYxNDQwMzVGRkE4OEZBMkI0NDgyDQo6MTBENkEwMDBFNDA5QTNFQjBBMDMyMzQ0NzExOUMyRjEyMDAyNzM3MDQ5DQo6MTBENkIwMDA0RkYwMDAwQjAyMjMyQTQ0MjgxREIzNzAzMDQ0ODFGODM4DQo6MTBENkMwMDAwM0IwRjI3MDA5RUIwNzAxMjAyMjAxOTMwOUYwNzJGQzBDDQo6MTBENkQwMDAwNUYxMjQwMkQyMUIwMTlCQjM1NDA1RjEyNTAzMUExOTREDQo6MTBENkUwMDBDN0YxMjYwMEQyMUJEQjFCMjg0NENBRjEyMDBBQTI0NDQyDQo6MTBENkYwMDAwOEYxMjAwMTIwNDQwNkY4MDJCMDQ5NDQwNkY4MDNBMENFDQo6MTBENzAwMDAyMDIyMzA0NDA5RjA1NkZDMDRGMTQ2MDAyODQ0QzAxQjk2DQo6MTBENzEwMDBBMEVCMDgwMDAzQjBCREU4RjA4RjJERTlGODQzODA0Njg4DQo6MTBENzIwMDA4OTQ2MUQ0NjE3NDZEREU5MDg0NkZDRjc1MUY5NDk0NjhBDQo6MTBENzMwMDA0MDQ2RkNGNzg3RjkyMDIxMzg0NkZDRjc4M0Y5Mjg0NjU0DQo6MTBENzQwMDBGQ0Y3ODhGOTI4NDYyMjQ2MjAyMUZDRjcyNUZBMzE0NkM1DQo6MTBENzUwMDAyMDQ2QkRFOEY4NDNGRkY3NzdCRjAwMDBGMEI1MDAyMzhGDQo6MTBENzYwMDA4OUIwMTY0NjAzMjIwRDQ2MDQ0NjA4RjA1MEZBNDU0QTkxDQo6MTBENzcwMDAwNzQ2NDBGMkZEMTEwMUYwOTlGQzVGQjkwMzIyNjk0NkFBDQo6MTBENzgwMDAyMDQ2MDhGMDM2RkIzRjRBMDc0NjQwRjJGRjExMDFGMDAxDQo6MTBENzkwMDA4REZDMEZCMTEwMjA3M0UwM0I0OTY4NDZGRkY3NTNGQjQ3DQo6MTBEN0EwMDAzODRBMDc0NjQwRjIwMjIxMDFGMDgwRkMwMDJGRjFEMUY3DQo6MTBEN0IwMDA2RkYwMDYwMjRGRjBGRjMzNjg0NjA4RjAyOEZBMzE0QTRFDQo6MTBEN0MwMDAwNzQ2NEZGNDAxNzEwMUYwNzFGQzAwMkZFMkQxMkY0OTlGDQo6MTBEN0QwMDA2ODQ2RkZGNzM4RkIyQjRBMDc0NjRGRjQwMjcxMDFGMDA5DQo6MTBEN0UwMDA2NUZDMDAyRkQ2RDEyOTQ2MzI0NjY4NDYwOEYwODRGQUY3DQo6MTBEN0YwMDAyNDRBMDU0NjQwRjIwQTIxMDFGMDU4RkMwMDJEQzlEMTA3DQo6MTBEODAwMDAyMzQ5Njg0NkZGRjcxRkZCMUU0QTA1NDY0MEYyMEUyMURBDQo6MTBEODEwMDAwMUYwNENGQzAwMkRCREQxMDEyMjA0QTk2ODQ2MDhGMDlFDQo6MTBEODIwMDBEN0ZBMTg0QTA1NDY0RkY0MDQ3MTAxRjAzRkZDMDAyRDY5DQo6MTBEODMwMDBCMEQxMTg0QjE4NDkxQTg4MDRBODA4RjA1REZBMTE0QUFCDQo6MTBEODQwMDAwNTQ2NDBGMjEzMjEwMUYwMzFGQzAwMkRBMkQxMDRBOUJDDQo6MTBEODUwMDA2ODQ2MDhGMEVBRkEwQjRBMDU0NjQwRjIxNTIxMDFGMDQ1DQo6MTBEODYwMDAyNUZDMDAyRDk2RDE2OTQ2MjA0NjA4RjBERUZBMDU0QUNGDQo6MTBEODcwMDAwNDQ2NDBGMjFBMjEwMUYwMTlGQzAwMkM4QUQxMjA0NkZFDQo6MTBEODgwMDAwOUIwRjBCRDVGQUQwMTA4NTNBRDAxMDg1N0FEMDEwODA3DQo6MTBEODkwMDA1QkFEMDEwODg0QTcwMTA4OURBNDAxMDgxRkI1MEM0NkQzDQo6MTBEOEEwMDBEMUY4NDMyMDZCNDYwNEYxMjMwMDExMzFGRkY3NDJGRDBDDQo6MTBEOEIwMDAxMDIyNjk0NjYwMUMwOUYwNjNGQkIwRkE4MEYwNDAwOTUxDQo6MTBEOEMwMDAwNEIwMTBCRDJERTlGMDQxQURGNTdFN0QxMzQ2MDY0NjRFDQo6MTBEOEQwMDAwQTQ2MDE0NjU3QTgwMkYwQkJGOTA0NDY1OEIxN0M0QkYyDQo6MTBEOEUwMDA3QzQ5N0Q0ODQwRjIzNjIyRkVGN0M2RkQyMDQ2MERGNTA0DQo6MTBEOEYwMDA3RTdEQkRFOEYwODE1NzlCMDNGMDBGMDMwRjJCMDhEMDBFDQo6MTBEOTAwMDA3NjRCNzQ0OTc0NDg0MEYyM0IyMkZFRjdCNUZEMTQyNDZGDQo6MTBEOTEwMDBFQ0U3NzM0QTlERjhGMzMzNTI3ODAxMkEwQUQxMDAyQkMxDQo6MTBEOTIwMDAzRkQxNzA0QjZCNDk2QzQ4NDBGMjQxMjJGRUY3QTRGRDk5DQo6MTBEOTMwMDAzNjI0REJFNzAwMkIzNEQxOURGOEUyNTMwMDJENDBGMDc0DQo6MTBEOTQwMDBDNTgwNjQ0RkRGRjhBQzgxRjc5QkFCNDIzN0Q4MDMyMjI4DQo6MTBEOTUwMDAwOEE5MzA0NjA4RjA0REZBNUU0QTA0NDY0RkY0MUI3MUEwDQo6MTBEOTYwMDAwMUYwQTRGQjAwMkM2MUQxOURGOEUwMzMwNDkzRjI5QkZEDQo6MTBEOTcwMDAwMjkzOURGOEM2MzMwMTkzMDdBRkE5QUIwMDkzMENBQTlEDQo6MTBEOTgwMDAwOEE5MDM5NzRGRjQ5NjczNjBBOEZGRjcwRkZENTE0QTVCDQo6MTBEOTkwMDAwNDQ2NDBGMjcyMjEwMUYwODlGQjAwMkM0OEQwRTRCMjI5DQo6MTBEOUEwMDBBNEU3NThBOTBERjJFMzMwRkZGNzM0RkI0OTRBMDQ0NkQ3DQo6MTBEOUIwMDA0MEYyNDkyMTAxRjA3QUZCMDAyQ0JERDA5NkU3MENBOTdBDQo6MTBEOUMwMDBGM0E4MDJGMDYxRjgxMTI4MDQ0NjAxRDEwMTM1QkJFNzQ0DQo6MTBEOUQwMDAzQTQ2NDBGMjVBMjEwMUYwNjlGQjAwMkM4NkQxNDM0NkI5DQo6MTBEOUUwMDAyMjQ2MjE0NjRGRjQwMDcwRkVGNzQ2RkQwREYxMzEwMTREDQo6MTBEOUYwMDA0RkY0MDA3MDQ2MjJGRUY3ODdGRDBDQTk2MEE4RkZGN0UwDQo6MTBEQTAwMDA0REZGNDBCMTIyNDYyMTQ2MDA5NTM3NEIwMjIwRkVGN0RDDQo6MTBEQTEwMDAzM0ZEMTkyNDZBRTdGM0E4MDhGMERBRkUzQTQ2MDQ0NjEzDQo6MTBEQTIwMDA0MEYyNjcyMTAxRjA0MkZCMDAyQ0NGRDAxMDI0NURFN0NCDQo6MTBEQTMwMDBGQ0Y3QTRGODI0QUQxNEFCMDA5MzAxOTUwQ0FCMzk2ODQ2DQo6MTBEQTQwMDA1OEFBMTg0NkZGRjc2OUZFMjg0QjAwOTAwNzQ2MjI0NjYxDQo6MTBEQTUwMDAyMTQ2MDIyMEZFRjcxMEZEM0E0NjI5NDYwMjIwRkVGNzM1DQo6MTBEQTYwMDA1M0ZEM0E0NjI5NDYwOEE4RkZGNzc4RkUxOTRBMDQ0NkFFDQo6MTBEQTcwMDA0MEYyN0EyMTAxRjAxQUZCMDAyQzdGRjQzN0FGMDEyMjJCDQo6MTBEQTgwMDAwMDIzMDhBODA4RjBDM0Y4MTI0QTA1NDY0MEYyN0UyMTk4DQo6MTBEQTkwMDAwMUYwMENGQjAwMkRDOUQxMTU0OTA4QThGRkY3RDNGOUY3DQo6MTBEQUEwMDAwQzRBMDU0NjRGRjQyMDcxMDFGMDAwRkIwMDJEQkREMTVBDQo6MTBEQUIwMDAwOEE5MzA0NjA4RjBCOUY5MDY0QTA1NDY0RkY0MjE3MTI1DQo6MTBEQUMwMDAwMUYwRjRGQTAwMkQzRkY0MTFBRkFGRTcyQzI0MERFNzdEDQo6MTBEQUQwMDBGMkIyMDEwODVGQUQwMTA4MTAwMDAwODAxN0IzMDEwODIxDQo6MTBEQUUwMDAwNDYxMDAyMDU0QjMwMTA4N0JCMzAxMDg4REIzMDEwODIxDQo6MTBEQUYwMDA5Q0IzMDEwODY5QjMwMTA4RjBCNTA0MjI4N0IwMDAyMzg0DQo6MTBEQjAwMDAwQzQ2MDY0NjA4RjA4M0Y4NTM0QTA3NDY0MEYyQjcyMTEwDQo6MTBEQjEwMDAwMUYwQ0NGQTlGQjk5NEY4NDEzMDkzQjE0RjRCMUI3ODg4DQo6MTBEQjIwMDA3QkIxMDQyMjAyQTkzMDQ2MDhGMDYzRjkwMTI3MDU0NkJCDQo6MTBEQjMwMDA0OTRBNDBGMkJGMjEyODQ2MDFGMEI4RkE0NUIxMTAyMDA5DQo6MTBEQjQwMDAzOUUwMDEyMjAyQTkzMDQ2MDhGMDUzRjkwNTQ2RUZFNzEzDQo6MTBEQjUwMDA5NEY4NDAzMDAwOTMyQTQ2Mjk0NjQxNEI0RkY0MDA3MDE4DQo6MTBEQjYwMDBGRUY3OEFGQzAyMjIzRjQ5MDJBODA4RjBENkY4M0E0QTlBDQo6MTBEQjcwMDAwNTQ2NEZGNDMxNzEwMUYwOTlGQTAwMkRERkQxOTRGODg4DQo6MTBEQjgwMDA0MDIwMjE0NjAyQTgwOEYwQjdGODMzNEEwNTQ2NDBGMjgzDQo6MTBEQjkwMDBDNzIxMDFGMDhCRkEwMDJERDFEMTc3QjkwMkE5MzA0NjA3DQo6MTBEQkEwMDAwOEYwNDNGOTJDNEEwNDQ2NDBGMkUyMjEwMUYwN0VGQUUzDQo6MTBEQkIwMDAwMDJDQzREMTIwNDYwN0IwRjBCRDA0MjIyQTQ5MDJBODk3DQo6MTBEQkMwMDAwOEYwQUJGODI0NEEwNTQ2NDBGMkNEMjEwMUYwNkVGQTg4DQo6MTBEQkQwMDAwMDJEQjREMTA0RjE0MTAxMDJBOEZGRjczNEY5MUU0QTI3DQo6MTBEQkUwMDAwNTQ2NEZGNDM0NzEwMUYwNjFGQTAwMkRBN0QxMEIyMkU0DQo6MTBEQkYwMDAxRTQ5MDJBODA4RjA5MUY4MTc0QTA1NDY0MEYyRDMyMUMxDQo6MTBEQzAwMDAwMUYwNTRGQTAwMkQ5QUQxMDRGMTgyMDEwMkE4RkZGNzI1DQo6MTBEQzEwMDAxQUY5MTE0QTA1NDY0MEYyRDYyMTAxRjA0N0ZBMDAyREMzDQo6MTBEQzIwMDA4REQxMDQyMjEyNDkwMkE4MDhGMDc3RjgwQTRBMDU0NjY1DQo6MTBEQzMwMDA0MEYyRDkyMTAxRjAzQUZBMDAyRDgwRDEwNEYxQTIwMTdEDQo6MTBEQzQwMDAwMkE4RkZGNzAwRjkwNDRBMDQ0NjRGRjQzNzcxMDFGMEM3DQo6MTBEQzUwMDAyREZBMDAyQ0EyRDA3MkU3NUZBRDAxMDg3MDU4MDAyMEE5DQo6MTBEQzYwMDBFQ0JFMDEwOEUyQUQwMTA4RTVBRDAxMDhFQUFEMDEwODJFDQo6MTBEQzcwMDBGNkFEMDEwODJERTlGMDRGMDBGNUI0NzgwMDI0RTVCMEM5DQo6MTBEQzgwMDAwNTQ2QTE0NkMyNDZENUY4NEM2MTRFNDU2NkRDMDAyRUREDQo6MTBEQzkwMDA0RkQxRkJGNzlERkVENUY4MjgxMTYwNEZERkY4QTQ4MTI2DQo6MTBEQ0EwMDBERkY4QTQ5MTA1RjEyODAwRkJGN0NDRkUwMkE4RkJGN0YyDQo6MTBEQ0IwMDBEMUZFNUI0QjMyNDYzMTQ2NEZGNDAwNzBGRUY3RENGQjgxDQo6MTBEQ0MwMDAyMDIyMDJBOTRGRjQwMDcwRkVGNzFFRkNCN0Y4NEEzMDdDDQo6MTBEQ0QwMDBCMzQyMkNERDBBQTkzMDQ2RkJGN0EwRkQwMDIyNDM0NkUzDQo6MTBEQ0UwMDAxMTQ2NEZGNDAwNzAwMDk2RkVGN0M2RkIyMDIyMERGMTlFDQo6MTBEQ0YwMDA0QTAxNEZGNDAwNzBGRUY3MDdGQzIwMjIwMkE5MERGMTQzDQo6MTBERDAwMDA0QTAwMDlGMDNERjkwMjQ2MDAyODQwRjA4NDgwMDE0NkFGDQo6MTBERDEwMDAwMDk2NEI0NjA0MjBGRUY3QUZGQjEzMkM2Q0QxMDA5NDA5DQo6MTBERDIwMDA0MDRCNDE0OTQxNDg0MEYyMkEzMkZFRjdBNUZCQzVGODc1DQo6MTBERDMwMDA0QzQxRDVGODRDMzEwMDkzMDAyMjExNDYzQzRCMDQyMDU1DQo6MTBERDQwMDBGRUY3OUFGQjUwNDYzQjRCRDVGODRDMTE0MEYyNjkxMjU2DQo6MTBERDUwMDAwOUYwM0NGRjIwNDY2NUIwQkRFOEYwOEY0MTQ2MDVGMTczDQo6MTBERDYwMDAyODAwRkZGNzlCRkQwNzQ2QzhCOTQwRjI2OTE2MDZGQjdEDQo6MTBERDcwMDAwOTU2MDI0NkQ2RjhBQjMxMDA5MzAxNDYyRTRCMDQyMERCDQo6MTBERDgwMDBGRUY3N0FGQjg2RjhBQjcxODZGOEFDNzE4NkY4QUQ3MTU4DQo6MTBERDkwMDA4NkY4QUU3MTA5RjEwMTA5MDhGMjY5MTg3M0U3MUY0QkEzDQo6MTBEREEwMDBCM0Y4NEFCMDA4RjEwMTA2MDAyN0JCNDUwN0RDMDAyMkEyDQo6MTBEREIwMDAyMjRCMTE0NjRGRjQwMDcwRkVGNzVFRkIxOEUwMEFBOUYzDQo6MTBEREMwMDAzODQ2RkJGNzJCRkQzMTQ2MEFBOEZGRjcxRkY4ODhCMTRDDQo6MTBEREQwMDAwMDIyMTE0NjRGRjQwMDcwMDA5NzE5NEJGRUY3NENGQkUwDQo6MTBEREUwMDA0RkY0OTE3MjBERjE2RTAxMDhGMTQ3MDAwOUYwRDdGODc4DQo6MTBEREYwMDAwMTM0Q0ZFNzAxMzdEOEU3NDBGMjY5MTAwMEZCMDQ1MDQ3DQo6MTBERTAwMDAwMTIzODBGODY4MzE0RkY0QjQ3MjBBQTkwMEYyNjkxMDU2DQo6MTBERTEwMDAwOUYwQzVGODAxMzQwMTM2NThFNzAwQkYwNDYxMDAyMDVEDQo6MTBERTIwMDA4M0FGMDEwOEI5QUYwMTA4NUZBRDAxMDgxMDAwMDA4MEExDQo6MTBERTMwMDBFQkFGMDEwODAxQ0UwMDA4MjNBRjAxMDg2MUFGMDEwODc0DQo6MTBERTQwMDAzOEFGMDEwODkzQUYwMTA4QTBBRjAxMDgyREU5RjA0MUY4DQo6MTBERTUwMDBBNEIwMUY0NjJBOUIwNjQ2MEQ0NjkwNDZBQkJCMDEyMjQ2DQo6MTBERTYwMDAwMDIzMzA0NjA3RjBEM0ZFNTM0QTA0NDY0MEYyOTkyMTdFDQo6MTBERTcwMDAwMUYwMUNGOTAwMkM0MEQwMTAyNDRGNEE0RkY0NUE3MTg1DQo6MTBERTgwMDAyMDQ2MDFGMDEzRjlBNEJCNjgxQzIzNDYyMjQ2NDYyMTE0DQo6MTBERTkwMDBGQkY3M0FGRjEyQUQwMkFCM0E0NjI1MjEwMDkzNDA0NjBDDQo6MTBERUEwMDA0MzQ2MDE5NUZGRjczOUZDMDMyMjA3NDYwMDIzMzA0NjFEDQo6MTBERUIwMDAwN0YwQURGRTQwNEE4MDQ2NEZGNDVDNzEwMUYwRjZGODgxDQo6MTBERUMwMDBCOEYxMDAwRjY5RDAxMDI0MTNFMDAwMjIxMTQ2M0I0QjNCDQo6MTBERUQwMDA0RkY0MDA3MEZFRjdEMEZBMDVGMTQ3MDEzMDQ2RkZGNzI2DQo6MTBERUUwMDAwQkZFMzU0QTA0NDY0RkY0NTk3MTAxRjBERkY4MDAyQzVGDQo6MTBERUYwMDBCNUQwMjA0NjI0QjBCREU4RjA4MTAyMjIxMkE5MzA0NkY4DQo6MTBERjAwMDAwN0YwNzdGRjJDNEEwNDQ2NEZGNDI3NzEwMUYwQ0VGODUyDQo6MTBERjEwMDAwMDJDQjFEMTA0MjIyQTQ5MTJBODA3RjBGRUZFMjY0QTlEDQo6MTBERjIwMDAwNDQ2NEZGNDI4NzEwMUYwQzFGODAwMkNBNEQxMEEyMjU0DQo6MTBERjMwMDAyNDQ5MTJBODA3RjBGMUZFMUY0QTA0NDY0MEYyQTMyMTJCDQo6MTBERjQwMDAwMUYwQjRGODAwMkM5N0QxMDIyMjFGNDkxMkE4MDdGMDYzDQo6MTBERjUwMDBFNEZFMTk0QTA0NDY0MEYyQTcyMTAxRjBBN0Y4MDAyQzdDDQo6MTBERjYwMDA4QUQxNDYyMjY5MUMxMkE4MDdGMEM2RkUxMjRBMDQ0NjRFDQo6MTBERjcwMDA0MEYyQUEyMTAxRjA5QUY4MDAyQzdGRjQ3REFGMTJBOTlCDQo6MTBERjgwMDAzMDQ2MDdGMDUyRkYwQzRBMDQ0NjQwRjJBRTIxMDFGMDQxDQo6MTBERjkwMDA4REY4MDAyQzNGRjQ3MUFGNkVFNzI5NDYzQTQ2MzA0NkMzDQo6MTBERkEwMDAwN0YwQUFGRTA0NEEwNTQ2NDBGMjcyMzEwMUYwN0VGOEZEDQo6MTBERkIwMDAwMDJEOUVEMDg3RTcwMEJGNUZBRDAxMDhGOEFFMDEwOEQ1DQo6MTBERkMwMDBCRkI3MDEwODE4QUYwMTA4RTJBRDAxMDgyREU5RjA0MzIxDQo6MTBERkQwMDA1MDRFMzU0NjA3NDYwRkNEOTFCMDA2QUMwRkM0MEZDRDVEDQo6MTBERkUwMDAwRkM0OTVFODAzMDA0MUY2MTQzMzQ0RjgwNDBCMjE3MDg0DQo6MTBERkYwMDBGMTU4MzQ0NjAwMjkwMEYwOEI4MDRFMUUwNkE4RTY1MEVBDQo6MTBFMDAwMDBGRUY3MkVGRjQwRjI2OTEzMDNGQjA2NDM5M0Y4Q0M4MDIyDQo6MTBFMDEwMDBCOEYxMDAwRjE3RDAwMDIyMTE0NjNGNEI0RkY0MDA3MEFCDQo6MTBFMDIwMDBGRUY3MkFGQTA0MjIwMkE5Mzg0NjA3RjBFMkZFM0I0QTJDDQo6MTBFMDMwMDAwNTQ2NEZGNDY1NzEwMUYwMzlGODZEQjExMDI0MjA0NkEyDQo6MTBFMDQwMDAxMUIwQkRFOEYwODM0MjQ2MzU0QjQxNDY0RkY0MDA3MEI1DQo6MTBFMDUwMDBGRUY3MTJGQTAzMjJFNkU3MzI0QjJBNDYyOTQ2NEZGNDJFDQo6MTBFMDYwMDA4MDYwRkVGNzA5RkEwNkE5MjAyMjRGRjQ4MDYwRkVGN0NGDQo6MTBFMDcwMDA0QkZBMDIyMjAwMjMwMkE4MDdGMEM5RkQyNzRBODE0Njc1DQo6MTBFMDgwMDA0MEYyOTkzMTAxRjAxMkY4QjlGMTAwMEZENkQxMjUyMkYyDQo6MTBFMDkwMDAwNkE5MDJBODA3RjAzMEZFMjA0QTgxNDY0MEYyOUIzMUQzDQo6MTBFMEEwMDAwMUYwMDRGOEI5RjEwMDBGQzhEMTFGNEIxQjc4NDBGMjAyDQo6MTBFMEIwMDA2OTExNEU0MzZCQjkyQTQ2Mjk0NjRGRjQwMDcwMUI0QjM5DQo6MTBFMEMwMDBGRUY3REFGOTA2RjFDRDAwNDEyMjI5NDYyMDQ0MDhGMDk2DQo6MTBFMEQwMDA4QUZGMDZGMTQ1MDEyMTQ0MDZBQUNERjgwMDgwMTQ0QkMxDQo6MTBFMEUwMDAwMkE4RkZGN0IzRkUwRDRBMDQ0NjQwRjJBNzMxMDBGMDQ0DQo6MTBFMEYwMDBEREZGMDAyQ0EzRDEwMkE5Mzg0NjA3RjA5NkZFMDc0QTlGDQo6MTBFMTAwMDAwNTQ2NDBGMkFBMzEwMEYwRDFGRjAwMkQ5N0QwOTVFN0U3DQo6MTBFMTEwMDAzMDI0OTRFNzUwM0QwMDIwMjRCMTAxMDg1RkFEMDEwODkwDQo6MTBFMTIwMDAyMEIxMDEwODREQjEwMTA4NzA1ODAwMjA1OUIxMDEwODEzDQo6MTBFMTMwMDA3NTNEMDAyMDJERTlGMDQ3QURGNUVGNUQ4NkIwODE0NkQ1DQo6MTBFMTQwMDAxNkE4MDFGMEMxRkYwNDQ2NjBCMTk4NEI5ODQ5OTk0ODYwDQo6MTBFMTUwMDA0MEYyQjczMkZFRjc5MEY5MjA0NjBERjVFRjVEMDZCMEJDDQo6MTBFMTYwMDBCREU4RjA4Nzk0NEE5REY4QkIzMTUyNzgwMTJBMDlEMTY1DQo6MTBFMTcwMDA0QkI5OTI0QjhFNDk4RjQ4NDBGMkJEMzJGRUY3N0NGOTg1DQo6MTBFMTgwMDAzNjI0RTlFNzgzQjExNkFCMTdBOTAzRjI1MzEwRkVGNzYzDQo6MTBFMTkwMDA0MUZGODc0QTA0NDY0MEYyQzUzMTAwRjA4N0ZGMDAyQzVBDQo6MTBFMUEwMDBEQUQxODc0QjAxMjIxQTcwNjA5QjAwMkIwMEYwRkM4MEIzDQo6MTBFMUIwMDA5REY4N0MzMDAwMkIwMEYwRjc4MDAwMjI2OTlCMDA5M0QzDQo6MTBFMUMwMDAxMTQ2ODA0QjA0MjBGRUY3NTdGOTE2QThGRkY3NTJGREMxDQo6MTBFMUQwMDAxNkFBNDcxRTQwRjI2OTEzMDNGQjA3MjMwMTI4OTNGODkwDQo6MTBFMUUwMDBFRkExODA0NkNDQkYwNDIyMDMyMkJBRjEwMDBGMDBEMDc5DQo6MTBFMUYwMDAwMTMyMDhBOTQ4NDYwN0YwRkNGRDZENEEwNDQ2NDBGMjhBDQo6MTBFMjAwMDBFMTMxMDBGMDUzRkYwQ0IxMTAyNEE1RTcwQ0FCMDc5M0VDDQo6MTBFMjEwMDBDREU5MDM0NENERTkwMTQ0MDA5NDA3OUEwOEE5MjUyM0Q4DQo6MTBFMjIwMDAyMEE4RkZGN0MzRjg2MjRBMDQ0NjRGRjQ3OTcxMDBGMDYyDQo6MTBFMjMwMDAzREZGMENCMUU0QjI4RkU3QjhGMTAwMEY0OERENjdCM0UyDQo6MTBFMjQwMDAxMzJGMDlEOTVCNDg2MDRCNTk0OTQwRjI0MTMyRkVGNzIwDQo6MTBFMjUwMDAxM0Y5MDEyMDA4RjA0QUZFMTZBQjVDNEExN0FEMDNGMTMyDQo6MTBFMjYwMDAyNDA2MkI0NjAzQ0JCMzQyMTA2MDUxNjAxRDQ2MDJGMUQ5DQo6MTBFMjcwMDAwODAyRjZEMTA3OUU1NjREMEZDRTBGQzUwRkNFMEZDNTIzDQo6MTBFMjgwMDA5NkU4MDMwMDQ1RjgwNDBCMjg0NjQwRjI2OTEyMDBGOEFFDQo6MTBFMjkwMDAyMTFCN0E0MzcwQTkwOEYwODJGRTQxRjYxNDMzNEM0REREDQo6MTBFMkEwMDAwMDIyRUY1MDExNDYwMDk3NEE0QjA0MjBGRUY3RTRGODk1DQo6MTBFMkIwMDBCOEYxMDEwRjE1RDEwMDIyMTE0NjQ3NEI0RkY0MDA3MDAxDQo6MTBFMkMwMDBGRUY3REFGODQxMjIwMDIxOTJBODA4RjA4Q0ZFMERFMDVBDQo6MTBFMkQwMDA0MjRCMzc0OTM3NDg0MEYyRkQzMkZFRjdDREY4MkUyNDQ1DQo6MTBFMkUwMDAzQUU3MDVGNUQ5NTUyQjc4MDAyQkU0RDAwMDIyM0M0QkJBDQo6MTBFMkYwMDAzQzRFMTE0NjA0MjBGRUY3QkZGODQwRjI2OTE1Njk5QkI5DQo6MTBFMzAwMDBBMzQyMjdEQ0I4RjEwMTBGMzJEMTE2QUI0MEYyNjkxMUZDDQo6MTBFMzEwMDAwMUZCMDczMTA3OUFDREY4MDBBMDAxRjVCNDcxMDQzMzcxDQo6MTBFMzIwMDAwOEE4RkZGNzkzRkQyMjRBMDQ0NjQwRjIxOTQxMDBGMDg1DQo6MTBFMzMwMDBCREZFMDAyQzdGRjQxMEFGMDhBOTQ4NDYwN0YwNzVGRDFDDQo6MTBFMzQwMDAxQjRBMDU0NjQwRjIxQzQxMDBGMEIwRkUwMDJEM0ZGNDkwDQo6MTBFMzUwMDAwM0FGNTlFNzE2QUIwNUZCMDQzMzAwMjJEM0Y4QUIzMTBBDQo6MTBFMzYwMDAwMDkzMTE0NjMzNDYwNDIwRkVGNzg2RjgwMTM0QzZFN0QxDQo6MTBFMzcwMDAwNTIyMDAyMzA4QTgwN0YwNEFGQzBENEEwNDQ2NDBGMjkzDQo6MTBFMzgwMDAxMTQxMDBGMDkzRkUwMDJDN0ZGNDNFQUY0MjQ2RDMxN0JDDQo6MTBFMzkwMDAwOEE4MDdGMDNDRkMwNjRBMDQ0NjQwRjIxMzQxMDBGMDhFDQo6MTBFM0EwMDA4NUZFMDAyQ0IxRDAyRkU3MTQyNEQ1RTZGREFGMDEwODdGDQo6MTBFM0IwMDA1RkFEMDEwODEwMDAwMDgwMDQ2MTAwMjA1NEIzMDEwODIzDQo6MTBFM0MwMDA3MDU4MDAyMDIwQjAwMTA4MzlCMDAxMDg3NTNEMDAyMEM4DQo6MTBFM0QwMDA1MDNEMDAyMDU3QjAwMTA4OERCMDAxMDg2REIwMDEwODE0DQo6MTBFM0UwMDBDNkIwMDEwOEUxQjAwMTA4MDhCNTQxRjIwNDAyMDAyMUZEDQo6MTBFM0YwMDAwOEYwRjlGRDAwRjU4MDUzNEZGNDgwNTIxQTgwMDhCREYzDQo6MTBFNDAwMDAzN0I1M0Y0Q0ZCRjdBQ0ZCMjA0NkZCRjc1RkY4MDAyMDJEDQo6MTBFNDEwMDBGQUY3N0VGRjIzNzhBNTJCNDJEMTAwMjIzOTRCMTE0NjEzDQo6MTBFNDIwMDA0RkY0MDA0MEZFRjcyOEY4Mzc0OEZCRjdEN0ZBNjM3ODM3DQo6MTBFNDMwMDAwMTJCNTZEMTAwMjIzNTREMzU0QjAwOTUxMTQ2NEZGNDM2DQo6MTBFNDQwMDAwMDQwRkVGNzE5RjhGQkY3QzNGQTYxNkMyODQ2RkJGN0FBDQo6MTBFNDUwMDBGOUZBMzA0OEZCRjdGRUZBOTRGOTQ4MzAwMDkzMDAyMkFEDQo6MTBFNDYwMDAyRDRCMTE0NjRGRjQwMDQwRkVGNzA2Rjg5NEY5NDgzMDYyDQo6MTBFNDcwMDAwMDJCMDVEQzAwMjIyOTRCMTE0NjEwMjBGREY3RkNGRjg0DQo6MTBFNDgwMDAxMDIxMjc0OEZCRjc3OEY5MDEyODMyRDAyNTQ4MjY0QjgwDQo6MTBFNDkwMDAyNjQ5NDBGMjE1NjJGREY3RUZGRjAxMjAwOEYwMjZGRDQ2DQo6MTBFNEEwMDAwMDIyMjM0QjExNDY0RkY0MDA0MEZERjdFNUZGRkJGNzM4DQo6MTBFNEIwMDAxOUY4MDU0NjY4QjEwMDIyMTE0NjFFNEIxMDIwRkRGN0UxDQo6MTBFNEMwMDBEQkZGMjA0NkZCRjcwOEY4MDAyMTIwNDZGQkY3MUNGODhEDQo6MTBFNEQwMDBBQUU3RkVGN0RERkMyOTQ2MjA0NkZCRjcxNUY4MDEyMUU3DQo6MTBFNEUwMDBGM0U3MDAyMjE0NEIxMTQ2NEZGNDAwNDBGREY3QzRGRjQwDQo6MTBFNEYwMDBCQ0U3MTI0OTEyNDgwM0IwQkRFODMwNDBGQkY3NkVCQkUxDQo6MTBFNTAwMDAwNDYxMDAyMDhFQjEwMTA4NTI2MTAwMjAwNjYxMDAyMEU0DQo6MTBFNTEwMDAxOEIyMDEwODMwM0QwMDIwMjhCMjAxMDg0OUIyMDEwOEI0DQo6MTBFNTIwMDBCNDYwMDAyMDEwMDAwMDgwNTlCMjAxMDg1RkFEMDEwOEZFDQo6MTBFNTMwMDBBOUIxMDEwOEQ5QjEwMTA4M0JCMjAxMDgxMDNEMDAyMDgyDQo6MTBFNTQwMDBDNDYwMDAyMDBCMUYzQzJCRjdCNTA1NDYwRTQ2MDlEOUM5DQo6MTBFNTUwMDAxQjQ4MUM0QjFDNDk0RkY0QzY2MkZERjc4REZGMDEyMDgwDQo6MTBFNTYwMDAwOEYwQzRGQzE5NEM0MDIyMDAyMTIwNDYwOEYwM0JGRDc1DQo6MTBFNTcwMDAwMDI3MzI0NjI5NDYyMDQ2MDhGMDFDRkRDNEY4NDI2MEI4DQo6MTBFNTgwMDA4NEY4M0Y3MEZCRjcyNEZBMzE0NjIwNDZGQkY3NUFGQTJEDQo6MTBFNTkwMDBBNTFFMEY0OEZCRjc1RUZBMDEyMTI4NDYwNEY4MDExQzZFDQo6MTBFNUEwMDBGQUY3QjJGRjM5NDYyODQ2RkFGN0FFRkYwMDk0MDk0QjU2DQo6MTBFNUIwMDAzQTQ2Mzk0NjQwMjBGREY3NUZGRjAzQjBGMEJEMDBCRjhCDQo6MTBFNUMwMDAxMDAwMDA4MDAxQjUwMTA4NUZBRDAxMDgwNjYxMDAyMDYwDQo6MTBFNUQwMDAzMDNEMDAyMDE5QjUwMTA4MTNCNTFENEExRDRDOTJGOUI0DQo6MTBFNUUwMDAwMDMwMDAyQkM0QkYwM0YxRkYzMzEzNzA5NEY5NDgzMDlGDQo6MTBFNUYwMDAwMDJCMjRERDAxM0IwMDIwODRGODQ4MzBGRUY3QzZGRUU2DQo6MTBFNjAwMDA5NEY5NDgzMDAwOTMwMDIyMTM0QjExNDYwODIwRkRGNzdGDQo6MTBFNjEwMDAzM0ZGOTRGOTQ4MzAwMDJCMEZEQzEwMjIwMDIxMEY0ODAzDQo6MTBFNjIwMDAwOEYwRTFGQzIwMjIwMDIxMEQ0ODA4RjBEQ0ZDMDAyMjZCDQo6MTBFNjMwMDAwQzRCMTE0NjA4MjBGREY3MUZGRjAwMjAwNkUwMDAyMkNBDQo6MTBFNjQwMDAwODIwMDg0QjExNDZGREY3MTdGRkZGMjAwMkIwMTBCRDUwDQo6MTBFNjUwMDA1NDAxMDAyMDA0NjEwMDIwRDVBRTAxMDhCNDYwMDAyMDAwDQo6MTBFNjYwMDAzMDNEMDAyMEU4QUUwMTA4MDQ0QjA4MjI4M0Y4NDgyMDIyDQo6MTBFNjcwMDAwMzRCMDMyMjAwMjAxQTcwRkVGNzg4QkUwNDYxMDAyMEJEDQo6MTBFNjgwMDA1NDAxMDAyMDJERTlGMDQxOTJCMDNGMjkwNjQ2MEQ0Njg1DQo6MTBFNjkwMDAxMDQ2MUM0NjE4OUY0MEYzQUM4MDU4NEI1QTc4MDEyQTBDDQo6MTBFNkEwMDA5ODQ2MDlEMTkzRjk0ODMwMDAyQjQwRjNBNDgwNTQ0QjhEDQo6MTBFNkIwMDA5M0Y5MDAzMDAwMkI3OUREMDJBQTUyNDlGQkY3QThGQTQyDQo6MTBFNkMwMDBGQkY3ODZGOTIwMjEwMkE4RkJGN0JDRjkwMkE4RkJGN0FCDQo6MTBFNkQwMDBDMUY5MjAyMTAyQTgwQUFBRkJGN0MyRjkyOTQ2MzA0NjRGDQo6MTBFNkUwMDBGQkY3QjBGOTFGQjExMDIxMzg0NkZCRjdBQkY5MEFBQUM2DQo6MTBFNkYwMDAyMDIxMDJBOEZCRjdGMkY5MjE0NjEwMjIwQUE4MDhGMDBGDQo6MTBFNzAwMDAzRkZDMDE0NkEwQjE0MDRCNDA0OTQxNDg0MEYyNTQ0MkQxDQo6MTBFNzEwMDBGREY3QjJGRTEwMjIxMDQ2MEFBOUZERjdGNUZFMTAyMjAxDQo6MTBFNzIwMDAxMDQ2MjE0NkZERjdGMEZFMzMyMDEyQjBCREU4RjA4MTFGDQo6MTBFNzMwMDAwMkE4RkJGNzg3RkExNUYwMEYwNDE3RDEyOTQ2MzA0NkQ3DQo6MTBFNzQwMDBGQkY3QTZGQTA2RjE0MDAzMTNGODAxMkQ4MkIxQzRGMURDDQo6MTBFNzUwMDA0MDA0MjMxRjNCMkIwRkQ5MkQ0ODAwOTQyRDRCMkI0OUYwDQo6MTBFNzYwMDA0MEYyNkE0MkZERjc4OEZFMzcyMERFRTcwMTM1RTJFNzM2DQo6MTBFNzcwMDAzRjJDRUNEMDAxMzRFN0U3MDAyMjI3NEIxMTQ2MDgyMDVDDQo6MTBFNzgwMDBDREU5MDA2NEZERjc3OEZFMjI0NjMxNDYwODIwRkRGNzBBDQo6MTBFNzkwMDBCQkZFOThGODAxMzAwMTJCMjVEMTk4Rjk0ODMwMDAyQkE5DQo6MTBFN0EwMDAyOUREMTc0RDk1RjkwMDMwMDAyQjAxREMzNDIwQkNFNzQyDQo6MTBFN0IwMDAwMDIwRkJGNzYzRkExMDIxMzg0NkZCRjc2OUZBMTAyMkI0DQo6MTBFN0MwMDAxNjQ5Mzg0NjA4RjBEQ0ZCNThCMTBFNDkxNDQ4RkJGN0VGDQo6MTBFN0QwMDAwNUZBRkZGNzAxRkY5NUY5MDAzMDAwMkJFNkREMzEyMDQ3DQo6MTBFN0UwMDBBM0U3RkZGNzQxRkYzMDQ2MjE0NkZGRjdBQkZFMDAyMENEDQo6MTBFN0YwMDA5QkU3N0YyMDk5RTczMjIwOTdFNzAwQkYwNDYxMDAyMDY0DQo6MTBFODAwMDA1NDAxMDAyMDEwM0QwMDIwMkFCNTAxMDg1RkFEMDEwODI5DQo6MTBFODEwMDAxMDAwMDA4MDQ5QjUwMTA4NzZCNTAxMDgzMDNEMDAyMEEwDQo6MTBFODIwMDBDNDYwMDAyMEYwQjUwRjQ2ODlCMDE1NDY0MDQ5NkE0NkREDQo6MTBFODMwMDAwNjQ2Mzg0NkZCRjdFQ0Y5RkJGN0NBRjgyMDIxNjg0Njk0DQo6MTBFODQwMDBGQkY3MDBGOTY4NDZGQkY3MDVGOTAwMjE2ODQ2RkJGNzdFDQo6MTBFODUwMDBGOUY5MTAyMTI4NDZGQkY3MUJGQTEwMjIzNTQ5Mjg0NjAyDQo6MTBFODYwMDAwOEYwOEVGQjA0NDYwMDI4NTFEMDMzNEIzMzQ5MzQ0ODFFDQo6MTBFODcwMDA0MEYyQTU0MkZERjcwMEZFMzI0QjMwNDkzMDQ4NDBGMkVEDQo6MTBFODgwMDBBNjQyRkRGN0Y5RkQxMDIyMTA0NjI5NDZGREY3M0NGRTkxDQo6MTBFODkwMDAyRDRCMkE0OTJBNDg0MEYyQTc0MkZERjdFREZEMTAyMkYwDQo6MTBFOEEwMDAxMDQ2MjQ0OUZERjczMEZFMjg0QjI0NDkyNDQ4NEZGNEY0DQo6MTBFOEIwMDA5NTYyRkRGN0UxRkQyMDIyNjk0NjEwMjBGREY3MjRGRTU4DQo6MTBFOEMwMDAyMzRCMUU0OTFFNDg0MEYyQTk0MkZERjdENUZENDAyMkM4DQo6MTBFOEQwMDAzOTQ2MTAyMEZERjcxOEZFMUU0QjE4NDkxODQ4NDBGMjIzDQo6MTBFOEUwMDBBQTQyRkRGN0M5RkQ0MDIyMUI0OTEwMjBGREY3MENGRThFDQo6MTBFOEYwMDAwRjQ5MTk0OEZCRjc3MkY5RkZGNzZFRkUxNzRCOTNGOUIyDQo6MTBFOTAwMDAwMDMwMDAyQkQ0QkYzNDIwMzEyMDA5QjBGMEJERkZGNzE4DQo6MTBFOTEwMDBBQkZFMjA0NkZCRjdCMkY5MTAyMjExNDkzMDQ2MDhGMDUxDQo6MTBFOTIwMDA0OUZCMzA0NjEwMjFGQkY3QkJGOTIwNDZFREU3MDBCRjVEDQo6MTBFOTMwMDAxMDNEMDAyMDMwM0QwMDIwNzJBRDAxMDg1RkFEMDEwOEEwDQo6MTBFOTQwMDAxMDAwMDA4MDg3QUQwMTA4OUJBRDAxMDhCMEFEMDEwODQzDQo6MTBFOTUwMDBDMEFEMDEwOEQyQUQwMTA4QzQ2MDAwMjA1NDAxMDAyMDAwDQo6MTBFOTYwMDBCNDYwMDAyMDcwQjVFQUIwMDY0NjBCQTgwMUYwMUFGRUFDDQo6MTBFOTcwMDAwQzlCREExRTAyMkEwNDQ2MEJEOEIyNEE5MkY5NDgyMEIwDQo6MTBFOTgwMDAwMDJBNDBGMzU1ODFCMDRBOTJGOTAwMjAwMDJBNDBGMzUyDQo6MTBFOTkwMDA1MTgxNENCMUFENEJBRTQ5QUU0ODQwRjJENjQyRkRGNzg1DQo6MTBFOUEwMDA2QkZEMjA0NjZBQjA3MEJEMEI5QTAxMkE0MEYwMzc4MTlBDQo6MTBFOUIwMDAwMDJCMDBGMDM0ODEwMTNCOURGOEE2NTEwNDJCMDBGMjlFDQo6MTBFOUMwMDAyNzgxREZFODEzRjAwNTAwNEQwMDgwMDBBQTAwRDMwMDg2DQo6MTBFOUQwMDAwMDIyMTE0NkEwNEIwODIwRkRGNzRFRkQwMTIyMDNBOTlEDQo6MTBFOUUwMDAzMDQ2MDdGMDA2RkE5QTRBMDQ0NjQwRjJFNjQxMDBGMDQzDQo6MTBFOUYwMDA1REZCMENCMTEwMjRENEU3MDEyMzhERjhBNjMxOURGOEZFDQo6MTBFQTAwMDBBNjMxMDAyQjAwRjAxQTgxMDMyMjAwMjMwM0E4MDdGMDhGDQo6MTBFQTEwMDBGRUY4OEY0QTA0NDY0MEYyM0I1MTAwRjA0N0ZCMDAyQ0MxDQo6MTBFQTIwMDBFOEQxODg0QjkzRjk0ODIwMDNBOEQzMTcwN0YwRUZGOEYzDQo6MTBFQTMwMDA4NzRBMDQ0NjQwRjIzRDUxMDBGMDM4RkIwMDJDRDlEMTAyDQo6MTBFQTQwMDAwMDJEMDBGMEVFODAwM0E5MzA0NjA3RjBFRUY5ODA0QTcxDQo6MTBFQTUwMDAwNDQ2NDBGMjQzNTEwMEYwMjlGQjAwMkNBMUQwQzlFNzQ1DQo6MTBFQTYwMDAwMDIyMTE0NjdENEIwODIwMDEzNUZERjcwNUZEMkE0NkExDQo6MTBFQTcwMDAwM0E5MzA0NjA3RjBCREY5NzU0QTA0NDY0MEYyRUY0MTVDDQo6MTBFQTgwMDAwMEYwMTRGQjAwMkNCNUQxMDEyMjAwMjMwM0E4MDdGMEVEDQo6MTBFQTkwMDBCRUY4NkY0QTA0NDY0MEYyRjI0MTAwRjAwN0ZCMDAyQzNBDQo6MTBFQUEwMDBBOEQxNkY0QTZGRjAwNjAzQTJGMTIwMDEwM0E4RkVGNzc4DQo6MTBFQUIwMDAwOUZBNjc0QTA0NDY0MEYyRjQ0MTAwRjBGN0ZBMDAyQ0U0DQo6MTBFQUMwMDA5REQwRTRCMjZERTcwMDIyNjY0QjExNDYwODIwRkRGN0E5DQo6MTBFQUQwMDBEM0ZDNUM0QjVCNzgwMTJCMDBGMEFFODA2NDk5MDlCOUU0DQo6MTBFQUUwMDAxNDI0NUVFNzlERjg4RDMwMDAyQkY5RDA5REY4N0MzMDIyDQo6MTBFQUYwMDAwMDJCRjVEMDAwMjMwMDkzMERBQTBERjE3RDAzMERGMTNEDQo6MTBFQjAwMDA4RTAwRkZGN0JGRkQ1MjRBMDQ0NjQwRjIwNDUxMDBGMDY4DQo6MTBFQjEwMDBDREZBMDAyQzNGRjQ3M0FGNDNFNzAwMjI1MjRCMTE0NjZEDQo6MTBFQjIwMDAwODIwRkRGN0E5RkM0NzRCNUI3ODAxMkIwMUQwMzUyNDY5DQo6MTBFQjMwMDAzN0U3NjQ5OTAwMjlEM0QwOURGODhEMzAwMDJCQ0ZEMEQyDQo6MTBFQjQwMDA5REY4N0MzMDAwMkJDQkQwOURGOEE0MzEwMDJCQzdEMDkyDQo6MTBFQjUwMDA2NUFCMDA5MzBEQUEwREYxN0QwMzBERjE4RTAwRkZGNzVCDQo6MTBFQjYwMDA5MUZEM0I0QTA0NDY0MEYyMTQ1MUQwRTczNTRCNUI3OEE3DQo6MTBFQjcwMDAwMTJCRENEMTAxMzUyQTQ2MDNBOTMwNDYwN0YwMzlGOUNCDQo6MTBFQjgwMDAzMzRBMDQ0NjQwRjIxRDUxMDBGMDkwRkEwMDJDN0ZGNDA1DQo6MTBFQjkwMDAzMUFGMzY0QjIyNDYyMTQ2MDgyMEZERjc2REZDOURGODJCDQo6MTBFQkEwMDA3QzMwMTNCMTlERjhBNDMxM0JCOTMxNEIyODQ5Mjk0ODM5DQo6MTBFQkIwMDA0MEYyMjI1MkZERjc2MEZDOTJFNzAyMjIwMDIzMDNBOEY0DQo6MTBFQkMwMDAwN0YwMjVGODIyNEEwNDQ2NDBGMjI2NTEwMEYwNkVGQTdBDQo6MTBFQkQwMDAwMDJDN0ZGNDBGQUY2NUFBMERBOTA3QThGRkY3MjJGRTRFDQo6MTBFQkUwMDAxQjRBMDQ0NjQwRjIyQTUxMDBGMDYwRkEwMDJDN0ZGNEUwDQo6MTBFQkYwMDBEOEFFMTAyMjA3QTkwM0E4MDdGMDdFRjgxNDRBMDQ0NkVEDQo6MTBFQzAwMDA0MEYyMkQ1MTAwRjA1MkZBMDAyQzNGRjRGOEFFRjFFNjNDDQo6MTBFQzEwMDAxODRCMEY0OTBGNDg0MEYyMzQ1MkZERjcyREZDN0YyNDZBDQo6MTBFQzIwMDBCRkU2OURGOEE2MzEwMDJCN0ZGNDBEQUYwMDI0QjhFNkI3DQo6MTBFQzMwMDAzMjI0QjZFNjM0MjRCNEU2MzAyNEIyRTYwMDJEN0ZGNDY0DQo6MTBFQzQwMDAwMkFGRjNFNzA0NjEwMDIwNTQwMTAwMjBGQkFEMDEwODhFDQo6MTBFQzUwMDA1RkFEMDEwODEwMDAwMDgwMUJBRTAxMDgyREFFMDEwODU5DQo6MTBFQzYwMDBFNDYwMDAyMDQ0QUUwMTA4NTJBRTAxMDg2M0FFMDEwODIyDQo6MTBFQzcwMDA3NkFFMDEwOEFGQUUwMTA4NDFGNjI0MzIwMDIxMDE0ODBBDQo6MTBFQzgwMDAwOEYwQjFCOTUwM0QwMDIwMDhCNUZFRjcwMUY5MDAyMUE4DQo6MTBFQzkwMDAxMjQ4RkFGNzM5RkMwMTIxMTA0OEZBRjczNUZDMTAyMTI3DQo6MTBFQ0EwMDAwRjQ4RkFGNzY5RkQwMTI4MDlEMDBFNDgwRTRCMEY0OUFEDQo6MTBFQ0IwMDA0RkY0REQ2MkZERjdFMEZCMDEyMDA4RjAxN0Y5RkZGN0U0DQo6MTBFQ0MwMDBEQkZGMjAyMjAwMjEwQTQ4MDhGMDhERjkwOTQ5MEE0ODkzDQo6MTBFQ0QwMDBGQUY3ODRGRkJERTgwODQwRkFGNzk2QkUwNDYxMDAyMDA5DQo6MTBFQ0UwMDBCNDYwMDAyMDEwMDAwMDgwNTlCMjAxMDg1RkFEMDEwODM3DQo6MTBFQ0YwMDAzMDNEMDAyMDEwM0QwMDIwQzQ2MDAwMjAyREU5RjA0MzhEDQo6MTBFRDAwMDAxNDQ2MDJGNTgwNTI4N0IwMDU0NjAxRjFGRjM4MDAyMzEyDQo6MTBFRDEwMDAxMjg4MTVGODAxNkI4QzRGMjE0NjAyQTgwNkYwMDRGRUZDDQo6MTBFRDIwMDAwMDIyMTE0Njg5NEJDREY4MDA4MDQwMjBGREY3QTRGQjVFDQo6MTBFRDMwMDAwMDIyODc0QjExNDY0RkY0ODA3MEZERjc5REZCNDI0NjQxDQo6MTBFRDQwMDAyOTQ2NEZGNDgwNzBGREY3REZGQjczMUUwMTJCMEJEOEIzDQo6MTBFRDUwMDA4MDRBOTJGOTQ4MjAwMDJBNDBGM0YwODA3RTRBOTJGOUQ2DQo6MTBFRDYwMDAwMDIwMDAyQTQwRjNFQzgwMDcyQjAwRjJERTgwREZFODcxDQo6MTBFRDcwMDAxM0YwMDgwMDMwMDA4MTAwODkwMERDMDA5NDAwQTAwMDNFDQo6MTBFRDgwMDBBRDAwMDEyMEZBRjdDNEZBMDAyMjc0NEIxMTQ2NDAyMDZFDQo6MTBFRDkwMDBGREY3NzJGQkZBRjc5MEZBMjk0NjQyNDY4MTQ2MDJBODJGDQo6MTBFREEwMDBGRUY3OTBGRDA1NDZGQUY3ODdGQUIwRUIwOTAwNjBFQjM1DQo6MTBFREIwMDAwMDAxMDAyMkNERTkwMDAxNjk0QjExNDY0RkY0MDA2MENCDQo6MTBFREMwMDBGREY3NUFGQjAyOUE0MUYyMDIwMzEyMUJFMjUyOTJCMjgxDQo6MTBFREQwMDAzMUUwMDEyMEZBRjc5Q0ZBMDAyMjYyNEIxMTQ2NDAyMEY0DQo6MTBFREUwMDBGREY3NEFGQkZBRjc2OEZBNDI0NjI5NDY4MTQ2MDJBODJGDQo6MTBFREYwMDBGRkY3QTBGOTA1NDZGQUY3NUZGQUIwRUIwOTAwNjBFQjAwDQo6MTBFRTAwMDAwMDAxMDAyMkNERTkwMDAxNTc0QjExNDY0RkY0MDA2MDhDDQo6MTBFRTEwMDBGREY3MzJGQjAyOUI0MUYyMDIwODFCMUIwMDIyMjRGODgzDQo6MTBFRTIwMDAwODMwOUJCMjAwOTMxMTQ2NTA0QjRGRjQ4MDcwRkRGN0IxDQo6MTBFRTMwMDAyM0ZCMzRGODA4MjAyMTQ2NEZGNDgwNzBGREY3NjRGQjczDQo6MTBFRTQwMDAwMDIwRkFGNzY1RkE0MUY2MTAzM0ZFNTQxREIxNDFGMjg1DQo6MTBFRTUwMDAwMjAzMDAyMkUyNTI0MUYyMDIwMzAwMjJFMzVBMDA5MzJEDQo6MTBFRTYwMDAwMTk1NDM0QjExNDY0MDIwRkRGNzA2RkIyODQ2MDdCMEFEDQo6MTBFRTcwMDBCREU4RjA4MzAwMjIzRjRCMTE0NjQwMjBGREY3RkNGQTJEDQo6MTBFRTgwMDAwMDI1RERFNzAwMjI0MDIwM0I0QjExNDZGREY3RjRGQTU4DQo6MTBFRTkwMDAwMkE4RkVGN0YzRjgwNTQ2OTRFNzAwMjIxMTQ2Mzc0QjI3DQo6MTBFRUEwMDA0MDIwRkRGN0U5RkE0MjQ2Mjk0NjAyQThGRkY3NUFGRDNEDQo6MTBFRUIwMDBGMUU3MDAyMjMyNEIxMTQ2NDAyMEZERjdEREZBRkFGNzY4DQo6MTBFRUMwMDAxOUZDMDAyODNFRDBGRkY3REZGRUQ5RTcwMDIyMkQ0QkNBDQo6MTBFRUQwMDAxMTQ2NDAyMEZERjdEMEZBNDFGNjEwMzNGQjVDMDIyQkJGDQo6MTBFRUUwMDAxMkQxMDJBOEZGRjc3MkY4MDI5QTQxRjIwMjAzMTIxQjM0DQo6MTBFRUYwMDAwNTQ2RTI1MjIxNDY5MkIyNEZGNDgwNzBGREY3MDRGQkMyDQo6MTBFRjAwMDAwMDJEMDhCRjAyMjY5QkU3MDA5MzQwRjJCOTUyMUU0QjJBDQo6MTBFRjEwMDAxRTQ5MUY0OEZERjdCMEZBNDFGNjI0MzIwQTQ5NEZGNDYyDQo6MTBFRjIwMDAwMDcwRkRGN0YxRkEzMDI1OEFFNzFBNEIxNzQ5MTg0OEE3DQo6MTBFRjMwMDA0RkY0Qjg2MkZERjdBMEZBMDEyNTgxRTczMjI1N0ZFNzlCDQo6MTBFRjQwMDAzNDI1N0RFNzI3MjU3QkU3NTAzRDAwMjBBM0IzMDEwODRBDQo6MTBFRjUwMDBDM0IzMDEwODA0NjEwMDIwNTQwMTAwMjBDRUIzMDEwOEFFDQo6MTBFRjYwMDBFNEIzMDEwODAxQjQwMTA4MTVCNDAxMDgzMEI0MDEwODg0DQo6MTBFRjcwMDBEMEI0MDEwODNEQjQwMTA4NEFCNDAxMDg1OUI0MDEwOEVEDQo6MTBFRjgwMDA2QUI0MDEwODc2QjQwMTA4OEJCNDAxMDg1RkFEMDEwOENBDQo6MTBFRjkwMDAxMDAwMDA4MEJDQjQwMTA4MDhCNTAzNEEwMzRCMDQ0OEM0DQo6MTBFRkEwMDA0RkY0QTY3MTA3RjA4NEZGOUZCNTAxMDg5RUI2MDEwOEQzDQo6MTBFRkIwMDBCQkI2MDEwODEwQjU4MjdCQTAyQTBDNDYwNkQwMEU0QkNBDQo6MTBFRkMwMDAwRTRBMEY0ODQwRjJERDExMDdGMDcyRkZDMjdCNTEwNzc1DQo6MTBFRkQwMDAxMEQ0RDIwNzBCRDUwN0YwREZGQTAwMjM5OTQyMDhCRkZGDQo6MTBFRkUwMDA4MDQyMjA2MDE0QkY0RkY0ODA2MDAwMjAxMEJEODA4OUYzDQo6MTBFRkYwMDAwMDIxRjJFNzAyMjBGOUU3RDVCNjAxMDgwQUI2MDEwOEI4DQo6MTBGMDAwMDBCQkI2MDEwODEwQjU4MzdCNDAyQjA2RDAwNTRCMDY0QUUyDQo6MTBGMDEwMDAwNjQ4NEZGNERCNzEwN0YwNEJGRjAwMjNCREU4MTA0MEJBDQo6MTBGMDIwMDAwN0YwOTJCRTQxQjYwMTA4RDJCNTAxMDhCQkI2MDEwODhGDQo6MTBGMDMwMDAxMEI1ODM3QjYwMkIwNkQwMDU0QjA2NEEwNjQ4NEZGNDdCDQo6MTBGMDQwMDBEODcxMDdGMDM1RkYwMDIzQkRFODEwNDAwN0YwN0NCRTAzDQo6MTBGMDUwMDA2MkI2MDEwOEI2QjUwMTA4QkJCNjAxMDgxMEI1ODI3QkRGDQo6MTBGMDYwMDA4MDJBMEM0NjA2RDAwRTRCMEU0QTBGNDg0MEYyRDExMUIyDQo6MTBGMDcwMDAwN0YwMUVGRkMyN0I1MTA3MTBENEQyMDcwQkQ1MDdGMDUzDQo6MTBGMDgwMDA4QkZBMDAyMzk5NDIwOEJGODA0MjIwNjAxNEJGNEZGNERFDQo6MTBGMDkwMDA4MDYwMDAyMDEwQkQ4MDg5MDAyMUYyRTcwMjIwRjlFNzlFDQo6MTBGMEEwMDA4M0I2MDEwOEVFQjUwMTA4QkJCNjAxMDg3RkI1MEU0NjcwDQo6MTBGMEIwMDAxNTQ2MDQ0NjU4QjEwNkYwMTdGQjAwMjJDREU5MDI2MDYwDQo6MTBGMEMwMDBDREU5MDA0NTAzNEIxMTQ2MTAyMEZERjdENUY5MDRCMEZBDQo6MTBGMEQwMDA3MEJEMDBCRjI0QjYwMTA4ODM3QkUwMkIyQUQwMTBEODc2DQo6MTBGMEUwMDA2MDJCMjFEMDA1RDgwMDJCMkVEMDQwMkIxQUQwMTc0OEVBDQo6MTBGMEYwMDA3MDQ3QTAyQjFBRDBDMDJCMUFEMDgwMkJGN0QxMTQ0ODAwDQo6MTBGMTAwMDA3MDQ3RjcyQjFBRDAwNUQ4RjUyQjE1RDBGNjJCRUVEMTdBDQo6MTBGMTEwMDAxMDQ4NzA0N0ZBMkIxM0QwRkIyQjEzRDBGOTJCRTZEMUY0DQo6MTBGMTIwMDAwRDQ4NzA0NzBENDg3MDQ3MEQ0ODcwNDcwRDQ4NzA0N0FGDQo6MTBGMTMwMDAwRDQ4NzA0NzBENDg3MDQ3MEQ0ODcwNDcwRDQ4NzA0NzlGDQo6MTBGMTQwMDAwRDQ4NzA0NzBENDg3MDQ3MEQ0ODcwNDdCN0I3MDEwODI0DQo6MTBGMTUwMDAyNEI3MDEwODY5QjcwMTA4ODhCNzAxMDhGRUI2MDEwODlEDQo6MTBGMTYwMDAxMUI3MDEwODMyQjcwMTA4M0VCNzAxMDg0QUI3MDEwOEQ0DQo6MTBGMTcwMDA1OUI3MDEwODc2QjcwMTA4OUFCNzAxMDhBOEI3MDEwODdFDQo6MTBGMTgwMDBFRUI2MDEwODJERTlGMDRGOEI3QkEwMkI4RkIwMDQ0NjIzDQo6MTBGMTkwMDAwRDQ2MDZEMDhBNEI2NzIyOEE0OThCNDhGREY3NkNGOUU5DQo6MTBGMUEwMDAzM0UwMDRBOTI4NDYwN0YwNTNGQjg2NEEwNjQ2NkMyMTQzDQo6MTBGMUIwMDBGRkY3N0NGRjFFQjExMDIwMEZCMEJERThGMDhGMDNBOTUwDQo6MTBGMUMwMDAyODQ2RkZGN0Y3RkU3RjRBODA0NjZGMjFGRkY3NkVGRjY0DQo6MTBGMUQwMDBCOEYxMDAwRkVGRDE3QjREREZGODIwQjIwMzlCOTg0NUNCDQo6MTBGMUUwMDAwNUQzMjM2ODQzRjAwNDAzMjM2MDAwMjBFNEU3OURGODdGDQo6MTBGMUYwMDAxRTMwNjAyQjBCRDAwNEE4RkZGNzZFRkY3MzRCMDA5MEZFDQo6MTBGMjAwMDA3NTIyNzA0OTcwNDhGREY3MzdGOTEzMjBENEU3MEVBRTI4DQo6MTBGMjEwMDAxODIzNDZGODMwM0QwOEFGMzI0NjM5NDYwNEE4RkZGN0I4DQo6MTBGMjIwMDAwN0ZGQjBGMTAwNEY4MTQ2MDdEMTY5NEI3RTIyNjY0ODQ3DQo6MTBGMjMwMDA2NDQ5RkRGNzIxRjkxNTIwQkVFNzJBNDY4MjIxRkZGNzMwDQo6MTBGMjQwMDAzNUZGQjlGMTAwMEZCNkQxMDRBODhERjgzNzkwMDdGMDVCDQo6MTBGMjUwMDBCRkZBMkE0NjgxNDY4NjIxRkZGNzI4RkZCOUYxMDAwRjQxDQo6MTBGMjYwMDBBOUQxNUM0OTM4NDZGOUY3NkZGOTgyNDYwMDI4MzZEMUIyDQo6MTBGMjcwMDA5REY4MUUzMDQwMkIwMkQwNTc0QjhEMjI4Q0U3MzI0NjMyDQo6MTBGMjgwMDAwNEY1QTQ3MTA0QTgwMjkzRkZGN0JDRkVCMEYxMDA0RjhGDQo6MTBGMjkwMDAwNjQ2MDJEMTUxNEI5NTIyQzlFNzAyOUI4NEY4ODgzMTdBDQo6MTBGMkEwMDBEQkIyMDA5MzUyNDY1MTQ2NEZGNDAwNzA0QzRCRkRGN0QxDQo6MTBGMkIwMDBFM0Y4MkE0NjlBMjEzMDQ2RkZGN0Y4RkUwMDJFN0ZGNDQ1DQo6MTBGMkMwMDA3QUFGMDRBODA3RjA4NEZBMkE0NjA2NDZEMDIxRkZGNzUxDQo6MTBGMkQwMDBFREZFMDAyRTdGRjQ2RkFGMDhGMTAxMDg3RUU3NTk0NjdFDQo6MTBGMkUwMDAzODQ2RjlGNzMxRjlFOEI5OURGODFFMzA2MDJCMDJEMEE1DQo6MTBGMkYwMDAzQzRCQTAyMjUwRTc0MTIzMzI0NjA0RjI4OTExMDRBODc2DQo6MTBGMzAwMDAwMjkzRkZGNzk1RkVCMEYxMDA0RjA2NDYwM0QxMDAyM0FDDQo6MTBGMzEwMDA4NEY4QzkzMUQ1RTcyQTQ2QTcyMUZGRjdDN0ZFMDAyRTlBDQo6MTBGMzIwMDBGNUQwNDhFNzMwNDkzODQ2RjlGNzBFRjlFOEI5OURGOEM1DQo6MTBGMzMwMDAxRTMwNjAyQjAyRDAyRDRCQUYyMjJERTcyMDIzMzI0NjBBDQo6MTBGMzQwMDAwNEY1RTU3MTA0QTgwMjkzRkZGNzcyRkVCMEYxMDA0RkQ3DQo6MTBGMzUwMDAwNjQ2MDNEMTAwMjM4NEY4RTkzMUIyRTcyQTQ2QjYyMUY0DQo6MTBGMzYwMDBGRkY3QTRGRTAwMkVGNUQwMjVFNzIxNDkzODQ2RjlGNzJFDQo6MTBGMzcwMDBFQkY4RThCOTlERjgxRTMwNjAyQjAyRDAxRDRCQkUyMjgxDQo6MTBGMzgwMDAwQUU3ODAyMzMyNDYwNEY1RjU3MTA0QTgwMjkzRkZGN0RCDQo6MTBGMzkwMDA0RkZFQjBGMTAwNEYwNjQ2MDNEMTAwMjM4NEY4NjkzMkQ2DQo6MTBGM0EwMDA4RkU3MkE0NkM1MjFGRkY3ODFGRTAwMkVGNUQwMDJFNzQwDQo6MTBGM0IwMDAwMDk3MTE0QjRBNDY0OTQ2MjAyMEZERjc1REY4ODBFNzRCDQo6MTBGM0MwMDAwQ0JFMDEwODFGQkUwMTA4MTAwMDAwODAzOEJFMDEwOEY1DQo6MTBGM0QwMDA3NEJFMDEwOEUyQUQwMTA4OTRCRTAxMDhDOEJFMDEwODcwDQo6MTBGM0UwMDBFNUJFMDEwOEZBQkUwMTA4RUFBRDAxMDgzMUJGMDEwODE3DQo6MTBGM0YwMDBGNkFEMDEwODZGQkYwMTA4QTZCRjAxMDhFNUFEMDEwODIxDQo6MTBGNDAwMDBGMEI1OTFCMDEwMjMwMzkzODM3QkEwMkIwNTQ2MEM0NkU3DQo6MTBGNDEwMDAxNjQ2MEJEMEZGRjc2MEZFMkM0QjAwOTBFNDIyMkM0OEUwDQo6MTBGNDIwMDAyQzQ5RkRGNzI5RjgxMzIwMTFCMEYwQkQwNEFBMkE0OTkwDQo6MTBGNDMwMDAwN0YwQjhGQzI3NEEwNzQ2RTkyMUZGRjczN0ZFMEZCMTZFDQo6MTBGNDQwMDAxMDIwRjFFNzA4QUEyNTQ5Mjg0NjA3RjBBQkZDMjE0QTFEDQo6MTBGNDUwMDAwNTQ2RUIyMUZGRjcyQUZFMDAyREYxRDE5REY4MUUzMDY1DQo6MTBGNDYwMDA2MDJCMDdEMDFFNEJFRjIyMTk0ODFBNDlGREY3MDRGODBDDQo6MTBGNDcwMDAxNDIwRDlFNzlERjgyRTMwMTNCMTFBNEJGNDIyRjNFNzhDDQo6MTBGNDgwMDAwM0FBMENBOTA0QThGRkY3RDNGRDEyNEEwNTQ2RjkyMUU3DQo6MTBGNDkwMDBGRkY3MENGRTAwMkREM0QxMTM0OThERjgzRjUwMENBODc3DQo6MTBGNEEwMDBGOUY3NTJGODc4QjkwMTIzMjM3MDMxNDYwOEE4MDdGMDFDDQo6MTBGNEIwMDA4OUZBMDg0QTA0NDY0MEYyMDcxMUZGRjdGN0ZEMDAyQ0NEDQo6MTBGNEMwMDBCRUQxMjA0NkIwRTczRjIzRUVFNzAwQkY2RUJDMDEwODg3DQo6MTBGNEQwMDAxMDAwMDA4MDFGQkUwMTA4QkZCNzAxMDg1M0FEMDEwODJFDQo6MTBGNEUwMDA5MUJDMDEwOEM3QkMwMTA4MThBRjAxMDgyREU5RjA0MTIzDQo6MTBGNEYwMDA4QjdCODAyQjg4QjAwNTQ2MEM0NjBBRDAzRDQ4M0U0QjlFDQo6MTBGNTAwMDAzRTQ5NEZGNDkzNzJGQ0Y3QjdGRjEzMjAwOEIwQkRFOEYzDQo6MTBGNTEwMDBGMDgxMDRBOTIwNDYwN0YwOUJGOTM4NEEwNjQ2NDBGMkRDDQo6MTBGNTIwMDAyQjExRkZGN0MzRkQwRUIxMTAyMEVGRTcwMkE5MjA0NjEzDQo6MTBGNTMwMDBGRkY3OTRGRDMxNEEwNjQ2NEZGNDk3NzFGRkY3QjZGRDg5DQo6MTBGNTQwMDAwMDJFRjFEMTJENEYwMjlCOUU0MjE4RDMwNEE5MjA0NkQ0DQo6MTBGNTUwMDAwN0YwN0VGOTI5NEEwNDQ2NDBGMjNCMTFGRkY3QTZGRDY5DQo6MTBGNTYwMDAwMDJDRTFEMTI1NEUwMjlCOUM0MjFFRDMyMTQ4MjQ0QjA2DQo6MTBGNTcwMDAyMjQ5NDBGMjREMTJGQ0Y3N0ZGRjI2MjBDNkU3MDNBQTdFDQo6MTBGNTgwMDAwREYxMDcwMTA0QThGRkY3M0JGRjAwMjhCRUQxMDRBODM2DQo6MTBGNTkwMDAwN0YwMUVGOTNBNDY4MDQ2NDBGMjM3MTFGRkY3ODZGRDI0DQo6MTBGNUEwMDBCOEYxMDAwRkMwRDEwMTM2Q0RFNzAzQUEwREYxMDcwMTc0DQo6MTBGNUIwMDAwNEE4RkZGNzI1RkY3OEI5OURGODA3MjAwMTJBMEJEMTkxDQo6MTBGNUMwMDAwMzlCRDkxRDA4RDFDNUY4NkMzMjJCNjg4NUY4NkEyMkQ3DQo6MTBGNUQwMDA0M0YwMDgwMzJCNjA5OUU3MDRBODA3RjBGOUY4MzI0NkQ2DQo6MTBGNUUwMDAwNzQ2NEZGNEE1NzFGRkY3NjFGRDAwMkY5Q0QxMDEzNDUwDQo6MTBGNUYwMDBCOUU3MDBCRjEwMDAwMDgwRjZCQzAxMDgxRkJFMDEwODdCDQo6MTBGNjAwMDAxM0JEMDEwODMwQjU4MzdCNDAyQjg1QjAxNTQ2MUFEMTU4DQo6MTBGNjEwMDAwNEFBNDJGODA0NURGRkY3RjVGQzExNEEwNDQ2NDBGMkUzDQo6MTBGNjIwMDA1OTExRkZGNzQzRkRCQ0I5MDM5QjlENDIxNkQwQ0RFOUFDDQo6MTBGNjMwMDAwMDUzMEM0ODBDNEIwQTQ5NEZGNEFFNzJGQ0Y3MUNGRjA4DQo6MTBGNjQwMDAwMzIwMDVCMDMwQkQwNzQ4MDg0QjA1NDk0RkY0QjE3MjlGDQo6MTBGNjUwMDBGQ0Y3MTJGRjEzMjBGNEU3MTAyMEYyRTcyMDQ2RjBFNzUyDQo6MTBGNjYwMDAxRkJFMDEwODEwMDAwMDgwOUJCQjAxMDhDRUJCMDEwODMzDQo6MTBGNjcwMDAzN0I1RkQyMzAxOTM4QjdCNjAyQjA1NDYwODQ2MUVEMUQxDQo6MTBGNjgwMDAwMUFBMjk0NkZGRjdENEZDQjBGMTAwNEYwNDQ2MDlEMTg2DQo6MTBGNjkwMDAwRDQ4MEU0QjBFNDk0MEYyOEQxMkZDRjdFREZFMTUyMDgxDQo6MTBGNkEwMDAwM0IwMzBCRDBBNEE0RkY0Qzg3MUZGRjdGRkZDNDRCOUZDDQo6MTBGNkIwMDAwMTlCODVGOEZENDBDNUY4MDAzMTIwNDZGMEU3MTMyMDk2DQo6MTBGNkMwMDBFRUU3MTAyMEVDRTcwMEJGMTAwMDAwODBGMUJEMDEwODVDDQo6MTBGNkQwMDAxRkJFMDEwODJERTlGMDRGOEI3QkEwMkI4QkIwMDQ0Njk5DQo6MTBGNkUwMDAwRDQ2MDdEMDYwNEI0MEYyQTExMjYwNDk2MDQ4RkNGNzFDDQo6MTBGNkYwMDBDM0ZFNDFFMDA2QTkyODQ2MDdGMEFBRjg1QjRBMDY0NjgxDQo6MTBGNzAwMDA0RkY0RDM3MUZGRjdEMkZDMUVCMTEwMjAwQkIwQkRFODRGDQo6MTBGNzEwMDBGMDhGMDNBOTI4NDZGRkY3NERGQzU0NEEwNTQ2NDBGMkY2DQo6MTBGNzIwMDBBOTExRkZGN0MzRkMwMDJERUZEMTUwNEVERkY4NTg5MTFGDQo6MTBGNzMwMDBERkY4NThBMUM0RjgwMDUxMDM5QjlENDIwREQzRDRGOEMzDQo6MTBGNzQwMDAwMDMxMDAyQjQwRjA4RTgwNDk0ODRBNEI0NzQ5NEZGNDI2DQo6MTBGNzUwMDBGMzcyRkNGNzkxRkUxNDIwRDhFNzlERjgyNjMwNjAyQjU5DQo6MTBGNzYwMDAwQ0QwMDZBOEZGRjdCOEZDNDM0QjAwOTA0MEYyQjExMjUyDQo6MTBGNzcwMDAzRTQ5M0Y0OEZDRjc4MEZFMTMyMEM3RTcwREYxMjgwOEZCDQo6MTBGNzgwMDAwODIzNDhGODIwM0QwNEFGNDI0NjM5NDYwNkE4RkZGNzUzDQo6MTBGNzkwMDA0RkZDQjBGMTAwNEY4MzQ2MDhEMTM1NDgzNzRCMzM0OTExDQo6MTBGN0EwMDA0RkY0REQ3MkZDRjc2OEZFMTUyMEFGRTczMjQ2NDBGMkY5DQo6MTBGN0IwMDBCRDExRkZGNzdCRkNCQkYxMDAwRkE2RDEwNkE4OERGOEE5DQo6MTBGN0MwMDAxN0IwMDdGMDA1RjgzMjQ2ODM0NjQwRjJDMTExRkZGNzQzDQo6MTBGN0QwMDA2REZDQkJGMTAwMEY5OEQxOURGODI2MzA2MDJCMDNEMDUzDQo6MTBGN0UwMDAyNzRCNDBGMkM1MTI4MEU3NDk0NjM4NDZGOEY3QUNGRTkxDQo6MTBGN0YwMDA5OEI5MDZBOTIwNDZGRkY3M0JGRjAwMjg4NkQxMDZBODQ2DQo6MTBGODAwMDAwNkYwRTZGRjMyNDYwNzQ2NDBGMkUxMTFGRkY3NEVGQ0Y0DQo6MTBGODEwMDAwMDJGN0ZGNDdBQUYwMTM1OEVFNzUxNDYzODQ2RjhGNzZFDQo6MTBGODIwMDA5M0ZFQjhCOTIwMjM0MjQ2MDRGNTgyNzEwNkE4MDI5M0RDDQo6MTBGODMwMDBGRkY3RkVGQkIwRjEwMDRGMDc0NjAzRDEwMDIzODRGODI5DQo6MTBGODQwMDAyMzMxRENFNzMyNDY0MEYyRDcxMUZGRjcyRkZDMDAyRkJGDQo6MTBGODUwMDBGNEQwNUFFNzAwOTcwQjRCNUE0NjU5NDYyMDIwRkNGNzQ0DQo6MTBGODYwMDAwQkZFQ0NFNzAwMjA1MUU3MENCRTAxMDgxRkJFMDEwOENCDQo6MTBGODcwMDAxMDAwMDA4MEQ4QkQwMTA4NEVCRDAxMDg3NEJFMDEwODBCDQo6MTBGODgwMDA4OEJEMDEwOEJDQkQwMTA4RTJBRDAxMDhFNUFEMDEwODc1DQo6MTBGODkwMDAyREU5RjA0Rjk5NDY4MzdCQTAyQjhCQjAwNDQ2MEY0NjkxDQo6MTBGOEEwMDA5MDQ2MDdEMDZBNEI0MEYyRjkxMjZBNDk2QTQ4RkNGNzYxDQo6MTBGOEIwMDBFM0ZEMzBFMDA2QTkwNkYwQ0JGRjY2NEEwNTQ2NEZGNEFCDQo6MTBGOEMwMDBGRjcxRkZGN0YzRkIxREIxMTAyMDBCQjBCREU4RjA4RjA3DQo6MTBGOEQwMDAwM0E5MjA0NkZGRjc2RUZCNUU0QTA2NDY0MEYyMDEyMTZGDQo6MTBGOEUwMDBGRkY3RTRGQjAwMkVFRkQxNUE0Q0RGRjg5OEExMDM5QjAxDQo6MTBGOEYwMDA5RTQyMDFEMzAwMjBFOEU3OURGODI2MzA2MDJCMENEMDEzDQo6MTBGOTAwMDAwNkE4RkZGN0U5RkI1NTRCMDA5MDRGRjQwMjcyNTE0OUVFDQo6MTBGOTEwMDA1MTQ4RkNGN0IxRkQxMzIwRDdFNzBBQUEwODIzMDRBRDJDDQo6MTBGOTIwMDA0MkY4MjAzRDI5NDYwNkE4RkZGNzgyRkJCMEYxMDA0RkMwDQo6MTBGOTMwMDA4MzQ2MDhEMTQ4NDg0QTRCNDY0OTRGRjQwNDcyRkNGN0M1DQo6MTBGOTQwMDA5QkZEMTUyMEMxRTcyMjQ2NDBGMjEzMjFGRkY3QUVGQkQ1DQo6MTBGOTUwMDBCQkYxMDAwRkI4RDEwNkE4OERGODE3QjAwNkYwMzhGRjNDDQo6MTBGOTYwMDAyMjQ2ODM0NjQwRjIxNzIxRkZGN0EwRkJCQkYxMDAwRkIwDQo6MTBGOTcwMDBBQUQxOURGODI2MzBGNTJCMDNEMDNBNEI0MEYyMUIyMjNBDQo6MTBGOTgwMDA5M0U3MDIyMjM4NDkyODQ2MDhGMDQ3RkE4MzQ2RjhCOTM3DQo6MTBGOTkwMDBCREY4MjQ1MDAwMzUxOEJGMDEyNTIyNDY0MEYyMjIyMTJGDQo6MTBGOUEwMDBGRkY3ODRGQjAwOTUzMTRCNUE0NjU5NDYwNDIwRkNGNzdCDQo6MTBGOUIwMDA2M0ZEM0Q3MDA2QTgwNkYwMEJGRjIyNDYwNTQ2NDBGMkE3DQo6MTBGOUMwMDAzOTIxRkZGNzczRkIwMDJEN0ZGNDdFQUYwMTM2OEVFNzAwDQo6MTBGOUQwMDAwMjIyNTE0NjI4NDYwOEYwMjBGQTgzNDY5OEI5QkRGODFEDQo6MTBGOUUwMDAyNDUwMDAzNTE4QkYwMTI1MjI0NjQwRjIyOTIxRkZGNzk3DQo6MTBGOUYwMDA1REZCMDA5NTFFNEI1QTQ2NTk0NjA0MjBGQ0Y3M0NGRDIyDQo6MTBGQTAwMDA4OEY4MDA1MEQ2RTcwMjIyMUE0OTI4NDYwOEYwMDVGQTdEDQo6MTBGQTEwMDA4MzQ2OThCOUJERjgyNDUwMDAzNTE4QkYwMTI1MjI0NjA5DQo6MTBGQTIwMDA0RkY0MEM3MUZGRjc0MkZCMDA5NTEzNEI1QTQ2NTk0NkIxDQo6MTBGQTMwMDAwNDIwRkNGNzIxRkQ4OUY4MDA1MEJCRTcwMDk1MEY0QjJGDQo6MTBGQTQwMDAwRjQ4NDBGMjM2MjIyMTQ2RkNGNzE2RkRCMkU3MDBCRjEwDQo6MTBGQTUwMDAwQ0JFMDEwODFGQkUwMTA4MTAwMDAwODBGM0JCMDEwOEE2DQo6MTBGQTYwMDA3NEJFMDEwODg4QkQwMTA4MTBCMTAxMDgzMkJDMDEwODRDDQo6MTBGQTcwMDAzRUJDMDEwODEzQjEwMTA4NDdCQzAxMDg1MEJDMDEwODk1DQo6MTBGQTgwMDAyMDAwMDA4MDNCQkMwMTA4RjBCNTgzN0JBMDJCOEJCMDJEDQo6MTBGQTkwMDAwNDQ2MEY0NjA5RDAzOTQ4Mzk0QjNBNDk0MEYyRTcyMjJCDQo6MTBGQUEwMDBGQ0Y3RUFGQzEzMjAwQkIwRjBCRDA2QUEzNjQ5MDdGMEJDDQo6MTBGQUIwMDA3OUY5MzQ0QTA1NDY0RkY0M0I3MUZGRjdGN0ZBMERCMTc3DQo6MTBGQUMwMDAxMDIwRjBFNzlERjgyNjMwNDAyQjBDRDAwNkE4RkZGNzU5DQo6MTBGQUQwMDAwM0ZCMkU0QjAwOTA0RkY0M0M3MjJBNDkyNzQ4RkNGNzU5DQo6MTBGQUUwMDBDQkZDMTQyMERGRTcwQUFENDYyMzQ1RjgyMDNENzkxQzA2DQo6MTBGQUYwMDAyQTQ2MDZBOEZGRjc4NkZBMDI5QjQ2MkIwNkQwMjQ0QjFGDQo6MTBGQjAwMDAyMDQ5MUU0ODRGRjQzRTcyRkNGN0I2RkMwNkFBMjE0OTc0DQo6MTBGQjEwMDAyMDQ2MDdGMDQ3RjkxQjRBMDQ0NjQwRjJGRDIxRkZGNzUzDQo6MTBGQjIwMDBDNUZBMDAyQ0NDRDE5REY4MjYzMDYwMkIwN0QwMUE0QjlCDQo6MTBGQjMwMDAxNDQ5MTI0ODQwRjIwMTMyRkNGNzlFRkNEMUU3MEMyMzM1DQo6MTBGQjQwMDAwREVCMDMwNjJBNDYzMTQ2MDZBODAyOTNGRkY3NzBGQTJBDQo6MTBGQjUwMDAwQjIyMTI0OTMwNDYwOEYwNjBGOTEwQjkwMTIzM0I3MEJFDQo6MTBGQjYwMDBBMUU3M0YyMzNCNzA0RkY0ODA2MDAwOTYwQzRCMjI0Njg4DQo6MTBGQjcwMDAyMTQ2RkNGNzgxRkMyMDQ2OTVFNzAwQkYxMDAwMDA4MDdEDQo6MTBGQjgwMDBGOUJBMDEwODFGQkUwMTA4RTJBRDAxMDgyNEJCMDEwODUzDQo6MTBGQjkwMDA0M0JCMDEwOEJGQjcwMTA4NkNCQjAxMDgxOEFGMDEwOERGDQo6MTBGQkEwMDA4OEJCMDEwODcwQjVFMEIwNjk0NjA0NDZGRkY3NTZGQTE1DQo6MTBGQkIwMDAxQTRBMDU0NjQwRjI3NTExRkZGNzc4RkExNUIxMTAyMDgwDQo6MTBGQkMwMDA2MEIwNzBCRDAxQTkyMDQ2MDZGMDQyRkUxMzRBMDQ0NjBCDQo6MTBGQkQwMDA0MEYyNzcxMUZGRjc2QUZBMDAyQ0YwRDEwRjREMDA5QjJEDQo6MTBGQkUwMDA5QzQyMDFEMzAwMjBFQkU3MDVBOTAxQThGRkY3NENGRkQ5DQo6MTBGQkYwMDAyQTQ2MDY0NjQwRjI3QjExRkZGNzU4RkEwMDJFREVEMTY2DQo6MTBGQzAwMDAwMUE4MDZGMEU1RkQyQTQ2MDY0NjQwRjI3RDExRkZGNzAxDQo6MTBGQzEwMDA0REZBMDAyRUQzRDEwMTM0RTFFNzAwQkYxRkJFMDEwODI5DQo6MTBGQzIwMDAwOEI1ODM3QjgwMkIwM0QxQkRFODA4NDBGRkY3QkFCRjNFDQo6MTBGQzMwMDAwNDRCMDU0OTA1NDg0MEYyNzExMkZDRjcxREZDMTMyMEU2DQo6MTBGQzQwMDAwOEJEMDBCRkM0QkYwMTA4MUZCRTAxMDgxMDAwMDA4MDJFDQo6MTBGQzUwMDAyREU5RjA0NzhFQjAxNDQ2MUY0NjRGRjQyNzcyMDAyMTVEDQo6MTBGQzYwMDAwNkFFMDU0NjA3RjBCRkY5NDBGNkZGNzIzOTQ2MjA0NjVBDQo6MTBGQzcwMDAwMDk2MDRBQjA2RjBGNEZDQjQ0QTA0NDY0MEYyNDkyMTc1DQo6MTBGQzgwMDBGRkY3MTRGQTBDQjFFNEIyMThFMDlERjgyNjMwQTAyQjZGDQo6MTBGQzkwMDAwOEQwQUY0QjQwRjI0RTIyQUM0OUFFNDhGQ0Y3RUNGQjJCDQo6MTBGQ0EwMDAxMTI0MEJFMDBBQTkzMDQ2MDZGMEQyRkRBNzRBMDQ0NjBCDQo6MTBGQ0IwMDA0MEYyNTMyMUZGRjdGQUY5MjRCMTEwMjQyMDQ2MEVCMDg4DQo6MTBGQ0MwMDBCREU4RjA4NzAzQTkzMDQ2RkZGNzc0Rjk5RjRBMDc0NjVEDQo6MTBGQ0QwMDA0MEYyNTYyMUZGRjdFQUY5MDAyRkVFRDEwMzlCMDA5MzgzDQo6MTBGQ0UwMDAzQTQ2OUQ0Qjk5NEVERkY4QjQ4MkRGRjhCNDkyMzk0NjFDDQo6MTBGQ0YwMDAwMjIwRkNGN0MxRkIwMzlCOUY0MjAxRDMwMDI0RERFN0Y4DQo6MTBGRDAwMDA5REY4MzYzMDFCQjE5NTRCNDBGMjVGMjJDNEU3MDJBOTQzDQo6MTBGRDEwMDAwQUE4MDZGMDU3RkUzMjQ2MDQ0NjQwRjI2MzIxRkZGNzc4DQo6MTBGRDIwMDBDNUY5MDAyQ0M5RDEwQUE4MDZGMDUyRkQzMjQ2MDQ0Njk2DQo6MTBGRDMwMDA0MEYyNjYyMUZGRjdCQUY5MDAyQ0JFRDEwMjlCNUExRTkxDQo6MTBGRDQwMDAwODJBMDBGMjUxODFERkU4MTJGMDA5MDAyQjAwNEYwMDcxDQo6MTBGRDUwMDA2QTAwODMwMEMyMDBDRTAwRTYwMDJEMDEwMDIyMTE0Njk5DQo6MTBGRDYwMDA3RjRCMDIyMDA1RjEwNDBBRkNGNzg2RkIyMDIyNTE0NjU2DQo6MTBGRDcwMDAwQUE4RkZGNzQ3RkMwNDQ2MThCOTJCNjg0M0YwMDEwM0IzDQo6MTBGRDgwMDAyQjYwMDAyMjExNDYwMjIwNzY0QkZDRjc3NUZCMjAyMkU3DQo6MTBGRDkwMDA1MTQ2MDIyMEZDRjdCOEZCMDAyQzAwRjA4RDgwNzJFNzgyDQo6MTBGREEwMDAwMDIyMTE0NjcwNEIwMjIwMDVGMTI0MEFGQ0Y3NjRGQjg3DQo6MTBGREIwMDAwQUE5NTA0NkZGRjc4RUZDMDQ0NjE4QjkyQjY4NDNGMDk5DQo6MTBGREMwMDAwMjAzMkI2MDAwMjI2OTRCQ0RGODAwQTAxMTQ2MDIyMEVGDQo6MTBGREQwMDBGQ0Y3NTJGQjA1RjU5NDczMDA5MzY1NEIwMDIyMTE0NjI2DQo6MTBGREUwMDAwMjIwRkNGNzQ5RkJEN0U3MDAyMjExNDY2MTRCMDIyMEI1DQo6MTBGREYwMDBGQ0Y3NDJGQjBBQTkyODQ2RkZGN0M0RjkwMDIyNUU0QjM0DQo6MTBGRTAwMDAxMTQ2MDQ0NjAyMjBGQ0Y3MzdGQjk1Rjg4ODIxMDVGNURBDQo6MTBGRTEwMDBBNDcxMDIyMEZDRjc3OEZCMDVGMjg5MTNEQ0U3MDAyMkNEDQo6MTBGRTIwMDAxMTQ2NTY0QjAyMjBGQ0Y3MjdGQjBBQTkyODQ2RkZGNzhDDQo6MTBGRTMwMDA1REZCOTVGODZBMzIwMDkzMDAyMjUxNEIwNDQ2MTE0NjRGDQo6MTBGRTQwMDAwMjIwRkNGNzE5RkJENUY4NkMzMjAwOTM0RDRCQzVFNzQ3DQo6MTBGRTUwMDAwMDIyMTE0NjRDNEIwMjIwRkNGNzBFRkIwQUE4RkZGN0NDDQo6MTBGRTYwMDBERkZFMzI0NjA0NDY0MEYyOTkyMUZGRjcxRkY5MDAyQ0NEDQo6MTBGRTcwMDA3RkY0MjNBRjA1RjUxQzcxMEFBODA2RjBFOUZDMzI0NkIxDQo6MTBGRTgwMDAwNDQ2NEZGNDI3NzFGRkY3MTFGOTAwMkM3RkY0MTVBRkVBDQo6MTBGRTkwMDAwNUY1MjA3MTBBQThGRkY3RTFGODMyNDYwNDQ2NDBGMjYyDQo6MTBGRUEwMDA5RjIxRkZGNzAzRjkwMDJDN0ZGNDA3QUYzNzRCMjI0NjYxDQo6MTBGRUIwMDAyMTQ2MDIyMEZDRjdFMEZBMEFBODA2RjA4OUZDMzI0NjQ3DQo6MTBGRUMwMDA0MEYyRDkyMTAwMjBGRkY3RjFGODAxMzcxM0U3MDAyMkIzDQo6MTBGRUQwMDAyRjRCMTE0NjAyMjBGQ0Y3Q0ZGQTlERjgzNjMwQTAyQkFEDQo6MTBGRUUwMDBFQUQwMTMyNEVBRTYwMDIyMTE0NjJBNEIwMjIwRkNGNzRFDQo6MTBGRUYwMDBDM0ZBMDVGMjg1MjIwNUY1MjE3MTA1RjI4NjIzMEFBOEM5DQo6MTBGRjAwMDBGRkY3QzZGQzMyNDYwNDQ2NEZGNDJDNzFGRkY3Q0VGOERCDQo6MTBGRjEwMDAwMDJDRDFEMEQyRTYwMDIyMTE0NjFGNEIwMjIwRkNGNzY0DQo6MTBGRjIwMDBBQkZBMTAyMjA1RjI4NzIxMEFBOEZGRjc2QkZCMDMyODIyDQo6MTBGRjMwMDAwNDQ2MDNEMTAxMjM4NUY4OTczMkJERTczMjQ2NEZGNERBDQo6MTBGRjQwMDAyRTcxRkZGN0IzRjgwMDJDRjREMEI3RTYxRkJFMDEwOEZFDQo6MTBGRjUwMDBEMEI4MDEwODEwMDAwMDgwNkJCODAxMDhFQkI4MDEwOEE4DQo6MTBGRjYwMDAwREI5MDEwODIyQjkwMTA4MjVCOTAxMDgyRUI5MDEwODA3DQo6MTBGRjcwMDAzOEI5MDEwODQ0QjkwMTA4NEZCOTAxMDg1NkI5MDEwODU4DQo6MTBGRjgwMDA2REI5MDEwODgyQjkwMTA4OTJCOTAxMDhBNEI5MDEwODQ0DQo6MTBGRjkwMDBCQkI5MDEwOENDQjkwMTA4REFCOTAxMDgwMkJBMDEwOEY1DQo6MTBGRkEwMDBFOEI5MDEwODAwMjI0QjQ2MTE0NjAyMjBGQ0Y3NjRGQTJBDQo6MTBGRkIwMDA5REY4MzYzMDAwMkI5NEQxMDVGNTI2NzEwQUE4MDZGMDdEDQo6MTBGRkMwMDAwMUZEMzI0NjA0NDY0MEYyQzYyMUZGRjc2RkY4MDAyQ0NGDQo6MTBGRkQwMDA3RkY0NzNBRUQ1Rjg5ODMyMDA5MzA1NEIwMDIyMTE0NjlBDQo6MTBGRkUwMDAwMjIwRkNGNzQ5RkE2N0U3MDA5MzQzNDZGNkU3MDBCRkIzDQo6MTBGRkYwMDBGQUI5MDEwODJERTlGMDQxOEI3QjgwMkI4NkIwMDY0NkNCDQo6MDIwMDAwMDQwODAxRjENCjoxMDAwMDAwMDBDNDYwQkQwMkM0QjJENDkyRDQ4NDBGMjFFMzJGQ0Y3RUMNCjoxMDAwMTAwMDMzRkExMzI0MjA0NjA2QjBCREU4RjA4MTAyQTkyMDQ2MzkNCjoxMDAwMjAwMDA2RjAxNkZDMjU0QTA1NDY0MEYyMjMzMUZGRjczRUY4NUMNCjoxMDAwMzAwMDBEQjExMDI0RUVFNzAxQTkyMDQ2RkZGNzBGRjgxRjRBODMNCjoxMDAwNDAwMDA1NDY0MEYyMjYzMUZGRjczMUY4MDAyREYxRDFERkY4RjcNCjoxMDAwNTAwMDZDODBDNkY4NEM1MTA2RjVCNDc3MDE5QjlENDIwMUQzRTQNCjoxMDAwNjAwMDAwMjREN0U3MTQyRDA3RDEwMDIyMTY0QjExNDYyMDIwN0INCjoxMDAwNzAwMEZDRjcwMkZBMTcyNENERTdENkY4NEMzMTAxMzMzOTQ2QTQNCjoxMDAwODAwMEM2Rjg0QzMxMDJBOEZGRjdGRkZDNDI0NjA0NDY0MEYyOTYNCjoxMDAwOTAwMDM2MzFGRkY3MEJGODAwMkNCQ0QxMDJBODA2RjA5OEZCMTQNCjoxMDAwQTAwMDQyNDYwNDQ2NDBGMjM5MzFGRkY3MDBGODA3RjI2OTE3N0INCjoxMDAwQjAwMDAwMkNCRUQxMDEzNUQwRTcxMkJBMDEwODFGQkUwMTA4REQNCjoxMDAwQzAwMDEwMDAwMDgwMkZCQTAxMDgyREU5RjA0NzhFQjAwRTQ2Q0YNCjoxMDAwRDAwMDE3NDYwMDIxNEZGNEVENTIwNkFDMDU0NjA2RjA4M0ZGQUINCjoxMDAwRTAwMDQwRjZGRjcyMzk0NjMwNDYwMDk0MDRBQjA2RjBCOEZBODkNCjoxMDAwRjAwMDk0NEEwNjQ2NDBGMjRCMzFGRUY3RDhGRjI2QjExMDI0NTENCjoxMDAxMDAwMDIwNDYwRUIwQkRFOEYwODc5REY4MjYzMEEwMkIwOEQwMjENCjoxMDAxMTAwMDhENEI0RkY0NTQ3MjhCNDk4QzQ4RkNGN0FERjkxMzI0ODYNCjoxMDAxMjAwMEVFRTcwQUE5MjA0NjA2RjA5M0ZCODY0QTA2NDY0MEYyMEYNCjoxMDAxMzAwMDU1MzFGRUY3QkJGRjAwMkVFMUQxMDNBOTIwNDZGRUY3QTMNCjoxMDAxNDAwMDM5RkY4MDRBMDc0NjRGRjQ1NjcxRkVGN0FGRkYwMDJGODQNCjoxMDAxNTAwMEQ1RDEwMzlCMDA5MzNBNDY3RDRCN0E0RURGRjgxODkyMzcNCjoxMDAxNjAwMERGRjgxOEEyMzk0NjA0MjBGQ0Y3ODZGOTAzOUI5RjQyNkENCjoxMDAxNzAwMDAxRDMwMDI0QzRFNzlERjgzNjMwMUJCMTc1NEI0MEYyMjMNCjoxMDAxODAwMDYxMzJDOEU3MDJBOTBBQTgwNkYwMUNGQzMyNDYwNDQ2MDANCjoxMDAxOTAwMDQwRjI2NTMxRkVGNzhBRkYwMDJDQjBEMTBBQTgwNkYwQzQNCjoxMDAxQTAwMDE3RkIzMjQ2MDQ0NjRGRjQ1QTcxRkVGNzdGRkYwMDJDQ0UNCjoxMDAxQjAwMEE1RDEwMjlCMDEzQjA2MkIyOEQ4REZFODAzRjAzMjA0Q0YNCjoxMDAxQzAwMDUxNjk3MDg4QTkwMDAwMjIxMTQ2NjM0QjA0MjAwNUYxOTMNCjoxMDAxRDAwMDA0MDhGQ0Y3NTFGOTIwMjI0MTQ2MEFBOEZGRjcxMkZBNTkNCjoxMDAxRTAwMDMyNDYwNDQ2NDBGMjcyMzFGRUY3NjBGRjAwMkM4N0QxQTANCjoxMDAxRjAwMDAxMjM4NUY4MjQzMDIyNDYyMTQ2MDQyMDU3NEJGQ0Y3ODINCjoxMDAyMDAwMDNCRjkyMDIyNDE0NjA0MjBGQ0Y3N0VGOTBBQTgwNkYwQkINCjoxMDAyMTAwMERGRkEzMjQ2NDBGMkI2MzEwMDIwRkVGNzQ3RkYwMTM3RTENCjoxMDAyMjAwMEE0RTcwMDIyMTE0NjRFNEIwNDIwMDVGMTI4MDhGQ0Y3RjQNCjoxMDAyMzAwMDIzRjkwQUE5NDA0NkZGRjcxQkZBMDAyMjA0NDZDREY4MkQNCjoxMDAyNDAwMDAwODA0ODRCMTE0NjA0MjBGQ0Y3MTZGOTAwMkNEREQwNDUNCjoxMDAyNTAwMDQ1NEIzQzQ5M0Q0ODQwRjJCMTMyRkNGNzBERjk0RkU3QzANCjoxMDAyNjAwMDAwMjIxMTQ2NDE0QjA0MjBGQ0Y3MDZGOTBBQTkyODQ2NTINCjoxMDAyNzAwMEZGRjdDMEZFMzI0NjA0NDY0MEYyODEzMUZFRjcxNkZGMUENCjoxMDAyODAwMDAwMkM3RkY0M0NBRjQxRjY5QzUzMDEyMkVBNTRCREU3QjkNCjoxMDAyOTAwMDAwMjIzNzRCMTE0NjA0MjBGQ0Y3RUVGOEI2RTcwMDIyQTcNCjoxMDAyQTAwMDExNDYzNDRCMDQyMEZDRjdFN0Y4MDVGMjUxMTIwNUY1MkUNCjoxMDAyQjAwMEE4NzEwNUY1QTk3MzBBQThGRkY3RUFGQTMyNDYwNDQ2QzENCjoxMDAyQzAwMDRGRjQ2MzcxRkVGN0YyRkUwMDJDOUZEMDE4RTcwMDIyNzYNCjoxMDAyRDAwMDExNDY1MzQ2MDQyMEZDRjdDRkY4MTAyMjA1RjI1MzExQzMNCjoxMDAyRTAwMDBBQThGRkY3OEZGOTAzMjgwNDQ2MDlEMTMyNDY0RkY0RDQNCjoxMDAyRjAwMDY3NzEwMDIwRkVGN0RBRkUwMTIzODVGODYzMzE4NUU3OTgNCjoxMDAzMDAwMDMyNDY0RkY0NjU3MUZFRjdEMUZFMDAyQ0VFRDBGN0U2RDENCjoxMDAzMTAwMDAwMjI0QjQ2MTE0NjA0MjBGQ0Y3QUVGODlERjgzNjMwMUINCjoxMDAzMjAwMDAwMkI3RkY0RkNBRTA1RjVCMjcxMEFBODA2RjA0QUZCN0INCjoxMDAzMzAwMDMyNDYwNDQ2NDBGMkE1MzFGRUY3QjhGRTAwMkMzRkY0RTkNCjoxMDAzNDAwMDY1QUZEQ0U2MUZCRTAxMDhEMEI4MDEwODEwMDAwMDgwRDANCjoxMDAzNTAwMDY4QjgwMTA4RUJCODAxMDg4MEI4MDEwODIyQjkwMTA4QTMNCjoxMDAzNjAwMDkzQjgwMTA4MkVCOTAxMDhCOUI4MDEwODlDQjgwMTA4NzINCjoxMDAzNzAwMEFBQjgwMTA4Q0NCOTAxMDhFOEI5MDEwOERBQjkwMTA4M0UNCjoxMDAzODAwMDJERTlGMDRGODlCMDFFNDY5MjQ2MTI5QTAwMjMzMzYwNDENCjoxMDAzOTAwMDEzNjA4MzdCQTAyQjA0NDY4OTQ2MDlEMDc2NEI0MEYyM0MNCjoxMDAzQTAwMENBMzI3NjQ5NzY0OEZDRjc2N0Y4NEZGMDEzMEIwQkUwM0ENCjoxMDAzQjAwMDA0QTkwNkYwNERGQTcxNEEwNTQ2NDBGMkNGMzFGRUY3MjYNCjoxMDAzQzAwMDc1RkUyREIxNEZGMDEwMEI1ODQ2MDlCMEJERThGMDhGMDcNCjoxMDAzRDAwMDAyQTkyMDQ2RkVGN0VFRkQ2ODRBMDQ0NjQwRjJEMjMxRkINCjoxMDAzRTAwMEZFRjc2NEZFMDAyQ0VERDEwMjlCMDA5MzIyNDY2NTRCODQNCjoxMDAzRjAwMDYyNEQyMTQ2MjAyMEZDRjczRkY4QTA0NjI3NDYwMjlCOEQNCjoxMDA0MDAwMDlGNDIxM0QzMDAyQzAwRjBCMzgwQjhGMTAwMEYwMEYwMkUNCjoxMDA0MTAwMEFGODAzMzY4MDAyQjAwRjBBQjgwMTI5QjFCNjgwMDJCNzENCjoxMDA0MjAwMDBDQkY0RkYwMTQwQjRGRjAwMDBCQ0RFNzlERjgxRTMwQzINCjoxMDA0MzAwMDFCQjE1NTRCNDBGMkRBMzJCM0U3MDNBOTA0QTgwNkYwMkENCjoxMDA0NDAwMEMxRkEyQTQ2ODM0NjQwRjJERjMxRkVGNzJGRkVCQkYxQTgNCjoxMDA0NTAwMDAwMEZCN0QxMDRBODA2RjBCQkY5MkE0NjgzNDY0MEYyNDQNCjoxMDA0NjAwMEUyMzFGRUY3MjNGRUJCRjEwMDBGQUJEMTAzOUJEQTFDOTgNCjoxMDA0NzAwMDA2MkE3NUQ4REZFODAyRjA1QzQ1MzE3NDA0NzQxQzAwNkMNCjoxMDA0ODAwMDAwMjI0MjRCMTE0NjIwMjBGQkY3RjZGRjlERjgxRTMwNUMNCjoxMDA0OTAwMDAwMkI4QUQxMzE0NjA0QTgwNkYwOTRGQTJBNDY4MzQ2RjYNCjoxMDA0QTAwMDQwRjJFQjMxRkVGNzAyRkVCQkYxMDAwRjA2RDA4OUU3MDgNCjoxMDA0QjAwMDAwMjIzNzRCMTE0NjIwMjBGQkY3REVGRjA0QTgwNkYwOTANCjoxMDA0QzAwMDg3RjkyQTQ2ODM0NjQwRjIxNDQxRkVGN0VGRkRCQkYxNUYNCjoxMDA0RDAwMDAwMEY3RkY0NzdBRjAxMzc5MUU3MDAyMjJENEIxMTQ2RDMNCjoxMDA0RTAwMDIwMjBGQkY3QzlGRjlERjgxRTMwMDAyQjdGRjQ1REFGODUNCjoxMDA0RjAwMDEyOTkwNEE4MDZGMDY2RkEyQTQ2ODM0NjQwRjJGQTMxQjkNCjoxMDA1MDAwMEQwRTcwMDIyMTE0NjI0NEIyMDIwRkJGN0I1RkYyMDIyMjQNCjoxMDA1MTAwMDQ5NDYwNEE4RkZGNzc2RjgyQTQ2ODM0NjQwRjIwNDQxOEMNCjoxMDA1MjAwMEZFRjdDNEZEQkJGMTAwMEY3RkY0NEVBRjAxMjRDNUU3MTkNCjoxMDA1MzAwMDAwMjIxMTQ2MTk0QjIwMjBGQkY3OUVGRjIwMjI1MTQ2MzYNCjoxMDA1NDAwMDA0QThGRkY3NUZGODJBNDY4MzQ2NDBGMjBCNDFGRUY3MDYNCjoxMDA1NTAwMEFERkRCQkYxMDAwRjdGRjQzN0FGNEZGMDAxMDhBREU3MDENCjoxMDA1NjAwMDAwMjIwMDkzMTE0NjBFNEIyMDIwRkJGNzg1RkZBNUU3RTQNCjoxMDA1NzAwMDRGRjAxNDBCMjhFNzAwQkZEMEI4MDEwODFGQkUwMTA4RDgNCjoxMDA1ODAwMDEwMDAwMDgwNTVCQTAxMDhFQkI4MDEwODZGQkEwMTA4RTUNCjoxMDA1OTAwMDgzQkEwMTA4OTdCQTAxMDhBQkJBMDEwOEJEQkEwMTA4Q0QNCjoxMDA1QTAwMENGQkEwMTA4MkRFOUYwNDM5MUIwMEU0NjE3NDYwMDIxNUQNCjoxMDA1QjAwMDRGRjRCRTcyMDhBRDA0NDYwNkYwMTVGRDQwRjZGRjcyMUENCjoxMDA1QzAwMDM5NDYzMDQ2MDA5NTA2QUIwNkYwNEFGOEE3NEEwNjQ2N0INCjoxMDA1RDAwMDQwRjIyOTQxRkVGNzZBRkQyNkIxMTAyNTI4NDYxMUIwRTgNCjoxMDA1RTAwMEJERThGMDgzOURGODJFMzBBMDJCMDhEMEEwNEI0MEYyNDANCjoxMDA1RjAwMDJFNDI5RTQ5OUY0OEZCRjczRkZGMTMyNUVFRTcwQ0E5Q0INCjoxMDA2MDAwMDI4NDYwNkYwMjVGOTk5NEEwNjQ2NDBGMjMzNDFGRUY3OUUNCjoxMDA2MTAwMDRERkQwMDJFRTFEMTA0QTkyODQ2RkVGN0NCRkM5MzRBRkMNCjoxMDA2MjAwMDA3NDY0MEYyMzY0MUZFRjc0MUZEMDAyRkQ1RDEwNDlCMkQNCjoxMDA2MzAwMDAwOTMzQTQ2OTA0QjhENEVERkY4NjA4MkRGRjg2MDkyNkYNCjoxMDA2NDAwMDM5NDYwODIwRkJGNzE4RkYwNDlCOUY0MjAxRDMwMDI1ODENCjoxMDA2NTAwMEM0RTc5REY4M0UzMDFCQjE4ODRCNDBGMjNGNDJDOEU3RUINCjoxMDA2NjAwMDAzQTkwQ0E4MDZGMEFFRjkzMjQ2MDU0NjQwRjI0MzQxMTQNCjoxMDA2NzAwMEZFRjcxQ0ZEMDAyREIwRDEwQ0E4MDZGMEE5RjgzMjQ2RkINCjoxMDA2ODAwMDA1NDY0MEYyNDY0MUZFRjcxMUZEMDAyREE1RDEwMzlCMjINCjoxMDA2OTAwMDVBMUUwNzJBMDBGMkRGODBERkU4MDJGMDA0MUYyQjRBMEYNCjoxMDA2QTAwMDYzOTVBRUM4MDAyMjc2NEIxMTQ2MDgyMEZCRjdFNEZFQTYNCjoxMDA2QjAwMDlERjgzRTMwMDAyQkEwRDEyMTQ2MENBODA2RjA4MkY5MEYNCjoxMDA2QzAwMDBDQTgwNkYwODVGODMyNDYwNTQ2NDBGMjlFNDFGRUY3M0ENCjoxMDA2RDAwMEVERkMwMDJEODFEMTAxMzdCNkU3MDAyMjY5NEIxMTQ2QjANCjoxMDA2RTAwMDA4MjBGQkY3QzlGRTlERjgzRTMwMDAyQjg1RDEyMTFENjcNCjoxMDA2RjAwMEUzRTcwMDIyMTE0NjY0NEIwODIwRkJGN0JERkUwNEYxM0UNCjoxMDA3MDAwMDRDMDMwMDkzMDRGMTI4MDIwNEYxMDgwMTA0RjE0ODAzQUENCjoxMDA3MTAwMDBDQThGRkY3MzVGRTMyNDYwNTQ2NDBGMjY3NDFGRUY3NkENCjoxMDA3MjAwMEM1RkMwMDJEN0ZGNDVBQUYwMTIzODRGODUwMzBDN0U3OTENCjoxMDA3MzAwMDAwMjIxMTQ2NTU0QjA4MjBGQkY3OUVGRTEwMjIwNEYxQzMNCjoxMDA3NDAwMDUxMDEwQ0E4RkVGNzVFRkYzMjQ2MDU0NjQwRjI2RTQxQUQNCjoxMDA3NTAwMEZFRjdBQ0ZDMDAyRDdGRjQ0MUFGMDEyMzg0Rjg2MTMwM0INCjoxMDA3NjAwMEFFRTcwMDIyNEE0QjExNDYwODIwRkJGNzg1RkU5REY4QjQNCjoxMDA3NzAwMDNFMzA0MDJCN0ZGNDQxQUYwNUE5MENBODA2RjA3QUY5NzINCjoxMDA3ODAwMDMyNDYwNTQ2NDBGMjc2NDFGRUY3OTBGQzAwMkQ3RkY0OUMNCjoxMDA3OTAwMDI0QUYwNTlCQTNGMTQwMDJDMDJBNjREOEM0Rjg2NDMxOTkNCjoxMDA3QTAwMDA1QUE0RkY0ODA3MzA0RjE2MjAxMENBODA1OTNGRUY3Q0INCjoxMDA3QjAwMDI5RkMzMjQ2MDU0NjQwRjI3RjQxRkVGNzc3RkMwMDJEQ0ENCjoxMDA3QzAwMDNGRjQ3RUFGMDlFNzAwMjIxMTQ2MzI0QjA4MjBGQkY3QzkNCjoxMDA3RDAwMDUzRkUxMDIyMDRGNUI0NzEwQ0E4RkVGNzEzRkYzMjQ2NDUNCjoxMDA3RTAwMDA1NDY0MEYyOEI0MUZFRjc2MUZDMDAyRDdGRjRGNkFFMkENCjoxMDA3RjAwMDAxMjM4NEY4NzgzMTYzRTcwMDIyMjc0QjExNDYwODIwNTMNCjoxMDA4MDAwMEZCRjczQUZFOURGODNFMzBGNTJCMDFEMEZFRjdDNEZCMTYNCjoxMDA4MTAwMEJERjgzQzMwMDAzMzE4QkYwMTIzODRGODc5MzEzMjQ2RUINCjoxMDA4MjAwMDQwRjI5MjQxMDAyMEZFRjc0MUZDNDlFNzAwMjI0QjQ2OEUNCjoxMDA4MzAwMDExNDYwODIwRkJGNzIwRkU5REY4M0UzMEY1MkJFNUQxNTANCjoxMDA4NDAwMEJERjgzQzMwMDAzMzE4QkYwMTIzODRGODdBMzEzMjQ2QkENCjoxMDA4NTAwMDQwRjI5NzQxRTZFNzAwMjIwMDkzMTE0NjQzNDYwODIwMDQNCjoxMDA4NjAwMEZCRjcwQUZFMkNFNzM3MjVCOEU2MDBCRjFGQkUwMTA4REMNCjoxMDA4NzAwMEQwQjgwMTA4MTAwMDAwODBDNEI3MDEwOEVCQjgwMTA4MjcNCjoxMDA4ODAwMERDQjcwMTA4RUNCNzAxMDhGQkI3MDEwODBDQjgwMTA4OTgNCjoxMDA4OTAwMDE4QjgwMTA4MjZCODAxMDgzNUI4MDEwODU4QjgwMTA4ODkNCjoxMDA4QTAwMDQ5QjgwMTA4MTBCNTQ4RjIxMDYwOTBCMEZCRjdEQ0ZEQzQNCjoxMDA4QjAwMEY4Rjc1MEZEMDAyMjExNDYyMTRCMDEyMEZCRjdEQ0ZEMkINCjoxMDA4QzAwMEY4Rjc3Q0ZEMDAyMjExNDYxRTRCMDEyMEZCRjdENEZERkENCjoxMDA4RDAwMEZCRjcxMUZGMDAyMjExNDYxQjRCMDEyMEZCRjdDQ0ZENUINCjoxMDA4RTAwMEZERjc4RUZEMDAyMjE5NEIxMTQ2MDEyMEZCRjdDNEZERDgNCjoxMDA4RjAwMDQwMjIwMDIxNjg0NjA2RjA3NkZCMDAyMjE0NEIxMTQ2ODgNCjoxMDA5MDAwMDAxMjBGQkY3QjlGRDAwMjRGOEY3RDZGQzAwMUI2NDI4OTINCjoxMDA5MTAwMDA0RDlGOEY3QjVGREY4RjdDRkZDMDQ0NkY4RjdFOEZFODANCjoxMDA5MjAwMDY4NDZGOEY3NERGRDAwMjgwN0RENjg0NkZCRjc0RUZGRTcNCjoxMDA5MzAwMDQwMjIwMDIxNjg0NjA2RjA1NkZCRkJGN0RGRkVFM0U3QTYNCjoxMDA5NDAwMEU2QkYwMTA4RjNCRjAxMDhGREJGMDEwODBCQzAwMTA4QTUNCjoxMDA5NTAwMDE2QzAwMTA4MkRFOUYwNEYwMDIyQzlCMDRCNzgwQzc4ODENCjoxMDA5NjAwMDFCMDQ0M0VBMDQ2M0NDNzgyMzQzOEM3ODQzRUEwNDIzRDINCjoxMDA5NzAwMDA4QUMwNDMxQTM1MDA0MzI0MDJBRUZEMTIzNDYzOEFERUQNCjoxMDA5ODAwMDk5NkIxRTQ2NEZFQUYxNDI4MkVBNzE0MjgyRUE5MTIyNTUNCjoxMDA5OTAwMDcxNkEzNjY4NTNGODA0NEYzMTQ0MEE0NDRGRUFCNDQxNEYNCjoxMDA5QTAwMDgxRUFGNDExODFFQUQ0MDEwQTQ0OUQ0MkRBNjNFN0QxNzUNCjoxMDA5QjAwMDAzNkQwMDkzNDM2RDAxOTM4MzZEMDI5M0MzNkQwMzkzQTUNCjoxMDA5QzAwMDAzNkUwNDkzNDM2RTA1OTM4MzZFMDY5M0RERTkwNUVDOTUNCjoxMDA5RDAwMEMzNkUwMDlDREZGOEFDOTAwNzkzRERFOTAzODFEREU5OEQNCjoxMDA5RTAwMDAxNjU5QjQ2MDAyNzRGRUFGMTIzODNFQUIxMTM4M0VBQUUNCjoxMDA5RjAwMDcxNkE1OUY4MjczMDFBNDYwOEFCNTNGODI3MzAxQTQ0NjENCjoxMDBBMDAwMDEzNDY1MzQ0MkNFQTAxMDIwMUVBMEUwQTgyRUEwQTAyNjINCjoxMDBBMTAwMDFBNDQ0RkVBNzQzQTg2RUEwNTAzNUE0NDhBRUFCNDBBNDkNCjoxMDBBMjAwMDA2RUEwNTBCMjM0MDgzRUEwQjAzOEFFQUI0NUEwMTM3MkUNCjoxMDBBMzAwMDlBNDQ0MDJGMDJFQjA4MDNFMzQ2NTI0NEE4NDYxQUQxRDkNCjoxMDBBNDAwMDAwOUYxNzQ0MDE5QTA3NjUyMjQ0NDI2NTAyOUEzMjQ0ODYNCjoxMDBBNTAwMDgyNjUwMzlBMkE0NEMyNjUwNDlBMUE0NDA1OUIwMjY2NzkNCjoxMDBBNjAwMDBCNDQ0MzY2MDY5QjczNDQ4MzY2MDc5QjYzNDRDMzY2REINCjoxMDBBNzAwMDQ5QjBCREU4RjA4RkY0NDYzNTQ2OEU0NjI2NDYxOTQ2MDUNCjoxMDBBODAwMDE0NDZCMEU3MkNDMDAxMDgwMDIzMDAyMjAzNjQwMDIzQjENCjoxMDBBOTAwMEMwRTkxMjIzMEI0QjBDNEEwQzQ5REZGODQwQzBDMEU5RjcNCjoxMDBBQTAwMDE0MjMwQjRCQzBFOTE2MTMwQTRCQzBFOTE4QzMwQTRCQjkNCjoxMDBBQjAwMDgzNjYwM0YxNzQ1M0EzRjUyMzAzQTNGNjkyNDNDMzY2M0QNCjoxMDBBQzAwMDcwNDcwMEJGODVBRTY3QkI2N0U2MDk2QTcyRjM2RTNDOEMNCjoxMDBBRDAwMDNBRjU0RkE1OEM2ODA1OUJBQkQ5ODMxRjdGNTIwRTUxMDkNCjoxMDBBRTAwMEY4QjUwNDQ2MEQ0NjhFMTgwMDI3QjU0MjAwRDFGOEJENzINCjoxMDBBRjAwMDIzNkMxNUY4MDEyQkUyNTQwMTMzNDAyQjIzNjRGNEQxMEQNCjoxMDBCMDAwMDIxNDYyMDQ2RkZGNzI2RkZENEU5MTIwMTEwRjUwMDcyQjYNCjoxMDBCMTAwMDQxRjEwMDAzQzRFOTEyMjMyNzY0RTZFNzAyNkMyREU5RTINCjoxMDBCMjAwMDMwNDgzNzJBMEQ0NjRGRjA4MDAxMDJGMTAxMDM4MTU0MEQNCjoxMDBCMzAwMDA0NDY0RkYwMDAwMjUxRDgzODJCNEFEMTIzNkNEOTAwMUINCjoxMDBCNDAwMEQ0RTkxMjIzMTJFQjAxMEI0M0YxMDAwQzRGRUExQjYyQjQNCjoxMDBCNTAwMDRGRUExQjIxODRGODNDMjA0RkVBMUMyMjRGRUExQzYzMTkNCjoxMDBCNjAwMDg0RjgzRTEwODRGODNBMjA0RkVBMUI0MTRGRUExQzQyQjkNCjoxMDBCNzAwMDg0RjgzRDEwODRGODM4MzAyMTQ2QzRFOTEyQkM4NEY4NkENCjoxMDBCODAwMDNGQjA4NEY4M0JDMDg0RjgzOTIwMjA0NkZGRjdFMkZFRUUNCjoxMDBCOTAwMDY5MUUxODIzMjI2RERBNDAwMUY4MDEyRjYyNkREQTQwRDgNCjoxMDBCQTAwMDBBNzFBMjZEREE0MDBBNzJFMjZEREE0MDBBNzMyMjZFQUYNCjoxMDBCQjAwMERBNDAwQTc0NjI2RURBNDAwQTc1QTI2RURBNDAwQTc2OEENCjoxMDBCQzAwMEUyNkVEQTQwMDgzQjEzRjEwODBGMEE3N0UyRDFCREU4ODQNCjoxMDBCRDAwMDMwODhFMjU0MDEzM0FGRTdFMjU0MDEzMzNGMkJGQkQ5QjUNCjoxMDBCRTAwMDIxNDYyMDQ2RkZGN0I2RkUzODIyMDAyMTA2RjBGQkY5MjkNCjoxMDBCRjAwMEE0RTcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkENCjoxMDBDMDAwMEMzRjEwODAzREIwMDcwQjQwMTMzMDAyNDAzQTUwMEJGNjcNCjoxMDBDMTAwMDVCMTkyMEM5NDBDQUFEMTkyMEMwMTg0NzIwQzk0MENBNzUNCjoxMDBDMjAwMDc1NDEyMEMwMjBDOTQwQ0E3NTQxMjBDMDIwQzk0MENBQjINCjoxMDBDMzAwMDc1NDEyMEMwMjBDOTQwQ0E3NTQxMjBDMDIwQzk0MENBQTINCjoxMDBDNDAwMDc1NDEyMEMwMjBDOTQwQ0E3NTQxMjBDMDIwQzk0MENBOTINCjoxMDBDNTAwMDc1NDEyMEMwNjQ0MTIwNDY3MEJDNzA0NzAwMDAwMDAwMTANCjoxMDBDNjAwMEMzRjEwODAzREIwMDcwQjQwMTMzMDAyNDAzQTUwMEJGMDcNCjoxMDBDNzAwMDVCMTkyMEM5NDBDQUFEMUIyMEMwMTg0NzIwQzk0MENBMTMNCjoxMDBDODAwMEI1NDEyMEMwMjBDOTQwQ0FCNTQxMjBDMDIwQzk0MENBRDINCjoxMDBDOTAwMEI1NDEyMEMwMjBDOTQwQ0FCNTQxMjBDMDIwQzk0MENBQzINCjoxMDBDQTAwMEI1NDEyMEMwMjBDOTQwQ0FCNTQxMjBDMDIwQzk0MENBQjINCjoxMDBDQjAwMEI1NDEyMEMwNjQ0MUI0RkE4NEYwNDAwOTcwQkM3MDQ3NkINCjoxMDBDQzAwMDJERTlGMDQxMDEzQjAwMjQ5QjAwMjU0NjI2NDZBNDQ2MjENCjoxMDBDRDAwMDVGRjAwMDBFMDNFMDVGRUEwQzBFQkVFQjAzMEVCQ0VCMTANCjoxMDBDRTAwMDBFMDc1MkY4MDc4MDUxRjgwRTcwQTdGQjA4NzhFNDE5MzgNCjoxMDBDRjAwMDU1RUIwODA1NTZGMTAwMDYxRUYxMDQwRTlFNDUwMURDNzkNCjoxMDBEMDAwMEU2NDVFQ0RENDBGODBDNDAyQzQ2MzU0NjAwMjYxQ0YxNEINCjoxMDBEMTAwMDA0MEM5QzQ1RENEREJDRUI0MzBGRENERDQwRjgwQzQwRjMNCjoxMDBEMjAwMEJERThGMDgxMkRFOUYwNEZBQkIwMUQ0NjA2OTNEQkIyNzQNCjoxMDBEMzAwMDVGMUVGRkIyMEM0Njc5QjJBRTAxMERGMTY4MEMwMDI5QkUNCjoxMDBENDAwMDA5OTQwNzkwMTU0NkI2QjJDREY4MjBDMEMwRjJBOTgxMkINCjoxMDBENTAwMDUyRjgyMTIwMDAyQTQwRjBBNDgxMDIzQjVCQjI1QTFDQzkNCjoxMDBENjAwMDA1RUI4MjAyMDVFMDUyRjgwNDBEMDEzQjAwMjg0MEYwM0INCjoxMDBENzAwMDk4ODE1OUIyNDgxQ0Y2RDEzNkIyMDAyRTMzNDZCOEJGMUUNCjoxMDBEODAwMDA2RjExRjAzNUIxMTcyNDIwMkYwMUYwMjRGRkE4M0Y4NTMNCjoxMDBEOTAwMDA2RjAxRjA5NThCRkMyRjEwMDA5QjhGMTAwMEYwN0REQzYNCjoxMDBEQTAwMDVBMUVEMkIyMDEzMjkyMDAwMDIxMEFBODA2RjAxQkY5QTUNCjoxMDBEQjAwMEI5RjEwMDBGNDBGMzhDODEwNjlGMDAyRjAwRjBDQzgwMkENCjoxMDBEQzAwMDJBNjgyQUFCMDNFQjg4MDEwMkZBMDlGMEM5RjEyMDAzNzMNCjoxMDBERDAwMDAxMkY0MUY4ODAwQzIyRkEwM0YyNDBGMkJEODA2OTY4Q0QNCjoxMDBERTAwMDJBQUMwMUZBMDlGMDA0RUI4ODA0MDI0MzAyMkYyMUZBMkQNCjoxMDBERjAwMDAzRjE0NEY4N0MyQzAwRjBBRjgwQUE2ODJBQUMwMkZBMTgNCjoxMDBFMDAwMDA5RjAwNEVCODgwNDAxNDMwMzJGMjJGQTAzRjI0NEY4QUINCjoxMDBFMTAwMDc4MUMwMEYwQTE4MEU5NjgyQUFDMDFGQTA5RjAwNEVCMjMNCjoxMDBFMjAwMDg4MDQwMjQzMDQyRjIxRkEwM0YxNDRGODc0MkMwMEYwRTMNCjoxMDBFMzAwMDkzODAyQTY5MkFBQzAyRkEwOUYwMDRFQjg4MDQwMTQzODINCjoxMDBFNDAwMDA1MkYyMkZBMDNGMjQ0Rjg3MDFDMDBGMDg1ODA2OTY5Q0UNCjoxMDBFNTAwMDJBQUMwMUZBMDlGMDA0RUI4ODA0MDI0MzA2MkYyMUZBQjgNCjoxMDBFNjAwMDAzRjE0NEY4NkMyQzc3RDBBQTY5MkFBQzAyRkEwOUYwOTUNCjoxMDBFNzAwMDA0RUI4ODA0MDE0MzA3MkYyMkZBMDNGMjQ0Rjg2ODFDQUMNCjoxMDBFODAwMDZBRDBFOTY5MkFBQzAxRkEwOUYwMDRFQjg4MDQwMjQzNEMNCjoxMDBFOTAwMDA4MkYyMUZBMDNGMTQ0Rjg2NDJDNUREMDJBNkEyQUFDQTkNCjoxMDBFQTAwMDAyRkEwOUYwMDRFQjg4MDQwMTQzMDkyRjIyRkEwM0YyNDUNCjoxMDBFQjAwMDQ0Rjg2MDFDNTBEMDY5NkEyQUFDMDFGQTA5RjAwNEVCQ0UNCjoxMDBFQzAwMDg4MDQwMjQzMEEyRjIxRkEwM0YxNDRGODVDMkM0M0QwMzINCjoxMDBFRDAwMEFBNkEyQUFDMDJGQTA5RjAwNEVCODgwNDA4NDMwQjJGMzMNCjoxMDBFRTAwMDIyRkEwM0YxNDRGODU4MEMzNkQwRUE2QTJBQUMwMkZBMjYNCjoxMDBFRjAwMDA5RjAwNEVCODgwNDAxNDMwQzJGMjJGQTAzRjI0NEY4QjINCjoxMDBGMDAwMDU0MUMyOUQwMjk2QjJBQUMwMUZBMDlGMDA0RUI4ODA0OUYNCjoxMDBGMTAwMDAyNDMwRDJGMjFGQTAzRjE0NEY4NTAyQzFDRDA2QTZCQzgNCjoxMDBGMjAwMDJBQUMwMkZBMDlGMDA0RUI4ODA0MDg0MzBFMkYyMkZBRDcNCjoxMDBGMzAwMDAzRjE0NEY4NEMwQzBGRDBBQTZCMDJGQTA5RjAwMTQzRkMNCjoxMDBGNDAwMDBGMkYyMkZBMDNGMjQ0Rjg0ODFDMDVEMEVCNkIwM0ZBOEENCjoxMDBGNTAwMDA5RjMxMzQzNDRGODQ0M0MwMDJFQzBGMkNEODAwQUFCQTENCjoxMDBGNjAwMDAxOTMwNjk4MDE5RDgzMDBFQTE4RDQxODIxMUYwNDkxNkINCjoxMDBGNzAwMDA0OTkwMDkyQzJGMTAzMDcwRjQ0MjdGMDAzMDcyQUE5M0UNCjoxMDBGODAwMENCMThFNzFCMDBGMUZGM0IwMzkzMDgzRjEzMUYwMjk0QUMNCjoxMDBGOTAwMDA1OTMwMUVCOEIwQjRGRUE0MDBDQTVGMTA0MDk0RkYwRDANCjoxMDBGQTAwMDAxMEFCMDQ2QkU0NkJDRjEwMDBGNzhERDJBQUFDQUYxOUMNCjoxMDBGQjAwMDAxMDMwMkVCODMwMzUzRjg4ODdDMDJFQjhBMDMwMDIyQ0YNCjoxMDBGQzAwMDUzRjg4ODZDMTQ0NjEzNDYyQUE5MDFFQjgzMDMxMUIyMjcNCjoxMDBGRDAwMDUzRjg4MDNDNTZGODIxMDBDMzFBMUIxQjgzNDIwMkYxRDANCjoxMDBGRTAwMDAxMDU1NEQwNkFCMjhDQkYwMTI0MDAyNDYyNDU0N0Y4NDENCjoxMDBGRjAwMDIxMzAxMzQ2RThEQkRERTkwMDMyQUFFQjA0MEFCQUZBMzUNCjoxMDEwMDAwMDhBRkE5MzQyNEZFQTVBMUEwQUQ5MDU5QTAwMjMxMTY4QkMNCjoxMDEwMTAwMDQzRUE1MTAzNDJGODA0Mzk0QTQ1NEZFQUMxNzNGNkQxMTUNCjoxMDEwMjAwMDAzOUI1M0Y4ODAyQzVCRjg4MDNDNDNFQUMyNzM0QkY4NzcNCjoxMDEwMzAwMDgwM0MwMDlBMDI5QjkzNDIwQUQ5MDQ5QTAwMjMxMTY4Q0INCjoxMDEwNDAwMDQzRUE1MTAzNDJGODA0Mzk3MjQ1NEZFQUMxNzNGNkQxQkQNCjoxMDEwNTAwMDA4RjFGRjM4MEZGQTg4RjhCOEYxMDAwRkEzREEyQUFCQ0QNCjoxMDEwNjAwMDAzRUI4QTBBMDY5QjVBRjg4ODRDMDAyQjBDREQwNzlCODENCjoxMDEwNzAwMDA2OUQxQTFGMDQzQzAwMjMwMTMzNTlCMjU0RjgwNDBGOTMNCjoxMDEwODAwMDQyRjgwNDBGOEQ0MkY3REMyQkIwQkRFOEYwOEYwMTMyM0YNCjoxMDEwOTAwMDUyQjI2MjQ1NDdGODIxMzAxMzQ2OTVEQkFCRTcwMDI0OTYNCjoxMDEwQTAwMEE5RTc0QjFDNUJCMjAwMkIzRkY0NjZBRTAzRjE4MDQyMTQNCjoxMDEwQjAwMDAxM0E1NUY4MjIyMDJBQjEwMDIxNTIwODAxRjEwMTAxMUMNCjoxMDEwQzAwMEZCRDE4QUIyMDEzQjAyRUI0MzEzRjYxQUI2QjI1M0U2RTgNCjoxMDEwRDAwMDA2OUIwMDJCMENERDBBQUI3QTFDOTIwMDI5NDYwM0VCMjENCjoxMDEwRTAwMDg4MDAwMTkzMDVGMDVCRkYwMDJFQkZGNjNBQUZCRUU3MjQNCjoxMDEwRjAwMDAwMkVCRkY2MzRBRkM3RTc0RkYwMDEwQUFGRTcwMEJGREQNCjoxMDExMDAwMDJERTlGMDRGRDRCMjY1MUVFREIyNkJCMjAwMkI4RkIwNUINCjoxMDExMTAwMDE5REI1MUY4MjM2MEI2QjkwMjNDNjRCMjAxMzQwMUVCMkINCjoxMDExMjAwMDg0MDQwMkUwNTRGODA0NkQ2RUI5MDEzQjVCQjI1RTFDQUUNCjoxMDExMzAwMEY4RDFERkY4NzA5MUQ5RjgwMDMwMDAyNEYzQjkwMDIwMUQNCjoxMDExNDAwMDBGQjBCREU4RjA4RjAxMzM1QkIyMDAyQjAwRjBBODgwMzgNCjoxMDExNTAwMDAzRjE4MDQ0MDEzQzUxRjgyNDQwMkNCMTAwMjY2NDA4N0UNCjoxMDExNjAwMDA2RjEwMTA2RkJEMUI0QjIwMTNCMDRFQjQzMTMxQ0IyMDANCjoxMDExNzAwMERGRjgzMDkxRDlGODAwMzAwMDJCRTBEMDkwNDZDNEVCNzYNCjoxMDExODAwMDQyMTIwNTkxNEZGMEZGMzRDOEYxMDgwMTEyQjIyNEZBNUYNCjoxMDExOTAwMDAyRjJDOTAwMDM5MjRBMUM4MjQ2QUQwMDA0OTIwN0FBREINCjoxMDExQTAwMDBBRUIwNTA0NTcxOTQwMjUwNDIwQ0RFOTAxNTQwMEZCNDINCjoxMDExQjAwMDA4QUJBQkYxMDQwQjE4RkIwMEY2MzE0NjUwNDY5ODQ3REMNCjoxMDExQzAwMDAwMjhCQ0QwREJGODAwMzAwMzlBQjhGMTAwMEYwM0VBMjYNCjoxMDExRDAwMDAyMDNDQkY4MDAzMDBFREREREU5MDE1NEFBRjEwNDAzNkYNCjoxMDExRTAwMDAwMjI1M0Y4MDQxRjlDNDI0MkVBMDEwMkY5RDFDREU5RTINCjoxMDExRjAwMDAxNTRCRTQ2MzJCOTAxOUIwMTNCMDE5MzlGRDBEOUY4RkYNCjoxMDEyMDAwMDAwMzBEQUU3RERGODEwQzAwNTk5MDZBQTUwNDY2NDQ2QkENCjoxMDEyMTAwMDAwMjMwNkE3QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwOTgNCjoxMDEyMjAwMEU0MTk4MEM5MjBDODdGMUI4MEMyMjA0NzgwQzkyMEM4MUMNCjoxMDEyMzAwMEFGNDE4MEMyODBDOTIwQzhBRjQxODBDMjgwQzkyMEM4RTgNCjoxMDEyNDAwMEFGNDE4MEMyODBDOTIwQzhBRjQxODBDMjgwQzkyMEM4RDgNCjoxMDEyNTAwMEFGNDE4MEMyODBDOTIwQzhBRjQxODBDMjgwQzkyMEM4QzgNCjoxMDEyNjAwMEFGNDE4MEMyNUI0MURERTkwMTU0QjNGQTgzRjM1QjA5MEUNCjoxMDEyNzAwMDA2QUEwMDIxNzc0NjUyRjgwNDBCQkE0MjQxRUEwMDAxNUYNCjoxMDEyODAwMEY5RDE1QjAwMDAyOTBDQkY1OTQyQzNGMTAxMDFDQUIyNzgNCjoxMDEyOTAwMDAxMkFDREU5MDE1NEFFRDExMDQ2MEZCMEJERThGMDhGNjANCjoxMDEyQTAwMDFDNDY2NUU3NzQ1ODAwMjAyREU5RjA0N0IzRjkwMjcwMzkNCjoxMDEyQjAwMDE3RjExRjA0NDhCRjA3RjEzRTA0OTg0NkZCMUQ0OEJGQzUNCjoxMDEyQzAwMDA3RjEwRTAzREQxMDY0MTE5NTQyNEZGQTg0RjkyOEJGMkYNCjoxMDEyRDAwMDE1NDZCOUYxMDAwRjA2NDY4QTQ2MDZERDYyMUVEMkIyRjcNCjoxMDEyRTAwMDAxMzI5MjAwMDAyMTA1RjA3RUZFRUIxQzQ4QkZBQjFERDENCjoxMDEyRjAwMDlCMTA1QUIyMDAyQTA3REQ1QTFFRDJCMjAxMzI5MjAwNjgNCjoxMDEzMDAwMDAwMjEzMDQ2MDVGMDZGRkUwMDJEMTZERDAwMjEwQjQ2NTINCjoxMDEzMTAwMDY4MUVDMzFBMjNGMDAzMEMxQUY4MDFFMDU2RjgwQzIwREINCjoxMDEzMjAwMDAzRjAwMzAzREIwMDAxMzEwRUZBMDNGMzQ5QjIxQTQzNjENCjoxMDEzMzAwMDhENDI0NkY4MEMyMDBCNDZFQkRDRUQwMEJENDIzRkQ5NTgNCjoxMDEzNDAwMDA2RUI4NDAyOTY0MkE1RUIwNzA3QTJGMTA0MDMxM0QyMzENCjoxMDEzNTAwMEM2RjEwMzA1MUQ0NDI1RjAwMzA1NTUxQjA4M0RDN0YxRTMNCjoxMDEzNjAwMDIwMEMwMDIwMTk2ODIxRkEwN0YyMDI0MzQzRjgwNDI5RUYNCjoxMDEzNzAwMEFCNDIwMUZBMENGMEY1RDFFNEIyNjMxRTVCQjIwMDJCNzQNCjoxMDEzODAwMDA4RjEyNDAyMTVEQjFCQjI1MkY4MjMxMDU2RjgyMzMwNjMNCjoxMDEzOTAwMDhCNDIxNUQzMEREODAyM0M2NEIyMDhFMDUyRjgyNDEwRjkNCjoxMDEzQTAwMDU2RjgyNDMwOTk0MjBCRDgwNEYxRkYzNDAxRDMyMzA2QjgNCjoxMDEzQjAwMEY0RDU0QjQ2MzE0NjMwNDZCREU4RjA0N0ZGRjc1MEJDMDgNCjoxMDEzQzAwMEJERThGMDg3MkRFOUYwNEY5ODQ2OTNGOTAwMzA5QkIwQzcNCjoxMDEzRDAwMDAwMjQwMTNCODI0NjAxOTE5MTQ2MEFBRDlBMDAyMTQ2QzQNCjoxMDEzRTAwMDIzNDYyMDQ2QTM0NjAwMjYwMkUwNUZFQTBCMDZCNjFBMTMNCjoxMDEzRjAwMEJCRUIwNjBDNTlGODBDRTA1OUY4MDZDMEFDRkIwRUNFNUUNCjoxMDE0MDAwMDEzRUIwQzAzNTFFQjBFMDE1MEYxMDAwMDA0MzY5NjQyMzENCjoxMDE0MTAwMDAxREM1RTQ1RUNERDQ1RjgwQjMwMEI0NjAxNDYwMDIwNTMNCjoxMDE0MjAwMDFCRjEwNDBCOTM0NURFRERCQkVCNDIwRkREREQ0NUY4MjANCjoxMDE0MzAwMDBCMzAwMkFFRDhGOEIwMzAyOTQ2MzA0Njk4NDc5OEY5QkMNCjoxMDE0NDAwMDAwMzAwMTNCOUIwMDIxNDYyMjQ2QTM0NjI3NDYwMDIwNTANCjoxMDE0NTAwMDAxRTAzODAwQzAxQUI3RUIwMDBDNTZGODBDRTA1QUY4NUYNCjoxMDE0NjAwMDAwQzBBQ0ZCMEVDRTExRUIwQzAxNTJFQjBFMDI1QkYxOTcNCjoxMDE0NzAwMDAwMEIwNDMwOTg0MjAxRENCODQyRUNEREU5NTExMTQ2MjINCjoxMDE0ODAwMDVBNDY1RkYwMDAwQjA0Mzc5RjQyRTBEREI3RUI0MzBGOTUNCjoxMDE0OTAwMERGRERFOTUxNTA0NkQ4RjhCMDMwMjk0Njk4NDc5OEY5MzENCjoxMDE0QTAwMDAwMzAwMTNCOUIwMDIxNDYyMjQ2MjA0NjI3NDY1RkYwNDQNCjoxMDE0QjAwMDAwMEMwM0UwNUZFQTA3MENCQ0VCMDMwQ0I3RUIwQzBFNkYNCjoxMDE0QzAwMDU5RjgwRUEwNTZGODBDRTBBRUZCMEFFQTExRUIwRTAxM0INCjoxMDE0RDAwMDUyRUIwQTAyNTBGMTAwMDAxQ0YxMDQwQzlDNDUwMURDQTcNCjoxMDE0RTAwMEJDNDVFQkRERTk1MTExNDYwMjQ2MDAyMDA0Mzc5RjQyMUUNCjoxMDE0RjAwMERERERCN0VCNDMwRkRERERFOTUxRDhGOEIwMzAyOTQ2MkINCjoxMDE1MDAwMDMwNDY5ODQ3OThGOTAwMzAyMjQ2MjE0NjIwNDYyNzQ2MjMNCjoxMDE1MTAwMDAxOUMwMTNCOUIwMEExNDYwMDI0MDFFMDNDMDBFNDFBMzENCjoxMDE1MjAwMEI3RUIwNDBDNTZGODBDRTA1OUY4MDRDMEFDRkIwRUNFMzcNCjoxMDE1MzAwMDEyRUIwQzAyNTFFQjBFMDE1MEYxMDAwMDA0MzQ5QzQyRkUNCjoxMDE1NDAwMDAxRENCQzQyRUNEREVBNTEwQTQ2MDE0NjAwMjAwNDM3Q0ENCjoxMDE1NTAwMDlGNDJFMUREQjdFQjQzMEZFMERERUE1MUQ4RjhCMDMwNTANCjoxMDE1NjAwMDAxOTgyOTQ2OTg0NzFCQjBCREU4RjA4RjAwMDAwMDAwQTUNCjoxMDE1NzAwMDJERTlGMDQzOURGOTFDOTBDOUYxMDgwNUVEMDAwNUYxMzYNCjoxMDE1ODAwMDAxMDg5RTQ2NDc0NjA2NDYwMDI0MDRBNUFGRjMwMDgwQTYNCjoxMDE1OTAwMDdGMTkyMEM5MDhDQUVEMTgyMEM2Mzg0NzIwQzkwOENBRDMNCjoxMDE1QTAwMDVENDEyMEM2MjBDOTA4Q0E1RDQxMjBDNjIwQzkwOENBQkQNCjoxMDE1QjAwMDVENDEyMEM2MjBDOTA4Q0E1RDQxMjBDNjIwQzkwOENBQUQNCjoxMDE1QzAwMDVENDEyMEM2MjBDOTA4Q0E1RDQxMjBDNjIwQzkwOENBOUQNCjoxMDE1RDAwMDVENDEyMEM2NjQ0MTA0QkI1RkZBODlGNDYyMUU1MkIyQzkNCjoxMDE1RTAwMDAwMkExQURCMTJCMjVFRjgyMjEwNTBGODIyMjA5MTQyMzMNCjoxMDE1RjAwMDQxRDgxMkQzMDIzQzYyQjI1MTFDODkwMDBFRUIwMTA0QTcNCjoxMDE2MDAwMDAxNDQwOEUwNTRGODA0N0Q1MUY4MDQ2REI3NDIzMkQ4MjMNCjoxMDE2MTAwMDAyRjFGRjMyMDFEMzEzMDZGNEQ1NzM0NjQ1NDYwMjQ2NjQNCjoxMDE2MjAwMDAwMjEwNkE0QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwODkNCjoxMDE2MzAwMDJEMTkxMENBNDBDQkE0MUIxMEMwMjg0NzEwQ0E0MENCOUMNCjoxMDE2NDAwMEI0NDExMEMwMTBDQTQwQ0JCNDQxMTBDMDEwQ0E0MENCNDYNCjoxMDE2NTAwMEI0NDExMEMwMTBDQTQwQ0JCNDQxMTBDMDEwQ0E0MENCMzYNCjoxMDE2NjAwMEI0NDExMEMwMTBDQTQwQ0JCNDQxMTBDMDEwQ0E0MENCMjYNCjoxMDE2NzAwMEI0NDExMEMwNDk0MUJERThGMDgzMDBCRjAwMDAwMDAwNDQNCjoxMDE2ODAwMDJERTlGMDRGOEE0NkEzQjAxMUY5MDQzQjAwOTNDM0YxNTINCjoxMDE2OTAwMDA4MDIwMDIzMDc0NkNERTkwMzMzMDEyMENERTkwNTMzRDUNCjoxMDE2QTAwMENERTkwNzMzMDk5M0NERTkwQjMzQ0RFOTBEMzNDREU5MEUNCjoxMDE2QjAwMDBGMzMxMTkzRDIwMDAyQUIwMjkwMEE5MDAxMzIxODQ2MDgNCjoxMDE2QzAwMDAwMjQwNkE1QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwRTUNCjoxMDE2RDAwMDUyMTkyMEM5NDBDOEFEMTkyMEMzMTA0NzIwQzk0MEM4QkQNCjoxMDE2RTAwMDc1NDEyMEMzMjBDOTQwQzg3NTQxMjBDMzIwQzk0MEM4RTYNCjoxMDE2RjAwMDc1NDEyMEMzMjBDOTQwQzg3NTQxMjBDMzIwQzk0MEM4RDYNCjoxMDE3MDAwMDc1NDEyMEMzMjBDOTQwQzg3NTQxMjBDMzIwQzk0MEM4QzUNCjoxMDE3MTAwMDc1NDEyMEMzNjQ0MTlERjgwMDMwNUExRUQyQjIwMTkyMzcNCjoxMDE3MjAwMDUyQjIwMDJBMUVEQjIyQTkwMUVCODIwMTUxRjg4MDFDNzMNCjoxMDE3MzAwMEMxQjkwMjNCNUJCMjAxRTA0OTY4OTlCOTVBQjIwMkE5NEENCjoxMDE3NDAwMDAxM0I1MDFDMDFFQjgzMDFGNkQxMDA5QjAwMkIwNkREMTENCjoxMDE3NTAwMDAxOUEwMTMyOTIwMDM4NDYwQUE5MDVGMDIwRkMyM0IwMTQNCjoxMDE3NjAwMEJERThGMDhGMDEzMjUyQjIwMDJBRUVEMDIyQUIwM0VCN0INCjoxMDE3NzAwMDgyMDM1M0Y4ODQzQzAwMkIwMEYwOEY4MDAwMjU1QjA4MjcNCjoxMDE3ODAwMDA1RjEwMTA1RkJEMUFEQjIwNUVCNDIxNTIxM0QyREIyQUUNCjoxMDE3OTAwMDAxMkREQUREMTJBRTBBQUM0RkYwMDAwOEI5NDYwNEUwQzQNCjoxMDE3QTAwMDAxM0RBQkIyMDEyQjFEQjI3NUQwOUFGOTAwMjAwMTNBNzANCjoxMDE3QjAwMDkyMDA0MzQ2NDE0NkMzNDY0NzQ2MDAyMDAxRTAzODAwQjgNCjoxMDE3QzAwMDgwMUFCN0VCMDAwQzU0RjgwQ0UwNTRGODAwQzBBQ0ZCRTYNCjoxMDE3RDAwMDBFQ0UxM0VCMEMwMzUxRUIwRTAxNUJGMTAwMEIwNDMwNEENCjoxMDE3RTAwMDkwNDIwMURDQjg0MkVDRERGMzUxMEI0NjU5NDY1RkYwMDQNCjoxMDE3RjAwMDAwMEIwNDM3OTc0MkUwRERCN0VCNDIwRkRGRERGMzUxMUENCjoxMDE4MDAwMERBRjhCMDMwMzE0NjIwNDY5ODQ3NkIxMTIyQUEwMkVCMzUNCjoxMDE4MTAwMDgzMDNBREIyNTNGODgwMkMwMTIxMDVGMDFGMDMwMUZBQjgNCjoxMDE4MjAwMDAzRjMxMzQyQkNEMDlBRjkwMDIwMDEzQTkyMDA0MzQ2RDgNCjoxMDE4MzAwMDQxNDY0NzQ2QzM0NjAwMjAwMkUwNUZFQTBCMDA4MDFBOUINCjoxMDE4NDAwMEJCRUIwMDBDNTlGODBDRTA1NEY4MDBDMEFDRkIwRUNFMUENCjoxMDE4NTAwMDEzRUIwQzAzNTFFQjBFMDE1N0YxMDAwNzA0MzA5MDQyREINCjoxMDE4NjAwMDAxREM1ODQ1RUNERDQ2RjgwQjMwMEI0NjM5NDYwMDI3QzUNCjoxMDE4NzAwMDFCRjEwNDBCOTM0NURFRERCQkVCNDIwRkREREQ0NkY4Q0INCjoxMDE4ODAwMDBCMzBEQUY4QjAzMDAxM0QzMTQ2MjA0Njk4NDdBQkIyMTQNCjoxMDE4OTAwMDAxMkIxREIyODlEMTRGNDY1N0U3MUQ0Njc0RTcwMEJGQTMNCjoxMDE4QTAwMEYwQjU5REY5MTQ0MEM0RjEwODA0RTQwMDY2MUM4NDQ2QjgNCjoxMDE4QjAwMDlFNDYzNTQ2MDQ0NjAwMjcwNEEzMDBCRkFGRjMwMDgwRDANCjoxMDE4QzAwMEVEMTgwOEM5MDFDQTFCMUEwOEM0Mjg0NzA4QzkwMUNBNkINCjoxMDE4RDAwMDgzNDEwOEM0MDhDOTAxQ0E4MzQxMDhDNDA4QzkwMUNBQjANCjoxMDE4RTAwMDgzNDEwOEM0MDhDOTAxQ0E4MzQxMDhDNDA4QzkwMUNBQTANCjoxMDE4RjAwMDgzNDEwOEM0MDhDOTAxQ0E4MzQxMDhDNDA4QzkwMUNBOTANCjoxMDE5MDAwMDgzNDEwOEM0N0Y0MTA3QjFGMEJENjA0NjczNDYzNDQ2NDkNCjoxMDE5MTAwMDYyNDYwMDIxMDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwNTENCjoxMDE5MjAwMDY0MTkyMENBNDBDQkFEMTkyMEMwMjA0NzIwQ0E0MENCNDMNCjoxMDE5MzAwMDc1NDEyMEMwMjBDQTQwQ0I3NTQxMjBDMDIwQ0E0MENCOTENCjoxMDE5NDAwMDc1NDEyMEMwMjBDQTQwQ0I3NTQxMjBDMDIwQ0E0MENCODENCjoxMDE5NTAwMDc1NDEyMEMwMjBDQTQwQ0I3NTQxMjBDMDIwQ0E0MENCNzENCjoxMDE5NjAwMDc1NDEyMEMwNDk0MUYwQkQwMDAwMDAwMDAwMDAwMDAwQUENCjoxMDE5NzAwMDBCNjgyREU5RjA0RjAzNjA0QjY4NDM2MDhCNjg4MzYwMTANCjoxMDE5ODAwMENCNjhDMzYwMEI2OTAzNjE0QjY5NDM2MThCNjk4MzYxRjkNCjoxMDE5OTAwMENCNjlDMzYxRDFFOTBENjVEMUU5MEIzN0NDNkI4REIwNTMNCjoxMDE5QTAwMDRGRjAwMDBBQ0RFOTBBNTQwNEFDQ0RFOTA4NzY4MTQ2MkYNCjoxMDE5QjAwMDA3OTNDREU5MDVBQUNERjgxMEEwMDEyNTI2NDYyNzQ2QjQNCjoxMDE5QzAwMDAwMjMwNkEyQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwRTYNCjoxMDE5RDAwMEFEMTgwNENFMDFDRjEyMTgwNEM0Mjg0NzA0Q0UwMUNGOUQNCjoxMDE5RTAwMDQyNDEwNEM0MDRDRTAxQ0Y0MjQxMDRDNDA0Q0UwMUNGMUQNCjoxMDE5RjAwMDQyNDEwNEM0MDRDRTAxQ0Y0MjQxMDRDNDA0Q0UwMUNGMEQNCjoxMDFBMDAwMDQyNDEwNEM0MDRDRTAxQ0Y0MjQxMDRDNDA0Q0UwMUNGRkMNCjoxMDFBMTAwMDQyNDEwNEM0NUI0MTAxMjYwMDkzNEM0NjA0QUQ0RjQ2NEQNCjoxMDFBMjAwMDAwMjMwNkEyQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwODUNCjoxMDFBMzAwMEI2MTgwNENGMDFDRDEyMTgwNEM0MzA0NzA0Q0YwMUNEMkQNCjoxMDFBNDAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEQkUNCjoxMDFBNTAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEQUUNCjoxMDFBNjAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEOUUNCjoxMDFBNzAwMDQyNDEwNEM0NUI0MUQxRTkwQzU0RDFFOTBFNjdDREU5ODANCjoxMDFBODAwMDA3NTQwNEFDQ0RFOTA5NjcwMTkzQ0RGODJDQTAwMTI1REENCjoxMDFBOTAwMDI2NDYyNzQ2MDAyMzA1QTJBRkYzMDA4MEFGRjMwMDgwNUYNCjoxMDFBQTAwMEFEMTgwNENFMDFDRjEyMTgwNEM0Mjg0NzA0Q0UwMUNGQ0MNCjoxMDFBQjAwMDQyNDEwNEM0MDRDRTAxQ0Y0MjQxMDRDNDA0Q0UwMUNGNEMNCjoxMDFBQzAwMDQyNDEwNEM0MDRDRTAxQ0Y0MjQxMDRDNDA0Q0UwMUNGM0MNCjoxMDFBRDAwMDQyNDEwNEM0MDRDRTAxQ0Y0MjQxMDRDNDA0Q0UwMUNGMkMNCjoxMDFBRTAwMDQyNDEwNEM0NUI0MTAxMjYwMjkzNEM0NjA0QUQ0RjQ2N0INCjoxMDFBRjAwMDAwMjMwNkEyQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwQjUNCjoxMDFCMDAwMEI2MTgwNENGMDFDRDEyMTgwNEM0MzA0NzA0Q0YwMUNENUMNCjoxMDFCMTAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNERUQNCjoxMDFCMjAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEREQNCjoxMDFCMzAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEQ0QNCjoxMDFCNDAwMDQyNDEwNEM0NUI0MUQxRTkwODQ1OEU2QThGNkIwNjk2MTkNCjoxMDFCNTAwMENERTkwNDQ1Q0M2QjBBOTcwQjk0MDM5M0NERTkwOEFBMTENCjoxMDFCNjAwMENERjgxQ0EwNEM0NjA0QUQwMTI2NEY0NjAwMjMwM0EyMkQNCjoxMDFCNzAwMEI2MTgwNENGMDFDRDEyMTgwNEM0MzA0NzA0Q0YwMUNERUMNCjoxMDFCODAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEN0QNCjoxMDFCOTAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNENkQNCjoxMDFCQTAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNENUQNCjoxMDFCQjAwMDQyNDEwNEM0NUI0MUQxRTkwQTU2OUI0NjRCNkEwNjk2RjINCjoxMDFCQzAwMEQxRTkwRDQ3Q0RFOTA0MzVDRDZCMDk5NTBENkEwODk3MkMNCjoxMDFCRDAwMDBCOTUwNzk0MEE5NDA0QUQ0QzQ2MDEyNjRGNDYwMDIzMEENCjoxMDFCRTAwMDA2QTIwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwMjgNCjoxMDFCRjAwMEI2MTgwNENGMDFDRDEyMTgwNEM0MzA0NzA0Q0YwMUNENkMNCjoxMDFDMDAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNERkMNCjoxMDFDMTAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNERUMNCjoxMDFDMjAwMDQyNDEwNEM0MDRDRjAxQ0Q0MjQxMDRDNDA0Q0YwMUNEREMNCjoxMDFDMzAwMDQyNDEwNEM0NUI0MUQxRTkwQjQ1NEU2QjBGNkEwNjk2RTUNCjoxMDFDNDAwMENERTkwNDQ1OEM2QTBBOTcwQjk0OTg0NkNERTkwOEFBMTkNCjoxMDFDNTAwMENERjgxQ0EwNEM0NjA0QUQwMTI2NEY0NjAwMjMwM0EyM0MNCjoxMDFDNjAwMEI2MTgwNENGMDFDRDEyMUEwNEM0MzA0NzA0Q0YwMUNERjkNCjoxMDFDNzAwMDgyNDEwNEM0MDRDRjAxQ0Q4MjQxMDRDNDA0Q0YwMUNEMEMNCjoxMDFDODAwMDgyNDEwNEM0MDRDRjAxQ0Q4MjQxMDRDNDA0Q0YwMUNERkMNCjoxMDFDOTAwMDgyNDEwNEM0MDRDRjAxQ0Q4MjQxMDRDNDA0Q0YwMUNERUMNCjoxMDFDQTAwMDgyNDEwNEM0NUI0MUQxRTkwQzQ1RDFFOTBFNjcwNDk0M0INCjoxMDFDQjAwMENERTkwNTU2Q0M2QTRENkEwNzk3Q0RFOTBBNTQ5RTQ2OTANCjoxMDFDQzAwMENERTkwOEFBNEM0NjA0QUQwMTI2NEY0NjAwMjMwM0EyRTUNCjoxMDFDRDAwMEI2MTgwNENGMDFDRDEyMUEwNEM0MzA0NzA0Q0YwMUNEODkNCjoxMDFDRTAwMDgyNDEwNEM0MDRDRjAxQ0Q4MjQxMDRDNDA0Q0YwMUNEOUMNCjoxMDFDRjAwMDgyNDEwNEM0MDRDRjAxQ0Q4MjQxMDRDNDA0Q0YwMUNEOEMNCjoxMDFEMDAwMDgyNDEwNEM0MDRDRjAxQ0Q4MjQxMDRDNDA0Q0YwMUNEN0INCjoxMDFEMTAwMDgyNDEwNEM0NUI0MUQxRTkwRDQ1Q0U2QjBGNkEwNDk0NDYNCjoxMDFEMjAwMDRDNkEwNTk1MDY5NjhENkEwRTZCMDk5NTlDNDZDREU5MjENCjoxMDFEMzAwMDA3NzQwQjk2Q0RGODI4QTA0QzQ2MDRBRDAxMjY0QjQ2RkYNCjoxMDFENDAwMDAwMjcwNkEyQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwNUUNCjoxMDFENTAwMEI2MTgwNENCMDFDRDEyMUEwNEM0MzA0NzA0Q0IwMUNEMTANCjoxMDFENjAwMDgyNDEwNEM0MDRDQjAxQ0Q4MjQxMDRDNDA0Q0IwMUNEMjMNCjoxMDFENzAwMDgyNDEwNEM0MDRDQjAxQ0Q4MjQxMDRDNDA0Q0IwMUNEMTMNCjoxMDFEODAwMDgyNDEwNEM0MDRDQjAxQ0Q4MjQxMDRDNDA0Q0IwMUNEMDMNCjoxMDFEOTAwMDgyNDEwNEM0N0Y0MUQxRTkwRTQ1NEU2QThBNkEwNDk0QTcNCjoxMDFEQTAwMENDNkE0OTZCMDg5MjA3OTYwOTk0MEI5MUNERjgxOEEwNUMNCjoxMDFEQjAwMENERjgyOEEwMDU5NTA0QUE0OTQ2MDEyNDRFNDYwMDI1RTENCjoxMDFEQzAwMDA2QTAwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwNDgNCjoxMDFERDAwMDI0MTgwMUNFMDhDQUMwMUEwMUMxMjA0NzAxQ0UwOENBODINCjoxMDFERTAwMDk4NDEwMUMxMDFDRTA4Q0E5ODQxMDFDMTAxQ0UwOENBN0INCjoxMDFERjAwMDk4NDEwMUMxMDFDRTA4Q0E5ODQxMDFDMTAxQ0UwOENBNkINCjoxMDFFMDAwMDk4NDEwMUMxMDFDRTA4Q0E5ODQxMDFDMTAxQ0UwOENBNUENCjoxMDFFMTAwMDk4NDEwMUMxNkQ0MURERTkwMDMyMUE0NDAyOUIxQTQ0MjgNCjoxMDFFMjAwMDAzOUIxQTQ0NUE0NDkwNDRENjQ1MTRCRkM2NDZBOEYxQjENCjoxMDFFMzAwMDAxMEVENDQ1MTRCRkY0NDZBRUYxMDEwQzU3NDUxNEJGNTINCjoxMDFFNDAwMDY3NDZBQ0YxMDEwNzU1NDUxNEJGM0Q0NjdEMUU1NTQ1MUINCjoxMDFFNTAwMDRFREJERkY4MENFMTRGRjAwMTA4QUM0NjQ4NDZCQ0YxMjANCjoxMDFFNjAwMDAwMEYxNkQxQzI2OTAxMzI3N0QxODI2OTAwMkE3NEQwN0QNCjoxMDFFNzAwMDAxMkEwRUQ4NDI2OTYyQjkwMjY5NTJCOUMyNjg0MkI5RjANCjoxMDFFODAwMDgyNjgwMTMyNjlEMTQyNjgwMTMyNjZEMTAyNjgwMTMyNEENCjoxMDFFOTAwMDYzRDEwMjQ2NzE0NjQ0NDYwMzQ2MDAyNjAzQTcwMEJGQUQNCjoxMDFFQTAwMEU0MTk4MENCMjBDOTdGMUI4MEMyMjA0NzgwQ0IyMEM5OEENCjoxMDFFQjAwMEFGNDE4MEMyODBDQjIwQzlBRjQxODBDMjgwQ0IyMEM5NTYNCjoxMDFFQzAwMEFGNDE4MEMyODBDQjIwQzlBRjQxODBDMjgwQ0IyMEM5NDYNCjoxMDFFRDAwMEFGNDE4MEMyODBDQjIwQzlBRjQxODBDMjgwQ0IyMEM5MzYNCjoxMDFFRTAwMEFGNDE4MEMyNzY0MTAwMkUwOEJGQUNGMTAxMENCNkU3Q0QNCjoxMDFFRjAwMERGRjg2Q0UwNEZGMDAxMENDODQ2NDI0NjcxNDY2NDQ2N0MNCjoxMDFGMDAwMDQzNDYwMDI2MDVBNzAwQkZBRkYzMDA4MEFGRjMwMDgwNzMNCjoxMDFGMTAwMEU0MTk4MENCMDFDOTNGMTg4MEMyMjA0NzgwQ0IwMUM5OUENCjoxMDFGMjAwMDQ3NDE4MEMyODBDQjAxQzk0NzQxODBDMjgwQ0IwMUM5RjMNCjoxMDFGMzAwMDQ3NDE4MEMyODBDQjAxQzk0NzQxODBDMjgwQ0IwMUM5RTMNCjoxMDFGNDAwMDQ3NDE4MEMyODBDQjAxQzk0NzQxODBDMjgwQ0IwMUM5RDMNCjoxMDFGNTAwMDQ3NDE4MEMyNzY0MUFEMTlDRkQ0MERCMEJERThGMDhGQjYNCjoxMDFGNjAwMDMwQzEwMTA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzcNCjoxMDFGNzAwMDJERTlGMDRGOUJCMDkyRjkwMDMwMDA5MzkzNDYwMzI2NzENCjoxMDFGODAwMDAwMjIwMTNCOEM0NjAxOTE5QjAwQ0RFOTAzMjJDREU5NjMNCjoxMDFGOTAwMDA1MjJDREU5MDcyMjA5OTIxMTQ2MDI5NjA3NDYxNDQ2MEENCjoxMDFGQTAwMDE1NDYwREYxMjgwODVGRjAwMDBFMDNFMDVGRUEwNTBFMEMNCjoxMDFGQjAwMEJFRUIwMzBFQjVFQjBFMDk1Q0Y4MDlBMDVDRjgwRTkwQzENCjoxMDFGQzAwMEE5RkIwQTlBMTFFQjA5MDE1MkVCMEEwMjU0RjEwMDA0MzENCjoxMDFGRDAwMDFFRjEwNDBFOUU0NTAxRENBRTQ1RUJERDQ4RjgwNTEwMTANCjoxMDFGRTAwMDExNDYyMjQ2MDAyNDA0MzU5RDQyRENEREI1RUI0MzBGNEINCjoxMDFGRjAwMERDREQ0OEY4MDUxMERCRjhCMDMwNDE0Njk4NDcwMDlCMUYNCjoxMDIwMDAwMEMzRjEwODAzREIwMDAzRjEwMTBBNTE0NjAyQUEwQkYxRjgNCjoxMDIwMTAwMDA0MDkzQjQ2M0M0NjAwMjAwNEE2MDBCRkFGRjMwMDgwMDUNCjoxMDIwMjAwMDg5MTk0MENDMjBDQTc2MUI0MEMzMDg0NzQwQ0MyMENBM0YNCjoxMDIwMzAwMEFFNDE0MEMzNDBDQzIwQ0FBRTQxNDBDMzQwQ0MyMENBRDANCjoxMDIwNDAwMEFFNDE0MEMzNDBDQzIwQ0FBRTQxNDBDMzQwQ0MyMENBQzANCjoxMDIwNTAwMEFFNDE0MEMzNDBDQzIwQ0FBRTQxNDBDMzQwQ0MyMENBQjANCjoxMDIwNjAwMEFFNDE0MEMzNDA0MTAwMjgyREQxM0I0NjRBNDY1MTQ2MkYNCjoxMDIwNzAwMDM4NDYwMDI0MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwMTENCjoxMDIwODAwMDQ5MTkyMEM4NDBDQUFEMTkyMEMzMDg0NzIwQzg0MENBMTINCjoxMDIwOTAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBMkENCjoxMDIwQTAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBMUENCjoxMDIwQjAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBMEENCjoxMDIwQzAwMDc1NDEyMEMzNjQ0MTlCRjkwMDMwMDE5ODAwMjIwMTNCMTcNCjoxMDIwRDAwMDlCMDAxMTQ2MTQ0NjE1NDYwQUFFODA0NjAwMjAwMUUwREENCjoxMDIwRTAwMDI4MDBDMDFBQjVFQjAwMEM1OEY4MENFMDU3RjgwMEMwRjcNCjoxMDIwRjAwMEFDRkIwRUNFMTJFQjBDMDI1MUVCMEUwMTU0RjEwMDA0QkUNCjoxMDIxMDAwMDA0MzA5ODQyMDFEQ0E4NDJFQ0RENzI1MTBBNDYyMTQ2QjcNCjoxMDIxMTAwMDAwMjQwNDM1OUQ0MkUxRERCNUVCNDMwRkUwREQ3MjUxNTMNCjoxMDIxMjAwMDMxNDZEQkY4QjAzMDM4NDY5ODQ3M0M0NjBCRjE4NDAxMjUNCjoxMDIxMzAwMDUzNDYzODQ2MDAyMjA1QTVBRkYzMDA4MEFGRjMwMDgwNzgNCjoxMDIxNDAwMDVCMTkyMENDNDBDOUFEMTkyMEMwMTg0NzIwQ0M0MEM5MkMNCjoxMDIxNTAwMDc1NDEyMEMwMjBDQzQwQzk3NTQxMjBDMDIwQ0M0MEM5NjkNCjoxMDIxNjAwMDc1NDEyMEMwMjBDQzQwQzk3NTQxMjBDMDIwQ0M0MEM5NTkNCjoxMDIxNzAwMDc1NDEyMEMwMjBDQzQwQzk3NTQxMjBDMDIwQ0M0MEM5NDkNCjoxMDIxODAwMDc1NDEyMEMwNTI0MTAyQkI5REY4MDAzMDVBMUU1MkIyMjgNCjoxMDIxOTAwMDAwMkExQURCMTJCMjU5RjgyMjEwNTdGODIyMjA5MTQyNzUNCjoxMDIxQTAwMDE5RDgxMkQzMDIzQjVCQjI1QTFDOTIwMDA5RUIwMjAxMTANCjoxMDIxQjAwMDNBNDQwOEUwNTFGODA0NEQ1MkY4MDQwRDg0NDIwQUQ4MUMNCjoxMDIxQzAwMDAzRjFGRjMzMDFEMzE4MDZGNEQ1MDA5QjRBNDYzOTQ2ODQNCjoxMDIxRDAwMDM4NDZGRUY3NDVGRDFCQjBCREU4RjA4RjAwMDAwMDAwNUINCjoxMDIxRTAwMDJERTlGMDRGQTFCMDgxNDZEREY4QTg4MDAyOTI0NDQ2NjcNCjoxMDIxRjAwMDlCNDYxNEY5MDQwQjA3OTBDMEYxMDgwN0ZGMDAwNTk0RjMNCjoxMDIyMDAwMDc4MUMwOEFDQ0RFOTAzNDEwMTkwNDk0NjIzNDYwMDI0REYNCjoxMDIyMTAwMDA2QTcwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwRUMNCjoxMDIyMjAwMEMwMTk4MENBNDBDOUJGMUI4MEMzMDA0NzgwQ0E0MEM5Q0INCjoxMDIyMzAwMEI3NDE4MEMzODBDQTQwQzlCNzQxODBDMzgwQ0E0MEM5ODINCjoxMDIyNDAwMEI3NDE4MEMzODBDQTQwQzlCNzQxODBDMzgwQ0E0MEM5NzINCjoxMDIyNTAwMEI3NDE4MEMzODBDQTQwQzlCNzQxODBDMzgwQ0E0MEM5NjINCjoxMDIyNjAwMEI3NDE4MEMzNjQ0MTAwMkMyREQxMDM5QjA1OUEwMTk5OEQNCjoxMDIyNzAwMDE4NDYwMDI0MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwMkYNCjoxMDIyODAwMDQ5MTkyMEM4NDBDQUFEMTkyMEMzMDg0NzIwQzg0MENBMTANCjoxMDIyOTAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBMjgNCjoxMDIyQTAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBMTgNCjoxMDIyQjAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBMDgNCjoxMDIyQzAwMDc1NDEyMEMzNjQ0MTk4RjkwMDIwMDM5RjRGRjAwMDBBMzQNCjoxMDIyRDAwMDAxM0E5MjAwNTM0NjEwQUM1MTQ2NTA0NjU1NDY1RkYwQzUNCjoxMDIyRTAwMDAwMEMwM0UwNUZFQTA1MENCQ0VCMDIwQ0I1RUIwQzBFMzYNCjoxMDIyRjAwMDU3RjgwRTYwNTdGODBDRTBBRUZCMDZFNjEzRUIwRTAzNDINCjoxMDIzMDAwMDcxNDE1MEYxMDAwMDFDRjEwNDBDOTQ0NTAxRENBQzQ1MTYNCjoxMDIzMTAwMEVDREQ2MzUxMEI0NjAxNDYwMDIwMDQzNTk1NDJERUREQkQNCjoxMDIzMjAwMEI1RUI0MjBGREVERDYzNTFEOEY4QjAzMDIxNDYzODQ2QjgNCjoxMDIzMzAwMDk4NDc5OEY5MDAyMDAxM0E5MjAwNTM0NjUxNDY1MDQ2N0ENCjoxMDIzNDAwMDU1NDY1RkYwMDAwQzAzRTA1RkVBMDUwQ0JDRUIwMjBDQTUNCjoxMDIzNTAwMEI1RUIwQzBFNTdGODBFNjA1OUY4MENFMEFFRkIwNkU2MzQNCjoxMDIzNjAwMDEzRUIwRTAzNzE0MTUwRjEwMDAwMUNGMTA0MEM5NDQ1NzUNCjoxMDIzNzAwMDAxRENBQzQ1RUNERDYzNTEwQjQ2MDE0NjAwMjAwNDM1MjENCjoxMDIzODAwMDk1NDJERUREQjVFQjQyMEZERURENjM1MUQ4RjhCMDMwQUINCjoxMDIzOTAwMDIxNDY0ODQ2OTg0Nzk4RjkwMDMwMDI5RTAxM0I5QjAwMzENCjoxMDIzQTAwMDUyNDY1MTQ2NTU0NjAwMjAwMUUwMjgwMEMwMUFCNUVCQzANCjoxMDIzQjAwMDAwMEM1N0Y4MENFMDU2RjgwMEMwQUNGQjBFQ0UxQUVCNDANCjoxMDIzQzAwMDBDMEE1MkVCMEUwMjUxRjEwMDAxMDQzMDk4NDIwMURDN0MNCjoxMDIzRDAwMEE4NDJFQ0RENDRGODA1QTA5MjQ2MEE0NjAwMjEwNDM1RTcNCjoxMDIzRTAwMDlENDJFMEREQjVFQjQzMEZERkRENDRGODA1QTBEOEY4RjINCjoxMDIzRjAwMEIwMzAyMTQ2MzA0Njk4NDc1RjQ2NUI0NjA0OUEwMTk5QzMNCjoxMDI0MDAwMDAwMjAwNkE2QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwOUENCjoxMDI0MTAwMDg5MTk0MENGMjBDQTc2MUI0MEMzMDg0NzQwQ0YyMENBNDUNCjoxMDI0MjAwMEFFNDE0MEMzNDBDRjIwQ0FBRTQxNDBDMzQwQ0YyMENBRDYNCjoxMDI0MzAwMEFFNDE0MEMzNDBDRjIwQ0FBRTQxNDBDMzQwQ0YyMENBQzYNCjoxMDI0NDAwMEFFNDE0MEMzNDBDRjIwQ0FBRTQxNDBDMzQwQ0YyMENBQjYNCjoxMDI0NTAwMEFFNDE0MEMzNDA0MTAwMjgyREQxNUI0NjA1OUEwMTk5MDkNCjoxMDI0NjAwMDU4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwRkINCjoxMDI0NzAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBQjUNCjoxMDI0ODAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMjQNCjoxMDI0OTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMTQNCjoxMDI0QTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMDQNCjoxMDI0QjAwMDdFNDE0MEMzNkQ0MTk4RjkwMDIwMDAyMzAxM0E5MjAwMEINCjoxMDI0QzAwMDE5NDYxODQ2MUQ0NjVGRjAwMDBDMDNFMDVGRUEwNTBDNTQNCjoxMDI0RDAwMEJDRUIwMjBDQjVFQjBDMEU1QkY4MEVBMDVCRjgwQ0UwNEQNCjoxMDI0RTAwMEFFRkIwQUVBMTNFQjBFMDM1MUVCMEEwMTUwRjEwMDAwQjgNCjoxMDI0RjAwMDFDRjEwNDBDOTQ0NTAxRENBQzQ1RUJERDYzNTEwQjQ2NEINCjoxMDI1MDAwMDAxNDYwMDIwMDQzNTk1NDJEREREQjVFQjQyMEZERERERUYNCjoxMDI1MTAwMDYzNTEwMzlERDhGOEIwMzAyMTQ2Mjg0Njk4NDcyRjQ2OEUNCjoxMDI1MjAwMDJCNDY0QTQ2MDE5OTAwMjAwNEE1MDBCRkFGRjMwMDgwNjYNCjoxMDI1MzAwMDQ5MTkyMENGNDBDQUFEMUIyMEMzMDg0NzIwQ0Y0MENBNEQNCjoxMDI1NDAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBRTcNCjoxMDI1NTAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBRDcNCjoxMDI1NjAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBQzcNCjoxMDI1NzAwMEI1NDEyMEMzNDA0MTAwMjgyREQxMDM5QjA1OUEwMTk5MDQNCjoxMDI1ODAwMDE4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwMUENCjoxMDI1OTAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBOTQNCjoxMDI1QTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMDMNCjoxMDI1QjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBRjMNCjoxMDI1QzAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBRTMNCjoxMDI1RDAwMDdFNDE0MEMzNkQ0MURERTkwMjIzMDE5OTFGNDYwMDIwODENCjoxMDI1RTAwMDA2QTUwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwMUINCjoxMDI1RjAwMDQ5MTkyMENGNDBDQUFEMUIyMEMzMDg0NzIwQ0Y0MENBOEQNCjoxMDI2MDAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMjYNCjoxMDI2MTAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMTYNCjoxMDI2MjAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMDYNCjoxMDI2MzAwMEI1NDEyMEMzNDA0MTAwMjgyREQxMDM5QjA1OUEwMTk5NDMNCjoxMDI2NDAwMDE4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwNTkNCjoxMDI2NTAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBRDMNCjoxMDI2NjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNDINCjoxMDI2NzAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMzINCjoxMDI2ODAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMjINCjoxMDI2OTAwMDdFNDE0MEMzNkQ0MTAyOUIwMTk5NEE0NjFGNDYwMDIwN0UNCjoxMDI2QTAwMDA2QTUwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwNUENCjoxMDI2QjAwMDQ5MTkyMENGNDBDQUFEMUIyMEMzMDg0NzIwQ0Y0MENBQ0MNCjoxMDI2QzAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNjYNCjoxMDI2RDAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNTYNCjoxMDI2RTAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNDYNCjoxMDI2RjAwMEI1NDEyMEMzNDA0MTAwMjgyREQxMDI5QjA1OUEwMTk5ODQNCjoxMDI3MDAwMDE4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwOTgNCjoxMDI3MTAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBMTINCjoxMDI3MjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBODENCjoxMDI3MzAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNzENCjoxMDI3NDAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNjENCjoxMDI3NTAwMDdFNDE0MEMzNkQ0MTk4RjkwMDIwMDAyMzAxM0E5RTQ2MTYNCjoxMDI3NjAwMDkyMDAxRDQ2MUU0NjFGNDYwNDlCMDY5Mzk0NDYxOTQ2M0ENCjoxMDI3NzAwMDAyOUE2MzQ2NzA0NjVGRjAwMDBDMDNFMDVGRUEwNzBDQzQNCjoxMDI3ODAwMEJDRUIwMzBDQjdFQjBDMEU1MkY4MEVBMDUxRjgwQ0UwQUENCjoxMDI3OTAwMEFFRkIwQUVBMTBFQjBFMDA1NUVCMEEwNTU2RjEwMDA2RjcNCjoxMDI3QTAwMDFDRjEwNDBDOUM0NTAxRENCQzQ1RUJEREUwNTEyODQ2RTYNCjoxMDI3QjAwMDM1NDYwMDI2MDQzNzlGNDJEREREQjdFQjQzMEZERERERjQNCjoxMDI3QzAwMEUwNTFEOEY4QjAzMDA2OTgyMTQ2OTg0NzRCNDZEREU5RUQNCjoxMDI3RDAwMDAyMjEwMTk4MDAyNzA1QTVBRkYzMDA4MEFGRjMwMDgwMjgNCjoxMDI3RTAwMDQwMTkyMENCNDBDOUFEMUIyMEMyMDA0NzIwQ0I0MEM5QjcNCjoxMDI3RjAwMEI1NDEyMEMyMjBDQjQwQzlCNTQxMjBDMjIwQ0I0MEM5NDENCjoxMDI4MDAwMEI1NDEyMEMyMjBDQjQwQzlCNTQxMjBDMjIwQ0I0MEM5MzANCjoxMDI4MTAwMEI1NDEyMEMyMjBDQjQwQzlCNTQxMjBDMjIwQ0I0MEM5MjANCjoxMDI4MjAwMEI1NDEyMEMyN0Y0MTAwMkYyREQxMDI5QjA1OUEwMTk5MEQNCjoxMDI4MzAwMDE4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwNjcNCjoxMDI4NDAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBRTENCjoxMDI4NTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNTANCjoxMDI4NjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNDANCjoxMDI4NzAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBMzANCjoxMDI4ODAwMDdFNDE0MEMzNkQ0MTk4RjkwMDIwMDI5RTAwMjMwMTNBMjkNCjoxMDI4OTAwMDkyMDAxOTQ2MTg0NjFENDY1RkYwMDAwQzAzRTA1RkVBRkYNCjoxMDI4QTAwMDA1MENCQ0VCMDIwQ0I1RUIwQzBFNTZGODBFOTA1QkY4NjkNCjoxMDI4QjAwMDBDRTBBRUZCMDlFOTEzRUIwRTAzNTFFQjA5MDE1MEYxRkINCjoxMDI4QzAwMDAwMDAxQ0YxMDQwQzk0NDUwMURDQUM0NUVCREQ2MzUxQzgNCjoxMDI4RDAwMDBCNDYwMTQ2MDAyMDA0MzU5NTQyREREREI1RUI0MjBGODUNCjoxMDI4RTAwMEREREQ2MzUxRDhGOEIwMzAyMTQ2NTg0Njk4NDc1QzQ2NDQNCjoxMDI4RjAwMDA0OUIwMTk5NUE0NjAwMjAwNEE1MDBCRkFGRjMwMDgwNTUNCjoxMDI5MDAwMDQ5MTkyMENDNDBDQkFEMUIyMEMyMDg0NzIwQ0M0MENCN0UNCjoxMDI5MTAwMEI1NDEyMEMyMjBDQzQwQ0JCNTQxMjBDMjIwQ0M0MENCMTkNCjoxMDI5MjAwMEI1NDEyMEMyMjBDQzQwQ0JCNTQxMjBDMjIwQ0M0MENCMDkNCjoxMDI5MzAwMEI1NDEyMEMyMjBDQzQwQ0JCNTQxMjBDMjIwQ0M0MENCRjkNCjoxMDI5NDAwMEI1NDEyMEMyNDA0MTAwMjgyREQxNUI0NjA1OUEwMTlGMjgNCjoxMDI5NTAwMDU5NDYwMDIwMDVBNDAwQkZBRkYzMDA4MEFGRjMwMDgwMEMNCjoxMDI5NjAwMDNGMTkxMEM5MjBDQTY0MTkxMEMzMzg0NzEwQzkyMENBQkENCjoxMDI5NzAwMDZDNDExMEMzMTBDOTIwQ0E2QzQxMTBDMzEwQzkyMENBRDENCjoxMDI5ODAwMDZDNDExMEMzMTBDOTIwQ0E2QzQxMTBDMzEwQzkyMENBQzENCjoxMDI5OTAwMDZDNDExMEMzMTBDOTIwQ0E2QzQxMTBDMzEwQzkyMENBQjENCjoxMDI5QTAwMDZDNDExMEMzNDA0MTA3OUIwMDJCMDdERDVBMUVEMkIyNzkNCjoxMDI5QjAwMDAxMzI5MjAwRERFOTAyMDEwNEYwRjFGQTIxQjBCREU4MzQNCjoxMDI5QzAwMEYwOEYwMEJGMkRFOUYwNEY5M0Y5MDA0MEE5QjAwMDJDMjMNCjoxMDI5RDAwMDAyOTQxNEREMDRGMUZGM0U1RkZBOEVGNDA2OTRBMkYxMzYNCjoxMDI5RTAwMDA0MEFBNDAwMDU5NDAyRUIwNDBDNTY0NjAwMjU1NkY4OTANCjoxMDI5RjAwMDA0NEZCNDQ1NDVFQTA0MDVGOUQxMDM5NjE1QjkyOUIwNDkNCjoxMDJBMDAwMEJERThGMDhGOTk0NjAwMjMxNzQ2MDQ0NjRGRUE4RTAyMzANCjoxMDJBMTAwMDE4QUQxODQ2MUU0NjlCNDYwNDkxNUZGMDAwMEMwM0UwN0INCjoxMDJBMjAwMDVGRUEwQjBDQkNFQjAyMENCQkVCMEMwRTUxRjgwRTgwRkENCjoxMDJBMzAwMDUxRjgwQ0UwQUVGQjA4RTgxM0VCMEUwMzUwRUIwODAwNzYNCjoxMDJBNDAwMDU2RjEwMDA2MUNGMTA0MEM5NDQ1MDFEQ0RDNDVFQkREN0QNCjoxMDJBNTAwMDQ1RjgwQjMwMDM0NjMwNDYwMDI2MUJGMTA0MEI5MzQ1MjYNCjoxMDJBNjAwMERCRERCQkVCNDIwRkRCREQ0NUY4MEIzMDA4QUIxODQ2NzYNCjoxMDJBNzAwMDI5NDZEOUY4QjAzMDk4NDc5OUY5MDAyMDAwMjMwMTNBNDcNCjoxMDJBODAwMDkyMDAxRTQ2OUI0NjE4NDYwOEE5NUZGMDAwMEMwM0UwMjINCjoxMDJBOTAwMDVGRUEwMDBDQkNFQjAyMENCMEVCMEMwRTUxRjgwRTgwQTANCjoxMDJBQTAwMDU0RjgwQ0UwQUVGQjA4RTgxM0VCMEUwMzU2RUIwODA2RjcNCjoxMDJBQjAwMDVCRjEwMDBCMUNGMTA0MEM5NDQ1MDFEQzg0NDVFQkRENUINCjoxMDJBQzAwMDJCNTAzMzQ2NUU0NjVGRjAwMDBCMDQzMDkwNDJEQ0RENTUNCjoxMDJBRDAwMEIwRUI0MjBGRENERDJCNTAxMEFCMTg0NjI5NDZEOUY4N0QNCjoxMDJBRTAwMEIwMzA5ODQ3OTlGOTAwMjAwMDIzMDEzQTkyMDAxRTQ2MjENCjoxMDJBRjAwMDlCNDYxODQ2MDhBOTVGRjAwMDBDMDNFMDVGRUEwMDBDNTMNCjoxMDJCMDAwMEJDRUIwMjBDQjBFQjBDMEU1MUY4MEU4MDUxRjgwQ0UwNEYNCjoxMDJCMTAwMEFFRkIwOEU4MTNFQjBFMDM1NkVCMDgwNjVCRjEwMDBCNjcNCjoxMDJCMjAwMDFDRjEwNDBDOTQ0NTAxREM4NDQ1RUJERDJCNTAzMzQ2NEQNCjoxMDJCMzAwMDVFNDY1RkYwMDAwQjA0MzA5MDQyRENEREIwRUI0MjBGRUMNCjoxMDJCNDAwMERDREQyQjUwMDhBQUQ5RjhCMDMwMjk0NjEwNDY5ODQ3NEENCjoxMDJCNTAwMDk5RjkwMDIwMDQ5OTAwMjMwMTNBOTIwMDFFNDY5QjQ2RjENCjoxMDJCNjAwMDE4NDY1RkYwMDAwQzAzRTA1RkVBMDAwQ0JDRUIwMjBDQkYNCjoxMDJCNzAwMEIwRUIwQzBFNTdGODBFODA1MUY4MENFMEFFRkIwOEU4RjUNCjoxMDJCODAwMDEzRUIwRTAzNTZFQjA4MDY1QkYxMDAwQjFDRjEwNDBDNzMNCjoxMDJCOTAwMDk0NDUwMURDODQ0NUVCREQyQjUwMzM0NjVFNDY1RkYwMDcNCjoxMDJCQTAwMDAwMEIwNDMwOTA0MkRDRERCMEVCNDIwRkRDREQyQjUwM0INCjoxMDJCQjAwMEQ5RjhCMDMwMDQ5ODI5NDY5ODQ3OTlGOTAwMjAwMDIzQTUNCjoxMDJCQzAwMDAxM0E5MjAwMTk0NjE4NDYxRTQ2NUZGMDAwMEMwM0UwRDkNCjoxMDJCRDAwMDVGRUEwNjBDQkNFQjAyMENCNkVCMEMwRTU3RjgwRTgwNEQNCjoxMDJCRTAwMDU3RjgwQ0UwQUVGQjA4RTgxM0VCMEUwMzUxRUIwODAxQkQNCjoxMDJCRjAwMDUwRjEwMDAwMUNGMTA0MEM5NDQ1MDFEQ0I0NDVFQkREMDANCjoxMDJDMDAwMEFCNTEwQjQ2MDE0NjAwMjAwNDM2OTY0MkRERERCNkVCQTMNCjoxMDJDMTAwMDQyMEZEREREQUI1MTA5RjEwNDAyRDlGOEIwMzAwNzkyNjMNCjoxMDJDMjAwMDI5NDYzODQ2OTg0N0RERjgxQ0IwMDI5RTAwOTY1QjQ2NjANCjoxMDJDMzAwMDNBNDYyMTQ2MjA0NkZFRjc5QkZDMDA5NjVCNDYzQTQ2MDQNCjoxMDJDNDAwMDM5NDYzODQ2RkVGNzk0RkMwMDk2NUI0NjNBNDYyMTQ2RTQNCjoxMDJDNTAwMDM4NDYwMjk2RkVGNzI0RkU5OUY5MDAyMDAwMjMwMTNBMzcNCjoxMDJDNjAwMDkyMDAxOTQ2MTg0NjFFNDY1RkYwMDAwQzAzRTA1RkVBMkENCjoxMDJDNzAwMDA2MENCQ0VCMDIwQ0I2RUIwQzBFNTdGODBFODA1NEY4QTkNCjoxMDJDODAwMDBDRTBBRUZCMDhFODEzRUIwRTAzNTFFQjA4MDE1MEYxMkENCjoxMDJDOTAwMDAwMDAxQ0YxMDQwQzk0NDUwMURDQjQ0NUVCRERBQjUxQTQNCjoxMDJDQTAwMDBCNDYwMTQ2MDAyMDA0MzY5NjQyREREREI2RUI0MjBGQUUNCjoxMDJDQjAwMERERERBQjUxRDlGOEIwMzAyOTQ2MjA0Njk4NDcwMjlFNTkNCjoxMDJDQzAwMDAwOTY1QjQ2MjI0NjIxNDYzODQ2RkVGNzUxRkM1QjQ2OUQNCjoxMDJDRDAwMDAwOTYzQTQ2MjE0NjIwNDZGRUY3NEFGQ0IzMDAxQTQ2QzMNCjoxMDJDRTAwMDlCNDYyMzY4QTIxODEzRjAwMTAzMTY0NkEyRjEwNDA4QkMNCjoxMDJDRjAwMDQwRjBCRDgwOTQ0MjE0RDJDNEYxMDMwMjQyNDQyMkYwNTkNCjoxMDJEMDAwMDAzMDJBNkVCMDIwQjAzOUVBQkYxMDgwQkQ4RjgwMDIwRTANCjoxMDJEMTAwMDQzRUE1MjAzNDhGODA0MzlEODQ1NEZFQUMyNzNGNUQxNjMNCjoxMDJEMjAwMDAzOTY5OUY5MDAyMDRGRjAwMDBCMDEzQTkyMDA1QjQ2QTANCjoxMDJEMzAwMDU5NDY1ODQ2NUU0NjVGRjAwMDBDMDNFMDVGRUEwNjBDMTkNCjoxMDJENDAwMEJDRUIwMjBDQjZFQjBDMEU1NEY4MEU4MDU0RjgwQ0UwMDENCjoxMDJENTAwMEFFRkIwOEU4MTNFQjBFMDM1MUVCMDgwMTUwRjEwMDAwNDUNCjoxMDJENjAwMDFDRjEwNDBDOTQ0NTAxRENCNDQ1RUJEREFCNTEwQjQ2ODINCjoxMDJENzAwMDAxNDYwMDIwMDQzNjk2NDJEREREQjZFQjQyMEZERERENzQNCjoxMDJEODAwMEFCNTFEOUY4QjAzMDI5NDYzODQ2OTg0N0RERjgxQzgwNTkNCjoxMDJEOTAwMDAyOUUwMDk2NDM0NjEwQUEzOTQ2Mzg0NkZFRjc4MEZENEINCjoxMDJEQTAwMDAwOTY0MzQ2MTBBQTM5NDYzODQ2RkVGNzc5RkQxMEE5MjkNCjoxMDJEQjAwMDAwOTYzQTQ2NDM0NjA4NDYwMjk2RkVGNzcxRkQ5OUY5OTkNCjoxMDJEQzAwMDAwMzAwMTNCOUIwMDU5NDY1RTQ2REU0NjEwQUEwMDIwQkINCjoxMDJERDAwMDAyRTA1RkVBMEUwMEMwMUFCRUVCMDAwNzUyRjgwN0MwMUYNCjoxMDJERTAwMDI3NThBN0ZCMEM3QzFCRUIwNzBCNTFFQjBDMDE1NkYxOTINCjoxMDJERjAwMDAwMDYwNDMwOTg0MjAxREM3MDQ1RURERDQ1RjgwRUIwNjgNCjoxMDJFMDAwMDhCNDYzMTQ2MDAyNjFFRjEwNDBFOUU0NURGRERCRUVCRUINCjoxMDJFMTAwMDQzMEZERURENDVGODBFQjAyMDQ2RDlGOEIwMzAyOTQ2MjQNCjoxMDJFMjAwMDk4NDcwMjlBMDA5MjA4QUE0MzQ2MjE0NjEwNDZGRUY3QTgNCjoxMDJFMzAwMDM3RkQwMzlFMDQzQzUzNDY1M0Y4MDQyRjQ0RjgwNDJGRjcNCjoxMDJFNDAwMDlFNDJGOUQxMDU5QjFBNDYwNDlCMUE0NDA0M0I1M0Y4NTENCjoxMDJFNTAwMDA0MUY0QUY4MDQxRjkzNDJGOUQxMDY5QTA0OTgwMTMyREMNCjoxMDJFNjAwMDkyMDAwOEE5MDRGMDlCRjgyOUIwQkRFOEYwOEYwMjlCRkUNCjoxMDJFNzAwMDA3OUEyMTQ2MjA0NkZERjdDM0ZFQjQ0MjEzRDJDNEYxOUYNCjoxMDJFODAwMDAzMDE0MTQ0MjFGMDAzMDE3MTFBMDM5RTAwMjMwODM5MTQNCjoxMDJFOTAwMEQ4RjgwMDIwNDNFQTUyMDM0OEY4MDQzOTg4NDU0RkVBM0QNCjoxMDJFQTAwMEMyNzNGNUQxMDM5NkFCRjEwNDAzRTI1ODQyRUFDMDcwNTUNCjoxMDJFQjAwMEUwNTAzNkU3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzUNCjoxMDJFQzAwMDJERTlGMDRGQjFCMDA2NDZEREY4RTg5MDA0OTA0RDQ2OEMNCjoxMDJFRDAwMDA1OTExNUY5MDQ0QjA2OTRDNEYxMDgwODRGRUFDODA4OTcNCjoxMDJFRTAwMDA4QUMwOEYxMDEwODAyOTMwMzk1OTI0NjAxOTQ0MDQ2MEMNCjoxMDJFRjAwMDMxNDYyMzQ2MDAyNDA1QTZBRkYzMDA4MEFGRjMwMDgwREYNCjoxMDJGMDAwMDgwMTk0MENBODBDOUY2MUI0MEMzMDA0NzQwQ0E4MEM5MjcNCjoxMDJGMTAwMEJFNDE0MEMzNDBDQTgwQzlCRTQxNDBDMzQwQ0E4MEM5MDcNCjoxMDJGMjAwMEJFNDE0MEMzNDBDQTgwQzlCRTQxNDBDMzQwQ0E4MEM5RjcNCjoxMDJGMzAwMEJFNDE0MEMzNDBDQTgwQzlCRTQxNDBDMzQwQ0E4MEM5RTcNCjoxMDJGNDAwMEJFNDE0MEMzNjQ0MTAwMkMyREQxMDE5QjAzOUE0MTQ2RjANCjoxMDJGNTAwMDE4NDYwMDI0MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwNDENCjoxMDJGNjAwMDg5MTk0MEM4MjBDQTc2MTk0MEMzMDg0NzQwQzgyMENBRkENCjoxMDJGNzAwMDZFNDE0MEMzNDBDODIwQ0E2RTQxNDBDMzQwQzgyMENBMDkNCjoxMDJGODAwMDZFNDE0MEMzNDBDODIwQ0E2RTQxNDBDMzQwQzgyMENBRjkNCjoxMDJGOTAwMDZFNDE0MEMzNDBDODIwQ0E2RTQxNDBDMzQwQzgyMENBRTkNCjoxMDJGQTAwMDZFNDE0MEMzNjQ0MTk5RjkwMDIwMDE5RjAwMjMwMTNBMUENCjoxMDJGQjAwMDkyMDAyMEFDMTk0NjE4NDYxRDQ2NUZGMDAwMEMwM0UwNTUNCjoxMDJGQzAwMDVGRUEwNTBDQkNFQjAyMENCNUVCMEMwRTU3RjgwRUIwMkINCjoxMDJGRDAwMDU3RjgwQ0UwQUVGQjBCRUIxM0VCMEUwMzUxRUIwQjAxQzANCjoxMDJGRTAwMDUwRjEwMDAwMUNGMTA0MEM5NDQ1MDFEQ0FDNDVFQkREMTQNCjoxMDJGRjAwMDYzNTEwQjQ2MDE0NjAwMjAwNDM1OTU0MkRERERCNUVCRkINCjoxMDMwMDAwMDQyMEZERERENjM1MUQ5RjhCMDMwMjE0NjM4NDY5ODQ3OEMNCjoxMDMwMTAwMDk5RjkwMDIwMDEzQTkzMDAwMDIyQkI0Njk0NDYxNTQ2RDgNCjoxMDMwMjAwMDE3NDYxNjQ2MDQ5QTAwOTIxMTQ2Q0RGODA0QjA1QTQ2NDcNCjoxMDMwMzAwMDYwNDY1RkYwMDAwQzAzRTA1RkVBMDYwQ0JDRUIwMzBDOUINCjoxMDMwNDAwMEI2RUIwQzBFNTJGODBFQjA1MUY4MENFMEFFRkIwQkVCRTkNCjoxMDMwNTAwMDEwRUIwRTAwNTVFQjBCMDU1N0YxMDAwNzFDRjEwNDBDQUINCjoxMDMwNjAwMDlDNDUwMURDQjQ0NUVCRERBMDUxMjg0NjNENDYwMDI3RDgNCjoxMDMwNzAwMDA0MzY5RTQyREREREI2RUI0MzBGREREREEwNTFEOUY4MEQNCjoxMDMwODAwMEIwMzAwMDk4MjE0Njk4NDc5OUY5MDAzMDAxOUYwMDI2RkENCjoxMDMwOTAwMDAxM0I5QjAwMzI0NjMxNDYzNTQ2MDAyMDAxRTAyODAwQzYNCjoxMDMwQTAwMEMwMUFCNUVCMDAwQzU3RjgwQ0UwNUFGODAwQzBBQ0ZCQTYNCjoxMDMwQjAwMDBFQ0UxNkVCMEMwNjUyRUIwRTAyNTFGMTAwMDEwNDMwNUQNCjoxMDMwQzAwMDk4NDIwMURDQTg0MkVDREQ2NjUxMTY0NjBBNDYwMDIxMTINCjoxMDMwRDAwMDA0MzU5RDQyRTFEREI1RUI0MzBGRTBERDY2NTFEOUY4RTMNCjoxMDMwRTAwMEIwMzAyMTQ2NTA0Njk4NDdEREY4MDhDMDA1OTkzQjQ2NjgNCjoxMDMwRjAwMDYyNDY0MDQ2MDAyNjA1QTdBRkYzMDA4MEFGRjMwMDgwOEMNCjoxMDMxMDAwMEMwMTk4MENBMjBDOTdGMTk4MEMzMDA0NzgwQ0EyMEM5NUUNCjoxMDMxMTAwMDZGNDE4MEMzODBDQTIwQzk2RjQxODBDMzgwQ0EyMEM5NjMNCjoxMDMxMjAwMDZGNDE4MEMzODBDQTIwQzk2RjQxODBDMzgwQ0EyMEM5NTMNCjoxMDMxMzAwMDZGNDE4MEMzODBDQTIwQzk2RjQxODBDMzgwQ0EyMEM5NDMNCjoxMDMxNDAwMDZGNDE4MEMzNzY0MTM2QkI5REY4MTgzMDVBMUU1MkIyOEINCjoxMDMxNTAwMDAwMkEyMERCMTJCMjMwQTkwMUVCODIwMDAzOUU1NkY4NTANCjoxMDMxNjAwMDIyMTA1MEY4QTAyQzkxNDIxQkQ4MTREMzAyM0I1QkIyMjINCjoxMDMxNzAwMDVBMUMwNkVCODIwMjY3NDYwQUUwMDE5OTUyRjgwNDBERDgNCjoxMDMxODAwMDUxRjgyMzEwODg0MjAwRjI2RTg0MDNGMUZGMzMwMUQzMUINCjoxMDMxOTAwMDE4MDZGMkQ1MDI5NzAxOTgwNjlCMDM5QTAxNDZGREY3OUYNCjoxMDMxQTAwMDVGRkQwMjlCMDU5QTQxNDYxRTQ2MDAyMDAzQTUwMEJGMTUNCjoxMDMxQjAwMDQ5MTkyMENFODBDQUVEMUIyMEMzMDg0NzIwQ0U4MENBMDMNCjoxMDMxQzAwMEJENDEyMEMzMjBDRTgwQ0FCRDQxMjBDMzIwQ0U4MENBQ0QNCjoxMDMxRDAwMEJENDEyMEMzMjBDRTgwQ0FCRDQxMjBDMzIwQ0U4MENBQkQNCjoxMDMxRTAwMEJENDEyMEMzMjBDRTgwQ0FCRDQxMjBDMzIwQ0U4MENBQUQNCjoxMDMxRjAwMEJENDEyMEMzNDA0MTAwMjgyREQxRERFOTAyMzI0MTQ2QzYNCjoxMDMyMDAwMDE4NDYwMDI2MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwOEQNCjoxMDMyMTAwMDQ5MTkyMEM4ODBDQUVEMTkyMEMzMDg0NzIwQzg4MENBQjANCjoxMDMyMjAwMDdENDEyMEMzMjBDODgwQ0E3RDQxMjBDMzIwQzg4MENBRjgNCjoxMDMyMzAwMDdENDEyMEMzMjBDODgwQ0E3RDQxMjBDMzIwQzg4MENBRTgNCjoxMDMyNDAwMDdENDEyMEMzMjBDODgwQ0E3RDQxMjBDMzIwQzg4MENBRDgNCjoxMDMyNTAwMDdENDEyMEMzNzY0MTEwQUIwMDkzNTI0NjA0OTk0MDQ2MEQNCjoxMDMyNjAwMDAwMjcwNkE1QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwMjYNCjoxMDMyNzAwMDQwMTkyMENBNDBDOUFEMUIyMEMzMDA0NzIwQ0E0MEM5MUQNCjoxMDMyODAwMEI1NDEyMEMzMjBDQTQwQzlCNTQxMjBDMzIwQ0E0MEM5QTYNCjoxMDMyOTAwMEI1NDEyMEMzMjBDQTQwQzlCNTQxMjBDMzIwQ0E0MEM5OTYNCjoxMDMyQTAwMEI1NDEyMEMzMjBDQTQwQzlCNTQxMjBDMzIwQ0E0MEM5ODYNCjoxMDMyQjAwMEI1NDEyMEMzN0Y0MTAwMkYyREQxMDA5QjAzOUE0MTQ2ODkNCjoxMDMyQzAwMDE4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwQ0QNCjoxMDMyRDAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBNDcNCjoxMDMyRTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBQjYNCjoxMDMyRjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBQTYNCjoxMDMzMDAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBOTUNCjoxMDMzMTAwMDdFNDE0MEMzNkQ0MTk5RjkwMDIwMDAyMzAxM0E5RTQ2NDkNCjoxMDMzMjAwMDkyMDAxRDQ2MUU0NjFGNDYwNTlCMDc5Mzk0NDYxOTQ2NkMNCjoxMDMzMzAwMDAwOUE2MzQ2NzA0NjVGRjAwMDBDMDNFMDVGRUEwNzBDRkENCjoxMDMzNDAwMEJDRUIwMzBDQjdFQjBDMEU1MkY4MEVCMDUxRjgwQ0UwQ0UNCjoxMDMzNTAwMEFFRkIwQkVCMTBFQjBFMDA1NUVCMEIwNTU2RjEwMDA2MjgNCjoxMDMzNjAwMDFDRjEwNDBDOUM0NTAxRENCQzQ1RUJEREUwNTEyODQ2MUENCjoxMDMzNzAwMDM1NDYwMDI2MDQzNzlGNDJEREREQjdFQjQzMEZEREREMjgNCjoxMDMzODAwMEUwNTFEOUY4QjAzMDA3OTgyMTQ2OTg0NzAwOUIwNDlBM0QNCjoxMDMzOTAwMDUxNDY0MDQ2MDAyNzA1QTVBRkYzMDA4MEFGRjMwMDgwRkINCjoxMDMzQTAwMDQwMTkyMENBNDBDOUFEMTkyMEMzMDA0NzIwQ0E0MEM5RUUNCjoxMDMzQjAwMDc1NDEyMEMzMjBDQTQwQzk3NTQxMjBDMzIwQ0E0MEM5RjUNCjoxMDMzQzAwMDc1NDEyMEMzMjBDQTQwQzk3NTQxMjBDMzIwQ0E0MEM5RTUNCjoxMDMzRDAwMDc1NDEyMEMzMjBDQTQwQzk3NTQxMjBDMzIwQ0E0MEM5RDUNCjoxMDMzRTAwMDc1NDEyMEMzN0Y0MTM3QkI5REY4MTgzMDVBMUU1MkIyMzkNCjoxMDMzRjAwMDAwMkEyMERCMTJCMjMwQTkwMUVCODIwMDAzOUY1N0Y4QUMNCjoxMDM0MDAwMDIyMTA1MEY4ODAyQzkxNDIxQkQ4MTREMzAyM0I1QkIyOUYNCjoxMDM0MTAwMDVBMUMwN0VCODIwMjAyOUYwQUUwMDA5OTUyRjgwNDBENDENCjoxMDM0MjAwMDUxRjgyMzEwODg0MjAwRjIxQzgzMDNGMUZGMzMwMUQzQ0INCjoxMDM0MzAwMDE5MDZGMkQ1MDI5NzAwOTgwNjlCMDM5QTAxNDZGREY3RkMNCjoxMDM0NDAwMDBGRkM5OUY5MDAyMDAyOUUwMDIzMDEzQTkyMDAxOTQ2RDANCjoxMDM0NTAwMDE4NDYxRDQ2NUZGMDAwMEMwM0UwNUZFQTA1MENCQ0VCNkMNCjoxMDM0NjAwMDAyMENCNUVCMEMwRTU2RjgwRUIwNTZGODBDRTBBRUZCQTUNCjoxMDM0NzAwMDBCRUIxM0VCMEUwMzUxRUIwQjAxNTBGMTAwMDAxQ0YxQjENCjoxMDM0ODAwMDA0MEM5NDQ1MDFEQ0FDNDVFQkRENjM1MTBCNDYwMTQ2NzENCjoxMDM0OTAwMDAwMjAwNDM1OTU0MkRERERCNUVCNDIwRkREREQ2MzUxRTMNCjoxMDM0QTAwMEQ5RjhCMDMwMjE0NjUwNDY5ODQ3NTc0NjUzNDYwMDlBQkYNCjoxMDM0QjAwMDQxNDYwMDIwMDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwQjgNCjoxMDM0QzAwMDQ5MTkyMENGNDBDQUFEMUIyMEMzMDg0NzIwQ0Y0MENBQUUNCjoxMDM0RDAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNDgNCjoxMDM0RTAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMzgNCjoxMDM0RjAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMjgNCjoxMDM1MDAwMEI1NDEyMEMzNDA0MTAwMjgyREQxNTM0NjAzOUE0MTQ2N0UNCjoxMDM1MTAwMDUwNDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwNDINCjoxMDM1MjAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBRjQNCjoxMDM1MzAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNjMNCjoxMDM1NDAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNTMNCjoxMDM1NTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBNDMNCjoxMDM1NjAwMDdFNDE0MEMzNkQ0MTBERjE2MDBCNTM0NjVBNDYwNDk5QUMNCjoxMDM1NzAwMDQwNDYwMDI3MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwRjENCjoxMDM1ODAwMDQwMTkyMEM5NDBDQkFEMUIyMEMyMDA0NzIwQzk0MENCMDkNCjoxMDM1OTAwMEI1NDEyMEMyMjBDOTQwQ0JCNTQxMjBDMjIwQzk0MENCOTMNCjoxMDM1QTAwMEI1NDEyMEMyMjBDOTQwQ0JCNTQxMjBDMjIwQzk0MENCODMNCjoxMDM1QjAwMEI1NDEyMEMyMjBDOTQwQ0JCNTQxMjBDMjIwQzk0MENCNzMNCjoxMDM1QzAwMEI1NDEyMEMyN0Y0MTAwMkYyREQxNUI0NjAzOUE0MTQ2NzENCjoxMDM1RDAwMDU4NDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwN0ENCjoxMDM1RTAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBMzQNCjoxMDM1RjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBQTMNCjoxMDM2MDAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBOTINCjoxMDM2MTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBODINCjoxMDM2MjAwMDdFNDE0MEMzNkQ0MTk5RjkwMDIwMDI5RTAwMjMwMTNBN0ENCjoxMDM2MzAwMDkyMDAxOTQ2MTg0NjFENDYzNzQ2NUZGMDAwMEMwM0UwMUQNCjoxMDM2NDAwMDVGRUEwNTBDQkNFQjAyMENCNUVCMEMwRTVCRjgwRUEwQjANCjoxMDM2NTAwMDU2RjgwQ0UwQUVGQjBBRUExM0VCMEUwMzUxRUIwQTAxM0QNCjoxMDM2NjAwMDUwRjEwMDAwMUNGMTA0MEM5NDQ1MDFEQ0FDNDVFQkREOEQNCjoxMDM2NzAwMDYzNTEwQjQ2MDE0NjAwMjAwNDM1OTU0MkRERERCNUVCNzQNCjoxMDM2ODAwMDQyMEZERERENjM1MUQ5RjhCMDMwMjE0NjMwNDY5ODQ3MEUNCjoxMDM2OTAwMDMzNDYwNTlBNDE0NjAwMjAwNEE1MDBCRkFGRjMwMDgwRTENCjoxMDM2QTAwMDQ5MTkyMENGNDBDQUFEMUIyMEMzMDg0NzIwQ0Y0MENBQ0MNCjoxMDM2QjAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNjYNCjoxMDM2QzAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNTYNCjoxMDM2RDAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNDYNCjoxMDM2RTAwMEI1NDEyMEMzNDA0MTAwMjgyREQxRERFOTAyNzM0MjQ2OTcNCjoxMDM2RjAwMDM5NDYwMDIwMDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwN0UNCjoxMDM3MDAwMDUyMTkyMEM5NDBDQkFEMTkyMEM3MTA0NzIwQzk0MENCNjINCjoxMDM3MTAwMDc1NDEyMEM3MjBDOTQwQ0I3NTQxMjBDNzIwQzk0MENCODcNCjoxMDM3MjAwMDc1NDEyMEM3MjBDOTQwQ0I3NTQxMjBDNzIwQzk0MENCNzcNCjoxMDM3MzAwMDc1NDEyMEM3MjBDOTQwQ0I3NTQxMjBDNzIwQzk0MENCNjcNCjoxMDM3NDAwMDc1NDEyMEM3NDA0MTk5RjkwMDIwMDE5RTAwMjMwMTNBQUMNCjoxMDM3NTAwMDkyMDAxOTQ2MTg0NjFENDYwMDI3MDFFMDJGMDBCRjFBQTcNCjoxMDM3NjAwMEI1RUIwNzBDNTZGODBDRTA1NkY4MDdDMEFDRkIwRUNFRDQNCjoxMDM3NzAwMDEzRUIwQzAzNTFFQjBFMDE1MEYxMDAwMDA0Mzc5NzQyOUMNCjoxMDM3ODAwMDAxRENBRjQyRUNERDYzNTEwQjQ2MDE0NjAwMjAwNDM1RkQNCjoxMDM3OTAwMDk1NDJFMUREQjVFQjQyMEZFMERENjM1MUQ5RjhCMDMwODENCjoxMDM3QTAwMDIxNDY1ODQ2OTg0NzVGNDY1QjQ2MDA5QTQxNDYwMDIwQUUNCjoxMDM3QjAwMDA2QTUwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwMzkNCjoxMDM3QzAwMDQ5MTkyMENGNDBDQUFEMUIyMEMzMDg0NzIwQ0Y0MENBQUINCjoxMDM3RDAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBNDUNCjoxMDM3RTAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMzUNCjoxMDM3RjAwMEI1NDEyMEMzMjBDRjQwQ0FCNTQxMjBDMzIwQ0Y0MENBMjUNCjoxMDM4MDAwMEI1NDEyMEMzNDA0MTAwMjgyREQxNUI0NjAzOUE0MTQ2NzMNCjoxMDM4MTAwMDU4NDYwMDI3MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwMzYNCjoxMDM4MjAwMDQ5MTkyMEM4NDBDQUFEMTkyMEMzMDg0NzIwQzg0MENBNUENCjoxMDM4MzAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBNzINCjoxMDM4NDAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBNjINCjoxMDM4NTAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBNTINCjoxMDM4NjAwMDc1NDEyMEMzN0Y0MTAwOUIwNDk5NUE0NjQwNDYwMDI3N0ENCjoxMDM4NzAwMDA2QTUwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwNzgNCjoxMDM4ODAwMDQwMTkyMENBNDBDOUFEMUIyMEMzMDA0NzIwQ0E0MEM5MDcNCjoxMDM4OTAwMEI1NDEyMEMzMjBDQTQwQzlCNTQxMjBDMzIwQ0E0MEM5OTANCjoxMDM4QTAwMEI1NDEyMEMzMjBDQTQwQzlCNTQxMjBDMzIwQ0E0MEM5ODANCjoxMDM4QjAwMEI1NDEyMEMzMjBDQTQwQzlCNTQxMjBDMzIwQ0E0MEM5NzANCjoxMDM4QzAwMEI1NDEyMEMzN0Y0MTAwMkYyREQxMDA5QjAzOUE0MTQ2NzMNCjoxMDM4RDAwMDE4NDYwMDI3MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwQjYNCjoxMDM4RTAwMDQ5MTkyMEM4NDBDQUFEMTkyMEMzMDg0NzIwQzg0MENBOUENCjoxMDM4RjAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBQjINCjoxMDM5MDAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBQTENCjoxMDM5MTAwMDc1NDEyMEMzMjBDODQwQ0E3NTQxMjBDMzIwQzg0MENBOTENCjoxMDM5MjAwMDc1NDEyMEMzN0Y0MTk5RjkwMDIwMDA5ODAxOUYwMDIzMzENCjoxMDM5MzAwMDAxM0E5MjAwMTk0NjFENDYxRTQ2ODY0NkJBNDYwMDIwQTgNCjoxMDM5NDAwMDAxRTAzMDAwODAxQTM3MUE1QUY4MDdDMDVFRjgwMDcwOUMNCjoxMDM5NTAwMEE3RkIwQzdDREIxOTUxRUIwQzAxNTVGMTAwMDUwNDMwODENCjoxMDM5NjAwMDkwNDIwMURDQjA0MkVFRERBMzUxMEI0NjI5NDYwMDI1MTINCjoxMDM5NzAwMDA0MzY5NjQyRTNEREI2RUI0MjBGRTJEREEzNTEwMDlFMzINCjoxMDM5ODAwMEQ5RjhCMDMwMzA0NjIxNDY5ODQ3MDU5QjQyNDYxODQ2NDQNCjoxMDM5OTAwMDAwMjEwNkE0QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwRjYNCjoxMDM5QTAwMDEyMTkxMENFMjBDODY0MUIxMEMzMTA0NzEwQ0UyMEM4QjcNCjoxMDM5QjAwMEFDNDExMEMzMTBDRTIwQzhBQzQxMTBDMzEwQ0UyMEM4RkINCjoxMDM5QzAwMEFDNDExMEMzMTBDRTIwQzhBQzQxMTBDMzEwQ0UyMEM4RUINCjoxMDM5RDAwMEFDNDExMEMzMTBDRTIwQzhBQzQxMTBDMzEwQ0UyMEM4REINCjoxMDM5RTAwMEFDNDExMEMzNDk0MTAwMjkyREQxMDU5QjAzOTk0MjQ2QTINCjoxMDM5RjAwMDE4NDYwMDI0MDVBNTAwQkZBRkYzMDA4MEFGRjMwMDgwOTgNCjoxMDNBMDAwMDUyMTkyMEM4NDBDOUFEMTkyMEMzMTA0NzIwQzg0MEM5NjkNCjoxMDNBMTAwMDc1NDEyMEMzMjBDODQwQzk3NTQxMjBDMzIwQzg0MEM5OTINCjoxMDNBMjAwMDc1NDEyMEMzMjBDODQwQzk3NTQxMjBDMzIwQzg0MEM5ODINCjoxMDNBMzAwMDc1NDEyMEMzMjBDODQwQzk3NTQxMjBDMzIwQzg0MEM5NzINCjoxMDNBNDAwMDc1NDEyMEMzNjQ0MTA2OUIwMDJCMDdERDVBMUVEMkIyOEMNCjoxMDNBNTAwMDAxMzI5MjAwNTk0NjA0OTgwM0YwQTFGQTMxQjBCREU4NTINCjoxMDNBNjAwMEYwOEYwMjk3RURFNDAyOTdGRkY3OUJCQjAwMDAwMDAwODgNCjoxMDNBNzAwMDJERTlGMDRGQjVCMDAwMkIxMDkwMEE5MjAzOTM0MEYzNUMNCjoxMDNBODAwMEI5ODIwM0YxRkYzODVGRkE4OEY4MDhGMTAxMDg0RkVBQkMNCjoxMDNBOTAwMDg4MDgxNEFDMTc0NjIwNDY0MjQ2MUNBRTAzRjA3RkZBNTUNCjoxMDNBQTAwMDI0QUQzOTQ2NDI0NjMwNDYwM0YwNzlGQTJDQUY0MjQ2RkYNCjoxMDNBQjAwMDAwMjEyODQ2MDNGMDk3RkEwMTIzNDI0NjM4NDYwMDIxQTgNCjoxMDNBQzAwMDI0OTMwM0YwOTBGQTAzOTgwMDk3NUZGQTgwRkMwQ0YxQkUNCjoxMDNBRDAwMEZGMzJEM0IyNTlCMjBGOTM4MzAwRTIxODA1OTEwODkyRDYNCjoxMDNBRTAwMDg5MDBBQ0YxMDIwMjA0OTI3QTE4QzBGMTA4MEUwNEVCQ0UNCjoxMDNBRjAwMDAxMEFGMDE4MDZFQjAxMDkwQzkyNkExOEYxMTgwRTkwRjENCjoxMDNCMDAwMDBCOTIxODFGMEExRjEyOTJFMTE4M0ExODRGRUFDRTBFQjQNCjoxMDNCMTAwMDEzOTIwQTFGMDk5MkNERTkwMTQ2MEVGMTAxMDIyODE4RkQNCjoxMDNCMjAwMDBEOTJGQTE4RUIxODExOTAwNzkyMDY5M0E2RjEwNDBCNjgNCjoxMDNCMzAwMEE0RjEwNDA4MDU5QjAwMkIxOERCREFGODAwMjBEOUY4NjMNCjoxMDNCNDAwMDAwMzA5QTQyMjJEOEMwRjA5MTgwOURGOTEwMzAwMDlGMzkNCjoxMDNCNTAwMERERTkwMTQ2MDhFMDU0RjgyMzEwNTZGODIzMjA5MTQyOEQNCjoxMDNCNjAwMDExRDgwM0YxRkYzMzdFRDMxQTA2RjRENTAzOUIwMDJCNDMNCjoxMDNCNzAwMDA2REQwRjlBMTA5ODAxMzI5MjAwMjk0NjAzRjAwRkZBRTENCjoxMDNCODAwMDM1QjBCREU4RjA4RkNERTkwMTQ2MDA5NzE0OUIxM0YwRTYNCjoxMDNCOTAwMDAxMDM0RkYwMDEwMjZGRDAxQzlCMTNGMDAxMDMwMEYwRjINCjoxMDNCQTAwMDk5ODAwMTJBMDM5QjQwRjBDQzgwMDE5QzAyOUUyMTQ2MTMNCjoxMDNCQjAwMDMyNDYyMDQ2RkRGNzU0RjgwODlCQTM0MjBFRDkwOTlBRDUNCjoxMDNCQzAwMDAwOUYwMDIzMTE2ODQzRUE1MTAzNDJGODA0Mzk0MjQ1M0INCjoxMDNCRDAwMDRGRUFDMTczRjZEMUNERTkwMTQ2MDA5NzBCOUIxQTY4RjUNCjoxMDNCRTAwMDBDOUIxQjY4OUE0MjE2RDhDMEYwNjU4MTlERjkxMDMwNzUNCjoxMDNCRjAwMDAwOUZEREU5MDE0NjA5RTA1NUY4MjMxMDU3RjgyMzIwMUUNCjoxMDNDMDAwMDkxNDIwNUQ4MDNGMUZGMzNDMEYwNTI4MTE4MDZGM0Q1NzUNCjoxMDNDMTAwMENERTkwMTQ2MDA5NzAzOUIwMDlBMjk0NjI4NDZGREY3MDcNCjoxMDNDMjAwMDFGRjgyNDlCMTNGMDAxMDM0MEYwMTI4MTA2OUFBQTQyNjgNCjoxMDNDMzAwMDgwRDlEREU5MDE0NjA2OTkwMDlGMDAyMjUxRjgwNDBENjQNCjoxMDNDNDAwMDQyRUE1MDAyQTk0MjBBNjA0RkVBQzA3MkY2RDhDREU5QjINCjoxMDNDNTAwMDAxNDYwMDk3MDAyQjNGRjQ2REFGMTE5QTEzNjg0M0YwQjMNCjoxMDNDNjAwMDAwNDMxMzYwNjZFN0NERTkwMTQ2MDA5NzE0OUIxM0YwMEINCjoxMDNDNzAwMDAxMDM0RkYwRkYzMjhGRDEwODlBMDE5Q0EyNDIwRUQ5NjYNCjoxMDNDODAwMDA5OUEwMjlFMDA5RjExNjg0M0VBNTEwMzQyRjgwNDM5RTENCjoxMDNDOTAwMDQyNDU0RkVBQzE3M0Y2RDFDREU5MDE0NjAwOTcyNDlCMTYNCjoxMDNDQTAwMDEzRjAwMTAzNDBGMEE1ODAwNjlBQUE0MjdGRjY0MkFGQzYNCjoxMDNDQjAwMERERTkwMTQ2MDY5OTAwOUYwMDIyNTFGODA0MEQ0MkVBMTENCjoxMDNDQzAwMDUwMDJBOTQyMEE2MDRGRUFDMDcyRjZEOENERTkwMTQ2MTcNCjoxMDNDRDAwMDAwOTdCRkU3MEU5QTAyOUVCMjQyMEVEOURERTkwMDc0NEENCjoxMDNDRTAwMDEyOUExMTY4NDNFQTUxMDM0MkY4MDQzOTVBNDU0RkVBREYNCjoxMDNDRjAwMEMxNzNGNkQxQ0RFOTAxNDYwMDk3MkM5QjEzRjAwMTAzNjcNCjoxMDNEMDAwMDQwRjAwQTgxMDc5QTAwOTk4QTQyN0ZGNjEzQUZEREU5RjUNCjoxMDNEMTAwMDAxNDYwNzk5MDA5RjAwMjI1MUY4MDQwRDQyRUE1MDAyMjMNCjoxMDNEMjAwMEI5NDIwQTYwNEZFQUMwNzJGNkQ4Q0RFOTAxNDYwMDk3NjENCjoxMDNEMzAwMDAwMkIzRkY0RkZBRTEzOUExMzY4NDNGMDAwNDMxMzYwNjcNCjoxMDNENDAwMEY4RTYwMjlFMDE5QzMxNDYyMjQ2MzA0NkZDRjc4OEZGODkNCjoxMDNENTAwMDBFOUJCMzQyMEVEOTEyOUEwMDlGMDAyMzExNjg0M0VBQ0ENCjoxMDNENjAwMDUxMDM0MkY4MDQzOTVBNDU0RkVBQzE3M0Y2RDFDREU5RkYNCjoxMDNENzAwMDAxNDYwMDk3MEM5QjBCOUExQjY4MTI2ODlBNDIxNkQzNTcNCjoxMDNEODAwMDAwRjIzMTgxOURGOTEwMzAwMDlGRERFOTAxNDYwOUUwMjQNCjoxMDNEOTAwMDU3RjgyMzEwNTVGODIzMjA5MTQyMDVEODAzRjFGRjMzM0INCjoxMDNEQTAwMEMwRjAxRTgxMTkwNkYzRDVDREU5MDE0NjAwOTcwMDlDQUQNCjoxMDNEQjAwMDAzOUIyQTQ2MjE0NjIwNDZGQ0Y3NTJGRjJDOUIxM0YwMUENCjoxMDNEQzAwMDAxMDM0MEYwREQ4MDA3OUFBMjQyN0ZGNkIzQUVEREU5NDENCjoxMDNERDAwMDAxNDYwNzk5MDA5RjAwMjI1MUY4MDQwRDQyRUE1MDAyNjMNCjoxMDNERTAwMEI5NDIwQTYwNEZFQUMwNzJGNkQ4Q0RFOTAxNDYwMDk3QTENCjoxMDNERjAwMDlFRTcyQTQ2MEE5OTBEOTgyRTQ2MDAyMzAzQTcwMEJGODYNCjoxMDNFMDAwMEMwMTk4MENFMTBDOTNGMTk4MEMyMDA0NzgwQ0UxMEM5QUENCjoxMDNFMTAwMDY3NDE4MEMyODBDRTEwQzk2NzQxODBDMjgwQ0UxMEM5ODANCjoxMDNFMjAwMDY3NDE4MEMyODBDRTEwQzk2NzQxODBDMjgwQ0UxMEM5NzANCjoxMDNFMzAwMDY3NDE4MEMyODBDRTEwQzk2NzQxODBDMjgwQ0UxMEM5NjANCjoxMDNFNDAwMDY3NDE4MEMyNUI0MTA2OUFBQTQyM0ZGNjMxQUYwMUU3NjMNCjoxMDNFNTAwMDJBNDYwQTk5MEQ5ODJFNDYwMDIzMDRBNEFGRjMwMDgwNDkNCjoxMDNFNjAwMDAwMTkxMENFODBDOUU0MTkxMEMyMDA0NzEwQ0U4MEM5RDUNCjoxMDNFNzAwMDdDNDExMEMyMTBDRTgwQzk3QzQxMTBDMjEwQ0U4MEM5RDYNCjoxMDNFODAwMDdDNDExMEMyMTBDRTgwQzk3QzQxMTBDMjEwQ0U4MEM5QzYNCjoxMDNFOTAwMDdDNDExMEMyMTBDRTgwQzk3QzQxMTBDMjEwQ0U4MEM5QjYNCjoxMDNFQTAwMDdDNDExMEMyNUI0MTA2OUFBQTQyM0ZGNkMyQUVEMUU2RkYNCjoxMDNFQjAwMENERTkwMTQ2MDA5NzJCNDYwQTlBMEQ5OTI4NDYwMDI0MjENCjoxMDNFQzAwMDA2QTYwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwMjENCjoxMDNFRDAwMDg5MTk0MEM4ODBDQUY2MTk0MEMzMDg0NzQwQzg4MENBM0INCjoxMDNFRTAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBQUENCjoxMDNFRjAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBOUENCjoxMDNGMDAwMDdFNDE0MEMzNDBDODgwQ0E3RTQxNDBDMzQwQzg4MENBODkNCjoxMDNGMTAwMDdFNDE0MEMzNjQ0MTdFRTZEREY4MDBDMDBBOTkwRDk4RjkNCjoxMDNGMjAwMDYyNDY2NjQ2MDAyMzA1QTRBRkYzMDA4MEFGRjMwMDgwMkQNCjoxMDNGMzAwMDAwMTkxMENFODBDOUU0MTkxMEMyMDA0NzEwQ0U4MEM5MDQNCjoxMDNGNDAwMDdDNDExMEMyMTBDRTgwQzk3QzQxMTBDMjEwQ0U4MEM5MDUNCjoxMDNGNTAwMDdDNDExMEMyMTBDRTgwQzk3QzQxMTBDMjEwQ0U4MEM5RjUNCjoxMDNGNjAwMDdDNDExMEMyMTBDRTgwQzk3QzQxMTBDMjEwQ0U4MEM5RTUNCjoxMDNGNzAwMDdDNDExMEMyNUI0MTA3OUE2MjQ1M0ZGNkM4QUVEN0U2NjYNCjoxMDNGODAwMERERjgwMEMwMEE5OTBEOTg2MjQ2NjQ0NjAwMjMwM0E2MzYNCjoxMDNGOTAwMDgwMTk0MENDODBDOUY2MTk0MEMyMDA0NzQwQ0M4MEM5ODYNCjoxMDNGQTAwMDdFNDE0MEMyNDBDQzgwQzk3RTQxNDBDMjQwQ0M4MEM5RTUNCjoxMDNGQjAwMDdFNDE0MEMyNDBDQzgwQzk3RTQxNDBDMjQwQ0M4MEM5RDUNCjoxMDNGQzAwMDdFNDE0MEMyNDBDQzgwQzk3RTQxNDBDMjQwQ0M4MEM5QzUNCjoxMDNGRDAwMDdFNDE0MEMyNUI0MTA3OUE2MjQ1M0ZGNkY4QUVBN0U2RDQNCjoxMDNGRTAwMENERTkwMTQ2MDA5NzAwOTgwMzlCMEE5QTAxNDZGQ0Y3MjkNCjoxMDNGRjAwMDA3RkVEQ0U2MDEyMzI0OTMxNEFDMUNBRTI0QUQyQ0FGRTkNCjoxMDQwMDAwMDYxRTUwMEJGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUINCjoxMDQwMTAwMDJERTlGMDRGQzdCMDk5NDY1MTlEQkRGOTQwNDE5NUY5NDINCjoxMDQwMjAwMDAwNTAwNTk1QUUwMDBCNDYzMzQ0MDAyRDBCOTFDREU5QjENCjoxMDQwMzAwMDBDNjAwNDkyMEE5MzQwRjMxODgyNkUxRTVGRkE4NkY4QjENCjoxMDQwNDAwMDA4RjEwMTA4NEZFQTg4MDgxRUFBMUY0NjEwNDYwNjkyOEENCjoxMDQwNTAwMDJFQUQ0MjQ2MDJGMEEzRkY0MjQ2Mzk0NjI4NDYwMkYwMDINCjoxMDQwNjAwMDlFRkYzNkFCMDM5MzQyNDY0OTQ2MTg0NkI5RjEwMDBGMEUNCjoxMDQwNzAwMDAwRjAxMzgyMDJGMDkzRkYwNTlCMDY5OUY2QjIwMDJCMjUNCjoxMDQwODAwMDA2RjEwMTA2NEZFQTg2MDYwREYxNTgwQUQ4QkYwNDI2NEMNCjoxMDQwOTAwMDMyNDY1MDQ2MERGMTk4MEIwMkYwOENGRjMyNDY1ODQ2REUNCjoxMDQwQTAwMDI5NDYwMkYwODdGRjAzOUVEREY4MTg4MDUxOUIyOTQ2QzANCjoxMDQwQjAwMDMyNDY0MDQ2RkRGNzg2Rjk1MTlCMjk0NjMyNDZEM0Y4RjENCjoxMDQwQzAwMEE0NTA0MDQ2MDIzQ0E4NDcyNEIyNTE5QjMyNDY1OTQ2NzANCjoxMDQwRDAwMDUwNDZGREY3NzdGOTAwMkMyQURENTE5RjA0OUE2MzExQjENCjoxMDQwRTAwMEE0QjI1MkY4MjMyMDAwOTcwNEYwMUYwMzAxMjEwMUZBMjMNCjoxMDQwRjAwMDAzRjMxMzQyMTNCRjIwMjYwMDI2MjAyNTAwMjUwQUVCRDgNCjoxMDQxMDAwMDA2MDkwQUVCMDUwODVFNDQ1RDQ0MzE0NjQ4NDYyQjQ2RTUNCjoxMDQxMTAwMDQyNDZGRUY3RDVGRTAxM0MzMzQ2NEE0NjI5NDY0MDQ2MTQNCjoxMDQxMjAwMDAwOTdGRUY3NURGOEEzQjIxQ0IyMDAyQkQ2RDE1MTk3RDENCjoxMDQxMzAwMDA0OUI1MTlBMUI2ODAwOTIwM0YwMDEwOERBNDM0RkVBOEUNCjoxMDQxNDAwMDQ4MTgwMkYwMDEwMjUzMDEwQUVCMDgwOTBBRUIwMzAyQzYNCjoxMDQxNTAwMDA4RUIwQjAxNUI0NDQ4NDYwODkyMDk5MzA0OTFGRUY3NzMNCjoxMDQxNjAwMEFGRkUwNTlCMDY5OUMzRjEwODAzREIwMDAzRjEwMTBDQzgNCjoxMDQxNzAwMDUxOUIwRUFBMTgxRDA2OTAwNzkyNjU0NjUwNDYwMDI2RDANCjoxMDQxODAwMDA2QTMwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwNjENCjoxMDQxOTAwMEVEMTgwOEM5MTBDODFCMUIwOEMyMjg0NzA4QzkxMEM4NTkNCjoxMDQxQTAwMEEzNDEwOEMyMDhDOTEwQzhBMzQxMDhDMjA4QzkxMEM4NjENCjoxMDQxQjAwMEEzNDEwOEMyMDhDOTEwQzhBMzQxMDhDMjA4QzkxMEM4NTENCjoxMDQxQzAwMEEzNDEwOEMyMDhDOTEwQzhBMzQxMDhDMjA4QzkxMEM4NDENCjoxMDQxRDAwMEEzNDEwOEMyNzY0MTAwMkUyREQxRERFOTA2MTI2MzQ2QzcNCjoxMDQxRTAwMDEwNDYwMDI1MDVBNjAwQkZBRkYzMDA4MEFGRjMwMDgwQTYNCjoxMDQxRjAwMDlCMTk0MEM4MTBDOTM2MTk0MEMyMTg0NzQwQzgxMEM5OTkNCjoxMDQyMDAwMDY2NDE0MEMyNDBDODEwQzk2NjQxNDBDMjQwQzgxMEM5OUENCjoxMDQyMTAwMDY2NDE0MEMyNDBDODEwQzk2NjQxNDBDMjQwQzgxMEM5OEENCjoxMDQyMjAwMDY2NDE0MEMyNDBDODEwQzk2NjQxNDBDMjQwQzgxMEM5N0ENCjoxMDQyMzAwMDY2NDE0MEMyNkQ0MTUxOUIwNDlFOTNGOTAwMjAwMzk4NTINCjoxMDQyNDAwMDA3OUYwMDIzMDEzQTkyMDAxQzQ2MUQ0NjE5NDZCMDQ2QkUNCjoxMDQyNTAwMDAwMjYwMUUwMEUwMEI2MUFCMUVCMDYwQzU4RjgwQ0UwOEYNCjoxMDQyNjAwMDU3RjgwNkMwQUNGQjBFQ0UxM0VCMEMwMzU0RUIwRTA0NTgNCjoxMDQyNzAwMDU1RjEwMDA1MDQzNjk2NDIwMURDOEU0MkVDREQ0MzUwRDgNCjoxMDQyODAwMDIzNDYyQzQ2MDAyNTA0MzE5MTQyRTFEREIxRUI0MjBGN0INCjoxMDQyOTAwMEUwREQ0MzUwMDM5RTUxOUIzMTQ2Mzg0NkQzRjhCMDMwQTENCjoxMDQyQTAwMDk4NDc1MTlCMDM5NjkzRjkwMDIwMzA0NjBCOUUwMDIzQkMNCjoxMDQyQjAwMDAxM0E5MjAwMUQ0NjFDNDY5ODQ2MzE0NjAwMjYwMkUwMEYNCjoxMDQyQzAwMDVGRUEwODA2QjYxQUI4RUIwNjBDNTFGODBDRTA1N0Y4OEUNCjoxMDQyRDAwMDA2QzBBQ0ZCMEVDRTEzRUIwQzAzNTVFQjBFMDU1NEYxRjANCjoxMDQyRTAwMDAwMDQwNDM2OTY0MjAxREM0NjQ1RUNERDQwRjgwODMwMTcNCjoxMDQyRjAwMDJCNDYyNTQ2MDAyNDE4RjEwNDA4OTA0NURFRERCOEVCNzYNCjoxMDQzMDAwMDQyMEZERERENDBGODA4MzA1MTlCMDM5OUQzRjhCMDMwRkYNCjoxMDQzMTAwMDM4NDY5ODQ3MDU5QjAwMkIxQkRENUUxRUY2QjIwRkFCOUYNCjoxMDQzMjAwMDAzRUI4NjAwRERGODEwODAzQjQ2NTE5RjAwMjU1M0Y4RDMNCjoxMDQzMzAwMDA0MkI5ODQyNDVFQTAyMDVGOUQxQ0RGODEwODA1MTk3MzcNCjoxMDQzNDAwMDAwMkQwMEYwQTA4MDA3OThEREU5MDUzMjAxNDZGRkY3NTcNCjoxMDQzNTAwMDhGRkI1MTlCMEE5RTkzRjkwMDIwMDM5ODA3OUYwMDIzMkYNCjoxMDQzNjAwMDAxM0E5MjAwMUM0Njk4NDYxRDQ2MzE0NjAwMjYwMUUwNUYNCjoxMDQzNzAwMDJFMDBCNjFBQjVFQjA2MEM1MUY4MENFMDU3RjgwNkMwNDMNCjoxMDQzODAwMEFDRkIwRUNFMTNFQjBDMDM1NEVCMEUwNDU4RjEwMDA4RkINCjoxMDQzOTAwMDA0MzY5NjQyMDFEQ0FFNDJFQ0RENDM1MTIzNDY0NDQ2RUUNCjoxMDQzQTAwMDVGRjAwMDA4MDQzNTk1NDJFMEREQjVFQjQyMEZERkREM0MNCjoxMDQzQjAwMDQzNTEwMzlFNTE5QjMxNDZEM0Y4QjAzMDM4NDY5ODQ3NUQNCjoxMDQzQzAwMDUxOUI5M0Y5MDAzMDAwMjUwMTNCOUIwMEFFNDZBODQ2NjcNCjoxMDQzRDAwMDJDNDYzMTQ2MDAyMDAxRTAyMDAwQzAxQTI2MUE1OUY4NjgNCjoxMDQzRTAwMDA2QzAzRTU4QTZGQjBDNkNBRDE5NUVFQjBDMEU1OEYxRTYNCjoxMDQzRjAwMDAwMDgwNDMwOTg0MjAxRENBMDQyRUZERDBENTE3NTQ2MDMNCjoxMDQ0MDAwMEM2NDY1RkYwMDAwODA0MzQ5QzQyRTNEREI0RUI0MzBGODINCjoxMDQ0MTAwMEUyREQwRDUxNTE5QjM4NDZEM0Y4QjAzMDk4NDc1MTlCOUYNCjoxMDQ0MjAwMDAwOTNEREU5MDgwMTA0OUI0QTQ2RkRGN0Q5RkU1MTlCNDQNCjoxMDQ0MzAwMDNBNDY1OTQ2NTA0NkZDRjdDNUZGMDU5QjAwMkIxMURENTcNCjoxMDQ0NDAwMDVDMUVFNEIyMEQ5RDAxMzRBNDAwMjI0NjUxNDYyODQ2NkMNCjoxMDQ0NTAwMDAyRjBBNUZEMjI0NjBDOUMyQjQ2MjM0NDU5NDYxODQ2RTMNCjoxMDQ0NjAwMDAyRjA5REZENDdCMEJERThGMDhGQjlGMTAwMEYxMUQwMEINCjoxMDQ0NzAwMDFFQUIwNjkzMzZBQjJFQUQwMzkzMERGMTU4MEEwREYxMkENCjoxMDQ0ODAwMDk4MEIxRTQ2MTBFNjcyMUM5MjAwMjk0NjA3OTgwMkYwMEYNCjoxMDQ0OTAwMEFBRkQ1RUU3MDEyMzM2OTNFQUU3MDJGMEE0RkQwMTIzQkINCjoxMDQ0QTAwMDM2OTNFOUU1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzUNCjoxMDQ0QjAwMDJERTlGMDRGQkRCMDBERjE1MDA4NDc5QzA1OTA5NEY5REYNCjoxMDQ0QzAwMDAwNDAwQ0FEMDAyQ0NERTkwMzEyQ0RFOTBBNTgxNERERjMNCjoxMDQ0RDAwMDAxM0M1RkZBODRGQjRGRUE4QjBBQTNGMTA0MDkwM0VCNkENCjoxMDQ0RTAwMDBBMDc0QzQ2MDAyNTU0RjgwNDZGQTc0MjQ1RUEwNjA1MjINCjoxMDQ0RjAwMEY5RDEwNTkwQ0RFOTAzMTIxREI5MDAyMDNEQjBCREU4MEENCjoxMDQ1MDAwMEYwOEY0NzlDNDc5RUI0RjkwMjQwMDg5NDFGMzQ0NEJGODMNCjoxMDQ1MTAwMDA4OUEwMkYxM0UwNDY0MTEwOTk0QTY0NjY0QjIwNjk0MTYNCjoxMDQ1MjAwMEM0RjEwODA0MjQzNjJDQUFFNDAwMDEzNDA3OTYxNTQ2ODkNCjoxMDQ1MzAwMDFGNDYwMDIyMDVBMTAwQkZBRkYzMDA4MEFGRjMwMDgwNEINCjoxMDQ1NDAwMDY0MTgwMkNFMDFDRjA5MUEwMkM1MjA0NzAyQ0UwMUNGNUUNCjoxMDQ1NTAwMDgxNDEwMkM1MDJDRTAxQ0Y4MTQxMDJDNTAyQ0UwMUNGMDkNCjoxMDQ1NjAwMDgxNDEwMkM1MDJDRTAxQ0Y4MTQxMDJDNTAyQ0UwMUNGRjkNCjoxMDQ1NzAwMDgxNDEwMkM1MDJDRTAxQ0Y4MTQxMDJDNTAyQ0UwMUNGRTkNCjoxMDQ1ODAwMDgxNDEwMkM1NTI0MTA2OURCMkZBODJGQzAwMkQ0RkVBREMNCjoxMDQ1OTAwMDVDMUM0MEYzNjY4MTBFRjFGRjM3MkRBQUZGQjIwMkVCREYNCjoxMDQ1QTAwMDg3MDdEREU5MDMxMjA1OTgyQ0FEMDAyNDU1RjgwNDZCNEMNCjoxMDQ1QjAwMEFGNDI0NEVBMDYwNEY5RDFDREU5MDMxMjAwMzQwNTkwNzQNCjoxMDQ1QzAwMDE4QkYwMTI0QTRFQjRDMEM1RkZBOENGQ0JDRjEwMTBGNkENCjoxMDQ1RDAwMDkzRDE0NzlBQjJGOTAyNTAwNzlBMTVGMTFGMDQ0OEJGQzgNCjoxMDQ1RTAwMDA1RjEzRTA0MUU0NjQ0RjM0NzE0MjM0NjMxNDYwQ0E4MDkNCjoxMDQ1RjAwMEZDRjcwNkZCMDAyODQwRjAzNjgxQjVFQjQ0MUY4MEYyNDMNCjoxMDQ2MDAwMDQyODE2QjExM0NBQTAyRUI4MzAzMDVGMDFGMDU1M0Y4QUUNCjoxMDQ2MTAwMEMwMkMwMTIzMDNGQTA1RjUxNTQyMENCRjFENDYwMDI1RTkNCjoxMDQ2MjAwMDIzNDYwNzlBMENBOTQwNDZGQ0Y3RUFGQTNDQUIwM0VCOTkNCjoxMDQ2MzAwMDg1MDUwODlCNDc5OTU1RjhDODJDMDE5MTAxMzMxQkIyOTkNCjoxMDQ2NDAwMDAwOTMxQ0E4MDAyMzQ0MzFGRkY3RTJGQzFEQUE5MjQ0MEENCjoxMDQ2NTAwMDFDQUIwMDIyNTNGODA0MUI5QTQ1NDJFQTAxMDJGOUQxMkYNCjoxMDQ2NjAwMDAwMkEzRkY0NEFBRjk2NEIxOTY4MDAyOTAwRjBGRDgwRkMNCjoxMDQ2NzAwMERERTkwNjIxMENBOEZDRjc0M0ZEMDAyODNGRjQzREFGMUYNCjoxMDQ2ODAwMDA2OUMwQ0FBMjM0NjMxNDYyQ0E4RkNGNzE5RkIyMzQ2QUUNCjoxMDQ2OTAwMDA3OUEyQ0E5MzA0NkZDRjc0NUZCMDAyQzE0REQwOTlCM0ENCjoxMDQ2QTAwMDU4MUVDMEIyMDZFQjgwMDIwMDIxNTlGODA0M0Y5MTQ1MjQNCjoxMDQ2QjAwMDQxRUEwMzAxRjlEMTAwMjkwMEYwRkM4MERERTkwNjMyNkUNCjoxMDQ2QzAwMDMxNDYzMDQ2RkZGN0Q0RjkwNjlDMENBQTIzNDYzMTQ2MDINCjoxMDQ2RDAwMDJDQThGQ0Y3RjVGQTIzNDYwNzlBMkNBOTMwNDZGQ0Y3REMNCjoxMDQ2RTAwMDIxRkI0NzlCOTNGOTAxNDAwMDJDMTZERDQ2OUEwMDI3RDkNCjoxMDQ2RjAwMDNCNDY2NTFFNTAxRUVCMUEyM0YwMDMwMjNDQTkwQTQ0RjgNCjoxMDQ3MDAwMDAzRjAwMzAzMDEzNzUyRjg4MDJDRDkwMEZCQjJDQTQwRjINCjoxMDQ3MTAwMDlDNDIwMEY4MDEyRjVGQjJFRERDNDc5QkIzRjkwMjMwRjkNCjoxMDQ3MjAwMERDMUQ0OEJGMDNGMTBFMDRFNDEwRTMxQzQ4QkZBMzFEQzkNCjoxMDQ3MzAwMDlCMTA1QUIyMDAyQTA3REQ1QTFFRDJCMjAxMzI5MjAwRjMNCjoxMDQ3NDAwMDAwMjEwQ0E4MDJGMDRGRkMwMDJDMTdERDAwMjAwNTk5NzkNCjoxMDQ3NTAwMDAyNDY2NzFFQkIxQTIzRjAwMzA1MENBQTExRjgwMEMwMUQNCjoxMDQ3NjAwMDUyNTkwM0YwMDMwM0RCMDAwQ0ZBMDNGMzAxMzAxQTQzNDANCjoxMDQ3NzAwMDQwQjIwQ0FCODQ0MjVBNTEwMjQ2RUJEQzA2OUQzQ0E5ODgNCjoxMDQ3ODAwMDZCMUUwMUVCODMwMzBCRjEwMTAyOTIwMDFDQTkwMDI0QjQNCjoxMDQ3OTAwMDQwNDY0M0Y4QTA0QzAyRjAwMkZDMkI0NjQyNDYwQ0E5Q0UNCjoxMDQ3QTAwMDJDQThGQ0Y3OERGQTA3OUMyQjQ2MjI0NjJDQTk0MDQ2RTQNCjoxMDQ3QjAwMEZDRjdCOEZBRERFOTAzMTI0NzlCMENBOEZDRjc3NEZEN0YNCjoxMDQ3QzAwMDBDQTkyMzQ2NDI0NjQwNDYwMDk1RkNGN0QxRkUyQjQ2RjUNCjoxMDQ3RDAwMDMyNDY0MTQ2MkNBOEZDRjc3M0ZBMkI0NjIyNDYyQ0E5RjgNCjoxMDQ3RTAwMDQwNDZGQ0Y3OUZGQTlERjgyNDMwNUExRTUyQjIwMDJBMjgNCjoxMDQ3RjAwMDRCREIzQ0E5MDFFQjgyMDE1MUY4QTAxQzAwMjk0NEQxRkMNCjoxMDQ4MDAwMDAyM0I1QkIyMDJFMDQ5NjgwMDI5M0VEMTVBQjI1MDFDMUINCjoxMDQ4MTAwMDAzRjFGRjMzMDhFQjgzMDFGNUQxMDAyMzQ3OUE5MkY5QTYNCjoxMDQ4MjAwMDAxNTBCM0VCQzUwRjNGRjc2OEFFMDAyRDE3REQ0Njk5NzkNCjoxMDQ4MzAwMDAwMjIxMzQ2NkUxRTQ4MTlGMzFBMjNGMDAzMDEzQ0FDMDQNCjoxMDQ4NDAwMDIxNDQwM0YwMDMwMzAxMzI1MUY4QTAxQ0RDMDBEM0IyNzENCjoxMDQ4NTAwMDlENDIyMUZBMDRGMjAwRjgwMTJCNUFCMkVDREMwMTIwNEYNCjoxMDQ4NjAwMDRDRTYwMDI0QUVFNjAwMjVEQUU2MDY5QjAwMkIwN0REQzkNCjoxMDQ4NzAwMDA5OUI1QTFFRDJCMjAxMzI5MjAwMENBODAyRjBCM0ZCN0YNCjoxMDQ4ODAwMDAxMjMwQzkzRkNFNjAxMjVDQUU2NTMxQzVCQjIwMDJCMDYNCjoxMDQ4OTAwMEM0RDAzQ0FBMDJFQjgzMDI1MkY4QTQyQzJBQjEwMDIxMTYNCjoxMDQ4QTAwMDUyMDgwMUYxMDEwMUZCRDE4QUIyMDEzQjAyRUI0MzEzMzMNCjoxMDQ4QjAwMDFCQjJCM0U3NDIxQzkyMDAzMDQ2MDJGMDk0RkIwM0U3QzANCjoxMDQ4QzAwMDc0NTgwMDIwMDE0QjE4NjA3MDQ3MDBCRjc0NTgwMDIwRDYNCjoxMDQ4RDAwMDAwNDg3MDQ3MkNDMTAxMDgwMDAwMDAwMDAwMDAwMDAwRTMNCjoxMDQ4RTAwMDJERTlGMDRGQjFCMENERTkwNDEwMDJGMTI0MDUxOEFCNjkNCjoxMDQ4RjAwMDE0NDY0RkYwNDAwQTAyOTNBQjQ2QjRGOTAyMzAxM0YxNkMNCjoxMDQ5MDAwMDFGMDI0OEJGMDNGMTNFMDI0MkYzNDcxMjU5NDYwOEE4NkUNCjoxMDQ5MTAwMEZDRjdGNkZCMDAyODAwRjAxNTgxQjRGOTAyRTAxRUYxNjcNCjoxMDQ5MjAwMDFGMDgxMEFCNDhCRjBFRjEzRTA4MDY5MzQ4RjM0NzE4MjYNCjoxMDQ5MzAwMDAyOUIwNzkzQzhGMTA4MDNEQjAwMDEzMzAzOTM5QzQ2RjUNCjoxMDQ5NDAwMDEwQUEwOEE5NTg0NjFGNDYwMDIzMDRBNkFGRjMwMDgwMEENCjoxMDQ5NTAwMEJGMTk0MEM5MjBDODc2MTk0MEMyMzg0NzQwQzkyMEM4OEQNCjoxMDQ5NjAwMDZFNDE0MEMyNDBDOTIwQzg2RTQxNDBDMjQwQzkyMEM4MDMNCjoxMDQ5NzAwMDZFNDE0MEMyNDBDOTIwQzg2RTQxNDBDMjQwQzkyMEM4RjMNCjoxMDQ5ODAwMDZFNDE0MEMyNDBDOTIwQzg2RTQxNDBDMjQwQzkyMEM4RTMNCjoxMDQ5OTAwMDZFNDE0MEMyNUI0MTAwMkI0MEYwRDg4MEJFRUI0ODFGMDcNCjoxMDQ5QTAwMDgwRjJENzgwNEZFQTZFMTIzMEFCMDNFQjgyMDIwRUYwM0ENCjoxMDQ5QjAwMDFGMEU1MkY4ODAxQzAxMjIwMkZBMEVGRTFFRUEwMTBGQTENCjoxMDQ5QzAwMDBDQkY5NDQ2NEZGMDAwMENEREU5MDIyMzEwQTk1ODQ2QjUNCjoxMDQ5RDAwMDAwMjUwNkE2QUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwQTANCjoxMDQ5RTAwMDlCMTk0MEM5ODBDOEY2MTk0MEMyMTg0NzQwQzk4MEM4MDENCjoxMDQ5RjAwMDdFNDE0MEMyNDBDOTgwQzg3RTQxNDBDMjQwQzk4MEM4OTMNCjoxMDRBMDAwMDdFNDE0MEMyNDBDOTgwQzg3RTQxNDBDMjQwQzk4MEM4ODINCjoxMDRBMTAwMDdFNDE0MEMyNDBDOTgwQzg3RTQxNDBDMjQwQzk4MEM4NzINCjoxMDRBMjAwMDdFNDE0MEMyNkQ0MTMwQUIwM0VCOEMwMjYzODg1MkY4OEINCjoxMDRBMzAwMEE4MkMwMTk0MDEzMzFCQjIwMDkzMjBBODAwMjMwNEYxOTkNCjoxMDRBNDAwMDQ0MDFGRkY3RTVGQTIzNzg1QjAwREJCMjVBQjIwMDJBOTMNCjoxMDRBNTAwMDc0REQwMTNCREFCMjIxQTkwMUVCODIwMDIwQUIwMDIyMTgNCjoxMDRBNjAwMDVENDY1M0Y4MDQxQjk4NDI0MkVBMDEwMkY5RDFBQjQ2NzUNCjoxMDRBNzAwMDAwMkE2M0QwQjRGOTAyMzBEOTFENDhCRjAzRjEwRTAxRkENCjoxMDRBODAwMEM5MTAwMDI5MTVERDAwMjAwMzQ2NEQxRUVCMUEyM0YwNDYNCjoxMDRBOTAwMDAzMDIzMEFFMzI0NDAzRjAwMzAzNTJGOEEwMkMwNDlFMEMNCjoxMDRBQTAwMERCMDAyMkZBMDNGMzQyMUMzMzU0NTBCMjgxNDIwMzQ2MjYNCjoxMDRBQjAwMEVDREM5NEY5MDE2MDAwMkUzQ0REMDU5QTAwMjAwMzQ2RjENCjoxMDRBQzAwMDc3MUU1NTFFRkIxQTIzRjAwMzAyMzBBOTBBNDQwM0YwOTcNCjoxMDRBRDAwMDAzMDMwMTMwNTJGODQwMkNEOTAwQzNCMkNBNDA5RTQyQjENCjoxMDRBRTAwMDA1RjgwMTJGNThCMkVEREM5NEY5MDE1MDk0RjkwMDQwMUINCjoxMDRBRjAwMDAwMkQ0RkYwMDQwNjFEREQwNTlCNEZGMDAwMEMyQjQ0RUMNCjoxMDRCMDAwMDE4NDY2RjFFNjM0NkZCMUEyM0YwMDMwMjMwQTkxNkZCRkENCjoxMDRCMTAwMDA0MjIwQTQ0MDNGMDAzMDMwQ0YxMDEwQzUyRjg0MDJDNjgNCjoxMDRCMjAwMEQ5MDA1RkZBOENGM0NBNDA5RDQyMDBGODAxMkI0RkZBN0UNCjoxMDRCMzAwMDgzRkNFOERDMDEyMDMxQjBCREU4RjA4RkJBRjEwMTBBNTYNCjoxMDRCNDAwMDdGRjREQkFFMDAyMDMxQjBCREU4RjA4RjRGRjAwMDBDRjkNCjoxMDRCNTAwMDNBRTc0RkYwMDEwQzM3RTcwMDAwMDAwMDAwMDAwMDAwQ0ENCjoxMDRCNjAwMDJERTlGMDRGOUI0NkFCQjBCM0Y5MDIzMDlCRjkwMDQwMDINCjoxMDRCNzAwMDA1OTQ5QkY5MDE0MDAyOTREQzFENDhCRjAzRjEwRTA0MkINCjoxMDRCODAwMEU0MTAwNDkzRTMxQzQ4QkZBMzFEMDc5MjlCMTAxMkFBRDQNCjoxMDRCOTAwMDA5OTI1QUIyMEFBRDAwMkEwODk1ODA0Njg5NDYwN0RENzcNCjoxMDRCQTAwMDVBMUVEMkIyMDEzMjkyMDAwMDIxMjg0NjAyRjAxQkZBQUUNCjoxMDRCQjAwMDAwMkMxQUREMDAyMDAyOUUwMjQ2MDRGMUZGM0U1RjQ2RjMNCjoxMDRCQzAwMEFFRUIwMjAyMjJGMDAzMDExOUY4MDBDMDZCNTgwMkYwQUMNCjoxMDRCRDAwMDAzMDJEMjAwMDEzMDBDRkEwMkYyNDBCMjEzNDM4NDQyQzUNCjoxMDRCRTAwMDZCNTAwMjQ2RUNEQzAyOTZCQjQ2MDI5QjEzRjEwMzA5QjQNCjoxMDRCRjAwMDQ4QkYwM0YxMDYwOTRGRUFBOTA5QjlGMTAwMEY0MEYzRDQNCjoxMDRDMDAwMDUzODEwOUYxRkYzMkQyQjIxQUFCMDEzMjkyMDAxODQ2MzkNCjoxMDRDMTAwMDAwMjEwMzkzMDJGMEU3RjkwMjlFMDAyRTQwRjMzQjgxNEUNCjoxMDRDMjAwMDRGRjAwMDBFMDM5QzczNDYwNkYxRkYzQzA4RjFGRjNBN0INCjoxMDRDMzAwMDVGNDZBQ0VCMDMwMzIzRjAwMzAxMUFGODAxMEY2MjU4M0YNCjoxMDRDNDAwMDAzRjAwMzAzREIwMDBFRjEwMTBFOTg0MDVGRkE4RUYzRDANCjoxMDRDNTAwMDAyNDM5RTQyNjI1MDRGRkE4M0ZFRUFEQzA1OUIwMjk2QjUNCjoxMDRDNjAwMEI5RjEwMDBGQkI0NjAzOTQwNEVCODMwMzEwREQwOUYxOTcNCjoxMDRDNzAwMEZGMzJEMkIyMDEzMjkyMDAxODQ2MDAyMTAyRjBCM0Y5OUQNCjoxMDRDODAwMDAyOUEwMDJBMDM0NjIyREQwMzlDMDJGMUZGM0MxNjQ2RUQNCjoxMDRDOTAwMDRGRjAwMDA5QjA0NDRBNDY1RjQ2QUNFQjAyMDIyMkYwRjYNCjoxMDRDQTAwMDAzMDAxOEY4MDFFQjE5NTgwMkYwMDMwMkQyMDAwOUYxRDENCjoxMDRDQjAwMDAxMDkwRUZBMDJGRTVGRkE4OUYyNDFFQTBFMDE5NjQyRkMNCjoxMDRDQzAwMDE5NTA0RkZBODJGOUU4REMwMjk2QkI0NjAzOTQwNDlCMjQNCjoxMDRDRDAwMDEzRjExRjA4NDhCRjAzRjEzRTA4NDhGMzQ3MThDOEYxMTUNCjoxMDRDRTAwMDA4MDNEQjAwMDEzMzlDNDYwQkYxMjQwQTA2OTM1MDQ2NkYNCjoxMDRDRjAwMDJBNDYyQjQ2NjE0NjAwMjQwNEE2MDBCRkFGRjMwMDgwN0QNCjoxMDREMDAwMDg5MTk0MENCODBDOEY2MTk0MEMyMDg0NzQwQ0I4MEM4RkINCjoxMDREMTAwMDdFNDE0MEMyNDBDQjgwQzg3RTQxNDBDMjQwQ0I4MEM4NkINCjoxMDREMjAwMDdFNDE0MEMyNDBDQjgwQzg3RTQxNDBDMjQwQ0I4MEM4NUINCjoxMDREMzAwMDdFNDE0MEMyNDBDQjgwQzg3RTQxNDBDMjQwQ0I4MEM4NEINCjoxMDRENDAwMDdFNDE0MEMyNjQ0MUExNDYwMDJDNDBGMEExODAwNDlCRkENCjoxMDRENTAwMEIzRUI0ODFGMTBEQTJBQUE1ODExMDJFQjgwMDAwM0YwQzcNCjoxMDRENjAwMDFGMEM1MEY4ODAwQzAxMjIwMkZBMENGMjAyNDIxNEJGMTANCjoxMDRENzAwMDRGRjAwMTA5NEZGMDAwMDkxMkFBNTE0NjA2OUIwMDIwOEUNCjoxMDREODAwMDA2QTQwMEJGQUZGMzAwODBBRkYzMDA4MEFGRjMwMDgwNTQNCjoxMDREOTAwMDFCMTkxMENENDBDOUE0MTkxMEMyMTg0NzEwQ0Q0MEM5MjUNCjoxMDREQTAwMDc0NDExMEMyMTBDRDQwQzk3NDQxMTBDMjEwQ0Q0MEM5MjkNCjoxMDREQjAwMDc0NDExMEMyMTBDRDQwQzk3NDQxMTBDMjEwQ0Q0MEM5MTkNCjoxMDREQzAwMDc0NDExMEMyMTBDRDQwQzk3NDQxMTBDMjEwQ0Q0MEM5MDkNCjoxMDRERDAwMDc0NDExMEMyNDA0MTM4NEIxRDY4NjVCMTJBQUIwM0VCRUENCjoxMDRERTAwMDg5MDMwNTlBNTNGODg4NUMwQkYxMDQwMTI4NDZGQ0Y3MDcNCjoxMDRERjAwMDg3RjkwMDI4NDlEMEJCRjgwMjEwMDM5QzJBQUI4OUYwNDANCjoxMDRFMDAwMDAxMEUwM0VCOEUwRTAxMzEwOUIyNUVGODg4MkMwMDkxODENCjoxMDRFMTAwMENERjgwNEIwMkI0NjIxNDYyMDQ2RkZGN0Y5RjgwMjlFNTQNCjoxMDRFMjAwMDAwMkUxQkREMDc5QjAwMjA1RDFFMDZGMUZGM0MwMzQ2QTQNCjoxMDRFMzAwMDVGNDZBQ0VCMDMwMzIzRjAwMzAyMkFBOTBBNDQwM0YwMDQNCjoxMDRFNDAwMDAzMDMwMTMwNTJGODQwMkNEOTAwQzNCMkNBNDA5RTQyM0QNCjoxMDRFNTAwMDA1RjgwMTJGNThCMkVDRENCQjQ2MDM5NDlCRjgwMDMwRjgNCjoxMDRFNjAwMDVCMDBEQkIyNUFCMjAwMkEyMUREMDEzQkRCQjIxQkFBOTgNCjoxMDRFNzAwMDAzOUMwMkVCODMwMjAwMjA1NEY4MDQzQjk0NDI0MEVBNzYNCjoxMDRFODAwMDAzMDBGOUQxMDAzMDE4QkYwMTIwMkJCMEJERThGMDhGMkUNCjoxMDRFOTAwMDRGRjAwMTA5NzBFNzA1OUIwMzlBQjlGMTAwMEYwMkVCOEYNCjoxMDRFQTAwMDgzMDM3RkY3MTRBRkUyRTYxQUFCMDM5M0I0RTYwMDIwNjYNCjoxMDRFQjAwMDJCQjBCREU4RjA4RjAwQkY3NDU4MDAyMDAwMDAwMDAwNDgNCjoxMDRFQzAwMDJERTlGMDRGQjJGOTAyODAxOEYxMDcwNDQ4QkYwOEYxNEMNCjoxMDRFRDAwMDBFMDRFNDEwRTMxQzQ4QkZBMzFEOUIxMDE2NDY1QUIyRjMNCjoxMDRFRTAwMDAwMkFBRkIwMDU0NjhBNDYwN0RENUExRUQyQjIwMTMyMEINCjoxMDRFRjAwMDkyMDAwMDIxMDZBODAyRjA3NkY4MDAyQzE4REQwMDIxQUYNCjoxMDRGMDAwMDBCNDY2MDFFMERGMTE4MENDMzFBMjNGMDAzMEUxNUY4QTINCjoxMDRGMTAwMDAxOTA1Q0Y4MEUyMDAzRjAwMzAzREIwMDAxMzEwOUZBNzUNCjoxMDRGMjAwMDAzRjM0OUIyMUE0MzhDNDI0Q0Y4MEUyMDBCNDZFQkRDREINCjoxMDRGMzAwMDE4RjExRjAzNDhCRjA4RjEzRTAzNUIxMTVDQjIwMDJDNUYNCjoxMDRGNDAwMDExREQwMTNCREJCMjRGRUE4MzA4MERGMTE4MEMwN0FCMTINCjoxMDRGNTAwMDAzRUIwODAwMDAyMjYzNDY1M0Y4MDQxQjk4NDI0MkVBMjANCjoxMDRGNjAwMDAxMDJGOUQxMUFCOTAwMjAyRkIwQkRFOEYwOEZDNEYxQzkNCjoxMDRGNzAwMDA4MDEwNkYxMjQwQkM5MDAwMTMxNTg0NjFFQUJFNjQ2NzQNCjoxMDRGODAwMDYyNDYwMDI0MDVBNzAwQkZBRkYzMDA4MEFGRjMwMDgwQTYNCjoxMDRGOTAwMEM5MTk4MEM4MjBDQTdGMUI4MEMzMDg0NzgwQzgyMENBOUYNCjoxMDRGQTAwMEFGNDE4MEMzODBDODIwQ0FBRjQxODBDMzgwQzgyMENBMzcNCjoxMDRGQjAwMEFGNDE4MEMzODBDODIwQ0FBRjQxODBDMzgwQzgyMENBMjcNCjoxMDRGQzAwMEFGNDE4MEMzODBDODIwQ0FBRjQxODBDMzgwQzgyMENBMTcNCjoxMDRGRDAwMEFGNDE4MEMzNjQ0MUI0RkE4NEY0MUZBQjY0MDk0MzQ0MTUNCjoxMDRGRTAwMDFFQTkwMDIwNTFGODA0NUI4QjQyNDBFQTA1MDBGOUQxNkMNCjoxMDRGRjAwMDY0MDAwMDI4MENCRjYwNDJDNEYxMDEwMEMwQjIwMTI4NjcNCjoxMDUwMDAwMEIxRDFCNkY5MDJFMDBFQUIwNDkzMTZBQjA1OTMxRUYxRDUNCjoxMDUwMTAwMDFGMDM0OEJGMEVGMTNFMDM0M0YzNDcxM0MzRjEwODA0RDcNCjoxMDUwMjAwMEU0MDAwMzkzMDEzNDBFQUQ2MjQ2NUY0NjAwMjAwM0EzMDMNCjoxMDUwMzAwMEU0MTgwOENBMDJDRjVCMTgwOEM1MjA0NzA4Q0EwMkNGODcNCjoxMDUwNDAwMDRCNDEwOEM1MDhDQTAyQ0Y0QjQxMDhDNTA4Q0EwMkNGNjgNCjoxMDUwNTAwMDRCNDEwOEM1MDhDQTAyQ0Y0QjQxMDhDNTA4Q0EwMkNGNTgNCjoxMDUwNjAwMDRCNDEwOEM1MDhDQTAyQ0Y0QjQxMDhDNTA4Q0EwMkNGNDgNCjoxMDUwNzAwMDRCNDEwOEM1NDA0MTAwMjg0MEYwODU4MDAzOUJCRUVCQjINCjoxMDUwODAwMDQzMUY4MEYyODM4MDRGRUE2RTE0MkVBQjAzRUI4NDA0M0YNCjoxMDUwOTAwMDBFRjAxRjBFNTRGODgwNUMwMzlCMDEyNDA0RkEwRUZFRjANCjoxMDUwQTAwMDFFRUEwNTBGMThCRjAwMjQ1QTQ2MEVBOTE2QThGQkY3RTINCjoxMDUwQjAwMEE3RkQyRUFCMDNFQjg0MDI3Mzg4NTJGOEE4MkMwMTk2NEYNCjoxMDUwQzAwMDAxMzMxQkIyMDA5MzA2RjE0NDAxMDAyMzFFQThGRUY3MzINCjoxMDUwRDAwMDlGRkYzMzc4NUIwMERCQjI1QUIyMDAyQTdGRjc0M0FGMDENCjoxMDUwRTAwMDVBMUVEMkIyMUZBQjAzRUI4MjAyMDAyMTFFQUI1M0Y4NTMNCjoxMDUwRjAwMDA0MEI5QTQyNDFFQTAwMDFGOUQxMDAyOTNGRjQzM0FGOTENCjoxMDUxMDAwMDk2RjkwMTQwMDAyQzNDREQwMDIyMTM0NjY1MUUwQUYxOTENCjoxMDUxMTAwMEZGMzBFQjFBMjNGMDAzMDEyRUFGMzk0NDAzRjAwMzAzRjENCjoxMDUxMjAwMDAxMzI1MUY4NDAxQzRGRUFDMzBDRDNCMjlDNDIyMUZBMjENCjoxMDUxMzAwMDBDRjIwMEY4MDEyRjVBQjJFQkRDOTZGOTAxMDA5NkY5NTcNCjoxMDUxNDAwMDAwNDAwMDI4NEZGMDA0MDUxQkREMDAyMTBBRUIwMDA3OUENCjoxMDUxNTAwMDBCNDY0NjFFRjMxQTIzRjAwMzAyMERGMUI4MEMxNUZCQTMNCjoxMDUxNjAwMDA0MjI2MjQ0MDNGMDAzMDMwMTMxNTJGODQwMkM0RkVBNTkNCjoxMDUxNzAwMEMzMENDQkIyMjJGQTBDRjI5ODQyMDdGODAxMkI1OUIyQjkNCjoxMDUxODAwMEU4REMwMTIwRjBFNjAwMjQwMzlCOERFNzAxMjQ4QkU3OTcNCjoxMDUxOTAwMDJERTlGMDQ3OEFCMDgyNDYxMjlEODg0NjE3NDY5OTQ2MDcNCjoxMDUxQTAwMDA1RjEyNDA2NDAyNDA3RTBDREU5MDA5NTUwNDZGRkY3QkQNCjoxMDUxQjAwMDdGRjlCOEI5MDEzQzExRDBCNUY5MDIzMDEzRjExRjAyRTMNCjoxMDUxQzAwMDQ4QkYwM0YxM0UwMjMxNDY0MkYzNDcxMjAyQThGQkY3MDMNCjoxMDUxRDAwMDk3RkYwMkFCM0E0NjQxNDYwMDI4RTVEMTAwMjAwQUIwQ0QNCjoxMDUxRTAwMEJERThGMDg3MDEyMDBBQjBCREU4RjA4N0YwQjUwMUYxMTUNCjoxMDUxRjAwMDIwMDIwMzQ2MEM3ODFDNzA0Qzc4NUM3MDhDNzg5QzcwOTQNCjoxMDUyMDAwMENDNzhEQzcwMDQzMTkxNDIwM0YxMDQwM0YyRDExOTRBRTUNCjoxMDUyMTAwMDE5NEYwODI2MTZGMDA3MEMwMzdGNDU3Rjg0N0ZDMTdGNTYNCjoxMDUyMjAwMDIwRDExMkY4MDVDMDE1NUQ1NDVDRDE1Q0YzMDhGQjVDMUQNCjoxMDUyMzAwMDhDRUEwMzAzOTBGODAwQzA4M0VBMEMwMzgwRjgyMDMwNjYNCjoxMDUyNDAwMDQzNzg1RDQwODM3ODgwRjgyMTUwNUM0MEMzNzg4MEY4RDMNCjoxMDUyNTAwMDIyNDAwMTM2NTk0MDNDMkU4MEY4MjMxMDAwRjEwNDAwMTINCjoxMDUyNjAwMEQ4RDFGMEJEQkNGMTA0MEYwMUJGRDM1QzU1NUQxNDVEMTYNCjoxMDUyNzAwMDUxNUNERkU3RUJDMjAxMDhFMEMxMDEwODcwQjU0QjFFQ0QNCjoxMDUyODAwMDAyRUIwMDEyMEYzMTE1MUQxODQ2MTJGODAxNEIxMEY4RjENCjoxMDUyOTAwMDAxNkZBQTQyODRFQTA2MDQwNDcwRjZEMTA0MzM4QjQyRkINCjoxMDUyQTAwMEYxRDE3MEJEQzMwOTVBMDAxMzQ0MDNFQkMzMDM4M0VBNzENCjoxMDUyQjAwMDQwMDBDMEIyNzA0NzAwMDAyREU5RjA0RjBBNDY4N0IwQTkNCjoxMDUyQzAwMDA0NDY4QTQ2MDE0NjAwMjBGRkY3RDhGRjIzMUQwMjkzQkINCjoxMDUyRDAwMDA0RjExMDAzNEZGMDAxMDgwMzkzQTM0NjI3NDYwQ0UwQTYNCjoxMDUyRTAwMDE3RjgyMzIwNDk0OThBNUMwN0Y4MjMyMDAxMzMwNDJCNEYNCjoxMDUyRjAwMEY2RDEwMjlCMDEzNzlGNDIwMUQwMDAyM0YwRTc2Mjc5OEINCjoxMDUzMDAwMDYzNzg2MjcwNjI3QTYyNzE2MjdCNjI3MkEyN0E2MzczOUUNCjoxMDUzMTAwMEEzNzhBMjcwQTI3QkEzNzJBMzc5QTI3MUUyN0JBMzczOEMNCjoxMDUzMjAwMEUzNzhFMjcwRTI3QUUyNzNFMjc5RTI3MkUzNzEyMTQ2QjUNCjoxMDUzMzAwMDBBNzg0RTc4OEQ3OENCNzgwMTkzODJFQTA2MDA2QjQwMkMNCjoxMDUzNDAwMDgwRUEwMzA5MDU5MzA0OTJGRkY3QUNGRjA0OUE1MDQwRUENCjoxMDUzNTAwMDg5RUEwMDAwMDg3MDg2RUEwNTAwRkZGN0EzRkYwNTlCQjUNCjoxMDUzNjAwMDcwNDA4OUVBMDAwMDQ4NzAxODQ2RkZGNzlCRkYwMTlCRDgNCjoxMDUzNzAwMDA0OUE2ODQwODlFQTAwMDA4ODcwODJFQTAzMDBGRkY3MTcNCjoxMDUzODAwMDkxRkYwMTlCNTg0MDg5RUEwMDA5MDM5QjgxRjgwMzkwMzMNCjoxMDUzOTAwMDA0MzE5OTQyQ0NEMTQwNDYwOEYxMDEwODUyNDYyMTQ2RDkNCjoxMDUzQTAwMDVGRkE4OEY4RkZGNzZBRkZCOEYxMEUwRjk1RDExNzRBMzgNCjoxMDUzQjAwMDAwMjMxQkY4MjMxMDUxNUMwQkY4MjMxMDAxMzMwNDJCM0UNCjoxMDUzQzAwMEY3RDEwQkYxMDEwQkJCNDVGMkQxNjI3OTYzNzg2MjcwQzINCjoxMDUzRDAwMDYyN0E2MjcxNjI3QjYyNzJBMjdBNjM3M0EzNzhBMjcwNEUNCjoxMDUzRTAwMEEyN0JBMzcyQTM3OUEyNzFFMjdCQTM3M0UzNzhFMjcwM0MNCjoxMDUzRjAwMEUyN0FFMjczRTI3OUUyNzIyMTQ2NTI0NjBFMjBFMzcxQ0MNCjoxMDU0MDAwMDA3QjBCREU4RjA0RkZGRjczOUJGMDBCRkVCQzIwMTA4OUUNCjoxMDU0MTAwMDJERTlGMDRGOEZCMDA0NDYwMzkxMEE0NjAxNDYwRTIwNTUNCjoxMDU0MjAwMEZGRjcyQ0ZGMEQyMzAyOTMyMzFEMEE5MzA0RjExMDAzQjENCjoxMDU0MzAwMDBCOTM2MjdBNjM3QjYyNzM2Mjc5NjI3MjYyNzg2MjcxRTMNCjoxMDU0NDAwMEEyN0E2MzcwQTM3OEEyNzBBMjdCQTM3MkEzNzlBMjcxREYNCjoxMDU0NTAwMEUyNzlBMzczRTM3OEUyNzBFMjdBRTI3MUUyN0JFMjcyQ0UNCjoxMDU0NjAwMEUzNzNBMzQ2Mjc0NjAwMjMxN0Y4MjMyMDY5NDk4QTVDODMNCjoxMDU0NzAwMDA3RjgyMzIwMDEzMzA0MkJGNkQxMEE5QjAxMzdCQjQyRTYNCjoxMDU0ODAwMEYxRDEwMzlBMDI5ODIxNDZGRkY3RjhGRTI2NDYzMzc4QjkNCjoxMDU0OTAwMDAwOTMwMDk4NzM3ODAxOTNGRkY3MDRGRjA0OTBGRkY3REYNCjoxMDU0QTAwMDAxRkYwNTkwRkZGN0ZFRkUwRDkwMDE5OEI1Nzg5NkY4ODQNCjoxMDU0QjAwMDAzQTBGRkY3RjdGRTAxNDZGRkY3RjRGRTA2OTBGRkY3QTMNCjoxMDU0QzAwMEYxRkU4MTQ2Mjg0NkZGRjdFREZFMEM5MEZGRjdFQUZFNUQNCjoxMDU0RDAwMDA3OTBGRkY3RTdGRTgwNDY1MDQ2RkZGN0UzRkUwODkwOEYNCjoxMDU0RTAwMEZGRjdFMEZFMDk5MEZGRjdEREZFRERFOTA0MzI4M0VBMTUNCjoxMDU0RjAwMDAyMEMwRDlCMDc5QTgzRUEwQzBDODFFQTBDMEM4OUVBREENCjoxMDU1MDAwMDBDMEM4MkVBMEMwQzg4RUEwQzBDMDE5QTgwRUEwQzBDNTgNCjoxMDU1MTAwMDgyRUEwQzBDODVFQTBDMEMwNjlBOEFFQTBDMEM1OTQwQkINCjoxMDU1MjAwMDg2RjgwMEMwNTE0MERERjgzMEMwMDk5QTg5RUEwMTAxQ0YNCjoxMDU1MzAwMDgxRUEwQzAxODhFQTAxMDE1MTQwMDA5QTQxNDA1MTQwNDINCjoxMDU1NDAwMDY5NDAwNTlBOEFFQTAxMDE3MTcwODJFQTAzMDE4OUVBRDkNCjoxMDU1NTAwMDAxMDE4Q0VBMDEwMjA3OTk0QTQwMDg5OTg4RUEwMjAyOEYNCjoxMDU1NjAwMDRBNDAwMDk5NDI0MDRBNDAwMTk5NEE0MDhBRUEwMjBBNjgNCjoxMDU1NzAwMDA0OUE4NkY4MDJBMDUzNDAwNjlBNTM0MDg5RUEwMzA5MjgNCjoxMDU1ODAwMDA4OUI4OEVBMDkwODgzRUEwODA4MDk5QjgzRUEwODA4NTcNCjoxMDU1OTAwMDAwOUI4MEVBMDgwMDU4NDA0ODQwNjg0MDBCOUJGMDcwMzANCjoxMDU1QTAwMDA0MzZCMzQyN0ZGNDczQUYwMjlCMDEzQjEzRjBGRjAzNTkNCjoxMDU1QjAwMDAyOTM3RkY0M0VBRjYyN0E2MzdCNjI3MzYyNzk2MjcyQjgNCjoxMDU1QzAwMDYyNzg2MjcxQTI3QTYzNzBBMzc4QTI3MEEyN0JBMzcyRTANCjoxMDU1RDAwMEEzNzlBMjcxRTI3OUEzNzNFMzc4RTI3MEUyN0FFMjcxQ0YNCjoxMDU1RTAwMEUyN0JFMjcyMEI0QUUzNzMwMDIzMUJGODIzMTA1MTVDNDkNCjoxMDU1RjAwMDBCRjgyMzEwMDEzMzA0MkJGN0QxMEJGMTAxMEI1RjQ1OUUNCjoxMDU2MDAwMEYyRDEwMzlBMjE0NjAwMjAwRkIwQkRFOEYwNEZGRkY3MUENCjoxMDU2MTAwMDM1QkUwMEJGRUJDMTAxMDhGRkY3RThCRDJERTlGMDQxNDENCjoxMDU2MjAwMDAwRjFGMDA1MDc0NjBFNDY5MDQ2MkI0NjBDNDZBMjFCOUQNCjoxMDU2MzAwMDkwNDUwOUQ4MDNGMTEwMDI1M0Y4MDQxQjQ1RjgwNDFCRTgNCjoxMDU2NDAwMDkzNDJGOUQxQkRFOEYwODE2MTFFMDEzQjA0RjEwRjAyRTQNCjoxMDU2NTAwMDExRjgwMTBGMTNGODAxQ0Y5MTQyODBFQTBDMDAwODcwOTUNCjoxMDU2NjAwMEY2RDEyMDQ2Mzk0NkZGRjcyN0ZFMjM0NjEwMzRERUU3MDENCjoxMDU2NzAwMDJERTlGRjQ3MDY0NjBGNDY5MTQ2MEM0NjBERjExMDBBRUMNCjoxMDU2ODAwMEUzMUI5OTQ1MDJEODA0QjBCREU4RjA4NzZBNDYyMzQ2N0INCjoxMDU2OTAwMDA0RjExMDA4MTU0NjE4Njg1OTY4OTQ0NkFDRTgwMzAwRjANCjoxMDU2QTAwMDA4MzM0MzQ1NjI0NkY2RDEzMTQ2MjA0NkZGRjdCMEZFNDcNCjoxMDU2QjAwMDYzMUUwNkYxRUYwMTBGMzQxM0Y4MDEyRjExRjgwMTBGRUINCjoxMDU2QzAwMEEzNDI4MkVBMDAwMjFBNzBGNkQxMkM0NjA2RjFGMDAyREINCjoxMDU2RDAwMDIzNDYwM0NCNTM0NTEwNjA1MTYwMUM0NjAyRjEwODAyN0INCjoxMDU2RTAwMEY2RDE0NDQ2Q0NFNzAwMDA4MEI1ODJCMDAwQUY3ODYwQzgNCjoxMDU2RjAwMDdCNjg0MEYyMDMyMjkzNDIwMEYwQUQ4MEIzRjUwMTdGNTYNCjoxMDU3MDAwMDNFREE0MEYyMDExMjkzNDIwMEYwOTM4MEIzRjU4MTdGQkMNCjoxMDU3MTAwMDE0REEwMjJCMDBGMDg1ODAwMjJCMDdEQzAwMkI3QUQwRjQNCjoxMDU3MjAwMDAwMkI3QURDQjNGMTAwNEY3OUQwQjRFMDA0MkI3Q0QwQUQNCjoxMDU3MzAwMDA0MkI3OERCQjNGNTgwN0Y3OUQwQUNFMDQwRjIwNTEyMjINCjoxMDU3NDAwMDkzNDI3RUQwQjNGNTgzN0YwN0RBNDBGMjAzMTI5MzQyOEYNCjoxMDU3NTAwMDczRDBCM0Y1ODI3RjcyREE2REUwQjNGNTAwN0Y3NEQwNTkNCjoxMDU3NjAwMEIzRjUwMDdGMDNEQ0IzRjU4MzdGNkNEMDkzRTA0MEYyQTgNCjoxMDU3NzAwMDAxMjI5MzQyNkJEMDQwRjIwMjIyOTM0MjY5RDA4QUUwMjgNCjoxMDU3ODAwMEIzRjU0MDdGNzdEMEIzRjU0MDdGMUNEQ0IzRjUwMjdGRTMNCjoxMDU3OTAwMDBDREM0MEYyMDcyMjkzNDI2NURBNDBGMjA1MjI5MzQyODQNCjoxMDU3QTAwMDVERDA0MEYyMDUyMjkzNDI1QkRDNTZFMDQwRjIwQTIyRDMNCjoxMDU3QjAwMDkzNDI1Q0QwNDBGMjBBMjI5MzQyNTZEQjQwRjIwQjIyMjUNCjoxMDU3QzAwMDkzNDI1NkQwNjdFMDQwRjIwMjQyOTM0MjVCRDA0MEYyRUYNCjoxMDU3RDAwMDAyNDI5MzQyMEFEQ0IzRjU4MDZGNTBEMEIzRjU4MDZGN0MNCjoxMDU3RTAwMDRGREM0MEYyMDEzMjkzNDI0N0QwNTRFMDQwRjIwMTUyODQNCjoxMDU3RjAwMDkzNDIzQUQwNDBGMjAxNTI5MzQyMDNEQ0IzRjVBMDZGREENCjoxMDU4MDAwMDQzRDA0OEUwNDBGMjAyNTI5MzQyNDBEMDZGRjAwMDQyNTENCjoxMDU4MTAwMDkzNDIzRUQwM0ZFMDI0NEI0MUUwMjQ0QjNGRTAyNDRCRjkNCjoxMDU4MjAwMDNERTAyNDRCM0JFMDI0NEIzOUUwMjQ0QjM3RTAyNDRCNTQNCjoxMDU4MzAwMDM1RTAyNDRCMzNFMDI0NEIzMUUwMjQ0QjJGRTAyNDRCNjQNCjoxMDU4NDAwMDJERTAyNDRCMkJFMDI0NEIyOUUwMjQ0QjI3RTAyNDRCNzQNCjoxMDU4NTAwMDI1RTAyNDRCMjNFMDI0NEIyMUUwMjQ0QjFGRTAyNDRCODQNCjoxMDU4NjAwMDFERTAyNDRCMUJFMDI0NEIxOUUwMjQ0QjE3RTAyNDRCOTQNCjoxMDU4NzAwMDE1RTAyNDRCMTNFMDI0NEIxMUUwMjQ0QjBGRTAyNDRCQTQNCjoxMDU4ODAwMDBERTAyNDRCMEJFMDI0NEIwOUUwMjQ0QjA3RTAyNDRCQjQNCjoxMDU4OTAwMDA1RTAyNDRCMDNFMDAxMjBGRkY3MjZGRjAzNDYxODQ2RUUNCjoxMDU4QTAwMDA4MzdCRDQ2ODBCRDAwQkY4MDlBMDEwODg0OUEwMTA4NzANCjoxMDU4QjAwMDk0OUEwMTA4QjQ5QTAxMDgxMDlCMDEwODMwOUIwMTA4RDINCjoxMDU4QzAwMDNDOUIwMTA4NjQ5QjAxMDg3QzlCMDEwODk0OUIwMTA4OTgNCjoxMDU4RDAwMEM0OUIwMTA4RjA5QjAxMDgzNDlDMDEwODY0OUMwMTA4RUENCjoxMDU4RTAwMDc4OUMwMTA4ODQ5QzAxMDhBMDlDMDEwOEJDOUMwMTA4Q0MNCjoxMDU4RjAwMERDOUMwMTA4RjA5QzAxMDgwODlEMDEwODJDOUQwMTA4MTINCjoxMDU5MDAwMDQ4OUQwMTA4NUM5RDAxMDg3NDlEMDEwODk0OUQwMTA4NTMNCjoxMDU5MTAwMEI0OUQwMTA4RDQ5RDAxMDgxQzlFMDEwODMwOUUwMTA4MTkNCjoxMDU5MjAwMDZDOUUwMTA4QTQ5RTAxMDg4MEI0ODVCMDAwQUZGODYwQTkNCjoxMDU5MzAwMEI5NjA3QTYwM0I2MEZCNjhCQTY4MUE2MEJBNjg3QjY4RDUNCjoxMDU5NDAwMDFBNDRGQjY4NUE2MEZCNjgwMjIyOUE2MEZCNjgzQTY4NTYNCjoxMDU5NTAwMERBNjAwMEJGMTQzN0JENDY1REY4MDQ3QjcwNDc4MEI0NDENCjoxMDU5NjAwMDgzQjAwMEFGNzg2MDAxMjMxODQ2MEMzN0JENDY1REY4NjANCjoxMDU5NzAwMDA0N0I3MDQ3OTBCNTg1QjAwMEFGRjg2MEM3RTkwMDIzOUQNCjoxMDU5ODAwMEQ3RTkwMDM0MUFCQTIxQkEwQjQ2MTQ0NkM3RTkwMDM0RTUNCjoxMDU5OTAwMDNCNDYwODIyMTk0NkY4NjgwMUYwMDFGQjAwQkYxNDM3QTYNCjoxMDU5QTAwMEJENDY5MEJEODBCNDg1QjAwMEFGNzg2MDM5NjA3QjY4M0INCjoxMDU5QjAwMDVCNjhGQjYwRkI2ODAwMkIwMkQwN0I2ODFCNjgwMUUwMjINCjoxMDU5QzAwMDdCNjgxQjY4RkE2OEQzMUFGQjYwM0I2OEZBNjhEMzFBRDUNCjoxMDU5RDAwMEZCNjBGQjY4REIwRkRCQjIwMDJCMTRCRjAxMjMwMDIzNEQNCjoxMDU5RTAwMERCQjIxODQ2MTQzN0JENDY1REY4MDQ3QjcwNDc4MEI0QkYNCjoxMDU5RjAwMDgzQjAwMEFGNzg2MDM5NjA3QjY4NUI2ODAwMkIwNkQwQUQNCjoxMDVBMDAwMDdCNjgxQTY4M0I2ODFBNDQ3QjY4MUE2MDA3RTA3QjY4MDkNCjoxMDVBMTAwMDFCNjgxQTQ2M0I2ODEzNDQxQTQ2N0I2ODFBNjAwMEJGMkQNCjoxMDVBMjAwMDBDMzdCRDQ2NURGODA0N0I3MDQ3ODBCNTg0QjAwMEFGOEQNCjoxMDVBMzAwMEY4NjBCOTYwN0E2MDc5NjhGODY4RkZGN0IzRkYwMzQ2RTkNCjoxMDVBNDAwMDAwMkIxQUQwRkI2ODVCNjgwMDJCMEZEMEZCNjg1QjY4RUINCjoxMDVBNTAwMDFBNDZGQjY4MUI2OEQzMUExQTQ2N0I2ODlCMUE3QjYwNDANCjoxMDVBNjAwMEZCNjgwMDIyNUE2MEZCNjgwMDIyMUE2MDc5NjhGODY4QjcNCjoxMDVBNzAwMEZGRjdCREZGNEZGMDAwNDMwREUwRkI2ODFCNjg3QTY4M0QNCjoxMDVBODAwMEI5NjgxODQ2MDFGMDhCRkFGQjY4MUE2ODdCNjgxQTQ0RkINCjoxMDVBOTAwMEZCNjgxQTYwMDAyMzE4NDYxMDM3QkQ0NjgwQkQ4MEI1RUMNCjoxMDVBQTAwMDgyQjAwMEFGNzg2MDBCNDZGQjcwRkIxQzAxMjIxOTQ2RTgNCjoxMDVBQjAwMDc4NjhGRkY3QkFGRjAzNDYxODQ2MDgzN0JENDY4MEJEMzENCjoxMDVBQzAwMDkwQjU4REIwMDBBRkY4NjBDN0U5MDAyMzA3RjExMDAzNkYNCjoxMDVBRDAwMDEwMzM3QjYyN0I2QTAxM0JGQjYyMDdGMTEwMDEwODMxRTYNCjoxMDVBRTAwMEQ3RTkwMDIzMDg0NkZGRjc0NUZGRDdFOTAwMzQwMDJDMkINCjoxMDVBRjAwMDA4QkYxODJCMDhEMkZCNkExQTc4OTdGODQwMzAxMzQ0NzUNCjoxMDVCMDAwMERBQjJGQjZBMUE3MDNCRTAwMDIzODdGODJCMzBEN0U5NDINCjoxMDVCMTAwMDAwMzQwMDJDMDhCRkIzRjU4MDdGMDREMzk3RjgyQjMwRjYNCjoxMDVCMjAwMDAxMzM4N0Y4MkIzMEQ3RTkwMDM0NEZGNkZGNzE0RkYwN0YNCjoxMDVCMzAwMDAwMDJBMjQyMDhCRjk5NDIwNEQyOTdGODJCMzAwMTMzRTkNCjoxMDVCNDAwMDg3RjgyQjMwRDdFOTAwMzQwMTJDMDhCRjAwMkIwNEQzOTENCjoxMDVCNTAwMDk3RjgyQjMwMDEzMzg3RjgyQjMwOTdGODJCMzAwMTIyNDANCjoxMDVCNjAwMDAyRkEwM0YzNUI0MkZBNkExMzQ0RkI2Mjk3Rjg0MDIwOUYNCjoxMDVCNzAwMDk3RjgyQjMwMTM0NERCQjIxODMzREFCMkZCNkExQTcwOTENCjoxMDVCODAwMDdBNkFGQjZBRDMxQTFBNDZGOTZBRjg2OEZGRjc0REZGN0ENCjoxMDVCOTAwMDAzNDYxODQ2MzQzN0JENDY5MEJEODBCNDgzQjAwMEFGOEQNCjoxMDVCQTAwMDc4NjA3QjY4OUI2ODAwMkIwNEQwN0I2ODlCNjg1QTFFREENCjoxMDVCQjAwMDdCNjg5QTYwMDBCRjBDMzdCRDQ2NURGODA0N0I3MDQ3NzgNCjoxMDVCQzAwMDgwQjU4NkIwMDJBRkY4NjBDN0U5MDAyM0Y4NjhGRkY3MzgNCjoxMDVCRDAwMEU0RkYzQjdFMDA5M0Q3RTkwMDIzRjg2OEZGRjc3MEZGRUUNCjoxMDVCRTAwMDAzNDYxODQ2MTAzN0JENDY4MEJEODBCNTg2QjAwMkFGNkINCjoxMDVCRjAwMEY4NjBDN0U5MDAyMzAwMjMwMDkzRDdFOTAwMjNGODY4ODENCjoxMDVDMDAwMEZGRjdERUZGMDM0NjE4NDYxMDM3QkQ0NjgwQkQyREU5N0QNCjoxMDVDMTAwMDkwNDg4QUIwMDJBRkY4NjBDN0U5MDAyM0Q3RTkwMDEyQzQNCjoxMDVDMjAwMDRGRjAwMDAzNEZGMDAwMDREMzE3RDQxN0M3RTkwNjM0MzANCjoxMDVDMzAwMDNCN0UwM0YwMjAwM0ZCNzVEN0U5MDBCQ0Q3RTkwNjEyRDENCjoxMDVDNDAwMDhCRUEwMTAzOENFQTAyMDRDN0U5MDYzNEZCN0QwMDkzNkENCjoxMDVDNTAwMEQ3RTkwNjIzRjg2OEZGRjdCM0ZGMDM0NjE4NDYyMDM3NTUNCjoxMDVDNjAwMEJENDZCREU4OTA4ODkwQjU4NUIwMDJBRjc4NjAwQjQ2MjANCjoxMDVDNzAwMEZCNzBGQjc4MTgyQjA1RDlGQjc4MUYyQjAyRDg0RkY0NEINCjoxMDVDODAwMDgzNzMwQUUwRkI3ODRGRjAwMDA0RTAyMjAwOTIxQTQ2OEENCjoxMDVDOTAwMDIzNDY3ODY4RkZGNzk0RkYwMzQ2MTg0NjBDMzdCRDQ2NDUNCjoxMDVDQTAwMDkwQkQ5MEI1ODlCMDAyQUZGODYwQjk2MDNCNjAxMzQ2MTMNCjoxMDVDQjAwMEZCNzFCQjY4NEZGMDAwMDRGQTc5MDA5MjFBNDYyMzQ2NDQNCjoxMDVDQzAwMEY4NjhGRkY3N0RGRjc4NjE3QjY5MDAyQjBBRDA3ODY5NUYNCjoxMDVDRDAwMEZGRjc0NUZFMDM0NjgzRjAwMTAzREJCMjAwMkIwMUQwNDINCjoxMDVDRTAwMDdCNjkwNUUwQkE2ODM5NjhGODY4RkZGNzlFRkUwMzQ2RUQNCjoxMDVDRjAwMDE4NDYxQzM3QkQ0NjkwQkQ4MEI1ODRCMDAwQUZGODYwMzMNCjoxMDVEMDAwMEI5NjA3QTYwQkI2ODQwMjI3OTY4Rjg2OEZGRjdDOUZGMUMNCjoxMDVEMTAwMDAzNDYxODQ2MTAzN0JENDY4MEJEODBCNTg0QjAwMEFGM0QNCjoxMDVEMjAwMEY4NjBCOTYwN0E2MEJCNjg2MDIyNzk2OEY4NjhGRkY3NEMNCjoxMDVEMzAwMEI4RkYwMzQ2MTg0NjEwMzdCRDQ2ODBCRDkwQjU4OUIwMDANCjoxMDVENDAwMDAyQUZGODYwQjk2MDdBNjBGQjcwRkI2ODFBNjhCQjY4RTQNCjoxMDVENTAwMDFBNjBGQjY4NUE2OEJCNjg1QTYwRjg2OEZGRjcxREZGNTUNCjoxMDVENjAwMDdCNjg1QTFDQkI2ODlBNjBGQjc4MDNGMDIwMDJCQjY4MTINCjoxMDVENzAwMERBNjA0RkYwRkYzMjdCNjg5MzQyMEVEMUJCNjhEQjY4N0MNCjoxMDVEODAwMDQzRjAwNDAyQkI2OERBNjBGQjc4MUYzM0RCQjIxOTQ2Q0MNCjoxMDVEOTAwMEI4NjhGRkY3ODRGRTc4NjExNUUwRkI3ODAzRjAyMDAzMTQNCjoxMDVEQTAwMDAwMkIwNUQwQkI2ODlBNjg3QjY4MUE0NEJCNjg5QTYwNzANCjoxMDVEQjAwMDdCNjg0RkYwMDAwNEZBNzgwMDkyMUE0NjIzNDZCODY4RDANCjoxMDVEQzAwMEZGRjc3RUZFNzg2MTdCNjkxODQ2MUMzN0JENDY5MEJEQTMNCjoxMDVERDAwMDgwQjU4NEIwMDBBRkY4NjBCOTYwN0E2MDgwMjM3QTY4REINCjoxMDVERTAwMEI5NjhGODY4RkZGN0FBRkYwMzQ2MTg0NjEwMzdCRDQ2QTINCjoxMDVERjAwMDgwQkQ4MEI1ODRCMDAwQUZGODYwQjk2MDdBNjA0RkYwQzQNCjoxMDVFMDAwMEZGMzI3QjY4OTM0MjA1RDA3QjY4MDAyQjAyREE0RkY0QTcNCjoxMDVFMTAwMDgwNjMwNkUwQTAyMzdBNjhCOTY4Rjg2OEZGRjc4RUZGMTANCjoxMDVFMjAwMDAzNDYxODQ2MTAzN0JENDY4MEJEODBCNTgyQjAwMEFGMkUNCjoxMDVFMzAwMDc4NjAzOTYwN0I2ODVCNjgwMDJCMDREMDNCNjgxQTY4MjcNCjoxMDVFNDAwMDdCNjgxQTYwMDNFMDNCNjgxQTY4N0I2ODFBNjAzQjY4RUQNCjoxMDVFNTAwMDVBNjg3QjY4NUE2MDNCNjhEQjY4MDNGMDA0MDMwMDJCRDgNCjoxMDVFNjAwMDA1RDBGRjIxNzg2OEZGRjcxQUZFMDM0NjE1RTAzQjY4NkUNCjoxMDVFNzAwMDlCNjgwMTJCMDlEMDNCNjg5QjY4MDAyQjAyRDE0RkY0MzMNCjoxMDVFODAwMDQwNzMwQUUwNDBGMjAxMzMwN0UwN0I2ODVCNjgwMDJCNTcNCjoxMDVFOTAwMDAyRDE0RkYwMDA0MzAwRTAwMDIzMTg0NjA4MzdCRDQ2MEENCjoxMDVFQTAwMDgwQkQ4MEI0ODNCMDAwQUY3ODYwN0I2ODlCNjgwMDJCQjYNCjoxMDVFQjAwMDBDQkYwMTIzMDAyM0RCQjIxODQ2MEMzN0JENDY1REY4NEENCjoxMDVFQzAwMDA0N0I3MDQ3ODBCNDgzQjAwMEFGNzg2MDdCNjg5QjdCQjUNCjoxMDVFRDAwMDgwMkIwM0QwN0I2ODlCN0JBMDJCMDFEMTAxMjMwMEUwQUENCjoxMDVFRTAwMDAwMjMwM0YwMDEwM0RCQjIxODQ2MEMzN0JENDY1REY4MTINCjoxMDVFRjAwMDA0N0I3MDQ3OTBCNTgzQjAwMEFGNzg2MDdCNjhEQjdCMzQNCjoxMDVGMDAwMDAzRjAwMTAzMDAyQjA1RDA3ODY4MDBGMDQ1RkIwMzQ2NDENCjoxMDVGMTAwMDBDNDYwNEUwN0I2ODlCODk5QkIyNEZGMDAwMDQxODQ2NTYNCjoxMDVGMjAwMDIxNDYwQzM3QkQ0NjkwQkQ4MEI0ODNCMDAwQUY3ODYwODkNCjoxMDVGMzAwMDdCNjg5QjdCMDAyQjBDQkYwMTIzMDAyM0RCQjIxODQ2NDANCjoxMDVGNDAwMDBDMzdCRDQ2NURGODA0N0I3MDQ3ODBCNDgzQjAwMEFGNkENCjoxMDVGNTAwMDc4NjA3QjY4REI3QjAzRjAwNDAzMDAyQjBDQkYwMTIzMUMNCjoxMDVGNjAwMDAwMjNEQkIyMTg0NjBDMzdCRDQ2NURGODA0N0I3MDQ3NTINCjoxMDVGNzAwMDgwQjQ4M0IwMDBBRjc4NjA3QjY4OUI3QkMwMkIwQ0JGODQNCjoxMDVGODAwMDAxMjMwMDIzREJCMjE4NDYwQzM3QkQ0NjVERjgwNDdCQzUNCjoxMDVGOTAwMDcwNDc4MEI0ODNCMDAwQUY3ODYwN0I2ODlCN0I0MDJCRjgNCjoxMDVGQTAwMDBDQkYwMTIzMDAyM0RCQjIxODQ2MEMzN0JENDY1REY4NTkNCjoxMDVGQjAwMDA0N0I3MDQ3ODBCNDgzQjAwMEFGNzg2MDdCNjg5QjdCQzQNCjoxMDVGQzAwMDYwMkIwQ0JGMDEyMzAwMjNEQkIyMTg0NjBDMzdCRDQ2MDMNCjoxMDVGRDAwMDVERjgwNDdCNzA0NzgwQjQ4M0IwMDBBRjc4NjA3QjY4NjUNCjoxMDVGRTAwMDlCN0JBMDJCMENCRjAxMjMwMDIzREJCMjE4NDYwQzM3OTANCjoxMDVGRjAwMEJENDY1REY4MDQ3QjcwNDc4MEI0ODVCMDAwQUZGODYwQTMNCjoxMDYwMDAwMEI5NjA3QTYwMDAyMUZBNjhCQjY4RDMxODAwRDMwMTIxMTcNCjoxMDYwMTAwMDFBNDY3QjY4MUE2MDBCNDYwM0YwMDEwM0RCQjIxODQ2OTANCjoxMDYwMjAwMDE0MzdCRDQ2NURGODA0N0I3MDQ3ODBCNDg1QjAwMEFGN0YNCjoxMDYwMzAwMDc4NjA3QjY4MUI4ODlCQjJGQjgxRkI4OTVCQkE5QkIyNTMNCjoxMDYwNDAwMDE4NDYxNDM3QkQ0NjVERjgwNDdCNzA0NzgwQjQ4NUIwQjANCjoxMDYwNTAwMDAwQUY3ODYwN0I2ODFCNjhGQjYwRkI2ODFCQkExODQ2NjINCjoxMDYwNjAwMDE0MzdCRDQ2NURGODA0N0I3MDQ3OTBCNTg1QjAwMEFGMkUNCjoxMDYwNzAwMDc4NjAwN0YxMDgwMzA4MjI3OTY4MTg0NjAwRjA4RkZGNUUNCjoxMDYwODAwMEQ3RTkwMjM0MUFCQTIzQkExODQ2MTE0NjAzNDYwQzQ2MTkNCjoxMDYwOTAwMDE4NDYyMTQ2MTQzN0JENDY5MEJEOTBCNTg3QjAwMEFGNzUNCjoxMDYwQTAwMEY4NjBCOTYwN0E2MEZCNjgxQjY4MUI3ODAzRjAxRjAzMTcNCjoxMDYwQjAwMEZCNzVGQjY4MUI2ODVBMUNGQjY4MUE2MEZCN0QxNzJCN0QNCjoxMDYwQzAwMDA3RDhGQjdENEZGMDAwMDQ3QTY4QzJFOTAwMzQwMDIzNTINCjoxMDYwRDAwMDVERTBGQjdEMUIyQjhDQkYwMTIzMDAyM0RCQjIwMDJCN0INCjoxMDYwRTAwMDAyRDA0MEYyMDUxMzUyRTBGQjdEMTgzQjAxMjIwMkZBNzgNCjoxMDYwRjAwMDAzRjMzQjYxQkI2OEZBNjgxMjY4OUIxQTFBNDYzQjY5NTYNCjoxMDYxMDAwMDkzNDI4Q0JGMDEyMzAwMjNEQkIyMDAyQjAyRDA0MEYyNkMNCjoxMDYxMTAwMDAxMTMzQ0UwM0I2OTAxMkIwOUQxRkI2ODFCNjgxQjc4MkMNCjoxMDYxMjAwMERCQjI0RkYwMDAwNDdBNjhDMkU5MDAzNDI4RTAzQjY5MzINCjoxMDYxMzAwMDAyMkIwQ0QxRkI2ODFCNjgxODQ2RkZGNzc2RkYwMzQ2NUQNCjoxMDYxNDAwMDlCQjI0RkYwMDAwNDdBNjhDMkU5MDAzNDE4RTAzQjY5NjINCjoxMDYxNTAwMDA0MkIwQkQxRkI2ODFCNjgxODQ2RkZGNzc3RkYwMzQ2M0INCjoxMDYxNjAwMDRGRjAwMDA0N0E2OEMyRTkwMDM0MDlFMEZCNjgxQjY4NUMNCjoxMDYxNzAwMDE4NDZGRkY3N0FGRjAzNDYwQzQ2N0E2OEMyRTkwMDM0RjYNCjoxMDYxODAwMEZCNjgxQTY4M0I2OTFBNDRGQjY4MUE2MDAwMjMxODQ2Q0ENCjoxMDYxOTAwMDFDMzdCRDQ2OTBCRDkwQjU4OUIwMDBBRkY4NjBCOTYwQkUNCjoxMDYxQTAwMDdBNjBGQjY4MUI2ODA3RjExMDAyMTk0NkI4NjhGRkY3QjANCjoxMDYxQjAwMDc0RkZGODYxRkI2OTAwMkIwNEQwN0I2ODAwMjIxQTYwMzENCjoxMDYxQzAwMEZCNjkxM0UwRDdFOTA0MzQxQTQ2N0I2ODFBNjA3QjY4RTANCjoxMDYxRDAwMDFCNjgxOTQ2NEZGMDAwMDJEN0U5MDQzNEEyNDIwOEJGRjkNCjoxMDYxRTAwMDk5NDIwMkQwNEZGNDgwNjMwMEUwMDAyMzE4NDYyNDM3MjANCjoxMDYxRjAwMEJENDY5MEJEODBCNDgzQjAwMEFGMDM0NkZCNzFGQjc5MTANCjoxMDYyMDAwMDYwMkIwQUQwRkI3OTQwMkIwN0QwRkI3OTgwMkIwNEQwODANCjoxMDYyMTAwMEZCNzlBMDJCMDFEMDAxMjMwMEUwMDAyMzAzRjAwMTAzNTANCjoxMDYyMjAwMERCQjIxODQ2MEMzN0JENDY1REY4MDQ3QjcwNDcwMDAwQjINCjoxMDYyMzAwMDgwQjU4NkIwMDBBRjc4NjA3QjY4MUI2ODdCNjE3QjY4NDcNCjoxMDYyNDAwMEZGMjI5QTczN0I2ODVBNjg3QjY5MUI2ODlBNDIwMkQxNjUNCjoxMDYyNTAwMDQwRjIwMTEzRUVFMDdCNjg1QjY4MUI3OEZCNzRGQjdDMEINCjoxMDYyNjAwMDIzRjAxRjAzQkI3NDdCNjhCQTdDOUE3MzdCNjgwMDIyOUYNCjoxMDYyNzAwMERBNzNGQjdDMDNGMDFGMDNGQjc0RkI3QzlBQjI3QjY4MzANCjoxMDYyODAwMDlBODFGQjdDMUIyQjJGRDlGQjdDMUYyQjE0QkYwMTIzNzYNCjoxMDYyOTAwMDAwMjNEQkIyMDAyQjA4RDBCQjdDRTAyQjAyRDE0MEYyMDQNCjoxMDYyQTAwMDAzMTNDN0UwNDBGMjA1MTNDNEUwQkI3QzE4NDZGRkY3QjgNCjoxMDYyQjAwMEExRkYwMzQ2ODNGMDAxMDNEQkIyMDAyQjBCRDA3QjY4MDgNCjoxMDYyQzAwMERCN0I0M0YwMDQwM0RBQjI3QjY4REE3MzdCNjhCQTdDNjkNCjoxMDYyRDAwMDlBNzMwMDIzQUVFMEJCN0NFMDJCMDJEMTRGRjQ4MTczQjQNCjoxMDYyRTAwMEE4RTA0MEYyMDUxM0E1RTBGQjdDMTcyQjA1RDlGQjdDNDkNCjoxMDYyRjAwMDE4M0IwMTIyMDJGQTAzRjMwMEUwMDAyM0ZCNjBGQjY4NzUNCjoxMDYzMDAwMDAxMzM3QTY5MTI2ODExNDY3QTY4NTI2ODhBMUE5MzQyOTANCjoxMDYzMTAwMDAyRDk0MEYyMDExMzhERTBCQjdDNUIwOUZCNzJGQjdBNzINCjoxMDYzMjAwMDAxMkIwQUQxN0I2OERCN0I0M0YwMDIwM0RBQjI3QjY4ODYNCjoxMDYzMzAwMERBNzM3QjY4MDAyMjlBNzM1NkUwRkI3QTA3MkI1M0QxRkQNCjoxMDYzNDAwMEZCN0MxNDNCMEIyQjRERDgwMUEyNTJGODIzRjAwMEJGNkQNCjoxMDYzNTAwMDgxNjMwMTA4OUQ2MzAxMDg5RDYzMDEwODlENjMwMTA4MzUNCjoxMDYzNjAwMEE5NjMwMTA4OUQ2MzAxMDg4RjYzMDEwODhGNjMwMTA4MTkNCjoxMDYzNzAwMEQ1NjMwMTA4RDU2MzAxMDhENTYzMDEwOEQ1NjMwMTA4MTkNCjoxMDYzODAwMDdCNjgwMDIyOUE4MTdCNjhGNTIyOUE3MzJBRTA3QjY4RjkNCjoxMDYzOTAwMERCN0I0M0YwMDEwM0RBQjI3QjY4REE3MzdCNjg1QjY4MEUNCjoxMDYzQTAwMDFBNzg3QjY4OUE3MzFERTA3QjY4NUI2ODAxMzMxQjc4MDENCjoxMDYzQjAwMDlBQjI3QjY4OUE4MTdCNjg5Qjg5MUYyQjk0QkYwMTIzQ0INCjoxMDYzQzAwMDAwMjNEQkIyMDAyQjBDRDA3QjY4RkYyMjlBNzM0RkY0QzINCjoxMDYzRDAwMDgzNzMyRkUwMTk0QjFBNEE0MEYyMTkxMTE5NDgwMEYwNDMNCjoxMDYzRTAwMDY3RkQwMEJGMDAyMzI1RTBGQjdDMTcyQjAxRDgwMDIzQUQNCjoxMDYzRjAwMDIwRTBGQjdDMTgyQjA3RDE3QjY4NUI2ODAxMzMxQjc4OUUNCjoxMDY0MDAwMDlBQjI3QjY4OUE4MTE0RTBGQjdDMTkyQjBBRDE3QjY4RDUNCjoxMDY0MTAwMDVCNjgwMTMzMTg0NkZGRjcwOEZFMDM0NjFBNDY3QjY4OUYNCjoxMDY0MjAwMDlBODEwNkUwN0I2OERCN0I0M0YwMDEwM0RBQjI3QjY4OEMNCjoxMDY0MzAwMERBNzMwMDIzMTg0NjE4MzdCRDQ2ODBCREI0OUUwMTA4QTQNCjoxMDY0NDAwMEVDQzMwMTA4Qjg5RTAxMDg4MEI1ODJCMDAwQUY3ODYwNDcNCjoxMDY0NTAwMDdCNjg5QjY4QjNGMUZGM0YxOEQxN0I2ODVBNjg3QjY4MDMNCjoxMDY0NjAwMDFCNjgxQjY4OUE0MjExRDA3QjY4NUI2ODFCNzhGRjJCMDYNCjoxMDY0NzAwMDBDRDE3QjY4NUI2ODVBMUM3QjY4NUE2MDdCNjhGRjIyODINCjoxMDY0ODAwMDlBNzM3QjY4MDAyMjlBNjAwMDIzMDNFMDc4NjhGRkY3MjQNCjoxMDY0OTAwMENGRkUwMzQ2MTg0NjA4MzdCRDQ2ODBCRDgwQjU4MkIwQTINCjoxMDY0QTAwMDAwQUY3ODYwN0I2ODlCNjhCM0YxRkYzRjExRDA3QjY4RDkNCjoxMDY0QjAwMDlCN0JDMDJCMEREMDdCNjg5QjY4NUExRTdCNjg5QTYwQzMNCjoxMDY0QzAwMDdCNjg5QjY4MDAyQjA0RDE3QjY4RkYyMjlBNzMwMDIzQjINCjoxMDY0RDAwMDAzRTA3ODY4RkZGN0I4RkYwMzQ2MTg0NjA4MzdCRDQ2NjMNCjoxMDY0RTAwMDgwQkQwMDAwOTBCNTg3QjAwMEFGNzg2MDdCNjgxODFENTQNCjoxMDY0RjAwMDdCNjgxQjY4MUI2ODA3RjEwODAyMTk0NkZGRjdDREZEOTINCjoxMDY1MDAwMDc4NjE3QjY5MDAyQjA2RDAxRTRCMUY0QTQwRjI0OTExNkYNCjoxMDY1MTAwMDFFNDgwMEYwQ0RGQzdCNjg5QjdCNDAyQjAzRDA3QjY4NDINCjoxMDY1MjAwMDlCN0I2MDJCMjVEMUQ3RTkwMjM0MTk0NjRGRjAwMDAyM0UNCjoxMDY1MzAwMEQ3RTkwMjM0QTI0MjA4QkY5OTQyMDZEMDE0NEIxMjRBNEUNCjoxMDY1NDAwMDRGRjRBNjcxMTE0ODAwRjBCM0ZDN0I2OERCN0IwM0YwQ0QNCjoxMDY1NTAwMDA0MDMwMDJCMDZEMDBGNEIwQjRBNDBGMjREMTEwQjQ4QTENCjoxMDY1NjAwMDAwRjBBNkZDN0I2ODVBNjhEN0U5MDIzNDFBNDQ3QjY4QkQNCjoxMDY1NzAwMDVBNjA3ODY4RkZGNzkyRkYwMzQ2MTg0NjFDMzdCRDQ2RkQNCjoxMDY1ODAwMDkwQkQwMEJGQ0M5RTAxMDhGQ0MzMDEwOEI4OUUwMTA4NjUNCjoxMDY1OTAwMEUwOUUwMTA4RkM5RTAxMDg5MEI1ODNCMDAwQUY3ODYwRDINCjoxMDY1QTAwMDdCNjhEQjdCMDNGMDAxMDMwMDJCMEVEMTdCNjg5QjdCQjgNCjoxMDY1QjAwMEZBMkIwQUQwN0I2ODlCN0JGQjJCMDZEMDIzNEIyNDRBMEINCjoxMDY1QzAwMDQwRjI2MTExMjM0ODAwRjA3M0ZDN0I2ODVCNjgxQjc4MjQNCjoxMDY1RDAwMDAzRjAxRjAzMUEyQjBERDA3QjY4NUI2ODFCNzgwM0YwNTgNCjoxMDY1RTAwMDFGMDMxQjJCMDZEMDFDNEIxOTRBNDBGMjY1MTExOTQ4OUENCjoxMDY1RjAwMDAwRjA1RUZDN0I2ODVCNjgxQjc4MDNGMDAxMDMwMDJCRjYNCjoxMDY2MDAwMDA5RDE3QjY4NUI2ODAxMzMxODQ2RkZGNzFGRkQwMzQ2MUQNCjoxMDY2MTAwMDRGRjAwMDA0MTVFMDdCNjg1QjY4MUI3ODAzRjAxRjAzRjQNCjoxMDY2MjAwMDFCMkIwNkQwMEQ0QjBBNEE0MEYyNjkxMTA5NDgwMEYwQjUNCjoxMDY2MzAwMDNGRkM3QjY4NUI2ODAxMzMxODQ2RkZGNzE2RkQwMzQ2OTUNCjoxMDY2NDAwMDBDNDYxODQ2MjE0NjBDMzdCRDQ2OTBCRDMwOUYwMTA4QzgNCjoxMDY2NTAwMDEwQzQwMTA4Qjg5RTAxMDhBODlGMDEwODA4QTAwMTA4RkQNCjoxMDY2NjAwMDgwQjU4NEIwMDBBRkY4NjBCOTYwN0E2MDNCNjAwODIyMDINCjoxMDY2NzAwMDAwMjEzODY4MDBGMEI3RkNGQTY4QkI2ODFBNDQzQjY4MzANCjoxMDY2ODAwMDFBNjAzQjY4N0E2ODVBNjBCQjY5M0E2ODFBNjBCQjY5RUQNCjoxMDY2OTAwMEZBNjg1QTYwQkI2OTAxMjI5QTYwQjg2OUZGRjdDOEZEQzENCjoxMDY2QTAwMDAzNDYxODQ2MTAzN0JENDY4MEJEMDAwMDgwQjU4MkIwNTUNCjoxMDY2QjAwMDAwQUY3ODYwN0I2ODlCN0JGRjJCMDZEMTExNEIxMjRBQTENCjoxMDY2QzAwMDQwRjJEOTExMTE0ODAwRjBGM0ZCN0I2ODlCN0IxODQ2MjANCjoxMDY2RDAwMEZGRjc5MEZEMDM0NjAwMkIwNkQxMEQ0QjBBNEE0RkY0RkQNCjoxMDY2RTAwMEVENzEwQTQ4MDBGMEU0RkI3QjY4OUI2ODAwMkIwMUQxNDgNCjoxMDY2RjAwMDAzMjMwM0UwNzg2OEZGRjdGNUZFMDM0NjE4NDYwODM3RTINCjoxMDY3MDAwMEJENDY4MEJEMzhBMDAxMDgzNEM0MDEwOEI4OUUwMTA4MDgNCjoxMDY3MTAwMDU0QTAwMTA4ODBCNTg4QjAwMEFGNzg2MDM5NjA3QjY4MEMNCjoxMDY3MjAwMDlCN0IxODQ2RkZGNzY2RkQwMzQ2MDAyQjA0RDA3ODY4NzQNCjoxMDY3MzAwMEZGRjdEOEZFMDM0NjQ2RTA3ODY4RkZGN0MzRkIwMzQ2NDENCjoxMDY3NDAwMDgzRjAwMTAzREJCMjAwMkIwQkQwNEZGMEZGMzNCQjYwQjMNCjoxMDY3NTAwMDA3RjEwODAyN0I2ODAwMjE3ODY4MDBGMEY1RkEwMzQ2MkINCjoxMDY3NjAwMDMxRTAzQjY4MDAyQjAyRDE0MEYyMDE0MzJCRTAwN0YxRkUNCjoxMDY3NzAwMDBDMDMxOTQ2Nzg2ODAwRjA2QkY4Rjg2MUZCNjkwMDJCOTANCjoxMDY3ODAwMDBGRDBGQjY5MUZFMDNCNjg1QTFFMDdGMTBDMDMxMTQ2NEUNCjoxMDY3OTAwMDE4NDZGRkY3QkZGRkY4NjFGQjY5MDAyQjAxRDBGQjY5Q0ENCjoxMDY3QTAwMDExRTAwN0YxMEMwMzE4NDZGRkY3N0JGQjAzNDY4M0YwNkINCjoxMDY3QjAwMDAxMDNEQkIyMDAyQkU2RDEwN0YxMEMwMzE5NDY3ODY4MjANCjoxMDY3QzAwMDAwRjBDRUY4MDM0NjE4NDYyMDM3QkQ0NjgwQkQwMDAwRDUNCjoxMDY3RDAwMDgwQjU4MkIwMDBBRjc4NjA3QjY4OUI3QkZGMkIwNkQxRDENCjoxMDY3RTAwMDBCNEIwQzRBNEZGNDAzNzEwQjQ4MDBGMDYxRkI3QjY4QzQNCjoxMDY3RjAwMDlCNjgwMDJCMDFEMTAzMjMwNUUwNEZGNDgwNjE3ODY4OEENCjoxMDY4MDAwMEZGRjc4OEZGMDM0NjE4NDYwODM3QkQ0NjgwQkQwMEJGMjYNCjoxMDY4MTAwMDM4QTAwMTA4NTBDNDAxMDhCODlFMDEwODgwQjU4NEIwQjINCjoxMDY4MjAwMDAwQUY3ODYwMDhFMDc4NjhGRkY3NDBGRkY4NjBGQjY4MjkNCjoxMDY4MzAwMDAwMkIwMUQwRkI2ODA2RTA3ODY4RkZGNzk5RkIwMzQ2NjANCjoxMDY4NDAwMDAwMkJGMEQxMDAyMzE4NDYxMDM3QkQ0NjgwQkQwMDAwNTQNCjoxMDY4NTAwMDkwQjU4N0IwMDBBRjc4NjAzOTYwNzg2OEZGRjczMkZCOTkNCjoxMDY4NjAwMDAzNDYwMDJCMDZEMTNBNEIzQTRBNDBGMjRCMjEzQTQ4QjQNCjoxMDY4NzAwMDAwRjAxRUZCM0E2ODdCNjgxNDQ2MEZDQjg0RTgwRjAwREINCjoxMDY4ODAwMDdCNjhEQjdCMDNGMDA0MDMwMDJCMDlEMDNCNjg0RkYwRUYNCjoxMDY4OTAwMEZGMzI5QTYwM0I2ODVCNjg1QTFDM0I2ODVBNjA0RkUwNjUNCjoxMDY4QTAwMDNCNjgxODFEM0I2ODFCNjgxQjY4MDdGMTA4MDIxOTQ2MDYNCjoxMDY4QjAwMEZGRjdGM0ZCNzg2MTdCNjkwMDJCMDZEMDI3NEIyNTRBNTUNCjoxMDY4QzAwMDRGRjQxNTcxMjQ0ODAwRjBGM0ZBRDdFOTAyMzQxQTQ2NjANCjoxMDY4RDAwMDNCNjg5QTYwM0I2ODlCNjgxOTQ2NEZGMDAwMDJEN0U5MTUNCjoxMDY4RTAwMDAyMzRBMjQyMDhCRjk5NDIwNkQxRDdFOTAyMzQwMDJDRjMNCjoxMDY4RjAwMDA4QkZCM0YxRkYzRjA2RDE3QjY4NUE2ODNCNjg1QTYwMTYNCjoxMDY5MDAwMDRGRjQ4MDYzMjBFMDNCNjg5QjdCQTAyQjBGRDEzQjY4NUENCjoxMDY5MTAwMDlCNjgwMDJCMDZEQTdCNjg1QTY4M0I2ODVBNjA0RkY0MjQNCjoxMDY5MjAwMDgwNjMxMUUwM0I2ODlCNjg1QTAwM0I2ODlBNjBEN0U5MzYNCjoxMDY5MzAwMDAyMzQyMzQzMDREMTNCNjhGRjIyOUE3MzAwMjMwM0UwMEYNCjoxMDY5NDAwMDM4NjhGRkY3ODFGRDAzNDYxODQ2MUMzN0JENDY5MEJERTkNCjoxMDY5NTAwMDZDQTAwMTA4NjRDNDAxMDhCODlFMDEwOENDOUUwMTA4MUYNCjoxMDY5NjAwMDgwQjU4MkIwMDBBRjc4NjAzOTYwNzg2OEZGRjdBQUZBMjYNCjoxMDY5NzAwMDAzNDYwMDJCMDZEMTBGNEIwRjRBNEZGNDFGNzEwRjQ4RUYNCjoxMDY5ODAwMDAwRjA5NkZBM0I2ODlCN0JGRjJCMDZEMDBDNEIwQTRBMjMNCjoxMDY5OTAwMDQwRjI3RDIxMDk0ODAwRjA4QkZBM0I2ODVBNjg3QjY4MTkNCjoxMDY5QTAwMDVBNjA3ODY4RkZGNzdBRkQwMzQ2MTg0NjA4MzdCRDQ2RjcNCjoxMDY5QjAwMDgwQkQwMEJGNkNBMDAxMDg4MEM0MDEwOEI4OUUwMTA4MUENCjoxMDY5QzAwMDg4QTAwMTA4OTBCNTg1QjAwMEFGNzg2MDM5NjA3ODY4MUMNCjoxMDY5RDAwMEZGRjdBQUZBMDM0NjAwMkIwNkQxMjM0QjIzNEE0MEYyQzUNCjoxMDY5RTAwMDU5MzEyMzQ4MDBGMDY0RkE3ODY4RkZGNzgzRkFDN0U5NjENCjoxMDY5RjAwMDAyMDE3QjY4REI3QjAzRjAwMjAzMDAyQjFBRDBEN0U5OEUNCjoxMDZBMDAwMDAyMzQ2RkYwMDA0MTRGRjAwMDAyQTI0MjA4QkY5OTQyRTkNCjoxMDZBMTAwMDM0QkYwMTIzMDAyM0RCQjIwMDJCMDJEMDRGRjQ4MDYzOEMNCjoxMDZBMjAwMDFFRTBCQTY4M0I2ODFBNjAzQjY4MUI2OERBNDMzQjY4NDMNCjoxMDZBMzAwMDFBNjAxNEUwRDdFOTAyMzQ2RkYwMDA0MTRGRjAwMDAyMTENCjoxMDZBNDAwMEEyNDIwOEJGOTk0MjM0QkYwMTIzMDAyM0RCQjIwMDJCQ0UNCjoxMDZBNTAwMDAyRDA0RkY0ODA2MzAzRTBCQTY4M0I2ODFBNjAwMDIzRjkNCjoxMDZBNjAwMDE4NDYxNDM3QkQ0NjkwQkRBQ0EwMDEwODlDQzQwMTA4NkYNCjoxMDZBNzAwMEI4OUUwMTA4ODBCNTgyQjAwMEFGNzg2MDM5NjAzQjY4OEQNCjoxMDZBODAwMDRGRjBGRjMyMUE2MDAwMjMzQTY4MDAyMTc4NjgwMEYwNjYNCjoxMDZBOTAwMDVCRjkwMzQ2MTg0NjA4MzdCRDQ2ODBCRDgwQjU4MkIwMTUNCjoxMDZBQTAwMDAwQUY3ODYwNzg2OEZGRjc1MEZBMDM0NjgzRjAwMTAzN0YNCjoxMDZBQjAwMERCQjIwMDJCMEJEMDdCNjg1QjY4NUExQzdCNjg1QTYwOEENCjoxMDZBQzAwMDdCNjhEQjdCNDNGMDAyMDNEQUIyN0I2OERBNzMwMEJGREENCjoxMDZBRDAwMDA4MzdCRDQ2ODBCRDgwQjU4NkIwMDBBRkY4NjBCOTYwQUMNCjoxMDZBRTAwMDdBNjBGQjY4REI3QjAzRjAwMjAzMDAyQjA2RDBGODY4QkENCjoxMDZBRjAwMEZGRjcyQkZBMDM0NjAwMkIwM0QwMTZFMEY4NjhGRkY3RTgNCjoxMDZCMDAwMENERkZGQjY4NUE2OEZCNjgxQjY4MUI2ODlBNDIwMkQxN0MNCjoxMDZCMTAwMDQwRjIwMTEzNEZFMEZCNjg1QjY4MUI3OEZGMkIwRkQxM0QNCjoxMDZCMjAwMEZCNjg1QjY4NUExQ0ZCNjg1QTYwQkI2ODAwMjIxQTYwRUQNCjoxMDZCMzAwMDdCNjgwMDIyMUE2MEY4NjhGRkY3QjBGQzAzNDYzQUUwNzENCjoxMDZCNDAwMEZCNjg1QjY4MUI3ODAzRjBFMDAzRkE2ODkyN0I5MzQyNzINCjoxMDZCNTAwMDJGRDFGQjY4MTg2OEZCNjgwNDMzN0E2ODE5NDZGRkY3ODENCjoxMDZCNjAwMDFBRkI3ODYxN0I2OTAwMkIwMUQwN0I2OTIzRTA3QjY4OEQNCjoxMDZCNzAwMDFCNjhGQTY4MTI2ODEyNjgxMTQ2RkE2ODUyNjg4QTFBMjUNCjoxMDZCODAwMDkzNDIwMkQ5NDBGMjAxMTMxNUUwRkI2ODVBNjhCQjY4RDINCjoxMDZCOTAwMDFBNjBGQjY4NUE2ODdCNjgxQjY4MUE0NEZCNjg1QTYwNzUNCjoxMDZCQTAwMEZCNjhEQjdCNDNGMDAyMDNEQUIyRkI2OERBNzMwMDIzOTUNCjoxMDZCQjAwMDAxRTA0RkY0ODI3MzE4NDYxODM3QkQ0NjgwQkQ4MEI0OUINCjoxMDZCQzAwMDg1QjAwMEFGRjg2MEI5NjA3QTYwMDEyMzE4NDYxNDM3QzkNCjoxMDZCRDAwMEJENDY1REY4MDQ3QjcwNDc4MEI1ODRCMDAwQUZGODYwQjcNCjoxMDZCRTAwMEI5NjA3QTYwN0E2OEI5NjhGODY4MDBGMEM5RjkwMzQ2NTQNCjoxMDZCRjAwMDAwMkIwQ0JGMDEyMzAwMjNEQkIyMTg0NjEwMzdCRDQ2MjMNCjoxMDZDMDAwMDgwQkQ4MEI1ODRCMDAwQUZGODYwQjk2MDdBNjA3QTY4MDINCjoxMDZDMTAwMEI5NjhGODY4MDBGMEMzRjkwMzQ2MTg0NjEwMzdCRDQ2NTYNCjoxMDZDMjAwMDgwQkQwMDAwOTBCNThGQjAwMEFGRjg2MEI5NjA3QTYwQTkNCjoxMDZDMzAwMDNCNjBGODY4RkZGN0FERjkwMzQ2MDAyQjBDRDFGODY4MEMNCjoxMDZDNDAwMEZGRjdCOEY5MDM0NjAwMkIwNkQxM0M0QjNDNEE0MEYyMTMNCjoxMDZDNTAwMDM3NDEzQzQ4MDBGMDJDRjkwMDIzN0I2M0JCNkMwMDJCRDANCjoxMDZDNjAwMDAyRDEwN0YxMjAwM0JCNjRCQTZDRkI2ODE0NDYwRkNCNUENCjoxMDZDNzAwMDg0RTgwRjAwM0I2ODAxMjIxQTcwMDdGMTE0MDIwN0YxNDMNCjoxMDZDODAwMDFDMDMxOTQ2Qjg2Q0ZGRjcyNkZGMzg2MzNCNkIwMDJCREINCjoxMDZDOTAwMDAxRDAzQjZCNEVFMEZCNjkwMDJCMDREMTNCNjgxQjc4QjUNCjoxMDZDQTAwMDAwMkIyQ0QxNDJFMDdCNjkwN0YxMTgwMjE5NDY3ODZCNjINCjoxMDZDQjAwMEZGRjdBMkY5MDM0NjAwMkIwMkQwNEZGNDgwNjMzOUUwQkUNCjoxMDZDQzAwMDNCNjgxQjc4MDAyQjE0RDA3QjY4MUE2OEJCNjk5QTQyMUENCjoxMDZDRDAwMDBGRDNCQTY4N0I2QkQwMThGOTY5N0E2OUZCNkM5ODQ3NTcNCjoxMDZDRTAwMDAzNDYwMDJCMTRCRjAxMjMwMDIzREFCMjNCNjgxQTcwNUQNCjoxMDZDRjAwMDAyRTAzQjY4MDAyMjFBNzBCQjY5N0I2M0JERTc3QjY4REENCjoxMDZEMDAwMDFCNjg3QTZCOUE0MjExRDIwMDIzM0I3NEJBNjg3QjZCODINCjoxMDZEMTAwMEQwMTgwN0YxMTAwMUZCNkMwMTIyOTg0NzAzNDYwMDJCQTUNCjoxMDZEMjAwMDE0QkYwMTIzMDAyM0RBQjIzQjY4MUE3MDdCNjg3QTZCQzgNCjoxMDZEMzAwMDFBNjAwMDIzMTg0NjNDMzdCRDQ2OTBCRDA4QTEwMTA4RTMNCjoxMDZENDAwMEI4QzQwMTA4Qjg5RTAxMDg4MEI1ODhCMDAyQUZGODYwRTkNCjoxMDZENTAwMEI5NjA3QTYwM0I2MEJCNjgwMDJCMDFEMDBGNEIwMEUwNEMNCjoxMDZENjAwMDBGNEIwN0YxMTMwMjAxOTMzQjY4MDA5MzEzNDY3QTY4QjcNCjoxMDZENzAwMEI5NjhGODY4RkZGNzU2RkY3ODYxN0I2OTAwMkIwN0QxODcNCjoxMDZEODAwMEZCN0MwMDJCMDFEMDAwMjMwM0UwNEZGMDAwNDMwMEUwMjgNCjoxMDZEOTAwMDdCNjkxODQ2MTgzN0JENDY4MEJEMDBCRjAzNkMwMTA4RUINCjoxMDZEQTAwMEJGNkIwMTA4ODBCNThBQjAwMkFGRjg2MEI5NjA3QTYwNDUNCjoxMDZEQjAwMEY4NjhGRkY3MTBGOTAzNDYwMDJCMDZEMTM4NEIzOTRBMjMNCjoxMDZEQzAwMDQwRjIxOTUxMzg0ODAwRjA3M0Y4Qjg2OEYxRjdDNkZCODMNCjoxMDZERDAwMEI4NjE3OTY4Rjg2OEZGRjczQkZERjg2MUZCNjkwMDJCNDMNCjoxMDZERTAwMDRCRDEzQ0UwNzg2OEZGRjcxOUZERjg2MUZCNjkwMDJCOTcNCjoxMDZERjAwMDQ1RDE3ODY4RkZGN0RFRjgwMzQ2MDAyQjFBRDBCQjY5NEYNCjoxMDZFMDAwMDNCNjEwN0YxMTcwMTA3RjExMDAyMjg0QjAxOTM3QjY4RTINCjoxMDZFMTAwMDAwOTMwQjQ2Qjk2ODc4NjhGRkY3MDRGRkY4NjFGQjY5RDcNCjoxMDZFMjAwMDAwMkIyRUQxRkI3RDAwMkIwQkQwNzg2OEZGRjcwMEZBRUENCjoxMDZFMzAwMDAzNDYzMUUwNzg2OEZGRjdDQkZDRjg2MUZCNjkwMDJCNzMNCjoxMDZFNDAwMDIxRDE3ODY4RkZGN0VBRkNGODYxRkI2OTAwMkIxQ0QxQkYNCjoxMDZFNTAwMDc4NjhGRkY3QkRGQ0Y4NjFGQjY5MDAyQjE3RDE3ODY4RjMNCjoxMDZFNjAwMEZGRjcxRkY4MDM0NjgzRjAwMTAzREJCMjAwMkJCOUQxMTMNCjoxMDZFNzAwMDdCNjhGRjIyOUE3MzAwMjMwRUUwMDBCRjA4RTAwMEJGOEENCjoxMDZFODAwMDA2RTAwMEJGMDRFMDAwQkYwMkUwMDBCRjAwRTAwMEJGN0ENCjoxMDZFOTAwMDdCNjhGRjIyOUE3M0ZCNjkxODQ2MjAzN0JENDY4MEJEODgNCjoxMDZFQTAwMDUwQTEwMTA4RDBDNDAxMDhCODlFMDEwOEQ5NkIwMTA4OUYNCjoxMDZFQjAwMDFGQjUxQzQ2MDk0QjFCNjgwNTQ2RDg2ODUyQjEwODRCRTQNCjoxMDZFQzAwMDAwOTFDREU5MDEzMjA3NDkyQjQ2MjI0NjAwRjAyMkY4MTUNCjoxMDZFRDAwMDAxRjA4Q0Y4MDQ0QjFBNDZGMkU3MDBCRjU4MDEwMDIwN0QNCjoxMDZFRTAwMEVBQzQwMTA4RjdDNDAxMDhBQ0EzMDEwODA4QjUwNzRCQzANCjoxMDZFRjAwMDA0NDYxM0IxMDAyMUFGRjMwMDgwMDU0QjE4Njg4MzZBODQNCjoxMDZGMDAwMDAzQjE5ODQ3MjA0NjAyRjBBREZEMDBCRjAwMDAwMDAwMkQNCjoxMDZGMTAwMDI4QzUwMTA4MEVCNDAzQjUwMTQ2MDNBQjA1NDg1M0Y4NzQNCjoxMDZGMjAwMDA0MkIwMDY4MDE5MzAwRjA4RkY4MDJCMDVERjgwNEVCQzkNCjoxMDZGMzAwMDAzQjA3MDQ3NTgwMTAwMjA3MEI1MEQ0RTBENENBNDFCRDYNCjoxMDZGNDAwMEE0MTAwMDI1QTU0MjA5RDEwQjRFMEM0QzAyRjA4Q0ZEN0INCjoxMDZGNTAwMEE0MUJBNDEwMDAyNUE1NDIwNUQxNzBCRDU2RjgyNTMwMEMNCjoxMDZGNjAwMDk4NDcwMTM1RUVFNzU2RjgyNTMwOTg0NzAxMzVGMkU3QTYNCjoxMDZGNzAwMEU4QzcwMTA4RThDNzAxMDhFOEM3MDEwOEVDQzcwMTA4MkQNCjoxMDZGODAwMDMwQjUwMDI0QTI0MjAxRDEwMDIwMDdFMDAzNUQwMTM0QTYNCjoxMDZGOTAwMDBEMTkxNUY4MDE1Q0FCNDJGNEQwNTgxQjMwQkQxMEI1OEINCjoxMDZGQTAwMDQzMUUwQTQ0OTE0MjAwRDExMEJEMTFGODAxNEIwM0Y4NzENCjoxMDZGQjAwMDAxNEZGN0U3ODg0MjEwQjUwMUVCMDIwMzA3RDg0MjFFRTQNCjoxMDZGQzAwMDk5NDIwQUQwMTFGODAxNEIwMkY4MDE0RkY4RTc4MzQyQzkNCjoxMDZGRDAwMEY1RDk4MTE4RDIxQUQzNDIwMEQxMTBCRDEzRjgwMTRENTINCjoxMDZGRTAwMDAxRjgwMTRERjdFNzAyNDQwMzQ2OTM0MjAwRDE3MDQ3OTANCjoxMDZGRjAwMDAzRjgwMTFCRjlFNzkzNjgwMTNCMDAyQjEwQjQ5MzYwODENCjoxMDcwMDAwMDA4REE5NDY5QTM0MjAxREIwQTI5MDNEMTVERjgwNDRCMzUNCjoxMDcwMTAwMDAwRjAyQ0JGMTM2ODU4MUMxMDYwMTk3MDA4NDY1REY4MEENCjoxMDcwMjAwMDA0NEI3MDQ3RjhCNTA2NDYwRjQ2MTQ0NkQ1MThBQzQyRDcNCjoxMDcwMzAwMDAxRDEwMDIwMDdFMDNBNDYxNEY4MDExQjMwNDZGRkY3NjMNCjoxMDcwNDAwMERBRkY0MzFDRjNEMUY4QkQyREU5RjA0RjBDNDY5REIwOUINCjoxMDcwNTAwMDE3NDYxRDQ2MDY0NjE4QjE4MzY5MEJCOTAxRjAwNEZGQjcNCjoxMDcwNjAwMDdDNEI5QzQyNThEMTc0NjhBMzg5MTgwNzVFRDUyMzY5NkMNCjoxMDcwNzAwMDAwMkI1QkQwMDAyMzA5OTMyMDIzOERGODI5MzAzMDIzODcNCjoxMDcwODAwMDhERjgyQTMwMDM5NTRGRjAwMTBCQjg0NjQ1NDYxNUY4QTgNCjoxMDcwOTAwMDAxM0IwQkIxMjUyQjU0RDFCOEVCMDcwQTBCRDA1MzQ2NUINCjoxMDcwQTAwMDNBNDYyMTQ2MzA0NkZGRjdCREZGMDEzMDAwRjBDMjgwNkUNCjoxMDcwQjAwMDA5OUI1MzQ0MDk5Mzk4RjgwMDMwMDAyQjAwRjBCQTgwRTQNCjoxMDcwQzAwMDAwMjM0RkYwRkYzMkNERTkwNTIzMDQ5MzA3OTM4REY4OTkNCjoxMDcwRDAwMDUzMzAxQTkzQTg0NjA1MjIxOEY4MDExQjVFNDhGMUY3QjENCjoxMDcwRTAwMDQ3RkEwNDlCNzhCQkQ5MDY0NEJGMjAyMjhERjg1MzIwNzENCjoxMDcwRjAwMDFBMDc0NEJGMkIyMjhERjg1MzIwMkE3ODJBMkEyQUQwMzcNCjoxMDcxMDAwMDA3OUFBODQ2MDAyMDBBMjU0MTQ2MTFGODAxM0IzMDNCNkENCjoxMDcxMTAwMDA5MkI2OUQ5NjBCMzI0RTA1MDRCOUM0MjAxRDFCNDY4N0INCjoxMDcxMjAwMEEyRTc0RjRCOUM0MjA4QkZGNDY4OURFNzIxNDYzMDQ2REENCjoxMDcxMzAwMDAwRjBFRUZFMDAyODlERDA0RkYwRkYzMDFEQjBCREU4RkUNCjoxMDcxNDAwMEYwOEZBODQ2QTJFNzQ0NEE4MDFBMEJGQTAwRjAxODQzRDENCjoxMDcxNTAwMDA0OTA0NTQ2QkVFNzAzOUExMTFEMTI2ODAzOTEwMDJBNjgNCjoxMDcxNjAwMDAxREIwNzkyMDRFMDUyNDI0M0YwMDIwMzA3OTIwNDkzQ0ENCjoxMDcxNzAwMDk4RjgwMDMwMkUyQjBFRDE5OEY4MDEzMDJBMkIzOEQxRjgNCjoxMDcxODAwMDAzOUIxQTFEMUI2ODAzOTIwMDJCQjhCRjRGRjBGRjMzRkYNCjoxMDcxOTAwMDA4RjEwMjA4MDU5MzMzNEQ5OEY4MDAxMDAzMjIyODQ2QTENCjoxMDcxQTAwMEYxRjdFNkY5NDBCMTQwMjM0MDFCMDNGQTAwRjAwNDlCREQNCjoxMDcxQjAwMDAzNDMwOEYxMDEwODA0OTM5OEY4MDAxMDJBNDg4REY4NTkNCjoxMDcxQzAwMDI4MTAwNjIyMDhGMTAxMDdGMUY3RDJGOTAwMjgzN0QwN0MNCjoxMDcxRDAwMDI2NEIxQkJCMDM5QjA3MzMyM0YwMDcwMzA4MzMwMzkzQTINCjoxMDcxRTAwMDA5OUI0QjQ0MDk5MzUwRTcwNUZCMDIzMjAxMjA4ODQ2NzYNCjoxMDcxRjAwMDhBRTcwMDIzMDhGMTAxMDgwNTkzMTk0NjBBMjU0MDQ2NEQNCjoxMDcyMDAwMDEwRjgwMTJCMzAzQTA5MkEwM0Q5MDAyQkMzRDAwNTkxN0QNCjoxMDcyMTAwMEMxRTcwNUZCMDEyMTAxMjM4MDQ2RjBFNzAzQUIwMDkzQTINCjoxMDcyMjAwMDIyNDYxMzRCMDRBOTMwNDYwMEYwQjhGOEIwRjFGRjNGRjYNCjoxMDcyMzAwMDgxNDZENUQxQTM4OTVCMDYzRkY1N0VBRjA5OTg3REU3RUUNCjoxMDcyNDAwMDAzQUIwMDkzMjI0NjBBNEIwNEE5MzA0NjAwRjA1Q0ZCRDYNCjoxMDcyNTAwMEVDRTcwMEJGOUNDNTAxMDgyQ0M1MDEwOEJDQzUwMTA4QUUNCjoxMDcyNjAwMDdDQzUwMTA4MzJDNTAxMDgzNkM1MDEwODlENzMwMTA4QjcNCjoxMDcyNzAwMDI1NzAwMTA4MkRFOUZGNDc1NUVDMTA0QjBEOUZEREY4RjcNCjoxMDcyODAwMDMwQTAwMDJEMEU0NjkxNDYxOTQ2QjhCRjIyNDYyQjQ2MjcNCjoxMDcyOTAwMDI3RjAyMDA3QkJCRjA1RjEwMDQzMUQ0NjAwMjMyRDIzMjcNCjoxMDcyQTAwMEI4QkYxNDQ2NDYyRjBCNzAwNEQwNDUyRjAwRDEwMTM2Q0QNCjoxMDcyQjAwMDAyMjEwMEUwMDMyMTAzQUIwMTkzMDJBQjAwOTMzMjQ2QUQNCjoxMDcyQzAwMDUzNDY0NUVDMTA0QjAwRjAyN0ZGNDcyRjgwNDYwMkQxNzQNCjoxMDcyRDAwMDE5RjAwMTBGMjZEMDQ2MkYwOEVCMDYwOTExRDE5OEY4QjYNCjoxMDcyRTAwMDAwMzAzMDJCMEFEMTAwMjIwMDIzMjA0NjI5NDZGMUY3MzYNCjoxMDcyRjAwMEY3RkIxOEI5QzZGMTAxMDZDQUY4MDA2MERBRjgwMDMwRTkNCjoxMDczMDAwMDk5NDQwMDIyMDAyMzIwNDYyOTQ2RjFGN0U5RkIzOEI5QzkNCjoxMDczMTAwMDMwMjIwMzlCNEI0NTA1RDI1OTFDMDM5MTFBNzBGOEU3QTQNCjoxMDczMjAwMENERjgwQzkwMDM5QjBFOUFBM0VCMDgwMzQwNDYxMzYwMjQNCjoxMDczMzAwMDA0QjBCREU4RjA4N0Y3QjUwMDI5MDQ0NkJBQkY0OTQyNUENCjoxMDczNDAwMDJEMjMyQjIzMDkyOTA0RjgwMjJCNDM3MDIwREQwREYxOTYNCjoxMDczNTAwMDA3MDMxRjQ2MEEyNjkxRkJGNkY1MDZGQjE1MTEzMDMxOEYNCjoxMDczNjAwMDA5MkQwM0Y4MDExQzAzRjFGRjMyMjk0NjA5REMzMDMxRjUNCjoxMDczNzAwMDAyM0IwMkY4MDExQ0JCNDIyMjQ2MDREMzEwMUEwM0IwQTANCjoxMDczODAwMEYwQkQxMzQ2RTdFNzEzRjgwMTJCMDRGODAxMkJGMkU3RjENCjoxMDczOTAwMDMwMjMxOTQ0ODM3MDAyMURDMTcwRUZFNzJERTlGMDRGQ0YNCjoxMDczQTAwMDhEQjAwQzQ2RERGODU4ODAxNjQ2MUY0NjA1NDYwMUYwQTQNCjoxMDczQjAwMEU1RkQwMzY4MDQ5MzE4NDZGMUY3RDBGODAwMjMwQTkzMUINCjoxMDczQzAwMEQ4RjgwMDMwMDU5MDA3MzMyM0YwMDcwMzAzRjEwODAyRDMNCjoxMDczRDAwMDk0RjgxOEEwRDRGODAwQjBDOEY4MDAyMEQzRTkwMDIzMkUNCjoxMDczRTAwMEM0RTkxMjIzRDRFOTEyODkyOUYwMDA0MzA3OTNDREY4QTgNCjoxMDczRjAwMDE4ODA0RkYwRkYzMkE3NEJEREU5MDYwMUYxRjdBMkZCNDENCjoxMDc0MDAwMDcwQkI0RkYwRkYzMkEzNEJEREU5MDYwMUYxRjc3Q0ZCQzcNCjoxMDc0MTAwMDMwQkIwMDIyMDAyMzQwNDY0OTQ2RjFGNzZCRkIxMEIxMTgNCjoxMDc0MjAwMDJEMjM4NEY4NDMzMDlDNEE5QzRCQkFGMTQ3MEY4Q0JGMDQNCjoxMDc0MzAwMDkwNDY5ODQ2MDMyMzJCRjAwNDAyMjM2MTIyNjA0RkYwMEMNCjoxMDc0NDAwMDAwMDkwMDk3MzM0NjBCQUEyMTQ2Mjg0NjAwRjBFNkY5Q0ENCjoxMDc0NTAwMDAxMzA0MEYwOEQ4MDRGRjBGRjMwMERCMEJERThGMDhGNkYNCjoxMDc0NjAwMDQyNDY0QjQ2NDA0NjQ5NDZGMUY3NkNGQjEwQjE4QzRBMDgNCjoxMDc0NzAwMDhDNEJEQUU3NjE2ODRCMUM0QkY0ODA2MjBBQTgzRUQxNjINCjoxMDc0ODAwMDA2MjM2MzYwMDAyM0NERTkwMjAzMDlBQjAwOTM0OUVDQjYNCjoxMDc0OTAwMDEwOEIwREYxMjMwMzIyNjBDREY4MDRBMDYxNjgyODQ2MEINCjoxMDc0QTAwMEZGRjdFOEZFMEFGMERGMDM0NzJCODA0NjA5RDEwOTlCNkUNCjoxMDc0QjAwMEQ4MUMwMkRCNjI2ODkzNDI0N0REQUFGMTAyMEE1RkZBMzgNCjoxMDc0QzAwMDhBRkFCQUYxNjUwRjA5OTkyNEQ4MDEzOTUyNDYwNEYxQjQNCjoxMDc0RDAwMDUwMDAwOTkxRkZGNzJGRkYwQTlBMTMxODAxMkE4MTQ2REQNCjoxMDc0RTAwMDIzNjEwMkRDMjI2OEQxMDcwMUQ1MDEzMzIzNjE5REY4QjUNCjoxMDc0RjAwMDIzMzAwMDJCQTVEMDJEMjM4NEY4NDMzMEExRTdCQUYxMjcNCjoxMDc1MDAwMDY3MEYwMEYwNzc4MUJBRjE0NzBGQkJEMTAwMjlCOUQxREQNCjoxMDc1MTAwMDAxMjNCNkU3QkFGMTY2MEYxOUQxMDAyOTYzNjgwQ0REQzMNCjoxMDc1MjAwMDIxNjExM0I5MjI2OEQyMDcwMkQ1MDEzMzBCNDQyMzYxQ0MNCjoxMDc1MzAwMDA5OUJBMzY1NEZGMDAwMDlEOUU3MTNCOTIyNjhEMDA3NkENCjoxMDc1NDAwMDAxRDUwMjMzRjNFNzAxMjNGMUU3NEZGMDY3MEFEREU5RTQNCjoxMDc1NTAwMDA5MzI5MzQyMDVEQjIyNjgyMzYxRDEwN0U4RDUwMTMzNjQNCjoxMDc1NjAwMEU1RTcwMDJCRDRCRkMzRjEwMjAzMDEyMzEzNDRERUU3OTgNCjoxMDc1NzAwMDIzNjg1QTA1MDdENDIzNjk0MjQ2MzE0NjI4NDZCODQ3NEUNCjoxMDc1ODAwMDAxMzAyQkQxNjdFN0JBRjE2NTBGNDBGMkRDODAwMDIyQjENCjoxMDc1OTAwMDAwMjNENEU5MTIwMUYxRjdBM0ZBMDAyODMzRDAwMTIzMjQNCjoxMDc1QTAwMDQxNEEzMTQ2Mjg0NkI4NDcwMTMwM0ZGNDU0QUZEREU5M0YNCjoxMDc1QjAwMDA5MjM5QTQyMDJEQjIzNjhEODA3MEZENURERTkwNDIzQUINCjoxMDc1QzAwMDMxNDYyODQ2Qjg0NzAxMzAzRkY0NDVBRjRGRjAwMDA4MzgNCjoxMDc1RDAwMDA0RjExQTA5MEE5QjAxM0I0MzQ1MDlEQzIzNjg5QjA3MTgNCjoxMDc1RTAwMDAwRjEwMzgxRTA2ODBCOUI5ODQyQjhCRjE4NDYzNEU3NkUNCjoxMDc1RjAwMDAxMjM0QTQ2MzE0NjI4NDZCODQ3MDEzMDNGRjQyQkFGQjUNCjoxMDc2MDAwMDA4RjEwMTA4RTZFNzA5OUIwMDJCMkJEQzAxMjMyNjRBNDENCjoxMDc2MTAwMDMxNDYyODQ2Qjg0NzAxMzAzRkY0MURBRjA5OUIyM0I5RDYNCjoxMDc2MjAwMDBBOUIxM0I5MjM2OEQ5MDdEOEQ1RERFOTA0MjMzMTQ2NkQNCjoxMDc2MzAwMDI4NDZCODQ3MDEzMDNGRjQwRUFGNEZGMDAwMDkwNEYxN0YNCjoxMDc2NDAwMDFBMEEwOTlCNUI0MjRCNDUwMURDMEE5Qjk0RTcwMTIzMjQNCjoxMDc2NTAwMDUyNDYzMTQ2Mjg0NkI4NDcwMTMwM0ZGNEZDQUUwOUYxQTYNCjoxMDc2NjAwMDAxMDlFRUU3MEE5QUEzNkQ5QTQyQThCRjFBNDYwMDJBQkENCjoxMDc2NzAwMDkxNDYwN0REMTM0NjMxNDY0MjQ2Mjg0NkI4NDcwMTMwNTkNCjoxMDc2ODAwMDNGRjRFOUFFMDRGMTFBMDM0RkYwMDAwQjI5RUFFOTc5NUYNCjoxMDc2OTAwMDA2OTMxNUUwRkZGRkVGN0Y0MUM1MDEwODNEQzUwMTA4RDYNCjoxMDc2QTAwMDQ5QzUwMTA4NDVDNTAxMDhGOEIwMDEwODAxMjMwNjlBM0INCjoxMDc2QjAwMDMxNDYyODQ2Qjg0NzAxMzAzRkY0Q0RBRTBCRjEwMTBCRkYNCjoxMDc2QzAwMEQ0Rjg1OEEwQUFFQjA5MDM1QjQ1RUZEQ0RERTkwOTIzRjgNCjoxMDc2RDAwMDlBNDJEMDQ0MTVEQjIzNjhEQTA3MTJENDBBOUIwOTk5MzENCjoxMDc2RTAwMEEzRUIwQTAyQTNFQjAxMEE5MjQ1QThCRjkyNDZCQUYxQTYNCjoxMDc2RjAwMDAwMEYwRURDNEZGMDAwMDgyQUVBRUE3QTA0RjExQTA5QkENCjoxMDc3MDAwMDE5RTBEREU5MDQyMzMxNDYyODQ2Qjg0NzAxMzBFNUQxQzgNCjoxMDc3MTAwMEExRTY1MzQ2NDI0NjMxNDYyODQ2Qjg0NzAxMzBFOUQxRjINCjoxMDc3MjAwMDk5RTYwMTIzNEE0NjMxNDYyODQ2Qjg0NzAxMzAzRkY0REUNCjoxMDc3MzAwMDkyQUUwOEYxMDEwOERERTkwOTIzOUIxQUEzRUIwQTAzQzUNCjoxMDc3NDAwMDQzNDVFRURDNEFFNzBBOUEwMTJBMDFEQ0RCMDczQUQ1MTkNCjoxMDc3NTAwMDAxMjM0MjQ2MzE0NjI4NDZCODQ3MDEzMDNGRjQ3QkFFMEMNCjoxMDc3NjAwMERERTkwNDIzMzE0NjI4NDZCODQ3MDEzMDA4RjEwMTA4MTUNCjoxMDc3NzAwMDNGRjQ3MUFFMEE5QjAwMjIwM0YxRkYzQUQ0RTkxMjAxRjMNCjoxMDc3ODAwMDAwMjNGMUY3QURGOUM4Qjk1MzQ2NDI0NjMxNDYyODQ2QzENCjoxMDc3OTAwMEI4NDcwMTMwMEVEMTVFRTYwMTIzNTI0NjMxNDYyODQ2RjUNCjoxMDc3QTAwMEI4NDcwMTMwM0ZGNDU3QUUwOEYxMDEwODBBOUIwMTNCOEUNCjoxMDc3QjAwMDQzNDVGMURDNEI0NjA0RjE1MDAyREVFNjRGRjAwMDA4OTENCjoxMDc3QzAwMDA0RjExQTBBRjJFNzAxMjNERkU3MDEyMzRBNDYzMTQ2QjINCjoxMDc3RDAwMDI4NDZCODQ3MDEzMDNGRjQzRUFFMDhGMTAxMDhFMzY4OUYNCjoxMDc3RTAwMDBCOUE5QjFBNDM0NUYwRENGQ0U2NEZGMDAwMDgwNEYxQ0QNCjoxMDc3RjAwMDE5MDlGNEU3MDAyOTNGRjQ4QkFFMDAyM0NERTkwMjAzMTkNCjoxMDc4MDAwMDA5QUIwMDkzNDlFQzEwOEIyMjYwQ0RGODA0QTAwREYxNzgNCjoxMDc4MTAwMDIzMDMyODQ2RkZGNzJFRkQ4MDQ2NDhFNjJERTlGMDQ3NzINCjoxMDc4MjAwMDkxNDYxRjQ2OEE2ODBCNjlEREY4MjA4MDkzNDJCOEJGRjUNCjoxMDc4MzAwMDEzNDZDOUY4MDAzMDkxRjg0MzIwMDY0NjBDNDYxMkIxQjENCjoxMDc4NDAwMDAxMzNDOUY4MDAzMDIzNjg5OTA2NDJCRkQ5RjgwMDMwRTcNCjoxMDc4NTAwMDAyMzNDOUY4MDAzMDI1NjgxNUYwMDYwNTA3RDEwNEYxOTgNCjoxMDc4NjAwMDE5MEFFMzY4RDlGODAwMjA5QjFBQUI0MjI4REM5NEY4ODcNCjoxMDc4NzAwMDQzMzAyMjY4MDAzMzE4QkYwMTIzOTIwNjJERDQwNEYxNEYNCjoxMDc4ODAwMDQzMDIzOTQ2MzA0NkMwNDcwMTMwMjBEMDIzNjhFNTY4QkUNCjoxMDc4OTAwMEQ5RjgwMDIwMDNGMDA2MDMwNDJCMDhCRkFEMUFBMzY4MzMNCjoxMDc4QTAwMDIyNjkwQ0JGMjVFQUU1NzUwMDI1OTM0MkM0QkY5QjFBRTcNCjoxMDc4QjAwMEVEMTg0RkYwMDAwOTFBMzQ0RDQ1MUFEMTAwMjAwOEUwQTgNCjoxMDc4QzAwMDAxMjM1MjQ2Mzk0NjMwNDZDMDQ3MDEzMDAzRDE0RkYwQkMNCjoxMDc4RDAwMEZGMzBCREU4RjA4NzAxMzVDM0U3RTExODVBMUMzMDIwQkUNCjoxMDc4RTAwMDgxRjg0MzAwMjI0NDk0Rjg0NTEwODJGODQzMTAwMjMzOTMNCjoxMDc4RjAwMEM1RTcwMTIzMjI0NjM5NDYzMDQ2QzA0NzAxMzBFNkQwNkQNCjoxMDc5MDAwMDA5RjEwMTA5RDhFNzAwMDAyREU5RjA0MzAxRjE0MzBDMkENCjoxMDc5MTAwMDBDNDYwOTdFODVCMDZFMjkxNzQ2MDY0Njk4NDYwQzlBOTUNCjoxMDc5MjAwMDAwRjBCMzgwMjJEODYzMjkzNkQwMEFEODAwMjkwMEYwQUQNCjoxMDc5MzAwMEI5ODA1ODI5MDBGMDgzODAwNEYxNDIwNTg0Rjg0MjEwOTANCjoxMDc5NDAwMDMyRTA2NDI5MDFEMDY5MjlGNkQxMjA2ODEzNjgwNTA2NjANCjoxMDc5NTAwMDAzRjEwNDAxMkFENTFCNjgxMTYwMDAyQjAzREEyRDIyRTQNCjoxMDc5NjAwMDVCNDI4NEY4NDMyMDZGNDgwQTIyMzlFMDczMjkwMEYwMTMNCjoxMDc5NzAwMDlEODAwOEQ4NkYyOTIwRDA3MDI5REREMTIzNjg0M0YwN0QNCjoxMDc5ODAwMDIwMDMyMzYwMDNFMDc1MjkxN0QwNzgyOUQ0RDE3ODIzMDgNCjoxMDc5OTAwMDg0Rjg0NTMwNjQ0ODU1RTAxMzY4MTkxRDFCNjgxMTYwNzANCjoxMDc5QTAwMDA0RjE0MjA1ODRGODQyMzAwMTIzOENFMDFCNjgxMTYwMjkNCjoxMDc5QjAwMDEwRjA0MDBGMThCRjFCQjJDRkU3MTM2ODI1NjgxODFERTENCjoxMDc5QzAwMDEwNjAyODA2MDFENTFCNjgwMkUwNjgwNkZCRDUxQjg4RkQNCjoxMDc5RDAwMDU0NDg2RjI5MTRCRjBBMjIwODIyMDAyMTg0Rjg0MzEwNUENCjoxMDc5RTAwMDY1NjhBNTYwMDAyREMwRjI5NTgwMjE2ODIxRjAwNDAxMzINCjoxMDc5RjAwMDIxNjAwMDJCM0REMTAwMkQ0MEYwOEU4MDY1NDYwODJBODUNCjoxMDdBMDAwMDBCRDEyMzY4REIwNzA4RDUyMzY5NjI2ODlBNDJERUJGODENCjoxMDdBMTAwMDMwMjMwNUY4MDEzQzA1RjFGRjM1QUNFQjA1MDMyMzYxOEMNCjoxMDdBMjAwMENERjgwMDgwM0I0NjAzQUEyMTQ2MzA0NkZGRjdGNkZFMUMNCjoxMDdBMzAwMDAxMzA0REQxNEZGMEZGMzAwNUIwQkRFOEYwODMzOTQ4M0INCjoxMDdBNDAwMDg0Rjg0NTEwMTM2ODIxNjgxRDFEMUI2ODE1NjAwQTA2MUYNCjoxMDdBNTAwMDBCRDVDQTA3NDRCRjQxRjAyMDAxMjE2MDFCQjkyMjY4NDENCjoxMDdBNjAwMDIyRjAyMDAyMjI2MDEwMjJCN0U3NEQwNjQ4QkY5QkIyRTkNCjoxMDdBNzAwMEVGRTc2NTQ2QjNGQkYyRjEwMkZCMTEzM0MzNUMwNUY4OTcNCjoxMDdBODAwMDAxM0QwQjQ2MDAyOUY1RDFCOUU3MTM2ODI1Njg2MTY5MDYNCjoxMDdBOTAwMDE4MUQxMDYwMjgwNjFCNjgwMUQ1MTk2MDAyRTA2QTA2RUYNCjoxMDdBQTAwMEZCRDUxOTgwMDAyMzIzNjE2NTQ2QjlFNzEzNjgxOTFEQ0ENCjoxMDdBQjAwMDExNjAxRDY4NjI2ODAwMjEyODQ2RjBGNzU5RkQwOEIxODENCjoxMDdBQzAwMDQwMUI2MDYwNjM2ODIzNjEwMDIzODRGODQzMzBBN0U3QUMNCjoxMDdBRDAwMDIzNjkyQTQ2Mzk0NjMwNDZDMDQ3MDEzMEFBRDAyMzY4NzgNCjoxMDdBRTAwMDlCMDcxM0Q0RTA2ODAzOUI5ODQyQjhCRjE4NDZBM0U3RUUNCjoxMDdBRjAwMDAxMjM0QTQ2Mzk0NjMwNDZDMDQ3MDEzMDlBRDAwMTM1MDUNCjoxMDdCMDAwMEUzNjgwMzlBOUIxQUFCNDJGMkRDRUJFNzAwMjUwNEYxMzENCjoxMDdCMTAwMDE5MDlGNUU3MDAyQkFDRDEwMzc4ODRGODQyMzAwNEYxNjENCjoxMDdCMjAwMDQyMDU2Q0U3NERDNTAxMDg1RUM1MDEwODBGQjQwQTRCNUMNCjoxMDdCMzAwMDEzQjUxQzY4MjRCMUEzNjkxM0I5MjA0NjAxRjA5NEY5NjgNCjoxMDdCNDAwMDA1QUIwNDlBQTE2ODAxOTMyMDQ2RkZGNzdERkEwMkIwQzUNCjoxMDdCNTAwMEJERTgxMDQwMDRCMDcwNDc1ODAxMDAyMDAyMkIxMEI1NUENCjoxMDdCNjAwMDBBRDA5MjA4MDEzQTAzNjgwQzY4NDBGODA0NEIwMDJBRDYNCjoxMDdCNzAwMDQxRjgwNDNCRjZEQzEwQkQwMjQ0MEM3ODAzNzgwMEY4QjENCjoxMDdCODAwMDAxNEIwMUY4MDEzQjEzMUEwMDJCRjZEQ0YzRTdGOEI1QzMNCjoxMDdCOTAwMDBDNDYxNTQ2MDc0NjFFNDY5ODQ3MDAyODI5NDYyMDQ2QUINCjoxMDdCQTAwMDBBREFCMDQ3MDAyODA1REIyOTQ2Mzg0NkIwNDcwMDI4RTYNCjoxMDdCQjAwMDBBREIzQzQ2MjA0NkY4QkRCMDQ3MDAyOEZBREMyOTQ2REYNCjoxMDdCQzAwMDM4NDZCMDQ3MDAyOEY0REIyQzQ2RjNFNzJERTlGMDRGQTgNCjoxMDdCRDAwMDg1QjAwNjQ2OEE0NjE0NDYwMDkzQjIwNzEwRDFBMzA3MjMNCjoxMDdCRTAwMDBFRDEyNzFGMThCRjAxMjdCQUYxMDYwRjA2RUIwNDBCQjENCjoxMDdCRjAwMDI4RDgwNEZCMEE2QURBNDUwQkQ4MDVCMEJERThGMDhGMzcNCjoxMDdDMDAwMDAyMjdGMUU3M0I0NjIyNDY0OTQ2NDA0NkZGRjdBNkZGREENCjoxMDdDMTAwMDEzRTBEODQ2MTJFMEE4RUIwNDA5NDE0NjQ4NDYwMDlCMTENCjoxMDdDMjAwMDk4NDcwMDI4MENERDAwMkZFQ0QxRDhGODAwMzBEOUY4QTcNCjoxMDdDMzAwMDAwMjBDOEY4MDAyMEM5RjgwMDMwQzg0NjQ2NDVFQUQzRkQNCjoxMDdDNDAwMEEzNDREOEU3NEZFQTVBMDgwQUYxRkYzNUJBRjEwNzBGMDMNCjoxMDdDNTAwMDA0RkIwODY4MDRGQjA1NjUyN0QwQkFGMTI4MEY0QUQ5NTANCjoxMDdDNjAwMDRGRUFEQTA5MDRGQjA5RjkwNkVCMDkwMTAxRUIwOTAyMDUNCjoxMDdDNzAwMDAwOUIzMDQ2RkZGNzhCRkYwOEVCMDkwMjQxNDYwMTkwNUQNCjoxMDdDODAwMDAwOUJBOEVCMDkwMEZGRjc4MkZGODA0NkE1RUI0OTAwQTcNCjoxMDdDOTAwMDJBNDYwMDlCMDBFQjA5MDFGRkY3NzlGRjAyNDY0MTQ2QTcNCjoxMDdDQTAwMDAwOUIwMTk4RkZGNzczRkY4MDQ2M0ZCQjMzNjhEOEY4MEQNCjoxMDdDQjAwMDAwMjAzMjYwQzhGODAwMzBEODQ2QTk0NkNERjgwNEIwOUMNCjoxMDdDQzAwMDAwMjNBODQ1NTdEODAyOTMzMTQ2MDA5QjQwNDY5ODQ3NjkNCjoxMDdDRDAwMDAwMjgwMjlCMkVEQzBDRDFCRkI5MDE5QjAxOTkxQjY4QzcNCjoxMDdDRTAwMEQ4RjgwMDIwMEE2MEM4RjgwMDMwMDE5QjIzNDQwMTkzQjMNCjoxMDdDRjAwMDAxMjNBMDQ0RTVFNzJBNDYwMTk2RDBFNzNCNDYyMjQ2MDkNCjoxMDdEMDAwMDQxNDYzMDQ2RkZGNzJBRkZENkU3M0I0NjIyNDY0MTQ2MkENCjoxMDdEMTAwMDAxOThGRkY3MjNGRkU4RTcwOUQxRjdCOTJCNjhEOUY4RjUNCjoxMDdEMjAwMDAwMjAyQTYwQzlGODAwMzBBOUVCMDQwOTAxMjMwMjlENTQNCjoxMDdEMzAwMEE4NDUyMEQ4MDM5MzMxNDYwMDlCMjg0Njk4NDcyQjFCMjMNCjoxMDdENDAwMDAwMjgwMjkzMDM5QkU3REE3N0I5RDhGODAwMzAyQTY4NTUNCjoxMDdENTAwMEM4RjgwMDIwMkI2MDAyOURDQUU3M0I0NjIyNDY0OTQ2RjANCjoxMDdENjAwMDI4NDZGRkY3RkJGRURGRTczQjQ2MjI0NjI5NDY0MDQ2MTINCjoxMDdENzAwMEZGRjdGNEZFRUZFNzA0RkIwQTZBMDNCQkQzNDVCRkY0NDkNCjoxMDdEODAwMDNDQUY1RDQ2MTdFMDNCNDYyMjQ2NDE0NjI4NDZGRkY3OUENCjoxMDdEOTAwMEU1RkUwRkUwQTVFQjA0MDgyOTQ2NDA0NjAwOUI5ODQ3MDYNCjoxMDdEQTAwMDAwMjgwQUREMDAyRkVFRDEyQjY4RDhGODAwMjAyQTYwQzkNCjoxMDdEQjAwMEM4RjgwMDMwNDU0NkFFNDJFQ0QzQTM0NERFRTcwMTlCNTENCjoxMDdEQzAwMEE4RUIwMzBCOUExQjVBNDVBOEJGNUE0NjJBQjEzQjQ2NUINCjoxMDdERDAwMEE4RUIwMjAxMzA0NkZGRjdDMUZFQUFFQjA5MDJBOUVCQUUNCjoxMDdERTAwMDA1MDUxMjFCQUE0MjI4QkYyQTQ2MkFCMTNCNDZBQUVCMjgNCjoxMDdERjAwMDAyMDE0MDQ2RkZGN0IyRkU1QzQ1MDZEMkJCRkJGNEYxNDANCjoxMDdFMDAwMDAwOUIyMjQ2MzA0NkZGRjdFMUZFQTU0MjdGRjZGNUFFMjUNCjoxMDdFMTAwMEFBRUIwNTA2QjVGQkY0RkFERkU2MTBCNTZBQjEwMTM5NDUNCjoxMDdFMjAwMDg0MTgxMEY4MDEzQjExRjgwMTJGOTM0MjAzRDFBMDQyQUUNCjoxMDdFMzAwMDAxRDAwMDJCRjVEMTk4MUExMEJEMTA0NkZDRTcwMDAwQzgNCjoxMDdFNDAwMDA5NEI3MEI1MUM2ODA1NDYwRTQ2MjRCMUEzNjkxM0I5RTkNCjoxMDdFNTAwMDIwNDYwMUYwMDlGODMzNDYyQTQ2QTE2ODIwNDZCREU4Q0QNCjoxMDdFNjAwMDcwNDBGRkY3RjFCODAwQkY1ODAxMDAyMEY4QjUwRTQ2OEENCjoxMDdFNzAwMDE0NDYwNTQ2MThCMTgzNjkwQkI5MDBGMEY1RkYyMTRCOTQNCjoxMDdFODAwMDlDNDIyQUQxNkM2OEEzNjlBMzYwQTM4OTFBMDcyRUQ1RTYNCjoxMDdFOTAwMDIzNjk2M0IzMjM2OTIwNjhDMDFBNjM2OUY2QjI4MzQyMTkNCjoxMDdFQTAwMDM3NDYwNERDMjE0NjI4NDYwMEYwNzRGRjI4QkJBMzY4NEYNCjoxMDdFQjAwMDAxM0JBMzYwMjM2ODVBMUMyMjYwMUU3MDYzNjkwMTMwNzUNCjoxMDdFQzAwMDgzNDIwNEQwQTM4OURCMDcxOUQ1MEEyRTE3RDEyMTQ2OTYNCjoxMDdFRDAwMDI4NDYwMEYwNUZGRjkwQjEwRkUwMEI0QjlDNDIwMUQxQjANCjoxMDdFRTAwMEFDNjhEMEU3MDk0QjlDNDIwOEJGRUM2OENCRTcyMTQ2NjENCjoxMDdFRjAwMDI4NDYwMEYwMERGODAwMjhDQ0QwNEZGMEZGMzczODQ2NjgNCjoxMDdGMDAwMEY4QkQwMEJGOUNDNTAxMDhCQ0M1MDEwODdDQzUwMTA4QkYNCjoxMDdGMTAwMDMyNEI3MEI1MUQ2ODA2NDYwQzQ2MjVCMUFCNjkxM0I5RTYNCjoxMDdGMjAwMDI4NDYwMEYwQTFGRjJFNEI5QzQyMEZEMTZDNjhCNEY5OUINCjoxMDdGMzAwMDBDMzA5QUIyMTUwNzJDRDREMDA2MTFENDA5MjIzMjYwMjUNCjoxMDdGNDAwMDQzRjA0MDAzQTM4MTRGRjBGRjMwM0VFMDI1NEI5QzQyQkQNCjoxMDdGNTAwMDAxRDFBQzY4RUJFNzI0NEI5QzQyMDhCRkVDNjhFNkU3MzQNCjoxMDdGNjAwMDUxMDcxMkQ1NjE2QjQxQjEwNEYxNDQwMzk5NDIwMkQwMkINCjoxMDdGNzAwMDMwNDYwMUYwNjdGQjAwMjM2MzYzQTM4OTIzRjAyNDAzRTkNCjoxMDdGODAwMEEzODEwMDIzNjM2MDIzNjkyMzYwQTM4OTQzRjAwODAzNkUNCjoxMDdGOTAwMEEzODEyMzY5NEJCOUEzODkwM0Y0MjA3M0IzRjUwMDdGNTANCjoxMDdGQTAwMDAzRDAyMTQ2MzA0NjAxRjAxQkY4QTI4OTEyRjAwMTAzRUMNCjoxMDdGQjAwMDBDRDAwMDIzQTM2MDYzNjk1QjQyQTM2MTIzNjk1M0I5QkENCjoxMDdGQzAwMEI0RjkwQzMwMTNGMDgwMDBCQUQxNzBCRDkyMDc1OEJGREQNCjoxMDdGRDAwMDYzNjlBMzYwRjJFNzAwMjBGN0U3MDBCRjU4MDEwMDIwQzMNCjoxMDdGRTAwMDlDQzUwMTA4QkNDNTAxMDg3Q0M1MDEwODA4QjUwNjIwNzANCjoxMDdGRjAwMDAxRjAwOEZDMDEyMDAxRjAzNUZEMkRFOUY3NEYwMzY5ODANCjoxMDgwMDAwMDBDNjlBMzQyODA0NkMwRjI4MjgwMDEzQzAxRjExNDA3NTINCjoxMDgwMTAwMDRGRUE4NDBDMDBGMTE0MDY1N0Y4MjQ1MDU2RjgyNDAwNTcNCjoxMDgwMjAwMDA2RUIwQzAzMDEzNTA3RUIwQzA5MDE5M0IwRkJGNUY1RUENCjoxMDgwMzAwMDk1QjM0RkYwMDAwQTM4NDZCNjQ2RDM0NjUwRjgwNDJCQTUNCjoxMDgwNDAwMDkzQjIwNUZCMDNBMzRGRUExMzRBOUJCMkFCRUIwMzAzQzYNCjoxMDgwNTAwMDEyMENERUY4MDBCMDA1RkIwMkEyMTNGQThCRjM0RkVBMTQNCjoxMDgwNjAwMDEyNEExRkZBODJGQkRFRjgwMDIwQ0JFQjEyNDIwMkVCMzENCjoxMDgwNzAwMDIzNDI5QkIyNDNFQTAyNDM4MTQ1NEZFQTIyNEI0RUY4MkENCjoxMDgwODAwMDA0M0JEQkQyNTZGODBDMzAzM0I5MDE5QjA0M0I5RTQyRDMNCjoxMDgwOTAwMDFBNDYzMEQzQzhGODEwNDA0MDQ2MDFGMEZGRjkwMDI4RDYNCjoxMDgwQTAwMDI1REIwMTM1MzA0NjRGRjAwMDBDNTdGODA0MkJEMEY4OTMNCjoxMDgwQjAwMDAwRTA5M0IyQUNFQjAzMDMxMjBDMTNGQThFRjNDMkVCQTUNCjoxMDgwQzAwMDFFNDIwMkVCMjM0MjlCQjI0M0VBMDI0M0I5NDU0RkVBMDgNCjoxMDgwRDAwMDIyNEM0MEY4MDQzQkU4RDI1NkY4MjQyMDA2RUI4NDAzRjcNCjoxMDgwRTAwMDJBQjkwNDNCOUU0MjFBNDYwQkQzQzhGODEwNDAyODQ2RDINCjoxMDgwRjAwMDAzQjBCREU4RjA4RjEyNjgwNDNCMDAyQUNBRDEwMTNDRUUNCjoxMDgxMDAwMEM1RTcxMjY4MDQzQjAwMkFFRkQxMDEzQ0VBRTcwMDIwRjINCjoxMDgxMTAwMEVFRTcwMDAwMDAwMDAwMDAyREU5RjA0RjU3RUMxMDZCNzcNCjoxMDgxMjAwMDk3QjA0NTZBMDY5MTA0NDYwQjkyMTI5M0RERjg4MDgwNjENCjoxMDgxMzAwMENERTkwMDY3M0RCOTEwMjAwMEYwOTJGRjYwNjJDMEU5MTANCjoxMDgxNDAwMDAxNTUwNTYwQzU2MDYzNkExOTY4NTFCMTVBNjg0QTYwOTMNCjoxMDgxNTAwMDAxMjM5MzQwOEI2MDIwNDYwMEYwQkVGRjYzNkEwMDIyM0INCjoxMDgxNjAwMDFBNjAzQjFFQkJCRjIzRjAwMDQzMDE5MzAwMjMwMTIyOTINCjoxMDgxNzAwMEFDQkZDOEY4MDAzMEM4RjgwMDIwQUY0QkRERjgwNDgwNzENCjoxMDgxODAwMDMzRUEwODAzMTREMTEyOUE0MkYyMEY3MzEzNjAwMDlCNzINCjoxMDgxOTAwMDIzQjlDOEYzMTMwMDAwMjgwMEYwNDI4NTIxOUJERkY4QzMNCjoxMDgxQTAwMEFDQjIwMDJCMDBGMDQ0ODUwQkYxMDMwMzAwRjAzRUJEQTANCjoxMDgxQjAwMERERTkwMDY3MDAyMjAwMjMzMDQ2Mzk0NkYwRjc5MEZDRTUNCjoxMDgxQzAwMDgxNDY2OEIxMTI5QTAxMjMxMzYwMjE5QjAwMkIwMEYwQjUNCjoxMDgxRDAwMDI0ODU5QTRCMjE5QTAzRjFGRjNCMTM2MDAwRjAyOEJERTANCjoxMDgxRTAwMDE0QUExNUE5NDdFQzEwNkIyMDQ2MDFGMENFRjlDOEYzOEMNCjoxMDgxRjAwMDBBNTUwNDkwMDAyRDdDRDBDN0YzMTMwMzQzRjA3RjVCMzYNCjoxMDgyMDAwMEIyNDY0QkY0NDAxQkE1RjJGRjM1Q0RGODRDOTAwMDIyNEUNCjoxMDgyMTAwMDhCNEI1MDQ2NTk0NkVGRjdERkZGODFBM0QzRTkwMDIzOEMNCjoxMDgyMjAwMEYwRjdGNkY5ODBBM0QzRTkwMDIzRUZGN0Q3RkYwNjQ2NkUNCjoxMDgyMzAwMDI4NDYwRjQ2RjBGNzFFRjk3REEzRDNFOTAwMjNGMEY3OTcNCjoxMDgyNDAwMEU3RjkwMjQ2MEI0NjMwNDYzOTQ2RUZGN0M3RkYwNjQ2QzgNCjoxMDgyNTAwMDBGNDZGMEY3OERGQzAwMjI4MjQ2MDAyMzMwNDYzOTQ2NTcNCjoxMDgyNjAwMEYwRjc0OEZDNDhCMTUwNDZGMEY3MDRGOTMyNDYzQjQ2NzcNCjoxMDgyNzAwMEYwRjczNkZDMDhCOTBBRjFGRjNBQkFGMTE2MEY1OUQ4RUYNCjoxMDgyODAwMDcwNDkwMUVCQ0EwMURERTkwMDIzRDFFOTAwMDFGMEY3RjMNCjoxMDgyOTAwMDRGRkMwMDI4NTBEMDBBRjFGRjNBMDAyMzBGOTMxNDlCQTMNCjoxMDgyQTAwMDVEMUJCNUYxMDEwODQ5QkZDNUYxMDEwMzAwMjMwNTkzMkENCjoxMDgyQjAwMDRGRjAwMDA4NThCRjA1OTNCQUYxMDAwRjNFREIwMDIzRDINCjoxMDgyQzAwMEQwNDRDREY4MzhBMDA3OTMwNjlCMDkyQjAwRjI5MDgwOEMNCjoxMDgyRDAwMDA1MkJDNEJGMDQzQjA2OTMwNjlCQTNGMTAyMDNDQ0JGNEUNCjoxMDgyRTAwMDAwMjUwMTI1MDMyQjAwRjI4RjgwREZFODAzRjA3RDdGNUUNCjoxMDgyRjAwMDMxNzFEREU5MTQ1MzFENDQwNUYyMzI0MDIwMjgxM0REQUQNCjoxMDgzMDAwMEMwRjE0MDAwMDA5QjA4RkEwMEY4MDVGMjEyNDAyM0ZBODENCjoxMDgzMTAwMDAwRjA0OEVBMDAwMEYwRjc5REY4MDEyMzgyNDZBMUYxNDENCjoxMDgzMjAwMEY4N0IwMTNEMTM5MzcyRTcwMDlCQzBGMTIwMDAwM0ZBMzQNCjoxMDgzMzAwMDAwRjBGMEU3MDEyM0IxRTcwRjkwQjBFNzA1OUJBM0VCNTYNCjoxMDgzNDAwMDBBMDMwNTkzQ0FGMTAwMDMwNzkzMDAyMzBFOTNCQkU3Q0ENCjoxMDgzNTAwMDAxMjMwQTkzMEI5QjAwMkI1OUREMDI5Mzk5NDY2NjZBMTENCjoxMDgzNjAwMDAwMjI3MjYwMDQyMjAyRjExNDAwOTg0MjcxNjg1M0Q5MEQNCjoxMDgzNzAwMDIwNDYwMEYwN0RGRTYzNkEzMDYwQjlGMTBFMEZEM0Y4M0QNCjoxMDgzODAwMDAwQjAwMEYyRTY4MDAwMkQwMEYwRTM4MDlERUQwMDdCNjANCjoxMDgzOTAwMEJBRjEwMDBGOERFRDEwN0I3NEREMkE0QTBBRjAwRjAzNEQNCjoxMDgzQTAwMDAyRUJDMzAzOTNFRDAwN0I0RkVBMkExNkYwMDY4REVEMzYNCjoxMDgzQjAwMDA4N0I2NUQ1MjQ0QkRERTkxMDAxRDNFOTA4MjNGMEY3RUMNCjoxMDgzQzAwMDUxRkFDREU5MDAwMTA2RjAwRjA2MDMyNTFFNEY0Q0UwREYNCjoxMDgzRDAwMDAxMjMwQTkzMEI5QjUzNDQwM0YxMDEwOTAyOTM0QjQ2N0INCjoxMDgzRTAwMDAxMkJCOEJGMDEyM0JBRTcwMDIzQjJFNzAwMjNGMEU3NkYNCjoxMDgzRjAwMDAxMjUwMDIzMDY5MzBBOTU0RkYwRkYzMzAyOTM5OTQ2MTcNCjoxMDg0MDAwMDAwMjIxMjIzMEI5MkFBRTcwMTIzMEE5M0Y0RTcwMTIzMjcNCjoxMDg0MTAwMDAyOTM5OTQ2MUE0NkY1RTcwMTMxNzE2MDUyMDBBMkU3Q0UNCjoxMDg0MjAwMDYxNDM2RjYzQTc4N0QyM0ZCM0M4NjA4QjI4OEFDNjNGN0ENCjoxMDg0MzAwMEZCNzk5RjUwMTM0NEQzM0YwMDAwRjA3RkY5QjAwMTA4NEYNCjoxMDg0NDAwMDAwMDBGODNGMDhDNjAxMDhFMEM1MDEwODc4QzUwMTA4MkENCjoxMDg0NTAwMEYxMDcwOEQ1RERFOTA4MDFEN0U5MDAyM0YwRjdEOEY4REUNCjoxMDg0NjAwMENERTkwODAxMDEzNTc2MTAwODM3MDAyRUYwRDFEREU5OUQNCjoxMDg0NzAwMDA4MjNEREU5MDAwMUYwRjdGNUY5Q0RFOTAwMDExQUUwODQNCjoxMDg0ODAwMDAyMjVBM0U3MDBGMEEwODBDQUYxMDAwNjlGNEJBMDRGOTENCjoxMDg0OTAwMDA2RjAwRjAyMDNFQkMyMDNEM0U5MDAyM0RERTkxMDAxNkMNCjoxMDg0QTAwMEYwRjdCNkY4Q0RFOTAwMDEzNjExMDAyMzAyMjUwMDJFQzENCjoxMDg0QjAwMDdGRDEwMDJCRTFEMTBGOUIwMDJCMDBGMDg3ODBEREU5RkQNCjoxMDg0QzAwMDAwNjcwMDIyOTM0QjMwNDYzOTQ2RjBGNzEzRkIwMDI4MzMNCjoxMDg0RDAwMDdDRDBCOUYxMDAwRjc5RDAwMjlCMDAyQjM1REQwQUYxNzkNCjoxMDg0RTAwMEZGMzMwODkzMzk0NjAwMjI4QjRCMzA0NkYwRjc5MEY4NjMNCjoxMDg0RjAwMENERTkwMDAxMDI5RjAxMzUyODQ2RUZGN0JCRkZEREU5MUENCjoxMDg1MDAwMDAwMjNGMEY3ODVGODAwMjI4NDRCRUZGNzY3RkUwNTQ2NUQNCjoxMDg1MTAwMEExRjE1MDc2MDAyRjVERDEwMDIyODE0QkRERTkwMDAxRjENCjoxMDg1MjAwMEVGRjc1QUZFMkE0NjMzNDZDREU5MDAwMUYwRjcwMEZCOEINCjoxMDg1MzAwMDAwMjg0MEYwODg4MjJBNDYwNkYxMDA0M0RERTkwMDAxNjgNCjoxMDg1NDAwMEYwRjdEOEZBMDAyODQwRjA3QzgyRERFOTEwMjNDREU5NkQNCjoxMDg1NTAwMDAwMjMxNTlCMDAyQkMwRjI1MDgxQkFGMTBFMEYwMEYzREYNCjoxMDg1NjAwMDRDODE2QTRCMDNFQkNBMDM5M0VEMDA3QjBCOUIwMDJCMDINCjoxMDg1NzAwMDhERUQwMjdCODBGMkQ4ODBCOUYxMDAwRjAwRjNENDgwM0ENCjoxMDg1ODAwMDQwRjA1RTgyMDAyMjY2NEI1MUVDMTcwQkYwRjc0MEY4OEENCjoxMDg1OTAwMERERTkwMDIzRjBGN0MyRkE0RjQ2NEU0NjAwMjg0MEYwQ0UNCjoxMDg1QTAwMDM0ODIzMTIzMEJGMTAxMDU4QkY4MDAzMDBBRjEwMTBBMDYNCjoxMDg1QjAwMDJGRTJGMjA3MDVENUQ3RTkwMDIzRjBGNzI5RjgwMTM1QjYNCjoxMDg1QzAwMDAxMjM3NjEwMDgzNzcyRTcwMjI1NzRFN0NERjgyMEEwNjINCjoxMDg1RDAwMDRGNDY5MUU3NEQ0QjAzRUJDNzAzNTNFOTAyMDEwQTlCNUENCjoxMDg1RTAwMDAwMkI0N0QwMDI0NjBCNDYwMDIwNEU0OUYwRjczQUY5REYNCjoxMDg1RjAwMDJBNDYzMzQ2RUZGN0YwRkRDREU5MEMwMTVENDZEREU5OTMNCjoxMDg2MDAwMDAwMDFGMEY3QjVGQTA2NDZFRkY3MzRGRjAyNDYwQjQ2RDUNCjoxMDg2MTAwMERERTkwMDAxRUZGN0UwRkQzMDM2MDVGODAxNkJEREU5M0INCjoxMDg2MjAwMDBDMjNDREU5MDAwMUYwRjc2NUZBMDAyODYzRDFEREU5RkMNCjoxMDg2MzAwMDAwMjMwMDIwMzc0OUVGRjdDRkZERERFOTBDMjNGMEY3RTkNCjoxMDg2NDAwMDU5RkEwMDI4NDBGMEI3ODBBNUVCMEIwMzlGNDI3RkY3NTMNCjoxMDg2NTAwMDdDQUYwMDIyMzA0QkRERTkwQzAxRUZGN0Q5RkYwMDIyOUYNCjoxMDg2NjAwMENERTkwQzAxMkM0QkRERTkwMDAxRUZGN0QxRkZDREU5OUQNCjoxMDg2NzAwMDAwMDFDNEU3MkE0NjMzNDZFRkY3Q0FGRkNERTkwQzAxRjMNCjoxMDg2ODAwMDBCRUIwNzA1NUU0NkRERTkwMDAxRjBGNzcxRkEwNzQ2REUNCjoxMDg2OTAwMEVGRjdGMEZFMzAzNzAyNDYwQjQ2RERFOTAwMDFFRkY3NTkNCjoxMDg2QTAwMDlCRkQwNkY4MDE3QkFFNDJDREU5MDAwMTRGRjAwMDAyRDANCjoxMDg2QjAwMDI2RDExQzRCRERFOTBDMDFFRkY3OTBGRDAyNDYwQjQ2N0QNCjoxMDg2QzAwMERERTkwMDAxRjBGNzM0RkEwMDI4NzREMURERTkwQzIzNkMNCjoxMDg2RDAwMDAwMjAxNDQ5RUZGNzgwRkQwMjQ2MEI0NkRERTkwMDAxNUENCjoxMDg2RTAwMEYwRjcwOEZBMDAyODNGRjQzMEFGMTVGODAxM0MzMDJCQzINCjoxMDg2RjAwMDA1RjFGRjMyMDJEMERERjgyMEEwNEFFMDE1NDZGNEU3OEMNCjoxMDg3MDAwMDA1NEJFRkY3ODVGRkNERTkwMDAxQkNFNzA4QzYwMTA4N0UNCjoxMDg3MTAwMEUwQzUwMTA4MDAwMEYwM0YwMDAwMjQ0MDAwMDAxQzQwQkMNCjoxMDg3MjAwMDAwMDAxNDQwMDAwMEUwM0ZEREU5MDA2NzVENDZEREU5NDANCjoxMDg3MzAwMDAyMjMzMDQ2Mzk0NkYwRjc5NUY4RjBGNzE5RkE4MDQ2RUINCjoxMDg3NDAwMEVGRjc5OEZFRERFOTAyMjNFRkY3NjJGRjAyNDYwQjQ2RTINCjoxMDg3NTAwMDMwNDYzOTQ2MDhGMTMwMDZFRkY3M0VGRDA1RjgwMTZCNkINCjoxMDg3NjAwMEE1RUIwQjA2QjE0NTAyNDYwQjQ2MzlEMUVGRjczNkZEQjYNCjoxMDg3NzAwMERERTkwMjIzMDY0NjBGNDZGMEY3REFGOUM4QjlEREU5NkMNCjoxMDg3ODAwMDAyMjMzMDQ2Mzk0NkYwRjdBQkY5MTBCMTE4RjAwMTBGNkINCjoxMDg3OTAwMDBGRDEwNDk5MjA0NjAwRjA5RkZDMDAyMzEyOUEyQjcwMDENCjoxMDg3QTAwMDBBRjEwMTAzMTM2MDIxOUIwMDJCMDBGMDQxODIxRDYwNDANCjoxMDg3QjAwMDNFRTJDREY4MjBBMDE1RjgwMTJDMzkyQTA1RjFGRjMzNEYNCjoxMDg3QzAwMDA4RDE5QjQ1MEFEMTA4OUIwMTMzMDg5MzMwMjM4QkY4Q0QNCjoxMDg3RDAwMDAwMzA1QjQ2MUE3ODAxMzIxQTcwOENFNzFENDZFQUU3RDINCjoxMDg3RTAwMDAwMjI5QjRCRUZGNzE0RkYwMDIyMDAyMzA2NDYwRjQ2QTINCjoxMDg3RjAwMEYwRjc3NkY5MDAyODlBRDBDQkU3MEE5QTAwMkEwMEYwMjENCjoxMDg4MDAwMDhCODAwNjlBMDEyQTZFREMxMzlBMDAyQTY3RDAwM0YyNDUNCjoxMDg4MTAwMDMzNDMwNzlGMDU5RDA1OUEwMTIxMUE0NDIwNDYwNTkyN0UNCjoxMDg4MjAwMDk4NDQwMEYwRjlGQzA2NDYwMDJEMENEREI4RjEwMDBGNkQNCjoxMDg4MzAwMDA5REQ0NTQ1MDU5QTJCNDZBOEJGNDM0NkQyMUEwNTkyNDUNCjoxMDg4NDAwMEVEMUFBOEVCMDMwODA3OUJFQkIxMEE5QjAwMkI2N0QwM0UNCjoxMDg4NTAwMDhGQjEzMTQ2M0E0NjIwNDYwMEYwN0VGRDA0OUEwMTQ2MkINCjoxMDg4NjAwMDA2NDYyMDQ2MDBGMEUxRkMwNDk5MDg5MDIwNDYwMEYwRkUNCjoxMDg4NzAwMDMzRkMwODlCMDQ5MzA3OUJEQTFCMDREMDA0OTkyMDQ2MjENCjoxMDg4ODAwMDAwRjA2QUZEMDQ5MDAxMjEyMDQ2MDBGMEM1RkMwRTlCMUINCjoxMDg4OTAwMDA3NDYwMDJCMDBGMEQwODExQTQ2MDE0NjIwNDYwMEYwMjINCjoxMDg4QTAwMDVCRkQwNjlCMDEyQjA3NDY0MERDMDA5QjAwMkIzOUQxNkENCjoxMDg4QjAwMDAxOUJDM0YzMTMwMzAwMkIzNkQxMDE5QjIzRjAwMDQzMkMNCjoxMDg4QzAwMDFCMEQxQjA1MkJCMTA1OUIwMTMzMDU5MzA4RjEwMTA4MTYNCjoxMDg4RDAwMDAxMjMwNzkzMEU5QjAwMkIyQUQxMDEyMDMwRTAxNDlCMkINCjoxMDg4RTAwMEMzRjEzNjAzOTVFNzA3OUIwOUYxRkYzN0JCNDJCRkJGRDINCjoxMDg4RjAwMDA3OUIwNzk3RkExQTBFOUJCQkJGOUIxODBFOTNERjFCQjMNCjoxMDg5MDAwMDAwMjdCOUYxMDAwRkI1QkYwNTlCMDU5REEzRUIwOTA1MzUNCjoxMDg5MTAwMDRCNDZCOEJGMDAyMzdFRTcwNzlGMDU5RDBBOUU4M0U3NkQNCjoxMDg5MjAwMDA3OUFBQkU3MDAyM0Q0RTcwMDlCRDJFNzAwMjMwNzkzMjUNCjoxMDg5MzAwMDNCNjkwN0VCODMwMzE4NjkwMEYwMjBGQ0MwRjEyMDAwQkQNCjoxMDg5NDAwMDQwNDQxMEYwMUYwMDQ3RDBDMEYxMjAwMzA0MkIzQkRENTINCjoxMDg5NTAwMDA1OUJDMEYxMUMwMDAzNDQwNTkzMDU0NDgwNDQwNTlCMUUNCjoxMDg5NjAwMDAwMkIwNUREMUE0NjA0OTkyMDQ2MDBGMDQzRkQwNDkwRDMNCjoxMDg5NzAwMEI4RjEwMDBGMDVERDM5NDY0MjQ2MjA0NjAwRjAzQUZEQzkNCjoxMDg5ODAwMDA3NDYwRjlCNTNCMzM5NDYwNDk4MDBGMDg3RkQwMDI4MzMNCjoxMDg5OTAwMDI0REEwMDIzMEEyMjA0OTkyMDQ2MDBGMEI0RkIwQTlCNDMNCjoxMDg5QTAwMDA0OTAwQUYxRkYzQTAwMkIwMEYwNEQ4MTAwMjMzMTQ2N0MNCjoxMDg5QjAwMDBBMjIyMDQ2MDBGMEE3RkIwMjlCMDAyQjA2NDY0RkRDNTQNCjoxMDg5QzAwMDA2OUIwMjJCNENERDExRTBDOUQwMDU5QTFDMzMxQTQ0REENCjoxMDg5RDAwMDA1OTIxRDQ0OTg0NEMyRTcwMzQ2RjZFN0I5RjEwMDBGM0INCjoxMDg5RTAwMDM4REMwNjlCMDIyQjM1RERDREY4MDg5MDAyOUI2M0I5N0QNCjoxMDg5RjAwMDM5NDYwNTIyMjA0NjAwRjA4NkZCMDE0NjA3NDYwNDk4Q0ENCjoxMDhBMDAwMDAwRjA0Q0ZEMDAyODNGRjdDQ0FEMEI5QjVENDY2RkVBQjQNCjoxMDhBMTAwMDAzMEE0RkYwMDAwOTM5NDYyMDQ2MDBGMDVERkIwMDJFQTYNCjoxMDhBMjAwMDNGRjRCN0FFQjlGMTAwMEYwNUQwQjE0NTAzRDA0OTQ2QzgNCjoxMDhBMzAwMDIwNDYwMEYwNTFGQjMxNDYyMDQ2MDBGMDRERkJBOEU2RjENCjoxMDhBNDAwMDAwMjczRTQ2RTFFN0RERjgyMEEwM0U0NkE5RTUwMEJGNEQNCjoxMDhBNTAwMDAwMDAyNDQwMEE5QkNERjgwODkwMDAyQjAwRjBGQTgwMUINCjoxMDhBNjAwMDAwMkQwNUREMzE0NjJBNDYyMDQ2MDBGMEMzRkMwNjQ2QUYNCjoxMDhBNzAwMDA3OUIwMDJCNENEMDcxNjgyMDQ2MDBGMEY5RkEzMjY5NTANCjoxMDhBODAwMDAyMzIwNTQ2OTIwMDA2RjEwQzAxMEMzMEZFRjc4N0ZBMUYNCjoxMDhBOTAwMDAxMjIyOTQ2MjA0NjAwRjBBREZDMDA5QkNERjgxNEIwMjENCjoxMDhBQTAwMDAzRjAwMTAzQjE0NjA3OTMwNjQ2Mzk0NjA0OThGRkY3RTENCjoxMDhBQjAwMEE0RkE0OTQ2MDU0NjAwRjEzMDA4MDQ5ODAwRjBFRUZDOUYNCjoxMDhBQzAwMDMyNDYwMDkwMzk0NjIwNDYwMEYwMDJGREMzNjgwMjQ2NTcNCjoxMDhBRDAwMDAzQkIwMTQ2MDg5MDA0OTgwMEYwRTBGQzA4OUEwMzQ2QTYNCjoxMDhBRTAwMDExNDYyMDQ2MDg5MzAwRjBGN0ZBMDg5QkEzQjkwNjlBQUUNCjoxMDhBRjAwMDkyQjkwNzlBODJCOUI4RjEzOTBGMjlEMDAwOUIwMDJCOUYNCjoxMDhCMDAwMDAxREQwNUYxMzEwODA1OUI1RDFDODNGODAwODA4MkU3REINCjoxMDhCMTAwMDMwNDZDMkU3MDEyM0UzRTcwMDlBMDAyQTA0REIyNUQxQUYNCjoxMDhCMjAwMDA2OUExQUJCMDc5QTBBQkIwMDJCRUNERDAxMjIwNDk5QjYNCjoxMDhCMzAwMDIwNDYwMEYwNUZGQzM5NDYwNDkwMDBGMEFGRkMwMDI4QUUNCjoxMDhCNDAwMDAzRENFMEQxMThGMDAxMEZEREQwQjhGMTM5MEZEOEQxMzYNCjoxMDhCNTAwMDA1OUIwNTlBNUQxQzM5MjMxMzcwMTVGODAxM0MzOTJCRDANCjoxMDhCNjAwMDA1RjFGRjMyNEZEMDAxMzMxMzcwNTRFNzA1OUEwMDJCMDMNCjoxMDhCNzAwMDAyRjEwMTA1MDZEREI4RjEzOTBGRTlEMDA4RjEwMTA4NkQNCjoxMDhCODAwMDA1OUJDMkU3MDI5QTA1RjgwMThDQTVFQjBCMDM5MzQyMDMNCjoxMDhCOTAwMDIxRDAwMDIzMEEyMjA0OTkyMDQ2MDBGMEI0RkFCMTQ1RkUNCjoxMDhCQTAwMDA0OTA0RkYwMDAwMzRGRjAwQTAyNDk0NjIwNDYwNUQxRDkNCjoxMDhCQjAwMDAwRjBBOUZBODE0NjA2NDYwNTk1NzZFNzAwRjBBM0ZBOEINCjoxMDhCQzAwMDMxNDY4MTQ2MDAyMzBBMjIyMDQ2MDBGMDlDRkEwNjQ2RTANCjoxMDhCRDAwMEYyRTc0RkYwMDAwOTAxMjIwNDk5MjA0NjAwRjAwQUZDNTgNCjoxMDhCRTAwMDM5NDYwNDkwMDBGMDVBRkMwMDI4QjZEQzAyRDExOEYwOTcNCjoxMDhCRjAwMDAxMEZCMkQxMTVGODAxM0MzMDJCMDVGMUZGMzI3RkY0QTMNCjoxMDhDMDAwMDBBQUYxNTQ2RjZFNzkzNDUwNUQxMzEyMzBBRjEwMTBBNkINCjoxMDhDMTAwMDhCRjgwMDMwRkZFNjE1NDY5RkU3REZGODY0QjAwN0UwMDkNCjoxMDhDMjAwMDIxOUJERkY4NjBCMDFCQjEwQkYxMDgwMzIxOUExMzYwQTANCjoxMDhDMzAwMDU4NDYxN0IwQkRFOEYwOEYwNjlCMDEyQjdGRjczNUFFODUNCjoxMDhDNDAwMDBFOUIwNzkzNDlFNjAyOUIwMDJCMDNEQzA2OUIwMjJCM0QNCjoxMDhDNTAwMDNGRjdDQ0FFNUQ0NjM5NDYwNDk4RkZGN0NFRjkwMEYxRjgNCjoxMDhDNjAwMDMwMDgwNUY4MDE4QjAyOUFBNUVCMEIwMzlBNDJCMEREQTANCjoxMDhDNzAwMDAwMjMwQTIyMDQ5OTIwNDYwMEYwNDVGQTA0OTBFQUU3MEUNCjoxMDhDODAwMEY4QjAwMTA4NkZDNTAxMDg4QTg5MkRFOUYwNDEwNTQ2NTENCjoxMDhDOTAwMDEwMDcwQzQ2NThENDRCNjgwMDJCMDVEQzBCNkMwMDJCREUNCjoxMDhDQTAwMDAyREMwMDIwQkRFOEYwODFFNjZBMDAyRUY5RDAwMDIzNDYNCjoxMDhDQjAwMDEyRjQ4MDUyMkY2ODIxNkEyQjYwMzJEMDYwNkRBMzg5MzQNCjoxMDhDQzAwMDVBMDcwNUQ1NjM2OEMwMUE2MzZCMEJCMTIzNkNDMDFBRDENCjoxMDhDRDAwMDAwMjMwMjQ2RTY2QTIxNkEyODQ2QjA0NzQzMUNBMzg5NUUNCjoxMDhDRTAwMDA2RDEyOTY4MUQyOTQ4RDgyOTRBQ0E0MEQ2MDc0NEQ1NDMNCjoxMDhDRjAwMDAwMjI2MjYwRDkwNDIyNjkyMjYwMDRENTQyMUMwMUQxOUQNCjoxMDhEMDAwMDJCNjgwM0I5NjA2NTYxNkIyRjYwMDAyOUM5RDAwNEYxM0QNCjoxMDhEMTAwMDQ0MDM5OTQyMDJEMDI4NDYwMEYwOTRGQzAwMjA2MDYzOEUNCjoxMDhEMjAwMEMwRTcwMTIzMjg0NkIwNDc0MTFDQzhEMTJCNjgwMDJCNUYNCjoxMDhEMzAwMEM1RDAxRDJCMDFEMDE2MkIwMUQxMkY2MEIxRTdBMzg5MUYNCjoxMDhENDAwMDQzRjA0MDAzQTM4MUFERTcwRjY5MDAyRkE5RDA5MzA3M0INCjoxMDhENTAwMDBFNjgwOEJGNEI2OTBGNjAxOEJGMDAyM0E2RUIwNzA4MTkNCjoxMDhENjAwMDhCNjBCOEYxMDAwRjlDREQ0MzQ2M0E0NjIxNkFBNjZBNDMNCjoxMDhENzAwMDI4NDZCMDQ3MDAyODA2RENBMzg5NDNGMDQwMDNBMzgxQkUNCjoxMDhEODAwMDRGRjBGRjMwOEVFNzA3NDRBOEVCMDAwOEU5RTcwMEJGOEINCjoxMDhEOTAwMDAxMDA0MDIwMzhCNTBCNjkwNTQ2MEM0NkRCQjExOEIxMUYNCjoxMDhEQTAwMDgzNjkwQkI5MDBGMDYwRjgwQzRCOUM0MjA5RDE2QzY4RTgNCjoxMDhEQjAwMEI0RjkwQzMwN0JCMTIxNDYyODQ2QkRFODM4NDBGRkY3QjYNCjoxMDhEQzAwMDYzQkYwNzRCOUM0MjAxRDFBQzY4RjFFNzA1NEI5QzQyNjUNCjoxMDhERDAwMDA4QkZFQzY4RUNFNzAwMjAzOEJEMDBCRjlDQzUwMTA4NjcNCjoxMDhERTAwMEJDQzUwMTA4N0NDNTAxMDgwMDIzMTBCNTA0NDZDMEU5RDQNCjoxMDhERjAwMDAwMzM4MzYwODE4MTQzNjZDMjgxQzBFOTA0MzM4MzYxQUINCjoxMDhFMDAwMDE5NDYwODIyNUMzMEZFRjdFRUY4MDU0QjYzNjIwNTRCMEQNCjoxMDhFMTAwMEEzNjIwNTRCRTM2MjA1NEIyNDYyMjM2MzEwQkQwMEJGRDANCjoxMDhFMjAwMDNEOTgwMTA4NUY5ODAxMDg5Nzk4MDEwOEJCOTgwMTA4RDANCjoxMDhFMzAwMDAxNDkwMEYwODVCODAwQkY5NThEMDEwODcwQjU0QTFFNDQNCjoxMDhFNDAwMDY4MjU1NTQzMEU0NjA1RjE3NDAxMDBGMDQ5RkMwNDQ2QkYNCjoxMDhFNTAwMDQwQjEwMDIxQzBFOTAwMTYwQzMwQTA2MDA1RjE2ODAyQTUNCjoxMDhFNjAwMEZFRjdDMUY4MjA0NjcwQkQ4MzY5MTBCNTA0NDYzM0JCRDgNCjoxMDhFNzAwMEMwRTkxMjMzMDM2NTEyNEIxMjRBMUI2ODgyNjI5ODQyQTINCjoxMDhFODAwMDA0QkYwMTIzODM2MTAwRjAxRkY4NjA2MDIwNDYwMEYwRkENCjoxMDhFOTAwMDFCRjhBMDYwMjA0NjAwRjAxN0Y4MDAyMkUwNjAwNDIxRDMNCjoxMDhFQTAwMDYwNjhGRkY3QTFGRjAxMjIwOTIxQTA2OEZGRjc5Q0ZGN0UNCjoxMDhFQjAwMDAyMjIxMjIxRTA2OEZGRjc5N0ZGMDEyM0EzNjExMEJEOTINCjoxMDhFQzAwMDI4QzUwMTA4MzE4RTAxMDhGOEI1MUI0QjFFNjhCMzY5MkYNCjoxMDhFRDAwMDA3NDYxM0I5MzA0NkZGRjdDN0ZGNDgzNkQ2RTkwMTM0RDUNCjoxMDhFRTAwMDAxM0IwM0Q1MzM2ODMzQjEzNjY4RjdFN0I0RjkwQzUwNkENCjoxMDhFRjAwMDZEQjE2ODM0RjRFNzA0MjEzODQ2RkZGNzlGRkYzMDYwMTYNCjoxMDhGMDAwMDAwMjhGMUQxMEMyMzNCNjAwNDQ2MjA0NkY4QkQwQjRCRjINCjoxMDhGMTAwMDY1NjZDNEU5MDA1NUE1NjBDNEU5MDMzNUM0RTkwNTU1OTMNCjoxMDhGMjAwMDA4MjIyOTQ2MDRGMTVDMDBGRUY3NURGOEM0RTkwRDU1RkUNCjoxMDhGMzAwMEM0RTkxMjU1RTlFNzAwQkYyOEM1MDEwODAxMDBGRkZGOTkNCjoxMDhGNDAwMDJERTlGODQzODA0Njg5NDYwMEYxNDgwNDAwMjYxNEI5MEINCjoxMDhGNTAwMDMwNDZCREU4Rjg4M0Q0RTkwMTc1MDEzRjAxRDUyNDY4QTYNCjoxMDhGNjAwMEY1RTdBQjg5MDEyQjA3RDlCNUY5MEUzMDAxMzMwM0QwRjINCjoxMDhGNzAwMDI5NDY0MDQ2Qzg0NzA2NDM2ODM1RUVFNzA0NEIxQjY4NjANCjoxMDhGODAwMDE4NkEwNDRCMDAyODA4QkYxODQ2RjAzMDcwNDcwMEJGMkQNCjoxMDhGOTAwMDU4MDEwMDIwQkMwMTAwMjA3MEI1MEU0NkIxRjkwRTEwM0ENCjoxMDhGQTAwMDAwMjk5NkIwMTQ0NjFENDYwN0RBMDAyMzJCNjBCMzg5Q0ENCjoxMDhGQjAwMDFBMDYxMEQ0NEZGNDgwNjMwRUUwNkE0NjAwRjBBNEZDNTkNCjoxMDhGQzAwMDAwMjhGMkRCMDE5QTAyRjQ3MDQyQTJGNTAwNTM1QTQyRTMNCjoxMDhGRDAwMDVBNDEyQTYwRUVFNzQwMjMwMDIwMjM2MDE2QjA3MEJEOUUNCjoxMDhGRTAwMDhCODk3M0I1OUQwNzA2NDYwQzQ2MDdENTA0RjE0NzAzRTgNCjoxMDhGRjAwMDIzNjAyMzYxMDEyMzYzNjEwMkIwNzBCRDAxQUI2QTQ2NDcNCjoxMDkwMDAwMEZGRjdDQUZGMDA5OTA1NDYzMDQ2MDBGMDY5RkI0OEI5RjINCjoxMDkwMTAwMEI0RjkwQzMwOUEwNUVGRDQyM0YwMDMwMzQzRjAwMjAzQjQNCjoxMDkwMjAwMEEzODFFM0U3MEQ0QkIzNjJBMzg5MjA2MDQzRjA4MDAzODMNCjoxMDkwMzAwMEEzODEwMDlCNjM2MTAxOUIyMDYxNUJCMUI0RjkwRTEwQjkNCjoxMDkwNDAwMDMwNDYwMEYwNzNGQzI4QjFBMzg5MjNGMDAzMDM0M0YwRkENCjoxMDkwNTAwMDAxMDNBMzgxQTM4OTFENDNBNTgxQ0RFNzMxOEUwMTA4QkENCjoxMDkwNjAwMDAyNEIwMTQ2MTg2ODAwRjAzQkJCMDBCRjU4MDEwMDIwQ0UNCjoxMDkwNzAwMDcwQjU0NTZBMDQ0NjBFNDYzREI5MTAyMEZGRjdGMEZGNzMNCjoxMDkwODAwMDYwNjJDMEU5MDE1NTA1NjBDNTYwNjU2QUVCNjg4M0IxM0YNCjoxMDkwOTAwMDYzNkFEQjY4NTNGODI2MDBCOEI5MDEyMTAxRkEwNkY1QzYNCjoxMDkwQTAwMDZBMUQ5MjAwMjA0NjAwRjBCRkZBNjBCMUMwRTkwMTY1NzgNCjoxMDkwQjAwMDBFRTAyMTIyMDQyMTIwNDYwMEYwQjZGQTYzNkFFODYwM0YNCjoxMDkwQzAwMERCNjgwMDJCRTREMTAwMjA3MEJEMDI2ODQzRjgyNjIwNDUNCjoxMDkwRDAwMDAwMjNDMEU5MDMzM0Y3RTc3MEI1NDQ2QTA2NDYwRDQ2M0UNCjoxMDkwRTAwMDNDQjkxMDIwRkZGN0JDRkY3MDYyQzBFOTAxNDQwNDYwODYNCjoxMDkwRjAwMEM0NjAzREIxNzM2QTZBNjhEQjY4NTNGODIyMTAyOTYwNjYNCjoxMDkxMDAwMDQzRjgyMjUwNzBCRDJERTlGMDQxMEQ2OTFGNDYwNjQ2MTcNCjoxMDkxMTAwMDBDNDYwMUYxMTQwQzAwMjNEQ0Y4MDAwMDgxQjIwMkZCQzQNCjoxMDkxMjAwMDAxNzEwRjBDMDAwQzAyRkIwMDcwODlCMjAxMzMwMUVCREUNCjoxMDkxMzAwMDAwNDE5RDQyNEZFQTEwNDc0Q0Y4MDQxQkVDRENEN0IxQ0MNCjoxMDkxNDAwMEEzNjhBQjQyMTJEQzYxNjgzMDQ2MDEzMUZGRjc5MEZGNDMNCjoxMDkxNTAwMDIyNjkwMjMyMDRGMTBDMDE4MDQ2OTIwMDBDMzBGREY3QzYNCjoxMDkxNjAwMDFFRkYyMTQ2MzA0NkZGRjdCN0ZGNDQ0NjA0RUI4NTAzNTgNCjoxMDkxNzAwMDAxMzU1RjYxMjU2MTIwNDZCREU4RjA4MTAyMEMxMjA0RDMNCjoxMDkxODAwMDAzNDZCMkI5MDMwNDEwMjAxM0YwN0Y0RjA0QkYxQjAyNDMNCjoxMDkxOTAwMDA4MzAxM0YwNzA0RjA0QkYxQjAxMDQzMDEzRjA0MDRGMzANCjoxMDkxQTAwMDA0QkY5QjAwMDIzMDAwMkIwNkRCNUIwMDAzRDUwMTMwQkYNCjoxMDkxQjAwMDcwNDcwMDIwRThFNzIwMjA3MDQ3MDM2ODEzRjAwNzAyOUINCjoxMDkxQzAwMDAxNDYwQkQwREEwNzIzRDQ5ODA3NDlCRjVCMDg5QjA4RjgNCjoxMDkxRDAwMDAxMjAwQjYwNUNCRjBCNjAwMjIwNzA0Nzk4QjJBOEI5RjkNCjoxMDkxRTAwMDFCMEMxMDIwMTNGMEZGMEYwNEJGMUIwQTA4MzAxQTA3RDYNCjoxMDkxRjAwMDA0QkYxQjA5MDQzMDlBMDcwNEJGOUIwODAyMzBEQTA3M0ENCjoxMDkyMDAwMDAyRDQ1QjA4MDZEMDAxMzAwQjYwNzA0NzEwNDZFOUU3RDYNCjoxMDkyMTAwMDAwMjA3MDQ3MjAyMDcwNDcxMEI1MEM0NjAxMjFGRkY3NTENCjoxMDkyMjAwMDI3RkYwMTIyNDQ2MTAyNjExMEJEMkRFOUY3NEYxNDQ2NkENCjoxMDkyMzAwMDBBNjkyMzY5OUE0MkI4QkYwQjQ2ODg0NkJDQkZBMDQ2NUMNCjoxMDkyNDAwMDFDNDZEOEY4MTA3MEQ0RjgxMDkwRDhGODA4MzBEOEY4MjgNCjoxMDkyNTAwMDA0MTAwN0VCMDkwNkIzNDJCOEJGMDEzMUZGRjcwOEZGNUUNCjoxMDkyNjAwMDAwRjExNDA1MDVFQjg2MEUyQjQ2MDAyMjczNDUxNkQzM0MNCjoxMDkyNzAwMDA0RjExNDAyMDhGMTE0MDEwMkVCODkwMzAxRUI4NzA3RTINCjoxMDkyODAwMDAwOTMwMDlCMDE5MjkzNDIwQ0Q4MDAyRTAzREQ1RUY4MDANCjoxMDkyOTAwMDA0M0QwMDJCNUREMDA2NjEwM0IwQkRFOEYwOEY0M0Y4QkMNCjoxMDkyQTAwMDA0MkJFM0U3QjJGODAwQjBCQkYxMDAwRjIzRDA4OTQ2RUUNCjoxMDkyQjAwMEFDNDY0RkYwMDAwODU5RjgwNDRCRENGODAwQTBBM0IyMEMNCjoxMDkyQzAwMDFGRkE4QUZBMEJGQjAzQTM0RkVBMTQ0QURDRjgwMDQwQUENCjoxMDkyRDAwMDQzNDQ0RkVBMTQ0ODBCRkIwQTg0MDRFQjEzNDRFMjQ2NzANCjoxMDkyRTAwMDlCQjI0M0VBMDQ0MzRGNDU0RkVBMTQ0ODRBRjgwNDNCMTMNCjoxMDkyRjAwMDJCRDhDQ0Y4MDQ4MDAxOUJCM0Y4MDJBMDA0MzJCQUYxNTkNCjoxMDkzMDAwMDAwMEYyMEQwMkI2ODg5NDZBODQ2NEZGMDAwMEJCOUY4MTMNCjoxMDkzMTAwMDAwQzBCOEY4MDI0MDBBRkIwQzQ0NUM0NEM0NDY5QkIyNEYNCjoxMDkzMjAwMDQzRUEwNDQzNENGODA0M0I1OUY4MDQzQkI4RjgwNEIwNTINCjoxMDkzMzAwMDFCMEMwQUZCMDNCMzAzRUIxNDQzNEY0NTRGRUExMzRCREINCjoxMDkzNDAwMDA1RDhDOEY4MDQzMDA0MzU5QkU3RDQ0NkIzRTdFMDQ2QjcNCjoxMDkzNTAwMERERTcwMTNFOTlFNzAwMDAyREU5Rjg0MzE1NDYxMkYwREMNCjoxMDkzNjAwMDAzMDIwNjQ2MEY0NjA3RDAwMTNBMjE0QzAwMjM1NEY4NjkNCjoxMDkzNzAwMDIyMjBGRkY3QzhGRTA3NDZBRDEwMzVEMDc0NkEzQ0I5MEQNCjoxMDkzODAwMDEwMjBGRkY3NkRGRTcwNjJDMEU5MDE0NDA0NjBDNDYwMDQNCjoxMDkzOTAwMEQ2RjgyNDgwRDhGODA4NDA0Q0I5NDBGMjcxMjEzMDQ2MDQNCjoxMDkzQTAwMEZGRjczQUZGMDAyM0M4RjgwODAwMDQ0NjAzNjA0RkYwQjcNCjoxMDkzQjAwMDAwMDhFQjA3MEFENTM5NDYyMjQ2MzA0NkZGRjczNUZGNEQNCjoxMDkzQzAwMDM5NDY4MTQ2MzA0NkZGRjc4N0ZFNEY0NjZEMTAwQkQwNzkNCjoxMDkzRDAwMDIwNjgzOEI5MjI0NjIxNDYzMDQ2RkZGNzI2RkYyMDYwMzQNCjoxMDkzRTAwMEMwRjgwMDgwMDQ0NkU0RTczODQ2QkRFOEY4ODMwMEJGRDMNCjoxMDkzRjAwMEQwQzYwMTA4MkRFOUYwNDcwQzQ2NEZFQTYyMUEyMzY5RUUNCjoxMDk0MDAwMDQ5NjgwQUVCMDMwOUEzNjgwNzQ2MTY0NjA5RjEwMTA1RjYNCjoxMDk0MTAwMEFCNDIzMkRCMzg0NkZGRjcyQkZFMDAyMzgwNDYwMEYxREINCjoxMDk0MjAwMDE0MDExQTQ2NTM0NTJCREIyMDY5MkFFQUVBN0EwNEYxMzMNCjoxMDk0MzAwMDE0MDMxNkYwMUYwMjAxRUI4QTAxMDNFQjgwMEMyNUQwMDgNCjoxMDk0NDAwMEMyRjEyMDBFMDAyMDFFNjg4QTQ2OTY0MDMwNDM0QUY4M0ENCjoxMDk0NTAwMDA0MEI1M0Y4MDQwQjlDNDUyMEZBMEVGMDE0RDg0ODYwMTYNCjoxMDk0NjAwMDA4QjEwOUYxMDIwNTAxM0QzODQ2QzhGODEwNTAyMTQ2RkYNCjoxMDk0NzAwMEZGRjczMkZFNDA0NkJERThGMDg3MDEzMTVCMDBDN0U3RTkNCjoxMDk0ODAwMDQxRjgyMzIwMDEzM0NERTc1MTQ2RENFNzA0Mzk1M0Y4OTYNCjoxMDk0OTAwMDA0MkI0MUY4MDQyRjlDNDVGOUQ4RTRFNzAzNjkwQTY5RDUNCjoxMDk0QTAwMDlCMUEzMEI1MENEMTkyMDAxNDMwMTQzMTg0MTgxMTQ0MzkNCjoxMDk0QjAwMDU0RjgwNDVENTFGODA0MkQ5NTQyMDNEMDA1RDMwMTIzREYNCjoxMDk0QzAwMDE4NDYzMEJEQTA0MkYzRDNGQUU3NEZGMEZGMzNGN0U3NzkNCjoxMDk0RDAwMDJERTlGMDQ3MEQ0NjA3NDYxMTQ2Mjg0NjE0NDZGRkY3OEENCjoxMDk0RTAwMERERkYwNjFFMDhEMTMxNDYzODQ2RkZGN0MxRkQwMTIzRDYNCjoxMDk0RjAwMEMwRTkwNDM2QkRFOEYwODdBNEJGMjM0NjJDNDYzODQ2QjENCjoxMDk1MDAwMDYxNjhBNkJGMUQ0NjAwMjYwMTI2RkZGN0IxRkQyQjY5NDUNCjoxMDk1MTAwMEM2NjAyNjY5MDVGMTE0MDkwNEYxMTQwMjAyRUI4NjA3RkUNCjoxMDk1MjAwMDA5RUI4MzA4MDBGMTE0MDU0RkYwMDAwRTUyRjgwNEFCNkMNCjoxMDk1MzAwMDU5RjgwNDRCMUVGQThBRjFBM0IyQzkxQTIzMENDM0VCRTMNCjoxMDk1NDAwMDFBNDMwM0VCMjE0Mzg5QjI0RkVBMjM0RUM4NDU0MUVBNEYNCjoxMDk1NTAwMDAzNDM5NDQ2NDVGODA0M0JFOEQ4QkM0NTA0RDM1NUY4OEENCjoxMDk1NjAwMDA0M0Q4M0IxMDY2MUM1RTc1Q0Y4MDQxQjFFRkE4MUYzNzQNCjoxMDk1NzAwMDFBMTQwMkVCMTE0MjlCQjI0M0VBMDI0MzRGRUEyMjRFMTUNCjoxMDk1ODAwMDQ1RjgwNDNCRTlFNzAxM0VFOUU3MkRFOUY3NDMwRTQ2REMNCjoxMDk1OTAwMDAxMjE1OUVDMTA4QjE1NDZGRkY3NkFGREM5RjMwQTU0RjcNCjoxMDk1QTAwMDA3NDZDOUYzMTMwMzM0QkIwMTkzQjhGMTAwMDMyN0QwNzYNCjoxMDk1QjAwMDAyQTg0MEY4MDgzREZGRjcwMEZFMDA5OUYwQjEwMTlBQkINCjoxMDk1QzAwMEMwRjEyMDAzMDJGQTAzRjMwQjQzQzI0MDdCNjEwMTkyMTYNCjoxMDk1RDAwMDAxOUJCQjYxMDAyQjE0QkYwMjIxMDEyMTM5NjFDNEIxODENCjoxMDk1RTAwMEE0RjIzMzQ0MDQ0NDM0NjBDMEYxMzUwMDI4NjAzODQ2QTYNCjoxMDk1RjAwMDAzQjBCREU4RjA4MzQzRjQ4MDEzRDVFNzc5NjFFN0U3NzINCjoxMDk2MDAwMDAxQThGRkY3REFGRDAxOUI3QjYxMDEyMTM5NjEyMDMwNjANCjoxMDk2MTAwMEU1RTcwN0VCODEwM0EwRjIzMjQwMzA2MDE4NjlGRkY3RkQNCjoxMDk2MjAwMEFERkRDMEVCNDExMEUxRTczOEI1MDJGQjAxRjQyMTQ2ODYNCjoxMDk2MzAwMDAwRjA1NkY4MDU0NjE4QjEyMjQ2MDAyMUZERjdEM0ZDOEMNCjoxMDk2NDAwMDI4NDYzOEJEMzhCNTA1NDYwMDI5NDVEMDUxRjgwNDNDQjgNCjoxMDk2NTAwMDBDMUYwMDJCQjhCRkU0MTgwMEYwOUNGOTFGNEExMzY4RDgNCjoxMDk2NjAwMDEwNDYzM0I5NjM2MDE0NjAyODQ2QkRFODM4NDAwMEYwMDYNCjoxMDk2NzAwMDkyQjlBMzQyMENEOTIxNjg2MjE4OTM0MjA0QkYxQTY4QjgNCjoxMDk2ODAwMDVCNjg2MzYwMDRCRjUyMTgyMjYwMDQ2MEVDRTcxMzQ2MTUNCjoxMDk2OTAwMDVBNjgwQUIxQTI0MkZBRDkxOTY4NTgxOEEwNDIwQkQxRTcNCjoxMDk2QTAwMDIwNjgwMTQ0NTgxODgyNDIxOTYwREREMTEwNjg1MjY4NjANCjoxMDk2QjAwMDVBNjAwMTQ0MTk2MEQ3RTcwMkQ5MEMyMzJCNjBEM0U3MjUNCjoxMDk2QzAwMDIwNjgyMTE4OEE0MjA0QkYxMTY4NTI2ODYyNjAwNEJGOTINCjoxMDk2RDAwMDA5MTgyMTYwNUM2MEM3RTczOEJEMDBCRjc4NTgwMDIwREENCjoxMDk2RTAwMDcwQjVDRDFDMjVGMDAzMDUwODM1MEMyRDM4QkYwQzI1QjENCjoxMDk2RjAwMDAwMkQwNjQ2MDFEQkE5NDIwM0Q5MEMyMzMzNjAwMDIwNkMNCjoxMDk3MDAwMDcwQkQwMEYwNDdGOTIxNEExNDY4MjE0NjkxQjkyMDRDRjgNCjoxMDk3MTAwMDIzNjgxQkI5MzA0NjAwRjAzREY4MjA2MDI5NDYzMDQ2RUENCjoxMDk3MjAwMDAwRjAzOEY4NDMxQzI0RDEwQzIzMzM2MDMwNDYwMEYwOUQNCjoxMDk3MzAwMDMyRjlFNEU3MEI2ODVCMUIxOEQ0MEIyQjBGRDkwQjYwRDUNCjoxMDk3NDAwMENENTBDQzE4MzA0NjAwRjAyNkY5MDRGMTBCMDAyMzFENTMNCjoxMDk3NTAwMDIwRjAwNzAwQzMxQUQzRDA1QTQyRTI1MEQwRTc4QzQyMUYNCjoxMDk3NjAwMDRCNjgxNkJGNjM2MDEzNjAwQzQ2RUJFNzBDNDY0OTY4MTQNCjoxMDk3NzAwMENDRTdDNDFDMjRGMDAzMDRBMDQyMDVEMDIxMUEzMDQ2RDMNCjoxMDk3ODAwMDAwRjAwOEY4MDEzMENGRDAyNTYwREJFNzc4NTgwMDIwRTINCjoxMDk3OTAwMDdDNTgwMDIwMzhCNTA2NEMwMDIzMDU0NjA4NDYyMzYwNTcNCjoxMDk3QTAwMDAwRjA1MkY5NDMxQzAyRDEyMzY4MDNCMTJCNjAzOEJEOEQNCjoxMDk3QjAwMEQ0NjEwMDIwMUYyOTM4QjUwNDQ2MEQ0NjA0RDkxNjIzNkMNCjoxMDk3QzAwMDAzNjA0RkYwRkYzMDM4QkQ0MjZDMTJCMTUyRjgyMTMwQzcNCjoxMDk3RDAwMDRCQjkyMDQ2MDBGMDMwRjgyQTQ2MDE0NjIwNDZCREU4NDUNCjoxMDk3RTAwMDM4NDAwMEYwMTdCODAxMkIwQUQwNTkxQzAzRDExNjIzQkENCjoxMDk3RjAwMDAzNjAwMTIwRTdFNzAwMjQ0MkY4MjU0MDI4NDY5ODQ3MDcNCjoxMDk4MDAwMDAwMjBFMEU3MDI0QjAxNDYxODY4RkZGN0QzQkYwMEJGMTYNCjoxMDk4MTAwMDU4MDEwMDIwMzhCNTA3NEMwMDIzMDU0NjA4NDYxMTQ2N0MNCjoxMDk4MjAwMDIzNjAwMEYwRjlGODQzMUMwMkQxMjM2ODAzQjEyQjYwRDgNCjoxMDk4MzAwMDM4QkQwMEJGRDQ2MTAwMjAwMEYwREVCODEwQjUwQzQ2ODINCjoxMDk4NDAwMEIxRjkwRTEwMDBGMEE4RjgwMDI4QUJCRjYzNkRBMzg5MzINCjoxMDk4NTAwMDFCMTgyM0Y0ODA1M0FDQkY2MzY1QTM4MTEwQkQyREU5QjENCjoxMDk4NjAwMEYwNDExRjQ2OEI4OURCMDUwNTQ2MEM0NjE2NDYwNUQ1OUINCjoxMDk4NzAwMDAyMjMwMDIyQjFGOTBFMTAwMEYwNjhGOEEzODlCNEY5QjANCjoxMDk4ODAwMDBFMTAyM0Y0ODA1M0EzODEzMjQ2M0I0NjI4NDZCREU4QTANCjoxMDk4OTAwMEYwNDEwMEYwMTdCODEwQjUwQzQ2QjFGOTBFMTAwMEYwMDkNCjoxMDk4QTAwMDU1Rjg0MzFDQTM4OTE1QkY2MDY1MjNGNDgwNTM0M0Y0MjYNCjoxMDk4QjAwMDgwNTNBMzgxMThCRkEzODExMEJEQjFGOTBFMTAwMEYwMzENCjoxMDk4QzAwMDEzQjgwMDAwMzhCNTA3NEMwNTQ2MDg0NjExNDYwMDIyN0INCjoxMDk4RDAwMDIyNjAxQTQ2RUZGN0IwRkI0MzFDMDJEMTIzNjgwM0IxQTQNCjoxMDk4RTAwMDJCNjAzOEJERDQ2MTAwMjAzOEI1MDY0QzAwMjMwNTQ2RjYNCjoxMDk4RjAwMDA4NDYyMzYwMDBGMDcwRjg0MzFDMDJEMTIzNjgwM0IxQ0UNCjoxMDk5MDAwMDJCNjAzOEJERDQ2MTAwMjAzOEI1MDc0QzAwMjMwNTQ2RDQNCjoxMDk5MTAwMDA4NDYxMTQ2MjM2MDAwRjA2N0Y4NDMxQzAyRDEyMzY4MTMNCjoxMDk5MjAwMDAzQjEyQjYwMzhCRDAwQkZENDYxMDAyMDM4QjUwNjRDQjANCjoxMDk5MzAwMDAwMjMwNTQ2MDg0NjIzNjAwMEYwNjZGODQzMUMwMkQxNjgNCjoxMDk5NDAwMDIzNjgwM0IxMkI2MDM4QkRENDYxMDAyMDM4QjUwNzRDQzMNCjoxMDk5NTAwMDA1NDYwODQ2MTE0NjAwMjIyMjYwMUE0NjAwRjA2NEY4QzcNCjoxMDk5NjAwMDQzMUMwMkQxMjM2ODAzQjEyQjYwMzhCREQ0NjEwMDIwQjENCjoxMDk5NzAwMDgyQjAwMUI5MDFBOTQyQjE0QkIxMTM3ODBCNjAxMjc4RTINCjoxMDk5ODAwMDEwMUMxOEJGMDEyMDAyQjA3MDQ3MTA0NkZCRTc2RkYwQjMNCjoxMDk5OTAwMDAxMDBGOEU3NzA0NzcwNDczOEI1MDc0QzA1NDYwODQ2QTANCjoxMDk5QTAwMDExNDYwMDIyMjI2MDFBNDYwMEYwNDZGODQzMUMwMkQxRkMNCjoxMDk5QjAwMDIzNjgwM0IxMkI2MDM4QkRENDYxMDAyMDQ5QjFGRjJBNzANCjoxMDk5QzAwMDg1QkY4QTIzMDM2MDBBNzA0RkYwRkYzMDk4QkYwMTIwRTMNCjoxMDk5RDAwMDcwNDcwODQ2NzA0NzAwMDAwMjRCNTgyMjFBNjA0RkYwNEINCjoxMDk5RTAwMEZGMzA3MDQ3RDQ2MTAwMjAwMjRCNTgyMjFBNjA0RkYwQkMNCjoxMDk5RjAwMEZGMzA3MDQ3RDQ2MTAwMjAwMjRCNTgyMjFBNjA0RkYwQUMNCjoxMDlBMDAwMEZGMzA3MDQ3RDQ2MTAwMjAwMjRCNTgyMjFBNjAwMDIwQkENCjoxMDlBMTAwMDcwNDcwMEJGRDQ2MTAwMjAwMjRCNTgyMjFBNjA0RkYwRkINCjoxMDlBMjAwMEZGMzA3MDQ3RDQ2MTAwMjAwMjRCNTgyMjFBNjA0RkYwN0INCjoxMDlBMzAwMEZGMzA3MDQ3RDQ2MTAwMjAwMjRCNTgyMjFBNjA0RkYwNkINCjoxMDlBNDAwMEZGMzA3MDQ3RDQ2MTAwMjAwNDRBMDU0OTEzNjgwMDJCOTkNCjoxMDlBNTAwMDA4QkYwQjQ2MTg0NDEwNjAxODQ2NzA0NzgwNTgwMDIwMTUNCjoxMDlBNjAwMEQ4NjEwMDIwRkVFNzAwQkZGOEI1MDBCRkY4QkMwOEJDMTUNCjoxMDlBNzAwMDlFNDY3MDQ3RjhCNTAwQkZGOEJDMDhCQzlFNDY3MDQ3Q0MNCjoxMDlBODAwMDAwMDAwMDAwNzU2RTZCNkU2Rjc3NkUyMDY1NzI3MjZGRUUNCjoxMDlBOTAwMDcyMDAwMDAwNkY3NTc0MjA2RjY2MjA2RDY1NkQ2RjcyQzcNCjoxMDlBQTAwMDc5MkY2RTY1NjU2NDIwNkQ2RjcyNjUyMDZENjU2RDZGRDENCjoxMDlBQjAwMDcyNzkwMDAwNzU2RTZCNkU2Rjc3NkUyMDZDNjU2RTY3RTUNCjoxMDlBQzAwMDc0NjgyMDI4NjE3NDc0NjU2RDcwNzQ2NTY0MjA3NDZGQTcNCjoxMDlBRDAwMDIwNjc2NTc0MjA3NDY4NjUyMDZDNjU2RTY3NzQ2ODIwMDMNCjoxMDlBRTAwMDZGNjYyMDYxMjA2RDYxNzAyRjYxNzI3MjYxNzkyRjczRDINCjoxMDlBRjAwMDc0NzI2OTZFNjcyMDZGNjYyMDY5NkU2NDY1NzQ2NTcyNDINCjoxMDlCMDAwMDZENjk2RTYxNzQ2NTIwNkM2NTZFNjc3NDY4MDAwMDAwMzUNCjoxMDlCMTAwMDYxNzQ3NDY1NkQ3MDc0NjU2NDIwNzQ2RjIwNjE2NDc2MUYNCjoxMDlCMjAwMDYxNkU2MzY1MjA3MDYxNzM3NDIwNDU0RjQ2MDAwMDAwQ0MNCjoxMDlCMzAwMDQ5MkY0RjIwNjU3MjcyNkY3MjAwMDAwMDY3NjE3MjYyNzgNCjoxMDlCNDAwMDYxNjc2NTIwNjE2Njc0NjU3MjIwNzQ2ODY1MjA2NTZFNjINCjoxMDlCNTAwMDY0MjA2RjY2MjA3NDY4NjUyMDYzNkY2RTc0NjU2RTc0MzANCjoxMDlCNjAwMDAwMDAwMDAwNzU2RTY1Nzg3MDY1NjM3NDY1NjQyMDY1M0INCjoxMDlCNzAwMDZFNjQyMDZGNjYyMDY0NjE3NDYxMDAwMDc1NkU2NTc4QTQNCjoxMDlCODAwMDcwNjU2Mzc0NjU2NDIwMjc2MjcyNjU2MTZCMjcyMDYyNkINCjoxMDlCOTAwMDc5NzQ2NTAwNjk2QzZDNjU2NzYxNkMyMDYyNzk3NDY1QzUNCjoxMDlCQTAwMDIwMjg2NTZFNjM2RjY0NjU3MzIwNjY3NTc0NzU3MjY1RDENCjoxMDlCQjAwMDIwNjU3ODc0NjU2RTczNjk2RjZFMjA3NDc5NzA2NTI5OUQNCjoxMDlCQzAwMDAwMDAwMDAwNkQ2OTczNkQ2MTc0NjM2ODY1NjQyMDczRTMNCjoxMDlCRDAwMDc0NzI2OTZFNjcyMDc0Nzk3MDY1MjA2OTZFMjA2MzY4OUQNCjoxMDlCRTAwMDc1NkU2QjY1NjQyMDczNzQ3MjY5NkU2NzAwMDAwMDAwQTcNCjoxMDlCRjAwMDY5NkM2QzY1Njc2MTZDMjA2OTZFNjk3NDY5NjE2QzIwNjENCjoxMDlDMDAwMDYyNzk3NDY1MjAyODY1NkU2MzZGNjQ2NTczMjA3NTZFNzQNCjoxMDlDMTAwMDczNzA2NTYzNjk2NjY5NjU2NDIwNjE2NDY0Njk3NDY5MDkNCjoxMDlDMjAwMDZGNkU2MTZDMjA2OTZFNjY2RjcyNkQ2MTc0Njk2RjZFQzQNCjoxMDlDMzAwMDI5MDAwMDAwNjk2QzZDNjU2NzYxNkMyMDY1NkU2MzZGNUMNCjoxMDlDNDAwMDY0Njk2RTY3MjA2RjY2MjA3MzY5NkQ3MDZDNjUyMDc0M0YNCjoxMDlDNTAwMDc5NzA2NTIwNzM2RDYxNkM2QzY1NzIyMDc0Njg2MTZFREINCjoxMDlDNjAwMDIwMzMzMjAwNzU2RTZCNkU2Rjc3NkUyMDczNjk2RDcwODYNCjoxMDlDNzAwMDZDNjUyMDc0Nzk3MDY1MDA3NTZFNkI2RTZGNzc2RTIwMDENCjoxMDlDODAwMDc0NjE2NzAwNjk2RTYxNzA3MDcyNkY3MDcyNjk2MTc0N0YNCjoxMDlDOTAwMDY1MjA3NDYxNjcyMDY2NkY3MjIwNzQ3OTcwNjUwMDAwQkENCjoxMDlDQTAwMDY0NzU3MDZDNjk2MzYxNzQ2NTIwNkI2NTc5NzMyMDY5OTQNCjoxMDlDQjAwMDZFMjA2RjYyNkE2NTYzNzQwMDAwMDAwMDY5NkU3NjYxRjENCjoxMDlDQzAwMDZDNjk2NDIwNTU1NDQ2MkQzODIwNjM2RjZFNzQ2NTZFNDANCjoxMDlDRDAwMDc0MjA2OTZFMjA3Mzc0NzI2OTZFNjcwMDY1Nzg2MzZDQjYNCjoxMDlDRTAwMDc1NjQ2NTY0MjA3NDc5NzA2NTIwNjY2Rjc1NkU2NDAwQjQNCjoxMDlDRjAwMDY1Nzg2MzZDNzU2NDY1NjQyMDc2NjE2Qzc1NjUyMDY2NTMNCjoxMDlEMDAwMDZGNzU2RTY0MDAwMDAwMDA3NjYxNkM3NTY1MjA2NTZFOEQNCjoxMDlEMTAwMDYzNkY2NDY1NjQyMDY5NkUyMDZFNkY2RTJENjM2MTZFODMNCjoxMDlEMjAwMDZGNkU2OTYzNjE2QzIwNjY2RjcyNkQwMDZCNjU3OTIwODANCjoxMDlEMzAwMDY5NkUyMDZENjE3MDIwNjk3MzIwNkU2Rjc0MjA2MTIwRTANCjoxMDlENDAwMDczNzQ3MjY5NkU2NzAwMDA2RDYxNzAyMDY5NzMyMDZFQjQNCjoxMDlENTAwMDZGNzQyMDczNkY3Mjc0NjU2NDAwMDAwMDZENjE3MDIwMTENCjoxMDlENjAwMDZCNjU3OTczMjA2MTcyNjUyMDZFNkY3NDIwNzU2RTY5MDINCjoxMDlENzAwMDcxNzU2NTAwNzQ2RjZGMjA2RDYxNkU3OTIwNjk3NDY1MEYNCjoxMDlEODAwMDZENzMyMDYxNjQ2NDY1NjQyMDc0NkYyMDY1NkU2MzZGMTkNCjoxMDlEOTAwMDY0NjU3MjAwNzQ2RjZGMjA2NjY1NzcyMDY5NzQ2NTZEMDUNCjoxMDlEQTAwMDczMjA2MTY0NjQ2NTY0MjA3NDZGMjA2NTZFNjM2RjY0MDINCjoxMDlEQjAwMDY1NzIwMDAwNjk2RTc0NjU3MjZFNjE2QzIwNjU3MjcyMDYNCjoxMDlEQzAwMDZGNzIzQTIwNjQ2MTc0NjEyMDc0NkY2RjIwNkM2MTcyRUQNCjoxMDlERDAwMDY3NjUwMDAwNjk2RTc0NjU3MjZFNjE2QzIwNjU3MjcyRjENCjoxMDlERTAwMDZGNzIzQTIwNzQ2RjZGMjA2RDYxNkU3OTIwNkU2NTczQUINCjoxMDlERjAwMDc0NjU2NDIwNjM2RjZFNzQ2MTY5NkU2NTcyNzMyMDY2NEENCjoxMDlFMDAwMDZGNzU2RTY0MjA2OTZFMjA3MjY1NjM3NTcyNzM2OTc2MTINCjoxMDlFMTAwMDY1MjA2Njc1NkU2Mzc0Njk2RjZFMDAwMDc1NkU3Mzc1OEMNCjoxMDlFMjAwMDcwNzA2RjcyNzQ2NTY0MjA3NDc5NzA2NTAwMDAwMDAwNTINCjoxMDlFMzAwMDYzNkY2RTc2NjU3MjczNjk2RjZFMjA3NDZGMjA0QTUzMUMNCjoxMDlFNDAwMDRGNEUyMDY2NjE2OTZDNjU2NDNBMjA2QjY1NzkyMDY5QzQNCjoxMDlFNTAwMDZFMjA2RjYyNkE2NTYzNzQyMDY5NzMyMDYxNkUyMDYxOTENCjoxMDlFNjAwMDcyNzI2MTc5MjA2RjcyMjA2RDYxNzAwMDYzNkY2RTc2MUYNCjoxMDlFNzAwMDY1NzI3MzY5NkY2RTIwNzQ2RjIwNEE1MzRGNEUyMDY2NkYNCjoxMDlFODAwMDYxNjk2QzY1NjQzQTIwNkY3MDY1NkU1RjZENjU2RDczQjYNCjoxMDlFOTAwMDc0NzI2NTYxNkQyMDc1NkU2MTc2NjE2OTZDNjE2MjZDNkENCjoxMDlFQTAwMDY1MDAwMDAwNjk2RTc0NjU3MjZFNjE2QzIwNjU3MjcyODcNCjoxMDlFQjAwMDZGNzIwMDAwMzAwMDAwMDA3MzcyNjMyRjYzNjI2RjcyNzQNCjoxMDlFQzAwMDcwNjE3MjczNjU3MjJFNjMwMDAwMDAwMDY1NzI3MjIwMEINCjoxMDlFRDAwMDNEM0QyMDQzNjI2RjcyNEU2RjQ1NzI3MjZGNzIwMDAwOUINCjoxMDlFRTAwMDZDNjU2RTY3NzQ2ODIwM0QzRDIwMjg3MzY5N0E2NTVGRjQNCjoxMDlFRjAwMDc0Mjk2QzY1NkU2Nzc0NjgwMDAwMDAwMDI4Njk3NDJEMTENCjoxMDlGMDAwMDNFNjY2QzYxNjc3MzIwMjYyMDQzNjI2RjcyNDk3NDY1RjgNCjoxMDlGMTAwMDcyNjE3NDZGNzI0NjZDNjE2NzVGNTU2RTZCNkU2Rjc3QkUNCjoxMDlGMjAwMDZFNEM2NTZFNjc3NDY4MjkyMDNEM0QyMDMwMDAwMDAwNEUNCjoxMDlGMzAwMDc2NjE2Qzc1NjUyRDNFNjY2QzYxNjc3MzIwMjYyMDQzRTMNCjoxMDlGNDAwMDYyNkY3MjQ5NzQ2NTcyNjE3NDZGNzI0NjZDNjE2NzVGQUINCjoxMDlGNTAwMDQ5NkU3NDY1Njc2NTcyNTY2MTZDNzU2NTU0NkY2RjRDQjgNCjoxMDlGNjAwMDYxNzI2NzY1MjA3QzdDMjA3NjYxNkM3NTY1MkQzRTc0MUUNCjoxMDlGNzAwMDc5NzA2NTIwM0QzRDIwNDM2MjZGNzI0NjZDNkY2MTc0NUQNCjoxMDlGODAwMDU0Nzk3MDY1MjA3QzdDMjA3NjYxNkM3NTY1MkQzRTc0RkINCjoxMDlGOTAwMDc5NzA2NTIwM0QzRDIwNDM2MjZGNzI0NDZGNzU2MjZDM0QNCjoxMDlGQTAwMDY1NTQ3OTcwNjUwMDAwMDAyODJBNzY2MTZDNzU2NTJEMEUNCjoxMDlGQjAwMDNFNzA3NDcyMjAyNjIwNTM2RDYxNkM2QzU2NjE2Qzc1MTYNCjoxMDlGQzAwMDY1NEQ2MTczNkIyOTIwM0QzRDIwNTY2MTZDNzU2NTMzOEQNCjoxMDlGRDAwMDMyNDI2OTc0MjA3QzdDMjAyODJBNzY2MTZDNzU2NTJENUMNCjoxMDlGRTAwMDNFNzA3NDcyMjAyNjIwNTM2RDYxNkM2QzU2NjE2Qzc1RTYNCjoxMDlGRjAwMDY1NEQ2MTczNkIyOTIwM0QzRDIwNTY2MTZDNzU2NTM2NUENCjoxMEEwMDAwMDM0NDI2OTc0MDAwMDAwMDAyODJBNzY2MTZDNzU2NTJENjENCjoxMEEwMTAwMDNFNzA3NDcyMjAyNjIwNTM2RDYxNkM2QzU2NjE2Qzc1QjUNCjoxMEEwMjAwMDY1NEQ2MTczNkIyOTIwM0QzRDIwNTY2MTZDNzU2NTM2MjkNCjoxMEEwMzAwMDM0NDI2OTc0MDAwMDAwMDA2OTc0MkQzRTc0Nzk3MDY1QzMNCjoxMEEwNDAwMDIwMjEzRDIwNDM2MjZGNzI0OTZFNzY2MTZDNjk2NDU0RDENCjoxMEEwNTAwMDc5NzA2NTAwNjk3MzVGNjY2OTc4NjU2NDVGNzQ3OTcwQUINCjoxMEEwNjAwMDY1Mjg2OTc0MkQzRTc0Nzk3MDY1MjkwMDYzNjI2RjcyOEENCjoxMEEwNzAwMDVGNzY2MTZDNzU2NTVGNjk3MzVGNjM2RjZFNzQ2MTY5NEMNCjoxMEEwODAwMDZFNjU3MjI4Njk3NDI5MDA3MjY1NjM3NTcyNzM2NTY0MDANCjoxMEEwOTAwMDJEM0U3NDc5NzA2NTIwM0QzRDIwNDM2MjZGNzI0OTZFOUMNCjoxMEEwQTAwMDc2NjE2QzY5NjQ1NDc5NzA2NTAwMDAwMDYzNjI2RjcyNTgNCjoxMEEwQjAwMDVGNzY2MTZDNzU2NTVGNjk3MzVGNjk2RTc0NjU2NzY1MEUNCjoxMEEwQzAwMDcyMjg3NjYxNkM3NTY1MjkwMDAwMDAwMDI4Njk3NDJEN0UNCjoxMEEwRDAwMDNFNjY2QzYxNjc3MzIwMjYyMDQzNjI2RjcyNDk3NDY1MjcNCjoxMEEwRTAwMDcyNjE3NDZGNzI0NjZDNjE2NzVGNDk3NDY1NzI2MTc0MDYNCjoxMEEwRjAwMDY5NkU2NzUzNzQ3MjY5NkU2NzQzNjg3NTZFNkI3MzI5MTYNCjoxMEExMDAwMDIwM0QzRDIwMzAwMDAwMDA2MzYyNkY3MjVGNzY2MTZDMUQNCjoxMEExMTAwMDc1NjU1RjY5NzM1RjYyNzk3NDY1NUY3Mzc0NzI2OTZFODgNCjoxMEExMjAwMDY3Mjg3NjYxNkM3NTY1MjkyMDdDN0MyMDYzNjI2RjcyN0MNCjoxMEExMzAwMDVGNzY2MTZDNzU2NTVGNjk3MzVGNzQ2NTc4NzQ1RjczNzINCjoxMEExNDAwMDc0NzI2OTZFNjcyODc2NjE2Qzc1NjUyOTAwMDAwMDAwN0QNCjoxMEExNTAwMDYzNjI2RjcyNUY3NjYxNkM3NTY1NUY2OTczNUY2RDYxNzUNCjoxMEExNjAwMDcwMjg2RDYxNzAyOTAwMDA2MzYyNkY3MjVGNzY2MTZDQTgNCjoxMEExNzAwMDc1NjU1RjY5NzM1RjY4NjE2QzY2NUY2NjZDNkY2MTc0NUINCjoxMEExODAwMDI4NzY2MTZDNzU2NTI5MDA3MzcyNjMyRjY5NkU2OTc0MzYNCjoxMEExOTAwMDJFNjMwMDY1NzI2MTczNjUyMDRFNEY1NDIwNzM3NTYzQTINCjoxMEExQTAwMDYzNjU3MzczNjY3NTZDMjAyNTZDNzgwRDBBMDA3MzcyOTUNCjoxMEExQjAwMDYzMkY2NjZDNjE3MzY4MkU2MzAwNzA3MjZGNjc3MjYxRTMNCjoxMEExQzAwMDZEMjA0RTRGNTQyMDczNzU2MzYzNjU3MzczNjY3NTZDQjENCjoxMEExRDAwMDIwMjU2Qzc4MEQwQTAwNDU3MjcyNkY3MjIwNTI0RTQ3MkUNCjoxMEExRTAwMDNBMjAyNTMwMzI2Qzc4MEQwQTAwNzM3MjYzMkY3MjZFM0MNCjoxMEExRjAwMDY3MkU2MzAwNDU3MjcyNkY3MjNBMjAyNTczM0EyMDI1RUMNCjoxMEEyMDAwMDY0MEQwQTAwNjM2Rjc1NkU3NDY1NzIzMjIwNkU2Rjc0MzANCjoxMEEyMTAwMDIwNjk2RDcwNkM2NTBBMDA3MzcyNjMyRjY0NjU3NjY5REUNCjoxMEEyMjAwMDYzNjUyRTYzMDA0NTcyNzI2RjcyMkMyMDYzNkY3NTZFQ0ENCjoxMEEyMzAwMDc0MjA3NzY1NkU3NDIwNjQ2Rjc3NkUyMTBEMEEwMDc3NDUNCjoxMEEyNDAwMDYxNzI2RTY5NkU2NzJDMjA3MDZGNzc2NTcyMjA2OTZFMUYNCjoxMEEyNTAwMDc0NjU3MjcyNzU3MDc0NjU2NDIwNjQ3NTcyNjk2RTY3NzYNCjoxMEEyNjAwMDIwNzA3MjY1NzY2OTZGNzU3MzIwNjM2Rjc1NkU3NDJFREENCjoxMEEyNzAwMDIwMjA1MjY1NzM3NDZGNzI2OTZFNjcyRTIwNkM2MTczNTMNCjoxMEEyODAwMDc0NjMzRDNEMjU2Qzc1MkMyMDY1NzI2MTczNjU3MzNENkINCjoxMEEyOTAwMDI1NkM3NTJDMjA2RjY2NjY3MzY1NzQzRDI1NjQwRDBBMDgNCjoxMEEyQTAwMDAwNzc2MTcyNkU2OTZFNjcyQzIwNzA2Rjc3NjU3MjIwMUYNCjoxMEEyQjAwMDY5NkU3NDY1NzI3Mjc1NzA3NDY1NjQyQzIwNjU3MjYxNjQNCjoxMEEyQzAwMDczNjU3MzIwNkQ2MTcyNkIyQzIwNzI2NTczNzQ2RjcyOEQNCjoxMEEyRDAwMDY5NkU2NzJFMjA2QzYxNzM3NDYzM0QzRDI1NkM3NTJDMkYNCjoxMEEyRTAwMDIwNjU3MjYxNzM2NTczM0QyNTZDNzUwRDBBMDA3NzYxOTkNCjoxMEEyRjAwMDcyNkU2OTZFNjcyQzIwNzA2Rjc3NjU3MjIwNjk2RTc0NUMNCjoxMEEzMDAwMDY1NzI3Mjc1NzA3NDY1NjQyQzIwNjU3MjYxNzM2NTczMTMNCjoxMEEzMTAwMDIwNkQ2MTcyNkIyQzIwNzI2NTczNzQ2RjcyNjk2RTY3NDkNCjoxMEEzMjAwMDIwNkM2MTczNzQ2MzNEM0QyNTZDNzUyQzIwNjU3MjYxRjINCjoxMEEzMzAwMDczNjU3MzNEMjU2Qzc1MEQwQTAwNkU2RjIwNjM2Rjc1MzQNCjoxMEEzNDAwMDZFNzQyMDY0NjU3NDY1NjM3NDY1NjQzQTIwMjA2QzYxODINCjoxMEEzNTAwMDczNzQ2MzNEM0QyNTZDNzUyQzIwNjU3MjYxNzM2NTczNjQNCjoxMEEzNjAwMDNEMjU2Qzc1MkMyMDZGNjY2NjczNjU3NDNEMjU2NDBEMDQNCjoxMEEzNzAwMDBBMDA3MjY1NjE2NDY5NkU2NzIwNTI0QjIwMjU2NDIwNzMNCjoxMEEzODAwMDQwMjAyNTMwMzQ3ODBEMEEwMDZGNzY2NTcyNzc3MjY5NDcNCjoxMEEzOTAwMDc0Njk2RTY3MjA1MjRCMjAyNTY0MEQwQTAwNzI2NTczNDQNCjoxMEEzQTAwMDY1NzQ3NDY5NkU2NzIwNTI0QjIwMEQwQTAwNzM3NDZGRDgNCjoxMEEzQjAwMDcyNjk2RTY3MjA1MjRCMjAyNTY0MjA0MDIwMjUzMDM0N0UNCjoxMEEzQzAwMDc4MEQwQTAwNEY3NTc0MjA2RjY2MjA2MjZGNzU2RTY0OTkNCjoxMEEzRDAwMDczMjA3MjY1NjE2NDY5NkU2NzIwNjk2RTY0NjU3ODIwQjgNCjoxMEEzRTAwMDI1NjQyMDY2NkY3MjIwNzI2QjBBMDA0Mjc1NzQ3NDZGNjgNCjoxMEEzRjAwMDZFMjA2RTZGNzQyMDcwNzI2NTczNzM2NTY0MEEwMDY4RjYNCjoxMEE0MDAwMDY1NkM2QzZGMjA3MzZGNkM2RjBEMEEwMDQzNDE0RTQzOTcNCjoxMEE0MTAwMDQ1NEMyMTBEMEEwMDNFM0UyMDAwM0MzQzIwMDA0NTcyODgNCjoxMEE0MjAwMDcyNkY3MjJDMjA3NTQ1NDM0MzVGNkQ2MTZCNjU1RjZCODYNCjoxMEE0MzAwMDY1NzkyMDY2NjE2OTZDNjU2NDBBMDA0NTcyNzI2RjcyQTUNCjoxMEE0NDAwMDJDMjA3NTQ1NDM0MzVGNzM2ODYxNzI2NTY0NUY3MzY1NzMNCjoxMEE0NTAwMDYzNzI2NTc0MjA2NjYxNjk2QzY1NjQwQTAwNjU3MjcyNzYNCjoxMEE0NjAwMDZGNzIyQzIwNzU0NTQzNDMyMDY2NjE2OTZDNjU2NDBBRjANCjoxMEE0NzAwMDAwNDU3MjcyNkY3MjJDMjA2QjY1NzkyMDczNjk3QTY1NjINCjoxMEE0ODAwMDIwNkQ3NTczNzQyMDYyNjUyMDNDM0QyMDM2MzQwQTAwQ0YNCjoxMEE0OTAwMDczNzI2MzJGNjM3Mjc5NzA3NDZGMkU2MzAwMzA4MjAyNUYNCjoxMEE0QTAwMEUxMzA4MjAyODhBMDAzMDIwMTAyMDIwMTAxMzAwQTA2QTMNCjoxMEE0QjAwMDA4MkE4NjQ4Q0UzRDA0MDMwMjMwODE4MDMxMEIzMDA5RTINCjoxMEE0QzAwMDA2MDM1NTA0MDYxMzAyNTU1MzMxMTEzMDBGMDYwMzU1ODgNCjoxMEE0RDAwMDA0MDgwQzA4NEQ2MTcyNzk2QzYxNkU2NDMxMTIzMDEwQTENCjoxMEE0RTAwMDA2MDM1NTA0MEEwQzA5NTM2RjZDNkYyMDRCNjU3OTczOTINCjoxMEE0RjAwMDMxMTAzMDBFMDYwMzU1MDQwQjBDMDc1MjZGNkY3NDIwOTkNCjoxMEE1MDAwMDQzNDEzMTE1MzAxMzA2MDM1NTA0MDMwQzBDNzM2RjZDNzMNCjoxMEE1MTAwMDZGNkI2NTc5NzMyRTYzNkY2RDMxMjEzMDFGMDYwOTJBQzkNCjoxMEE1MjAwMDg2NDg4NkY3MEQwMTA5MDExNjEyNjg2NTZDNkM2RjQwNEMNCjoxMEE1MzAwMDczNkY2QzZGNkI2NTc5NzMyRTYzNkY2RDMwMjAxNzBEQzENCjoxMEE1NDAwMDMxMzgzMTMxMzAzNzMwMzIzMzMwMzMzMzVBMTgwRjMyRkINCjoxMEE1NTAwMDMwMzYzODMxMzAzMjM1MzAzMjMzMzAzMzMzNUEzMDgxNUYNCjoxMEE1NjAwMDkyMzEwQjMwMDkwNjAzNTUwNDA2MTMwMjU1NTMzMTExN0QNCjoxMEE1NzAwMDMwMEYwNjAzNTUwNDA4MEMwODRENjE3Mjc5NkM2MTZFNEENCjoxMEE1ODAwMDY0MzExMjMwMTAwNjAzNTUwNDBBMEMwOTUzNkY2QzZGQzYNCjoxMEE1OTAwMDIwNEI2NTc5NzMzMTIyMzAyMDA2MDM1NTA0MEIwQzE5Q0ENCjoxMEE1QTAwMDQxNzU3NDY4NjU2RTc0Njk2MzYxNzQ2RjcyMjA0MTc0N0INCjoxMEE1QjAwMDc0NjU3Mzc0NjE3NDY5NkY2RTMxMTUzMDEzMDYwMzU1RDkNCjoxMEE1QzAwMDA0MDMwQzBDNzM2RjZDNkY2QjY1Nzk3MzJFNjM2RjZEODYNCjoxMEE1RDAwMDMxMjEzMDFGMDYwOTJBODY0ODg2RjcwRDAxMDkwMTE2MjgNCjoxMEE1RTAwMDEyNjg2NTZDNkM2RjQwNzM2RjZDNkY2QjY1Nzk3MzJFNUUNCjoxMEE1RjAwMDYzNkY2RDMwNTkzMDEzMDYwNzJBODY0OENFM0QwMjAxM0QNCjoxMEE2MDAwMDA2MDgyQTg2NDhDRTNEMDMwMTA3MDM0MjAwMDRDMEE2N0YNCjoxMEE2MTAwMDMzRURFNEQ4MkMxMDYwQTk5MThDNUYyQjZBREE2MDA2QzgNCjoxMEE2MjAwMDcwQjEzRjY0Q0U5RkQ5MENFODhGN0UyQUI2RUU3OERGRkENCjoxMEE2MzAwMDBGQjg3Nzg0OUU4NEM2QzUyMkMxRjc4NEIxMTVFRERDQkUNCjoxMEE2NDAwMEExMjE2QkU4OEIzMjUyNENCQTRBOUUwOTAzRjRBMzgxRDQNCjoxMEE2NTAwMERDMzA4MUQ5MzA4MTlGMDYwMzU1MUQyMzA0ODE5NzMwNUENCjoxMEE2NjAwMDgxOTRBMTgxODZBNDgxODMzMDgxODAzMTBCMzAwOTA2RDkNCjoxMEE2NzAwMDAzNTUwNDA2MTMwMjU1NTMzMTExMzAwRjA2MDM1NTA0RDgNCjoxMEE2ODAwMDA4MEMwODRENjE3Mjc5NkM2MTZFNjQzMTEyMzAxMDA2RUQNCjoxMEE2OTAwMDAzNTUwNDBBMEMwOTUzNkY2QzZGMjA0QjY1Nzk3MzMxQjUNCjoxMEE2QTAwMDEwMzAwRTA2MDM1NTA0MEIwQzA3NTI2RjZGNzQyMDQzRDUNCjoxMEE2QjAwMDQxMzExNTMwMTMwNjAzNTUwNDAzMEMwQzczNkY2QzZGOTYNCjoxMEE2QzAwMDZCNjU3OTczMkU2MzZGNkQzMTIxMzAxRjA2MDkyQTg2MDENCjoxMEE2RDAwMDQ4ODZGNzBEMDEwOTAxMTYxMjY4NjU2QzZDNkY0MDczQUUNCjoxMEE2RTAwMDZGNkM2RjZCNjU3OTczMkU2MzZGNkQ4MjA5MDBBMUU4RTMNCjoxMEE2RjAwMEM3OTZFRkNGNkY5NTMwMDkwNjAzNTUxRDEzMDQwMjMwM0UNCjoxMEE3MDAwMDAwMzAwQjA2MDM1NTFEMEYwNDA0MDMwMjA0RjAzMDFEMzYNCjoxMEE3MTAwMDA2MDM1NTFEMEUwNDE2MDQxNDM1OEQ1OENBODY1QjIwOTkNCjoxMEE3MjAwMDM5RjkxRTE5QTQ4QzJCMTI5NDZDMjAxMEU5MzAwQTA2RkENCjoxMEE3MzAwMDA4MkE4NjQ4Q0UzRDA0MDMwMjAzNDcwMDMwNDQwMjIwMjUNCjoxMEE3NDAwMDYxMUEwNjY2RjI4NzZENDcxNDVFMDFBODFBMkZCMTY4NzgNCjoxMEE3NTAwMDBDODVDMkNEQ0JEMDhFOEIwMjNFMjNCQkM2QzBGMUM2Q0ENCjoxMEE3NjAwMDAyMjA0NUNFQTFDNDE1OUY1NzU0NDAxMEVCMEI1QTYyRUUNCjoxMEE3NzAwMEVDMEUzMzg1QjQwMDVFMUZEMTk1ODMwQUJEMTFEOTZGRUQNCjoxMEE3ODAwMDZDMjkwMDAwRTUwMjhCODFCNjc2NUFEQjg0RTVENTc4MkENCjoxMEE3OTAwMDA3REE0MTYxMEJFRENCRkYxRjA5MkY5QUUyRkI5RDY4QTENCjoxMEE3QTAwMEQzNTg3QjQ1MDU0RTAwMDAwMDAwMDAwMDAwMDAwMDAxNkENCjoxMEE3QjAwMDAyMDMwNDA2MDcwODA5MDAwMDAwMDAwMTAyMDMwNDAwNjgNCjoxMEE3QzAwMEEwODYwMTAwNDAwRDAzMDA4MDFBMDYwMDAwMzUwQzAwMzENCjoxMEE3RDAwMDQwNDIwRjAwODA4NDFFMDAwMDA5M0QwMDAwMTI3QTAwRjQNCjoxMEE3RTAwMDAwMjRGNDAwMDAzNjZFMDEwMDQ4RTgwMTAwNkNEQzAyMzENCjoxMEE3RjAwMDZDNjk2MjJGNzU3MzYyNjQyRjc1NzM2MjY0NUY2MzZGMzcNCjoxMEE4MDAwMDZFNjYyRTYzMDAxMjAxMDAwMjAwMDAwMDQwODMwNDEwRjcNCjoxMEE4MTAwMDU3MDAwMjAxMDIwMzAxNTM2RjZDNkYyMDRCNjU3OTczN0YNCjoxMEE4MjAwMDAwNTM2RjZDNkYwMDczNkY2QzZGNjM2MTY2NjU2MjYxN0MNCjoxMEE4MzAwMDYyNjUwMDA0MDMwOTA0NkI2NTc5MjA2ODYxNkU2NDZDQ0QNCjoxMEE4NDAwMDY1MjAyQjIwNjE3MDcwNjk2NDIwNkU2Rjc0MjA2MTc1QzMNCjoxMEE4NTAwMDc0Njg2NTZFNzQ2OTYzMEEwMDYzNjE2QzYzMjA3NDYxNzcNCjoxMEE4NjAwMDY3M0EyMDBBMDA2OTZFNzAyMDIwNzQ2MTY3M0EyMDBBRjYNCjoxMEE4NzAwMDAwNDM0QzQxMjA2RTZGNzQyMDdBNjU3MjZGMEEwMDU1NTgNCjoxMEE4ODAwMDMyNDY1RjUyNDU0NzQ5NTM1NDQ1NTIwQTAwNzM2ODYxNDYNCjoxMEE4OTAwMDMyMzUzNjNBMjAwMDc1MzI2NjVGNzI2NTY3Njk3Mzc0QzcNCjoxMEE4QTAwMDY1NzIyMDc0Njk2RDY1M0EyMDI1NjQyMDZENzMwQTAwMTUNCjoxMEE4QjAwMDU1MzI0NjVGNDE1NTU0NDg0NTRFNTQ0OTQzNDE1NDQ1RUQNCjoxMEE4QzAwMDBBMDA3NTMyNjY1RjYxNzU3NDY4NjU2RTc0Njk2MzYxRUMNCjoxMEE4RDAwMDc0NjUyMDc0Njk2RDY1M0EyMDI1NjQyMDZENzMwQTAwRTMNCjoxMEE4RTAwMDU1MzI0NjVGNTY0NTUyNTM0OTRGNEUwQTAwNTUzMjQ2M0YNCjoxMEE4RjAwMDVGNTY0NTRFNDQ0RjUyMEEwMDQ1NzI3MjZGNzIyQzIwQ0INCjoxMEE5MDAwMDc1NkU2QjZFNkY3NzZFMjA1NTMyNDYyMDYzNkY2RDZEN0UNCjoxMEE5MTAwMDYxNkU2NDBBMDA1NTMyNDYyMDQ1NzI3MjZGNzIyMDYzODANCjoxMEE5MjAwMDZGNjQ2NTIwMjUzMDM0NzgwQTAwNzUzMjY2MjA3MjY1QzANCjoxMEE5MzAwMDczNzAzQTIwMDA0RTZGNzQyMDY1NkU2Rjc1Njc2ODIwRTMNCjoxMEE5NDAwMDczNzA2MTYzNjUyMDY2NkY3MjIwNTUzMjQ2MjA3MjY1QjANCjoxMEE5NTAwMDczNzA2RjZFNzM2NTJDMjA3NzcyNjk3NDY1NjI2MTYzQzINCjoxMEE5NjAwMDZCMEEwMDJFMkUyRjJFMkUyRjY2Njk2NDZGMzIyRjc1RTQNCjoxMEE5NzAwMDMyNjYyRTYzMDA1NTMyNDY1RjU2MzIwMDVCMjU3MzVEQUENCjoxMEE5ODAwMDIwMDA0OTRFNTY0MTRDNDk0NDIwNEM0RjQ3MjA1NDQxRTkNCjoxMEE5OTAwMDQ3MEEwMDJFMkUyRjJFMkUyRjY2Njk2NDZGMzIyRjZDRTENCjoxMEE5QTAwMDZGNjcyRTYzMDAyNTczM0EyNTY0M0EyMDAwNEQ0MzAwRkINCjoxMEE5QjAwMDQ3NDEwMDQzNTAwMDQ1NTI1MjAwNTA0MTUyNTM0NTAwMTgNCjoxMEE5QzAwMDQzNTQ0MTUwMDA1NTMyNDYwMDQ0NTU0RDUwMDA0NDU1QzMNCjoxMEE5RDAwMDRENTAzMjAwNDg0OTQ0MDA1NTUzNDIwMDFCNUIzMTNCMDcNCjoxMEE5RTAwMDMzMzI2RDQ0NDU0MjU1NDcxQjVCMzA2RDAwMUI1QjMxNzQNCjoxMEE5RjAwMDNCMzMzMTZENDQ0NTQyNTU0NzFCNUIzMDZEMDAxQjVCNUINCjoxMEFBMDAwMDMxM0IzMzMzNkQ1NDQ5NEQ0NTFCNUIzMDZEMDAxQjVCNEYNCjoxMEFBMTAwMDMxM0IzMzM0NkQ1NzQxNEM0QzQ1NTQxQjVCMzA2RDAwMUENCjoxMEFBMjAwMDFCNUIzMTNCMzMzNTZENTM1NDRGNTIxQjVCMzA2RDAwMTQNCjoxMEFBMzAwMDU0NDk0RDQ1NEY1NTU0MjA0MzQ5NDQzQTIwMjUzMDM4MTgNCjoxMEFBNDAwMDc4MEEwMDUyNjU2Mzc2MjA3MDYxNjM2QjY1NzQwQTAwNTINCjoxMEFBNTAwMDIwMjA0MzQ5NDQzQTIwMjUzMDM4NzgyMDBBMDAyMDIwMUQNCjoxMEFBNjAwMDYzNkQ2NDNBMjAyNTMwMzI3ODBBMDAyMDIwNkM2NTZFRDANCjoxMEFBNzAwMDY3NzQ2ODNBMjAyNTY0MEEwMDQ1NzI3MjZGNzIyQzY5MDcNCjoxMEFBODAwMDZFNzY2MTZDNjk2NDIwNkM2NTZFNjc3NDY4MjA2NjY5QjcNCjoxMEFBOTAwMDY1NkM2NDIwNjY2RjcyMjA2OTZFNjk3NDIwNzA2MTYzRjINCjoxMEFBQTAwMDZCNjU3NDBBMDAyRTJFMkYyRTJFMkY2NjY5NjQ2RjMyNkUNCjoxMEFBQjAwMDJGNjM3NDYxNzA2ODY5NjQyRTYzMDA0NTcyNzI2RjcyRUYNCjoxMEFBQzAwMDJDMjA2OTZFNzY2MTZDNjk2NDIwNjM2OTY0MjAzMDBBQTkNCjoxMEFBRDAwMDAwNjE2NDY0Njk2RTY3MjA2MTIwNkU2NTc3MjA2MzY5MzgNCjoxMEFBRTAwMDY0MEEwMDczNzk2RTYzNjg3MjZGNkU2OTdBNjk2RTY3NjMNCjoxMEFBRjAwMDIwNzQ2RjIwNjM2OTY0MEEwMDQ1NzI3MjZGNzIyQzIwQTMNCjoxMEFCMDAwMDZFNkY3NDIwNjU2RTZGNzU2NzY4MjA2RDY1NkQ2RjcyMEUNCjoxMEFCMTAwMDc5MjA2NjZGNzIyMDZFNjU3NzIwNDM0OTQ0MkUyMDIwOEQNCjoxMEFCMjAwMDcyNjU3NDc1NzI2RTIwNDI1NTUzNTkyRTBBMDA0OTRFNTMNCjoxMEFCMzAwMDU2NDE0QzQ5NDQ1RjUzNDU1MTBBMDA0ODYxNzY2NTIwQUYNCjoxMEFCNDAwMDI1NjQyRjI1NjQyMDYyNzk3NDY1NzMwQTAwNDI1NTUzODkNCjoxMEFCNTAwMDU5MjA3NzY5NzQ2ODIwMjUzMDM4NzgwQTAwNjk2NzZFNTMNCjoxMEFCNjAwMDZGNzI2OTZFNjcyMDcyNjE2RTY0NkY2RDIwNjM2RjZFQzUNCjoxMEFCNzAwMDc0MjA3MDYxNjM2QjY1NzQyMDY2NzI2RjZEMjAyNTMwODANCjoxMEFCODAwMDM0NzgwQTAwNDI3NTY2NjY2NTcyNjk2RTY3MjA3MzY1N0YNCjoxMEFCOTAwMDcxNzU2NTZFNjM2NTIwNjU3MjcyNkY3MjBBMDA0NTcyMjkNCjoxMEFCQTAwMDcyNkY3MjJDMjA3MjY1NjY3MjY1NzM2ODIwNjM2OTY0QzcNCjoxMEFCQjAwMDIwNjY2MTY5NkM2NTY0MEEwMDY5Njc2RTZGNzI2OTZFMTANCjoxMEFCQzAwMDY3MjA3NTZFNzc2MTcyNzI2MTZFNzQ2NTY0MjA2MzZGNjENCjoxMEFCRDAwMDZFNzQyMDcwNjE2MzZCNjU3NDBBMDA0MjU1NTM1OTBBQTQNCjoxMEFCRTAwMDAwNDM1NDQxNTA0ODQ5NDQ1RjQ5NEU0OTU0MkMyMDY1MjQNCjoxMEFCRjAwMDcyNzI2RjcyMjA3NDY4Njk3MzIwNzM2ODZGNzU2QzY0MDkNCjoxMEFDMDAwMDIwNjE2QzcyNjU2MTY0NzkyMDYyNjUyMDY4NjE2RTY0QTANCjoxMEFDMTAwMDZDNjU2NDBBMDA0MzU0NDE1MDQ4NDk0NDVGNTA0OTRFQjINCjoxMEFDMjAwMDQ3MEEwMDUwNDk0RTQ3MjA3NzcyNjk3NDY1NjI2MTYzMzQNCjoxMEFDMzAwMDZCM0EyMDI1NjQyMDZENzMwQTAwNDM1NDQxNTA0ODQ5MDMNCjoxMEFDNDAwMDQ0NUY1NzQ5NEU0QjBBMDA0MzU0NDE1MDQ4NDk0NDVGQzINCjoxMEFDNTAwMDQzNDI0RjUyMEEwMDQ1NzI3MjZGNzIyQzY5NkU3NjYxRTANCjoxMEFDNjAwMDZDNjk2NDIwMzAyMDZDNjU2RTY3NzQ2ODIwNjY2OTY1NjUNCjoxMEFDNzAwMDZDNjQyMDY2NkY3MjIwNjM2MjZGNzIyMDcwNjE2MzZCMTgNCjoxMEFDODAwMDY1NzQwQTAwNDM2ODYxNkU2RTY1NkMyMDYyNzU3Mzc5NDUNCjoxMEFDOTAwMDIwNjY2RjcyMjA0MzQyNEY1MjBBMDA0MzQyNEY1MjIwQjcNCjoxMEFDQTAwMDc3NzI2OTc0NjU2MjYxNjM2QjNBMjAyNTY0MjA2RDczMDUNCjoxMEFDQjAwMDBBMDA0MzU0NDE1MDQ4NDk0NDVGNEQ1MzQ3MEEwMDQ1RjgNCjoxMEFDQzAwMDcyNzI2RjcyMkM2OTZFNzY2MTZDNjk2NDIwMzAyMDZDRDANCjoxMEFDRDAwMDY1NkU2Nzc0NjgyMDY2Njk2NTZDNjQyMDY2NkY3MjIwQjMNCjoxMEFDRTAwMDRENTM0NzJGNTUzMjQ2MjA3MDYxNjM2QjY1NzQwQTAwREYNCjoxMEFDRjAwMDQzNjg2MTZFNkU2NTZDMjA2Mjc1NzM3OTIwNjY2RjcyNTENCjoxMEFEMDAwMDIwNEQ1MzQ3MEEwMDQzNTQ0MTUwNDg0OTQ0NUY0MzQxNTINCjoxMEFEMTAwMDRFNDM0NTRDMEEwMDY1NzI3MjZGNzIyQzIwNzU2RTY5NDUNCjoxMEFEMjAwMDZENzA2QzY1NkQ2NTZFNzQ2NTY0MjA0ODQ5NDQyMDYzODANCjoxMEFEMzAwMDZENjQzQTIwMjUzMDMyNzgwRDBBMDA1MzY1NkU2NDIwMjgNCjoxMEFENDAwMDY0NjU3NjY5NjM2NTIwNzU3MDY0NjE3NDY1MjAyNTY0NDcNCjoxMEFENTAwMDIxMEEwMDYxNkM2NzAwNzM2OTY3MDA3ODM1NjMwMDJFMTMNCjoxMEFENjAwMDJFMkYyRTJFMkY2NjY5NjQ2RjMyMkY2Mzc0NjE3MDJFMjINCjoxMEFENzAwMDYzMDA1MDY5NkUyMDY0NkY2NTczMjA2RTZGNzQyMDZEODANCjoxMEFEODAwMDYxNzQ2MzY4MjEwQTAwNzA2QzYxNzQ2NjZGNzI2RDJENjYNCjoxMEFEOTAwMDcwNjk2RTJENjg2MTczNjgzQTIwMDA2MTc1NzQ2ODY1MkENCjoxMEFEQTAwMDZFNzQ2OTYzMkQ3MDY5NkUyRDY4NjE3MzY4M0EyMDAwNTYNCjoxMEFEQjAwMDczNjg2MTcyNjU2NDJENzM2NTYzNzI2NTc0M0EyMDAwMEYNCjoxMEFEQzAwMDcwNkM2MTc0NjY2RjcyNkQyRDcwNzU2MjZCNjU3OTNBMjcNCjoxMEFERDAwMDIwMDA2NDY1NzY2OTYzNjUyRDcwNzU2MjZCNjU3OTNBRUMNCjoxMEFERTAwMDIwMDA2OTY0MDA2RTYxNkQ2NTAwNjQ2OTczNzA2QzYxNTgNCjoxMEFERjAwMDc5NEU2MTZENjUwMDY5NjM2RjZFMDA2NTcyNzI2RjcyODYNCjoxMEFFMDAwMDJDMjA3MDYxNzI3MzY1NUY2MzZDNjk2NTZFNzQ1RjcwMkUNCjoxMEFFMTAwMDY5NkUyMDY2NjE2OTZDNjU2NDBBMDA0MzUwNUY2MzZEMEENCjoxMEFFMjAwMDY0NDc2NTc0NTI2NTc0NzI2OTY1NzMwQTAwNDM1MDVGQzQNCjoxMEFFMzAwMDYzNkQ2NDQ3NjU3NDRCNjU3OTQxNjc3MjY1NjU2RDY1REYNCjoxMEFFNDAwMDZFNzQwQTAwNDM1MDVGNjM2RDY0NTM2NTc0NTA2OTZFOUQNCjoxMEFFNTAwMDBBMDA0MzUwNUY2MzZENjQ0MzY4NjE2RTY3NjU1MDY5QzMNCjoxMEFFNjAwMDZFMEEwMDQzNTA1RjYzNkQ2NDQ3NjU3NDUwNjk2RTU0QTkNCjoxMEFFNzAwMDZGNkI2NTZFMEEwMDQ1NzI3MjZGNzIyQzIwNkQ2OTczN0MNCjoxMEFFODAwMDczNjk2RTY3MjA2QjY1Nzk0MTY3NzI2NTY1NkQ2NTZFODQNCjoxMEFFOTAwMDc0MjA2RjcyMjA3MDY5NkU0ODYxNzM2ODQ1NkU2MzIwMUMNCjoxMEFFQTAwMDY2NkY3MjIwNjM2RDY0NDc2NTc0NTA2OTZFMEEwMDQ1NzENCjoxMEFFQjAwMDcyNzI2RjcyMkMyMDY5NkU3NjYxNkM2OTY0MjA2MzZDQUINCjoxMEFFQzAwMDY5NjU2RTc0MjA3MDY5NkUyMDczNzU2MjYzNkY2RDZENTUNCjoxMEFFRDAwMDYxNkU2NDBBMDA0MTU0NTQ0NTRENTA1NDUzMjA2QzY1RDINCjoxMEFFRTAwMDY2NzQzQTIwMjU2NDBBMDA0NDY1NzY2OTYzNjUyMDZDQkYNCjoxMEFFRjAwMDZGNjM2QjY1NjQyMTBBMDA2MTY0NjQ2OTZFNjcyMDc1MjUNCjoxMEFGMDAwMDczNjU3MjIwNjQ2NTc0NjE2OTZDNzMyMDc0NkYyMDZGNUYNCjoxMEFGMTAwMDc1NzQ3MDc1NzQwRDBBMDA3MDc1NjI2QzY5NjMyRDZCQzENCjoxMEFGMjAwMDY1NzkwMDQzNTI0NTQ0MjAyMzI1NjQyMDY5NzMyMDY5RDQNCjoxMEFGMzAwMDZFNzY2MTZDNjk2NDBBMDA2NjZGNzU2RTY0MjA3MjZCNzANCjoxMEFGNDAwMDIwNkQ2MTc0NjM2ODIwNjY2RjcyMjA2MTZDNkM2Rjc3MkUNCjoxMEFGNTAwMDRDNjk3Mzc0MjA2OTc0NjU2RDIwMjgyNTY0MjkwRDBBNzUNCjoxMEFGNjAwMDAwNEU0RjIwNzI2QjIwNkQ2MTc0NjM2ODIwNjY2RjcyQjMNCjoxMEFGNzAwMDIwNjE2QzZDNkY3NzRDNjk3Mzc0MjA2OTc0NjU2RDIwMDcNCjoxMEFGODAwMDBEMEEwMDc0NzI3NTY1MjA3MjcwNDk2NDQ4NjE3MzY4QjcNCjoxMEFGOTAwMDNBMjAwMDcyNzA0OTY0NDg2MTczNjgyNTY0M0EyMDAwNjENCjoxMEFGQTAwMDUyNEIyMDI1NjQyMDY5NzMyMDYxMjA3MjcwNDk2NDIwMEYNCjoxMEFGQjAwMDZENjE3NDYzNjgyMTBEMEEwMDZFNkY3NDIwNjU2RTZGOTkNCjoxMEFGQzAwMDc1Njc2ODIwNzI2MTZEMjA2MTZDNkM2RjYzNjE3NDY1NzgNCjoxMEFGRDAwMDY0MjA2NjZGNzIyMDZENjE3NDYzNjg2OTZFNjcyMDUyQzkNCjoxMEFGRTAwMDRCMjc3MzIwMjgyNTY0MjkwRDBBMDA3MTczNkY3Mjc0MzINCjoxMEFGRjAwMDIwNkM2NTZFNjc3NDY4M0EyMDI1NjQwQTAwNjU3MjcyNzkNCjoxMEIwMDAwMDZGNzIyQzIwNzA2MTcyNzM2NTVGNjc2NTc0NUY2MTczMjYNCjoxMEIwMTAwMDczNjU3Mjc0Njk2RjZFMjA2NjYxNjk2QzY1NjQwQTAwOUQNCjoxMEIwMjAwMDQxNEM0QzRGNTc1RjRDNDk1MzU0MjA2ODYxNzMyMDI1NjUNCjoxMEIwMzAwMDY0MjA2MzcyNjU2NDczMEEwMDQxNEM0QzRGNTc1RjRDNDcNCjoxMEIwNDAwMDQ5NTM1NDVGNEQ0MTU4NUY1MzQ5NUE0NTIwNDU3ODYzRjENCjoxMEIwNTAwMDY1NjU2NDY1NjQwQTAwNzM2MTc2NjU2NDIwMjU2NDIwMTMNCjoxMEIwNjAwMDYzNzI2NTY0NjU2RTc0Njk2MTZDNzMwQTAwNDU3MjcyMUYNCjoxMEIwNzAwMDZGNzIyQzIwNkU2RjIwNjE3NTc0Njg2NTZFNzQ2OTYzRTENCjoxMEIwODAwMDIwNjM3MjY1NjQ2NTZFNzQ2OTYxNkMwQTAwNEY2RTZDNTINCjoxMEIwOTAwMDc5MjA2RjZFNjUyMDYxNjM2MzZGNzU2RTc0MkMyMDZFMEUNCjoxMEIwQTAwMDc1NkM2QzY5NkU2NzIwNkY3NTc0MjA3NTczNjU3MjIwOUUNCjoxMEIwQjAwMDY0NjU3NDYxNjk2QzczMjA2RjZFMjA3MjY1NzM3MDZGNjQNCjoxMEIwQzAwMDZFNzM2NTBEMEEwMDcyNjU3Mzc1NkM3NDY5NkU2NzIwMjYNCjoxMEIwRDAwMDZGNzI2NDY1NzIyMDZGNjYyMDYzNzI2NTY0NzMzQTBBRUENCjoxMEIwRTAwMDAwNDM1MjQ1NDQyMDQ5NDQyMDI4MjMyMDI1NjQyOTBBNEUNCjoxMEIwRjAwMDAwNDY0OTQ0NEY1RjMyNUYzMDAwODg3NjYzMUJENEEwMUUNCjoxMEIxMDAwMDQyN0Y1NzczMEVDNzFDOUUwMjc5MDA3MDZDNjE3NDAwRjkNCjoxMEIxMTAwMDcyNkIwMDc1NzAwMDYzNkM2OTY1NkU3NDUwNjk2RTAwQzcNCjoxMEIxMjAwMDRFNEY1NDIwNjE2NDY0Njk2RTY3MjA3NTczNjU3MjIwQTgNCjoxMEIxMzAwMDY5NkU2NjZGMjA3NDZGMjA2MTczNzM2NTcyNzQ2OTZGRDYNCjoxMEIxNDAwMDZFMjA3MjY1NzM3MDZGNkU3MzY1MEQwQTAwNTI1MDQ5MDANCjoxMEIxNTAwMDQ0MjA2ODYxNzM2ODNBMjAwMDRFNkY3NDIwNzY2NTcyRUYNCjoxMEIxNjAwMDY5NjY2OTY1NjQyQzIwNkU3NTZDNkM2OTZFNjcyMDZGMEENCjoxMEIxNzAwMDc1NzQyMDc1NzM2NTcyMjA2NDY1NzQ2MTY5NkM3MzIwRTENCjoxMEIxODAwMDZGNkUyMDcyNjU3MzcwNkY2RTczNjUwRDBBMDA0MTc1ODYNCjoxMEIxOTAwMDc0NjgyMDczNzQ2MTc0NjUyMDY5NzMyMDY5NkU2OTc0QzINCjoxMEIxQTAwMDY5NjE2QzY5N0E2NTY0MEEwMDQxNzU3NDY4MjA3Mzc0MUENCjoxMEIxQjAwMDYxNzQ2NTIwNjk3MzIwNEU0RjU0MjA2OTZFNjk3NDY5MEINCjoxMEIxQzAwMDYxNkM2OTdBNjU2NDJFMjAyMDQ5NkU2OTc0Njk2MTZDQ0UNCjoxMEIxRDAwMDY5N0E2OTZFNjcyRTJFMEEwMDU3NjE3MjZFNjk2RTY3MTINCjoxMEIxRTAwMDNBMjA2RDY1NkQ2RjcyNzkyMDYzNkY3MjcyNzU3MDc0M0QNCjoxMEIxRjAwMDY5NkY2RTIwNjQ2NTc0NjU2Mzc0NjU2NDJFMjAyMDcyQzcNCjoxMEIyMDAwMDY1NzM3NDZGNzI2OTZFNjcyMDY2NzI2RjZEMjA2MjYxMUMNCjoxMEIyMTAwMDYzNkI3NTcwMkUyRTBBMDA3MDY5NkUyMDYzNkY2NDY1MTMNCjoxMEIyMjAwMDNBMjAyMjI1NzMyMjBBMDA2MTc0NzQ2NTZENzA3NDczNkMNCjoxMEIyMzAwMDVGNkM2NTY2NzQzQTIwMjU2NDBBMDA3MDY5NkUyMDZFNDINCjoxMEIyNDAwMDZGNzQyMDczNjU3NDJFMEEwMDQ0NDU1NjQ5NDM0NTIwQTcNCjoxMEIyNTAwMDRDNEY0MzRCNDU0NDIxMEEwMDQ1NzI3MjZGNzIyQzIwQkINCjoxMEIyNjAwMDcyNkU2NzIwNjY2MTY5NkM2NTY0MEEwMDcyNzA0OTY0NzkNCjoxMEIyNzAwMDNBMjAwMDRGNzU3NDIwNkY2NjIwNkQ2NTZENkY3Mjc5OEUNCjoxMEIyODAwMDIwNjY2RjcyMjA3MjY1NzM2OTY0NjU2RTc0MjA2QjY1RTkNCjoxMEIyOTAwMDc5NzMwRDBBMDA0RDQxNDQ0NTIwNjM3MjY1NjQ0OTY0MjkNCjoxMEIyQTAwMDNBMjAwMDQ1NzI3MjZGNzIyQzIwNzA3NTYyNkI2NTc5NUUNCjoxMEIyQjAwMDIwNjM3MjY1NjQ2NTZFNzQ2OTYxNkMyMDc0Nzk3MDY1NzENCjoxMEIyQzAwMDIwNkU2Rjc0MjA3Mzc1NzA3MDZGNzI3NDY1NjQwQTAwRkQNCjoxMEIyRDAwMDQ1NzI3MjZGNzIyQzIwNDM0RjUzNDUyMDYxNkM2NzIwN0ENCjoxMEIyRTAwMDI1NjQyMDZFNkY3NDIwNzM3NTcwNzA2RjcyNzQ2NTY0NUUNCjoxMEIyRjAwMDBBMDA2NTcyNzI2RjcyMkMyMDcwNjE3MjczNjU1RjZERTcNCjoxMEIzMDAwMDYxNkI2NTVGNjM3MjY1NjQ2NTZFNzQ2OTYxNkMyMDY2MEMNCjoxMEIzMTAwMDYxNjk2QzY1NjQwQTAwNjU3MjcyNkY3MjJDMjA3MjY1RDcNCjoxMEIzMjAwMDcxNzU2OTcyNjU2NDIwNzA2MTcyNjE2RDY1NzQ2NTcyQjINCjoxMEIzMzAwMDI4NzMyOTIwNjY2RjcyMjA2RDYxNkI2NTQzNzI2NTY0QTYNCjoxMEIzNDAwMDY1NkU3NDY5NjE2QzIwNjE3MjY1MjA2RDY5NzM3MzY5RTMNCjoxMEIzNTAwMDZFNjcwQTAwNzA2OTZFNDE3NTc0NjgyMDY5NzMyMDcyQTcNCjoxMEIzNjAwMDY1NzE3NTY5NzI2NTY0MEEwMDYzNjg2NTYzNkI2OTZFMEYNCjoxMEIzNzAwMDY3MjA2MzcyNjU2NDQ5NjQzQTIwMDA0MzcyNjU2NDIwMDMNCjoxMEIzODAwMDI1NjQyMDY2NjE2OTZDNjU2NDIxMEQwQTAwNjQ2NTcyM0MNCjoxMEIzOTAwMDIwNzM2OTY3MjA1QjI1NjQ1RDNBMjAwMDcwNjE2MzZCRjANCjoxMEIzQTAwMDY1NjQwMDYzNjI2RjcyMjA2OTZFNzA3NTc0MjA3Mzc0RDcNCjoxMEIzQjAwMDcyNzU2Mzc0NzU3MjY1M0EyMDI1NjQyMDYyNzk3NDY1Q0MNCjoxMEIzQzAwMDczMEEwMDYzNjI2RjcyMjA3MjY1NzEzQTIwMDA0MzU0MDENCjoxMEIzRDAwMDQxNTA1RjRENDE0QjQ1NUY0MzUyNDU0NDQ1NEU1NDQ5QjINCjoxMEIzRTAwMDQxNEMwQTAwNkQ2MTZCNjU1RjYzNzI2NTY0NjU2RTc0RTQNCjoxMEIzRjAwMDY5NjE2QzIwNzQ2OTZENjUzQTIwMjU2NDIwNkQ3MzBBNUINCjoxMEI0MDAwMDAwNDM1NDQxNTA1RjQ3NDU1NDVGNDE1MzUzNDU1MjU0QTQNCjoxMEI0MTAwMDQ5NEY0RTBBMDA2NzY1NzQ1RjYxNzM3MzY1NzI3NDY5QTINCjoxMEI0MjAwMDZGNkUyMDc0Njk2RDY1M0EyMDI1NjQyMDZENzMwQTAwODMNCjoxMEI0MzAwMDYzNjI2RjcyMjA1QjI1NjQ1RDNBMjAwQTAwNDM1NDQxQzkNCjoxMEI0NDAwMDUwNUY0MzQxNEU0MzQ1NEMwQTAwNDM1NDQxNTA1RjQ3Q0YNCjoxMEI0NTAwMDQ1NTQ1RjQ5NEU0NjRGMEEwMDQzNTQ0MTUwNUY0MzRDQTgNCjoxMEI0NjAwMDQ5NDU0RTU0NUY1MDQ5NEUwQTAwNDM1NDQxNTA1RjUyODMNCjoxMEI0NzAwMDQ1NTM0NTU0MEEwMDQzNTQ0MTUwNUY0RTQ1NTg1NDVGNkMNCjoxMEI0ODAwMDQxNTM1MzQ1NTI1NDQ5NEY0RTBBMDA3NTZFNzc2MTZFRDENCjoxMEI0OTAwMDc0NjU2NDIwNDc0NTU0NUY0RTQ1NTg1NDVGNDE1MzUzOEINCjoxMEI0QTAwMDQ1NTI1NDQ5NEY0RTJFMjAyMDZDNjE3Mzc0NjM2RDY0NzUNCjoxMEI0QjAwMDIwM0QzRDIwMzA3ODI1MzAzMjc4MEEwMDY1NzI3MjZGNjkNCjoxMEI0QzAwMDcyMkMyMDY5NkU3NjYxNkM2OTY0MjA2MzZENjQwQTAwNzkNCjoxMEI0RDAwMDYzNjI2RjcyMjA2Rjc1NzQ3MDc1NzQyMDczNzQ3Mjc1MDcNCjoxMEI0RTAwMDYzNzQ3NTcyNjUzQTIwMjU2NDIwNjI3OTc0NjU3MzJFRTENCjoxMEI0RjAwMDIwMjA1MjY1NzQ3NTcyNkUyMDMwNzgyNTMwMzI3ODBBQkINCjoxMEI1MDAwMDAwNTU3MDY0NjE3NDY1MjA3MDY5NkUyMDY2NjE2OTZDQjUNCjoxMEI1MTAwMDIwNkM2NTZFNjc3NDY4MEEwMDRFNjU3NzIwNzA2OTZFRUUNCjoxMEI1MjAwMDIwNzM2NTc0M0EyMDI1NzMwQTAwNzA2OTZFNDE3NTc0NDINCjoxMEI1MzAwMDY4MjA2NjYxNjk2QzY1NjQyMDY2NkY3MjIwNzU3MDY0NEUNCjoxMEI1NDAwMDYxNzQ2NTIwNzA2OTZFMEEwMDZFNjU3NzIwNTA0OTRFRkYNCjoxMEI1NTAwMDIwNjk3MzIwNzQ2RjZGMjA3MzY4NkY3Mjc0MjA2RjcyMkMNCjoxMEI1NjAwMDIwNzQ2RjZGMjA2QzZGNkU2NzIwNUIyNTY0MjA2Mjc5OUENCjoxMEI1NzAwMDc0NjU3MzVEMEEwMDZFNjU3NzIwNzA2OTZFM0EyMDI1RTgNCjoxMEI1ODAwMDczMjA1QjI1NjQyMDYyNzk3NDY1NzM1RDBBMDA1MDY5REQNCjoxMEI1OTAwMDZFMjA2MTc1NzQ2ODIwNjY2MTY5NkM2NTY0MEEwMDYzNzkNCjoxMEI1QTAwMDYyNkY3MjVGNzY2MTZDNzU2NTVGNjc2NTc0NUY2MjZGMEQNCjoxMEI1QjAwMDZGNkM2NTYxNkUwMDYzNjI2RjcyNUY3NjYxNkM3NTY1NUENCjoxMEI1QzAwMDVGNjM2RjcwNzk1Rjc0NjU3ODc0NUY3Mzc0NzI2OTZFQUUNCjoxMEI1RDAwMDY3MDA2MzYyNkY3MjVGNzY2MTZDNzU2NTVGNjM2RjcwNDENCjoxMEI1RTAwMDc5NUY2Mjc5NzQ2NTVGNzM3NDcyNjk2RTY3MDA2MzYyMTQNCjoxMEI1RjAwMDZGNzI1Rjc2NjE2Qzc1NjU1RjY3NjU3NDVGNjE3MjcyQUINCjoxMEI2MDAwMDYxNzk1RjZDNjU2RTY3NzQ2ODAwNjM2MjZGNzI1Rjc2MDQNCjoxMEI2MTAwMDYxNkM3NTY1NUY2NzY1NzQ1RjZENjE3MDVGNkM2NTZFQTkNCjoxMEI2MjAwMDY3NzQ2ODAwNDM2MjZGNzI0NTcyNzI2RjcyM0EyMDMwQkQNCjoxMEI2MzAwMDc4MjU3ODNBMjAyNTczM0EyMDI1NjQzQTIwMjU3MzBBMjQNCjoxMEI2NDAwMDAwNjM2MjZGNzI1Rjc2NjE2Qzc1NjU1RjY5NzM1RjYyREMNCjoxMEI2NTAwMDc5NzQ2NTVGNzM3NDcyNjk2RTY3Mjg3NjYxNkM3NTY1NUQNCjoxMEI2NjAwMDI5MDA2MzYyNkY3MjVGNzY2MTZDNzU2NTVGNjk3MzVGRjUNCjoxMEI2NzAwMDc0NjU3ODc0NUY3Mzc0NzI2OTZFNjcyODc2NjE2Qzc1MkYNCjoxMEI2ODAwMDY1MjkwMDYzNjI2RjcyNUY3NjYxNkM3NTY1NUY2OTczQ0YNCjoxMEI2OTAwMDVGNjE3MjcyNjE3OTI4NzY2MTZDNzU2NTI5MDA2MzYyRjkNCjoxMEI2QTAwMDZGNzI1Rjc2NjE2Qzc1NjU1RjY5NzM1RjYyNkY2RjZDRjcNCjoxMEI2QjAwMDY1NjE2RTI4NzY2MTZDNzU2NTI5MDAyRTJFMkYyRTJFMDENCjoxMEI2QzAwMDJGNzQ2OTZFNzk2MzYyNkY3MjJGNzM3MjYzMkY2MzYyNzYNCjoxMEI2RDAwMDZGNzIyRTY4MDA2MzYyNkY3MjVGNzY2MTZDNzU2NTVGNzINCjoxMEI2RTAwMDY5NzM1RjZENjE3MDI4NzY2MTZDNzU2NTI5MDA0MzYyQ0UNCjoxMEI2RjAwMDZGNzI0OTZFNzQ2NTY3NjU3MjU0Nzk3MDY1MDA0MzYyNTQNCjoxMEI3MDAwMDZGNzI0Mjc5NzQ2NTUzNzQ3MjY5NkU2NzU0Nzk3MDY1QUINCjoxMEI3MTAwMDAwNDM2MjZGNzI1NDY1Nzg3NDUzNzQ3MjY5NkU2NzU0MzMNCjoxMEI3MjAwMDc5NzA2NTAwNDM2MjZGNzI0MTcyNzI2MTc5NTQ3OTcwMDkNCjoxMEI3MzAwMDY1MDA0MzYyNkY3MjRENjE3MDU0Nzk3MDY1MDA0MzYyQjkNCjoxMEI3NDAwMDZGNzI1NDYxNjc1NDc5NzA2NTAwNDM2MjZGNzI1MzY5MTgNCjoxMEI3NTAwMDZENzA2QzY1NTQ3OTcwNjUwMDQzNjI2RjcyNDI2RjZGRjMNCjoxMEI3NjAwMDZDNjU2MTZFNTQ3OTcwNjUwMDQzNjI2RjcyNEU3NTZDRTINCjoxMEI3NzAwMDZDNTQ3OTcwNjUwMDQzNjI2RjcyNTU2RTY0NjU2NjY5REENCjoxMEI3ODAwMDZFNjU2NDU0Nzk3MDY1MDA0MzYyNkY3MjQ4NjE2QzY2REYNCjoxMEI3OTAwMDQ2NkM2RjYxNzQ1NDc5NzA2NTAwNDM2MjZGNzI0NjZDRDkNCjoxMEI3QTAwMDZGNjE3NDU0Nzk3MDY1MDA0MzYyNkY3MjQ0NkY3NTYyQTMNCjoxMEI3QjAwMDZDNjU1NDc5NzA2NTAwNDk2RTc2NjE2QzY5NjQyMDc0QkINCjoxMEI3QzAwMDc5NzA2NTAwNDM1MDIwNkQ2MTcwMjA2ODYxNzMyMDI1OTkNCjoxMEI3RDAwMDY0MjA2NTZDNjU2RDY1NkU3NDczMEEwMDQzNTA1RjcwMUMNCjoxMEI3RTAwMDY5NkU1MDcyNkY3NDZGNjM2RjZDMEEwMDQzNTA1RjczQzENCjoxMEI3RjAwMDc1NjI0MzZGNkQ2RDYxNkU2NDBBMDA0MzUwNUY2QjY1RTcNCjoxMEI4MDAwMDc5NDE2NzcyNjU2NTZENjU2RTc0MEEwMDQzNTA1RjcwQkINCjoxMEI4MTAwMDY5NkU0MTc1NzQ2ODBBMDA0MzUwNUY2RTY1Nzc1MDY5QzANCjoxMEI4MjAwMDZFNDU2RTYzMEEwMDQzNTA1RjcwNjk2RTQ4NjE3MzY4Q0QNCjoxMEI4MzAwMDQ1NkU2MzBBMDA0MzUwNUY2NzY1NzQ0QjY1Nzk0MTY3RTUNCjoxMEI4NDAwMDcyNjU2NTZENjU2RTc0MEEwMDQzNTA1RjY3NjU3NDUyN0ENCjoxMEI4NTAwMDY1NzQ3MjY5NjU3MzBBMDA1NTZFNkI2RTZGNzc2RTIwNDINCjoxMEI4NjAwMDZCNjU3OTIwMjU2NDBBMDA0NzQxMjA2RDYxNzAyMDY4NkUNCjoxMEI4NzAwMDYxNzMyMDI1NjQyMDY1NkM2NTZENjU2RTc0NzMwQTAwQzQNCjoxMEI4ODAwMDQ3NDE1RjYzNkM2OTY1NkU3NDQ0NjE3NDYxNDg2MTczQkMNCjoxMEI4OTAwMDY4MEEwMDQ3NDE1RjcyNzA0OTY0MEEwMDQ3NDE1RjYxNkUNCjoxMEI4QTAwMDZDNkM2Rjc3NEM2OTczNzQwQTAwNDc0MTVGNjU3ODc0RkMNCjoxMEI4QjAwMDY1NkU3MzY5NkY2RTczMEEwMDY1NzI3MjZGNzIyQzIwMDkNCjoxMEI4QzAwMDcwNjE3MjczNjk2RTY3MjA2NjYxNjk2QzY1NjQwQTAwRjUNCjoxMEI4RDAwMDQ1NzI3MjZGNzIyQzIwNjU3ODcwNjU2Mzc0Njk2RTY3NEINCjoxMEI4RTAwMDIwNjM2MjZGNzIyMDZENjE3MDBBMDA0NTcyNzI2RjcyMjANCjoxMEI4RjAwMDJDMjA2NTc4NzA2NTYzNzQ2OTZFNjcyMDY5NkU3NDIwQUENCjoxMEI5MDAwMDY2NkY3MjIwNkQ2MTcwMjA2QjY1NzkwQTAwNDM1NDQxNDcNCjoxMEI5MTAwMDUwNUY2MzZDNjk2NTZFNzQ0NDYxNzQ2MTQ4NjE3MzY4RkINCjoxMEI5MjAwMDBBMDAyMDIwMDA0MzU0NDE1MDVGNzI3MDBBMDAyMDIwMUENCjoxMEI5MzAwMDQ5NDQzQTIwMjU3MzBBMDAyMDIwNkU2MTZENjUzQTIwNDMNCjoxMEI5NDAwMDI1NzMwQTAwNDM1NDQxNTA1Rjc1NzM2NTcyMEEwMDIwRTUNCjoxMEI5NTAwMDIwNDk0NDNBMjAwMDQzNTQ0MTUwNUY3MDc1NjI0QjY1NjINCjoxMEI5NjAwMDc5NDM3MjY1NjQ1MDYxNzI2MTZENzMwQTAwMjAyMDYzQ0YNCjoxMEI5NzAwMDcyNjU2NDVGNzQ3OTcwNjUzQTIwMzA3ODI1MzAzMjc4NkENCjoxMEI5ODAwMDBBMDAyMDIwNjE2QzY3NUY3NDc5NzA2NTNBMjAyNTY0MzUNCjoxMEI5OTAwMDBBMDA0MzU0NDE1MDVGNjU3ODYzNkM3NTY0NjU0QzY5NzcNCjoxMEI5QTAwMDczNzQwQTAwNDM1NDQxNTA1RjY1Nzg2MzZDNzU2NDY1MzUNCjoxMEI5QjAwMDRDNjk3Mzc0MjA2NDZGNkU2NTBBMDA0MzU0NDE1MDVGOTQNCjoxMEI5QzAwMDY1Nzg3NDY1NkU3MzY5NkY2RTczMEEwMDQzNTQ0MTUwRjUNCjoxMEI5RDAwMDVGNkY3MDc0Njk2RjZFNzMwQTAwNDM1NDQxNTA1RjcwRkINCjoxMEI5RTAwMDY5NkU0MTc1NzQ2ODBBMDA0MzU0NDE1MDVGNzA2OTZFMTYNCjoxMEI5RjAwMDUwNzI2Rjc0NkY2MzZGNkMwQTAwMjAzRDNEMjAyNTY0QTgNCjoxMEJBMDAwMDBBMDA2OTZFNzY2MTZDNjk2NDIwNkI2NTc5MjAyNTY0MzMNCjoxMEJBMTAwMDBBMDA0NTcyNzI2RjcyMkMyMDY1Nzg3MDY1NjM3NDY5RDQNCjoxMEJBMjAwMDZFNjcyMDYzNjI2RjcyMjA2MTcyNzI2MTc5MEEwMDQ1RUQNCjoxMEJBMzAwMDcyNzI2RjcyMkMyMDZGNzU3NDIwNkY2NjIwNkQ2NTZENDkNCjoxMEJBNDAwMDZGNzI3OTIwNjY2RjcyMjA2MTZDNkM2Rjc3MjA2QzY5MDENCjoxMEJBNTAwMDczNzQyRTBBMDA2MzZGNzM2NTIwNkI2NTc5MjA2ODYxQ0INCjoxMEJBNjAwMDczMjAyNTY0MjA2NTZDNjU2RDY1NkU3NDczMEEwMDQzRjANCjoxMEJBNzAwMDRGNTM0NTVGNEI0NTU5NUY0QzQxNDI0NTRDNUY0QjU0REENCjoxMEJBODAwMDU5MEEwMDQzNEY1MzQ1NUY0QjQ1NTk1RjRDNDE0MjQ1NkUNCjoxMEJBOTAwMDRDNUY0MTRDNDcwQTAwNDM0RjUzNDU1RjRCNDU1OTVGNEMNCjoxMEJBQTAwMDRDNDE0MjQ1NEM1RjQzNTI1NjBBMDA0MzRGNTM0NTVGNTkNCjoxMEJBQjAwMDRCNDU1OTVGNEM0MTQyNDU0QzVGNTgwQTAwNDM0RjUzMzgNCjoxMEJBQzAwMDQ1NUY0QjQ1NTk1RjRDNDE0MjQ1NEM1RjU5MEEwMDU3MTENCjoxMEJBRDAwMDYxNzI2RTY5NkU2NzJDMjA3NTZFNzI2NTYzNkY2NzZFM0ENCjoxMEJBRTAwMDY5N0E2NTY0MjA2MzZGNzM2NTIwNkI2NTc5MjA2RjcwNzgNCjoxMEJBRjAwMDc0Njk2RjZFMjAyNTY0MEEwMDQ1NzI3MjZGNzIyQzIwODMNCjoxMEJCMDAwMDQzNjI2RjcyNEQ2MTcwNTQ3OTcwNjUyMDY1Nzg3MDY1MUQNCjoxMEJCMTAwMDYzNzQ2NTY0MjA2OTZFMjA2MzcyNjU2NDY1NkU3NDY5MjANCjoxMEJCMjAwMDYxNkMwQTAwNDU3MjcyNkY3MjJDMjA0RTZGMjA3NjYxMzQNCjoxMEJCMzAwMDZDNjk2NDIwNDk0NDIwNjY2OTY1NkM2NDIwMjgyNTczMUINCjoxMEJCNDAwMDI5MEEwMDQ5Njc2RTZGNzI2OTZFNjcyMDYzNzI2NTY0QzcNCjoxMEJCNTAwMDY1NkU3NDY5NjE2QzIwNjk3MzIwNjk2RTYzNkY3MjcyQkYNCjoxMEJCNjAwMDY1NjM3NDIwNkM2NTZFNjc3NDY4MEEwMDQ1NzI3MjZGNTUNCjoxMEJCNzAwMDcyMkMyMDRFNkYyMDc2NjE2QzY5NjQyMDc0Nzk3MDY1MzgNCjoxMEJCODAwMDIwNjY2OTY1NkM2NDBBMDA1NTZFNkI2RTZGNzc2RTIwNzcNCjoxMEJCOTAwMDc0Nzk3MDY1M0EyMDI1NzMwRDBBMDA2NTcyNzI2RjcyQjANCjoxMEJCQTAwMDIwNjI3OTc0NjUyMDczNzQ3MjY5NkU2NzIwNjk3MzIwRUUNCjoxMEJCQjAwMDY0Njk2NjY2NjU3MjY1NkU3NDIwNkM2NTZFNjc3NDY4MkMNCjoxMEJCQzAwMDIwMjgyNTY0MjA3NjczMjAyNTY0MjkwRDBBMDA2NTcyREINCjoxMEJCRDAwMDcyNkY3MjJDMjA0MzYyNkY3MjQyNzk3NDY1NTM3NDcyNzMNCjoxMEJCRTAwMDY5NkU2NzU0Nzk3MDY1MjA2NTc4NzA2NTYzNzQ2NTY0MDMNCjoxMEJCRjAwMDBEMEEwMDQ1NzI3MjZGNzIyQzIwNjU3ODcwNjU2Mzc0NEYNCjoxMEJDMDAwMDY5NkU2NzIwNzQ2NTc4NzQyMDczNzQ3MjY5NkU2NzIwM0ENCjoxMEJDMTAwMDc0Nzk3MDY1MjA2NjZGNzIyMDZGNzA3NDY5NkY2RTczQ0YNCjoxMEJDMjAwMDIwNkQ2MTcwMjA2QjY1NzkyQzIwNjc2Rjc0MjAyNTczRkYNCjoxMEJDMzAwMDBBMDA3MjZCM0EyMDI1NjQwRDBBMDA3NTc2MDA3NTc2NEQNCjoxMEJDNDAwMDNBMjAyNTY0MEQwQTAwNzU3MDNBMjAyNTY0MEQwQTAwMUINCjoxMEJDNTAwMDY5Njc2RTZGNzI2OTZFNjcyMDZGNzA3NDY5NkY2RTIwQUUNCjoxMEJDNjAwMDczNzA2NTYzNjk2NjY5NjU2NDIwMjU3MzBBMDA2NTcyOEYNCjoxMEJDNzAwMDcyNkY3MjJDMjA2NTc4NzA2NTYzNzQ2OTZFNjcyMDZERDENCjoxMEJDODAwMDYxNzAyMDc0Nzk3MDY1MkMyMDY3NkY3NDIwMjU3MzBBQTkNCjoxMEJDOTAwMDAwNDU3MjcyNkY3MjJDMjA3MDYxNzI3MzY1NUY3MDc1RUYNCjoxMEJDQTAwMDYyNUY2QjY1NzkyMDYzNkY3NTZDNjQyMDZFNkY3NDIwQzINCjoxMEJDQjAwMDY2Njk2RTY0MjA2MzcyNjU2NDY1NkU3NDY5NjE2QzIwODgNCjoxMEJDQzAwMDcwNjE3MjYxNkQwQTAwNDU3MjcyNkY3MjJDMjA3MDYxMzINCjoxMEJDRDAwMDcyNzM2NTVGNzA3NTYyNUY2QjY1NzkyMDYzNkY3NTZDRjkNCjoxMEJDRTAwMDY0MjA2RTZGNzQyMDY2Njk2RTY0MjA2MTZDNjcyMDcwREENCjoxMEJDRjAwMDYxNzI2MTZEMEEwMDY1NzI3MjZGNzIyQzIwNjU3ODcwRDYNCjoxMEJEMDAwMDY1NjM3NDY5NkU2NzIwNjE3MjcyNjE3OTIwNzQ3OTcwRkQNCjoxMEJEMTAwMDY1MEEwMDQ1NzI3MjZGNzIyQzIwNkU2RjIwNzA3NTYyMUENCjoxMEJEMjAwMDZDNjk2MzIwNkI2NTc5MjA2MzcyNjU2NDY1NkU3NDY5MDQNCjoxMEJEMzAwMDYxNkMyMDcwNjE3MjYxNkQ2NTc0NjU3MjczMjA2MTcyRUYNCjoxMEJENDAwMDY1MjA3Mzc1NzA3MDZGNzI3NDY1NjQyMTBBMDA0NTcyQTYNCjoxMEJENTAwMDcyNkY3MjJDMjA2NTc4NzA2NTYzNzQ2OTZFNjcyMDc0RTkNCjoxMEJENjAwMDY1Nzg3NDIwNzM3NDcyNjk2RTY3MjA3NDc5NzA2NTIwQzkNCjoxMEJENzAwMDY2NkY3MjIwNzI3MDIwNkQ2MTcwMjA2QjY1NzkyQzIwNjcNCjoxMEJEODAwMDY3NkY3NDIwMjU3MzBBMDA0NTcyNzI2RjcyMkMyMDY1RUMNCjoxMEJEOTAwMDc4NzA2NTYzNzQ2OTZFNjcyMDc0NjU3ODc0MjA3Mzc0NTUNCjoxMEJEQTAwMDcyNjk2RTY3MjA3NDc5NzA2NTIwNjY2RjcyMjA3MjcwOTgNCjoxMEJEQjAwMDIwNkQ2MTcwMjA3NjYxNkM3NTY1MEEwMDY5Njc2RTZGMzENCjoxMEJEQzAwMDcyNjk2RTY3MjA2QjY1NzkyMDI1NzMyMDY2NkY3MjIwMUINCjoxMEJERDAwMDUyNTAyMDZENjE3MDBBMDA0NTcyNzI2RjcyMkMyMDZFOTUNCjoxMEJERTAwMDZGMjA1MjUwNDk0NDIwNzA3MjZGNzY2OTY0NjU2NDBBMEUNCjoxMEJERjAwMDAwNDU3MjcyNkY3MjJDMjA1MjUwNUY0OTQ0MjA2OTczNjMNCjoxMEJFMDAwMDIwNzQ2RjZGMjA2QzYxNzI2NzY1MEEwMDY1NzI3MjZGRDMNCjoxMEJFMTAwMDcyMkMyMDc3NzI2RjZFNjcyMDc0Nzk3MDY1MEEwMDJFMUQNCjoxMEJFMjAwMDJFMkYyRTJFMkY2NjY5NjQ2RjMyMkY2Mzc0NjE3MDVGMjANCjoxMEJFMzAwMDcwNjE3MjczNjUyRTYzMDA0NTcyNzI2RjcyMkMyMDY1OUINCjoxMEJFNDAwMDc4NzA2NTYzNzQ2OTZFNjcyMDc0NjU3ODc0MjA3Mzc0QTQNCjoxMEJFNTAwMDcyNjk2RTY3MjA3NDc5NzA2NTIwNjY2RjcyMjA3NTczRTENCjoxMEJFNjAwMDY1NzIyMDZENjE3MDIwNkI2NTc5MkMyMDY3NkY3NDIwN0UNCjoxMEJFNzAwMDI1NzMwQTAwNDU3MjcyNkY3MjJDMjA3MjcwMjA2RDYxRkENCjoxMEJFODAwMDcwMjA2QjY1NzkyMDY5NzMyMDc0NkY2RjIwNkM2MTcyMEMNCjoxMEJFOTAwMDY3NjUwQTAwNDU3MjcyNkY3MjJDMjA2NTc4NzA2NTYzNjENCjoxMEJFQTAwMDc0Njk2RTY3MjA2Mjc5NzQ2NTIwNzM3NDcyNjk2RTY3NTUNCjoxMEJFQjAwMDIwNzQ3OTcwNjUyMDY2NkY3MjIwNzI3MDIwNkQ2MTcwRDkNCjoxMEJFQzAwMDIwNzY2MTZDNzU2NTBBMDA0NTcyNzI2RjcyMkMyMDU1ODANCjoxMEJFRDAwMDUzNDU1MjVGNDk0NDIwNjk3MzIwNzQ2RjZGMjA2QzYxMzENCjoxMEJFRTAwMDcyNjc2NTBBMDA3MDYxNzI3MzY1NjQyMDY5NjQ1RjczQ0MNCjoxMEJFRjAwMDY5N0E2NTNBMjAyNTY0MEQwQTAwNDU3MjcyNkY3MjJDQ0ENCjoxMEJGMDAwMDIwNjU3ODcwNjU2Mzc0Njk2RTY3MjA3NDY1Nzg3NDIwNDUNCjoxMEJGMTAwMDczNzQ3MjY5NkU2NzIwNzQ3OTcwNjUyMDY2NkY3MjIwMjENCjoxMEJGMjAwMDc1NzM2NTcyMkU2RTYxNkQ2NTIwNzY2MTZDNzU2NTBBM0MNCjoxMEJGMzAwMDAwNDU3MjcyNkY3MjJDMjA2NTc4NzA2NTYzNzQ2OTZFNEINCjoxMEJGNDAwMDY3MjA3NDY1Nzg3NDIwNzM3NDcyNjk2RTY3MjA3NDc5RTENCjoxMEJGNTAwMDcwNjUyMDY2NkY3MjIwNzU3MzY1NzIyRTY0Njk3MzcwRTgNCjoxMEJGNjAwMDZDNjE3OTRFNjE2RDY1MjA3NjYxNkM3NTY1MEEwMDQ1N0UNCjoxMEJGNzAwMDcyNzI2RjcyMkMyMDY1Nzg3MDY1NjM3NDY5NkU2NzIwQzkNCjoxMEJGODAwMDc0NjU3ODc0MjA3Mzc0NzI2OTZFNjcyMDc0Nzk3MDY1NTMNCjoxMEJGOTAwMDIwNjY2RjcyMjA3NTczNjU3MjJFNjk2MzZGNkUyMDc2RUUNCjoxMEJGQTAwMDYxNkM3NTY1MEEwMDY5Njc2RTZGNzI2OTZFNjcyMDZCRjgNCjoxMEJGQjAwMDY1NzkyMDI1NzMyMDY2NkY3MjIwNzU3MzY1NzIyMDZEMTgNCjoxMEJGQzAwMDYxNzAwQTAwNjU3MjcyNkY3MjJDMjA2NTc4NjM2Qzc1RkYNCjoxMEJGRDAwMDY0NjUyMDZDNjk3Mzc0MjA2OTczMjA2RTZGNzQyMDYxQ0UNCjoxMEJGRTAwMDIwNkQ2MTcwMEEwMDY5NkU2OTc0MjA2NDY1NzY2OTYzMEENCjoxMEJGRjAwMDY1MEEwMDY5NkU2OTc0MjA3NTczNjIwQTAwNjk2RTY5NkENCjoxMEMwMDAwMDc0MjA2Mzc0NjE3MDY4Njk2NDBBMDA2OTZFNjk3NDIwRTENCjoxMEMwMTAwMDYzNzQ2MTcwMEEwMDcyNjU2Mzc2Mjc2OTZFNjcyMDY4RDENCjoxMEMwMjAwMDY5NjQyMDZENzM2NzIwMEEwMDAwMDAwMDk4MkY4QTQyMUYNCjoxMEMwMzAwMDkxNDQzNzcxQ0ZGQkMwQjVBNURCQjVFOTVCQzI1NjM5N0ENCjoxMEMwNDAwMEYxMTFGMTU5QTQ4MjNGOTJENTVFMUNBQjk4QUEwN0Q4OTINCjoxMEMwNTAwMDAxNUI4MzEyQkU4NTMxMjRDMzdEMEM1NTc0NURCRTcyQjUNCjoxMEMwNjAwMEZFQjFERTgwQTcwNkRDOUI3NEYxOUJDMUMxNjk5QkU0MzUNCjoxMEMwNzAwMDg2NDdCRUVGQzY5REMxMEZDQ0ExMEMyNDZGMkNFOTJEQzUNCjoxMEMwODAwMEFBODQ3NDRBRENBOUIwNUNEQTg4Rjk3NjUyNTEzRTk4RTkNCjoxMEMwOTAwMDZEQzYzMUE4QzgyNzAzQjBDNzdGNTlCRkYzMEJFMEM2RjANCjoxMEMwQTAwMDQ3OTFBN0Q1NTE2M0NBMDY2NzI5MjkxNDg1MEFCNzI3N0UNCjoxMEMwQjAwMDM4MjExQjJFRkM2RDJDNEQxMzBEMzg1MzU0NzMwQTY1MUINCjoxMEMwQzAwMEJCMEE2QTc2MkVDOUMyODE4NTJDNzI5MkExRThCRkEyRjINCjoxMEMwRDAwMDRCNjYxQUE4NzA4QjRCQzJBMzUxNkNDNzE5RTg5MkQxNUENCjoxMEMwRTAwMDI0MDY5OUQ2ODUzNTBFRjQ3MEEwNkExMDE2QzFBNDE5REQNCjoxMEMwRjAwMDA4NkMzNzFFNEM3NzQ4MjdCNUJDQjAzNEIzMEMxQzM5REMNCjoxMEMxMDAwMDRBQUFEODRFNEZDQTlDNUJGMzZGMkU2OEVFODI4Rjc0OUENCjoxMEMxMTAwMDZGNjNBNTc4MTQ3OEM4ODQwODAyQzc4Q0ZBRkZCRTkwQjQNCjoxMEMxMjAwMEVCNkM1MEE0RjdBM0Y5QkVGMjc4NzFDNjA4MjAwMDAxQTkNCjoxMEMxMzAwMEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMEINCjoxMEMxNDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRjINCjoxMEMxNTAwMDUxMjU2M0ZDQzJDQUI5RjM4NDlFMTdBN0FERkFFNkJDQTkNCjoxMEMxNjAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMEZGRkZGRkZGREINCjoxMEMxNzAwMDk2QzI5OEQ4NDUzOUExRjRBMDMzRUIyRDgxN0QwMzc3ODENCjoxMEMxODAwMEYyNDBBNDYzRTVFNkJDRjg0NzQyMkNFMUYyRDExNzZCMUMNCjoxMEMxOTAwMEY1NTFCRjM3Njg0MEI2Q0JDRTVFMzE2QjU3MzNDRTJCRUYNCjoxMEMxQTAwMDE2OUUwRjdDNEFFQkU3OEU5QjdGMUFGRUUyNDJFMzRGMUUNCjoxMEMxQjAwMDRCNjBEMjI3M0UzQ0NFM0JGNkIwNTNDQ0IwMDYxRDY1NUINCjoxMEMxQzAwMEJDODY5ODc2NTVCREVCQjNFNzkzM0FBQUQ4MzVDNjVBRTQNCjoxMEMxRDAwMEM1MjkwMTA4ODExNjAxMDg3MTFGMDEwODcxMTkwMTA4OUMNCjoxMEMxRTAwMDhEMDEwMjA0MDgxMDIwNDA4MDFCMzY1MjA5NkFENTMwQTgNCjoxMEMxRjAwMDM2QTUzOEJGNDBBMzlFODFGM0Q3RkI3Q0UzMzk4MjlCRjENCjoxMEMyMDAwMDJGRkY4NzM0OEU0MzQ0QzRERUU5Q0I1NDdCOTQzMkE2OUYNCjoxMEMyMTAwMEMyMjMzREVFNEM5NTBCNDJGQUMzNEUwODJFQTE2NjI4NzANCjoxMEMyMjAwMEQ5MjRCMjc2NUJBMjQ5NkQ4QkQxMjU3MkY4RjY2NDg2NkINCjoxMEMyMzAwMDY4OTgxNkQ0QTQ1Q0NDNUQ2NUI2OTI2QzcwNDg1MEZEQ0QNCjoxMEMyNDAwMEVEQjlEQTVFMTU0NjU3QTc4RDlEODQ5MEQ4QUIwMDhDNkENCjoxMEMyNTAwMEJDRDMwQUY3RTQ1ODA1QjhCMzQ1MDZEMDJDMUU4RkNBRTQNCjoxMEMyNjAwMDNGMEYwMkMxQUZCRDAzMDExMzhBNkIzQTkxMTE0MTRGRDkNCjoxMEMyNzAwMDY3RENFQTk3RjJDRkNFRjBCNEU2NzM5NkFDNzQyMkU3QUYNCjoxMEMyODAwMEFEMzU4NUUyRjkzN0U4MUM3NURGNkU0N0YxMUE3MTFEOEYNCjoxMEMyOTAwMDI5QzU4OTZGQjc2MjBFQUExOEJFMUJGQzU2M0U0QkM2NTUNCjoxMEMyQTAwMEQyNzkyMDlBREJDMEZFNzhDRDVBRjQxRkREQTgzMzg4RkUNCjoxMEMyQjAwMDA3QzczMUIxMTIxMDU5Mjc4MEVDNUY2MDUxN0ZBOTE5NkYNCjoxMEMyQzAwMEI1NEEwRDJERTU3QTlGOTNDOTlDRUZBMEUwM0I0REFFOUENCjoxMEMyRDAwMDJBRjVCMEM4RUJCQjNDODM1Mzk5NjExNzJCMDQ3RUJBOTcNCjoxMEMyRTAwMDc3RDYyNkUxNjkxNDYzNTUyMTBDN0Q2MzdDNzc3QkYyNTgNCjoxMEMyRjAwMDZCNkZDNTMwMDE2NzJCRkVEN0FCNzZDQTgyQzk3REZBNUENCjoxMEMzMDAwMDU5NDdGMEFERDRBMkFGOUNBNDcyQzBCN0ZEOTMyNjM2QjYNCjoxMEMzMTAwMDNGRjdDQzM0QTVFNUYxNzFEODMxMTUwNEM3MjNDMzE4MTQNCjoxMEMzMjAwMDk2MDU5QTA3MTI4MEUyRUIyN0IyNzUwOTgzMkMxQTFCMzcNCjoxMEMzMzAwMDZFNUFBMDUyM0JENkIzMjlFMzJGODQ1M0QxMDBFRDIwOEYNCjoxMEMzNDAwMEZDQjE1QjZBQ0JCRTM5NEE0QzU4Q0ZEMEVGQUFGQjQzNTUNCjoxMEMzNTAwMDREMzM4NTQ1RjkwMjdGNTAzQzlGQTg1MUEzNDA4RjkyRjENCjoxMEMzNjAwMDlEMzhGNUJDQjZEQTIxMTBGRkYzRDJDRDBDMTNFQzVGOEINCjoxMEMzNzAwMDk3NDQxN0M0QTc3RTNENjQ1RDE5NzM2MDgxNEZEQzIyMkENCjoxMEMzODAwMDJBOTA4ODQ2RUVCODE0REU1RTBCREJFMDMyM0EwQTQ5QUENCjoxMEMzOTAwMDA2MjQ1Q0MyRDNBQzYyOTE5NUU0NzlFN0M4Mzc2RDhEMTENCjoxMEMzQTAwMEQ1NEVBOTZDNTZGNEVBNjU3QUFFMDhCQTc4MjUyRTFDRUINCjoxMEMzQjAwMEE2QjRDNkU4REQ3NDFGNEJCRDhCOEE3MDNFQjU2NjQ4RDcNCjoxMEMzQzAwMDAzRjYwRTYxMzU1N0I5ODZDMTFEOUVFMUY4OTgxMTY5RDMNCjoxMEMzRDAwMEQ5OEU5NDlCMUU4N0U5Q0U1NTI4REY4Q0ExODkwREJGOEQNCjoxMEMzRTAwMEU2NDI2ODQxOTkyRDBGQjA1NEJCMTYwMDcwNzI2NTcwMUINCjoxMEMzRjAwMDYxNzI3MzY1NUY3NjYxNkM3NTY1MDAwMDYxNjQ3NjYxN0ENCjoxMEM0MDAwMDZFNjM2NTVGNjk2RTc0NjU3MjZFNjE2QzAwMDAwMDAwM0ENCjoxMEM0MTAwMDVGNjM2MjZGNzI1Rjc2NjE2Qzc1NjU1RjY0NjU2MzZGQTENCjoxMEM0MjAwMDY0NjU1RjY5NkU3NDM2MzQ1RjY5NkU3NDY1NzI2RTYxREYNCjoxMEM0MzAwMDZDMDAwMDAwNjM2MjZGNzI1Rjc2NjE2Qzc1NjU1RjYxQUUNCjoxMEM0NDAwMDY0NzY2MTZFNjM2NTVGNjY2OTc4NjU2NDAwMDAwMDAwMEMNCjoxMEM0NTAwMDYzNjI2RjcyNUY3NjYxNkM3NTY1NUY2MTY0NzY2MTZFNTENCjoxMEM0NjAwMDYzNjUwMDAwNjM2MjZGNzI1Rjc2NjE2Qzc1NjU1RjY1MUUNCjoxMEM0NzAwMDZFNzQ2NTcyNUY2MzZGNkU3NDYxNjk2RTY1NzIwMDAwRTENCjoxMEM0ODAwMDYzNjI2RjcyNUY3NjYxNkM3NTY1NUY2QzY1NjE3NjY1MUUNCjoxMEM0OTAwMDVGNjM2RjZFNzQ2MTY5NkU2NTcyMDAwMDYzNjI2RjcyRDQNCjoxMEM0QTAwMDVGNzY2MTZDNzU2NTVGNjc2NTc0NUY2OTZFNzQ1RjYzMDUNCjoxMEM0QjAwMDY4NjU2MzZCNjU2NDAwMDA2OTc0NjU3MjYxNzQ2NTVGQ0INCjoxMEM0QzAwMDczNzQ3MjY5NkU2NzVGNjM2ODc1NkU2QjczMDAwMDAwRUENCjoxMEM0RDAwMDYzNjI2RjcyNUY3NjYxNkM3NTY1NUY2RDYxNzA1RjY2RDgNCjoxMEM0RTAwMDY5NkU2NDVGNzY2MTZDNzU2NTAwMkMyMDY2NzU2RTYzOUQNCjoxMEM0RjAwMDc0Njk2RjZFM0EyMDAwNjE3MzczNjU3Mjc0Njk2RjZFNTANCjoxMEM1MDAwMDIwMjIyNTczMjIyMDY2NjE2OTZDNjU2NDNBMjA2NjY5ODENCjoxMEM1MTAwMDZDNjUyMDIyMjU3MzIyMkMyMDZDNjk2RTY1MjAyNTY0QjENCjoxMEM1MjAwMDI1NzMyNTczMEEwMDAwMDA1QzAxMDAyMDIzMkQzMDJCQTkNCjoxMEM1MzAwMDIwMDA2ODZDNEMwMDY1NjY2NzQ1NDY0NzAwNDk0RTQ2REENCjoxMEM1NDAwMDAwNjk2RTY2MDA0RTQxNEUwMDZFNjE2RTAwMzAzMTMyMDENCjoxMEM1NTAwMDMzMzQzNTM2MzczODM5NDE0MjQzNDQ0NTQ2MDAzMDMxNkINCjoxMEM1NjAwMDMyMzMzNDM1MzYzNzM4Mzk2MTYyNjM2NDY1NjYwMDQ5ODENCjoxMEM1NzAwMDZFNjY2OTZFNjk3NDc5MDA0RTYxNEUwMDAwMDAwMDAwQkQNCjoxMEM1ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUINCjoxMEM1OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUINCjoxMEM1QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEINCjoxMEM1QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0INCjoxMEM1QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkINCjoxMEM1RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUINCjoxMEM1RTAwMDAwODBFMDM3NzlDMzQxNDMxNzZFMDVCNUI1Qjg5MzQ2NkYNCjoxMEM1RjAwMEY1RjkzRkU5MDM0RjM4NEQzMjFEMzBGOTQ4Nzc4MjVBM0INCjoxMEM2MDAwMDNDQkY3MzdGREQ0RjE1NzUwMDAwMDAwMDAwMDBGMDNGNTgNCjoxMEM2MTAwMDAwMDAwMDAwMDAwMDI0NDAwMDAwMDAwMDAwMDA1OTQwMUQNCjoxMEM2MjAwMDAwMDAwMDAwMDA0MDhGNDAwMDAwMDAwMDAwODhDMzQwNzANCjoxMEM2MzAwMDAwMDAwMDAwMDA2QUY4NDAwMDAwMDAwMDgwODQyRTQxRTUNCjoxMEM2NDAwMDAwMDAwMDAwRDAxMjYzNDEwMDAwMDAwMDg0RDc5NzQxMzENCjoxMEM2NTAwMDAwMDAwMDAwNjVDRENENDEwMDAwMDAyMDVGQTAwMjQyMzcNCjoxMEM2NjAwMDAwMDAwMEU4NzY0ODM3NDIwMDAwMDBBMjk0MUE2RDQyQUMNCjoxMEM2NzAwMDAwMDA0MEU1OUMzMEEyNDIwMDAwOTAxRUM0QkNENjQyOUYNCjoxMEM2ODAwMDAwMDAzNDI2RjU2QjBDNDMwMDgwRTAzNzc5QzM0MTQzNEENCjoxMEM2OTAwMDAwQTBEODg1NTczNDc2NDMwMEM4NEU2NzZEQzFBQjQzQzANCjoxMEM2QTAwMDAwM0Q5MTYwRTQ1OEUxNDM0MDhDQjU3ODFEQUYxNTQ0REUNCjoxMEM2QjAwMDUwRUZFMkQ2RTQxQTRCNDQ5MkQ1NEQwNkNGRjA4MDQ0QjkNCjoxMEM2QzAwMEY2NEFFMUM3MDIyREI1NDRCNDlERDk3OTQzNzhFQTQ0Q0UNCjoxMEM2RDAwMDA1MDAwMDAwMTkwMDAwMDA3RDAwMDAwMDUwNEY1MzQ5ODQNCjoxMEM2RTAwMDU4MDAyRTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyODI4NTQNCjoxMEM2RjAwMDI4MjgyODIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjINCjoxMEM3MDAwMDIwMjAyMDIwMjA4ODEwMTAxMDEwMTAxMDEwMTAxMDEwNjENCjoxMEM3MTAwMDEwMTAxMDEwMTAwNDA0MDQwNDA0MDQwNDA0MDQwNDEwOTENCjoxMEM3MjAwMDEwMTAxMDEwMTAxMDQxNDE0MTQxNDE0MTAxMDEwMTAxMUYNCjoxMEM3MzAwMDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxRTkNCjoxMEM3NDAwMDEwMTAxMDEwMTAxMDQyNDI0MjQyNDI0MjAyMDIwMjAyRjUNCjoxMEM3NTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyQjkNCjoxMEM3NjAwMDEwMTAxMDEwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjkNCjoxMEM3NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjkNCjoxMEM3ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTkNCjoxMEM3OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTkNCjoxMEM3QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODkNCjoxMEM3QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzkNCjoxMEM3QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjkNCjoxMEM3RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTkNCjowOEM3RTAwMDAwMDAwMDAwMDAwMDAwMDA1MQ0KOjA4QzdFODAwQjU4MTAwMDgwMDAwMDAwMDBCDQo6MDhDN0YwMDA5MTgxMDAwODAwMDAwMDAwMjcNCjoxMEM3RjgwMDEwMDAwMDAwMDAwOTNEMDA3REJEMDAwODg5QkQwMDA4NEINCjoxMEM4MDgwMEIxQkQwMDA4OTVCRDAwMDhDREJEMDAwODAwMDAwMDAwQkUNCjoxMEM4MTgwMDAwMDAwMDAwMDZEMEYxMDkwMUExMDEwOTIwMTUwMDI2MzkNCjoxMEM4MjgwMEZGMDA3NTA4OTU0MDgxMDIwOTIxMTUwMDI2RkYwMDc1NTMNCjoxMEM4MzgwMDA4OTU0MDkxMDJDMDAwMDBGNUJFMDAwOEQ5QkUwMDA4NjYNCjoxMEM4NDgwMDBEQkUwMDA4MDAwMDAwMDAwMDAwMDAwMEY1QkQwMDA4NTMNCjoxMEM4NTgwMDNEQkYwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0MNCjoxMEM4NjgwMEU5QkQwMDA4RTlCRDAwMDhFOUJEMDAwODAxQkUwMDA4RUYNCjoxMEM4NzgwMDA5MjExMTAwMDAwMTIyMjIwMDAwMDAwMDBBMDYwMDAyMUUNCjoxMEM4ODgwMDAwMDAwMDQwMDEwMDAwMDAwOTAyMjkwMDAxMDEwMDgwQTkNCjoxMEM4OTgwMDMyMDkwNDAwMDAwMjAzMDAwMDAyMDkyMTExMDEwMDAxMEQNCjoxMEM4QTgwMDIyMjIwMDA3MDU4MTAzNDAwMDA1MDcwNTAxMDM0MDAwMTcNCjoxMEM4QjgwMDA1MDAwMDAwMDAwMDAwODAwMTAwMDAwMEFDQTMwMTA4OTINCjoxMEM4QzgwMDAyMDAwMDAwQURBOTAxMDgwNDAwMDAwMEIwQTkwMTA4OTkNCjoxMEM4RDgwMDA4MDAwMDAwQjNBOTAxMDgxMDAwMDAwMEI2QTkwMTA4NkINCjoxMEM4RTgwMDIwMDAwMDAwQkFBOTAxMDg0MDAwMDAwMEMwQTkwMTA4MDINCjoxMEM4RjgwMDgwMDAwMDAwQzVBOTAxMDgwMDAxMDAwMEM5QTkwMTA4QkQNCjoxMEM5MDgwMDAwMDAwMTAwQ0VBOTAxMDgwMDEwMDAwMEQ0QTkwMTA4MDgNCjoxMEM5MTgwMDAwMjAwMDAwRDhBOTAxMDgwMDAyMDAwMERDQTkwMTA4RDUNCjoxMEM5MjgwMDAwMDQwMDAwRURBOTAxMDgwMDA4MDAwMEZFQTkwMTA4QTQNCjoxMEM5MzgwMDAwNDAwMDAwMEVBQTAxMDgwMDgwMDAwMDIwQUEwMTA4OUINCjoxMEM5NDgwMDAxMDAwMDAwMDMwMDAwMDA1QzAxMDAyMDAwMDAwMDAwNUUNCjoxMEM5NTgwMDlDQzUwMTA4QkNDNTAxMDg3Q0M1MDEwODAwMDAwMDAwOTENCjoxMEM5NjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkYNCjoxMEM5NzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUYNCjoxMEM5ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUYNCjoxMEM5OTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEYNCjoxMEM5QTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwM0MNCjoxMEM5QjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkYNCjoxMEM5QzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwMUMNCjoxMEM5RDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEYNCjoxMEM5RTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwRkMNCjoxMEM5RjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkYNCjoxMENBMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwREINCjoxMENBMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUNCjoxMENBMjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwQkINCjoxMENBMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUUNCjoxMENBNDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwOUINCjoxMENBNTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0UNCjoxMENBNjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzMDAwMDAwN0INCjoxMENBNzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUUNCjoxMENBODgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEJEOTkwMTA4M0YNCjoxMENBOTgwMDcxOTkwMTA4MDAwMDAwMDBFNEM2MDEwOEUyQzYwMTA4MTcNCjoxMENBQTgwMEFDQTMwMTA4QUNBMzAxMDhBQ0EzMDEwOEFDQTMwMTA4MUUNCjoxMENBQjgwMEFDQTMwMTA4QUNBMzAxMDhBQ0EzMDEwOEFDQTMwMTA4MEUNCjoxMENBQzgwMEFDQTMwMTA4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGMTINCjoxMENBRDgwMEZGRkYwMDAwMDEwMDQxNTM0MzQ5NDkwMDAwMDAwMDAwRTYNCjoxMENBRTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0UNCjoxMENBRjgwMDAwMDAwMDAwMDAwMDQxNTM0MzQ5NDkwMDAwMDAwMDAwQzUNCjoxMENCMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUQNCjowOENCMTgwMDAwMDAwMDAwMDAwMDAwMDAxNQ0KOjA0MDAwMDA1MDgwMDlEOERDNQ0KOjAwMDAwMDAxRkYNCg", "signature": "BcT2EKbU14dmgYnWClMaVfde7PUPrx5dK7knLj9RYVBa6G9CnWofkwHgXky8rguztipi0STMBxjbh3fJi0_1Jw"} \ No newline at end of file diff --git a/tools/http2udb.py b/tools/http2udb.py index b71f51e..065c31f 100644 --- a/tools/http2udb.py +++ b/tools/http2udb.py @@ -16,6 +16,8 @@ from ecdsa import SigningKey, NIST256p import socket,json,base64,ssl,array,binascii +from sign_firmware import * + httpport = 8080 udpport = 8111 @@ -41,16 +43,7 @@ if __name__ == '__main__': print(e) -def to_websafe(data): - data = data.replace('+','-') - data = data.replace('/','_') - data = data.replace('=','') - return data -def from_websafe(data): - data = data.replace('-','+') - data = data.replace('_','/') - return data + '=='[:(3*len(data)) % 4] def write(data): msg = from_websafe(data) @@ -81,38 +74,6 @@ def read(): msg = to_websafe(pkt) return msg -def get_firmware_object(): - sk = SigningKey.from_pem(open("signing_key.pem").read()) - h = open(HEX_FILE,'r').read() - h = base64.b64encode(h.encode()) - h = to_websafe(h.decode()) - - num_pages = 64 - START = 0x4000 - END = 2048 * (num_pages - 3) - 4 - - ih = IntelHex(HEX_FILE) - segs = ih.segments() - arr = ih.tobinarray(start = START, size = END-START) - - im_size = END-START - - print('im_size: ', im_size) - print('firmware_size: ', len(arr)) - - byts = (arr).tobytes() if hasattr(arr,'tobytes') else (arr).tostring() - sig = sha256(byts) - print('hash', binascii.hexlify(sig)) - sig = sk.sign_digest(sig) - - print('sig', binascii.hexlify(sig)) - - sig = base64.b64encode(sig) - sig = to_websafe(sig.decode()) - - #msg = {'data': read()} - msg = {'firmware': h, 'signature':sig} - return msg class UDPBridge(BaseHTTPRequestHandler): def end_headers (self): self.send_header('Access-Control-Allow-Origin', '*') @@ -147,7 +108,7 @@ class UDPBridge(BaseHTTPRequestHandler): self.send_response(200) self.send_header('Content-type','text/json') - msg = get_firmware_object() + msg = get_firmware_object("signing_key.pem",HEX_FILE) self.end_headers() @@ -162,7 +123,7 @@ try: certfile='../web/localhost.crt', server_side=True) print('Saving signed firmware to firmware.json') - msg = get_firmware_object() + msg = get_firmware_object("signing_key.pem",HEX_FILE) wfile = open('firmware.json','wb+') wfile.write(json.dumps(msg).encode()) wfile.close() diff --git a/tools/sign_firmware.py b/tools/sign_firmware.py new file mode 100644 index 0000000..927433c --- /dev/null +++ b/tools/sign_firmware.py @@ -0,0 +1,62 @@ +import sys +import json,base64,array,binascii +from hashlib import sha256 + +from ecdsa import SigningKey, NIST256p +from intelhex import IntelHex + +def to_websafe(data): + data = data.replace('+','-') + data = data.replace('/','_') + data = data.replace('=','') + return data + +def from_websafe(data): + data = data.replace('-','+') + data = data.replace('_','/') + return data + '=='[:(3*len(data)) % 4] + +def get_firmware_object(sk_name, hex_file): + sk = SigningKey.from_pem(open(sk_name).read()) + fw = open(hex_file,'r').read() + fw = base64.b64encode(fw.encode()) + fw = to_websafe(fw.decode()) + + START = 0x08008000 + END = START + 1024 * 186 - 8 + + ih = IntelHex(hex_file) + segs = ih.segments() + arr = ih.tobinarray(start = START, size = END-START) + + im_size = END-START + + print('im_size: ', im_size) + print('firmware_size: ', len(arr)) + + byts = (arr).tobytes() if hasattr(arr,'tobytes') else (arr).tostring() + h = sha256() + h.update(byts) + sig = binascii.unhexlify(h.hexdigest()) + print('hash', binascii.hexlify(sig)) + sig = sk.sign_digest(sig) + + print('sig', binascii.hexlify(sig)) + + sig = base64.b64encode(sig) + sig = to_websafe(sig.decode()) + + #msg = {'data': read()} + msg = {'firmware': fw, 'signature':sig} + return msg + +if __name__ == '__main__': + if len(sys.argv) != 4: + print('usage: %s ' % sys.argv[0]) + msg = get_firmware_object(sys.argv[1],sys.argv[2]) + print('Saving signed firmware to firmware.json') + wfile = open(sys.argv[3],'wb+') + wfile.write(json.dumps(msg).encode()) + wfile.close() + + diff --git a/web/js/wallet.js b/web/js/wallet.js index 4b2f173..639def4 100644 --- a/web/js/wallet.js +++ b/web/js/wallet.js @@ -174,12 +174,12 @@ function toUTF8Array(str) { var charcode = str.charCodeAt(i); if (charcode < 0x80) utf8.push(charcode); else if (charcode < 0x800) { - utf8.push(0xc0 | (charcode >> 6), + utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f)); } else if (charcode < 0xd800 || charcode >= 0xe000) { - utf8.push(0xe0 | (charcode >> 12), - 0x80 | ((charcode>>6) & 0x3f), + utf8.push(0xe0 | (charcode >> 12), + 0x80 | ((charcode>>6) & 0x3f), 0x80 | (charcode & 0x3f)); } // surrogate pair @@ -190,9 +190,9 @@ function toUTF8Array(str) { // 20 bits of 0x0-0xFFFFF into two halves charcode = 0x10000 + (((charcode & 0x3ff)<<10) | (str.charCodeAt(i) & 0x3ff)); - utf8.push(0xf0 | (charcode >>18), - 0x80 | ((charcode>>12) & 0x3f), - 0x80 | ((charcode>>6) & 0x3f), + utf8.push(0xf0 | (charcode >>18), + 0x80 | ((charcode>>12) & 0x3f), + 0x80 | ((charcode>>6) & 0x3f), 0x80 | (charcode & 0x3f)); } } @@ -386,9 +386,9 @@ function send_msg_u2f(data, func, timeout) { appId: appid }; - + console.log('sign attempt'); window.u2f.sign(appid,chal,[key], function(res){ - + console.log('res',res); var d2 = new Date(); t2 = d2.getTime(); if (!res.signatureData) @@ -410,9 +410,6 @@ if (DEVELOPMENT) { function formatBootRequest(cmd, addr, data) { var array = new Uint8Array(255); - if (addr == undefined) - addr = 0x8000; - data = data || new Uint8Array(1); if (data.length > (255 - 9)) { @@ -1078,14 +1075,19 @@ async function handleFirmware(files) var blocks = MemoryMap.fromHex(resp.firmware); var addresses = blocks.keys(); + console.log(blocks); + console.log(addresses); var addr = addresses.next(); - var chunk_size = 244; + var chunk_size = 240; while(!addr.done) { var data = blocks.get(addr.value); var i; for (i = 0; i < data.length; i += chunk_size) { var chunk = data.slice(i,i+chunk_size); + console.log('addr ',addr.value + i); p = await dev.bootloader_write(addr.value + i, chunk); + + console.log('writing',p); TEST(p.status == 'CTAP1_SUCCESS', 'Device wrote data'); var progress = (((i/data.length) * 100 * 100) | 0)/100; document.getElementById('progress').textContent = ''+progress+' %'; @@ -1501,4 +1503,3 @@ var test; EC = elliptic.ec //run_tests() - diff --git a/web/self-signed-tls.sh b/web/self-signed-tls.sh deleted file mode 100644 index 4b89e81..0000000 --- a/web/self-signed-tls.sh +++ /dev/null @@ -1,202 +0,0 @@ -#!/bin/bash - -# Directories -cur=`pwd` -tmp=`mktemp -d` -scriptName=`basename $0` - -# Certificate Variables -OUTPATH="./" -VERBOSE=0 -DURATION=3650 # 10 years - -safeExit() { - if [ -d $tmp ]; then - if [ $VERBOSE -eq 1 ]; then - echo "Removing temporary directory '${tmp}'" - fi - rm -rf $tmp - fi - - trap - INT TERM EXIT - exit -} - -# Help Screen -help() { - echo -n "${scriptName} [OPTIONS] -c=US --state=California - -Generate self-signed TLS certificate using OpenSSL - - Options: - -c|--country Country Name (2 letter code) - -s|--state State or Province Name (full name) - -l|--locality Locality Name (eg, city) - -o|--organization Organization Name (eg, company) - -u|--unit Organizational Unit Name (eg, section) - -n|--common-name Common Name (e.g. server FQDN or YOUR name) - -e|--email Email Address - -p|--path Path to output generated keys - -d|--duration Validity duration of the certificate (in days) - -h|--help Display this help and exit - -v|--verbose Verbose output -" -} - -# Test output path is valid -testPath() { - if [ ! -d $OUTPATH ]; then - echo "The specified directory \"${OUTPATH}\" does not exist" - exit 1 - fi -} - -# Process Arguments -while [ "$1" != "" ]; do - PARAM=`echo $1 | awk -F= '{print $1}'` - VALUE=`echo $1 | awk -F= '{print $2}'` - case $PARAM in - -h|--help) help; safeExit ;; - -c|--country) C=$VALUE ;; - -s|--state) ST=$VALUE ;; - -l|--locality) L=$VALUE ;; - -o|--organization) O=$VALUE ;; - -u|--unit) OU=$VALUE ;; - -n|--common-name) CN=$VALUE ;; - -e|--email) emailAddress=$VALUE ;; - -p|--path) OUTPATH=$VALUE; testPath ;; - -d|--duration) DURATION=$VALUE ;; - -v|--verbose) VERBOSE=1 ;; - *) echo "ERROR: unknown parameter \"$PARAM\""; help; exit 1 ;; - esac - shift -done - -# Prompt for variables that were not provided in arguments -checkVariables() { - # Country - if [ -z $C ]; then - echo -n "Country Name (2 letter code) [AU]:" - read C - fi - - # State - if [ -z $ST ]; then - echo -n "State or Province Name (full name) [Some-State]:" - read ST - fi - - # Locality - if [ -z $L ]; then - echo -n "Locality Name (eg, city) []:" - read L - fi - - # Organization - if [ -z $O ]; then - echo -n "Organization Name (eg, company) [Internet Widgits Pty Ltd]:" - read O - fi - - # Organizational Unit - if [ -z $OU ]; then - echo -n "Organizational Unit Name (eg, section) []:" - read OU - fi - - # Common Name - if [ -z $CN ]; then - echo -n "Common Name (e.g. server FQDN or YOUR name) []:" - read CN - fi - - # Common Name - if [ -z $emailAddress ]; then - echo -n "Email Address []:" - read emailAddress - fi -} - -# Show variable values -showVals() { - echo "Country: ${C}"; - echo "State: ${ST}"; - echo "Locality: ${L}"; - echo "Organization: ${O}"; - echo "Organization Unit: ${OU}"; - echo "Common Name: ${CN}"; - echo "Email: ${emailAddress}"; - echo "Output Path: ${OUTPATH}"; - echo "Certificate Duration (Days): ${DURATION}"; - echo "Verbose: ${VERBOSE}"; -} - -# Init -init() { - cd $tmp - pwd -} - -# Cleanup -cleanup() { - echo "Cleaning up" - cd $cur - rm -rf $tmp -} - -buildCsrCnf() { -cat << EOF > ${tmp}/tmp.csr.cnf -[req] -default_bits = 2048 -prompt = no -default_md = sha256 -distinguished_name = dn - -[dn] -C=${C} -ST=${ST} -L=${L} -O=${O} -OU=${OU} -CN=${CN} -emailAddress=${emailAddress} -EOF -} - -buildExtCnf() { -cat << EOF > ${tmp}/v3.ext -authorityKeyIdentifier=keyid,issuer -basicConstraints=CA:FALSE -keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment -subjectAltName = @alt_names - -[alt_names] -DNS.1 = ${CN} -EOF -} - -# Build TLS Certificate -build() { - # Santizie domain name for file name - FILENAME=${CN/\*\./} - # Generate CA key & crt - openssl genrsa -out ${tmp}/tmp.key 2048 - openssl req -x509 -new -nodes -key ${tmp}/tmp.key -sha256 -days ${DURATION} -out ${OUTPATH}${FILENAME}_CA.pem -subj "/C=${C}/ST=${ST}/L=${L}/O=${O}/OU=${OU}/CN=${CN}/emailAddress=${emailAddress}" - - # CSR Configuration - buildCsrCnf - - # Create v3.ext configuration file - buildExtCnf - - # Server key - openssl req -new -sha256 -nodes -out ${OUTPATH}${FILENAME}.csr -newkey rsa:2048 -keyout ${OUTPATH}${FILENAME}.key -config <( cat ${tmp}/tmp.csr.cnf ) - - # Server certificate - openssl x509 -req -in ${OUTPATH}${FILENAME}.csr -CA ${OUTPATH}${FILENAME}_CA.pem -CAkey ${tmp}/tmp.key -CAcreateserial -out ${OUTPATH}${FILENAME}.crt -days ${DURATION} -sha256 -extfile ${tmp}/v3.ext -} - -checkVariables -build -# showVals -safeExit From eb39e0f2c48bf830601cf67a8a9ea97dd91acaf7 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Mon, 3 Dec 2018 00:01:41 -0500 Subject: [PATCH 06/23] reboot and pass tests --- fido2/extensions/extensions.c | 2 +- targets/stm32l442/bootloader/bootloader.h | 2 +- targets/stm32l442/bootloader/main.c | 1 + targets/stm32l442/src/device.c | 7 +-- web/js/wallet.js | 57 ++++++++--------------- 5 files changed, 26 insertions(+), 43 deletions(-) diff --git a/fido2/extensions/extensions.c b/fido2/extensions/extensions.c index dd535be..4e76119 100644 --- a/fido2/extensions/extensions.c +++ b/fido2/extensions/extensions.c @@ -65,7 +65,7 @@ int16_t bridge_u2f_to_extensions(uint8_t * _chal, uint8_t * _appid, uint8_t klen u2f_response_writeback((uint8_t *)&ret,1); #ifdef IS_BOOTLOADER ret = bootloader_bridge(klen, keyh); -#else +#elif defined(WALLET_EXTENSION) ret = bridge_u2f_to_wallet(_chal, _appid, klen, keyh); #endif diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index 2f4c41b..8715bc4 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -4,7 +4,7 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 1 +#define DEBUG_LEVEL 0 #define NON_BLOCK_PRINTING 0 diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 0d1d48a..3bee9f5 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -166,6 +166,7 @@ int main(int argc, char * argv[]) if (REBOOT_FLAG) { + delay(250); device_reboot(); } } diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index df0a73d..01417c5 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -102,7 +102,7 @@ void delay(uint32_t ms) } void device_reboot() { - + NVIC_SystemReset(); } void device_init() { @@ -586,7 +586,8 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) switch(req->op){ case BootWrite: printf1(TAG_BOOT, "BootWrite: %08lx\r\n",(uint32_t)ptr); - if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR) + if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR + || ((uint32_t)ptr+req->len) > APPLICATION_END_ADDR) { printf1(TAG_BOOT,"Bound exceeded [%08lx, %08lx]\r\n",APPLICATION_START_ADDR,APPLICATION_END_ADDR); return CTAP2_ERR_NOT_ALLOWED; @@ -603,7 +604,7 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) exit(1); } - flash_write((uint32_t)ptr,payload, req->len + (req->len%4)); + flash_write((uint32_t)ptr,payload, req->len); break; case BootDone: printf1(TAG_BOOT, "BootDone: "); diff --git a/web/js/wallet.js b/web/js/wallet.js index 639def4..b1be149 100644 --- a/web/js/wallet.js +++ b/web/js/wallet.js @@ -386,9 +386,7 @@ function send_msg_u2f(data, func, timeout) { appId: appid }; - console.log('sign attempt'); window.u2f.sign(appid,chal,[key], function(res){ - console.log('res',res); var d2 = new Date(); t2 = d2.getTime(); if (!res.signatureData) @@ -1087,7 +1085,6 @@ async function handleFirmware(files) console.log('addr ',addr.value + i); p = await dev.bootloader_write(addr.value + i, chunk); - console.log('writing',p); TEST(p.status == 'CTAP1_SUCCESS', 'Device wrote data'); var progress = (((i/data.length) * 100 * 100) | 0)/100; document.getElementById('progress').textContent = ''+progress+' %'; @@ -1427,7 +1424,8 @@ async function run_tests() { async function test_bootloader() { - var addr = 0x4000; + var start = 0x8000; + var size = 186 * 1024 - 8; var num_pages = 64; var p = await dev.is_bootloader(); @@ -1438,63 +1436,46 @@ async function run_tests() { p = await dev.bootloader_write(0, randdata); TEST(p.status == 'CTAP2_ERR_NOT_ALLOWED', 'Denies accessing invalid address'); - p = await dev.bootloader_write(addr-4, randdata); + p = await dev.bootloader_write(start-4, randdata); TEST(p.status == 'CTAP2_ERR_NOT_ALLOWED', 'Denies accessing invalid address'); - p = await dev.bootloader_write(2048 * (num_pages-3)-4, randdata); + p = await dev.bootloader_write(start, randdata); + TEST(p.status == 'CTAP1_SUCCESS', 'Allows write to beginning'); + + p = await dev.bootloader_write(start + size-16, randdata); + TEST(p.status == 'CTAP1_SUCCESS', 'Allows write to end'); + + p = await dev.bootloader_write(start + size-8, randdata); + TEST(p.status == 'CTAP2_ERR_NOT_ALLOWED', 'Denies overflow'); + + p = await dev.bootloader_write(start + size, randdata); TEST(p.status == 'CTAP2_ERR_NOT_ALLOWED', 'Denies accessing invalid address'); - p = await dev.bootloader_write(2048 * (num_pages-2), randdata); + p = await dev.bootloader_write(start + size + 1024, randdata); TEST(p.status == 'CTAP2_ERR_NOT_ALLOWED', 'Denies accessing invalid address'); - p = await dev.bootloader_write(2048 * (num_pages+1), randdata); + p = await dev.bootloader_write(start + size + 1024*10, randdata); TEST(p.status == 'CTAP2_ERR_NOT_ALLOWED', 'Denies accessing invalid address'); - - p = await get_firmware_http(); - var sig = websafe2array(p.signature); - var badsig = websafe2array(p.signature); + var badsig = new Uint8Array(64); badsig[40] = badsig[40] ^ 1; - var blocks = MemoryMap.fromHex(p.firmware); - var addresses = blocks.keys(); - - var addr = addresses.next(); - var chunk_size = 244; - while(!addr.done) { - var data = blocks.get(addr.value); - var i; - for (i = 0; i < data.length; i += chunk_size) { - var chunk = data.slice(i,i+chunk_size); - p = await dev.bootloader_write(addr.value + i, chunk); - TEST(p.status == 'CTAP1_SUCCESS', 'Device wrote data'); - var progress = (((i/data.length) * 100 * 100) | 0)/100; - document.getElementById('progress').textContent = ''+progress+' %'; - } - - addr = addresses.next(); - } - p = await dev.bootloader_finish(badsig); TEST(p.status == 'CTAP2_ERR_OPERATION_DENIED', 'Device rejected new image with bad signature'); - p = await dev.bootloader_finish(sig); - TEST(p.status == 'CTAP1_SUCCESS', 'Device booted new image with correct signature'); - - document.getElementById('progress').textContent = ''+100+' %'; } //while(1) { - await device_start_over(); + // await device_start_over(); //await test_pin(); - await test_crypto(); + // await test_crypto(); //await test_rng(); } //await benchmark(); //await test_persistence(); - //await test_bootloader(); + await test_bootloader(); } From aece05b2e82ba2e77a40aa346c67b3952ea1cf48 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Mon, 3 Dec 2018 00:14:26 -0500 Subject: [PATCH 07/23] remove dead code --- fido2/log.c | 6 +++++ fido2/log.h | 6 +++-- targets/stm32l442/bootloader/main.c | 38 ++--------------------------- 3 files changed, 12 insertions(+), 38 deletions(-) diff --git a/fido2/log.c b/fido2/log.c index 2db43b0..42a2b7f 100644 --- a/fido2/log.c +++ b/fido2/log.c @@ -25,12 +25,17 @@ #include "log.h" #include "util.h" +#if DEBUG_LEVEL > 0 + static uint32_t LOGMASK = TAG_FILENO; + void set_logging_mask(uint32_t mask) { LOGMASK = mask; } + + struct logtag { uint32_t tagn; @@ -108,3 +113,4 @@ void LOG_HEX(uint32_t tag, uint8_t * data, int length) set_logging_tag(tag); dump_hex(data,length); } +#endif diff --git a/fido2/log.h b/fido2/log.h index 3b2af12..d298a52 100644 --- a/fido2/log.h +++ b/fido2/log.h @@ -33,7 +33,7 @@ void LOG(uint32_t tag, const char * filename, int num, const char * fmt, ...); void LOG_HEX(uint32_t tag, uint8_t * data, int length); -void set_logging_mask(uint32_t mask); + void set_logging_tag(uint32_t tag); typedef enum @@ -60,8 +60,9 @@ typedef enum TAG_FILENO = (1<<31) } LOG_TAG; -#if DEBUG_LEVEL == 1 +#if DEBUG_LEVEL > 0 +void set_logging_mask(uint32_t mask); #define printf1(tag,fmt, ...) LOG(tag & ~(TAG_FILENO), NULL, 0, fmt, ##__VA_ARGS__) #define printf2(tag,fmt, ...) LOG(tag | TAG_FILENO,__FILE__, __LINE__, fmt, ##__VA_ARGS__) #define printf3(tag,fmt, ...) LOG(tag | TAG_FILENO,__FILE__, __LINE__, fmt, ##__VA_ARGS__) @@ -70,6 +71,7 @@ typedef enum #else +#define set_logging_mask(mask) #define printf1(fmt, ...) #define printf2(fmt, ...) #define printf3(fmt, ...) diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 3bee9f5..ac19810 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -37,52 +37,18 @@ uint8_t REBOOT_FLAG = 0; - - -// void __attribute__((optimize("O0"))) BOOT_boot(void) void BOOT_boot(void) { - uint32_t sp; typedef void (*pFunction)(void); - pFunction jump; - - - /* Reset the RCC clock configuration to the default reset state ------------*/ - /* Set MSION bit */ - RCC->CR |= RCC_CR_MSION; - - /* Reset CFGR register */ - RCC->CFGR = 0x00000000U; - - /* Reset HSEON, CSSON , HSION, and PLLON bits */ - RCC->CR &= 0xEAF6FFFFU; - - /* Reset PLLCFGR register */ - RCC->PLLCFGR = 0x00001000U; - - /* Reset HSEBYP bit */ - RCC->CR &= 0xFFFBFFFFU; - - /* Disable all interrupts */ - RCC->CIER = 0x00000000U; - uint32_t *bootAddress = (uint32_t *)(APPLICATION_JUMP_ADDR); - printf("stack addr: %02lx\r\n",bootAddress[0]); - printf("jmp addr: %02lx\r\n",bootAddress[1]); - /* Set new vector table */ SCB->VTOR = APPLICATION_JUMP_ADDR; /* Read new SP and PC from vector table */ - sp = bootAddress[0]; - jump = (pFunction)bootAddress[1]; - - /* Do a jump by loading the PC and SP into the CPU registers */ - __set_MSP(sp); - jump(); - //jmp(); + __set_MSP(bootAddress[0]); + ((pFunction)bootAddress[1])(); } int main(int argc, char * argv[]) From e107a9aa860273d96591e9c940f8b6b08cf0b5e3 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Mon, 3 Dec 2018 20:06:44 -0500 Subject: [PATCH 08/23] refactor --- fido2/device.h | 11 +- fido2/extensions/extensions.h | 2 + targets/stm32l442/bootloader.mk | 3 +- targets/stm32l442/bootloader/bootloader.c | 162 +++++++++++++++++++ targets/stm32l442/bootloader/bootloader.h | 14 +- targets/stm32l442/src/device.c | 180 +--------------------- targets/stm32l442/src/memory_layout.h | 33 ++++ 7 files changed, 213 insertions(+), 192 deletions(-) create mode 100644 targets/stm32l442/bootloader/bootloader.c create mode 100644 targets/stm32l442/src/memory_layout.h diff --git a/fido2/device.h b/fido2/device.h index 536ab85..8d78df9 100644 --- a/fido2/device.h +++ b/fido2/device.h @@ -44,7 +44,7 @@ void usbhid_close(); void main_loop_delay(); void heartbeat(); -void bootloader_heartbeat(); + void authenticator_read_state(AuthenticatorState * ); @@ -94,13 +94,10 @@ void ctap_store_rk(int index,CTAP_residentKey * rk); void ctap_load_rk(int index,CTAP_residentKey * rk); void ctap_overwrite_rk(int index,CTAP_residentKey * rk); -// Boot laoder application -int bootloader_bridge(uint8_t klen, uint8_t * keyh); -// Trigger software reset -void device_reboot(); -// for bootloader -int is_authorized_to_boot(); + + + #endif diff --git a/fido2/extensions/extensions.h b/fido2/extensions/extensions.h index aed2c3f..9ee4cc3 100644 --- a/fido2/extensions/extensions.h +++ b/fido2/extensions/extensions.h @@ -25,4 +25,6 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len); +int bootloader_bridge(uint8_t klen, uint8_t * keyh); + #endif /* EXTENSIONS_H_ */ diff --git a/targets/stm32l442/bootloader.mk b/targets/stm32l442/bootloader.mk index 9aad2b1..3611940 100644 --- a/targets/stm32l442/bootloader.mk +++ b/targets/stm32l442/bootloader.mk @@ -4,7 +4,8 @@ SZ=arm-none-eabi-size AR=arm-none-eabi-ar # ST related -SRC = bootloader/main.c src/init.c src/redirect.c src/flash.c src/rng.c src/led.c src/device.c +SRC = bootloader/main.c bootloader/bootloader.c +SRC += src/init.c src/redirect.c src/flash.c src/rng.c src/led.c src/device.c SRC += src/fifo.c src/crypto.c src/attestation.c SRC += src/startup_stm32l432xx.s src/system_stm32l4xx.c SRC += $(wildcard lib/*.c) $(wildcard lib/usbd/*.c) diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c new file mode 100644 index 0000000..10ec7c1 --- /dev/null +++ b/targets/stm32l442/bootloader/bootloader.c @@ -0,0 +1,162 @@ +#include +#include + +#include APP_CONFIG +#include "uECC.h" +#include "u2f.h" +#include "device.h" +#include "flash.h" +#include "crypto.h" +#include "led.h" +#include "memory_layout.h" +#include "ctap_errors.h" +#include "log.h" + +extern uint8_t REBOOT_FLAG; + +typedef enum +{ + BootWrite = 0x40, + BootDone = 0x41, + BootCheck = 0x42, + BootErase = 0x43, + BootVersion = 0x44, +} BootOperation; + + +typedef struct { + uint8_t op; + uint8_t addr[3]; + uint8_t tag[4]; + uint8_t len; + uint8_t payload[255 - 9]; +} __attribute__((packed)) BootloaderReq; + + +static void erase_application() +{ + int page; + for(page = APPLICATION_START_PAGE; page < APPLICATION_END_PAGE; page++) + { + flash_erase_page(page); + } +} + +static void authorize_application() +{ + uint32_t zero = 0; + uint32_t * ptr; + ptr = (uint32_t *)AUTH_WORD_ADDR; + flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); +} +int is_authorized_to_boot() +{ + uint32_t * auth = (uint32_t *)AUTH_WORD_ADDR; + return *auth == 0; +} + +int bootloader_bridge(uint8_t klen, uint8_t * keyh) +{ + static int has_erased = 0; + BootloaderReq * req = (BootloaderReq * )keyh; + uint8_t payload[256]; + uint8_t hash[32]; + uint8_t version = 1; + + uint8_t * pubkey = (uint8_t*)"\x85\xaa\xce\xda\xd4\xb4\xd8\x0d\xf7\x0e\xe8\x91\x6d\x69\x8e\x00\x7a\x27\x40\x76\x93\x7a\x1d\x63\xb1\xcf\xe8\x22\xdd\x9f\xbc\x43\x3e\x34\x0a\x05\x9d\x8a\x9d\x72\xdc\xc2\x4b\x56\x9c\x64\x3d\xc1\x0d\x14\x64\x69\x52\x31\xd7\x54\xa3\xb6\x69\xa7\x6f\x6b\x81\x8d"; + const struct uECC_Curve_t * curve = NULL; + + if (req->len > 255-9) + { + return CTAP1_ERR_INVALID_LENGTH; + } + + memset(payload, 0xff, sizeof(payload)); + memmove(payload, req->payload, req->len); + + uint32_t addr = ((*((uint32_t*)req->addr)) & 0xffffff) | 0x8000000; + + uint32_t * ptr = (uint32_t *)addr; + + switch(req->op){ + case BootWrite: + printf1(TAG_BOOT, "BootWrite: %08lx\r\n",(uint32_t)ptr); + if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR + || ((uint32_t)ptr+req->len) > APPLICATION_END_ADDR) + { + printf1(TAG_BOOT,"Bound exceeded [%08lx, %08lx]\r\n",APPLICATION_START_ADDR,APPLICATION_END_ADDR); + return CTAP2_ERR_NOT_ALLOWED; + } + + if (!has_erased || is_authorized_to_boot()) + { + erase_application(); + has_erased = 1; + } + if (is_authorized_to_boot()) + { + printf2(TAG_ERR, "Error, boot check bypassed\n"); + exit(1); + } + + flash_write((uint32_t)ptr,payload, req->len); + break; + case BootDone: + printf1(TAG_BOOT, "BootDone: "); + dump_hex1(TAG_BOOT, payload, 32); + ptr = (uint32_t *)APPLICATION_START_ADDR; + crypto_sha256_init(); + crypto_sha256_update((uint8_t*)ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); + crypto_sha256_final(hash); + curve = uECC_secp256r1(); + + if (! uECC_verify(pubkey, + hash, + 32, + payload, + curve)) + { + return CTAP2_ERR_OPERATION_DENIED; + } + authorize_application(); + REBOOT_FLAG = 1; + break; + case BootCheck: + return 0; + break; + case BootErase: + printf1(TAG_BOOT, "BootErase.\r\n"); + erase_application(); + return 0; + break; + case BootVersion: + printf1(TAG_BOOT, "BootVersion.\r\n"); + u2f_response_writeback(&version,1); + return 0; + break; + default: + return CTAP1_ERR_INVALID_COMMAND; + } + return 0; +} + +void bootloader_heartbeat() +{ + static int state = 0; + static uint32_t val = 0x10; + + if (state) + { + val--; + } + else + { + val++; + } + + if (val > 30 || val < 1) + { + state = !state; + } + led_rgb((val * 3)<<8 | (val*10) << 16); +} diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index 8715bc4..576d981 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -22,11 +22,6 @@ #define DISABLE_CTAPHID_WINK #define DISABLE_CTAPHID_CBOR -void printing_init(); -void hw_init(void); - -//#define TEST -//#define TEST_POWER #define LED_INIT_VALUE 0x101000 @@ -37,4 +32,13 @@ void hw_init(void); #define SKIP_BUTTON_CHECK_WITH_DELAY 0 #define SKIP_BUTTON_CHECK_FAST 1 +void printing_init(); +void hw_init(void); + +// Trigger software reset +void device_reboot(); + +int is_authorized_to_boot(); +void bootloader_heartbeat(); + #endif diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index 01417c5..c5c6ead 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -18,30 +18,11 @@ #include "ctaphid.h" #include "ctap.h" #include "crypto.h" -#include "uECC.h" -#include "u2f.h" +#include "memory_layout.h" -#define PAGE_SIZE 2048 -#define PAGES 128 -// Pages 119-127 are data -#define COUNTER2_PAGE (PAGES - 4) -#define COUNTER1_PAGE (PAGES - 3) -#define STATE2_PAGE (PAGES - 2) -#define STATE1_PAGE (PAGES - 1) - -#define RK_NUM_PAGES 10 -#define RK_START_PAGE (PAGES - 14) -#define RK_END_PAGE (PAGES - 14 + RK_NUM_PAGES) -#define APPLICATION_START_PAGE (16) -#define APPLICATION_START_ADDR flash_addr(APPLICATION_START_PAGE) - -#define APPLICATION_END_PAGE ((PAGES - 19)) // 119 is NOT included in application -#define APPLICATION_END_ADDR (flash_addr(APPLICATION_END_PAGE)-8) // NOT included in application - -#define AUTH_WORD_ADDR (flash_addr(APPLICATION_END_PAGE)-8) uint32_t __90_ms = 0; uint32_t __device_status = 0; @@ -509,162 +490,3 @@ void _Error_Handler(char *file, int line) { } } - - -#ifdef IS_BOOTLOADER - -extern uint8_t REBOOT_FLAG; - -typedef enum -{ - BootWrite = 0x40, - BootDone = 0x41, - BootCheck = 0x42, - BootErase = 0x43, - BootVersion = 0x44, -} BootOperation; - - -typedef struct { - uint8_t op; - uint8_t addr[3]; - uint8_t tag[4]; - uint8_t len; - uint8_t payload[255 - 9]; -} __attribute__((packed)) BootloaderReq; - -//#define APPLICATION_START_ADDR 0x8000 -//#define APPLICATION_START_PAGE (0x8000/PAGE_SIZE) - -//#define APPLICATION_END_ADDR (PAGE_SIZE*125-4) // NOT included in application - -static void erase_application() -{ - int page; - for(page = APPLICATION_START_PAGE; page < APPLICATION_END_PAGE; page++) - { - flash_erase_page(page); - } -} - -static void authorize_application() -{ - uint32_t zero = 0; - uint32_t * ptr; - ptr = (uint32_t *)AUTH_WORD_ADDR; - flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); -} -int is_authorized_to_boot() -{ - uint32_t * auth = (uint32_t *)AUTH_WORD_ADDR; - return *auth == 0; -} - -int bootloader_bridge(uint8_t klen, uint8_t * keyh) -{ - static int has_erased = 0; - BootloaderReq * req = (BootloaderReq * )keyh; - uint8_t payload[256]; - uint8_t hash[32]; - uint8_t version = 1; - - uint8_t * pubkey = (uint8_t*)"\x85\xaa\xce\xda\xd4\xb4\xd8\x0d\xf7\x0e\xe8\x91\x6d\x69\x8e\x00\x7a\x27\x40\x76\x93\x7a\x1d\x63\xb1\xcf\xe8\x22\xdd\x9f\xbc\x43\x3e\x34\x0a\x05\x9d\x8a\x9d\x72\xdc\xc2\x4b\x56\x9c\x64\x3d\xc1\x0d\x14\x64\x69\x52\x31\xd7\x54\xa3\xb6\x69\xa7\x6f\x6b\x81\x8d"; - const struct uECC_Curve_t * curve = NULL; - - if (req->len > 255-9) - { - return CTAP1_ERR_INVALID_LENGTH; - } - - memset(payload, 0xff, sizeof(payload)); - memmove(payload, req->payload, req->len); - - uint32_t addr = ((*((uint32_t*)req->addr)) & 0xffffff) | 0x8000000; - - uint32_t * ptr = (uint32_t *)addr; - - switch(req->op){ - case BootWrite: - printf1(TAG_BOOT, "BootWrite: %08lx\r\n",(uint32_t)ptr); - if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR - || ((uint32_t)ptr+req->len) > APPLICATION_END_ADDR) - { - printf1(TAG_BOOT,"Bound exceeded [%08lx, %08lx]\r\n",APPLICATION_START_ADDR,APPLICATION_END_ADDR); - return CTAP2_ERR_NOT_ALLOWED; - } - - if (!has_erased || is_authorized_to_boot()) - { - erase_application(); - has_erased = 1; - } - if (is_authorized_to_boot()) - { - printf2(TAG_ERR, "Error, boot check bypassed\n"); - exit(1); - } - - flash_write((uint32_t)ptr,payload, req->len); - break; - case BootDone: - printf1(TAG_BOOT, "BootDone: "); - dump_hex1(TAG_BOOT, payload, 32); - ptr = (uint32_t *)APPLICATION_START_ADDR; - crypto_sha256_init(); - crypto_sha256_update((uint8_t*)ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); - crypto_sha256_final(hash); - curve = uECC_secp256r1(); - - if (! uECC_verify(pubkey, - hash, - 32, - payload, - curve)) - { - return CTAP2_ERR_OPERATION_DENIED; - } - authorize_application(); - REBOOT_FLAG = 1; - break; - case BootCheck: - return 0; - break; - case BootErase: - printf1(TAG_BOOT, "BootErase.\r\n"); - erase_application(); - return 0; - break; - case BootVersion: - printf1(TAG_BOOT, "BootVersion.\r\n"); - u2f_response_writeback(&version,1); - return 0; - break; - default: - return CTAP1_ERR_INVALID_COMMAND; - } - return 0; -} - -void bootloader_heartbeat() -{ - static int state = 0; - static uint32_t val = 0x10; - int but = IS_BUTTON_PRESSED(); - - if (state) - { - val--; - } - else - { - val++; - } - - if (val > 30 || val < 1) - { - state = !state; - } - led_rgb((val * 3)<<8 | (val*10) << 16); -} - -#endif diff --git a/targets/stm32l442/src/memory_layout.h b/targets/stm32l442/src/memory_layout.h new file mode 100644 index 0000000..92ecd35 --- /dev/null +++ b/targets/stm32l442/src/memory_layout.h @@ -0,0 +1,33 @@ +#ifndef _MEMORY_LAYOUT_H_ +#define _MEMORY_LAYOUT_H_ + +#define PAGE_SIZE 2048 +#define PAGES 128 + +// Pages 119-127 are data +// Location of counter page and it's backup page +// The flash is wear leveled and counter should be fault tolerant +#define COUNTER2_PAGE (PAGES - 4) +#define COUNTER1_PAGE (PAGES - 3) + +// State of FIDO2 application +#define STATE2_PAGE (PAGES - 2) +#define STATE1_PAGE (PAGES - 1) + +// Storage of FIDO2 resident keys +#define RK_NUM_PAGES 10 +#define RK_START_PAGE (PAGES - 14) +#define RK_END_PAGE (PAGES - 14 + RK_NUM_PAGES) + +// Start of application code +#define APPLICATION_START_PAGE (16) +#define APPLICATION_START_ADDR flash_addr(APPLICATION_START_PAGE) + +// End of application code. Leave some extra room for future data storage. +#define APPLICATION_END_PAGE ((PAGES - 19)) // 119 is NOT included in application +#define APPLICATION_END_ADDR (flash_addr(APPLICATION_END_PAGE)-8) // NOT included in application + +// Bootloader state. +#define AUTH_WORD_ADDR (flash_addr(APPLICATION_END_PAGE)-8) + +#endif From 9b4b18e1a4b8ff65394a690d3ab9fb69dfe38c6a Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Mon, 3 Dec 2018 20:30:35 -0500 Subject: [PATCH 09/23] more configurable led --- fido2/main.c | 2 +- targets/stm32l442/bootloader/bootloader.c | 10 +++++++--- targets/stm32l442/bootloader/bootloader.h | 16 ++++++++++++++-- targets/stm32l442/bootloader/main.c | 4 ++-- targets/stm32l442/src/app.h | 15 ++++++++++++++- targets/stm32l442/src/device.c | 11 +++++++---- 6 files changed, 45 insertions(+), 13 deletions(-) diff --git a/fido2/main.c b/fido2/main.c index 2b304ea..3f751e7 100644 --- a/fido2/main.c +++ b/fido2/main.c @@ -78,7 +78,7 @@ int main(int argc, char * argv[]) while(1) { - if (millis() - t1 > 100) + if (millis() - t1 > HEARTBEAT_PERIOD) { heartbeat(); t1 = millis(); diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index 10ec7c1..4715b4a 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -143,7 +143,10 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) void bootloader_heartbeat() { static int state = 0; - static uint32_t val = 0x10; + static uint32_t val = (LED_MAX_SCALER - LED_MIN_SCALER)/2; + uint8_t r = (LED_INIT_VALUE >> 16) & 0xff; + uint8_t g = (LED_INIT_VALUE >> 8) & 0xff; + uint8_t b = (LED_INIT_VALUE >> 0) & 0xff; if (state) { @@ -154,9 +157,10 @@ void bootloader_heartbeat() val++; } - if (val > 30 || val < 1) + if (val > LED_MAX_SCALER || val < LED_MIN_SCALER) { state = !state; } - led_rgb((val * 3)<<8 | (val*10) << 16); + + led_rgb(((val * g)<<8) | ((val*r) << 16) | (val*b)); } diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index 576d981..d9b396a 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -22,8 +22,20 @@ #define DISABLE_CTAPHID_WINK #define DISABLE_CTAPHID_CBOR - -#define LED_INIT_VALUE 0x101000 +// 0xRRGGBB +#define LED_INIT_VALUE 0x0a0300 +#define LED_MAX_SCALER 40 +#define LED_MIN_SCALER 1 +// # of ms between each change in LED +#define HEARTBEAT_PERIOD 5 +// Each LED channel will be multiplied by a integer between LED_MAX_SCALER +// and LED_MIN_SCALER to cause the slow pulse. E.g. +// #define LED_INIT_VALUE 0x301000 +// #define LED_MAX_SCALER 30 +// #define LED_MIN_SCALER 1 +// #define HEARTBEAT_PERIOD 8 +// Will pulse from 0x301000 to 0x903000 to 0x301000 ... +// Which will take ~8 * (30)*2 ms // Button #define SOLO_BUTTON_PORT GPIOA diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index ac19810..f9ce411 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -107,12 +107,12 @@ int main(int argc, char * argv[]) memset(hidmsg,0,sizeof(hidmsg)); - printf1(TAG_GEN,"recv'ing hid msg \n"); + printf1(TAG_GEN,"recv'ing hid msg \n"); while(1) { - if (millis() - t1 > 8) + if (millis() - t1 > HEARTBEAT_PERIOD) { bootloader_heartbeat(); t1 = millis(); diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index f506427..cd7ab5f 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -27,7 +27,20 @@ void hw_init(void); //#define TEST //#define TEST_POWER -#define LED_INIT_VALUE 0x001000 +// 0xRRGGBB +#define LED_INIT_VALUE 0x000800 +#define LED_MAX_SCALER 30 +#define LED_MIN_SCALER 1 +// # of ms between each change in LED +#define HEARTBEAT_PERIOD 100 +// Each LED channel will be multiplied by a integer between LED_MAX_SCALER +// and LED_MIN_SCALER to cause the slow pulse. E.g. +// #define LED_INIT_VALUE 0x301000 +// #define LED_MAX_SCALER 30 +// #define LED_MIN_SCALER 1 +// #define HEARTBEAT_PERIOD 8 +// Will pulse from 0x301000 to 0x903000 to 0x301000 ... +// Which will take ~8 * (30)*2 ms // Button #define SOLO_BUTTON_PORT GPIOA diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index c5c6ead..80ba742 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -149,7 +149,10 @@ void main_loop_delay() void heartbeat() { static int state = 0; - static uint32_t val = (LED_INIT_VALUE >> 8) & 0xff; + static uint32_t val = (LED_MAX_SCALER - LED_MIN_SCALER)/2; + uint8_t r = (LED_INIT_VALUE >> 16) & 0xff; + uint8_t g = (LED_INIT_VALUE >> 8) & 0xff; + uint8_t b = (LED_INIT_VALUE >> 0) & 0xff; int but = IS_BUTTON_PRESSED(); if (state) @@ -161,13 +164,13 @@ void heartbeat() val++; } - if (val > 30 || val < 1) + if (val > LED_MAX_SCALER || val < LED_MIN_SCALER) { state = !state; } - if (but) led_rgb(val * 2); + if (but) led_rgb((val*b)); else - led_rgb((val << 16) | (val*2 << 8)); + led_rgb(((val * g)<<8) | ((val*r) << 16) | (val*b)); } void authenticator_read_state(AuthenticatorState * a) From 5a96e82f4d9ca12a4169a437cbd09ff2ca270880 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Mon, 3 Dec 2018 23:01:51 -0500 Subject: [PATCH 10/23] python script for progamming via solo bootloader --- fido2/extensions/extensions.c | 14 ++- fido2/log.c | 1 + fido2/log.h | 1 + fido2/util.c | 7 -- targets/stm32l442/bootloader/bootloader.c | 1 + targets/stm32l442/bootloader/main.c | 3 +- targets/stm32l442/src/app.h | 5 + tools/programmer.py | 122 ++++++++++++++++++++++ tools/sign_firmware.py | 4 +- web/js/wallet.js | 1 + 10 files changed, 144 insertions(+), 15 deletions(-) create mode 100644 tools/programmer.py diff --git a/fido2/extensions/extensions.c b/fido2/extensions/extensions.c index 4e76119..02b6d77 100644 --- a/fido2/extensions/extensions.c +++ b/fido2/extensions/extensions.c @@ -27,6 +27,8 @@ #include "log.h" +#define htonl(x) (((x & 0xff) << 24) | ((x & 0xff00) << 8) \ + | ((x & 0xff0000) >> 8) | ((x & 0xff000000) >> 24) ) int is_extension_request(uint8_t * kh, int len) { @@ -53,11 +55,11 @@ int16_t bridge_u2f_to_extensions(uint8_t * _chal, uint8_t * _appid, uint8_t klen uint8_t sig[72]; if (extension_needs_atomic_count(klen, keyh)) { - count = ctap_atomic_count(0); + count = htonl(ctap_atomic_count(0)); } else { - count = 10; + count = htonl(10); } u2f_response_writeback(&up,1); @@ -102,7 +104,8 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) { rcode = U2F_SW_WRONG_DATA; } - printf1(TAG_WALLET,"Ignoring U2F request\n"); + printf1(TAG_EXT,"Ignoring U2F request\n"); + dump_hex1(TAG_EXT, (uint8_t *) &auth->kh, auth->khl); goto end; } else @@ -110,7 +113,8 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) if ( ! is_extension_request((uint8_t *) &auth->kh, auth->khl)) // Pin requests { rcode = U2F_SW_WRONG_PAYLOAD; - printf1(TAG_WALLET,"Ignoring U2F request\n"); + printf1(TAG_EXT, "Ignoring U2F request\n"); + dump_hex1(TAG_EXT, (uint8_t *) &auth->kh, auth->khl); goto end; } rcode = bridge_u2f_to_extensions(auth->chal, auth->app, auth->khl, (uint8_t*)&auth->kh); @@ -118,7 +122,7 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len) } else if (req->ins == U2F_VERSION) { - printf1(TAG_U2F, "U2F_VERSION\n"); + printf1(TAG_EXT, "U2F_VERSION\n"); if (len) { rcode = U2F_SW_WRONG_LENGTH; diff --git a/fido2/log.c b/fido2/log.c index 42a2b7f..d144288 100644 --- a/fido2/log.c +++ b/fido2/log.c @@ -61,6 +61,7 @@ struct logtag tagtable[] = { {TAG_WALLET,"WALLET"}, {TAG_STOR,"STOR"}, {TAG_BOOT,"BOOT"}, + {TAG_BOOT,"EXT"}, }; diff --git a/fido2/log.h b/fido2/log.h index d298a52..e95b999 100644 --- a/fido2/log.h +++ b/fido2/log.h @@ -56,6 +56,7 @@ typedef enum TAG_STOR = (1 << 15), TAG_DUMP2 = (1 << 16), TAG_BOOT = (1 << 17), + TAG_EXT = (1 << 17), TAG_FILENO = (1<<31) } LOG_TAG; diff --git a/fido2/util.c b/fido2/util.c index 0d6f9bb..0ca2ad2 100644 --- a/fido2/util.c +++ b/fido2/util.c @@ -22,7 +22,6 @@ #include #include -#if DEBUG_LEVEL void dump_hex(uint8_t * buf, int size) { while(size--) @@ -31,9 +30,3 @@ void dump_hex(uint8_t * buf, int size) } printf("\n"); } -#else -void dump_hex(uint8_t * buf, int size) -{ -} - -#endif diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index 4715b4a..435b25a 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -130,6 +130,7 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) return 0; break; case BootVersion: + has_erased = 0; printf1(TAG_BOOT, "BootVersion.\r\n"); u2f_response_writeback(&version,1); return 0; diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index f9ce411..83f670f 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -72,6 +72,7 @@ int main(int argc, char * argv[]) // TAG_TIME| // TAG_DUMP| TAG_BOOT| + TAG_EXT| TAG_GREEN| TAG_RED| TAG_ERR @@ -107,7 +108,7 @@ int main(int argc, char * argv[]) memset(hidmsg,0,sizeof(hidmsg)); - printf1(TAG_GEN,"recv'ing hid msg \n"); + printf1(TAG_GEN,"recv'ing hid msg \n"); while(1) diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index cd7ab5f..e52b4a9 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -11,6 +11,11 @@ #define BOOT_TO_DFU 0 +// Uncomment SOLO_HACKKER to Only use level 1 read-out-protection, +// allows booting to ST bootloader or Solo bootloader without any button press, +// Disables signature check in Solo bootloader. +#define SOLO_HACKER + //#define USING_DEV_BOARD //#define ENABLE_U2F_EXTENSIONS diff --git a/tools/programmer.py b/tools/programmer.py new file mode 100644 index 0000000..2407014 --- /dev/null +++ b/tools/programmer.py @@ -0,0 +1,122 @@ +# Programs solo using the Solo bootloader +# Requires python-fido2, intelhex + +import sys,os,time,struct +import array,struct,socket,json,base64 +import tempfile +from binascii import hexlify + +from fido2.hid import CtapHidDevice, CTAPHID +from fido2.client import Fido2Client, ClientError +from fido2.ctap import CtapError +from fido2.ctap1 import CTAP1 + +from intelhex import IntelHex + +from sign_firmware import * + +class SoloBootloader: + write = 0x40 + done = 0x41 + check = 0x42 + erase = 0x43 + version = 0x44 + + TAG = b'\x8C\x27\x90\xf6' + +class Programmer(): + + def __init__(self,): + self.origin = 'https://example.org' + + def find_device(self,): + dev = next(CtapHidDevice.list_devices(), None) + if not dev: + raise RuntimeError('No FIDO device found') + self.dev = dev + self.ctap1 = CTAP1(dev) + + @staticmethod + def format_request(cmd,addr = 0,data = b'A'*16): + arr = b'\x00'*9 + addr = struct.pack('' % sys.argv[0]) + sys.exit(1) + + p = Programmer() + p.find_device() + + print('version is ', p.version()) + + p.program_file(sys.argv[1]) diff --git a/tools/sign_firmware.py b/tools/sign_firmware.py index 927433c..ae79c60 100644 --- a/tools/sign_firmware.py +++ b/tools/sign_firmware.py @@ -22,6 +22,8 @@ def get_firmware_object(sk_name, hex_file): fw = base64.b64encode(fw.encode()) fw = to_websafe(fw.decode()) + # start of firmware and the size of the flash region allocated for it. + # TODO put this somewhere else. START = 0x08008000 END = START + 1024 * 186 - 8 @@ -58,5 +60,3 @@ if __name__ == '__main__': wfile = open(sys.argv[3],'wb+') wfile.write(json.dumps(msg).encode()) wfile.close() - - diff --git a/web/js/wallet.js b/web/js/wallet.js index b1be149..63f3e3a 100644 --- a/web/js/wallet.js +++ b/web/js/wallet.js @@ -262,6 +262,7 @@ var CMD = { boot_done: 0x41, boot_check: 0x42, boot_erase: 0x43, + boot_version: 0x44, }; var PIN = { From b0cc9cf582157d5eef6fe00137377e526296a6db Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 00:15:58 -0500 Subject: [PATCH 11/23] program using just hid protocol, quicker --- fido2/ctaphid.c | 18 ++++ fido2/ctaphid.h | 3 + fido2/extensions/extensions.h | 2 +- fido2/u2f.c | 7 +- fido2/u2f.h | 1 + targets/stm32l442/bootloader/bootloader.c | 35 +++++--- targets/stm32l442/bootloader/main.c | 3 +- tools/ctap_test.py | 1 - tools/programmer.py | 100 ++++++++++++++++++---- web/js/wallet.js | 5 +- 10 files changed, 137 insertions(+), 38 deletions(-) diff --git a/fido2/ctaphid.c b/fido2/ctaphid.c index 86ec845..f586764 100644 --- a/fido2/ctaphid.c +++ b/fido2/ctaphid.c @@ -30,6 +30,7 @@ #include "time.h" #include "util.h" #include "log.h" +#include "extensions.h" #include APP_CONFIG typedef enum @@ -682,6 +683,23 @@ uint8_t ctaphid_handle_packet(uint8_t * pkt_raw) printf1(TAG_HID,"CTAPHID_CANCEL\n"); is_busy = 0; break; +#if defined(IS_BOOTLOADER) + case CTAPHID_BOOT: + printf1(TAG_HID,"CTAPHID_BOOT\n"); + ctap_response_init(&ctap_resp); + u2f_set_writeback_buffer(&ctap_resp); + is_busy = bootloader_bridge(len, ctap_buffer); + + ctaphid_write_buffer_init(&wb); + wb.cid = cid; + wb.cmd = CTAPHID_BOOT; + wb.bcnt = (ctap_resp.length + 1); + ctaphid_write(&wb, &is_busy, 1); + ctaphid_write(&wb, ctap_resp.data, ctap_resp.length); + ctaphid_write(&wb, NULL, 0); + is_busy = 0; + break; +#endif default: printf2(TAG_ERR,"error, unimplemented HID cmd: %02x\r\n", buffer_cmd()); ctaphid_send_error(cid, CTAP1_ERR_INVALID_COMMAND); diff --git a/fido2/ctaphid.h b/fido2/ctaphid.h index f0e5bf5..4336062 100644 --- a/fido2/ctaphid.h +++ b/fido2/ctaphid.h @@ -38,6 +38,9 @@ #define CTAPHID_ERROR (TYPE_INIT | 0x3f) #define CTAPHID_KEEPALIVE (TYPE_INIT | 0x3b) +// Custom commands between 0x40-0x7f +#define CTAPHID_BOOT (TYPE_INIT | 0x50) + #define ERR_INVALID_CMD 0x01 #define ERR_INVALID_PAR 0x02 #define ERR_INVALID_SEQ 0x04 diff --git a/fido2/extensions/extensions.h b/fido2/extensions/extensions.h index 9ee4cc3..1fb6db0 100644 --- a/fido2/extensions/extensions.h +++ b/fido2/extensions/extensions.h @@ -25,6 +25,6 @@ int16_t extend_u2f(struct u2f_request_apdu* req, uint32_t len); -int bootloader_bridge(uint8_t klen, uint8_t * keyh); +int bootloader_bridge(int klen, uint8_t * keyh); #endif /* EXTENSIONS_H_ */ diff --git a/fido2/u2f.c b/fido2/u2f.c index 3a4f690..c040076 100644 --- a/fido2/u2f.c +++ b/fido2/u2f.c @@ -34,6 +34,7 @@ static int16_t u2f_authenticate(struct u2f_authenticate_request * req, uint8_t c int8_t u2f_response_writeback(const uint8_t * buf, uint16_t len); void u2f_reset_response(); + static CTAP_RESPONSE * _u2f_resp = NULL; void u2f_request(struct u2f_request_apdu* req, CTAP_RESPONSE * resp) @@ -43,7 +44,7 @@ void u2f_request(struct u2f_request_apdu* req, CTAP_RESPONSE * resp) uint32_t len = ((req->LC3) | ((uint32_t)req->LC2 << 8) | ((uint32_t)req->LC1 << 16)); uint8_t byte; - _u2f_resp = resp; + u2f_set_writeback_buffer(resp); if (req->cla != 0) { @@ -137,6 +138,10 @@ void u2f_reset_response() ctap_response_init(_u2f_resp); } +void u2f_set_writeback_buffer(CTAP_RESPONSE * resp) +{ + _u2f_resp = resp; +} static void dump_signature_der(uint8_t * sig) { diff --git a/fido2/u2f.h b/fido2/u2f.h index e2027d3..0d28b0c 100644 --- a/fido2/u2f.h +++ b/fido2/u2f.h @@ -116,6 +116,7 @@ void u2f_request(struct u2f_request_apdu* req, CTAP_RESPONSE * resp); int8_t u2f_response_writeback(const uint8_t * buf, uint16_t len); void u2f_reset_response(); +void u2f_set_writeback_buffer(CTAP_RESPONSE * resp); int16_t u2f_version(); diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index 435b25a..ca9610d 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -28,8 +28,9 @@ typedef struct { uint8_t op; uint8_t addr[3]; uint8_t tag[4]; - uint8_t len; - uint8_t payload[255 - 9]; + uint8_t lenh; + uint8_t lenl; + uint8_t payload[255 - 10]; } __attribute__((packed)) BootloaderReq; @@ -49,30 +50,29 @@ static void authorize_application() ptr = (uint32_t *)AUTH_WORD_ADDR; flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); } + int is_authorized_to_boot() { uint32_t * auth = (uint32_t *)AUTH_WORD_ADDR; return *auth == 0; } -int bootloader_bridge(uint8_t klen, uint8_t * keyh) +int bootloader_bridge(int klen, uint8_t * keyh) { static int has_erased = 0; BootloaderReq * req = (BootloaderReq * )keyh; - uint8_t payload[256]; uint8_t hash[32]; uint8_t version = 1; + uint16_t len = (req->lenh << 8) | (req->lenl); - uint8_t * pubkey = (uint8_t*)"\x85\xaa\xce\xda\xd4\xb4\xd8\x0d\xf7\x0e\xe8\x91\x6d\x69\x8e\x00\x7a\x27\x40\x76\x93\x7a\x1d\x63\xb1\xcf\xe8\x22\xdd\x9f\xbc\x43\x3e\x34\x0a\x05\x9d\x8a\x9d\x72\xdc\xc2\x4b\x56\x9c\x64\x3d\xc1\x0d\x14\x64\x69\x52\x31\xd7\x54\xa3\xb6\x69\xa7\x6f\x6b\x81\x8d"; - const struct uECC_Curve_t * curve = NULL; - - if (req->len > 255-9) + if (len > klen-10) { + printf1(TAG_BOOT,"Invalid length %d / %d\r\n", len, klen-9); return CTAP1_ERR_INVALID_LENGTH; } - memset(payload, 0xff, sizeof(payload)); - memmove(payload, req->payload, req->len); + uint8_t * pubkey = (uint8_t*)"\x85\xaa\xce\xda\xd4\xb4\xd8\x0d\xf7\x0e\xe8\x91\x6d\x69\x8e\x00\x7a\x27\x40\x76\x93\x7a\x1d\x63\xb1\xcf\xe8\x22\xdd\x9f\xbc\x43\x3e\x34\x0a\x05\x9d\x8a\x9d\x72\xdc\xc2\x4b\x56\x9c\x64\x3d\xc1\x0d\x14\x64\x69\x52\x31\xd7\x54\xa3\xb6\x69\xa7\x6f\x6b\x81\x8d"; + const struct uECC_Curve_t * curve = NULL; uint32_t addr = ((*((uint32_t*)req->addr)) & 0xffffff) | 0x8000000; @@ -82,7 +82,7 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) case BootWrite: printf1(TAG_BOOT, "BootWrite: %08lx\r\n",(uint32_t)ptr); if ((uint32_t)ptr < APPLICATION_START_ADDR || (uint32_t)ptr >= APPLICATION_END_ADDR - || ((uint32_t)ptr+req->len) > APPLICATION_END_ADDR) + || ((uint32_t)ptr+len) > APPLICATION_END_ADDR) { printf1(TAG_BOOT,"Bound exceeded [%08lx, %08lx]\r\n",APPLICATION_START_ADDR,APPLICATION_END_ADDR); return CTAP2_ERR_NOT_ALLOWED; @@ -99,11 +99,17 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) exit(1); } - flash_write((uint32_t)ptr,payload, req->len); + flash_write((uint32_t)ptr,req->payload, len); break; case BootDone: printf1(TAG_BOOT, "BootDone: "); - dump_hex1(TAG_BOOT, payload, 32); +#ifndef SOLO_HACKER + if (len != 64) + { + printf1(TAG_BOOT,"Invalid length for signature\r\n"); + return CTAP1_ERR_INVALID_LENGTH; + } + dump_hex1(TAG_BOOT, req->payload, 32); ptr = (uint32_t *)APPLICATION_START_ADDR; crypto_sha256_init(); crypto_sha256_update((uint8_t*)ptr, APPLICATION_END_ADDR-APPLICATION_START_ADDR); @@ -113,11 +119,12 @@ int bootloader_bridge(uint8_t klen, uint8_t * keyh) if (! uECC_verify(pubkey, hash, 32, - payload, + req->payload, curve)) { return CTAP2_ERR_OPERATION_DENIED; } +#endif authorize_application(); REBOOT_FLAG = 1; break; diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 83f670f..0a2e4ea 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -70,7 +70,8 @@ int main(int argc, char * argv[]) /*TAG_U2F|*/ // TAG_PARSE | // TAG_TIME| - // TAG_DUMP| + // TAG_DUMP| + // TAG_DUMP2| TAG_BOOT| TAG_EXT| TAG_GREEN| diff --git a/tools/ctap_test.py b/tools/ctap_test.py index 76f981f..727aea2 100644 --- a/tools/ctap_test.py +++ b/tools/ctap_test.py @@ -74,7 +74,6 @@ class Tester(): #cmd,resp = self.recv_raw() def send_data(self, cmd, data): - #print('<<', hexlify(data)) if type(data) != type(b''): data = struct.pack('%dB' % len(data), *[ord(x) for x in data]) with Timeout(1.0) as event: diff --git a/tools/programmer.py b/tools/programmer.py index 2407014..81204a7 100644 --- a/tools/programmer.py +++ b/tools/programmer.py @@ -1,7 +1,7 @@ # Programs solo using the Solo bootloader # Requires python-fido2, intelhex -import sys,os,time,struct +import sys,os,time,struct,argparse import array,struct,socket,json,base64 import tempfile from binascii import hexlify @@ -10,6 +10,7 @@ from fido2.hid import CtapHidDevice, CTAPHID from fido2.client import Fido2Client, ClientError from fido2.ctap import CtapError from fido2.ctap1 import CTAP1 +from fido2.utils import Timeout from intelhex import IntelHex @@ -22,12 +23,26 @@ class SoloBootloader: erase = 0x43 version = 0x44 + HIDCommand = 0x50 + TAG = b'\x8C\x27\x90\xf6' class Programmer(): def __init__(self,): self.origin = 'https://example.org' + self.exchange = self.exchange_hid + self.reboot = True + + def use_u2f(self,): + self.exchange = self.exchange_u2f + + def use_hid(self,): + self.exchange = self.exchange_hid + + def set_reboot(self,val): + """ option to reboot after programming """ + self.reboot = val def find_device(self,): dev = next(CtapHidDevice.list_devices(), None) @@ -36,16 +51,36 @@ class Programmer(): self.dev = dev self.ctap1 = CTAP1(dev) + if self.exchange == self.exchange_hid: + self.send_data_hid(CTAPHID.INIT, '\x11\x11\x11\x11\x11\x11\x11\x11') + @staticmethod def format_request(cmd,addr = 0,data = b'A'*16): arr = b'\x00'*9 addr = struct.pack('H', len(data)) return cmd + addr[:3] + SoloBootloader.TAG + length + data - def exchange(self,cmd,addr=0,data=b'A'*16): + def send_data_hid(self, cmd, data): + if type(data) != type(b''): + data = struct.pack('%dB' % len(data), *[ord(x) for x in data]) + with Timeout(1.0) as event: + return self.dev.call(cmd, data,event) + + def exchange_hid(self,cmd,addr=0,data=b'A'*16): + req = Programmer.format_request(cmd,addr,data) + + data = self.send_data_hid(SoloBootloader.HIDCommand, req) + + ret = data[0] + if ret != CtapError.ERR.SUCCESS: + raise RuntimeError('Device returned non-success code %02x' % ret) + + return data[1:] + + def exchange_u2f(self,cmd,addr=0,data=b'A'*16): appid = b'A'*32 chal = b'B'*32 @@ -77,21 +112,32 @@ class Programmer(): def program_file(self,name): data = json.loads(open(name,'r').read()) - fw = base64.b64decode(from_websafe(data['firmware']).encode()) - sig = base64.b64decode(from_websafe(data['signature']).encode()) + if name.lower().endswith('.json'): + fw = base64.b64decode(from_websafe(data['firmware']).encode()) + sig = base64.b64decode(from_websafe(data['signature']).encode()) + ih = IntelHex() + tmp = tempfile.NamedTemporaryFile(delete=False) + tmp.write(fw) + tmp.seek(0) + tmp.close() + ih.fromfile(tmp.name, format='hex') + else: + if not name.lower().endswith('.hex'): + print('Warning, assuming "%s" is an Intel Hex file.' % name) + sig = None + ih = IntelHex() + ih.fromfile(tmp.name, format='hex') - ih = IntelHex() - tmp = tempfile.NamedTemporaryFile(delete=False) - tmp.write(fw) - tmp.seek(0) - tmp.close() - ih.fromfile(tmp.name, format='hex') + if self.exchange == self.exchange_hid: + chunk = 2048 + else: + chunk = 240 - chunk = 240 seg = ih.segments()[0] size = seg[1] - seg[0] total = 0 t1 = time.time()*1000 + print('erasing...') for i in range(seg[0], seg[1], chunk): s = i e = min(i+chunk,seg[1]) @@ -100,23 +146,41 @@ class Programmer(): total += chunk progress = total/float(size)*100 sys.stdout.write('downloading %.2f%%...\r' % progress) - sys.stdout.write('downloading 100% \r\n') + sys.stdout.write('downloaded 100% \r\n') t2 = time.time()*1000 print('time: %.2f s' % ((t2-t1)/1000.0)) print('Verifying...') - self.verify_flash(sig) + if sig is not None: + self.verify_flash(sig) + else: + self.verify_flash(b'A'*64) if __name__ == '__main__': - if len(sys.argv) != 2: - print('usage: %s ' % sys.argv[0]) - sys.exit(1) + + parser = argparse.ArgumentParser() + parser.add_argument("", help = 'firmware file. Either a JSON or hex file. JSON file contains signature while hex does not.') + parser.add_argument("--use-hid", action="store_true", help = 'Programs using custom HID command (default). Quicker than using U2F authenticate which is what a browser has to use.') + parser.add_argument("--use-u2f", action="store_true", help = 'Programs using U2F authenticate. This is what a web application will use.') + parser.add_argument("--no-reset", action="store_true", help = 'Don\'t reset after writing firmware. Stay in bootloader mode.') + parser.add_argument("--reset-only", action="store_true", help = 'Don\'t write anything, try to boot without a signature.') + args = parser.parse_args() + print() p = Programmer() p.find_device() + if args.use_u2f: + p.use_u2f() + + if args.no_reset: + p.set_reboot(False) + print('version is ', p.version()) - p.program_file(sys.argv[1]) + if not args.reset_only: + p.program_file(args.__dict__['']) + else: + p.exchange(SoloBootloader.done,0,b'A'*64) diff --git a/web/js/wallet.js b/web/js/wallet.js index 63f3e3a..b1d2cd6 100644 --- a/web/js/wallet.js +++ b/web/js/wallet.js @@ -425,9 +425,10 @@ function formatBootRequest(cmd, addr, data) { array[6] = 0x90; array[7] = 0xf6; - array[8] = data.length & 0xff; + array[8] = 0; + array[9] = data.length & 0xff; - var offset = 9; + var offset = 10; var i; for (i = 0; i < data.length; i++){ From 97b715881b739e5cdd4c475bafdf34a01c20c25a Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 01:30:53 -0500 Subject: [PATCH 12/23] boot directly to solo bootloader for solo hacker --- fido2/ctaphid.c | 12 + fido2/ctaphid.h | 1 + fido2/device.h | 3 +- targets/stm32l442/bootloader/bootloader.c | 1 + targets/stm32l442/bootloader/bootloader.h | 3 + targets/stm32l442/bootloader/main.c | 10 + targets/stm32l442/lib/stm32l4xx_ll_iwdg.h | 361 ++++++++++++++++++++++ targets/stm32l442/src/device.c | 22 +- tools/programmer.py | 75 ++++- 9 files changed, 475 insertions(+), 13 deletions(-) create mode 100644 targets/stm32l442/lib/stm32l4xx_ll_iwdg.h diff --git a/fido2/ctaphid.c b/fido2/ctaphid.c index f586764..7946db6 100644 --- a/fido2/ctaphid.c +++ b/fido2/ctaphid.c @@ -699,6 +699,18 @@ uint8_t ctaphid_handle_packet(uint8_t * pkt_raw) ctaphid_write(&wb, NULL, 0); is_busy = 0; break; +#endif +#if defined(SOLO_HACKER) + case CTAPHID_ENTERBOOT: + printf1(TAG_HID,"CTAPHID_ENTERBOOT\n"); + boot_solo_bootloader(); + ctaphid_write_buffer_init(&wb); + wb.cid = cid; + wb.cmd = CTAPHID_ENTERBOOT; + wb.bcnt = 0; + ctaphid_write(&wb, NULL, 0); + is_busy = 0; + break; #endif default: printf2(TAG_ERR,"error, unimplemented HID cmd: %02x\r\n", buffer_cmd()); diff --git a/fido2/ctaphid.h b/fido2/ctaphid.h index 4336062..5683dbf 100644 --- a/fido2/ctaphid.h +++ b/fido2/ctaphid.h @@ -40,6 +40,7 @@ // Custom commands between 0x40-0x7f #define CTAPHID_BOOT (TYPE_INIT | 0x50) +#define CTAPHID_ENTERBOOT (TYPE_INIT | 0x51) #define ERR_INVALID_CMD 0x01 #define ERR_INVALID_PAR 0x02 diff --git a/fido2/device.h b/fido2/device.h index 8d78df9..83b7f63 100644 --- a/fido2/device.h +++ b/fido2/device.h @@ -94,7 +94,8 @@ void ctap_store_rk(int index,CTAP_residentKey * rk); void ctap_load_rk(int index,CTAP_residentKey * rk); void ctap_overwrite_rk(int index,CTAP_residentKey * rk); - +// For Solo hacker +void boot_solo_bootloader(); diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index ca9610d..f157ec6 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -12,6 +12,7 @@ #include "ctap_errors.h" #include "log.h" + extern uint8_t REBOOT_FLAG; typedef enum diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index d9b396a..412a5a2 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -13,6 +13,9 @@ #define IS_BOOTLOADER 1 + +#define SOLO_HACKER + #define ENABLE_U2F_EXTENSIONS // #define ENABLE_U2F diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 0a2e4ea..f5aee0c 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -31,6 +31,7 @@ #include "log.h" #include "ctap.h" #include "app.h" +#include "stm32l4xx_ll_rcc.h" #include "stm32l4xx.h" @@ -92,6 +93,14 @@ int main(int argc, char * argv[]) } } +#ifdef SOLO_HACKER + if ( RCC->CSR & (1<<29) )// check if there was independent watchdog reset + { + RCC->CSR |= (1<<23); // clear reset flags + goto start_bootloader; + } +#endif + if (boot && is_authorized_to_boot()) { BOOT_boot(); @@ -100,6 +109,7 @@ int main(int argc, char * argv[]) { printf1(TAG_RED,"Not authorized to boot\r\n"); } + start_bootloader: usbhid_init(); printf1(TAG_GEN,"init usb\n"); diff --git a/targets/stm32l442/lib/stm32l4xx_ll_iwdg.h b/targets/stm32l442/lib/stm32l4xx_ll_iwdg.h new file mode 100644 index 0000000..6fc7ee2 --- /dev/null +++ b/targets/stm32l442/lib/stm32l4xx_ll_iwdg.h @@ -0,0 +1,361 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_iwdg.h + * @author MCD Application Team + * @brief Header file of IWDG LL module. + ****************************************************************************** + * @attention + * + *

© COPYRIGHT(c) 2017 STMicroelectronics

+ * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L4xx_LL_IWDG_H +#define __STM32L4xx_LL_IWDG_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined(IWDG) + +/** @defgroup IWDG_LL IWDG + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup IWDG_LL_Private_Constants IWDG Private Constants + * @{ + */ + +#define LL_IWDG_KEY_RELOAD 0x0000AAAAU /*!< IWDG Reload Counter Enable */ +#define LL_IWDG_KEY_ENABLE 0x0000CCCCU /*!< IWDG Peripheral Enable */ +#define LL_IWDG_KEY_WR_ACCESS_ENABLE 0x00005555U /*!< IWDG KR Write Access Enable */ +#define LL_IWDG_KEY_WR_ACCESS_DISABLE 0x00000000U /*!< IWDG KR Write Access Disable */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup IWDG_LL_Exported_Constants IWDG Exported Constants + * @{ + */ + +/** @defgroup IWDG_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_IWDG_ReadReg function + * @{ + */ +#define LL_IWDG_SR_PVU IWDG_SR_PVU /*!< Watchdog prescaler value update */ +#define LL_IWDG_SR_RVU IWDG_SR_RVU /*!< Watchdog counter reload value update */ +#define LL_IWDG_SR_WVU IWDG_SR_WVU /*!< Watchdog counter window value update */ + +/** + * @} + */ + +/** @defgroup IWDG_LL_EC_PRESCALER Prescaler Divider + * @{ + */ +#define LL_IWDG_PRESCALER_4 0x00000000U /*!< Divider by 4 */ +#define LL_IWDG_PRESCALER_8 (IWDG_PR_PR_0) /*!< Divider by 8 */ +#define LL_IWDG_PRESCALER_16 (IWDG_PR_PR_1) /*!< Divider by 16 */ +#define LL_IWDG_PRESCALER_32 (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< Divider by 32 */ +#define LL_IWDG_PRESCALER_64 (IWDG_PR_PR_2) /*!< Divider by 64 */ +#define LL_IWDG_PRESCALER_128 (IWDG_PR_PR_2 | IWDG_PR_PR_0) /*!< Divider by 128 */ +#define LL_IWDG_PRESCALER_256 (IWDG_PR_PR_2 | IWDG_PR_PR_1) /*!< Divider by 256 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup IWDG_LL_Exported_Macros IWDG Exported Macros + * @{ + */ + +/** @defgroup IWDG_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in IWDG register + * @param __INSTANCE__ IWDG Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_IWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in IWDG register + * @param __INSTANCE__ IWDG Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_IWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup IWDG_LL_Exported_Functions IWDG Exported Functions + * @{ + */ +/** @defgroup IWDG_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Start the Independent Watchdog + * @note Except if the hardware watchdog option is selected + * @rmtoll KR KEY LL_IWDG_Enable + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_Enable(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDGx->KR, LL_IWDG_KEY_ENABLE); +} + +/** + * @brief Reloads IWDG counter with value defined in the reload register + * @rmtoll KR KEY LL_IWDG_ReloadCounter + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_ReloadCounter(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDGx->KR, LL_IWDG_KEY_RELOAD); +} + +/** + * @brief Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers + * @rmtoll KR KEY LL_IWDG_EnableWriteAccess + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_EnableWriteAccess(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDGx->KR, LL_IWDG_KEY_WR_ACCESS_ENABLE); +} + +/** + * @brief Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers + * @rmtoll KR KEY LL_IWDG_DisableWriteAccess + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_DisableWriteAccess(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDGx->KR, LL_IWDG_KEY_WR_ACCESS_DISABLE); +} + +/** + * @brief Select the prescaler of the IWDG + * @rmtoll PR PR LL_IWDG_SetPrescaler + * @param IWDGx IWDG Instance + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_IWDG_PRESCALER_4 + * @arg @ref LL_IWDG_PRESCALER_8 + * @arg @ref LL_IWDG_PRESCALER_16 + * @arg @ref LL_IWDG_PRESCALER_32 + * @arg @ref LL_IWDG_PRESCALER_64 + * @arg @ref LL_IWDG_PRESCALER_128 + * @arg @ref LL_IWDG_PRESCALER_256 + * @retval None + */ +__STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescaler) +{ + WRITE_REG(IWDGx->PR, IWDG_PR_PR & Prescaler); +} + +/** + * @brief Get the selected prescaler of the IWDG + * @rmtoll PR PR LL_IWDG_GetPrescaler + * @param IWDGx IWDG Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_IWDG_PRESCALER_4 + * @arg @ref LL_IWDG_PRESCALER_8 + * @arg @ref LL_IWDG_PRESCALER_16 + * @arg @ref LL_IWDG_PRESCALER_32 + * @arg @ref LL_IWDG_PRESCALER_64 + * @arg @ref LL_IWDG_PRESCALER_128 + * @arg @ref LL_IWDG_PRESCALER_256 + */ +__STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx) +{ + return (READ_REG(IWDGx->PR)); +} + +/** + * @brief Specify the IWDG down-counter reload value + * @rmtoll RLR RL LL_IWDG_SetReloadCounter + * @param IWDGx IWDG Instance + * @param Counter Value between Min_Data=0 and Max_Data=0x0FFF + * @retval None + */ +__STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Counter) +{ + WRITE_REG(IWDGx->RLR, IWDG_RLR_RL & Counter); +} + +/** + * @brief Get the specified IWDG down-counter reload value + * @rmtoll RLR RL LL_IWDG_GetReloadCounter + * @param IWDGx IWDG Instance + * @retval Value between Min_Data=0 and Max_Data=0x0FFF + */ +__STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx) +{ + return (READ_REG(IWDGx->RLR)); +} + +/** + * @brief Specify high limit of the window value to be compared to the down-counter. + * @rmtoll WINR WIN LL_IWDG_SetWindow + * @param IWDGx IWDG Instance + * @param Window Value between Min_Data=0 and Max_Data=0x0FFF + * @retval None + */ +__STATIC_INLINE void LL_IWDG_SetWindow(IWDG_TypeDef *IWDGx, uint32_t Window) +{ + WRITE_REG(IWDGx->WINR, IWDG_WINR_WIN & Window); +} + +/** + * @brief Get the high limit of the window value specified. + * @rmtoll WINR WIN LL_IWDG_GetWindow + * @param IWDGx IWDG Instance + * @retval Value between Min_Data=0 and Max_Data=0x0FFF + */ +__STATIC_INLINE uint32_t LL_IWDG_GetWindow(IWDG_TypeDef *IWDGx) +{ + return (READ_REG(IWDGx->WINR)); +} + +/** + * @} + */ + +/** @defgroup IWDG_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Check if flag Prescaler Value Update is set or not + * @rmtoll SR PVU LL_IWDG_IsActiveFlag_PVU + * @param IWDGx IWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx) +{ + return (uint32_t)(READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU)); +} + +/** + * @brief Check if flag Reload Value Update is set or not + * @rmtoll SR RVU LL_IWDG_IsActiveFlag_RVU + * @param IWDGx IWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx) +{ + return (uint32_t)(READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU)); +} + +/** + * @brief Check if flag Window Value Update is set or not + * @rmtoll SR WVU LL_IWDG_IsActiveFlag_WVU + * @param IWDGx IWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_WVU(IWDG_TypeDef *IWDGx) +{ + return (uint32_t)(READ_BIT(IWDGx->SR, IWDG_SR_WVU) == (IWDG_SR_WVU)); +} + +/** + * @brief Check if all flags Prescaler, Reload & Window Value Update are reset or not + * @rmtoll SR PVU LL_IWDG_IsReady\n + * SR WVU LL_IWDG_IsReady\n + * SR RVU LL_IWDG_IsReady + * @param IWDGx IWDG Instance + * @retval State of bits (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx) +{ + return (uint32_t)(READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU | IWDG_SR_WVU) == 0U); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* IWDG) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L4xx_LL_IWDG_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index 80ba742..746ed37 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -19,7 +19,7 @@ #include "ctap.h" #include "crypto.h" #include "memory_layout.h" - +#include "stm32l4xx_ll_iwdg.h" @@ -393,8 +393,10 @@ led_rgb(0x001040); delay(50); +#if SKIP_BUTTON_CHECK_FAST done: return 1; +#endif fail: return 0; @@ -484,7 +486,25 @@ void ctap_overwrite_rk(int index,CTAP_residentKey * rk) } } +void boot_solo_bootloader() +{ + LL_IWDG_Enable(IWDG); + LL_IWDG_EnableWriteAccess(IWDG); + + LL_IWDG_SetPrescaler(IWDG, LL_IWDG_PRESCALER_4); + + LL_IWDG_SetWindow(IWDG, 4095); + + LL_IWDG_SetReloadCounter(IWDG, 2000); // ~0.25s + + while (LL_IWDG_IsReady(IWDG) != 1) + { + } + + LL_IWDG_ReloadCounter(IWDG); + +} void _Error_Handler(char *file, int line) { diff --git a/tools/programmer.py b/tools/programmer.py index 81204a7..5b53492 100644 --- a/tools/programmer.py +++ b/tools/programmer.py @@ -9,7 +9,7 @@ from binascii import hexlify from fido2.hid import CtapHidDevice, CTAPHID from fido2.client import Fido2Client, ClientError from fido2.ctap import CtapError -from fido2.ctap1 import CTAP1 +from fido2.ctap1 import CTAP1, ApduError from fido2.utils import Timeout from intelhex import IntelHex @@ -23,7 +23,8 @@ class SoloBootloader: erase = 0x43 version = 0x44 - HIDCommand = 0x50 + HIDCommandBoot = 0x50 + HIDCommandEnterBoot = 0x51 TAG = b'\x8C\x27\x90\xf6' @@ -72,7 +73,7 @@ class Programmer(): def exchange_hid(self,cmd,addr=0,data=b'A'*16): req = Programmer.format_request(cmd,addr,data) - data = self.send_data_hid(SoloBootloader.HIDCommand, req) + data = self.send_data_hid(SoloBootloader.HIDCommandBoot, req) ret = data[0] if ret != CtapError.ERR.SUCCESS: @@ -110,9 +111,20 @@ class Programmer(): """ self.exchange(SoloBootloader.done,0,sig) + def enter_solo_bootloader(self,): + """ + If solo is configured as solo hacker or something similar, + this command will tell the token to boot directly to the bootloader + so it can be reprogrammed + """ + if self.exchange != self.exchange_hid: + self.send_data_hid(CTAPHID.INIT, '\x11\x11\x11\x11\x11\x11\x11\x11') + self.send_data_hid(SoloBootloader.HIDCommandEnterBoot, '') + def program_file(self,name): - data = json.loads(open(name,'r').read()) + if name.lower().endswith('.json'): + data = json.loads(open(name,'r').read()) fw = base64.b64decode(from_websafe(data['firmware']).encode()) sig = base64.b64decode(from_websafe(data['signature']).encode()) ih = IntelHex() @@ -126,7 +138,7 @@ class Programmer(): print('Warning, assuming "%s" is an Intel Hex file.' % name) sig = None ih = IntelHex() - ih.fromfile(tmp.name, format='hex') + ih.fromfile(name, format='hex') if self.exchange == self.exchange_hid: chunk = 2048 @@ -151,12 +163,40 @@ class Programmer(): print('time: %.2f s' % ((t2-t1)/1000.0)) print('Verifying...') - if sig is not None: - self.verify_flash(sig) + if self.reboot: + if sig is not None: + self.verify_flash(sig) + else: + self.verify_flash(b'A'*64) + +def attempt_to_find_device(p): + found = False + for i in range(0,5): + try: + p.find_device() + found = True + break + except RuntimeError: + time.sleep(0.2) + return found + +def attempt_to_boot_bootloader(p): + print('Bootloader not active. Attempting to boot into bootloader mode...') + try: + p.enter_solo_bootloader() + except OSError: + pass + except CtapError as e: + if e.code == CtapError.ERR.INVALID_COMMAND: + print('Solo appears to not be a solo hacker. Try holding down the button for 2 while you plug token in.') + sys.exit(1) else: - self.verify_flash(b'A'*64) - - + raise(e) + print('Solo rebooted. Reconnecting...') + time.sleep(.500) + if not attempt_to_find_device(p): + print('Failed to reconnect!') + sys.exit(1) if __name__ == '__main__': @@ -166,6 +206,7 @@ if __name__ == '__main__': parser.add_argument("--use-u2f", action="store_true", help = 'Programs using U2F authenticate. This is what a web application will use.') parser.add_argument("--no-reset", action="store_true", help = 'Don\'t reset after writing firmware. Stay in bootloader mode.') parser.add_argument("--reset-only", action="store_true", help = 'Don\'t write anything, try to boot without a signature.') + parser.add_argument("--enter-bootloader", action="store_true", help = 'Don\'t write anything, try to enter bootloader. Typically only supported by Solo Hacker builds.') args = parser.parse_args() print() @@ -178,7 +219,19 @@ if __name__ == '__main__': if args.no_reset: p.set_reboot(False) - print('version is ', p.version()) + if args.enter_bootloader: + attempt_to_boot_bootloader(p) + sys.exit(0) + + try: + print('version is ', p.version()) + except CtapError as e: + if e.code == CtapError.ERR.INVALID_COMMAND: + attempt_to_boot_bootloader(p) + else: + raise(e) + except ApduError: + attempt_to_boot_bootloader(p) if not args.reset_only: p.program_file(args.__dict__['']) From 5a636d1ebe8ea9f61592cd5e09408cff33479996 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 19:14:11 -0500 Subject: [PATCH 13/23] boot directly st bootlaoder --- fido2/ctaphid.c | 5 +++ fido2/ctaphid.h | 5 ++- fido2/device.h | 2 +- targets/stm32l442/bootloader/bootloader.c | 13 +++++++ targets/stm32l442/bootloader/main.c | 13 +++++++ targets/stm32l442/src/device.c | 12 ++++++ tools/programmer.py | 47 ++++++++++++++++++++++- 7 files changed, 92 insertions(+), 5 deletions(-) diff --git a/fido2/ctaphid.c b/fido2/ctaphid.c index 7946db6..99573df 100644 --- a/fido2/ctaphid.c +++ b/fido2/ctaphid.c @@ -711,7 +711,12 @@ uint8_t ctaphid_handle_packet(uint8_t * pkt_raw) ctaphid_write(&wb, NULL, 0); is_busy = 0; break; + case CTAPHID_ENTERSTBOOT: + printf1(TAG_HID,"CTAPHID_ENTERBOOT\n"); + boot_st_bootloader(); + break; #endif + default: printf2(TAG_ERR,"error, unimplemented HID cmd: %02x\r\n", buffer_cmd()); ctaphid_send_error(cid, CTAP1_ERR_INVALID_COMMAND); diff --git a/fido2/ctaphid.h b/fido2/ctaphid.h index 5683dbf..0815ef6 100644 --- a/fido2/ctaphid.h +++ b/fido2/ctaphid.h @@ -39,8 +39,9 @@ #define CTAPHID_KEEPALIVE (TYPE_INIT | 0x3b) // Custom commands between 0x40-0x7f -#define CTAPHID_BOOT (TYPE_INIT | 0x50) -#define CTAPHID_ENTERBOOT (TYPE_INIT | 0x51) +#define CTAPHID_BOOT (TYPE_INIT | 0x50) +#define CTAPHID_ENTERBOOT (TYPE_INIT | 0x51) +#define CTAPHID_ENTERSTBOOT (TYPE_INIT | 0x52) #define ERR_INVALID_CMD 0x01 #define ERR_INVALID_PAR 0x02 diff --git a/fido2/device.h b/fido2/device.h index 83b7f63..c6b63f5 100644 --- a/fido2/device.h +++ b/fido2/device.h @@ -96,7 +96,7 @@ void ctap_overwrite_rk(int index,CTAP_residentKey * rk); // For Solo hacker void boot_solo_bootloader(); - +void boot_st_bootloader(); diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index f157ec6..41ef628 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -22,6 +22,8 @@ typedef enum BootCheck = 0x42, BootErase = 0x43, BootVersion = 0x44, + BootReboot = 0x45, + BootBootloader = 0x46, } BootOperation; @@ -143,6 +145,17 @@ int bootloader_bridge(int klen, uint8_t * keyh) u2f_response_writeback(&version,1); return 0; break; + case BootReboot: + printf1(TAG_BOOT, "BootReboot.\r\n"); + device_reboot(); + break; +#ifndef SOLO_HACKER + case BootBootloader: + printf1(TAG_BOOT, "BootBootloader.\r\n"); + flash_option_bytes_init(1); + boot_st_bootloader(); + break; +#endif default: return CTAP1_ERR_INVALID_COMMAND; } diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index f5aee0c..77c797c 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -56,6 +56,7 @@ int main(int argc, char * argv[]) { uint8_t hidmsg[64]; uint32_t t1 = 0; + uint32_t stboot_time = 0; uint32_t boot = 1; set_logging_mask( @@ -94,6 +95,7 @@ int main(int argc, char * argv[]) } #ifdef SOLO_HACKER + stboot_time = millis(); if ( RCC->CSR & (1<<29) )// check if there was independent watchdog reset { RCC->CSR |= (1<<23); // clear reset flags @@ -147,6 +149,17 @@ int main(int argc, char * argv[]) delay(250); device_reboot(); } +#ifdef SOLO_HACKER + // Boot ST bootloader if button is held for 2s + if (!device_is_button_pressed()) + { + stboot_time = millis(); + } + if ((millis() - stboot_time) > 2000) + { + boot_st_bootloader(); + } +#endif } // Should never get here diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index 746ed37..f9c3c71 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -486,6 +486,18 @@ void ctap_overwrite_rk(int index,CTAP_residentKey * rk) } } +void boot_st_bootloader() +{ + __disable_irq(); + + __set_MSP(*((uint32_t *)0x1fff0000)); + + ((void (*)(void)) (*((uint32_t *)0x1fff0004)))(); + + while(1) + ; +} + void boot_solo_bootloader() { LL_IWDG_Enable(IWDG); diff --git a/tools/programmer.py b/tools/programmer.py index 5b53492..2611d0b 100644 --- a/tools/programmer.py +++ b/tools/programmer.py @@ -22,9 +22,12 @@ class SoloBootloader: check = 0x42 erase = 0x43 version = 0x44 + reboot = 0x45 + st_dfu = 0x46 HIDCommandBoot = 0x50 HIDCommandEnterBoot = 0x51 + HIDCommandEnterSTBoot = 0x52 TAG = b'\x8C\x27\x90\xf6' @@ -45,6 +48,13 @@ class Programmer(): """ option to reboot after programming """ self.reboot = val + def reboot(self,val): + """ option to reboot after programming """ + try: + self.exchange(SoloBootloader.reboot) + except OSError: + pass + def find_device(self,): dev = next(CtapHidDevice.list_devices(), None) if not dev: @@ -64,6 +74,11 @@ class Programmer(): return cmd + addr[:3] + SoloBootloader.TAG + length + data + def send_only_hid(self, cmd, data): + if type(data) != type(b''): + data = struct.pack('%dB' % len(data), *[ord(x) for x in data]) + self.dev._dev.InternalSend(0x80 | cmd, bytearray(data)) + def send_data_hid(self, cmd, data): if type(data) != type(b''): data = struct.pack('%dB' % len(data), *[ord(x) for x in data]) @@ -121,6 +136,18 @@ class Programmer(): self.send_data_hid(CTAPHID.INIT, '\x11\x11\x11\x11\x11\x11\x11\x11') self.send_data_hid(SoloBootloader.HIDCommandEnterBoot, '') + def enter_st_dfu(self,): + """ + If solo is configured as solo hacker or something similar, + this command will tell the token to boot directly to the st DFU + so it can be reprogrammed. Warning, you could brick your device. + """ + if self.exchange == self.exchange_hid: + self.send_only_hid(SoloBootloader.HIDCommandEnterSTBoot, '') + else: + req = Programmer.format_request(SoloBootloader.st_dfu) + self.send_only_hid(SoloBootloader.HIDCommandBoot, req) + def program_file(self,name): if name.lower().endswith('.json'): @@ -201,12 +228,14 @@ def attempt_to_boot_bootloader(p): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument("", help = 'firmware file. Either a JSON or hex file. JSON file contains signature while hex does not.') + parser.add_argument("[firmware]", nargs='?', default='', help = 'firmware file. Either a JSON or hex file. JSON file contains signature while hex does not.') parser.add_argument("--use-hid", action="store_true", help = 'Programs using custom HID command (default). Quicker than using U2F authenticate which is what a browser has to use.') parser.add_argument("--use-u2f", action="store_true", help = 'Programs using U2F authenticate. This is what a web application will use.') parser.add_argument("--no-reset", action="store_true", help = 'Don\'t reset after writing firmware. Stay in bootloader mode.') parser.add_argument("--reset-only", action="store_true", help = 'Don\'t write anything, try to boot without a signature.') + parser.add_argument("--reboot", action="store_true", help = 'Tell bootloader to reboot.') parser.add_argument("--enter-bootloader", action="store_true", help = 'Don\'t write anything, try to enter bootloader. Typically only supported by Solo Hacker builds.') + parser.add_argument("--st-dfu", action="store_true", help = 'Don\'t write anything, try to enter ST DFU. Warning, you could brick your Solo if you overwrite everything. Make sure to reprogram the option bytes just to be safe.') args = parser.parse_args() print() @@ -223,6 +252,15 @@ if __name__ == '__main__': attempt_to_boot_bootloader(p) sys.exit(0) + if args.reboot: + p.reboot() + sys.exit(0) + + if args.st_dfu: + print('Sending command to boot into ST DFU...') + p.enter_st_dfu() + sys.exit(0) + try: print('version is ', p.version()) except CtapError as e: @@ -234,6 +272,11 @@ if __name__ == '__main__': attempt_to_boot_bootloader(p) if not args.reset_only: - p.program_file(args.__dict__['']) + fw = args.__dict__['[firmware]'] + if fw == '': + print('Need to supply firmware filename.') + args.print_help() + sys.exit(1) + p.program_file(fw) else: p.exchange(SoloBootloader.done,0,b'A'*64) From b475c8391a87e3af93b1e1ab0004ca8e141a40b3 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 19:34:30 -0500 Subject: [PATCH 14/23] this shouldnt run twice in a row or device can get bricked --- targets/stm32l442/src/device.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index f9c3c71..d7c0df4 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -91,10 +91,12 @@ void device_init() LL_GPIO_SetPinMode(SOLO_BUTTON_PORT,SOLO_BUTTON_PIN,LL_GPIO_MODE_INPUT); LL_GPIO_SetPinPull(SOLO_BUTTON_PORT,SOLO_BUTTON_PIN,LL_GPIO_PULL_UP); +#ifndef IS_BOOTLOADER #if BOOT_TO_DFU flash_option_bytes_init(1); #else flash_option_bytes_init(0); +#endif #endif printf1(TAG_GEN,"hello solo\r\n"); From 173b8833ce07138225ac27c6a9619a735ec418f5 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 20:23:06 -0500 Subject: [PATCH 15/23] booting to dfu, detaching, fast flash write --- targets/stm32l442/Makefile | 9 +++++++ targets/stm32l442/application.mk | 2 -- targets/stm32l442/bootloader/bootloader.c | 5 +++- targets/stm32l442/src/flash.c | 33 +++++++++++++++++++++++ targets/stm32l442/src/flash.h | 1 + tools/programmer.py | 18 ++++++++++--- 6 files changed, 61 insertions(+), 7 deletions(-) diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 00a24cf..0497aa0 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -14,11 +14,20 @@ flash: solo.hex bootloader.hex STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect STM32_Programmer_CLI -c port=SWD -halt -d all.hex -rst +flash_dfu: solo.hex bootloader.hex + python merge_hex.py solo.hex bootloader.hex all.hex + # STM32_Programmer_CLI -c port=usb1 -halt -e all --readunprotect + STM32_Programmer_CLI -c port=usb1 -halt -d all.hex + flashboot: solo.hex bootloader.hex python merge_hex.py solo.hex bootloader.hex all.hex STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect STM32_Programmer_CLI -c port=SWD -halt -d bootloader.hex -rst +# tell ST DFU to enter application +detach: + STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 + bootloader.hex: echo "You need to build the bootloader first." diff --git a/targets/stm32l442/application.mk b/targets/stm32l442/application.mk index 4ee26e3..3226826 100644 --- a/targets/stm32l442/application.mk +++ b/targets/stm32l442/application.mk @@ -70,8 +70,6 @@ all: $(TARGET).elf clean: rm -f *.o src/*.o src/*.elf bootloader/*.o $(OBJ) -detach: - STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 cbor: cd ../../tinycbor/ && make clean diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index 41ef628..8239014 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -63,6 +63,7 @@ int is_authorized_to_boot() int bootloader_bridge(int klen, uint8_t * keyh) { static int has_erased = 0; + int i; BootloaderReq * req = (BootloaderReq * )keyh; uint8_t hash[32]; uint8_t version = 1; @@ -103,6 +104,8 @@ int bootloader_bridge(int klen, uint8_t * keyh) } flash_write((uint32_t)ptr,req->payload, len); + + break; case BootDone: printf1(TAG_BOOT, "BootDone: "); @@ -149,7 +152,7 @@ int bootloader_bridge(int klen, uint8_t * keyh) printf1(TAG_BOOT, "BootReboot.\r\n"); device_reboot(); break; -#ifndef SOLO_HACKER +#ifdef SOLO_HACKER case BootBootloader: printf1(TAG_BOOT, "BootBootloader.\r\n"); flash_option_bytes_init(1); diff --git a/targets/stm32l442/src/flash.c b/targets/stm32l442/src/flash.c index 63f6f7a..5d7e463 100644 --- a/targets/stm32l442/src/flash.c +++ b/targets/stm32l442/src/flash.c @@ -139,6 +139,39 @@ void flash_write(uint32_t addr, uint8_t * data, size_t sz) } +// NOT YET working +void flash_write_fast(uint32_t addr, uint32_t * data) +{ + __disable_irq(); + while (FLASH->SR & (1<<16)) + ; + FLASH->SR = FLASH->SR; + + // Select fast program action + FLASH->CR |= (1<<18); + + int i; + for(i = 0; i < 64; i++) + { + *(volatile uint32_t*)addr = (*data); + addr+=4; + data++; + } + + while (FLASH->SR & (1<<16)) + ; + + if(FLASH->SR & (1<<1)) + { + printf2(TAG_ERR,"program NOT successful %lx\r\n", FLASH->SR); + } + + FLASH->SR = (1<<0); + FLASH->CR &= ~(1<<18); + __enable_irq(); + +} + void flash_lock() { FLASH->CR |= (1U<<31); diff --git a/targets/stm32l442/src/flash.h b/targets/stm32l442/src/flash.h index f099700..9838ff8 100644 --- a/targets/stm32l442/src/flash.h +++ b/targets/stm32l442/src/flash.h @@ -4,6 +4,7 @@ void flash_erase_page(uint8_t page); void flash_write_dword(uint32_t addr, uint64_t data); void flash_write(uint32_t addr, uint8_t * data, size_t sz); +void flash_write_fast(uint32_t addr, uint32_t * data); void flash_option_bytes_init(int boot_from_dfu); #define FLASH_PAGE_SIZE 2048 diff --git a/tools/programmer.py b/tools/programmer.py index 2611d0b..915018a 100644 --- a/tools/programmer.py +++ b/tools/programmer.py @@ -142,11 +142,21 @@ class Programmer(): this command will tell the token to boot directly to the st DFU so it can be reprogrammed. Warning, you could brick your device. """ - if self.exchange == self.exchange_hid: - self.send_only_hid(SoloBootloader.HIDCommandEnterSTBoot, '') - else: + soloboot = False + try: + p.version() + soloboot = True + except CtapError as e: + if e.code == CtapError.ERR.INVALID_COMMAND: + pass + else: + raise (e) + + if soloboot or self.exchange == self.exchange_u2f: req = Programmer.format_request(SoloBootloader.st_dfu) self.send_only_hid(SoloBootloader.HIDCommandBoot, req) + else: + self.send_only_hid(SoloBootloader.HIDCommandEnterSTBoot, '') def program_file(self,name): @@ -235,7 +245,7 @@ if __name__ == '__main__': parser.add_argument("--reset-only", action="store_true", help = 'Don\'t write anything, try to boot without a signature.') parser.add_argument("--reboot", action="store_true", help = 'Tell bootloader to reboot.') parser.add_argument("--enter-bootloader", action="store_true", help = 'Don\'t write anything, try to enter bootloader. Typically only supported by Solo Hacker builds.') - parser.add_argument("--st-dfu", action="store_true", help = 'Don\'t write anything, try to enter ST DFU. Warning, you could brick your Solo if you overwrite everything. Make sure to reprogram the option bytes just to be safe.') + parser.add_argument("--st-dfu", action="store_true", help = 'Don\'t write anything, try to enter ST DFU. Warning, you could brick your Solo if you overwrite everything. You should reprogram the option bytes just to be safe (boot to Solo bootloader first, then run this command).') args = parser.parse_args() print() From 5ee91048e2f774095ceeb2545353a091472a62da Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 21:12:21 -0500 Subject: [PATCH 16/23] organize memory layout options for debug/release --- targets/stm32l442/Makefile | 11 + targets/stm32l442/application.mk | 10 +- targets/stm32l442/bootloader.mk | 10 +- targets/stm32l442/bootloader/bootloader.h | 7 +- targets/stm32l442/bootloader/main.c | 5 +- .../stm32l442/linker/bootloader_stm32l4xx.ld | 201 +++++++++++++++++ .../bootloader_stm32l4xx_extra.ld} | 0 targets/stm32l442/linker/stm32l4xx.ld | 202 ++++++++++++++++++ .../stm32l4xx_extra.ld} | 0 targets/stm32l442/src/app.h | 4 +- targets/stm32l442/src/memory_layout.h | 13 +- tools/sign_firmware.py | 4 +- 12 files changed, 449 insertions(+), 18 deletions(-) create mode 100644 targets/stm32l442/linker/bootloader_stm32l4xx.ld rename targets/stm32l442/{bootloader_stm32l4xx.ld => linker/bootloader_stm32l4xx_extra.ld} (100%) create mode 100644 targets/stm32l442/linker/stm32l4xx.ld rename targets/stm32l442/{stm32l432xx.ld => linker/stm32l4xx_extra.ld} (100%) diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 0497aa0..4be0573 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -2,6 +2,17 @@ all: $(MAKE) -f application.mk -j8 solo.hex +debug: + $(MAKE) -f application.mk -j8 solo.hex DEBUG=1 + +debugboot-app: + $(MAKE) -f application.mk -j8 solo.hex DEBUG=1 \ + LDSCRIPT=linker/stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16' + +debugboot-boot: + $(MAKE) -f bootloader.mk -j8 bootloader.hex DEBUG=1 \ + LDSCRIPT=linker/bootloader_stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16' + boot: $(MAKE) -f bootloader.mk -j8 bootloader.hex diff --git a/targets/stm32l442/application.mk b/targets/stm32l442/application.mk index 3226826..33f899c 100644 --- a/targets/stm32l442/application.mk +++ b/targets/stm32l442/application.mk @@ -27,7 +27,9 @@ INC += -I../../crypto/tiny-AES-c SEARCH=-L../../tinycbor/lib -LDSCRIPT=stm32l432xx.ld +ifndef LDSCRIPT +LDSCRIPT=linker/stm32l4xx.ld +endif CFLAGS= $(INC) @@ -39,7 +41,11 @@ HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb # Solo CHIP=STM32L442xx -DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"app.h\" +ifndef DEBUG +DEBUG=0 +endif + +DEFINES = -DDEBUG_LEVEL=$(DEBUG) -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"app.h\" $(EXTRA_DEFINES) # DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) -g diff --git a/targets/stm32l442/bootloader.mk b/targets/stm32l442/bootloader.mk index 3611940..e8ca05f 100644 --- a/targets/stm32l442/bootloader.mk +++ b/targets/stm32l442/bootloader.mk @@ -25,7 +25,9 @@ INC = -Ibootloader/ -Isrc/ -Isrc/cmsis/ -Ilib/ -Ilib/usbd/ -I../../fido2/ -I../. INC += -I../../tinycbor/src -I../../crypto/sha256 -I../../crypto/micro-ecc INC += -I../../crypto/tiny-AES-c -LDSCRIPT=bootloader_stm32l4xx.ld +ifndef LDSCRIPT +LDSCRIPT=linker/bootloader_stm32l4xx.ld +endif CFLAGS= $(INC) @@ -37,7 +39,11 @@ HW=-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb # Solo CHIP=STM32L442xx -DEFINES = -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"bootloader.h\" +ifndef DEBUG +DEBUG=0 +endif + +DEFINES = -DDEBUG_LEVEL=$(DEBUG) -D$(CHIP) -DAES256=1 -DUSE_FULL_LL_DRIVER -DAPP_CONFIG=\"bootloader.h\" $(EXTRA_DEFINES) # DEFINES += -DTEST_SOLO_STM32 -DTEST -DTEST_FIFO=1 CFLAGS=$(INC) -c $(DEFINES) -Wall -fdata-sections -ffunction-sections $(HW) -g diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index 412a5a2..4d0c957 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -4,11 +4,12 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 0 +#ifndef DEBUG_LEVEL +#define DEBUG_LEVEL 0 +#endif #define NON_BLOCK_PRINTING 0 - #define BOOT_TO_DFU 0 @@ -19,8 +20,6 @@ #define ENABLE_U2F_EXTENSIONS // #define ENABLE_U2F -#define APPLICATION_JUMP_ADDR (0x08000000 + 32 * 1024) - #define DISABLE_CTAPHID_PING #define DISABLE_CTAPHID_WINK #define DISABLE_CTAPHID_CBOR diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index 77c797c..eb14eb8 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -31,6 +31,7 @@ #include "log.h" #include "ctap.h" #include "app.h" +#include "memory_layout.h" #include "stm32l4xx_ll_rcc.h" #include "stm32l4xx.h" @@ -42,10 +43,10 @@ void BOOT_boot(void) { typedef void (*pFunction)(void); - uint32_t *bootAddress = (uint32_t *)(APPLICATION_JUMP_ADDR); + uint32_t *bootAddress = (uint32_t *)(APPLICATION_START_ADDR); /* Set new vector table */ - SCB->VTOR = APPLICATION_JUMP_ADDR; + SCB->VTOR = APPLICATION_START_ADDR; /* Read new SP and PC from vector table */ __set_MSP(bootAddress[0]); diff --git a/targets/stm32l442/linker/bootloader_stm32l4xx.ld b/targets/stm32l442/linker/bootloader_stm32l4xx.ld new file mode 100644 index 0000000..8b0aea5 --- /dev/null +++ b/targets/stm32l442/linker/bootloader_stm32l4xx.ld @@ -0,0 +1,201 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32L432KCUx Device with +** 256KByte FLASH, 64KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright Ac6. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Ac6 permit registered System Workbench for MCU users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x2000c000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 14K +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K +SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(8); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(8); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(8); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(8); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(8); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(8); + } >FLASH + + .ARM.extab : + { + . = ALIGN(8); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(8); + } >FLASH + .ARM : { + . = ALIGN(8); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(8); + } >FLASH + + .preinit_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + } >FLASH + + .init_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + } >FLASH + .fini_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(8); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(8); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(8); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + _sisram2 = LOADADDR(.sram2); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .sram2 : + { + . = ALIGN(8); + _ssram2 = .; /* create a global symbol at sram2 start */ + *(.sram2) + *(.sram2*) + + . = ALIGN(8); + _esram2 = .; /* create a global symbol at sram2 end */ + } >SRAM2 AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/targets/stm32l442/bootloader_stm32l4xx.ld b/targets/stm32l442/linker/bootloader_stm32l4xx_extra.ld similarity index 100% rename from targets/stm32l442/bootloader_stm32l4xx.ld rename to targets/stm32l442/linker/bootloader_stm32l4xx_extra.ld diff --git a/targets/stm32l442/linker/stm32l4xx.ld b/targets/stm32l442/linker/stm32l4xx.ld new file mode 100644 index 0000000..e005e05 --- /dev/null +++ b/targets/stm32l442/linker/stm32l4xx.ld @@ -0,0 +1,202 @@ +/* +***************************************************************************** +** + +** File : LinkerScript.ld +** +** Abstract : Linker script for STM32L432KCUx Device with +** 256KByte FLASH, 64KByte RAM +** +** Set heap size, stack size and stack location according +** to application requirements. +** +** Set memory bank area and size if external memory is used. +** +** Target : STMicroelectronics STM32 +** +** +** Distribution: The file is distributed as is, without any warranty +** of any kind. +** +** (c)Copyright Ac6. +** You may use this file as-is or modify it according to the needs of your +** project. Distribution of this file (unmodified or modified) is not +** permitted. Ac6 permit registered System Workbench for MCU users the +** rights to distribute the assembled, compiled & linked contents of this +** file as part of an application binary file, provided that it is built +** using the System Workbench for MCU toolchain. +** +***************************************************************************** +*/ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = 0x2000c000; /* end of RAM */ +/* Generate a link error if heap and stack don't fit into RAM */ +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Specify the memory areas */ +MEMORY +{ +/* First 14 KB is bootloader */ +FLASH (rx) : ORIGIN = 0x08003800, LENGTH = 204K-8 /* Leave out 38 Kb at end for data */ +RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K +SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K +} + +/* Define output sections */ +SECTIONS +{ + /* The startup code goes first into FLASH */ + .isr_vector : + { + . = ALIGN(8); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(8); + } >FLASH + + /* The program code and other data goes into FLASH */ + .text : + { + . = ALIGN(8); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(8); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data goes into FLASH */ + .rodata : + { + . = ALIGN(8); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(8); + } >FLASH + + .ARM.extab : + { + . = ALIGN(8); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(8); + } >FLASH + .ARM : { + . = ALIGN(8); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(8); + } >FLASH + + .preinit_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + } >FLASH + + .init_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + } >FLASH + .fini_array : + { + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(8); + } >FLASH + + /* used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections goes into RAM, load LMA copy after code */ + .data : + { + . = ALIGN(8); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(8); + _edata = .; /* define a global symbol at data end */ + } >RAM AT> FLASH + + _sisram2 = LOADADDR(.sram2); + + /* CCM-RAM section + * + * IMPORTANT NOTE! + * If initialized variables will be placed in this section, + * the startup code needs to be modified to copy the init-values. + */ + .sram2 : + { + . = ALIGN(8); + _ssram2 = .; /* create a global symbol at sram2 start */ + *(.sram2) + *(.sram2*) + + . = ALIGN(8); + _esram2 = .; /* create a global symbol at sram2 end */ + } >SRAM2 AT> FLASH + + + /* Uninitialized data section */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss secion */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough RAM left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + + + /* Remove information from the standard libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/targets/stm32l442/stm32l432xx.ld b/targets/stm32l442/linker/stm32l4xx_extra.ld similarity index 100% rename from targets/stm32l442/stm32l432xx.ld rename to targets/stm32l442/linker/stm32l4xx_extra.ld diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index e52b4a9..5c41d44 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -4,7 +4,9 @@ #define DEBUG_UART USART1 -#define DEBUG_LEVEL 1 +#ifndef DEBUG_LEVEL +#define DEBUG_LEVEL 0 +#endif #define NON_BLOCK_PRINTING 0 diff --git a/targets/stm32l442/src/memory_layout.h b/targets/stm32l442/src/memory_layout.h index 92ecd35..17a0ed7 100644 --- a/targets/stm32l442/src/memory_layout.h +++ b/targets/stm32l442/src/memory_layout.h @@ -20,14 +20,17 @@ #define RK_END_PAGE (PAGES - 14 + RK_NUM_PAGES) // Start of application code -#define APPLICATION_START_PAGE (16) -#define APPLICATION_START_ADDR flash_addr(APPLICATION_START_PAGE) +#ifndef APPLICATION_START_PAGE +#define APPLICATION_START_PAGE (7) +#endif +#define APPLICATION_START_ADDR (0x08000000 + ((APPLICATION_START_PAGE)*PAGE_SIZE)) // End of application code. Leave some extra room for future data storage. -#define APPLICATION_END_PAGE ((PAGES - 19)) // 119 is NOT included in application -#define APPLICATION_END_ADDR (flash_addr(APPLICATION_END_PAGE)-8) // NOT included in application +// NOT included in application +#define APPLICATION_END_PAGE ((PAGES - 19)) +#define APPLICATION_END_ADDR ((0x08000000 + ((APPLICATION_END_PAGE)*PAGE_SIZE))-8) // Bootloader state. -#define AUTH_WORD_ADDR (flash_addr(APPLICATION_END_PAGE)-8) +#define AUTH_WORD_ADDR ((0x08000000 + ((APPLICATION_END_PAGE)*PAGE_SIZE))-8) #endif diff --git a/tools/sign_firmware.py b/tools/sign_firmware.py index ae79c60..4608bf0 100644 --- a/tools/sign_firmware.py +++ b/tools/sign_firmware.py @@ -24,8 +24,8 @@ def get_firmware_object(sk_name, hex_file): # start of firmware and the size of the flash region allocated for it. # TODO put this somewhere else. - START = 0x08008000 - END = START + 1024 * 186 - 8 + START = ih.segments()[0][0] + END = ((0x08000000 + ((128-19)*2024))-8) ih = IntelHex(hex_file) segs = ih.segments() From cbf021c7a8e3b80b65c38b5740c2169b18a0077f Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 4 Dec 2018 23:11:48 -0500 Subject: [PATCH 17/23] official solo pid --- targets/stm32l442/lib/usbd/usbd_desc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/targets/stm32l442/lib/usbd/usbd_desc.c b/targets/stm32l442/lib/usbd/usbd_desc.c index bf01af5..70faf8a 100644 --- a/targets/stm32l442/lib/usbd/usbd_desc.c +++ b/targets/stm32l442/lib/usbd/usbd_desc.c @@ -50,7 +50,7 @@ #define USBD_VID 0x0483 -#define USBD_PID 0x5710 +#define USBD_PID 0xA2CA #define USBD_LANGID_STRING 0x409 #define USBD_MANUFACTURER_STRING "Solo Keys" #define USBD_PRODUCT_FS_STRING "Solo" From b9ebde22e5e764fe8929ab4f157c78d874895b0c Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Wed, 5 Dec 2018 00:13:34 -0500 Subject: [PATCH 18/23] memory org and solo hacker build recipe --- targets/stm32l442/Makefile | 20 ++++++++++++------- targets/stm32l442/bootloader/bootloader.h | 3 +-- .../stm32l442/linker/bootloader_stm32l4xx.ld | 2 +- targets/stm32l442/linker/stm32l4xx.ld | 2 +- targets/stm32l442/src/app.h | 5 ----- targets/stm32l442/src/memory_layout.h | 4 ++-- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 4be0573..217013c 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -1,20 +1,26 @@ +ifndef DEBUG +DEBUG=0 +endif all: - $(MAKE) -f application.mk -j8 solo.hex + $(MAKE) -f application.mk -j8 solo.hex DEBUG=$(DEBUG) -debug: - $(MAKE) -f application.mk -j8 solo.hex DEBUG=1 +all-hacker: + $(MAKE) -f application.mk -j8 solo.hex EXTRA_DEFINES='-DSOLO_HACKER' debugboot-app: $(MAKE) -f application.mk -j8 solo.hex DEBUG=1 \ - LDSCRIPT=linker/stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16' + LDSCRIPT=linker/stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16 -DSOLO_HACKER' debugboot-boot: $(MAKE) -f bootloader.mk -j8 bootloader.hex DEBUG=1 \ - LDSCRIPT=linker/bootloader_stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16' + LDSCRIPT=linker/bootloader_stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16 -DSOLO_HACKER' boot: - $(MAKE) -f bootloader.mk -j8 bootloader.hex + $(MAKE) -f bootloader.mk -j8 bootloader.hex DEBUG=$(DEBUG) + +boot-hacker: + $(MAKE) -f bootloader.mk -j8 bootloader.hex EXTRA_DEFINES='-DSOLO_HACKER' clean: $(MAKE) -f application.mk clean @@ -28,7 +34,7 @@ flash: solo.hex bootloader.hex flash_dfu: solo.hex bootloader.hex python merge_hex.py solo.hex bootloader.hex all.hex # STM32_Programmer_CLI -c port=usb1 -halt -e all --readunprotect - STM32_Programmer_CLI -c port=usb1 -halt -d all.hex + STM32_Programmer_CLI -c port=usb1 -halt -rdu -d all.hex flashboot: solo.hex bootloader.hex python merge_hex.py solo.hex bootloader.hex all.hex diff --git a/targets/stm32l442/bootloader/bootloader.h b/targets/stm32l442/bootloader/bootloader.h index 4d0c957..f17c56d 100644 --- a/targets/stm32l442/bootloader/bootloader.h +++ b/targets/stm32l442/bootloader/bootloader.h @@ -15,8 +15,6 @@ #define IS_BOOTLOADER 1 -#define SOLO_HACKER - #define ENABLE_U2F_EXTENSIONS // #define ENABLE_U2F @@ -53,6 +51,7 @@ void hw_init(void); void device_reboot(); int is_authorized_to_boot(); +int is_bootloader_disabled(); void bootloader_heartbeat(); #endif diff --git a/targets/stm32l442/linker/bootloader_stm32l4xx.ld b/targets/stm32l442/linker/bootloader_stm32l4xx.ld index 8b0aea5..333501a 100644 --- a/targets/stm32l442/linker/bootloader_stm32l4xx.ld +++ b/targets/stm32l442/linker/bootloader_stm32l4xx.ld @@ -41,7 +41,7 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 14K +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 20K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K } diff --git a/targets/stm32l442/linker/stm32l4xx.ld b/targets/stm32l442/linker/stm32l4xx.ld index e005e05..bc7424f 100644 --- a/targets/stm32l442/linker/stm32l4xx.ld +++ b/targets/stm32l442/linker/stm32l4xx.ld @@ -42,7 +42,7 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ MEMORY { /* First 14 KB is bootloader */ -FLASH (rx) : ORIGIN = 0x08003800, LENGTH = 204K-8 /* Leave out 38 Kb at end for data */ +FLASH (rx) : ORIGIN = 0x08005000, LENGTH = 198K-8 /* Leave out 38 Kb at end for data */ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 48K SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH = 16K } diff --git a/targets/stm32l442/src/app.h b/targets/stm32l442/src/app.h index 5c41d44..ab69aee 100644 --- a/targets/stm32l442/src/app.h +++ b/targets/stm32l442/src/app.h @@ -13,11 +13,6 @@ #define BOOT_TO_DFU 0 -// Uncomment SOLO_HACKKER to Only use level 1 read-out-protection, -// allows booting to ST bootloader or Solo bootloader without any button press, -// Disables signature check in Solo bootloader. -#define SOLO_HACKER - //#define USING_DEV_BOARD //#define ENABLE_U2F_EXTENSIONS diff --git a/targets/stm32l442/src/memory_layout.h b/targets/stm32l442/src/memory_layout.h index 17a0ed7..63a7543 100644 --- a/targets/stm32l442/src/memory_layout.h +++ b/targets/stm32l442/src/memory_layout.h @@ -21,7 +21,7 @@ // Start of application code #ifndef APPLICATION_START_PAGE -#define APPLICATION_START_PAGE (7) +#define APPLICATION_START_PAGE (10) #endif #define APPLICATION_START_ADDR (0x08000000 + ((APPLICATION_START_PAGE)*PAGE_SIZE)) @@ -31,6 +31,6 @@ #define APPLICATION_END_ADDR ((0x08000000 + ((APPLICATION_END_PAGE)*PAGE_SIZE))-8) // Bootloader state. -#define AUTH_WORD_ADDR ((0x08000000 + ((APPLICATION_END_PAGE)*PAGE_SIZE))-8) +#define AUTH_WORD_ADDR (APPLICATION_END_ADDR) #endif From beedc248399f0e745a52706ea8469135dd23d05f Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Wed, 5 Dec 2018 00:14:28 -0500 Subject: [PATCH 19/23] option to disable solo bootloader --- targets/stm32l442/bootloader/bootloader.c | 50 ++++++++++++++++++++--- targets/stm32l442/bootloader/main.c | 18 ++++---- targets/stm32l442/merge_hex.py | 5 +++ targets/stm32l442/src/device.c | 2 +- targets/stm32l442/src/flash.c | 7 +++- tools/programmer.py | 42 +++++++++++++++---- 6 files changed, 101 insertions(+), 23 deletions(-) diff --git a/targets/stm32l442/bootloader/bootloader.c b/targets/stm32l442/bootloader/bootloader.c index 8239014..e24ef39 100644 --- a/targets/stm32l442/bootloader/bootloader.c +++ b/targets/stm32l442/bootloader/bootloader.c @@ -24,6 +24,7 @@ typedef enum BootVersion = 0x44, BootReboot = 0x45, BootBootloader = 0x46, + BootDisable = 0x47, } BootOperation; @@ -46,12 +47,30 @@ static void erase_application() } } +#define LAST_ADDR (APPLICATION_END_ADDR-2048 + 8) +#define LAST_PAGE (APPLICATION_END_PAGE-1) +static void disable_bootloader() +{ + uint8_t page[PAGE_SIZE]; + memmove(page, (uint8_t*)LAST_ADDR, PAGE_SIZE); + memset(page+PAGE_SIZE -4, 0, 4); + flash_erase_page(LAST_PAGE); + flash_write(LAST_ADDR, page, PAGE_SIZE); +} + static void authorize_application() { - uint32_t zero = 0; - uint32_t * ptr; - ptr = (uint32_t *)AUTH_WORD_ADDR; - flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); + // uint32_t zero = 0; + // uint32_t * ptr; + // ptr = (uint32_t *)AUTH_WORD_ADDR; + // flash_write((uint32_t)ptr, (uint8_t *)&zero, 4); + uint8_t page[PAGE_SIZE]; + if (is_authorized_to_boot()) + return; + memmove(page, (uint8_t*)LAST_ADDR, PAGE_SIZE); + memset(page+PAGE_SIZE -8, 0, 4); + flash_erase_page(LAST_PAGE); + flash_write(LAST_ADDR, page, PAGE_SIZE); } int is_authorized_to_boot() @@ -60,6 +79,12 @@ int is_authorized_to_boot() return *auth == 0; } +int is_bootloader_disabled() +{ + uint32_t * auth = (uint32_t *)(AUTH_WORD_ADDR+4); + return *auth == 0; +} + int bootloader_bridge(int klen, uint8_t * keyh) { static int has_erased = 0; @@ -150,7 +175,22 @@ int bootloader_bridge(int klen, uint8_t * keyh) break; case BootReboot: printf1(TAG_BOOT, "BootReboot.\r\n"); - device_reboot(); + REBOOT_FLAG = 1; + break; + case BootDisable: + printf1(TAG_BOOT, "BootDisable %08lx.\r\n", *(uint32_t *)(AUTH_WORD_ADDR+4)); + if (req->payload[0] == 0xcd && req->payload[1] == 0xde + && req->payload[2] == 0xba && req->payload[3] == 0xaa) + { + disable_bootloader(); + version = 0; + u2f_response_writeback(&version,1); + } + else + { + version = CTAP2_ERR_OPERATION_DENIED; + u2f_response_writeback(&version,1); + } break; #ifdef SOLO_HACKER case BootBootloader: diff --git a/targets/stm32l442/bootloader/main.c b/targets/stm32l442/bootloader/main.c index eb14eb8..977bafe 100644 --- a/targets/stm32l442/bootloader/main.c +++ b/targets/stm32l442/bootloader/main.c @@ -95,22 +95,26 @@ int main(int argc, char * argv[]) } } + #ifdef SOLO_HACKER - stboot_time = millis(); - if ( RCC->CSR & (1<<29) )// check if there was independent watchdog reset + if (!is_bootloader_disabled()) { - RCC->CSR |= (1<<23); // clear reset flags - goto start_bootloader; + stboot_time = millis(); + if ( RCC->CSR & (1<<29) )// check if there was independent watchdog reset + { + RCC->CSR |= (1<<23); // clear reset flags + goto start_bootloader; + } } #endif - if (boot && is_authorized_to_boot()) + if (is_authorized_to_boot() && (boot || is_bootloader_disabled())) { BOOT_boot(); } else { - printf1(TAG_RED,"Not authorized to boot\r\n"); + printf1(TAG_RED,"Not authorized to boot (%08x == %08lx)\r\n", AUTH_WORD_ADDR, *(uint32_t*)AUTH_WORD_ADDR); } start_bootloader: @@ -156,7 +160,7 @@ int main(int argc, char * argv[]) { stboot_time = millis(); } - if ((millis() - stboot_time) > 2000) + if ((millis() - stboot_time) > 5000) { boot_st_bootloader(); } diff --git a/targets/stm32l442/merge_hex.py b/targets/stm32l442/merge_hex.py index 79efedc..0473d8a 100644 --- a/targets/stm32l442/merge_hex.py +++ b/targets/stm32l442/merge_hex.py @@ -25,4 +25,9 @@ first[AUTH_WORD_ADDR+1] = 0 first[AUTH_WORD_ADDR+2] = 0 first[AUTH_WORD_ADDR+3] = 0 +first[AUTH_WORD_ADDR+4] = 0xff +first[AUTH_WORD_ADDR+5] = 0xff +first[AUTH_WORD_ADDR+6] = 0xff +first[AUTH_WORD_ADDR+7] = 0xff + first.tofile(sys.argv[len(sys.argv)-1], format='hex') diff --git a/targets/stm32l442/src/device.c b/targets/stm32l442/src/device.c index d7c0df4..580bc9a 100644 --- a/targets/stm32l442/src/device.c +++ b/targets/stm32l442/src/device.c @@ -170,7 +170,7 @@ void heartbeat() { state = !state; } - if (but) led_rgb((val*b)); + if (but) led_rgb(((val * r)<<8) | ((val*b) << 16) | (val*g)); else led_rgb(((val * g)<<8) | ((val*r) << 16) | (val*b)); } diff --git a/targets/stm32l442/src/flash.c b/targets/stm32l442/src/flash.c index 5d7e463..beaac39 100644 --- a/targets/stm32l442/src/flash.c +++ b/targets/stm32l442/src/flash.c @@ -20,8 +20,13 @@ static void flash_unlock() // Locks flash and turns off DFU void flash_option_bytes_init(int boot_from_dfu) { -#if DEBUG_LEVEL +#ifndef FLASH_ROP +#define FLASH_ROP 0 +#endif +#if FLASH_ROP == 0 uint32_t val = 0xfffff8aa; +#elif FLASH_ROP == 2 + uint32_t val = 0xfffff8cc; #else uint32_t val = 0xfffff8b9; #endif diff --git a/tools/programmer.py b/tools/programmer.py index 915018a..cd67019 100644 --- a/tools/programmer.py +++ b/tools/programmer.py @@ -24,6 +24,7 @@ class SoloBootloader: version = 0x44 reboot = 0x45 st_dfu = 0x46 + disable = 0x47 HIDCommandBoot = 0x50 HIDCommandEnterBoot = 0x51 @@ -136,21 +137,24 @@ class Programmer(): self.send_data_hid(CTAPHID.INIT, '\x11\x11\x11\x11\x11\x11\x11\x11') self.send_data_hid(SoloBootloader.HIDCommandEnterBoot, '') + def is_solo_bootloader(self,): + try: + p.version() + return True + except CtapError as e: + if e.code == CtapError.ERR.INVALID_COMMAND: + pass + else: + raise (e) + return False + def enter_st_dfu(self,): """ If solo is configured as solo hacker or something similar, this command will tell the token to boot directly to the st DFU so it can be reprogrammed. Warning, you could brick your device. """ - soloboot = False - try: - p.version() - soloboot = True - except CtapError as e: - if e.code == CtapError.ERR.INVALID_COMMAND: - pass - else: - raise (e) + soloboot = self.is_solo_bootloader() if soloboot or self.exchange == self.exchange_u2f: req = Programmer.format_request(SoloBootloader.st_dfu) @@ -158,6 +162,21 @@ class Programmer(): else: self.send_only_hid(SoloBootloader.HIDCommandEnterSTBoot, '') + def disable_solo_bootloader(self,): + """ + Disables the Solo bootloader. Only do this if you want to void the possibility + of any updates. + If you've started from a solo hacker, make you you've programmed a final/production build! + """ + ret = self.exchange(SoloBootloader.disable, 0, b'\xcd\xde\xba\xaa') # magic number + if ret[0] != CtapError.ERR.SUCCESS: + print('Failed to disable bootloader') + return False + time.sleep(0.1) + self.exchange(SoloBootloader.reboot) + return True + + def program_file(self,name): if name.lower().endswith('.json'): @@ -246,6 +265,7 @@ if __name__ == '__main__': parser.add_argument("--reboot", action="store_true", help = 'Tell bootloader to reboot.') parser.add_argument("--enter-bootloader", action="store_true", help = 'Don\'t write anything, try to enter bootloader. Typically only supported by Solo Hacker builds.') parser.add_argument("--st-dfu", action="store_true", help = 'Don\'t write anything, try to enter ST DFU. Warning, you could brick your Solo if you overwrite everything. You should reprogram the option bytes just to be safe (boot to Solo bootloader first, then run this command).') + parser.add_argument("--disable", action="store_true", help = 'Disable the Solo bootloader. Cannot be undone. No future updates can be applied.') args = parser.parse_args() print() @@ -271,6 +291,10 @@ if __name__ == '__main__': p.enter_st_dfu() sys.exit(0) + if args.disable: + p.disable_solo_bootloader() + sys.exit(0) + try: print('version is ', p.version()) except CtapError as e: From 1a07b4a73afc2355a4c4215ceb01279348de2f67 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Wed, 5 Dec 2018 19:35:22 -0500 Subject: [PATCH 20/23] add rng command --- fido2/ctaphid.c | 18 +++++++++++++++++- fido2/ctaphid.h | 1 + tools/programmer.py | 13 ++++++++++++- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/fido2/ctaphid.c b/fido2/ctaphid.c index 99573df..676387d 100644 --- a/fido2/ctaphid.c +++ b/fido2/ctaphid.c @@ -716,7 +716,23 @@ uint8_t ctaphid_handle_packet(uint8_t * pkt_raw) boot_st_bootloader(); break; #endif - +#if !defined(IS_BOOTLOADER) + case CTAPHID_GETRNG: + printf1(TAG_HID,"CTAPHID_GETRNG\n"); + ctap_response_init(&ctap_resp); + ctaphid_write_buffer_init(&wb); + wb.cid = cid; + wb.cmd = CTAPHID_GETRNG; + wb.bcnt = ctap_buffer[0]; + if (!wb.bcnt) + wb.bcnt = 57; + memset(ctap_buffer,0,wb.bcnt); + ctap_generate_rng(ctap_buffer, wb.bcnt); + ctaphid_write(&wb, &ctap_buffer, wb.bcnt); + ctaphid_write(&wb, NULL, 0); + is_busy = 0; + break; +#endif default: printf2(TAG_ERR,"error, unimplemented HID cmd: %02x\r\n", buffer_cmd()); ctaphid_send_error(cid, CTAP1_ERR_INVALID_COMMAND); diff --git a/fido2/ctaphid.h b/fido2/ctaphid.h index 0815ef6..6ef4856 100644 --- a/fido2/ctaphid.h +++ b/fido2/ctaphid.h @@ -42,6 +42,7 @@ #define CTAPHID_BOOT (TYPE_INIT | 0x50) #define CTAPHID_ENTERBOOT (TYPE_INIT | 0x51) #define CTAPHID_ENTERSTBOOT (TYPE_INIT | 0x52) +#define CTAPHID_GETRNG (TYPE_INIT | 0x60) #define ERR_INVALID_CMD 0x01 #define ERR_INVALID_PAR 0x02 diff --git a/tools/programmer.py b/tools/programmer.py index cd67019..2ea278c 100644 --- a/tools/programmer.py +++ b/tools/programmer.py @@ -29,6 +29,7 @@ class SoloBootloader: HIDCommandBoot = 0x50 HIDCommandEnterBoot = 0x51 HIDCommandEnterSTBoot = 0x52 + HIDCommandRNG = 0x60 TAG = b'\x8C\x27\x90\xf6' @@ -118,6 +119,9 @@ class Programmer(): def write_flash(self,addr,data): self.exchange(SoloBootloader.write,addr,data) + def get_rng(self,num=0): + ret = self.send_data_hid(SoloBootloader.HIDCommandRNG,struct.pack('B', num)) + return ret def verify_flash(self,sig): """ @@ -266,6 +270,7 @@ if __name__ == '__main__': parser.add_argument("--enter-bootloader", action="store_true", help = 'Don\'t write anything, try to enter bootloader. Typically only supported by Solo Hacker builds.') parser.add_argument("--st-dfu", action="store_true", help = 'Don\'t write anything, try to enter ST DFU. Warning, you could brick your Solo if you overwrite everything. You should reprogram the option bytes just to be safe (boot to Solo bootloader first, then run this command).') parser.add_argument("--disable", action="store_true", help = 'Disable the Solo bootloader. Cannot be undone. No future updates can be applied.') + parser.add_argument("--rng", action="store_true", help = 'Continuously dump random numbers generated from Solo.') args = parser.parse_args() print() @@ -286,6 +291,12 @@ if __name__ == '__main__': p.reboot() sys.exit(0) + if args.rng: + while True: + r = p.get_rng(255) + sys.stdout.buffer.write(r) + sys.exit(0) + if args.st_dfu: print('Sending command to boot into ST DFU...') p.enter_st_dfu() @@ -296,7 +307,7 @@ if __name__ == '__main__': sys.exit(0) try: - print('version is ', p.version()) + p.version() except CtapError as e: if e.code == CtapError.ERR.INVALID_COMMAND: attempt_to_boot_bootloader(p) From 827a7da443fae1b9c2b89d532a50adb87e7675c3 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 6 Dec 2018 22:38:48 -0500 Subject: [PATCH 21/23] less obfuscated mkdocs --- Makefile | 6 ------ docs/documenting.md | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 7be1e42..4c22e4d 100644 --- a/Makefile +++ b/Makefile @@ -84,12 +84,6 @@ venv: virtualenv venv ./venv/bin/pip install wheel -venv/bin/mkdocs: venv - ./venv/bin/pip install mkdocs mkdocs-material - -.PHONY: docsrv -docsrv: venv/bin/mkdocs - ./venv/bin/mkdocs serve .PHONY: fido2-test fido2-test: diff --git a/docs/documenting.md b/docs/documenting.md index f55a718..901f699 100644 --- a/docs/documenting.md +++ b/docs/documenting.md @@ -6,6 +6,6 @@ To host or develop locally: pip install mkdocs mkdocs-material ``` -`make docsrv` and visit [localhost:8000](http://localhost:8000). +`mkdocs serve` and visit [localhost:8000](http://localhost:8000). The file `runtime.txt` is necessary to tell Netlify to use Python3. From e360fa0097d339cb37b18c6fbe87efe18d1cc418 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 6 Dec 2018 23:40:18 -0500 Subject: [PATCH 22/23] document --- docs/building.md | 177 ++++++++++++++++++++++++++++++++---- targets/stm32l442/Makefile | 7 +- targets/stm32l442/README.md | 34 +------ 3 files changed, 167 insertions(+), 51 deletions(-) diff --git a/docs/building.md b/docs/building.md index 833aebc..0b498af 100644 --- a/docs/building.md +++ b/docs/building.md @@ -1,28 +1,171 @@ -To build, develop and debug the firmware for the STM32L442 (WIP!) via cross-compilation on Linux, no vendor-specific software is necessary. +To build, develop and debug the firmware for the STM32L432. This will work +for Solo Hacker, the Nucleo development board, or you own homemade Solo. -There exists a development board [NUCLEO-L432KC](https://www.st.com/en/evaluation-tools/nucleo-l432kc.html) you can use; the L432 chip differs from the L442 used for Solo only in that it lacks a cryptographic accelerator. The board does contain a debugger, so all you need is a USB cable (and some [udev](/udev) [rules](https://rust-embedded.github.io/book/intro/install/linux.html#udev-rules)). +There exists a development board [NUCLEO-L432KC](https://www.st.com/en/evaluation-tools/nucleo-l432kc.html) you can use; The board does contain a debugger, so all you need is a USB cable (and some [udev](/udev) [rules](https://rust-embedded.github.io/book/intro/install/linux.html#udev-rules)). -You will need the following packages (naming given for Arch Linux): +# Prerequisites -- arm-none-eabi-gcc -- arm-none-eabi-newlib -- arm-none-eabi-binutils +Install the [latest ARM compiler toolchain](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) for your system. -and one of +You can also install the ARM toolchain using a package manage like `apt-get` or `pacman`, +but be warned they might be out of date. Typically it will be called `gcc-arm-none-eabi binutils-arm-none-eabi`. + +To program your build, you'll need one of the following programs. - [openocd](http://openocd.org) - [stlink](https://github.com/texane/stlink) +- [STM32CubeProg](https://www.st.com/en/development-tools/stm32cubeprog.html) -If you remove the `.exe` extensions in the [Makefile](https://github.com/SoloKeysSec/solo/blob/master/targets/stm32l442/Makefile), and possibly add a `-g` flag, compilation runs through. +# Compilation -To flash and step through the code: +Enter the `stm32l4xx` target directory. -* connect the Nucleo to your PC -* attach one of the debuggers: `st-util` (for stlink), or `openocd -f interface/stlink-v2-1.cfg -f target/stm32l4x.cfg` (for openocd) -* launch `gdb` via `arm-none-eabi-gdb -q solo.elf` -* connect gdb to the debugger via `target extended-remote :4242` (for stlink), or `target remote :3333` (for openocd) -* flash the firmware via `load` -* optionally set a breakpoint via `break main` -* `continue`, and start stepping 🙌 +``` +cd targets/stm32l442 +``` -Note that the code for `targets/stm32l442` currently consists of only a blinky hello world... +Build the cbor library. + +```bash +make cbor +``` + +Now build the Solo bootloader. + +``` +make clean +make boot +# Or to make a Solo Hacker build: +# make boot-hacker +``` + +Now build the Solo application. + +``` +make clean +make +# Or to make a Solo Hacker build: +# make all-hacker +``` + +Note that for hacker builds, the bootloader must be built using the `boot-hacker` recipe. + +Merge the two files together. This script also patches a spot in memory to +allow the bootloader to boot the application. This memory spot is later used for +signed firmware updates. + +``` +python merge_hex.py solo.hex bootloader.hex all.hex +``` + +You can now program Solo with `all.hex`. + +# Solo Hacker + +A Solo Hacker build is more friendly for development. If you just want to test your +solo build or do any sort of development, you should start with this. + +It is the same build as a production Solo, but it has extra commands available. + +* Allows updates at any time without pressing button. +* Opens a USB emulated serial port for printing. +* Doesn't lock the flash or debugger at all. + +You if build with Solo Hacker, you can always completely overwrite it and start over. +If it's not a hacker build, you cannot reprogram Solo as easily. + +* `all-hacker`: can be reprogrammed again over USB or via wire with a programmer. +* `all`: can be reprogrammed using only signed updates or via wire with a programmer. +* `all-locked`: Can only be reprogrammed via signed updates unless they are disabled. + +# Programming + +It's recommended to test a debug/hacker build first to make sure Solo is working as expected. +Then you can switch to a locked down build, which cannot be reprogrammed as easily (or not at all!). + +## ST USB DFU + +If your Solo has never been programmed, it will boot the ST USB DFU. You can program +it via USB. After you program it, it will still be in ST USB DFU mode. You additionally +need to supply a command to tell the DFU program to "detach" and boot the application. + +If you power cycle Solo, it will return to DFU mode so you can reprogram it. If you don't +want it to do this, you must set the option bytes bit `nBOOT0=1`. Now it will always boot the application. + +Example using STM32CubeProg. + +``` +# Program all.hex +STM32_Programmer_CLI -c port=usb1 -halt -d all.hex + +# If you want it to always boot application, set nBOOT0=1 +STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1 +``` + +If Solo has been programmed with a hacker build, you can return it to ST DFU mode using just USB. + +``` +# Use our programmer script + +# Makes it boot to ST DFU once +python tools/programmer.py --st-dfu + +# OR +# Make it boot to ST DFU every boot (initial state basically) +python tools/programmer.py --enter-bootloader +python tools/programmer.py --st-dfu +``` + +## Solo / Solo Hacker updates + +To program a Solo Hacker device, run the following. Note you should only specify the application +firmware, not the combined bootloader+application! I.e. not `all.hex` from above. + +```bash +python tools/programmer.py target/stm32l442/solo.hex +``` + +A Solo hacker device doesn't need to be in bootloader mode to be programmed, it will automatically switch. +If the application gets bricked, you can hold down the button for 2 seconds while +plugging it in the token make it stay in the bootloader. Holding the button an additional 5 seconds +will return it to the ST DFU. + +If this is not a device with a hacker build, you can only program signed updates. + +``` +python tools/programmer.py /path/to/firmware.json +``` + +If you've provisioned the Solo bootloader with your own secp256r1 public key, you can sign your +firmware by running the following command. + +``` +python tools/sign_firmware.py /path/to/signing-key.pem /path/to/solo.hex /output-path/to/firmware.json +``` + +If your Solo isn't locked, you can always reprogram it using a debugger connected directly +to the token. + +# Permanently locking the device + +If you plan to be using your Solo for real, you should lock it permanently. This prevents +someone from connecting a debugger to your token and stealing credentials. + +To do this, build the non-hacker bootloader and locked version of the firmware. +``` +make clean +make boot +make clean +make all-locked +python merge_hex.py solo.hex bootloader.hex all.hex +``` + +Now when you program `all.hex`, the device will lock itself when it first boots. You can only update it +with signed updates. + +If you'd like to also permanently disable signed updates, plug in your programmed Solo and run the following: + +``` +# No more signed updates. +python tools/programmer.py --disable +``` diff --git a/targets/stm32l442/Makefile b/targets/stm32l442/Makefile index 217013c..b038069 100644 --- a/targets/stm32l442/Makefile +++ b/targets/stm32l442/Makefile @@ -3,10 +3,13 @@ DEBUG=0 endif all: - $(MAKE) -f application.mk -j8 solo.hex DEBUG=$(DEBUG) + $(MAKE) -f application.mk -j8 solo.hex DEBUG=$(DEBUG) EXTRA_DEFINES='-DFLASH_ROP=1' all-hacker: - $(MAKE) -f application.mk -j8 solo.hex EXTRA_DEFINES='-DSOLO_HACKER' + $(MAKE) -f application.mk -j8 solo.hex DEBUG=$(DEBUG) EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0' + +all-locked: + $(MAKE) -f application.mk -j8 solo.hex EXTRA_DEFINES='-DFLASH_ROP=2' debugboot-app: $(MAKE) -f application.mk -j8 solo.hex DEBUG=1 \ diff --git a/targets/stm32l442/README.md b/targets/stm32l442/README.md index 3c48ddd..be55b7a 100644 --- a/targets/stm32l442/README.md +++ b/targets/stm32l442/README.md @@ -1,34 +1,4 @@ # STM32L4xx Solo -This documents how to build the firmware for Solo for the STM32L4xx microcontroller. - -# Building - -First build the cbor library. - -```bash -make cbor -``` - -Now build the Solo bootloader. - -``` -make boot -``` - -Now build the Solo application. - -``` -make clean # remove object files from bootloader, keep bootloader.hex -make -``` - -Merge the two files together. This script also patches a spot in memory to -allow the bootloader to boot the application. This memory spot is later used for -signed firmware updates. - -``` -python merge_hex.py solo.hex bootloader.hex all.hex -``` - -You can now program Solo with `all.hex`. +Check out our [official documentation](https://solo.solokeys.io/building/) +for instructions on building and programming! From 15a1fb1e5b16f59fb7d7b91c965fac0c10072439 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Thu, 6 Dec 2018 23:48:46 -0500 Subject: [PATCH 23/23] fix pc build --- Makefile | 2 +- fido2/crypto.c | 1 + pc/app.h | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4c22e4d..4b9b8f2 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ INCLUDES = -I./tinycbor/src -I./crypto/sha256 -I./crypto/micro-ecc/ -Icrypto/tin CFLAGS += $(INCLUDES) # for crypto/tiny-AES-c -CFLAGS += -DAES256=1 +CFLAGS += -DAES256=1 -DAPP_CONFIG=\"app.h\" name = main diff --git a/fido2/crypto.c b/fido2/crypto.c index 9248644..459b026 100644 --- a/fido2/crypto.c +++ b/fido2/crypto.c @@ -18,6 +18,7 @@ #include "aes.h" #include "ctap.h" #include "device.h" +#include "log.h" #include APP_CONFIG #ifdef USING_PC diff --git a/pc/app.h b/pc/app.h index a45833f..aee6bdf 100644 --- a/pc/app.h +++ b/pc/app.h @@ -20,5 +20,20 @@ void printing_init(); +// 0xRRGGBB +#define LED_INIT_VALUE 0x000800 +#define LED_MAX_SCALER 30 +#define LED_MIN_SCALER 1 +// # of ms between each change in LED +#define HEARTBEAT_PERIOD 100 +// Each LED channel will be multiplied by a integer between LED_MAX_SCALER +// and LED_MIN_SCALER to cause the slow pulse. E.g. +// #define LED_INIT_VALUE 0x301000 +// #define LED_MAX_SCALER 30 +// #define LED_MIN_SCALER 1 +// #define HEARTBEAT_PERIOD 8 +// Will pulse from 0x301000 to 0x903000 to 0x301000 ... +// Which will take ~8 * (30)*2 ms + #endif /* SRC_APP_H_ */