From 41e6d6c11fae915b0a3f7b8b1c50eee9c81e4c98 Mon Sep 17 00:00:00 2001 From: Kevin Thomas Date: Sat, 3 Oct 2026 15:08:58 -0400 Subject: [PATCH] Week 4-BN: resolve functions with Y (Change Type); fully resolve name+type - Step 16: Y is the primary resolution key (Change Type sets name+type); N is rename-only; explicit how-to and worked examples use G then Y - Step 4: add exact DWARF signatures to both symbol tables - Python shortcut now sets names AND types (bv.get_function_at(...).set_user_type) - Step 26: worked examples use G then Y --- WEEK04/WEEK04-BN.md | 187 ++++++++++++++++++++++++++----------------- WEEK04/WEEK04-BN.pdf | Bin 1350816 -> 1389811 bytes 2 files changed, 112 insertions(+), 75 deletions(-) diff --git a/WEEK04/WEEK04-BN.md b/WEEK04/WEEK04-BN.md index 203e990..ee888b7 100644 --- a/WEEK04/WEEK04-BN.md +++ b/WEEK04/WEEK04-BN.md @@ -171,37 +171,39 @@ Each line is `address type name`. The `T`/`t` type is a function. Here are the f **Project 1 — `0x0005_intro-to-variables`:** -| Address | ELF symbol | Role | -| ------- | ---------- | ---- | -| `0x1000015c` | `_reset_handler` | reset entry | -| `0x10000186` | `platform_entry` | calls `runtime_init`, `main`, `exit` | -| `0x1000019a` | `data_cpy` | copies `.data` from flash to SRAM | -| `0x100001e4` | `_init` | runs `.init_array` | -| `0x10000210` | `frame_dummy` | C runtime boilerplate | -| `0x10000234` | `main` | the lesson function | -| `0x10000248` | `gpio_set_function` | SDK GPIO helper | -| `0x10002cfc` | `exit` | C runtime exit | -| `0x10002d04` | `runtime_init` | SDK runtime init | -| `0x10002f54` | `stdio_init_all` | SDK serial init | -| `0x100030e4` | `__wrap_printf` | the `printf` wrapper | +| Address | ELF symbol | Signature | Role | +| ------- | ---------- | --------- | ---- | +| `0x1000015c` | `_reset_handler` | — | reset entry | +| `0x10000186` | `platform_entry` | `void platform_entry(void)` | calls `runtime_init`, `main`, `exit` | +| `0x1000019a` | `data_cpy` | `void data_cpy(void*, void*, void*)` | copies `.data` from flash to SRAM | +| `0x100001e4` | `_init` | `void _init(void)` | runs `.init_array` | +| `0x10000210` | `frame_dummy` | `void frame_dummy(void)` | C runtime boilerplate | +| `0x10000234` | `main` | `int main(void)` | the lesson function | +| `0x10000248` | `gpio_set_function` | `void gpio_set_function(uint, gpio_function_t)` | SDK GPIO helper | +| `0x10002cfc` | `exit` | `void exit(int)` | C runtime exit | +| `0x10002d04` | `runtime_init` | `void runtime_init(void)` | SDK runtime init | +| `0x10002f54` | `stdio_init_all` | `bool stdio_init_all(void)` | SDK serial init | +| `0x100030e4` | `__wrap_printf` | `int __wrap_printf(const char*, ...)` | the `printf` wrapper | + +These signatures come from the ELF's DWARF debug info, so they are exact. You apply them in Binary Ninja in Step 16 (`G` -> address, then `Y` -> Change Type). **Project 2 — `0x0008_uninitialized-variables`:** -| Address | ELF symbol | Role | -| ------- | ---------- | ---- | -| `0x1000015c` | `_reset_handler` | reset entry | -| `0x10000186` | `platform_entry` | calls `runtime_init`, `main`, `exit` | -| `0x1000019a` | `data_cpy` | copies `.data` from flash to SRAM | -| `0x100001e4` | `_init` | runs `.init_array` | -| `0x10000210` | `frame_dummy` | C runtime boilerplate | -| `0x10000234` | `main` | the lesson function (`blink_and_print` inlined) | -| `0x10000278` | `gpio_set_function` | SDK GPIO helper | -| `0x100002b4` | `gpio_init` | SDK GPIO init | -| `0x10000d10` | `sleep_ms` | SDK delay | -| `0x10002e74` | `exit` | C runtime exit | -| `0x10002e7c` | `runtime_init` | SDK runtime init | -| `0x100030cc` | `stdio_init_all` | SDK serial init | -| `0x1000325c` | `__wrap_printf` | the `printf` wrapper | +| Address | ELF symbol | Signature | Role | +| ------- | ---------- | --------- | ---- | +| `0x1000015c` | `_reset_handler` | — | reset entry | +| `0x10000186` | `platform_entry` | `void platform_entry(void)` | calls `runtime_init`, `main`, `exit` | +| `0x1000019a` | `data_cpy` | `void data_cpy(void*, void*, void*)` | copies `.data` from flash to SRAM | +| `0x100001e4` | `_init` | `void _init(void)` | runs `.init_array` | +| `0x10000210` | `frame_dummy` | `void frame_dummy(void)` | C runtime boilerplate | +| `0x10000234` | `main` | `int main(void)` | the lesson function (`blink_and_print` inlined) | +| `0x10000278` | `gpio_set_function` | `void gpio_set_function(uint, gpio_function_t)` | SDK GPIO helper | +| `0x100002b4` | `gpio_init` | `void gpio_init(uint)` | SDK GPIO init | +| `0x10000d10` | `sleep_ms` | `void sleep_ms(uint32_t)` | SDK delay | +| `0x10002e74` | `exit` | `void exit(int)` | C runtime exit | +| `0x10002e7c` | `runtime_init` | `void runtime_init(void)` | SDK runtime init | +| `0x100030cc` | `stdio_init_all` | `bool stdio_init_all(void)` | SDK serial init | +| `0x1000325c` | `__wrap_printf` | `int __wrap_printf(const char*, ...)` | the `printf` wrapper | > **`main` is `0x10000234` in both projects.** In Project 2 the `static void blink_and_print` helper is inlined into `main` by the `Release` optimizer, so it does not appear as a separate symbol. That is why both projects put `main` at the same address. In a `Debug` build it stays separate and `main` moves — another reason to build `Release`. @@ -536,42 +538,49 @@ Three keys do all the work: | Key | Binary Ninja action | Use it for | | --- | --- | --- | | `G` | Go to address | Jump to a function's address | -| `N` | Rename symbol | Give the function its real name | -| `Y` | Set type | Give the function its signature | +| `Y` | **Change Type** | Set the function's signature. The dialog shows the full prototype, so this sets the name *and* the type in one step. | +| `N` | Rename | Rename only, when you just want the name and not the type | -For each function below, the loop is the same: `G` to its address, `N` to rename it, `Y` to set its signature. +For each function below: `G` to its address, then **`Y` (Change Type)** and type the prototype from the table. + +#### How to resolve a function in Binary Ninja (`Y`) + +`Y` is the **Change Type** key, and it is what actually resolves the function — it turns `void sub_10002f54()` into `bool stdio_init_all(void)`. The Change Type dialog shows the full declaration (name and type), so typing the prototype sets both: + +1. `G` to the function's address. The cursor lands on the function. +2. Press **`Y`**. In the Change Type dialog, type the prototype from the table exactly — for example `bool stdio_init_all(void)` — and press Enter. + +The decompiler header then shows the real prototype, and calls to the function read cleanly instead of `sub_()`. `N` is only for renaming without touching the type; `Y` alone sets both the name and the type. + +If `Y` seems to do nothing, confirm the cursor is on the function, or right-click it and pick **Change Type...**. Binary Ninja parses what you type and silently keeps the old type if it does not parse, so glance at the header after each `Y`. #### Worked example: `main` 1. Press `G`, type `0x10000234`, press Enter. The view jumps there; the cursor lands on `sub_10000234`. -2. Press `N`, type `main`, press Enter. -3. Press `Y`, type `int main(void)`, press Enter. +2. Press **`Y`** (Change Type), type `int main(void)`, press Enter. That sets the name to `main` and the type to `int(void)`. > **Binary Ninja shows `int32_t` where Ghidra shows `int`.** After you set `int main(void)`, the decompiler header may read `int32_t main(void)`. That is the same type — on this platform `int` is 32 bits and Binary Ninja's parser normalises it to `int32_t`. Do not fight it; it is not an error. #### Worked example: `stdio_init_all` 1. `G` -> `0x10002f54`. -2. `N` -> `stdio_init_all`. -3. `Y` -> `bool stdio_init_all(void)`. +2. `Y` -> `bool stdio_init_all(void)`. It returns **`bool`**, not `void` — the ELF says `_Bool stdio_init_all(void)`. Our `main` ignores the return value, so the decompiler still reads cleanly. #### Worked example: `uart_init` 1. `G` -> `0x10000e10`. -2. `N` -> `uart_init`. -3. `Y` -> `uint uart_init(uart_inst_t *uart, uint baudrate)`. +2. `Y` -> `uint uart_init(uart_inst_t *uart, uint baudrate)`. #### Worked example: `__wrap_printf` 1. `G` -> `0x100030e4`. -2. `N` -> `__wrap_printf`. -3. `Y` -> `int __wrap_printf(const char *fmt, ...)`. Keep the `...` — `printf` is variadic. +2. `Y` -> `int __wrap_printf(const char *fmt, ...)`. Keep the `...` — `printf` is variadic. -> **`printf` in our source is `__wrap_printf` in the binary.** The SDK links our `printf` calls to its `__wrap_printf` wrapper. Rename it `printf` if you prefer the lesson's shorthand, but `__wrap_printf` is the real symbol. +> **`printf` in our source is `__wrap_printf` in the binary.** The SDK links our `printf` calls to its `__wrap_printf` wrapper. -The rest of the chain is the same three keystrokes per function. This is **our code plus the library functions it actually calls** — not the whole SDK. `main` only calls `stdio_init_all` and `printf`, so we follow that chain down: `stdio_init_all` pulls in the stdio/UART setup, and `printf` lands in the SDK's `__wrap_printf`. +The rest of the chain is the same two keystrokes per function (`G`, then `Y`). This is **our code plus the library functions it actually calls** — not the whole SDK. `main` only calls `stdio_init_all` and `printf`, so we follow that chain down: `stdio_init_all` pulls in the stdio/UART setup, and `printf` lands in the SDK's `__wrap_printf`. The call chain for this project: @@ -614,25 +623,41 @@ main > > **`stdio_init_all` returns `bool`, not `void`** — `_Bool stdio_init_all(void)` in the ELF. The `main` source ignores the return value, so the decompiler still reads fine. -> **Shortcut:** instead of renaming by hand, paste this into Binary Ninja's Python console (`Plugins -> Python Console`). It applies the same symbol map programmatically: +> **Shortcut — resolves name *and* type for every function.** Instead of doing `N` + `Y` by hand, paste this into Binary Ninja's Python console (`Plugins -> Python Console`). It sets each function's name and signature programmatically: > > ```python > from binaryninja import Symbol, SymbolType -> symbols = { -> 0x1000015c: "_reset_handler", 0x10000186: "platform_entry", -> 0x1000019a: "data_cpy", 0x100001e4: "_init", -> 0x10000210: "frame_dummy", 0x10000234: "main", -> 0x10002cfc: "exit", 0x10002d04: "runtime_init", -> 0x10002f54: "stdio_init_all", 0x100032a0: "stdio_uart_init", -> 0x10002f2c: "stdio_set_driver_enabled", -> 0x10002d30: "stdio_out_chars_crlf", 0x10002e40: "stdio_put_string", -> 0x100030e4: "__wrap_printf", 0x10003020: "__wrap_vprintf", -> 0x10000248: "gpio_set_function", 0x10000e10: "uart_init", -> 0x10000da0: "time_us_64", 0x100033e0: "strlen", +> # address: (name, signature); None means "leave the type alone" +> funcs = { +> 0x1000015c: ("_reset_handler", None), +> 0x10000186: ("platform_entry", "void platform_entry(void)"), +> 0x1000019a: ("data_cpy", "void data_cpy(void*, void*, void*)"), +> 0x100001e4: ("_init", "void _init(void)"), +> 0x10000210: ("frame_dummy", "void frame_dummy(void)"), +> 0x10000234: ("main", "int main(void)"), +> 0x10002cfc: ("exit", "void exit(int)"), +> 0x10002d04: ("runtime_init", "void runtime_init(void)"), +> 0x10002f54: ("stdio_init_all", "bool stdio_init_all(void)"), +> 0x100032a0: ("stdio_uart_init", "void stdio_uart_init(void)"), +> 0x10002f2c: ("stdio_set_driver_enabled", "void stdio_set_driver_enabled(stdio_driver_t*, bool)"), +> 0x10002d30: ("stdio_out_chars_crlf", "void stdio_out_chars_crlf(stdio_driver_t*, const char*, int)"), +> 0x10002e40: ("stdio_put_string", "int stdio_put_string(const char*, int, bool, bool)"), +> 0x100030e4: ("__wrap_printf", "int __wrap_printf(const char*, ...)"), +> 0x10003020: ("__wrap_vprintf", "int __wrap_vprintf(const char*, va_list)"), +> 0x10000248: ("gpio_set_function", "void gpio_set_function(uint, gpio_function_t)"), +> 0x10000e10: ("uart_init", "uint uart_init(uart_inst_t*, uint)"), +> 0x10000da0: ("time_us_64", "uint64_t time_us_64(void)"), +> 0x100033e0: ("strlen", "size_t strlen(const char*)"), > } -> for addr, name in symbols.items(): +> for addr, (name, sig) in funcs.items(): > bv.define_user_symbol(Symbol(SymbolType.FunctionSymbol, addr, name)) +> if sig: +> f = bv.get_function_at(addr) +> if f is not None: +> f.set_user_type(sig) > ``` +> +> SDK type names (`stdio_driver_t`, `gpio_function_t`, `uart_inst_t`) are not in the raw `.bin`, so Binary Ninja creates them as **undefined named types** — that is fine, they still read correctly in the decompiler. If any one signature fails to parse, set that row by hand with `Y`. ### Step 17: Read `main` in the decompiler @@ -859,27 +884,24 @@ Same idea as Project 1, different addresses. Here the format string is at `0x100 ### Step 26: Resolve the functions in the Binary Ninja GUI -Same three keys as Step 16 — `G` to the address, `N` to rename, `Y` to set the signature — using the Project 2 ELF symbol map from Step 4. +Same two keys as Step 16 — `G` to the address, then `Y` (Change Type) to set the prototype — using the Project 2 ELF symbol map from Step 4. The mechanics are identical to Step 16, so here are the worked examples for the functions that are specific to this project. #### `main` 1. `G` -> `0x10000234`. -2. `N` -> `main`. -3. `Y` -> `int main(void)` (Binary Ninja shows `int32_t main(void)` — the same 32-bit `int`). +2. `Y` -> `int main(void)` (Binary Ninja shows `int32_t main(void)` — the same 32-bit `int`). #### `gpio_init` 1. `G` -> `0x100002b4`. -2. `N` -> `gpio_init`. -3. `Y` -> `void gpio_init(uint gpio)`. +2. `Y` -> `void gpio_init(uint gpio)`. #### `sleep_ms` 1. `G` -> `0x10000d10`. -2. `N` -> `sleep_ms`. -3. `Y` -> `void sleep_ms(uint32_t ms)`. +2. `Y` -> `void sleep_ms(uint32_t ms)`. #### `stdio_init_all` and `__wrap_printf` @@ -933,25 +955,40 @@ Two things in this project have **no symbol of their own**, because the compiler | `0x10000ef4` | `time_us_64` | `uint64_t time_us_64(void)` | | `0x10003558` | `strlen` | `size_t strlen(const char*)` | -Python console shortcut: +Python console shortcut (resolves name **and** type): ```python from binaryninja import Symbol, SymbolType -symbols = { - 0x1000015c: "_reset_handler", 0x10000186: "platform_entry", - 0x1000019a: "data_cpy", 0x100001e4: "_init", - 0x10000210: "frame_dummy", 0x10000234: "main", - 0x100002b4: "gpio_init", 0x10000278: "gpio_set_function", - 0x10000d10: "sleep_ms", 0x10002e74: "exit", - 0x10002e7c: "runtime_init", 0x100030cc: "stdio_init_all", - 0x10003418: "stdio_uart_init", 0x100030a4: "stdio_set_driver_enabled", - 0x10002ea8: "stdio_out_chars_crlf", 0x10002fb8: "stdio_put_string", - 0x1000325c: "__wrap_printf", 0x10003198: "__wrap_vprintf", - 0x10000f88: "uart_init", 0x10000ef4: "time_us_64", - 0x10003558: "strlen", +# address: (name, signature); None means "leave the type alone" +funcs = { + 0x1000015c: ("_reset_handler", None), + 0x10000186: ("platform_entry", "void platform_entry(void)"), + 0x1000019a: ("data_cpy", "void data_cpy(void*, void*, void*)"), + 0x100001e4: ("_init", "void _init(void)"), + 0x10000210: ("frame_dummy", "void frame_dummy(void)"), + 0x10000234: ("main", "int main(void)"), + 0x100002b4: ("gpio_init", "void gpio_init(uint)"), + 0x10000278: ("gpio_set_function", "void gpio_set_function(uint, gpio_function_t)"), + 0x10000d10: ("sleep_ms", "void sleep_ms(uint32_t)"), + 0x10002e74: ("exit", "void exit(int)"), + 0x10002e7c: ("runtime_init", "void runtime_init(void)"), + 0x100030cc: ("stdio_init_all", "bool stdio_init_all(void)"), + 0x10003418: ("stdio_uart_init", "void stdio_uart_init(void)"), + 0x100030a4: ("stdio_set_driver_enabled", "void stdio_set_driver_enabled(stdio_driver_t*, bool)"), + 0x10002ea8: ("stdio_out_chars_crlf", "void stdio_out_chars_crlf(stdio_driver_t*, const char*, int)"), + 0x10002fb8: ("stdio_put_string", "int stdio_put_string(const char*, int, bool, bool)"), + 0x1000325c: ("__wrap_printf", "int __wrap_printf(const char*, ...)"), + 0x10003198: ("__wrap_vprintf", "int __wrap_vprintf(const char*, va_list)"), + 0x10000f88: ("uart_init", "uint uart_init(uart_inst_t*, uint)"), + 0x10000ef4: ("time_us_64", "uint64_t time_us_64(void)"), + 0x10003558: ("strlen", "size_t strlen(const char*)"), } -for addr, name in symbols.items(): +for addr, (name, sig) in funcs.items(): bv.define_user_symbol(Symbol(SymbolType.FunctionSymbol, addr, name)) + if sig: + f = bv.get_function_at(addr) + if f is not None: + f.set_user_type(sig) ``` The decompiler now shows `main` initializing GPIO 16 and looping. We make two changes: diff --git a/WEEK04/WEEK04-BN.pdf b/WEEK04/WEEK04-BN.pdf index aa8010a455cd7d0ab59321efad419d167eaf3a6b..9f85201b6f081aabe0fc7b313cbcc21bbb74348f 100644 GIT binary patch delta 804719 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�oWG zC*W#*0MU{OF560APS-&5GNk%mA9PyEm@;a(vbFJlSNGTQXqbE9WP+{0!{ zf4D?pXls|L;}=~^&&e`Kf0)05mYb=45)n#NDx&JNtrytt6bFU{8&cz6!%4{KN^6u*MVetH z7GaUY*OQAo>ZDJnM3BBvigPBf`P-C+S1^#sM{FMZJU8Mu)@)ixci-_#t)Ce%w(auS zh07Ld7NfCD8uItMAHfzbr=6b0jsLg%hX|YfH4>gKbc5iUe6p`v{J$cLTHAjV)ybXc z%39EthP>Xse{_2Jkw}-(%@TmY_u%K6(ShGxc|m#lCIn!RPX^*qWw08-E3%D`gM*ni zbc*I0QepaQNXywT#wT>8!w>xfjJd@l3^cZ${Nd?5R=&@H480w>1-AO)LuPIb?OBF$ zIcD;`EbRi(_=_v{QCg9YmJCc`_=`y?lWlW#`H!jQ7)CW4xNI?@ zw(Z%r%Astjdi#hc(9ONxB!3p+@^R2e+#hbTyZwO>Zr-gxU zE)=?3Ka*G50rhog0kWw`27wTsXKj$0zRb!3N<}C{#%6NFg>DIe1bcQr=w^N6|{MTD|7`s>C{c!4G0p>cG#(+eGmoNgfuT5dha zB5!Y^ea2v=bH+f@tTNAk3N&?c7B&~H76?_HTvTx;NdT-%gSF04?Oo?g8I#5l2Pp#K z2Me9^U7G=&CP6Bu3eTCm))&)qUhu#WzQE%O*IrSTh;5nN%N=JX+5u*ltM<>$Os~C! zGN2ZiaiDnnj?J}pFvpF$I3QFaXpNLeGi-=Mei7cM`e+$B1~Y2-Mj_zukPQYe76j?Z z=!y~BkE5)Jm9HqE@mmYi^jmk)3>FuLbDpvTR-j3U;qQ_noXAe`V4MQ!dB)@vdVv}K zm+%V6S$KM95wF%6T*ipgcs`O=?>Gmmii~ie;ob;R(_P626aI_{34zewTm6ViL_iHg zN-PK5Nq{q4E>}eKrviH~Az~y1X=K)Ji4F5_T4$~qWMLcuZbVa(b4I#SyhsInxZ(0F z@P-iEK*&!{;I~ld9DFthIf&>v=kOx2RVvJv{1~*uOW*7%#93m4uLin|;02 zp33)SgFbLfez?`;!mX?9inRe`G-J`+0jG#4sk^>hb82Q3acDipJf)#M{{Y6GMwM@g^e?L{Y~oZ!*x+7}LV$ zNNR{|;jniZu19l}npep_k>>gXL8&2H;vn5Ts*-ITS4NQiHw_H_>=qhOLA-@$Q8Xht z3ZGJ$u}Ga4;N^Pt$8$-B3Lfx=7cOAF#No-xRX!DA4x>_ju7&dXiYPV?IUkVT_oXRH zzj76u(dvkm!|w!^K=l3#Jv1Kd)+s3@QTbj;x3?Pwz@*0ZqQandcdG6Cy4dnMKf^b2 z|55duI7PhUb7&;XPg)Py1ea=_>$Oqeosg^6V!q7cj6cgLG`;6>a;6V6i~dlo9T~dK z?8|qVlDG$()gAATS zI?L`*Au0o9l>1MM!OqH0_2%kN^)ZPEZc1A2n*VX0n!x9;S&zBjM*sa_Ck#_5P(&&I zl*20sGn&KE!A%%GVv)lW<^}a*Cx~@s{&&hHNz#)-Mc7VRJbn1RKL$(%y$0Iq_lyIx zqXyLl%mcM`YXi_B0U;HLqR1seNhp^Ic@C{k`9$7M-4gN_S!8N2O>l?Dh7rqa7;kET z-?Om(B7keUQt4$UNA>E;h-t`z$M$t(WMNf&yawhFI^>G3Ir}zGoF%EOY8iWU{d z+#LJO5BsRHMu3dQ-0~W-R>j9x0H10V<;&l17IblfRzMSDePi55B{8|DRgtqs)U~FK z&YW_5q0TQnGE0JUH^KbzS!HZ70xsuWA?Zw^jceYY-&Q2Y=_7I6BSR6;=uUy(Z6ty& zO$X{od5tkSdiHPklC|h`UuogXVb_}nxHk21@4*z~nMH*K#`d1W}x8i zLWm6rE=gCN*IyK4;IJyl@k{KjDy|N-WaL9_(lSi3R+aA|6OXp&`Br7?>b1-U0#%s-O1hW` zWjU>p^b6~;VlLt@K1LK+@fim^0l`_e-pNWJyq_*L5QL~*I-KQFd|5@!Fp3`=f_p@~ z;_P3^^E!UB&DMqN&O)wz$;%lN23qbs9fcvPLJoi1u%`g>L*qgpWJ3t?Ud_FQG@?r!81mKyG0GMn8 zxd0O41A2E$3tA*0VTSALG=5b`Yx|Ec0?Cq`dGnS|QF*BLbDOKpUq>#Y@4h)p*oO>c04a+(H46TgXRS`%If9@bLLhkmWj7ZOI!$2*a=_jkfI7FogTh?fX3HoSCK{lQ6U`PWh(nw06x%TWJtxJY zevFjNJ{v82&~Z zX^dfw4*Pbbn>7*g^Dj~!lrw%r&=o<$59wgMB#%@Rp}aBg$$HjkgEC`L3B=xdCj#_= z<)8S9(9*$Z$xneM^{|I+wX_a0v~s(t>Z>9oC`sv~F_HKY#%^C}Xz#84SXx-Cp2#B& z(h3^{%p#Tsv42TlOXCbM0g^@FqS!Um>`dQ>Y9Q4Df_|PGAsJmsra{&9vi&j~GLjmi z82cBY6DNts&0FlG5+n0gDhBseVTUx)FD@<>azxHBfvs^Pzh300Is6M*D(J2w@<(?0 zh3Rh_D655TKONzkK1db*ZR&FIE9w~z4n1OAdqqNihl38mi3D+4LtxZV`X78J$bc=&3gC|y#*b%l;Qkke;U?&!U5d_IQ) z&-XRJ{UplgHSoD}`}leH`LTDc_wjrS_<)LGP%frcTjk&VUi5%ns~+n@rK{n+cf@(8 zv?{G=t;-t1wd?_4QA=Jo$3R)L`i)C3k>XJ&>muCADe)Eou3| z%KsZfoz2nrB;DPGZWWCfuZA=4^$Zj2S0(aBB+F%Ns#6EMk+L;steIErk8Db&&nij)zzn2VUJ)DUg3^r4Y0-(EfkT)aV8*6VuSCOTXOzR?!ItUf{`i* zs}uwSKZBZCJF{0F6dBz-Ro+}_8rvRK-u?W`$^vkfDFv~P-u!YUWdl?bgrFBio|!*n z_sA4Dk%|Q@@vY}bx1ISQ?)SLFq$_9`P{w<@AsbQmz*D>wrJ-dmrW@tJl;)Y(aDS_;u1$G+)reYEh)U*({1Z&6XDNMp5y<1@UiY1 z#Aj=j&(p&yIR5T)sC7BK_Gb#fKC-b}eD$je$=5=nYcwwj&YG~A)!P3FjsNVOUz-(> zM~klOoJ%JiEJ)|6y-Yo?dDmLok-DT#b5=D0cW-S>>JgER^)Ln#BNV^t=8;Y~3b`>!+QYP-i+OE=sgjd81>e=rp1C9WucBsj|SpEL@fPSN%X9gTp` zOaBWr^Q-)i7n1<;Ry!GuFCQp?)Xj)gU^|KL9xhTquC?g)8uHL!xbg{ z{s+so1NykHYR5Z$+BA%k*<2eeP=l;MIFZ=RW6V>M+hF7;7Fwb0rPW!SBZ)cd+ngYJNmY=|J0L~S%`_Dr3=R@xB%Sl&(8tx(T> zVo~MIB*v#^^v^=&=(9!H7KDZq$@>mHrmzorYi|!lXz&Cj>?JH^R?WQ}KuxtA@P}#@ z2ylo>pG7Q+GOwP)W;vU+at5D8X%9a_&9XEn=#u}Br5{%4e5T*t^pzigvwLLk+lV3N zzpBqT54Ky|8(dprw(W7ZYn2`?Whc9c#WNGr(ZPG-x%MXc0Q>IuU4;>xMo|z}Lfnrs zmlAW-Z&;-lvL8JcwNw#WF;@ZCOh+70FE)K;={<9t@*Cni9ZJ@WoPLIg@S#V*daX>c zw8ZwN$5uac(x_cF>zYwsIBd{;hYNqusQHqFdaYrHw%~u81{JY35LdCW zigB+Pe2BgolvV8-WRiklfL^IYAE(N*fCvFWpBxUK|1w)EX2e>o8l#v|EafakEQo-k+?cAI(l5+7a5hEsc+0>aV1WO`o_f<$f9|Qh0lsN>Hjl#g{Hv=!%N!Z2 zNBCfPaw7T>aq>%1Vm=5jEhz01fi>tF{S%w(6Fcz}!R&)!;!Ur0`?H_?lM+cdKzcPs zMZNXkrwFA)b=XC02)?FRKYit!p1=nK)hG7!n;!o)=QVI|e57K-EeLo@8Qot8yhmW4 z>2(@^u5vC>M=dPf);i%;*io9vTU7Gt)&i(2J*8)QJPm+@$>%QgD?1I$YXVk&nw0!Z z?jHFoHp6m{d*26=PvHE$0r+%c-|2@J`_uJfThG(@zYkY4`K^p$De$(Q(sex!CtxSw z72(Gt`#Lck5;!~=9{{Bg`yDQ2J;x6to<6)@U>a-;BCdcDAxQpcT`ySUG=96%#R5X} z!%I-}bPn^c=F(--fMjno<`80YGacWQxz!pMxtBt;%_%OnLPRrzkDR-ejxN|zdna<9 zizrEpPh~1MFO4sE(#pD5xleEJUnN1rvv`v6zpvmz3B^z~6hIbyZP^DURAz`&uOps3 z_yXIe;&HEgG2|XJAr8Y)uOg>rF$+4K`b%Il5d)}05Ox@W%btpeus-T*dlh0~>!S{o z?@cow38Wd=$Go=h3tOo)dIuJ42iDY?W~=^E|5!EBmTGJo1530V1d-!&l2OWKro7TUmhwM&_9blcw(@lzqFgC1NstZcIq$v zzg&OUPUEFr=ngD~<)%ERyB;>Sqavn&lWDiU^FPW;fm#`L=e{pfeD6;9CB7WK9|4?Y zH!PHx!3nF%*p3~eX%g+SAM0k;-N&C+f<1Iugq~UdJO|<~*F;tyzQ?^nttG#O1DBb{ zaOMSQ+%|~=VQgc*c~SLx=A@f>y7R;JTJyv1F)x{H$s3q9i5u}Cnht{Ks=BKc2vKY& zWFoID^I|Kqjd6(qJj12PxF{AlOr&$Z{}jaJ<7`l~NPdvE3xAlJ<9cNC5lFy-(hY2d zS!^`dBKQt8SDZGLgRC|{B)b1nV_m%JZfRi>2My2CtMm70Db28g|48gJbx^1*VDSyF{0>SM6e>r7LS;EnsO$y`m0RZh!7md* zr7zx2wk-#LqL}|hhrfzCig%Q?^dP)WGFnB6-jqVvysN|kSZaB@jjgKZ-BA&%;1I2E zn614g^}X=)rLbT-b6UCZDM#T=wW+X`!6rQcbTg1EtT&~iBa85>i*96%j}#4lpJ#R` zGlnNW(3B?ILgBMq94%!thUbI=rq? zUG^y1R-l=ze;n-F>3*CCckv+vD$gd)MRn*x%pM^?pwl@9=SC zBl4bjWT?9LKKd~-f&#c(&OI;aJ&#;|zB^uAqi3j5=I})Xp=Xp(!B_|Q5zZj{g$pQ9 z`9j12c^n9dup~^er0^R8`Ba0D8xRTLUzxdV!2Ac8BU+f=2cxgOy(_+1R0qWn5|7AZ zF6P1q^P3}rk+W!h!)z~^K?nzng-N1L546O*H~6aW>o+@>1|{~(i~#o&Mr~4QXm_}$ znIPmgQfFtt_}i?FmyZ9}s#|!J93D=#ry^Wr09akGs!@M)8riwpI9%QWp{rRQuYWzS*v{R|3>i3mmyvivdZlDE&=*8J@M_$fxWAs6khi;6v z2GXe7#ybKd{s%}YTsPOqtU#rIQ_*z;3gPQ3asM=3_1xhu_m}WYl-HoHjjRe3wxF)x z0PM7vhzZTwrhyk@M%C)G83+y4nzNa3jqkX_1z~+0ZS}$({q?>kp|0sBo+hE?p+$59 z?xk@ipeI$PNxT71NJ!E97&2}rjU~J5AloMY(J1h-GKnZpWV!cD-;%Q7NyDF^@SFmX z_4<4$zFbvH!QZ8$_-5r6+0KTLND2jXcl_Glbm7z!mhwn@TB?G0Tzi2gTr{S!@ZPyC zwzczA9A}8fFj-;ESt)7lIIZ8%UNLRyj;DM@W~+?U3Eh@mbNP~dpcAS;{=E1LE6YyD zWF@@{?LoiW?SysyTq!oe5Yob@njoVtn3y-A?WG{yEWHs`T1r562Wh6 zQOOV5ZUHpd1}US3u<^aOS6JS^LM;odq^2G6p~vF6^E`JC{1whWBDBmFUc027xi%lHrZ>y5IR zgI(o&NciGncuV~pD4pU96q0lm@>EvpU%g0ZzrdkO>d<;KVg7a`7p&T+gzwU;hq$#K zGx}jqSgVA=P)7+5Bsh?DD%Rwo4l$kdMArbi3k;DK^09ok=<{k;O@+%ndCw)ds;#8$e;HBgQ z1x*xuizH8F1PV>w<;+so@(8X;V+JV)!*Bg}}{%$LyV4)GY+EaMV36=C5kWOm9%g2r-1($${g2@#-33B}IBE(k`Uw@P+HI~ns#1hn47!UFqr9fUID6n^; zp^lg;E2P!p%!*Z&3uOS9&bOwHgPeDrh0-|)si8ST6am6|)Hz0Dy2AHSyU6VC=-;^n zhee!2*T-g<92tE$V#{X*nQbJvi_ninjzu(;BsE;+$U#3bDZF?M$t+`4CCaoPAdn{| znjESqC0BtK<1L9-O)HGQNnAZBov%E7UV1^P)jwrG12ac#EO`?t)TN#=0KfF*sE%GX&MlsXtFCQ6H5`fj%ycw;vI5 zR4-|CcCI=8I(&-?hHW1P2*wz8eXXEUmJm=WiyEku<>82}9aJ@^1FD(>5cDbrzhktwEj-M*wRwERg3=apYrS7d-Kug+?m$^@;JJAe^5TGWsj>Z5CY^P zcy7;W*~6q91&Ft%5|0Lt`}%Vf!a~8vN#Nv$B?k8Xs7K2*KC0?<-gEyU;{^YO+Y=@H zd74?KL55>nk(81l+n^nwV9C}`H+i3ApV3NwaQj!PYq|Rmu0&&Ts~s}klzMABaCc-T$ceU<}*pjWo9bOk-1hMgDnT zOj4#3b#$paI+a{G^@&JhXq%cr*c#E$5N9Hz058^?uW>a@~3$E-- z|L-**png0hQKvii>;~F|y)lwN3p7<^qK@iVbtZL(kQJ6{o)ZWaw6yIcXGa0Gq)rYG z8AS*N;@CliX%W(p8lK%OwPT63q~vEuGRw14%aZ?>L;2t9_@I)L5`_L}`Y#=McJ}Rj zwA*P+?i+v|Eajse65{@JI#9hfIrJcZe`9rewb~0)f3M6p@A4c_J^n+79Sn@~x3}QZ zK0-Ua-rRqM*v>lLg{L>rIw{;bYW|Dy=!H%H60ZyxDN4rwli02oz{S+OX-|wRu9HdT znFH11?^@m^1^3&BfgHdJx>=&}plWa%bW-biN6jiqdy9OxSmBVd35F_W1cX zFo}IBaChuF2y;xBG5t@so8<9E>H?`!@Zh^%tk-kE`gqF!gwSm%41c=31usm#J<^nd zlKLmv|MoH8S}1+Gg0c1_^@6}LZv^Qi)8dOg=G3grv3ZWAIdU7a?_3DWvE*MgQGVr6 z`hb6-Y9~U=5Zp-URuqAqLWe7D0b(%!UQ2>Q)7A>Ys`8M)WKih`>7dT^%b~an-+%d< zj|a`DxC5!_U=9^za0OMdHZw=^d?a%-3;l-@I^O~GmjlG(fPV!D@pjJmI)3yLeC;I9 zA!D=tOqfd@N=qEH{Y-i6bPd z^cq{d`rig*LvR;!fn&+KzyjX*=D6;hgecpW!?kH_rBR1_4%zPA=Hvahb=C*Z>h(9? zv&|o*(<4k5pMTAyvBNxQc|qG)`Oh{~vtx?PvTMeI4kMAYNs$S=Jp_LT4{y>*C%gw}}P&$n%0 z{v!K^IwXb*RM9EcE+$hMD+ceO1F}0J7;MfAh^W(0RH`hz~Yb^ctU7h0?9vsV1zZx1_A@T^Bz6NM7#Lv~*3l zHNuCcsAYhloH_RAE+rJC`kPOJd*UTP6dmbDikz))j=u)qtb$?PhX#TnhE3o9pF(Ni znQeQsd+R!=<#p(ft88o6!NCVUS<6vd)tf8KAJ}X@_{*;7L3wO4wzCVIOfw<*Z(vl= z!SE!+U@Csa3Qyo%!UpiaQNUPoB`}`-q!fdo=Adgaj&MbFavg9|fAr1IaFbCU5ymI% z{ifaKPh*z?iXIFs4rs3*`zIvyQ=0n@CAmc&9#` zpsYp0mp>nDIw2;Mlq$Q`Q$B6nAVNdCCqX`mY1#p5opx9iAgt(uTD;;Qj@wJv=YJdn zOGV^w2xOgCooapuw6g64rfGvP8@9ppk;*We#AnRc@3)M=gXhF@DRJ7GVhkE&?yz{H zpAo48bYylAv5mD=?wnXB42}7JYpAilEJFVZB(x;$(`{nbUzxGF0{`{(DVzqa6J7=R zV=1)Q%Z8ZiaZ&Uj;WavLucSisVA??F1BU}JaSM;~?Z0{Nj?zB1phD}5*mU!fT%#*E z|FO5_y9OLIzuq=^UK@BE*Wp3D{z~L#ejzL>vaKs=g+hBK!B3!D{uOP!+N0w?MYuVL zwoPa8)=SytvQ$i(G64rQpu|E}w?kFbinx^JdLBf2-HxESAfNfKfFq?peV;f6^pCkI zy2*3drt8s73N;cpehWskcT`z6*A=qHhg=zIaee@E9igaTkP(pVg7i;u_FZ|>T3gYI zMY*iHtvzkC^G~n&K{42iy(kQixIpZoAz7r!9_fQr8B0+PZ^;Q46o$r^;!;1MaXPww$@=cf)EOUT|4a_x3mE=QS4#g12g?>@CMK-PLGBqb{4Q#}++jbf zzx6^2mB8`7voJ=JUfPvxjfUf>x4=@gSJMn+-QTK#>Gpw;;~o zgS)%CySuyl;4(N2P`C{4gS)#kxD4*@4uiW4&g<|0c4K3AU&M>(?99rn?&{8{JbCln zbF*k4a!FEB&zCr25Ssj@@N>uzi!d|4Y(W#BuSHxHy-QG0W-`G}Cf_zGQJ8s=k&K|B zKhTfdC3Lb*NOcR9Cj;Mj3qE}*wAsNIPJ>xf-GY#Ycs&yYTrY#YordID+J*iSwH)4% zv#0?6kq!?UtsZK&HaWA+nMrU4mgJE5d~D0o+MJsYEbq` zCuqMN9amS1{2~pssZuMX`2QE$zbQc)SQb?ZRN` zf_ihB7(YBQwP5K?gNBKS4#lf0o1^=5BN16`uI&e>kam)kn2*W#EQ9{x&icKKFg27A zb97$Q!Fa$#8?ZH#S5PmtgO9%I(Rx_0z*W!H;9M%ou%-^RGA!PkIq1$AoE`Vu)E{nH zfOfI|kF=O{#MPQbjVMDa?BRw*%!VAV@*aB9=N^wx2}l7#p`x&9Y>cv=6-yh@3%4Y6RG^-PL6(MJwA*&5J!y^u|-zG>DSIiX&F_X+M*ng z<&1PQ@~&eG@7?IP7p1NJjq~0~HGCiZAFlvK~GR%EWnP);q838$= zoR*L!092}`h)rYI#YJLA+1i3x6y{@WF71V3K2{X%ixILh%KU_BPfcMDJdxLef4Sm{JP;2rq9EMH0 z!PtFG4^yIRI*SlyrEghahsp>7nEsBPN!}XnvGQybyg4!*M0$L;m3E1aqprxDcBROy zbJOMJ!;Y8``xqww#Z!CTNighMww1%Uxu=ICk;8>>e4Ou^U$ykA;Mk2b4JT@Rgiz051!g=f0VYf>OZ zO^0fJxokQm4?Vjn+ERcN>lhp~>08fer;ZWO>zSsX2mgH3q2ezQ2Q6}e>_s6G%?0&A z5JIXucTGnN-|7JVfz(L}$wjIp<2>JOG$zn~XV`PF;+`JiOKa;aO^L=TH7X=lhWY5M zO=%%>HdJNz5x`reQ+UMWo7!}AD#F(OEQ{G8rx?G1h~oxc-XOyAP=flby-oB~*m3e( zP@^?pA-*AX!N97#2NVLJwR5q^{>~3Si(YZ}w?9cvun5XV3%Wym9O?gv`k#6mvDV)T z9QYRAwGBRShJ{*>Xs(D~H?+Ft^VW8$_(j$l91ULqz9)TO4DK~eaGo>cAt*Tt_x3S|31x+_TIr@Fo6SMHNStI zrSAeo?1vxJcpcYsby0WZ@s%1%7G17-vTa4EW8-sK_%7{If2+=6(!Gas$j^2Xa*PpI zIgVTsxvAkK!!QI3coQUUmAgzZ@X{fweZ<@UMCl1np-<~$0!L3uKc)uQ*f}}>-y8IF z>BcerPM~}u>e>5o&XgyR%@6klf=zuKk!3NU9j(mDy`@OEMuRa0{y0~d1#j|vW)t_{ zU4)8bB7Dm7K>vX3nu`ok;?QLH(&xVw;@ACL?x%W=&!@*YX2Ac3$zioL{Qc~-<%oc| zyQTet6=)qc_WyV5^m+d@Kb~vc|JV1_c%S;Y67ZN^ZVOF3uGGI{6l%d*H@EYyjr;sK z8TSMWk2Y=sX>Q-Og=rnWSX8%y|Y+S#5QMlz)&D)-{XlC65?c)$- zzp>|?IM=__ICg)W-_H|hlU{kQ6jwPLsLxB?r{9=(-xW(vld`*Jyb_Em3*2v>MfPP( zWieV$>P#IkSE$f()TtgzEJw?+RF5H|(Ra~SXW#So3|8A+6iq*KIy&1?`{h(W_QK+S>D>@~kgz>3vqRxr{p(BkSzH?Z0#Wr;{cg{;y5~K)qD1S3R{K z&%_%o-hR%4Y?|)pAH|zCoSO8*p7L;M*hxAaal8BF{%ZRJ=y{$7J}YB(6JvK1U7t~j z2IEk;U*zAMh#!bTZ%;lSuK>_)Q6GoGJ@1wNyz6N;Wm)omAw1oNKcIJe?k|$+P|CYX zSszkgv|H{;{K7=GpO*oAcLMP{NzEut&g8f#yBz z_2=gs$N8is>M2UfBbdJR|6b68dqMb&8f5nPh^h;XUy~eEMjCsK|6!~*UXp?F%DmCN zxThCY(%3TRV)RbtD`n#d7}{+uS05xp+A{jm>QxpuTVpD`&h%}m*_C8IjcdNoiDlN; zZ0uL=s&r2uC;}f3d-Az=z1nX3M$3v-uO7E$Gg8L~1bUMnHu%{oB@g(~fp4Yzixj9L z?=Rb*rTI-sxWbdSwm;tLg_9qj?$x-cM9cmbJ5tU-*{{zVnSE1bh;b%ONTrYR{c>@` z7$^o$8S-Jas^_q)+B#DaCy-ria(lmAUZSRMu3JI-*aI+8hOmw^>RWeZY3Xl~NBP3v z%yJQ%Aq&+{P)bX3S7=S`JN;`~mM$E_##>5?-uV6bdLdu_c7GCDk(1;Z2wm(rdS&_s z4HUakqm(NRrnFo*qD+bo%B^=!bJVuJq_s$5zZ;dLrnVezg2W=!#SWC;a>PJYbHLI!HxO421LDdDM(>eKOTz+>F(6}c zJ{}K0FU>_?dO(;9D_j+>&ZO`~>ZX3N>FSk;n!?plp7o9-FSWXO2PW$`i!%@ORbizx zfzW6F;3BhD?#qZV143<-@t-%PWK6L}%fQu-h3_rJt|KiQj6{i&9^;#wzL_L>hnEt_ zKw!(^r9FfZp@!b2qwcpSo8SD`M&M<7CACEvs5bI(UzWcWF$%hwiIp)5{uv8c(}K1& zybEfs@kU+-AD;XdAyq}G8~0u=vMeSY39m_xn=czg6(8+vWlImoFA}IFvlNKfB;Bya z%elZVt8c}&Kw`L%aqqk7SR>h|=YMVz1vtr7?ZHx(6k7{J_h_(zDVUf;DdjDO@s|;a zf;e{)T)GVs6h-o#h$VDH%YBbJ2hBb#15r?tn#IZ*|0%_tELYGWXFgM3y@~_!Oe2Ck z(=aJE1cl1>!K!pz$=2NnZ700F4(@hoUik0uPV?}+S|eOAS)LySRUc-Wm2JQ&^d5Xf zlK%T(!?p3IqqLd=-~-deW-S%m%_mslzH(i8`#Vz7`=OAhb|x;?Mqx$HraH_mi^^ak z?ZI;@*Z&#Qw^~zu(*>)8LF$cd-k`Z{8atoShOs%r0iK)ckJHu9N=2`q_~8ET0B`=xOH;t-}j7tn4=Q94BXOnc*yIp*4-!0r?_yj;6oth_1Br4@M zq?*s(vuqbvo_CYphIG0)Izh%j{5YDPCv<@0YwF3kEc0NIc=K+Dd~(mvZ40H=>urB_B79C|1O zOpwJ#BR)vAB)=*~8Wpf~IIv~0BRA-u(SrU4y0scv3@%md$!*^eqr37&aEk2~O*m>5 z>r924F#p0~IK%mG1m&!849wCu&)Qob2` zL@-cw84+vI#-fIm4h*@*Idy_Bx_ws%|17VGgI@lcPg_rx8iN(G!vl7!m9C9(N_`d{ zqZM@}?o0#WnO>J`Wbb-OFI9k0eEQeyZ`{%r*WK=|5MZRJ&$*fLVMRjFxI7*TWVqf< zkmqE$&;A*JN^DUvR9u7-+fOP9H)0PumdOYuwVyL!Dhg~rEk4e|QItpoo5qS~5XNj=IXp;!V zuPd;D3hMI;TCiV3KC!=!JvoNIrD~7%{hIy%8*wCvn5q;oDdhx(af-pLbTA8`5qGN0 zg#EPhI(39zvOT14iJ9{)`0)_uotSVe+?@v7)>x6Y8$DB>`=61}^e|vm-n#eGxgiRP zz&4(oawz9`S|2R6=Shw5^}_GB%CwF4M-=f7z1@4M*GBB)rNW>VZhn)@`HD|<zKFQ{P>r8#k@W(~k`wg+uH7(n+$OcE1L z6q+vl7{4SCM-%eW$$Y@qzlK?P%Awps;r`tyWRyiqF+N4reS#=r~G=v4ejJbH#=O)JIk1qXe6S+B=b#lNHbS z^9|2~9lqmTc=*v+KiJVJKUmqjOSYQ4_^LnW@oVI(zpqG6@~@5yf_K@pe?RtI&w1`- zLI^&I!q70R1Rz$@#D^=QTK|#4k0|hga#W3h7%y`kaN+=BNCa_|`JlKQuJ~4Vy3Rzj zXSn+;?}K*?RvfaA0*`B!P>m)bS)r<2n^o$SR)XL=&OFZfNu;XpfPI1M(Uj!Q*J>jr zsI=p*3>QD-B4G%Zfe*TazdNlgdafcH+>mx(GdLa($Kr_qf;b@|p{_smZmY6Cdv8`t zN#3ue(^LVRBpKgc*htUBiq@xUO`#<#qeD1RwY2h2?>@XlI`dt)lqbd8<6gGh2iy*OyldB1iEdP48ctAs&U=QJ4oPFi8lgP6|*R&3^x>Y6qVi=aBI;IgmRa!UhEJsn695CxKs&w$>qF+?J78>&A2yEi5!<@$zRN5aiid03 zD7ucv-0I~Zjbr7|iL>yl+Kj=M`v*TAmuobGd!Xos_e|EFmJ$<7(<~95vXp11-@*Dt zLL3KRD3C>@pXVJSUWX~vU?{usMb`@kkoC-w^c4a(N0j;hq!wNs8dXt;H9Cp6g5f*5 z5a2ti@z}S?el+b;J>P-mvC{xSEf!mf#(!BS$qLQ}0qYIzY@6pIz2+W*$ zEpw)DMs8kIsAn5cTiqd*)v8OZ?E;17%}Ck&!i&qVT}djBG)n1R6~UW|X4?+ryt zjSipK5XpbgQW1}UoF9)6Tlfos>6>LCyBy=JO)>BB){+Y%lqwobv^6>)K8_K`O2gH! zgJ~|OupPQdy=u7P&t7=x)B64{IeVDpKRQyQM8&Y|yxlQNnQT)i4?7zewp%wVDTbQ1 zCSA3c(J9GUvxNY*L)SwBeF@8=(w7YxB-}P25&-{?45wtb23k~jV^bs(JO~{pWrGkHz?+5>AXsX(#IyjLQLbGry}habOBa5wT|} zU{X&A$W^L>6X>)Sesv=hJY0ID;fnVxUoZ(PfqmvXFgy>QVpj@^pIu0QmR;U0zPG&# z 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