# Customize

Source: [https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html)

Customization is a process that includes fine-tuning various aspects of the system,
        which can significantly affect the overall performance and power of the system.

The CPU scheduler, CPU frequency governor, DVFS governor, perflock, and memory can be
            fine-tuned. It is recommended to undertake any tuning only after gaining a thorough
            understanding through extensive performance and power analysis.

Caution:

Any customization
            can impact the power and performance of the device. Therefore, it is crucial to verify
            the impact across all the relevant use cases before performing any customization.

## Customize CPU scheduler

Source: [https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html)

You can customize features of the CPU scheduler, such as PELT and UCLAMP schedulers.

For more information, see [CPU scheduler](https://docs.qualcomm.com/doc/80-70015-10/topic/2-performance-features.html#cpu-scheduler).

### PELT half-life at runtime

The PELT half-life is the time that it takes for the PELT signal to reach a 50% load,
                starting from zero. By default, the kernel value is set to 32 milliseconds,
                indicating that it takes 32 milliseconds for the scheduler to recognize the task
                load as 50%.

Choosing a lower value results in a faster PELT ramp-up time, which can speed up the
                time needed for the signal to stabilize and accurately represent the task demands.
                However, this choice also correspondingly reduces the decay time.

The PELT multiplier is configured through the following kernel command-line argument
                in the source code at:

layers/meta-qcom-hwe/conf/machine/include/qcom-&lt;target&gt;.inc

    kernel.sched_pelt_multiplier=[1, 2, 4] Default value: 1 (half life 32msec), 2 (half life 16msec), 4 (half life 8msec)]Copy to clipboard

For more information, see [sched/pelt: Change PELT halflife at runtime](https://lwn.net/Articles/906375/).

### UCLAMP

UCLAMP is a scheduler feature that allows user space to manage the task performance
                requirements.

It is a hinting mechanism that helps the scheduler understand the performance demands
                and limitations of tasks, as a result, it assists the scheduler in making informed
                decisions.

When the `schedutil` CPU frequency governor is used, UCLAMP determines
                the CPU frequency selection. The UCLAMP value ranges from 0 to 1024.

The following parameters can be customized for UCLAMP:

- `sched_util_clamp_min`: This parameter sets the minimum
                    acceptable performance level for individual tasks and task groups, ensuring that
                    tasks receive sufficient resources to operate effectively, even during periods
                    of low demand. 
    Any requested `uclamp.min` value for a task
                        cannot exceed `sched_util_clamp_min`.

    - For the scheduler, it acts as a lower bound on the PELT signal, which
                            tracks task usage.
    - For the CPU frequency, it instructs the governor to select a frequency
                            that can meet the performance requirements of the task, thus ensuring
                            responsiveness and efficiency.

The Qualcomm-tuned value is 1024. To set this parameter, run the
                        following command on the device:

        echo 1024 > /proc/sys/kernel/sched_util_clamp_minCopy to clipboard
- `sched_util_clamp_max`: This parameter sets the maximum
                    acceptable performance level for individual tasks and task groups. It ensures
                    that tasks do not consume excessive resources, preventing resource contention
                    and system instability.
    Any requested `uclamp.max` value for a
                        task cannot exceed `sched_util_clamp_max`.

    - For the scheduler, it acts as a ceiling on the PELT signal, which tracks
                            the task usage.
    - For the CPU frequency, if the task demands exceed the available
                            frequency, the governor may adjust the frequency to prevent excessive
                            power consumption.

The Qualcomm-tuned value is 1024. To set this parameter, run the
                        following command on the device:

        echo 1024 > /proc/sys/kernel/sched_util_clamp_maxCopy to clipboard
- `sched_util_clamp_min_rt_default`: By default, the RT tasks
                    always run at the highest frequency and highest CPU capacity. This parameter
                    allows you to change the default behavior of an RT task when UCLAMP is being
                    used. 
    It enables tuning the best value for an RT task, offering good
                        performance without pushing it to the maximum performance point. This
                        behavior addresses the system requirement without burning power and running
                        at the maximum performance point all the time. The Qualcomm-tuned value is
                        128.

    To set this parameter, run the following command on the
                        device:

        echo 128 > /proc/sys/kernel/sched_util_clamp_min_rt_defaultCopy to clipboard

For more information, see [https://docs.kernel.org/scheduler/sched-util-clamp.html](https://docs.kernel.org/scheduler/sched-util-clamp.html).

## Customize CPU frequency governor

Source: [https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html)

You can configure a CPU frequency governor using the
            `scaling_governor` node to enhance CPU performance.

Note: The commands specified in the following table should be run
                on the device.

Note: The commands containing `policy7` are not
            supported on QCS9075.

Table : Commands to customize the CPU frequency governor

| Command | Purpose |
| --- | --- |
| echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo performance > /sys/devices/system/cpu/cpufreq/policy7/scaling_governorCopy to clipboard | Sets the CPU governor to enhance the system performance. |
| cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    cat /sys/devices/system/cpu/cpufreq/policy4/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    cat /sys/devices/system/cpu/cpufreq/policy7/scaling_governorCopy to clipboard | Verifies the CPU frequency governor. |
| echo schedutil > /sys/devices/system/cpu/cpufreq/policy0/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo schedutil > /sys/devices/system/cpu/cpufreq/policy4/scaling_governorCopy to clipboard<br><br><br>                            <br><br>    echo schedutil > /sys/devices/system/cpu/cpufreq/policy7/scaling_governorCopy to clipboard | Sets the CPU frequency governor to<br>                            `schedutil`. |
| echo 1000 > /sys/devices/system/cpu/cpufreq/policyX/schedutil/rate_limit_usCopy to clipboard | Customizes `rate_limit_us`.<br><br><br>                            <br>The value of `X` in `policyX`<br>                                corresponds to clusters 0, 4, and 7.<br><br><br>                            <br>This is a `schedutil` governor parameter. It contains<br>                                the value in microseconds. The governor waits for<br>                                    `rate_limit_us` time to re-evaluate the load<br>                                again after it has evaluated the load previously. The Qualcomm-tuned<br>                                value is 1000. |

## Customize DVFS governor

Source: [https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html)

You can customize the static map DVFS governor and BWMON governor using DTSI files
        according to your power and performance requirements.

### Customize static map DVFS governor

You can customize the mapping between the CPU frequency and the L3/DDR frequency
                according to the power and performance requirements from the
                    arch/arm64/boot/dts/qcom/&lt;target&gt;.dtsi file in the
                source code.

In the DTSI file, for each CPU node, there is an entry with
                    `operating-points-v2 = <&cpux_opp_table>`, where
                    `cpux_opp_table` holds the static mapping between the CPU
                frequency, and the L3 and the DDR frequencies.

For example, the following entry indicates that the CPU 0 frequency operates at
                300 MHz:

    cpu0_opp_300mhz: opp-300000000 {
                       opp-hz = /bits/ 64 <300000000>;
                        pp-peak-kBps = <800000 9600000>;
     		      };
    Copy to clipboard

When CPU 0 operates at 300 MHz, it performs the following actions:
- Votes L3 to 9600000, which is 9600000/w (where w = 32) = 300,000, which
                        corresponds to 300 MHz
- Votes DDR to 800000, which is 800000/w (where w = 4) = 200,00, which
                        corresponds to 200 MHz

In this example, `w` represents the number of bytes you can write in a
                single cycle.

- For L3, this value is 32, which means one transaction per cycle at 32 bytes per
                    transaction.
- For dual-channel DDR, this value is 4. Each channel can perform two transactions
                    per cycle (because it is the DDR memory), and each transaction is of 2 bytes.

For more information, see [Generic OPP (Operating Performance Points)
                    Bindings](https://www.kernel.org/doc/Documentation/devicetree/bindings/opp/opp.txt).

The values in these tables for DDR are specified per channel. This implies that the
                mapping is between the CPU frequency and the bandwidth of each memory controller
                channel.

Caution:

If you change the DTSI files, the power
                    and performance of the device are impacted. Ensure that you verify the impact
                    across all the relevant use cases before changing any nodes.

### Customize BWMON governor

You can customize `bwmon_opp_table` for LLCC and DDR voting according
                to the power and performance requirements from the
                    arch/arm64/boot/dts/qcom/&lt;target&gt;.dtsi file in the
                source code.

The following code samples contain the DDR and LLCC frequency levels, and each level
                translates to LLCC and DDR voting based on the traffic.

The following DTSI entry votes to DDR based on the CPU traffic between LLCC to DDR,
                which corresponds to 200 MHz. In this example, 800000/w (where w = 4) equals 200000:

    llcc_bwmon_opp_table: opp-table {
     			compatible = "operating-points-v2";
     			opp-0 {		         opp-peak-kBps = <800000>;		 };
    Copy to clipboard

The following DTSI entry votes to LLCC based on the CPU traffic between CPU and LLCC,
                which corresponds to 150 MHz. In this example, 2400000/w (where w = 16) equals
                150000:

    cpu_bwmon_opp_table: opp-table {
                         compatible = "operating-points-v2";
                         opp-0 {
     			        opp-peak-kBps = <2400000>;
     			 };
    Copy to clipboard

In these examples, 'w' represents the number of bytes that you can write in a single
                cycle.

- For DDR, this value is 4. Each channel can perform two transactions per cycle
                    (DDR memory), and each transaction is of 2 bytes.
- For LLCC, this value is 16.

## Customize perflock

Source: [https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html)

You can use perflock APIs, run a use case using different tuning parameters, and
        debug the perflock issues.

### Perflock APIs

To use the perflock APIs from the user space source code, do the following:

1. Include a dynamic linking header in the source file: `#include
                            <dlfcn.h>`.
2. Load `library(libqti-perfd-client.so)` using
                            `dlopen`.
3. Load the perf\_lock\_acq() and
                            perf\_lock\_rel() symbols using
                        `dlsym`.
4. Declare an integer variable to store the returns of
                            perf\_lock\_acq().
5. Define `perf_lock_opts` with the required resource opcode and
                        value pairs.
6. Acquire a lock with the specified optimizations using
                            perf\_lock\_acq().
7. Release the lock using perf\_lock\_rel().
8. Unload the library using `dlclose` on cleanup.

The following sample code shows the usage of perflock APIs and illustrates how to set
                the minimum frequency of the Silver core to 1.9 GHz:

#include <stdlib.h>
    #include <stdio.h>
    #include <dlfcn.h>
    #include <error.h>
    #include <unistd.h>
    
    #define PATH_MAX 92
    
    static void *qcopt_handle;
    static int (*perf_lock_acq)(int handle, int duration, int list[], int numArgs);
    static int (*perf_lock_rel)(int handle);
    static int perf_lock_handle;
    char opt_lib_path[PATH_MAX] = "/usr/lib/libqti-perfd-client.so";
    
    int main()
    {        
        if ((qcopt_handle = dlopen(opt_lib_path, RTLD_NOW)) == NULL) 
        {                
            printf("dlopen failed with error: NULL\n");
        } else {
            printf("call perflock \n");
            perf_lock_acq =  (int (*)(int, int, int *, int))dlsym(qcopt_handle, "perf_lock_acq");
            if(!perf_lock_acq)
                printf("Unable to get perf_lock_rel function handle.\n");
            perf_lock_rel = (int (*)(int))dlsym(qcopt_handle, "perf_lock_rel");
        }        
        int perf_lock_opts[2] = {0x44008100,1958400};
        perf_lock_handle = perf_lock_acq(perf_lock_handle, 0, perf_lock_opts, 2);
        printf("perflock acquired %d\n", perf_lock_handle);
    
        //Code section requiring perflock
     
        perf_lock_rel(perf_lock_handle);
        printf("releasing perflock\n");
        dlclose(qcopt_handle);
        return 0;
    }Copy to clipboard

### Perflock native test

The perflock native test is a tool designed to evaluate the effectiveness of specific
                combinations of perflock opcodes.

This tool is available at /usr/bin/ on the device.

You can run this utility as a use case to experiment with different tuning parameters
                for `<resource, opcode>`. When the required performance
                improvements are confirmed, the perflock code can be integrated into your Qualcomm
                Linux software.

The following code shows the syntax:

    perflock_native_test --acq <handle> <duration> <resource opcode, value, resource opcode, value,...>Copy to clipboard

The following are some examples of how to use the tool: 
Note: The following example commands should be run on the device.

- To acquire a perflock for the Silver cluster with minimum frequency set
                            to 1958400 KHz for 30 seconds, run the following command:

        perflock_native_test --acq 0 30000 0x44008100,1958400Copy to clipboard
- To verify the minimum frequency of the Silver cluster, run the following
                            command:

        cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freqCopy to clipboard
- To verify the perflock logging from `syslog`, run the
                            following
                            command:

        cat /var/log/syslogCopy to clipboard

The following are the
                            logs:

        perflock_native_test: ANDR-PERFLOCK-TESTERANDR-PERFLOCK-TESTER: initialize() 60: NRP: lib name libqti-perfd-client.so
        perflock_native_test: ANDR-PERFLOCK-TESTERANDR-PERFLOCK-TESTER: main() 502: NRP: resource_list[0] = 44008100 //silver core min frequency opcode
        perflock_native_test: ANDR-PERFLOCK-TESTERANDR-PERFLOCK-TESTER: main() 502: NRP: resource_list[1] = 7a6 // silver core min freq in hexCopy to clipboard

### Debug perflock

The following are some examples of logging mechanisms to debug the perflock
                issues:

Note: The following example commands should be run on the
                device.

- To verify if the PerfHAL service is available, run the following
                    command:

        ls /usr/bin | grep perf Copy to clipboard
- To verify the running status of the PerfHAL service, run the following
                    command:

        systemctl status perf-halCopy to clipboard
- To enable perflock logs and traces in /var/log/syslog, run
                    the following commands:

        echo debug.trace.perf=1 >> /etc/build.propCopy to clipboard

        echo vendor.debug.trace.perf=1 >> /etc/build.propCopy to clipboard

        rebootCopy to clipboard

## Customize memory

Source: [https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html](https://docs.qualcomm.com/doc/80-70015-10/topic/18-customize.html)

You can manage virtual memory using Kswapd, regulate system memory using watermark,
        and define memory regions for specific subsystems through memory carveouts.

### Kswapd

Kswapd is a kernel thread that manages the virtual memory. When the system is low on
                free memory, Kswapd is activated to reclaim memory by identifying less frequently
                used pages from the file cache and moving them to the swap space (ZRAM).

Kswapd does the following:

- Monitors the memory usage of the system
- Performs swapping activities in the background to maintain an optimal level of
                    free memory

Figure : CPU usage vs. performance using Kswapd
                    
                    ![](data:image/jpeg;base64,UklGRvyQAABXRUJQVlA4TPCQAAAvrsJ7AFULw7Ztw0iN8//Ry9puF0TEBNR//f/6a/nvSnLG7Uo3jzWh1m0yav0xqSqsu468LhKQ08jzJJUoN+qcZHAXSEr7VB8jrpHMeoXBtZnETV6HUdkM7OgaJwKymSR78xqSyBbve7p4Zu1kZ1/Js/frsou5ujN21218ge5HHzJOVRv0TUde3YCq4m7PHFif7nXpb0iUD+sY1/2z8uqvXtcxgoCgIqJ5Lo5VOX25uNQ67e72k23btTe2bZEdIAaEBqmDGfsxAPRwbKN38/2ySr//Xlw6iJEbxJ2LiZiIiZi8SG5MwjKYFIjKDaJyMxET07gjMfmZPFjNqB0XETExjRaZiZiIyZsPuhH9nwA/9f9Jtm3bjmrJlPnMYx7zmde85jVlypRZF+YzVeuY25QpU6bMbR7zmc985jWPqbqus4+x1957rbnmnaqQJJME8ffDPyCSSTBJJuGLw5/F5HFa20wmk84kmSSTIHJb0ggrmASTP6jFZDF4EIZ1afT2JRJMkkkwSSYB4HEIX3QWk81ktoj+TwCl+P8sSYp/x3viVd09s4/OaNLLOEBCi/jdKzDSTspJOUkl/whEzHXOHFcLCtbCiuBeN644KBF7byNE39DwPxUPH6VkUtR6wQcnbEx8jZSTssGpnBQPH+0kBSAHJzghhAQJzf+LFZAk/v9c9H8CqFjb/0pSRrZs2bLlyJYtS7Zs2bLlyJEtS5Zs2bLlyJIlS7YsWbJkySsvcWJVk/lzybCMuIA+EyU5g8yxzr/2Mmc8cgYWwAJQrIA1pFZkG+ucuwZyDoqDxeW4g5xpbJFhBWgWMOcU6b+XZgUsIIcFcK4m5yxzptVYJBu4l7SFuAHUKA4b4LCH4fQl7QAVXc64j7wAPAoFkkuOus8ExwpylpwzaSN/cthDKXK0E9dAhgXkBcRlDFBo29oSfe29xtegQeNr0LBB04ZNmjRs0rRpc5o2bdCkSdMGTZo0aTIJGph8zi/UWtvGNI/L6/qPUNkRkJWVyI7ACJXIyEokIyCRkZFIZGTq3roH1/8JwPv+33pLbjacMmVKlyld+k9xmT/Df4b/BJcut7zlKU95ylP+yl/5lI+i4/0VFzz3/H4z9dUNThVmUxk6irsrnRu+lWGkX8DsZ6It3a21W4VhpbDZN4ydqQ52ucVWHrm6Uqh0XLk7qyecrdZMoxOG7cJjHVMXzpThsX5yF9f+A4KVmXn1hHGdKt1sdWKmlcxchvlROOnmF7KuXFIZZuYbxueGzWWodOeSVqvUO1IY9wafzum2DO9odsJMI32CJwydq7UDHTNDZUpuOKfb0mU0twgzw4Q6fgKn2KvRhDkjhUY6kbYMJ52hCjNNpBOmlYK100UpqWDbVjfSvh6u64tr3MQ1bnCN27iJ28jKysjIyMhIJBKJRLKO3zGOdYwjjnHU8Z+Zq4ehQm1bHUn6+7IncbuyZMnIyJKRyF8ikUgkEolEIpFIJOsYRzva0S5xtKP2Sp9J9fR/ArA42/9KsqT97yZhwYQJAwZMmDDgAdX2WqUyMiJZ7SBptqHN7mmHHPTJQsl/p80OrqPtqGN9zgoapXRp9sxQi+oq9pBS0RyT0p9cHNLlf9imaIyNO24BvYbbZ1Q0Qemu4/K2Jf1Ijp9VhNrRcfSycUn/OMH4mZQKN75LGBRSFWz3g+PQ0DY4pKbZZgODklayQ3IDKdUKxhVt/6EKaaj36KKiKV3UUo6DgVo6u0gpm0atIaWmI/3HHBIbiF0UHYO9DzRbKNobuIYWu1BsW60lUd+LS1xwwREXHLg8V7ie/zDKdTkX17Zl0nPmlw2GD74YhmH44mAYhuHg4GAYtjZrrYX7ffo/AYUZHfr//+v/DlL+f/rfqcoXVP8X/mf/XtcvqIR/+T9u4Qsq7H/633K/ty+o/v3f/ReXWL6csr//d/4L+5H1i6nyP/pv7ntt5Yup+1iWZTnuL55EENCwLkutta5FQZEvl4AEdrvqjsNVdxtI4otmQUNcjtW59Vhi+MJJSILlo8b/yd9dZ1xcNgD5ckkSlLhct78uf7u6BkC+XELAcl3Ocl9XLm2pWUH4ornH5ep2uyvbv+uWtZDSl0sK6mv1//BAx1mP20C+WCJR4nIV7HYuG219XEYjXhaGP+o53krL1K8Zi5agxOXq+pZd5+6ciJfV/FFP4y3y5divJV6iXzV2fY+183Qa4yX1S72N9JZTmmlaLVoK63J1hbeEtfVxSdGS+XYHRN5DWpehREtqYyjou6yUTLysqgK8BciMCPo98XOS9A5JFUVLSRKQ5C13lySPlkiSgPRWVSJmThPe5x43iYik98XR/1///X/91wG8Cr9fYRvTjCzcuhIVSILIJMmfjgACiKpAElUBERB5oEASSaCQSD+cgMgbKj+EKCRIb8kj+TNIDxKCgHy+K8xeArO276GdtMJv3JNEUuKxKn/CIinxOKUEkB5BkoRImiRAQPgjikICSQKSfgiEqbxFSpJE+TMUFUhIIoHIxQ6ajfA9tJNAFH7inncKf+oiQBKAB0kSb6ogAiRASH8kBFIChGn6ARDVPwAB+TNIIAAqIJ/13CyD+8yYnTTuJhGRRyron9BUBBWmIiI8FKbCmyIJUpI/AiCTxz/Iw/SOP1sBEiCSkvA5v76VxTe1HREQuFdABAQRAPnTSgkEEqACiCSQNHl/AtIfQQRAgJSS8IenlECV94ugf3oIUyFJ4rO+VttnYe70BHUPCUgigKTEn7CAJEBBEoiACNOUSG+JAiL8UZWpKoik9ANIEkHkHSKShD9L0QkgCZHPeTbEZ+lr7yuQrSdQBUmogv6JgYVgIIAkSWAhKCIIpIlaCUpC/giJ0YeOMib8kAIK6FtJSFgZfwaEPhglgCAiFzvZjdhQM2lua6t3od4LP//dVFrrQGlrV/60FUa+i5J407rPhkBKaSJqZzZA/yg5dsutKMIPPHoAeQsByur/HHLctK8bKCQu9nTevn1J1dN6uLrje+HPP+7AI7E7eeL+AkNxSj7R/M//Npra+fGxmqI6ETAFRZWECKpvmKGgEwTLvqtipoiA3W41FAFQBaz5AWA6UVQfSAJUFaD95247662gCqiIqiooqihkdw8FUAVUMbY92kRQVAEFVZCJqYKagiqIoKqT9i88934CCcAXOnRX20Kai9W6PLvCWbysDMp5fCXgJbF74Uh+1fz8t/6bge4+nquhoZdh6Ahl68PCVhRBRymmWAi99x4QrAcFrHdDw3b3wYPD5V4Uwaz0oTq2ohZK6cUQbPQeSiABZj33oY9azYqVHgxBR8ndsJL7UGydrxxUNfRiCBZ68f/5qKBo6H3rhmCjlwEWQum9lNC3btb7ULCet2DK+WgUQzRciwh0eatv5SPHXK7W8MfpfIvrSxq+EoJ1Jp/o9vq3j8792mszu9cY26ahOXccsV3u8IPhL+fWTonOradrBvnKk5B9GT7GuHad5OV1OHcORo7XFTfG6nXExV21DR3+cperNwjYfcUYN3uLsjp3+YH667rOPrY1xus0ix97zBZ8jLEVLEd3LR/rg7DWwx3rwHJ017XpWA8XfTtcPGprl7tuI8c1Xt4454nvazZsfdjIyBc3Oq+Vx2euN+vHr1N8Ct6J2pLJO18PKOY8IPnQvL+us7e9Oj96dK25q291rtE9X1d81a73caxuWUfe5+rzUTcdcc8koawu92U5b18Q0Pv14da6bHTnzrWuo+zOyvzNrcuy6XbUuL6+rYBg+Tzj7sJboy3Heixey7HH8+7WTx/3Wiw+j7OP063tcmfYXI3x9W0i9P2fubbsG9tR47VcodSP2rb4/RWvea7rNTtja2fcl8I53w9cLJT92wIhXd7q1jYTR9uSm1Mc3OaBMO/8+QkOpeBCyy/Xjrgezp1lPc5erv3ejv22/LGXcB53iDVbj8eW9+pNvVtHPq4CUNYrb/txl6EP/Fz78Mc5zn0tObq775f156vYebTQFq8lPlcFRUPfzn3ub/UrdsuLC7drQ02x0n193Xou59Bw1Fxu53pb7hHiMyIP5m5nbcPvfoTm7l73c+j6jKVfz2v0WgOjb77OWc/n5LRzOc3Xl4IQLu9abUuvhWLLV6dzdGnv5CKc32/M+fMLSMDpBs2vNe/P61zd2Y9nva5lydldhf484HatHHtQ7sVvNQYYsW7rkg3QsLptnLUeZwDU7uUytive8WOPrlbfl8v67owc1xJfHb33qCCYd9f6euZHx33XUwn12KLrKFiO7qqvdfjqlT5/uOj2o8dXwfwcVUmUehj5Wsv62tBc1+5cgbbf2Lk3zNWi+Yrr/vRv0fe4HdcHkrjEu3EMnmNh+c8Zzm7lw24J4d65fnIpfOmSfny/uj/O4Ga3tuZDvtai/eXQfK3dLQE7d5/rOkDbHmsNKkCILuvI67F7feQe5Pi9nuvpQ1kuK8sx2GLs697Rc46KoJur7d4/7kc138dphOURMNze7mOO4a6nEV7P2FrbRtw7+ghKdcZ2rX19ZfSubTuugD7wx4m5o5drWe/6bDbx+8lwx/VqBY0ubrKbj8FzLIiN6opvgnO0yGqPmrqd5QGTfKr5FUd2fvjawulaD6XYfcVCn52qd2touy+3cz3XNQBbfb1WZVJWd1so5XxGJaF+nnNYF29+jyWEomVxVnZnbC4Wv7Sej4/1ga/Xtr2+v6NHl4vfo93HtYVhoe69HM8r5HptIxz1LqEMO/fWt/o9KqC9HkZ3sfh97Tm6rVQX0HXPmF8aw9VtO+pW6rfV/PNW/zrRu37Mt0V7eROBeW0svhw7Rqg2ITxXrI4QGSgMcPDkw69fXsy24Y9mIdbY1lb6g/1S/b1rYXPV1cVbdm0ojPbt1XlY2rX1GL3bF3Dy0P06zd105XrVeK5nL8tlYbmULcYe1noc80dTQbQfe3TPOXPu2dqR7V6qq0fW4V6utS1crxj3eQ0h7sdt93WsZ/OhXMtxzR/NBj7u77effj6s68tyHMs6ynEFaA/qyYiul2u+4jyf5l+evJ+qo/7qCoh9d8UJbcXD5c+t+kZGSX0FhEw++fr91TbW767afYvrPUbOxmgZLbmrbWdsd9Byb6aAf7qBSIKx5RDOGNudECI15/NpGTLWfVvXPOzMOs5bCTkPLb6tx+IVEpbXdY0t0M9imw+Mu61tM7T7dT279Rbjem6m/Vyzju1c17aZ9TO2dd0wYb+/F+v1qerDr6svOu48YGsFLb5j+R66xXWNrWtvnXJ2UPf0SuxodzbK1L4LNbF8kEFY9WqT2zwmsQPVmXyRdyFQMwMIvRiYgQ5D1AywEBR0DMB6XDyoAGqmOvoWFFVyLmlMYKChFwMzdAzFhqmGLa9HLJAkoaGHMRQ1UxsKOoKBCNa3oDBKMVMFDUHBSg8GWAk2DAGuAlcZNAQFNVOwoYiagpnB6GWYYkOxoYxca4Do5ewkYLqm3FvtViGzcj4OXnLBQQFUQRUQQP4PAiJMJfGwx9oCSQDhncJxsaOAKiKQAGEa7jUe1RuACCjvFQAFEAFFEu8XQVUh8XZAjCOAxHsFEEAB5d2W3eHtc95cFmI8OyGwgLpqD7xin5HKkIZ0hQR6AMKbIgiIJBKIqqQk8qB4H1QS04QkJCFC1cDBnWpiKpKQxEPr9+m78VAEEggIIICqqgACJEBAH4gKoAKQRJKACBJFIhIEURUQgZQeCQiAigiCKIhg25mHftbLGW9iDZMIcweyyTrM+fxgSH4BEkBKCRLINPEARBJTgQQgjGEgCVGAJJASlGsGsdV5UxKQAEQFG2GoConENCGJh0kAAYQ0kYmICiQREBKQJJGYioiQIojEWHQibyQhpcRUQAQEtYHK5ztoft8Nj2mcf7E9iBF2R6gKztfdJSEkESElkkBKTB/xtgCCoAok3kBUBA3LUgDHwJA2Jd5MILwpICSRhAqPEyiQJCEgAiLKQ4XJe0UQAZBAtLJQIEkCSKAkSAggIgrCm0kAQcjdnX6fGYcN8wTgXO+EGrteJpLF0LC7wyAgAQiACAJJUBIJREBBVIWpoDxWQIARu7kgqgIcRQAFERABEHmAQCIBiECSBCRAQEiQEkgSUBKAgEBKJBEQSCQwgNL0k/BYHgiSJo9TApmgJEiQe622z7eThkzO+fXDvvCK3SHRhXGOGTZPyIrs4Lm9KSWmIiSGn49tJo70wJjzeSxskWVVhLpJPAGnAET/BBLc+75mwGIKBWqy3dMK6SmxhYtUb16gP/gedFvmMxNZpIxZcOG1WM2NUDsB4BDKeTyGvvdqP+Z1gFyKKIRpaLgju8eKfWbO+xuvxkrZIxGu2QWqDh5NUJiEgbMeTRa5jafU7gMM4MiSKSXGOruuDwSKJrgGGqiMz1khPbsjVoLqj2DttXRIAhNONJEDOKNxb4o3i01uRMYMA+uf3MueDRI4oHjCpKFZA1HZ6mjFHvnGtJE61z9QEvRlbsoDqeQAHKJkqK1kknZ9+fNT0AyAgPcnAehuXgcqiORCSCEKSN+y3W6VUf9MEQL0D4VEuJ5XQOFLDAhwYD57VFa92M1GRKBpmEKhP6DCWF+1IILwBeUASqQ4QFOfZ1DFniT1OxjvDwjmX0tW4IuMxB0ScDIHfrLANNBQR1WsnlAVOfqDgt77fisJESRJLuh+ypcYELDcKeyGlMkknI+P/gGa66spgIgIkgshAuf7IYTPzBcvUj7QSgzrD5Rj/t0gAQlQyUXtDtwnLR5vbpVhNDTdWhLaV8h6j4g8CNfsAl9iHgK/nPMq74voxEsBEKrE7jnvPW+O9jo6iHz5wT6YMmeTdSKZzVjM8HySgfMNyFN89SJFsHOuWb8ICZhZyL6wsn3mVKUMUICA8iY0Ly+vklC+/FB8yNHGW81GZk1Th1BZAeY9Cf539Po6BwLIFx/QFCF9R/uqDKc257RIwXiQJCjHHP+Bh/rFhxQ9oLGPHGrXy9Gc9QP5HhjuPaAhzq5AAuULzEMFBq0/fl8Va1ALmRZmTAJOL7L2OjYEJIF88SE7hcjQNAh3E+36SphNM84ZvDMBMjG/75nP0AJIAkTljZTeUJCfLzM8v7NFNKxuU3Z1OcOFuEbKQ4QECdV72b0hZAoQHqq8R/h5mS4wyCKc3+9k0auyGnK0CRoisQXvABFE2eqrDUjkCZAEoqTE48R70s+W1C10yyImUR0vrnxeG9NG+t6RkkAiXHMckIRIpQRJQASEN4Wp/HwRTBkpKAINOxnFCKvbiPQTFoCHgKBYnF0hwWeoBCC8U1J6QJooP1vARL4gNM2DCk9aLFuTdN7fjfAUYLR56SDCZ2jBxlAgCTqCIW8IjGA/Y5QQBbYl5qxH08QDUe4moOAdomD+tWRFUIQ8ocXfAwHBfNv0HUJet58vUmnBWYoZIrzV3sr2rIdw7h2A5mU/FRE+T9t9XAUVBF1rVpFJAmGdT/vZUntmZWRQn3QVGzCa54AcE9nWkUAgVXqdT+OztZpfagcF6FtQ3lRYvzdFAQFJCAkU1YlMVEEUAVUF5IGCoqiqomcP0kQ4qyXlpg2C5yBKDjyEav3o/wQEUK75d4HP2OprPc92BxXKZoptbT23nI31Gf3a8kCSIAhoydvd1jzAyrnGthmC9jO2nrOB9jOu9wAsr3G9x9kjsPKtlTdFRWjQvYDCOBchWjHifAQ+a93LXJd5WQO2HpvpVp/P3e1HYP1Yjvm1eAVBJMHwSz3mj70Nhq/zc168QXHzc3GvpaObe83PvQ3CWV+v+ehnT4+msS8+yK6XmZyPd0CqlOhE60pCWHvVjqTPWvPfHq3V5UTdfGtx8+Hb/utcdP31w/n1VTspIQKM+O0j+nWeb7Ut57w+l66jPZfm668fmX68Lt+WvY37qH7Ldzh7OBqoKWTgdnUZfsscspTSxkUBgexfewbl89b30/ScD9Nr9nbOe9bhvs2B9usra6gvb4CkR6+NcXyPATUrfv7wtu2zV23fPzbax5FtrPNRztfSQfXsMYLR2Be363XEfc5p4DJQAq/L7A2Rz1iifl826M9F1c1e40cccM9zoX2/ArbuMaDw6Pul4OejaPBtveZnG+dcO1rmj03dr7WdzT2X3o/dtTw+faRi5tnJmY2we1xdGgUlpJsiyR9vext85ja/HAXKczd1823u2Qz9+9ersH40Q896BRDkwUdUwb/qFtbXfsXXvIZzdgHG/rHp8TfPWpdlj0M39/GxrOHsCVgA5/pFqbHJUrG5o6nrghKB3/qREOv+j2sA6bOW3nXS513VvbzG5xVQ/3yFiWJtuQIJFAjx+6Vwzke59+UOvX6s4X7VDmX+2Lj+uvh851xUtfi2P/3ZU+IQ5o7snq/KuvBtsRSH83iUXCCSAFGFEWe3DAq5YJmvbvKxmx4vb/drbmGrf32ViU1cAJWJxV/nruH4vtr54QZ9/jWOfnzE0K9fn13bc8+K2tARVM19W88exgGzwZFDbbLe5yQNIZQLEiQRAay96mbA4pJtfjk6Wp674l63jfW5R/f66ysQH5z1CgjIZP32/fJxnjfysjR/ff+Iw9r8inH560enu7m27M9tbO3ud33dZ0/KSMbNHdk9zneRzw5ApFwAIgKgft9vBSQu2rrFtUCol9Lc3xshLvVwH3vgrLeiOZ6DxzrW58stcz2N4etrPw7njdGO5bo+nh3tcZ9fu8sj19e+uDbOHgQSOUwaZpNl/JM4n3eeaVGuUGGa95c3QFy4dfRioLlD6QMYW87X6wiELaCMXhQFVRhtvvLZNgMstzP3Egys+9yecwHCvcaWh4bcYtsGZ0/ifrK8bmWcmGyfafk5v5ixBQrJpwIikujHvBrIjS5ZDxMoCICW+87r69UMUAQUNTMbwzTEeTVVFFAFVIHhfW7LfBlT5b366dPCoJnz+JcfwZ6VXV0/+BSN2vDkQydQ3BwDEAH2BUwASZN72fePjxgQEiCgIXt/3/7etrafChNRHibYltf+/HCbqiQeiyBCkk8fJOAUAqXfMt9EWrKz87ocwA0CAiPOR+FNWRcsAREQ3hnOtTUfAARQsLwex+GOI+bNd94pojKxu62rDwqCJJJASiDCp+StidlS0qAEZz2aRow/pzSYC9JknHPtqiihm4tWAhRUAUFQGwYCAoiAlez96f15B1NVUJSECA8VNBhTIf2TgCiAgMr5UNZ6rkRSwIAUQoQhQuA9vuni4mQZtTHoAmepTgmW8cMaLEgg6alRUCMQVDH/2m8VEJQOidJoIClNkrkcEyCBlCZpAonSqFFQjmRgjZJGA1kdAQFyKBORAlKaHLN6Sq8nn5eyVBItmRRKrUwiAgIqSRKggASWepGaDJJeRpEUkKQENJGOCogIJCQBKSXeL4mH+hCEx5KYJkmQeDtJeggqIAKQNFKa3HnpSkAChDWDfdESa3nBt0oDDUxICYY6S0onkkJXAdII5Dr7QZrMR5KSSApAAgJIAhLTGQUSphNJylCh21Fm0hFDSUmTRFJopZ44sQSSwtFIUi9RphQUOhPPF6lSAowbAEUBEBEgTUKjMJlANAjTEkhK6KYJEMlAIgkgJYCUUnqPSJoIgIjwUIQEpJR4O00SpEf/9CgleEMSIO78vNb1mpmVmGYNKxleGTUn9GwADPp9iNQMJSlRjnk13p2kmW4ipiNlSmoi+h5JCZMJkZrWZtrmJgMBMR0l0lSkcNyAGCeQNK0NSnbOptTOwWlsti8kFJLbxR4CiggJlIfKiUU30lSkMK3ngMKsngUp8e63EKb6lkz+mOkN4d0PIgCfCSW39shVO0XQQxapkGZb3QSd6Trxic/zPA/R1ZXxAYSNbVeVDXTk6ttAuWY3sDcNkQC7+qYb/XBVlauqE5Br6B/quYZWGpCrXFVlQ0euvj1yVZWryiJK4+qbVkKuvt0E7BpakI6rbwUQyFWuqrIFSODq21zK31IqsXsGzd1yKSZ1TOtYTIOXA/M9baY6AdTMzFVuEpBdVa4qd6Iftl2tBenY1bUFCHCVq7UCkkDtsSpvqZmqmamKSEJE1MxMzewtUXtTeQN7UwVSAuQa+u5rxrLaXSYCarfX2oUJb0XIbVVkVBvTXe3xYm5vtzJYMLdP6cpUC669+rsAFFyrv0uxdT4KFkoIoYRVoB9N7dXfBgFyrf4uEgDXGtoNuNawDBDwXv1dBhRcq79rVHv1i55rr/42CMB79XcZBXCtYRkgofbql+l7r/4uQxRcq79rMXQHSimQtMeUiSwkwlnUh+XCWCbMS0/j1YoBqOoIj3cRAbjWsNxI9hqWAYKrVr9G3qu/y5AEsBEejvGWjfB4KI/VwpumIpJAbYTHprwR3rT/lUASwbX6uwCdB2WdAg9+nIrVUqJSunFKu1WAnceLT2lvr+lZxwLeI6u1V93AwsPRRDnWHugfSG/PhQMAAe8bouEACFw3B4fS1AQgMZcJFPJgjZZPVVxUTSTKhRVKrJiXBfPScv/Pfnv9rhuA2nuQ5nYv+nEI5CM5Jj+Y/RAjhBFCGKakP4j0h5lC+qfJPh/WlF1VZQGNq/YM0Ljhq5jYNGeOIhziEJnGjq6ujA8ACnaVq8pmIFff6O/3/VZRVTNV1bLoyq4qV5UBpEiuvgUEkGuIeriG1kB2uarKHsjVt0d29S36dvUNIAlcfQNIINfQAgJQQ2sg266qsoEEcPVt9KpsHrk54tpEKEYWtLQluetoMS8Lxi//kf/Mt/3yBVAz1aoygBRkV990JdfQAgLg6rtJALu6NpASoPZY9S1Ve1MgJUREzUzVzJTHovZY9R32piqQEuAaWnfekOlHkDCthcLK/6BMGkJMoblpgP0WR50l+pGIwvS2v7whCCioggKIrgQoSABhLBOJo4kSDiZEAkwriSiMLU6pAEoYK0i0oq/GBsS0FJABTDchCUh0E2iGFuiFANJW2mOc98U4pT52gEXKef7l69ff/vL9uPtQQOlGnDYS01KYTwJRANNKgpR4d3pLeKdIQgBUBUDeeLfySHi3CBDRtzkfWklmhObfZJHNIld6ETQ0w3QGpm4/sCoK5dsfL8VnvR/k0YqZ49ZVzWSaZVzzYtCN/uPr1//E19/+5td57QaChCwur/UmJBJ3ADXZ7tla9kVMboCAQv2rAIT4x8sVQJ9vvQGEyvxwVKqqhcxr+8Q5NB/Xt9++Tn/5th8+KERcZOsPpsDGLjx+KJm1sx7IZpWuPxIwfjd/+/jv/rwrFaBBU59axWhfXGsad0Aoo3355et/7OvX/+jXr19/+V7Pj3/mQpsECwQKCz2nXV33RVVGSjCRBKDmX/uTAZHPuQw5/A7qc0yIyLRFGbV9ZMCWFET9x29fv379+svffPv2t9/3xwXIlyeZkt1KO9dj5GFWRRY7iYHuAfWfRPR+7b6ABH2+BYWSztnGRxiNzFtMqjk00BMkti8w1m9f//XXr399xfO8+9UILlAG3SoPRnXaV5ysz0lNblUJOE39gW7Lsxlg8VkfKEZjjUvZFmHMsqFR55WSIgml/uXrb3/5vq+FaS5TAYISwEaPvAqrWRcey2RSlGNeBwqAPuOkYo22C79ZRUlMKRJ3g0Ax9ACaX799/etcawsqodXlSYHnAKadX3++d+UMj0dxmM4kCNfsCkAkos+3FsVIajHrIsvWZFmXNoFSJTBIjPjt6y/Xtu5XUfq5ONU+hExq6AsufgRAZEPn8UvKYh1EBEQQeRTWuXY+B3LwuaOcVlH8RRIqalUFwvHLb5f2uNfNHaEAkYgTTWN1dk8q9ijOHEJkcdjDFusCkhBQpmrnq2ZF9fMPoKnFtN19hOLU5toe5+dvVRnrcrxvkFASLqtJg9FLVF6Q8jCBIiCL4mGLqJsAY4CC/n5/eeWzYIrZoUQ5n37GGGPEF9Rd0PZxGAy/fP21LANRLlMNlPvhayGDPN5gVA/D8A+x+zbAep2bIelzAJscN67p0+PG0NRNXRSEcMWAYPn+688rJHCp4tTvZFJWvdzuUXM1YPkA+nFNSn3FwVQ+//B8UcGnvbMdEkVI10USoH0bCPDx8uX+yYxFnljuqOPLZNYbNEGYzWZRF0kw1u91QIhPF0iC8Bmw45B90+JKTwZFqIMwFYYh/O9gvXz99k810AUK+KJFyk95LJ64g5/NZrN4j8D2+mUZjDbXDpD4HPjDMSH3FuF8bg5RmyiIAgqSROT9+OXr47YACeLUCpM+ll2tlSUyGSCLOosk/Levi3LuS1ZBBdDPv7OPUNIW14qkZhpQVwFQQCEB1Pvb14dyk8tTDqAI1JVrulO7R6rC4RqMKmn+liiU4y9fl7Atr98bAiL8oILCMBKQJCEgIqAgIIJOBBBSSigCNhR5oECSRwqiiICIKkkAEUmkhKAgkNIjeUMUSQhJBARU0XeYoRMBREgC6eXTG7yAQQJO8IFxKaZdme0zRWAo1SW9CujmlqtDAgSSgHw2YkZnxn7zgYY2OesBIQKotxLgv//2dffHfhpvp5NA8B0hCdOUQEB4mEAkgUACBBVg8wFIkGSSJmYTAVEeCjoGJIAEIiSSCCSRlBBFlMRUBBFERXiswxTtObwlkBIgg8QtZFxCodlyMcpZZCbf8jmQMuh3gAjld68jK5IEEZIkPh81UARjiCs3XrFbXIhBYIbNd/Zd5n77+vVjn69/idkwJYnIaTQfjakklGkSEJmgAImp8vb52pQkkHioMLwvpjxUQQAt3hdFREFBEBVAQQBUQEAVBEB5LKDhzAHzrQMokBBQQEG+DWAyq/S7x5RuuzLLhMlAb3e/E4EEoS2LNxCAJHw+4lxJNN/WCLu+LT6WQwjxHt1ev/3jb3/526eL11GPMyg/aELQe19BzWCUYGqGmimoQShDATMdQRUBC7Z+ZJBEAgULPRBc9UHREAwEVRvBO5eHQujFABKomoGaKagZ2FBIoFYGmIGaaq5XHtbz0DF0DFQURjArRHQbhALQQWx45Gm/SGJlEiX0e0UUEYY/6hqYSgL5bFRIQSp+sF2N+AxiMksJsLdguL/57es/fv3l28evf/nlr3sL/LAyyUvTcN/D8rm2LWzbsO3cLGzbCOfa/KaE1lo7N0X72c7lOWGCdt9WX/oyuzOEfLbzHozsz3bG175uoeS2nl1lEjbfzs0s+0I4s9nmm98M7f5sPlj2xthy8fPrymPLQ7fmz9UH1PLazvXRBHILeoT6LdC0Lxmh2Be3rhGHBasHQCAJtrk9FhAVRPhsJHU+YGb0yIkr+OZGSNP6nvL67R+//puvX3/77etv3+o2QAU5VV1Dq23c9YjRby3m4D5cydc5cozXcgTuj4/D7a5rd7s7vn3fEKZCOPbYWs7Ls7ZSWox19xqu1+tq1zy7e4v1WmNWAL0Pdx1HN7+0bV28Zefccdw2rr3GthW3FMJ65XOe3V2i6xa/727ZTxt+Wa7l29sG0C1Q1YhPEcGnp/iL76HzRaj6SAAJoMSX68pD+WwEkYDnnZeQIybbHZbPi5rcAM7eYef3/8jXr//667/++vUvcysKiCSOJxLkfb9cGyHWtZcxfF17/dulrzWr9n7XV1b/fb+3dqzhPFrPr+95IpDoS91CGMUtZ1ELfVv3GIKbjy3447hHPxZfSgARxlp9adWPftV9X0OPMZe7xnC7mEuwceyBEo+cF5eHXbXb8S1272Lvl7tL+/b3BQr59ACFyZY2Tdu2jJ0FBkxl+50gAkhCNaxLzQEE9LNRBtlUp2ZDyKRssv70rY3WXL+j1798/fr13/zj16/fjltBEvBDAEp+/fo6B3Y7t+ZAOY7bPY981KDlbK0+vd7PaIR6bJcLqte3W5kIjGuJrTOi2xTbfLv2I4dYb9hiLNh6XHEzVdBtea33tcSiff+bvZNfy+rby/XLbQDmlqClua27NWCxbnbMG+F0+d4blNfXbRn06WkGWGmPStkXo2j5xFDAYNTDVIXEdJxLPQOS+HyY5JbV/mjDKzf+xQASyET9t9++/uPXr1//8lwDf0wVRfPzry9vYPexL6eZm694XOvrMG0v1+pzNf/RwGrdDhfQ+D0jIggilHVZrlyi65DrEa9lv8t15UfKOOtSvalgeX9W5y4fKPuvtZCf83G5w/fj6I/2QIjH1o8Hx2buVRhnzffrhLD/fQPhFuZybDFLu7bdx43tyigA9TVVBcHysqwFQEjyWWlOMgqrXqwOj5VGDyokgXD95evXf/z6y7d6DxD54aaW9/2q3tRC8cvRLX68Wl5fz2jB7Tm452r38wi2VVeiyxrqtxtICKAWtrbH0txttFcrd93vfrmMbvHYFAv93I8AUNzuQ+nDSqzz7m2rzvfSx1idH6bYsXe7l7r169rUrrrZ8QqMdvjtiGXcz6/NrTRgLTEpp19wTbaLmV4FzABPSEIRRMH6tbuuCCQQSXmjhnkGrWqv1FUwEAD1z1++fv3627N1BUh/HM1L3K56hnxufq8F//HttPPb89Z/cHPzr49o98dHXGu9Ldfa4vdvmamAFn/e6+sKvtYztPny1/zy5bo2GO3ltn6e2/msD6zt1519D21v+ap3OI/L53Oz7pboc7H1dbXjo24hLi6Hq3Zzr8I4Dz9aPWL99mWT2yFBoF/S7JFlW7IFSiHM5+evv4cClHWpt5FA+ayZdGZjS6zlQESERsZjc3/5+vWXX3dvIMIfvUdv/Wr9jDE6b9qvurEtroA/nKvHbf5jvtzRho7TObfX/iABZXUxrpuG5tbeo3POXVs4z66i2+X8trp1dV4hoX29rhhzb7HTLz/Kel3Xlc28c7F166tz7liLbtGdxbei7QpYXjcNp7vc89tGt2VgTMm2KGO2jbMACJcH4IdIVhUY51K9IQlA8kZo3MCB1rLEEIiAiJbX169/+bg6b6Y/RhKsDDSUUDaf+wAr3bBeDKznrRfDP9e+FUPUSu69G0kEkmD99lsArPdhY7u3UsxCMQQLvVjJdw5GEkAtZN9t9GBqpZhayfdmYGHzm6mNLfcSTHX0biOYlq7oKIaG7Y71V3Xy6fGc7VOU4cHOaSBFAMIb8JGcqiAAluvSgqIg5AeT3D6GLx41cRBRoQYluL/9+pfdDxREAfnhBESABIqaGVNVEgoCqKrCOXs1SAhqCiAqIAJqQ0EENQU1BVDloapiwwAEBNChoCCgCtgwpjoMQI2pgIEiCgKKdb9e9XoyAfTpGRrKkruf/ezTwPx5H0qp+hNQAAE0u+XqKvI5SWDCPd9uZSZnPQCE7eO3b64roKCSJP1RkAQkHosIKiDyQJKAQHYbiAqoggogAgkwAxCmogogCRABFRBAgAQiCAgJQAAhMVUS7xUAAVGBB4KW83dxzYVAt4HbNszbNlcLAORDKAe+k+CxCCDQr+qyImh+4LQu4NTmi6zYPRKTQcHu5/c1gIgwTcIfUQGUJKAigjBNAEkEEAHFyj8wFd5MkADs731XZCIkABESbwpAQiUhwlQQEBGSgAAiJAAFBBIIKSGCCCCACKBh66bcmlni2p4kQnFqFzgwP6BUKQmSyEQEBMK61NtAcjaViakKFkoxRSbinhTD6MW/fOhMNLQcgIc/7nLSOPgUIAPU5MnKQ7G1mwYTr/6EW2pOzBjdgzSDrZAeeUxM8vegMFGc4N5x16UNUEHk5xgiEG7f1e71imc3/sw4Q+aOjly2zoyanAZDV/uLZ+A1SQ6AJElw7Z+WDNoH/eSTTEFk0Rw35tP74tZt38jAPWrZ7bHwpvwsG6e77pHdsu+1hYngKtDUR67qk755LHLQGoAfwlOPCQIQ6rtzQuzB2wOG+YGOz4kJPi3KmB2r5oa5B3S7drcpJH6OJ7Ds9iuXti912Y9skP6cAF7KXfur2tX1ORdCAk6h6f5V+X4I+L7vHSeUSVjv+hEDvfpur1CJLUDpPVnaRRdykrhSo8ElXCwQ1v3IA/lZBoSzLq1v136sa61ngJT+jAQkz40m1O5sBOGOpkFxEiKvAMD3Q3i6qrV5ulK1cNH5Xhbgh6NC7C3Gme3izBDIuinBP5xLPQeo/BzTLda4BX8ssW+xrkWFdycdU5A8Q3W6uPmO88UQgPIBP4TnJnkX5vd9MMBFuIo8WtFoW980bfV7YhAqcI8wNX8ssfDzXLOr5wjrcngLrcaugLgIkNDOegxb1U9/8wTWOy7wwzAE/IyHCbotr9sqhIwS3Qw/HJOq7TctHzsgUGLugQSKdrf/rivyM4ztOs5R3H5lDevxSN2jkTNgE4jOw8ujbooxEYQhvHgqQa+vZoDhUriUANnyJ1fWNpcdK1OdnGsXKSIoWuLusvGzW0V7rNe51n0NbK62Aon3Jp1SAEzDB5MzL//5POmGFgXPFkFUBChujoPw7eC9cD4/trFcRqMLzj0JmjEwF73zX7al+oH8zALCWRd3LPUMpdV6jj+7LIrS+fergTI/vLzITQHSu1BJgBDWlytI+IBhMdvFqODbjnFBQk5jSwxSeYBivtYWIImScqeEbte+v5bY/+Guy7EpIH9G3WGIoixwZz3IpCrjqYyslPcwEAGszXUDDR8lQFJfsm/2qZMNehnyXgBoPpbfdVBEciZJiXFftV63qT/cGZA/r6Lz/LWRwxaLACc8HGhnZNLUN5PyrsRD8/ueVZIE0JZa3iPG6LSlfphD9ip0eoAiAv3a3aYKmjM9HFu+t4F2fwedpOSiYnEjhwVAEb74OOVnpiJCeJcIJHTbX15BCF8Gkoel9Zr74trOguwvdHdn891eAAKlLcvvTfn5rWqqNhREgD8jAXQHYRZ60j1fRYXMmqZuvGsq9GNeDfk0YnaoUcHa/s/2uQOJ7cthuxUQuA/43wlCOJfFD/35JCKAjtBztzEh8f7kE8r5/v7wGeA7mxVw3t8+o2z3SHRazNsI13MNCOn/LOHDZ/7rk/RdR68BJFIpJT1BFMC2+lqD5kxAQnu7nDtDv7sBiPwZaaGUCuaHweij/fTEpmbvEgSLsyukhAjhu5id2jbGRCnODcMCqSkCY56gIAJov16u50wCWI71te9r+X2MeSDw5zTOmcwXfX9lX1/UwbRmvFN7hwgIgJEvd9OV8M0AjEk0W8Y89rZjxtBYDcUJ/T6JAOlPJ4kAiICGuDivgP5ZyAP5ZEJF+7XUo+4tbFeNBZLojwAknPUYZjXLVVDqehkETF54ByRJomC2dt1qYdSjYAbO1Tav7fzMRtRHIonIn1ASEUkgAuPcDz8QkD8PlU8pwe66/O6MdQ2h1ZpBRH4MFNLXbvdYsXv+xQwFtEB5ClNZOz1djAAuFWQCTo1Gy8XfbNvwuzPUdxL+5BOCCOaPvQ3lzzLxyf0vW73+PvhjHbrF6gd/oGtECDb2PssjCHczoxd5VfAQ4fFYP50yCh+fcZnSmC0m1UmObbnQCGHqIUniTzxNBBVEILv9KiB/eiIP0ieToNtVW7AJpR1r+bGQppdTGa0eK5/xxRCsxBbwDgEF0VLfzYkQ9llJXjSaVz5v24wkVgqTQj0IiID8KYmqJEAAVfq1uzz4008kSSLyycQf0GONHeTHADC9oL7Zi97+UEptWnNekt4BiMA43U0jQVxikFl8jqVMXxWjcevTYN2y302T8CcsAIk3RWG03XX90wMRPqVFtKzV3f081vA/87WeAST9KGDr+OB/t3osj1oZCkjcQXmIQGKcd30LFkLO45ESEg7cbRtX2hdV0o7FIJCqHlT50xaUhyI81uFj/rMggX46IZg/Ftdidefp9iObCu92D+vRijnr8RkWWQYRHdNGtDAPmeq9dKshKYDMlsQ45O6oLTqTM3L+PJAzhvU7DcVA/4SwEAxUQJIIJEF74U9fJhbKJ5MIlHVZ9n2py77UVuDHgSkhts6c63E/F1f5jI2ZvNYeIAlUEBV0W15NQRBCgyEZ/nmptjWdOVIATL+z1gLTJPJABYX0liAgE0En4fYdSIKgqDJV5JHIG6KggAiEoiATBRVIPNRyedVHSdID1UcqyCcFJKyvx7Isy764tRsiIB7QDdnJcse7pomDiIppAw+U/4MAiWmvr1bAwqgVQPObRCitYrjkQCS2IMFkvwvXVRQUVM1QVUBBFVU11YmqmepEta+/y5BIKFNVVUDUbIKaKQKomYJCaDGbCqqqgjBVNVP66wIwU6ZqylTNgCTyaSGKltu3GNczFwXhRyEowhiwNBH+mUcMG2KCrPuSpEdCuZ5XACmQdIaTWKJSTIsIRlxMw8+jtVAPx9H1f1b6sOKbDyMUpWyGbcPC7XNQzEK/76AItt3ndWV9AAIh31sPQMh5KKiVuxtouZvfTIG8zO4eaMjbYCpouZsv9DkajJwLKmi/u8HY+uaLwadGEkAtlBKGAgqk5D45P6QRGtRVe5R2dSHtdpRGeMBDEURtnV1RMwAPIAhOU99chOFJzmn9EEFeM14PzpXg13tsa4xtC+c6Rqwb29UtrzG2biNHd8WYldCu69jdRgIEVLf1uo7jVsstXuumGnKL8Qz0tsbVv/GsvoxtjbFtNtHSritm3Z6Xam7rGrNS/BljG/Tqoltvm+inBGpjmI2pmY1hCj8CnUIAQmMS4e4w8w0bDeENIoCd+7IpVTMC2JcgscakarsCy0aGbJAVqUK95POIQa+59a0Mt5Rtf7bRlmwl39cSy1ifr3buNdBe0R8fy0SQBOVamt+/Nfpy+HWPw9a6elf9aK912zZDhH7saxnbVVurtSPC8Mu19a7bHDXU/TyXI2jbV38tt97/7BnPw2UVPiUERvbnO/3pt6C81zUGAgIZkyO2fP98pMeDce0+BZlo3vdbH0jg4cONnjW60GkxrUhsFCF1/chmIevjVetasOPZwlC96u/bsji/Hv8uY/PXvuSxzkcI13KXuGTze80gCgnzRywjflvt3tdRnNvKsfu81tjXZ+xDERVKdLdaO1oIcb6RxGgv14exvaLlpd53rblcc9vWPQb/vZbhawx8Ugra1+Oox1HrcdRaq4tn0R+BANII8BI7wuLjbbISqp31gPslJQF0q6/TEMBFEDM+cMmTzL45HqhsFihm+91wz49XBr3dcbWi3v2uurPWqwW717jW3Y9WG+pd8/EKWpybSALG6rLin2s4q0e9a3mZ13N1sffLuZgNIKxXZlyuo372ALbF41o33V4xtOVoq3P+rnM847EG/7FCqMcnBpO67MtSl31f/qu1Lns9w4+AglkAqsQ0DvIHVn21BkZN9oDHGq55HYBWXBZAuvEDfvMk27BjzZkgK/ygux7MzftyDtDS6h5DifUZ+/JxZLur87d7tdGWBufR7ugC/TiySgJR7HRe1X+soS0ea67lfW7e+2wM715Hf+QyFuv2lqLFH684+hzH+qqn97lvy9xuf2fzH1EJxzEAkbNB0HBfdakuRldrdfGqi7vVfbXndO99rmro0SZwybgUBeEeRYDh5isAwvkbMKYgpcyQ1P5hWhXHf5+ZcePBHe2qLegY5T5qsfXbx1n2v9kDbV9Drs821vko4arbuPZttHnPAAqq2+V6cN9Wy684yuH6OGoOIQy1EPo1ZxRGO9oY3q2lrHtWBB2j3Ifr2+vSbXchlGDh2v0oYXB+rz34YzUSyidjAt2uet299O6vet39dvU072CawnTtpEerXj7jJ41UQR4JOF2ECIx1rx1BPoUApSADNK78nduiUhJXDD4F13t0a27uumoM+O+vPNy3Gshuce71PEd7zXXZV+Ouy7HP9d+dAIL5Wt3r+6nhqsexNFPv3HVFX84jxuPoCuhW97b1Vo96tKAo43TxquvI88VY63Vda9F8uHjFrP77x3EssSsIn5CK3c55Axj+OLKOdVl/TPJ67MidHYZyOwH5lCiwlItImH8tGQTlE1hkE9sXlHoFJq8+QnF2S7vRyWDeD8rZNu9cbMUo1xksR2+MfB1xXbdxLsvh1q4avDuu6AMICALjXuM+32hfD9c6jLy6a71Dds61bCSEcbrWra/OtaIkGP5y17oR1gylXc61oOOOzl2b+o/9cjErnxhCX+vVkQRsrrZhvq7DO5Rk6aMM2pk9qeNRnEQvFFMuEvRedq+CCMj5A/HuskQRBCe+bHTaO9uh5Ezm5lBT1MxshKEomIKqITCCmTHacQ4zFdAxzExBRYQkjL7la8mKWhimABbGUNUxgqo+QM0UtTGMh2pjhKGKqSg2RlAEHSEMxX+0MUx5KJ8O0GN1GQXIta5l/LgIKL6xJT7pBQkPOTRA3ULgIqXXuRkPhPOXKSGZAE3d0i7CyO7j2k5mJvcJoMIfLCiQEgqgoblbQRJJeFNBELiPWo9mqAKIMlVAAYQEoAKIAAoiJB5L4gcU9S8PoPKpoX1dauvDbPR1WVrvcVnNO7JCIDPPM1fIIG+KGaQScLqJcsxxIHwqM1bNEJ+jgp9kTbN2APzmVACVBEkeCVNjmhDESg4TkAQCiPDG1lq7AyAgTBVAQBABER4nAJEHJJHJ2wKoPIJwd2RKSnxCigZ/7Md13r5ddam+n7X6HxGVF8DGFtnZ8A1PYBC/Jd2jI85XAJJM5PwxShhGcWqe2rfmdZLcWV4ENwfCm0lAJaWUBAQEJPFOAUUhPUigIDxOAAmSIAmBSQJBQQSEx0ISpioPFAFR4XECFEVQgCTpk0FAe1yWpda6LMuy9h5r3NQ7GA8aWJpwN8hqVmsyNDQGwEV2zkdBkpCET+JOCNNBEWisd9MWpfQNwTKp0s0pIoCikEgAAgIgApKAlEiCgiQgJUgIbwooIkkASQIgooIIoMJDURBJSQREIAGiiPIAQIQkSQCEt1U+GabW27FPF9c2DavzA+9YjANMb3CvlUFfzVkaxh0Ceu7LBsKnM+PQoKlPPfZJYkoPhOhR+JQVQBBIQAJESAIJRFICRFAQEVABURBhmhBFFDUFhCSCkEBBBEEEQYAEIKiqAkgCBREeJlCmaqACipoiyAMFfSCIgExkZntAQNBytzWua/NdGTkH/RGhCCUhmF7wmw903TPNqSEKySciCJqX3RvoJ5QCGJsjpk0VxSglU3sR+sjenBafhyrFZ0NBBBBBUAFBUAFBpgBJJIkKApj3CoiACgjac0FUEEgJmQKIIKIkRCTJJGy/D6iQABI8SoAqCS25KCBa/MZkCgogAqIgIMKua7I9AWqhhGEKqCmId2yJCcGEoTbvtXxxqwNSLkBEhb682j8gwqe0AMvNGhFiWkwK6rNhqlNc/81Zm5cNrP2LJSDCY1FABEAEQIXHCgiAAmE5DCDxUBjtulUAlDdlylR4W5Rwt8JDAUEAVFARpno6bwC6xVt5r4giSXgsCWzph/zqA/k/J3RqplgwQHiv63pUNTSf+/jyfTrrpylJF4BQ3BwN+LTSYIuusy9C6SWl0Yq8Smxfbm5c3/75aYT6y7OAmpkCamamasMA1MwUUBtmqoCaghBeS9BhoGZmCmE9vKraMEVRHWYqgtoYpqBmpgCChaCo2jBQAbUxhoKo2Qim53EGM1DrATAzBVMEVUXNzBQg53Ke1r2QBOu3v2/vvW+tKwLJO1hBCJYXLVTn7y+TM6UqNUC5ghHnK/BQP50CCq+K2z5/V2TafvF3oZmUbNzNWZxfx6Zb/euzYFu7og+E9YrO3X2tazcsR7fmQTivK7Z7G1j2HUTH/rzi5QfBx+s6A6E5b71dbu2q3bfriFnRfl5x3dC8XvEeJCBsOYwcnVsDIITTXfE2sDte7gy+1uO4smnxG7qtV/Rj3D5AOLPZHa+YB7ad5rqbhrIHBMYdj/p4qbcBiHcUCoDy88ZZj6MN/eCRE3SrK0Z7HR1REeETmvts8ptEZtIXt65Za0jF9M2N39W6+3Be87PTnbvckenPD7c898vVJRa2Y6m1Zrb5ny0uOtfpzmUFxutv92M5bgv+ctV5G83dtq3O1TWY319L3Y9OiPVwMdu2Oucub4hQ1qtv7rhc7I+auw53q/p6ONfCvc+17q7oXZuW1TnnfFlrVvyrje06Lucy5er64/9Pa94Pm9uXh/u+1KyiwntdB6gACCSnJr9qeVfUZl5KPsX8vmQFhU8qBmaH9LFjokK+h0EN8uZCPK6lne6sc7e2t95q/If8sfd+PZctxD3bWX3I+2r549XN2uvm3qORILyePuTLdR1l81fcQnO3Wuj35e7h9+Ue58trrjEM03C5c7uPGkC0X677PfYwFBQs9O4Xp+NYsg2zc6/bOF8n99LGecSea+35iMHinsNaW/GvGPxxKmP3trE9AMPX/XC1uqvuS+wA8iMiBON5wUps0rCJ/3VOO2tJPsjL7g0gAfop1Xiwk5xkJWMNRP7clI+bH/FoMS5LdnMP7qPGY649P51xLnHQ5rtfV6Acruf5MMhLC233CEJ4vQLaXln76uq83+F0t4Xzcq/XGu4ah+b5DGu9AfrreUT3fBVAS3S9u8X5waP7uur3JfTjCijmjzWQ56b3cpZjrtF9zD1cS99cLHmfj1i/uzteLVZ3a7ZXn1DW4/LeHW3LscYCQvoRGZvFqCq7qtz68RhrMBAK+uZUESEltuPVlE/oVibGmYJCruNz4oJPi3Bq+YzkDZe77/pR+/Xcgpuvc119yHNUPV2zRzFomOyXQo/OudhBILyWoLTX3aNb4/46w3ncYXUx1tkFf5yDPLfS3IYKfd7buV7nAOjRdd1Wd1wbCJrdscbve9iOGAA7j3OQ51Xv6re6x7XFM2hbzrhk83uNbY05X3FTjbtX+dEToV/HOUas3jRfblMkiXiPhLMe9qzLX37ymSlCwUD4xXe/ORCmwc1rgHQ+MSHGBc7jZ0mwWSzro5T27Y7EapLHrvr7cu1+uOdm6+6H2WB7Xrzx9KPVe+T9d2FboiG6Ld/220ASYX7e1l3dzt2PfrzO0I7cFxdCnLhz6D234Jc1qNLrsZkNQwTKxEY//nlDIbTaRn7uPbi6qdrEyM9mdz3DepzBxoD7OJ5LIF/uNh0WzuMcYZlv5SdQt6uew/zRBj1WP/gDPSOPVqKC3eGIUdQVioDEHSDySELhYYizC4hwPufF6W1/ywcBT6FlxukX/K4zz/HkCdfxewtd1b26+iVufeu6zRH17jTanPEv5+Oraa9RgVD/uhcEYLy+OR9rG36Jd3vNfpxu67XefpmvB9yvRl+q37Yy2hFzvzeDRF9jLz5v1+wRGK3GHL8tweLrylsf3vlBnh9YdkfueTMN6/ztMuzcr63f3fpy+PU53/aT0GONW8jObdavuhYl/RgJyTZGZj1iPBG+AyIQFCd0fwICwjhftSN8Sp1bPo8igPQb3ucbxJR+ECTx/+5s3UA5XSD4NV4xa3Anms+sZNcJ7bpiK5ToFXRc8xV4aHG5rqsVK81d0bk87rOPO7rrcufYWja6u7F7va7WGXe84poN0ODPUKJbYwsA2lcX47IOeruuy4/cstHdrT3e2H3F6/KGbkfNCuGM1xWzmnfO1Wv7KRBCW2rb+lVX32ptgSRJPOgtGhqpjD9d3utNQQQQDjyKN4eSRO+9ZiUJcj6hu7s4fxYYONfu57VsnAydRKUPBQibgZZz9UVtC8ooQQmbgW1+MxhbIEE4ajZIoqp96/4eKMGfufdgoQxsO33vQUcZqroF0ODbHUC7X++gAmgoY9xry0FRUO3+zFtRsO1sm40+FNsC1gMQfDs7YHkzRdDe2h2AzfutGD+BCbuP/fDB12VZ9norAsl7oAHq91ETv/ytJiHIihJuPgGa6+xVBOUTWjnfPwPkYbjl0+x7+wc7dYqAfPK8LaokUB2GqqKgCqoAaoqAAjrOfTUSgKCKGSiqZqqAKqgZU0UEA1AzA1AzUxABBbVhCoiAoqaAgJmpokpCFVUFQc0UETVFAcXMFAEzhfQTAITTHX70WPdliR0S7/YMJQTS9zyovMjKILOqJG5OSPTj1QaifFJftAryeeQG7m73TYfs0swkkchEEIQkoCCA8KYICIiAqIj2GDsiE0AUEECZCiAqgAAkUJCEMBXhoaQEgiggQkoivFOEh4JI4qEgCFMREBAQ3p1EfvwECNl3te2M65kNQVS8h0P8Am5qVOWs7kjnheL65oBwzTGQQORTSkDOBrZ+K5aP3XZU8H/uQFIBIoAAIglIgAAKIokkkJgKoOUuBiiqJAQQkiQgQUKSMBVEAOHhRAUkgSggwkMBEiCgKqKAyBsg8iCBgCIiQEokSUyTSCJB4scrgYCIqKopaqpYCcYf7hkBBwxNgwpvEbKCmWjYdaFHN5xOEAGqY52PwKc3hYlLMN0cM3ZvEUYsF7uY2hIGHCVNkvDJniaAjn/ZexkKoMqPWhbc+ePHjVc2dTWAEOx0SDKAttexqXx6ieDcwDp++DIPdgOvaZSie/CwlNKf2Ke/JEFg5DNeV2x5qPDDekYY3IMSeixlZi0TRx5Od8rU6SSwhN77niF9ehWlFNj+X29x27c8GdJPwDkAkR6lTzkQLF/Lvu/74u5Bkh8zoT68W+nc6z9n+VWpTo0wpdOFrvOye0P4BJdK4DU3Om2jN9NhpGDKu/705c1POADtbdmXWuu+XJsC8mOmZKDhrMeT3PyqCDVj6wXUfByv1ZBPNKRtbZva4truSc8moXoGHCCJJD719T6W5Wrn7+q+eNMftRaV2IIs+EgfzO5JhVzYF5mW1OkEiPVzjgHQTzABxX84LkRbhPO5uYbMgiJ4XErpT+lnYELPpV6/D6GvdWlDhR/SMzrVllAqAYsOO8yfU2oXrB+Z/evvrgDIp5gyzRfwKdte/RwGkEqUBhwkTZJ8yqmgbT/OoOhdlxZU9EfMKC1YK9BAZdxX5TOoq1zeBPjXv751kiB8iis+OmZMW9P+B5tCb6AoTgMQYGMYn+4GOPnU9UNGtMcSi0ISAflRqp3T0MmkKkM3MAG5VoAzIcIwrEEQkISgml/7xtkdhmENDWj89yt4jhkHcnYq/fQDFBICgqCApEeS5IHKRBABBEmSEkpKIiAkQR8IID8lgO/gtK4+gCRA+hGjCOklh6/KnuTxYBhQKsGvy2OFvO/ezjdg0Q23HfuSGs8P7PfHFQBJvCUyEQWEhwqioiqQhIfCVFARIAGIqogA+tMiyEs3DQabeCiQJHkXa33gYWs5EBGem4KE8g3H8gXlmJtxvumc7dMVVE1kKRKrPkf8UgtT5YeUJCQQ3hQANYX0QAGFhKoCylR/WrSluY7j2Bz1yiWUUgwQwbsUSxOZLq5y1zsz0qgUTIDadRiCEq5XDOj5VcdFV7/mCKWWto04Q/WuR4Gx+TMHxUJQrPSBhm4qIikBo5d+35uBhi37uxuojXznHoIpFrL3eYCOkr3v9pPhCMin7ljX8zz3danOXZdbu0LiRww+P95eK09JZMxolFLCqDqUu5DQsc6uIJzx/xxlbMxl2qGY1nPET8L6+hcfz6NruVzQvO8343JdBUAEP9dj/pjbwM5l3+f9NOju42Pfd7eZ9mN+zq91YG3f95fbfjLAwfKp645ddVmWfbrcBqQfsazAgic/kF0vZJDvCsGVeAtRQxginHEDzL+WTSGdaWGIRsv4MVULfuZkUIQzxHw9AudzvuLyvMZYnh3/N7+slHkuADJZ//LhovvYs1leW3Nz3dD4sce1/vX5ey3XfKzX/jqt1zme8Qw/IeDKl2nqp91dnkjyLghw6vYzLJ/V6tLg0Jk6+L1msLsuNwif6mEIO+RvGbPSWTkGRM1XF8Lxz1bTPD83dc97tG9/e408V4MkkhKsf31tatfsAljo5+vZLOzPG7u/f9x2znu2sn7UcL+WjZ9W4TAsy+WyLMtytsdnUQXBuzgy4AuvauhI6ls1vw7xr/MNvc5eJ3KuAR8Rodi0epIaK5mzZHE9768Mo373du7Rx/113esSTQESsH5zBudr74zcXJ0/4sj7UqC85jyuj309/fVt6X35cHcZPyWAzNKNhyl/oPdwipDix7MHaVeX210J04k7BChlAB8+Hn757ZunHK91MPkE16bkwJ2hdY6l9halbEiGYUDUfr9c5d73DVX30SzXerg1/vdcrbeCCCCs36JB3vfN2n6s6zK7cb9qgLLsORwfL3dFV1uwfO3zax0qICo/FTJuV1S9K+hJ+WbBhW2yrOC2xmIcBPNRvetCvv1HfvUjzldAhISeXygBQHPch//piwvZgiArzhFfXcn7nsHqd2/lmj+OnN3zw3WmSUT00b0sPdf9DMU9Xdj2vShlfubhPnaf77wFQ4O/5tmbApJ+/Lzi0i2933OQShUkoybuq/ycVwM9LpUCfADtO/jl619j211hKnyCKwYhQEN56bZ5beubIf0BEfXLUcLxEcPI87Nj57ffahjXX/66DiBJIiXWv77uUY7nVfx+dM2vb26E+tFCad+ffrT5dY8RymCEYcE924OfQnduPaUfNwqTAoyefFu9K7itNFqUqeZnDv4yX7/+8tzrpmpminyCyR4ldG4781bNZMaBKCKFs6QeBf8xx3X5cAHy918OI/7lV6+AJBDR9a/f3Xl9zFlzfUV/fHx3yvl8Htf86+umuO+15TP6kE+/+X3OKj8ZvsFvzjSJhwVFkdfs9YdX7IugrmTyfAHA9/Hwd/nvX79+/evTnWd0bu0q6fzi4qIVBsaV7nvAqR0A1ADJFltgnHVZ9qso9GM/Db/XDsKb7dt+1aWexriP6o7LtUE46xGP769btV91OY4rW46Hu64WAER+AgCv3FwSIKLeBQ4BYLQ9qRXYZCPcjoYyPgB8/sts6h+//vbLt3n+9te/Pq9N+QRrRRbGtnHetof5XS0gBkxGLwaW2+oDAmPLAUbejKkqoPH72s+2DRUstzOXXgxGz1v7vhfFxr2uLZuObY3nNgDkJ8MB3WICEl6WEgom92jPWfl+ajJLqRDAlH38+6a+fv3Hr7/95bevf3muRRE5vxiyGB1XZvdNlvPNMKD4qoIzBFRRwEyZqqoCpoqOYQ91/XZipiqAqirT0fvmj+/OAGyqqmpmphMSPxXObSd+3DpLrIGNHTbfgbaVBgeQOfgOjrmp/+i//o99/fr167fjNkA4x2XLkKXGPPLGUeIYjAEQBRFIPBRJgIgkAC2+PfQlfve8LchE6Nf+ml9uA+WxIDwW4adVEiICamY2EVX5g+Yhk+ExKQekU2UoiTZHRXg6i1yP47x/oGQa2OCPXFqG6Yp5U7/d39/fv79bxgwCMjwm5YCUE0lKAEkJkKST8SBJmgyPSWlyc61pM4ulTGQmW4xb15XxUT1JJ0MpaSSlyXAkJU2GI6WTJAckJYCSNEk6GUpJkyQN6fdAkgIoUB+/7n/+vH+5f/n4ePgAAxL94PV4//bt10cxnaSToZTcCSRJYCV7v40RjIfpBzi9wsHQT3JgnCQNWzkZxVoujnLPREuBWcU4j98/1f3rqcJ5f3///qvjmg2QeI4KJ05yYJwkTJ064eTh1GEYLh8t4L97V9MvuNL3yPgAwrAOv5nhxkenTjicLl3vp/fX1/fXx9cq08qMJbBdZWxIcuAOTmA5HrWeoZ95PJD0IiSSFA5lIpF0bMw6tnW7lfUsagQIjOO+zO/va1P/3r9/e74CSO63k0hSOGmktJKOjW9DIkm96CRh6Pt+bXlMntq0+9U71wMAQt97pN+eftLgql0tIDf0Ew6nlXRnpQTjdsu+v9aQr+seCCRuluFMP0kkaSRJiUSbZJThKNBnfuXl4atbELBg7OC085iugOn2sKl//zs2BYRENcOZfpJI0kwiSbRJRhmOxhn2kh5kONNPonaURC2qh2FYG/C7MS7HbHPWNIAwRF0zPJbhsQxHUiJJSdSOMhyNMzwCGR4BIkkMAyBJaSXpSESbhGGGdwYCm9urO5Y19LhcHRHeXTbdbJKM2vApGjZhA7c7kUxqTpb5/GVk2NSPbeqGf51HAyGqMm40SWZudZIMbjSZ6iapoc6Mf0CE0jHrJKkBCJcHULdPN0nneJIwmYw+3QyOJz2FSAqJRCuLfgICG6Q056BgvtZ2r3UNw9eaFYG0W/3cPm0lSRPgeDdeeZ2F0veyrGL+901NV8DpALzEWgDJKs6rVEkySjJSEoAkN/epkljjUo2Z3XKRC8D3byAM/U6SUZJOcirpOTnJzUtKMkgyStJLTpakoY0QpAfgpjVdC5B0JMkoyR2BlrXG/i/9sQ76Vf2AxHvzBtNwJpJsJOmIJLAlZUbD/ynpOSClnjTjgcaTWe+0Ko+ll/N0MB9zGQD7iMGckdyR5PAM0HAmkmwk6YgE2JIyoxbph6TnzGjyuQNE0zORZIMkHZKUyfi+H9YlcwGz736uz4GGfyw/RF00HbqRZA1HkGfZ1nBKaqQDapF+/JCekwlNh240PQIi2VIj0RdEFqjloCywJWVG07kLBPpV27B7ElptRRH5Q9Zi4xnZrnJXGsnTkkaelQKAzlCb7ZFN/Om4rS9/muV8WjAvM8NyMsRhpjBhIAAJcs4ezsh2lbvSSHhW0shtVdm2JsCT0oRnZ2S7yn2NPA/fr237MaWnRSiN20BS78hUR+0BT0oaeXYGeXpCtquq3Eojt1Vl29IIPCuNfnhySu5W2TYosgS4ykNJScfdKreSeuBZ6W7QSfgH75rRr2UtvN/KWtdNKmvvtdaukfBee+/VbjN27bX2XnutXUYKIHvvvdbae+0yADcgB7CLaFkWn1erXafn4XRjW3oBO7jgdrsYdjGnPw3evfvWBVZSWWt3LSDB+J/X2qu7i8naa+2911prm24iaq+1915r7WKy9nhtgyQUqD1ZBtRQe6291tprF5Pea+29p7S3T5nSBbQaDq1bEU9xm3v7v3isVnmxyj9s6O3tU7oyQAgBqvZwbQORBdRee2wiQOBaa++19l7FWK691957rbXLjKv22nuvtdY2gAS49nDtMoAt8F57uEwEGKi19l5r77XN2LXb1ZYZu/Zae6+91i7G9h6uXeZu1NDqceZ2xB7OpZ7hDyBXxtRe11qjNOu/rX55ZvX/3Vpl8txEXmut61rrz7XLQAJOgBxa/NVFCY2mLarIso270WXDfPB2q5j393a/ZINvHh6opK/TeKTmP67/0FnlkZu1rmut/7trZq91XWutf/xjlTvprHHTSnivyRnXXv9Y67rWWrsODKd0ZWAUa82BIthljZYq4raIpFHr47m9XXt78Xbap2RQXYBrjXeZoWv9uYY1CHivf6x1XW3Nre51rbm9+n8O0lvDf6yyGHqv8e5F4L3+XOu61rqumlvjXRO113W1fx5Zwz9XWXeCYPnYD3fUI67H7rIiSf6gVIY1Atfee+22rJFq99fac3u4dk9viVHY468+8iYibxgtyPSgIynF8+g6TzvD3DbMf+cv4MvHxw0llXEHCNRea+3uDK699157711/qUNC7f5auxFpXHtcg0iuvfbQGlF7rd0vz9Tee68pU6ZM6eoCDIQxzH5JMSKqWhIpt1gyVtpf/MVffIft7VO6akhvj6uUib32sABBmtprDz3CVXs8V7u/ds3t4dplJmqPyyBQU3vt7tozuPa4rJFrr92uI3u49h2RBC3t2Jd9WfZ9P86A/ABrsfEMLo+Z9rBs5Tk9eVi2IRKS58ihWkcXbWT0B402LF4Zu8ikGJl0Y8vP9g7/wI+PLiBnG2vGVeU+s/K4bGUQPCwbMvrLkxCFBLDL40HALg+Z9qwPCCGN8/Vpv8TYSVT9JJF2ixFpl4UU0OH8+bVAproP+Og5IM8yKU8PBPIss55m2pMC9eRx2fSlyOVhAenhWWblcZlpD8uGdKIfHpYNRL95Uy2nq9PDnUVJ8IfMQwa1zAtA3Sn9+CEmFZoI1KWbwAQUQVNs1jHFTibaYOxEYyd9hRtiPAPg+u7RnY0aJp0wlEDShCQxlBgmIAlEN0pH1hiQguhrEkinK5A0I0m0fvUQQpoNWccQbXhVRyJv5GqtYx7MegGGmn3SRGMOa9wExFCANCHJEqibKQkk+oIA0ZhuFEkAGnqqlYTErFqwJCtTkphMOs8a09XdgI7ye382n/tQ/qCy1vWQiaQkmkmacDgS3TTDJJlJgPX2KoBiJ4dsVTr6g0feaIzwO/wYcB4e8H/evKHqTpIOZEahTTIBAUiXaUlKBoS+xs9JANLTZHrjTsgIAkRh6IeokRy6dfSRlk/fYaQlsZP6/8GQIsUAhCFqVICMIilNdBAgYVIKkTJqk044qO4gkACMpCR6FuQ5kJE4KiWSZiAJKECYjaQkA5o8hyPkNy+BCKCjlDCYJkjvyWs9DxkIQCby3IiTS8rMrEKeBfit31KKc0YO+69EGxFtaIywfyeHsiEeH+DDff9Zxd2dyUECUue0ko4MkzQnTMJAAnHSSBIkzHWDWinC5/37mc4ZadGq1O+1QkEwBYS+74fVkjAtCQikw3ToR5LoHmjDqZOEfmesNgmQlhNKicQnnySNGjGZJNyRAjpKz8XMlEQSkJ3mW5JopUaaiyRuVAKaJ1PSOse1prjbL+ENVra+hewyPcvnHwr4/XvAuWHSkSABIimZiCSFbqRjNxxJvRscaEL9GvxM5vP+N9JgVUuiDY2/2h9t5aJHjwtkAQh93w8BRJnqixOG+WNKrxv5WDdJk6lxknDaSMAoIykdpYmO9ZNjd6gIWpo76hm23I0Ewnvrn+7vO149S/egR3esL2ytL7RfcoYbbEKACm8pNEJEF2a4WSFo7Wo0IepP4Ge4pjSslL7/k8eRP1cSlmPd930NOcZspJ8W4FGHO3PtvuDi2LmAXJeNZoYBD18IWnNToHyAaDm1dNfFE2fmWhUrxGxa4rLUuqxju+pVIPFTYlAFMu3ZP4+0hd5jax+Y2SRshwLWsdDwBZrhJqFJENLV66nteoo7n5oKQASSbndd4hnrOkKrdWOa7g5rhICgk9b0z33Bvghp2zPcfasUSQHDGa1xS8HExjUqw7NcK+3sf4oHITpKzhJhrX+Xw3msQ7fr8ANS4i5huEKUoT7QU/vS3hPSGs85gLXWFrZFhjHsFi6JY2hkeMzXeoq70uw/6ME/DVHkTHT7u3oO88c6COuxFhX5KYGAmagxe+3ysUunPzAVEIzZvvvtO4xxm4mJYxBab5jeWUnr1gUIQBiStB6PNsy71SixTpCfEFcEd7/9iX+Z4Q2MNpbatnZjeSkAiIYxWsI4hu/Q6PzQiVJvyp2bAG0zSBlyBmWtLodWYxi+1nPAT4oBuNkEg3yvNdeePjO25IEEw1ljQO93qG8cGh3vl7iJ6zhRaDIrYqao3XVxl6uuNbfUrML7f/MuWAqPAjLtOZW2OHnpxm8WAVYVBXKAKBo++LOPgkjDXq5Mok4vX9Pr6+hdM54VF/l30bLW117/q7Xue10Lkn6S4pdtC3ByaaxdT+1Q7vg4CkEYYjgZVSFPx3mpONDLq/eeOlDeBIjybikltLej1mWp1a3dJvITJEJkDKJOud0X5gET5zxrIMagMnxgFgARM7A2/5d7Sxvrvm0IGvk3QC1sLV4utjsYJH6SSERiYy0ybU5tTNaPzdzjdyOIZnnU8IFIUP1v5cL/rPmzpZXU2roBrIKxeTfAwrT0XoLxWNLdk0BrNIkAb2D01M61em/q3MC4yBqRo8OHEMwN1QjR6p/bZE/xRFr1r4ngRjBJ3k0g3M3/+zwWSABy91QvMWBXoIgcYHNglK3J3uNSOy05NC1ghhUUWuDgD/WeteeP03e2TkMEOL378ZW8m0I4D5cnkiAlpunu4bBhmF34cIm85bRpffEDUy0PMnxIIL7F2tKVvW4+XuufKcOTouhlgFAT+fhx16WZMlUA4d13B+2xRqgCRkUhODf26r5ge67j0fABERLrPWXf9N6+xbKvlITMDGt0/iwBCRDRsta/a66plFJSyibwPZT+VvnGycWxrmeBWQXN4eoqoDVnH2EoiiLa86gqeVN94XddMppSl+HdAxGDwIsACUZuR+3Pl0vTXJYmGc7OdxaK68ceVv/smd/1Acvsrq7G59HZhwCAGQAF5TN7S2nzMwHIR15OBQTV0lzdu2lzPxjyILCV73h7be22+S5ZW2VBfB6R7BOKEJhFsHlTn0tP8cS+bmBtEjEIvQiiPS773h277qnrnqYmc8M7y/fJAVrlrbXbxgZGfb8yIJxX7kH/LLQKoaQRkm2NjZemJzqnlWrYCETmEtPg2/r2eblWPAAASuz7++VM23ZpfWumSNjOXiIaSil0JqZL42MtC0oMiEDeRZAEquh4f8bDwDJIEHTHbutz889/1fEstAbi1dUsxC5Z63X3nfj46E2bkLvf/mAGSR5OQSGUYoCys4MCQCFiAmizvL++OPGmIuQ8cZx9APLxyqmvK+09Uw4IADMALJA3mVheW1GwkIqBJNvkdx+YJUm2HQAnpz4wOvru3yQIgNhkIZ8i7xcO7Erz3NdMeVR91B4qzM5uQzNxS0yt7Uc2tLelzYAMSex+d10g09XdsVr9Nf09fTOBmgwVQpQCe59RCswgqtjD5e/fmU6pf5cDgBj5+7dex6aYP/omgbNd54OQelunvJXafMDEUgBmAMww2QBUIYg8Hep4v5RaqdftvoFeM+0JkIDyfvuRDTvrdCmgbR4QhiMgmLlmsvaBqZNQFQCsY4j3SZMglIAyfN05fcNKf9eDBBsmDBkh8HW6JFzukuS4nw/WMIVY66Y1H5h8zZyD7lvb2C5onQ1+FiASzH7HxAtuuPRnDqLRCMPqSELfFAAHJGfXO68C5qYLfPGtBy5d/Jlzr7TW2up7swHei4pFcPAD0zt3zbUcQMJkmyFEIwZTRapAUDQTMIgMrl0+9rC+4EbazoBg4oJkARJYS+tbpdKZftkzPCMWzcxamPN/blPUH/2lUDXjpndexGEsRGB43zF2W+015aUAaN799s4CfmIQzBw4tffVnx+AGZpdEfPLUf6v+l56q9OpHVMax5QNcD8fTIwXXXcda5Dvtebak2cnuh41KQtExhbLDzt1qv0Un5gTH9Vtaljy83dCnS/3Lw9/+/ZWjyuua4xrV4HE+TAOq48CguWJtfGt8ktgUfGJq02Ohh7TdAAXYYhH0kv+rc/l1C9uOP/9Hr87QWMksPfw9d98eXt7e/v/y7LUuixLzQbIJ4gx2wIUuz+UWr7Wnu96AAQmTBxgCGoQmKuE1r+Nl1aOdL7dh8aCjAyE+vXly9evX79+afd935fl958qq0JkDND6SHtycSLTTo8AbQz8ISgUsEvoHlnZmf6hFghaI0kWRgTA7y+HW1dI6ROERORnrTUIlj9Qq18zdfwwzktDTwPiAEJXf9nXnbjhYZ/8Ygi0fm+hgJFANWvvtdbaO4QxxgghmALyCSLQ2iWlAO/cp2+r/3/5OzxLFFWHnlmID29q/05psfxZyrgaKFSh9chAxCklgcj5ETE0u4IK4LfK7V0fedjbl96GIZkECPrl+NROT8lr1gM/RIiFpACtMTJAkAKR3gWkTxE3ATOgmk2ywdQHJhc/MNPyhiJRavPWs6d+P7VC/2wegUMLSaA1aERAIEBSeJySACK893ygyj2+AKgC5kIIr/uGf1775/mO5wBDD1Cc701b6nXZ980+ZpUBayxAg/wRgE/2bLjoX3xre23x7Uu+gi5YA5bFIpDNZt3zKCKE1lDly/pnvLT0Pf2iDhpyznRBA4NGyimUSD0bkNQEJEBKT8plJDq5/sxa/QMzDg2CaQCEGpRyD8jYhEAHf2hlZ22s5QC5B1JoIwPCGBsrABpZiRSGFl0FJMBAQFZH9E0+cPg7xmr12wZG7npKGUaxmnKTT1AUeQc3VnqKN88XQTkIoh/JAjAIkkjihJ5QgAAC0RfdRJLCOXm2CJEDnJzZGq1NvCmwBoQsXEYckfXX0+peWupNXy7aRi5igwSIvtc2CGAqSB2JMBkkICSyxEHpAgI0Bd67jkzWNqaKRBVUd5VhRjDQ9yfvSlNqrwfAUZuDtJ0Mri+/FpE4qYQ7lgKRIEymE8luzsuzxRokFkHnptv6fF2c73gAskCxWHRPYlEsnx3dm1K/7tuIcY8vcg+FsQHBx98erghkwKMIRFdiKCG6QmGY0CoXkQreW1UAFQdGSS03vjjxplcypVyG6Ivna6fGN77Zg7oeYnOPyFWuXVC7DOzXj7LL3ttMhirX3tV4r7ULCOy1baPgWrssoPZaxZl5toCZVEJkn/6UY/Wbr2oyxhSKRekeao3d3FNceebLyQdbCz/3wOvp9f3X/fdrfTy8vG7Y76+71uvT48vL+56QP96fHv92/7iA66/7f/vyvgCuv+4f3l+frobrr/uf38t4vb58+/m4QLqAXKDzBPmdT7+m1nv0l/76USBhUdvutlLgwePbPSHDp79+98quD+tvbBFyViG7vbrl5Zo7aj3/ge5isVz3eixLCwoIJNH2qseyzHFgt3N1WVpAN/eqR91dVs11r3W/CmOtzh2tQEpyMXGA60Gt8tZ4beJNAcARmBkmHkTWp+sVvH/aeMap2nwrQg6rfv7b6tvrY3a+7Xum70cZ7ePfPnzbX/4tNP7Nt8uv86uZ9t/3vr52jx0f1fv663xaqM/Y7+Nj1T7vOWxbUYRPyLMHXAWCqc++tL5V3vTVURFmjmMZPAkiUvSmA58onZ0rApS7iN6vD68hfps3HdeHf+P52nSsz/UNVOOve7YR5xqwEIqvH1HD/Mxm/uPpxzkv2Ub7Z0e452UzMwXRzycWoMS+svX3/zy9OO9Q9a1KSKrVOB48zELBenvnpfufU0REyGHN70vB/LMa2j7OSR/n6xhwf7i30OsjDsjzXCixHvX17dLtuQ8oy+7D9e1jOerrr3svbt6vO6ACcjFRYJcI9nizPVk78lAPMOboL2MQibJBuTd96RNpcff3iSPksnrXf6er5pczpX2s9Fft49yvAfn78a7nOmB7zUHba3Hu9e2yN+rii/v+UY9aawu2uddrj0WBdDHZ/fg2oV0Sg+BNb790bWMu8PDe6m5afmwQKRTnbu65eOiqDDUHAG0j8XMY8/Xo8Pv5MGjfV/p+dDv3OJT83b0lFr8fBfXzXrZauwb33Vl5zh3N8+xDfLqiZqaKavD73IxPyrPHpaTwMgGiyAFenrb8z7XFuTcVgbvf/guDKOq8cbz0jDs7EaRw1ITIYdUvtcDvn4fC+W1St9GWK8D93ak8wuKvz1vD8bxG3mvRbf8bhy0fMYTr29OPe35tqqpmZhDcKwYFuZgUAM2FwirTbno6wObAKFuTtWcueSRiBk/nmYdG62nLLR+wNhSOcpyO5mc1aN8a/TXZH3yr7yD++qx1+ViydTdXV59/41Tv/bnU/fvs1eJzP5xzeeTLXddes0L6fHLB5M8CwfIb6n0uV81sRlHYOLzNoN2Pb3TRKgoa7ovw38bYWQQZPlKqh0q1uSJyYNG+toD2qxm61awhrsFyPA22o6kqKILFj1pf834betd9rtfRVPSu+3G8llsJ8fXaX/s98vHal+U0Pi3PJoBgqNh9w/7R9nzXA0BiTOFiUNAazQXsUQD5T9n/3BNn5jZhktwHtTAULAzAgqHDVHWYggXjTbXro/XegwIaegk2BujovazP2kGtbL0HQ8PWSzBQkIuLBomxoNZHDqzVnvkmT5HgEgO6aNB3uy9aKDQE5QfrB3qKpRunAhgKcyBR3hSmAiCAkABVUFXQv/vwylSVt7V779vr+2qIgCogvCmSSBcXaPxY2Gg0ECw/c7F+zcxxHyjg4tBaayA2DJXhUV4s7aTVP8WDCCEHlwTCO0OL69SXVrOSEjBJogC9uWN5XYU3RYAESRKI8Al5Ngk0XCIFUPfv/7l+V9qODlki9+hFA56OOI7B+N35Wk/x0G8c9OA3WVZzJBFABFVQQQQFRNTIdX699tdc8+aLIoAIjxOM7VxbHkp69FBEEkhCJF1c3BdBM4C/YfibM1uTl6Z2XLoaQPWiuU1CHIPQmpjeWTnSATQYocmBkoBOkoAwTSC8OXretpzzZmoqIExFJpJAbQzloYiAiCSAJJJA5OLC3IBmwG2SouAxxyZrV860HAAX44sWwjiG79DoHFkpjfZLbIGbuAUkudBjEUAFSAlJICRJILxTgSRvAIiAMBV0AogKkiABiPAJeT5B7QGoAuC/JXIAB/Wm9uRr5rsBXTTAGND7f3fr0K40fS79kq7FaSTG0OkIubCqACIJSAgPJTGVBDJRQVRAQFJKIqDwQHmsE4UHCJAgnQ/jUSIFCJBAhiOpl0gBknSSnjQXjRSIQiQFUI5IUqYykJK5SUkCxh70hRNOuPYvik44qw5WEtimr7762ga7TA8EVhCk+2i72gZf/4/u59D7QoklpZFyQJHURJrTcCT1JKVJelIviRRIAkQjKUmASOnkgCQFkNQREEGGxyQpgKSONIIEAhCJoZQkIHWQwrxEV9KABJASuglABkqSO81u93fZmE1ATKYTDus5amaTmU/S7ozdUSBAxFBKR+qZvj7OiVt8tcnua1I/UJEqk8NLHRXL3XXHHY+PfjNYeQqvAxDNhYRTRgw1GJtunge313aThIMBSBhrEPVAtEo6Y0nhxsO0bdEm4XgYS6GVesNks+u6g3VtgQKusRUgwjW0gCi4hrZ6cg09cg0NJCBXd1d5YNfQAgFyDf1DPdfQAsLgfzVNXB8/Ps182BytLmlWKtTdhaPEAU2rq+3mEKb4i3k5p3qnNGseqiLnAA9oWljTtHAZCIBrbEkEqLFFFJBr+JcBAa6hBSBwja2Ba+iRa2ggjWtsIgC5hlYSQK7hXwYEuNpdZXfANbYSCXCNR66hRdLY1d1lJUDkGlrpyDX8yxABrrEBZTPnfAlrrevaM2voH+q4Vntdqwwg8F7dvcuQgPfq7xrtta6rLYMCrr36e6Cq1d8FKOBaQ7sjaq9+GUBnesiFTydfHNqaMjY+1pTGHMbBcZNacdsAAW2YKi6ympOT7BOT76Z0OedVPxRZUbgWHqbKMMMMU2WVIQHXXv1tIiS817BAjWsNy5Cm9lprXdcuCwh4r/4uAwLXuq61rte1R7VXe13bSAFqr/4eudawjATYa1iGdPbq7irR9V79XRYEqL3Wuq611qj2aq9rGxKgaq11XWvtAgS41rDMYA1rYq/+Lp8De6+1y4z2cETttfdea/fS200ZIvX23muXR7XXWnufYK9Vvci1B57Yw156e+9B2ORMhClczclN9kd0ZT4icce03QkYTO7JhaN+NbtJ4iERvTHFlupVpmAMCtXCwwwTDoeHmaCz91plSMNea++91vbEHk54r733mqu1dg+QgmuvvddauyZqrb33mqq91tprlUFKs9fae69t8tzbwwN7Nx7VXnvAaK+11t57otbae6+OAnLttdYepdlr7b3XNhns4YG9O9xp43bXPbSvCY+Vnqtsu8oAEcjlPoAksMt2lRnbLtsuAxJgl9sykITIrrJdVgPIk0rzLFfZdpUBpCoKtNuesLoj5qYRl+IQiGzSGUMJA5qAb708YR3FdGGtuLQNoFJABKqrCGhaIKBpNkQA7lcZII2r3Ic08qQgzwG5bLvKAhLAZdtVBiQBdtmuMpN22a4yIAG4XxaRBNhlu6pEEkCeFOQ5IHerrAAB3K2yIRLgsl22PcIu21UWEYDcrbKAhMjdqtJInoQ8B+RuVflus9+76++NriRIQEyGNpHNdDie0BWgia7oJ+FoOJhAgIiuRD/h6Jvqm7eIAKhTT8KRtfLfKTQhBKglAmpDkJISEFUT2Zq01qmJ8ipoRQrvk+ZGJdGNmE+CxLQ4nIRPMAlHw7QlBSDhYBION/OSwo0nzU1aEt2ErgSQBMJ8spp7I4EACaeONIIEkgQSiVYSfY0EpCNpFGnQTwLpM51k0JWkJoCiiwCHKrsUzSuiGiI7ZnGpoPATGdimr7762gbV8UTSmnz/RDVJndIJha4rcpYXUoBICZHUSZoI0jl9IrrRIIMoIZKASNIgI2kUpRe1gXBCCYg4pibKBOlKASIBJKNkJM1AlIRE6kgapAEESRgmAZJEQCRpcIe/6zwvNCY2J3i2wxABeJZFwKkbfyIYU2i31dGO9Sefw+AyI6bANpRyL7jfNmTFiJfxJ3MhWRIkC+wT7LGqnyue4JaZJao2qtGy0KUgXVo8eU506fsFtzh1eJYXy1coFXu1syekS3rZuNRSpowlZdVTwG4Te8X40yEQ2aRKlrhLZY1goxQfEfCiburU6AfBAjt+47dIlmQRGDKyxUja8Bs8OzXWiOwcIHlGiHPJUnU0iClqJMTkck92O3FnIlrjztrtigBnkiW5I4cgPqGUKWvqNCGZyzybgqeOjX4Y/NnNBeNfLKl8v1ka3Z+0yVm08C9vglGELKFrRbRYFhEBMHyxBCzeYAQj/hSXKljJRZmqO4yRGGFElzSAlCm7JHJfCVYuq7OSAYaA1Y0pM+JFfGKaCXTIXywdCr5fwjF5A1QNARw8dEGjRrN8zXW0+MMXS1xByLwa0RXvF9w6MFcVBfsV2BPMf9fqKgIck+PLJagiYBvmB8OUWQMqFJpmemDwlTRLcAr2xZKMkvJ+zfL9Z4GN6cuL8lChkRdmJhxdXldpFv9iqWvKIAKd5uVZFhWwqM23T9rskV2iq1Z1y6EqdK6gIoLK/+XLoukxOUQg1bNWXmJEU4CfEp80GJvboDa9BTMokgQQgSTyJREFsuSPVonsjLklQwQ4b5C/1EiMdKkFOKqrTFWABIhIhxhk/tssysmzhPTQkJnKLH4OTilC9v+e8q+iz77qAFX1jFONAnvdsnpus1J7Z1Cwwr+obyK4j92XYF8c9YXJS06O6SoHD2wqAg1MF40/a2DyaaC+CfPPX/52/ru/NwWSiGQICpscyG2WOUDGSCmBC6xlXulSAwVMlbMZ67ev/5lvrxo3418pn388+ySFf5087zJ5BbdpepSxQKGJYFxhkA+Fcf369etvv3xb1rvbF0R7LIx1gOeZ0hq9pQRNiDVibkwHjwJ9+eXr16+//Vt/+VbPEgxE5AsgZdg0HOCnnw6eesgvpVbJ9QRqv3/+9vXhX//ZfNxD+VfCZ580wIWQvveozGBUlcxlkmd+7kkAbd++/se+/pt//O23r19/+XB56BdACwZ8XYivz4jNG4zoMU63D9Q9KUC4/vr133z9+ttfvn3/eO5r+RJodVVcBwhj3JoY1cgz/uyKewJBtNe/fP369ZfnlXspw1S/ABK5++3v/hjw21FDBzNX+vw2b5SE5vmXr798n6s3pipfAom8SEOfc4DgLylBROAmbyDBiN++/jIf9WgFRIQvfkSSRMAaDSobl9XgzDsBHe4vv3347l6xK3wBdMHyEBNENV7dpwikY6p9/+VXr2VdajYAQRSS9Ge/LU2Zne6CVgL//GtUhq9LCyACICL5UUVg3fc2lnkrAGN9rqCajyV2BVDlX+F+NoC7OUvmykp2KyDaLw+KlvV1bIbwr3Y/G25X9I1ClCH9AlqCIglCq3sbgMiXPwpjoCX1ViSBqiKSsPtY1q4oXwBRhqySTE0fJFSZiqDl2t1mfAHEKUUW59XTJwgPE4BoaMtyGir5SeLhXY1BUVCQL59Uu9uvzUDkiyjQ0PZ6G4IoXzwpAsPXZQ2AfPmECIJmt7tN+Vexn13KQ+3rftwD+eIJUKbjrEsLfPkkAqiAZbdc25dPbyagXIu7B5BAAkF+t0QCwrksfgAKAQv9fklAGLfbr65ABIR/Af18U1CBfi3uNiCN9PslEiCJ0Wo9h4IE+T3TQ4GRj1cs5l9KP/em2q/FPW0g0u+ZVFICQTS0/e1xW1J+z9QVCPb7sreiAAIiXzABElS+FrehiAqISLQUQQKUuBx+AGlCxCSQDcPXvRUQ4AsmkOjb5varG6KIREz0RKDE5bgNEdFoyRAwU8HOpbZAEqIlEdFVBWxzr6uDRkvHrce93gYWSUFotbaA5IqhBDTXJV4NSRGUAtrjqx8yuCx6AlEo7ThdCp9KEgdJoDCaqTuN4NHTVAVo665uM9GTqAAJGJfjscnRUkqAConEVAXzdVk7JECSAAqSHukbooA8SAmQBEmAJAkQlUeSgAQi6a00kTRJIgiCIJImKSVEBURAABUQeZDSROWBJNC3UkpJQECmaaKCCCIKAogkIEmapPcIpImiCoJIAlISSQ8kpT9AJD0QEAEBycEPZgggAiklEREQNB+vazNEQVJK8I4EIhMQAZm8NzGdTJOIQBKR/3MivQnpn0RSSjxMExBS4geWBGmSREQSSAJVEd5MKfGmCKSHPEwAMklJ/mlC4p0piYjwhyamSYQ3RRIkEZEHaSrTR4m9SRCUaeJxElBCe7nbEIAkKcmbKZFEBBElJVSQNEkySQ/kYeKd6Z8SpMSbKfHuRyq8KSJvSAIkAaRJgpR4KII+EngrJd6ZkoAkSaCSEkhKvCkJkJR4WyQ9SiKP3pkSkBKgkoAkvCmAJKbukg5nkFIS5d0C4TyuTUEAUuL9CSQBiICIpCQiKiKPUgJEHiWAJPyRBd6REBAUEpB4p0wEkAQgSAISkBKQElN5BAIggKR/mvC2/AcCSRKPE4iCKggIKaU0kTffIjFNb6WJPKge0FICECCJiIIqApp9NzNRMxKQHgnvNFMBSCIJSCkBqApAgpSSiKgkIAmQRESBJKL6vvdLEkQwU8yUtxPycCLCH5oSgJqqKOkRYKaYgQjoO5IkQIAkIsJDETVTkMSbkhJTEUmQEkACUkpJRGSSJCFJ7EVikAQdPShvCiAJwVTtzmp5MyQJkFICEHQYajkbwh+ugKgIiCSmAjB5mHgzTRKIwBjIo5QASZQcdLuHCknSg3dLQm0okB6QUsI2P4A0naj2Ldh2DyQxTUlS4odO2L1N5IGI8t6UeDx5nBIikBICzHQ4ExjrywVEHjxWpuG4Rji9IbxTUHrLhq3rAPSRgj4AlIcpAQqgCpIeSXqkMhFVEew8h+okCaoIdsY8VtdVRf4DSSACqiCoAhq8HwgiKgKQsHZ0HiYRVdTOuI3VdYRpkocT0T9AFQjRK4BO0jsUIAmqKoDII0BVIAFmYh8SA0TL8pe5I6pmYwCqOmwA5VXNclcBC0PBRlDQ8xWDar4VxVRB1MxMFbBRgoGkBGqhKOgIBqiajQGiajZUJ6oGhLp0U2E6wgBsPfJwrw6qqoCAhWCgIZhi+XDdFFVTnYDGVzaboKoKttY8rr0DagaoKpiKqqkAajaGwRigw3dVtWGmPEyialNARzBTQHUMM1UBNQXIJSUDO5iJ2n18vLypZe9buwMjn2dreVD2wyxvRrjP1QcNvp2+mK3fq98sZwjbed7dKGc7mw+q4T6b7woijOzXczPLrfltMG5/tpaHjnyerWVFy322PMjzs90BQLfzPO+CtcOPuBes+9NvhoZ8trPouFvzRa29XmsfVvzp80AEtWuO53kH1Pp9+s1sdfeIe8e6b35T27ZguXXs3pSEbbdvq9/us90D853hz3M9u05EYDv92e6gjLs1XwzK3VrzRRn59HdQLeuyNCP7kBgoxV2ruzaGe+61Ls3KNe/HsnjCfox+rTbifsRzs+2K1+KKxW+vmIOrxrksx34U7ufT1ddq46rXGm9Fwfxer+hHWddY941S5+XYD2/dzbtb6kaIy1H3NvL8cbWAJMyv8dhX03bc43pt5FrdsmyMdTmuK1tv0S1XH22eYx79qper3kCw69fXsSyn6u2O67g2W488rr2Qa3VL7eN0W3Ef69hcM2Cs+16Xfamu7je9rpT9o7r5CCQBQdtzPo7lCrqt0S1XZ6z7cczP00Jzl6vNwnE8LUubsYMZ5H0N53Jix9Pl7patHB+u++WyyXZcIbsr9xI09M3XfdM2X32MuocRF9+vPWv7Vre7ul723ZceAKHEepYebJSer9dpfZnj5hcXtmU+e3zd5N1tubre9/0OSgINvbf9KNaOPK6967q33vZTt8Xl3oOOvnm3nOGuNY9wutZzvQKAuW/Xdh9XL+66u3draZOlW9vPvi7nOPd7mz9iPw+viI5rPu57/x57e622vS7bnvPdj5oNEVIiftS7x92b9e6vpdnmjrvXb03zsm45Xnnbj8M4FmMPkgNbP1xvz0uHW27jnH13SyZEt/X9sO5iuY5NAYI/2zJ7vXevanUP3cVBPlpoHyd2Oh/WGs9uE/WuDYCRz+b2K/TDdYZbSq81kJcWzt2jp/PlOAakBNb9GZfFhzfKdRS6i/ncvYIy8nnG1xHKdQWKW67b77WTJs9bzR8+z8vp2+7KOdl7uY6im4sl7+2c67q6WJDEiNUb10emuFj6fml/OcW7FgASGndvbPOqls8WZxf85VXPeQ1tPvx51bPE6dxcTaaDmfb6rKv7XkNwNYOf1I6tLvdlshbnCgLWlqstH+vwL6/Yspd8NKO7WPzsMe+ahbXuziuKNecVRO96rG6ufasxYO5V+nUFtrr2tmT0dq24wwCBctUYl1cLzd0W961fV6BH59t+ozD8ccQ4L5Oh2zJX5461qAh2zRua63l/fzrnjjO0I4dr6d25QIhX7/W66tqWuRkqjOiy6jpnLdejslyq2cWAANi1Z6XPMXh3rNfz6M3dqN9bWL/t0bmYrZ+naR6MPUgO2quuLS77Wa79NGv73d3LWzlcKXsdW42hOT9UNRzLVq7nanlvNgnFuaJ+OYefz8lqhH7ux5jcLhY11fV1jvNVt17jUHWv/iDXtfi9WYguh2PpqpPt5Uo/5jWcx23Xq4dYN73rWu69mSndudzbXEdxR9ESl7WXEkwlYe67J6xHzovLvfcx1iOPa+8h1q75aCFc+x639ft3jyCE68jo+soEd/XtdVlfLiVfayAlQOO8Ds2v1i/ne3vWkN0aLH4088/Yey9DLbVLV5cD2jjmM4SS92NzH0tbF1fK8b2e1ytq2A/rRxz9WNY793LMp98/4thqbX3Ufej6imfdNz2fHjuPVm6/nXMdACG+Lp83i894H89l2+oVsPrqm7sCW11Hr7XF3QW79ngHEmxz9edrXks77nHtXc/XdR77rf1Y2u1LcUvzx/dlmJtjD3c9fPbZAMz9upxxjyGsbr2z72Gtebi9aHu5duxe9fz48OP69ZlRIMQjq61zpkz2Sx/cVyyAJDR+7GurS+5uWc/j2zLCtcQ4f2/Wj8Nnn3v3zXB6qgt2MAvxCoCtV3cfi6suW7nm3TmXGW61sJ6m/jiutg1f3bVUP4a/3B3WaGTnnFsD+ciq23qH5mKMXhFgc87Fe2Tn3HGspaw+oOsVSjsDJd4WTuec80q+3NoBQjwuV9097rZZc4EenTtiYPjLXVcetzsut0TjPtwdQnNXdKfppL2W43BZrUcXY8zhbt3OK9Cjc0cs0JcaOJerAAk7W1duVwjtLOE6tVynsrVzgDKZd3c4P+x2R3T7amzxcvPTYz66GNvW1/k8n4fMHiQGoxdFEqV0V/29FdUej7ZtAawUHT0gFvK5DbXu89aDomXrFrphI299wOgDQjAr/sxBFUA0bLcPpuW+txLMSjC0F9NQlBGCoSHnYqChbwMRGNudexk6gmnoBqFvfQA2Np8H2v3dezEsbN2wcPs7QEK1bD3noIKOnn02DcUsFIPRtz5UsN5VQy8GCSwEg1IGGoJaKaolgJWgPNT48vkuBtb93XtRrOd8vDZUQ/Z3sFGa34LyGQ1VBATCcRRToF/XpqaAKihTGwboMFQFUEMVQFUBVQVVRccw5CFgZgpqpoCqkjAFVQFVEpgpCVDjAToMQBUwRVBVJQnYMECHoQqomgI2DBAARY2HasMABVUSqClTNUBBQEAVRBVQRRVQBVR1DBtmIy6bGYiAGYBu63otR0DAhinoMAWSfD4DEqhgrQ2QRPBnABDhoSgPVZgKDxOgAiCqAimJCI8FSDyUxOMEIMJDUQAR3hamKYECCCQBUVEBUuKhSAIQUIDJQ4EkgPDeBEgCRAAEUUCYikjiYQJEQIAkICJYP1trzW8tBngEkgS2GGPLypsi/HSSBlQ0BFMELARDBFRIkABJIkyVlJKIJCQhIA8hAbyVJAEppcRjkSQ8FASSgEgCkgApJRFRBUSFt0V4mFIipSSCqACIAAgJVCeSeChvJRFE5REkEUggAiQRpklEJAEiKSUBERBJYHe83OVi7t0mkERABKxvxRRQESCJACl9ZhNhKspjVQBhKjxO/IBJAIGUeJh4nBKQEiSmIqDC+4WpCA9TSglABEABEVQAgQQIILyZSEKShAAIbyYRkYTIA5IgAjwCBBHeTGnydkogCUAASQIWQgglmII8ABKgiqoCCUiS+EklBiKA6kRARYTHIpAQSSLCVIWEiExEHyRJkEREUkoigCgIQAKRJEoSpgnRNySRgCSkhEgCJAEiILwpAiIgwptJEigJIPG2iAggwjQlmSYei4CISEJQFQVRkOlbKoCAgE4QSbwpIkkESCK8LSJMk0gCRCQB6bOZCjq2XEwRUYUEOorxpkBilGATEJIk3k6CAqQEoKMEBRi9GCA8TCAigFooOkpQAGEqvJ0gJURRBCtBAVRVeFtUQJIIKYGFYlaG8jAJoEIS3lZT3pQEAgggPBRIIokfNMkj4XESERDtXRGUhwKQRHicPp+BbetRnQ8gPBTN0RsooJBga2cAQQCEx6ICwpui6Lb6QYJy+gGogChvi4bWSm/nQEUgCSiIgCrvVKDHNiBhpauKSAIS79dyttDjaSSZ8mZKD1KibANEUAEQpiJMJSGJhwlkSiIhU0ggCXSSEpBAsCsaIpAQEAEQEUSExE8gObC8vNxa5yOgipqCncdpIEkURITtWouiCqrKQ1VUUUVBFVVFvWsBhLH1AWqqgCRUVTG0X65ntxZAlceqIDw0VRIo5CUOVTAXgwGoKiSSoKiC0K+r59qC8lBUUEMRVVXA/JFRQFUBFFBUDRQgCagqKIoqKAoJRVFAVdVQkqBMx7IMAEFQVQBFUVQNJaX0eUy7e7oe/P7yNnr3qw+YP1rYAkLIAyC7WBi5Y1tr3bAt55ZLzr7dA2HkdhZ4IImRN7Pi43oPFYVxt9UXtEdXslsD1tvZjZCD2r2p9s3UtvPsCtb9ue5rUNBt/rhaUdvOsxtAIuS2+sI70H62zUBHXtd76NbWczPK8W3xXbX4MwcQEUbOd/Rh+PUeoCE335XRb7/6MPzqh6LDr/cA6/fZfBmGli0YQqivs7WuiJaz5YGVns87UM622We0cz46aHsdZTucq8cZ7D7Ofp2GNtd1cq2lr7HbvV4ubjrc7pxvr3otR1bCHd11FnurNB/K6uoRO4CW5o7rDFouVza3BsuxHnHT7bh1W1wYMQ7N13XFbNpjPZaPGADNz+/L1S1fR42bIaDhdIdrQXt8ZHk96pWVcF+1tmG3O9y62bb8Osd79Ha56xxAYltqrHs83eK8Ec54XWvXciyuLtfpFncPQjsO1wo9LvW4Vj8Y69oVCPXDHTUWtDfnYrbR3HHEbWvXFXPgs9n1bAZsdd/ueT/veNzmj7M417W7oyBCvq521Vu35dr8EUPYv8c+1m81n0cs1o41exfLPUmJzcWe91hCGBNG6Tm6Nkp0fbvWkI+Y/XGVvKyhzfvdqxubO/LmaglrPbfjVzdIQqlLDppr3PwROyJoKD3Hw48e44Ner80frox2rFsvZmXr3l3d1lcbOuJybq5mpvlj9n75WHx2teD32M+9af+Y/V0/Dn9fRze/rP3cV8vz7Etf68a2x8Fk/7bmWL31y/m8Hne55prDfTmfV3d/Rpu9gfVjz/7lCnlfJ8G7c7TjVCSRj9fubrP2cdznvuT+mjus36KO6O5yvKJv8749gs2t5Z6Xe4AIYN2vy/MIYeLW0Oab0erZXTzdsVz+iKHt9fT7nG8XA+fHJDGOY0CbGyMepyGolTvuT1ceHC3c88poh+9HLaAQ8umeH5v6/UZznVuucxsPnkewdT4Gcd5GfLq8zkfJH4tpnK+g7XWX6DbK7kKel4D616l+b4oKYX92zS4GP9fTu2cs174qba6nPz7iZ7RnM0S3Zdl8PQf9ddntTgvObcdRQGCrz2+HEda5ttVdue/VoD09dh6+v17rutar52t9K4T1cNEPBbS0K7rnXkJ0ZXMtxNeG5rqWdtV6uv2Kd3e7W+Ph8np40+3lBsCoNai2V0bvYzUS2tt1ub1ub53ziWYX+1IVFYa/4rp/v/Evr+NclticOwMC99wwfzTT9ZW7e7k1urXn+VJrxznUz/fm1kKoruflMuhH9NFlRWAsy6DHq7Tvx7rG5eyXy2j8cK1d1X8243zVDWydr+DrbZTXNfzR1K79Wi4jibAd+3O5zdor9l66lf0wtD1vhne+L/XupfdxuzYexY72tsweEcJ6nKEvrzKiK9m1El8Zu5fVtuO5bO35Wku56rr13oN3bej9nAjjqAHW2WOnOw2wePiQ6zIpE/9qqHdtq3UAbM714R5hfql36b0oCe7nxDWjve5w7Wfpvej2iujpTsM/fb9ipyyu5CMajNO9Fj8UHhj9cv2c41Z6H+W6NtU4x633bXw+K9fT9XC/5tvOxSv95cZ9NNV7/1huBUS36/JXvfWer2IWtO/VoD095t0ZYj2DhWD+aAMeDbOwzisIxbkczucrhMv17VrDvcfQryMTll+Xcj+/r6b34YqFYOU68ojfXHhwHVm5X2vozmUV1eFqHv712sobeblCd8cW4uKD6vBHHGX/dnO/mlKOJQ8bQUEmqg/WV9bztY4xgm57VDsPb3o+/Wj1tPsVLdfVgL78OncElFGr0ePVt8NtNsIo8drgPmI2K5/P5Kf7r2/f3r4+bL5/ey/6Ei1fXhnumxuEyE8Pvz6eft4/fTz8fHl5edzr7b7g8esr5S9vfb2uGO+Q4zlsePr58PH0cv/w8vOViP392/3P+z/e1n54uT69/Frr+/39/f3jZt//cZW+PE8lnO5ar3PU47dvL1/+9WUbqNef9y/X68PPn/ffHosgn4eLbq+9r7Fs7rTQXLyONmyLzl1n6Fd18TVnuqvrNu5vP19eHj6M8Ovfv9v3dRpt2ejRxbjmenp7oR5fHjePX9/5cMd1uWzdTXQc/+9tQQL7/n7z8evqw1/uimsPLXYl3NcVY+v86H82CP54+fLl/nHD9fHDjDNrv7ti8dlQAazXp+WPX6/ej/dv3x53fX8vuP664n531d7c4e4R8mYY1uvT+nj58vbyWghY3799+/7yfdfr+1qvT+X1eH//fUO9P2w2fCtAOV2tbbAf7+9/PrwWgNfry/0r+/v9z/erCTicR13PM4Qtj+C7afDOnQG0t6M209vVGNegluN1m74+vL09XAmwfn3gnrvpdga0N7e4u9b3V/zx/mE+fl2pLR7rZhrypiTMfX003Xp8LPZTDtgWj7oW23JQYfirHp/RAO+11ga5DAxDTRn5chtIIFeBq+xaaxmqDN4WqgrYCMHQYYBwlb3X3kXHtdauApdtI2rtIqFKwYaCYCGEAXitXTZEULUKvHbRVwthqIEaaqpgIRiAjRCGoqEMG4COYOC91i4EeBmrKWKmAjZCMCiDy1DbYBaGIWqGottyvyAg2GVcBtgIYShmqggWQhj62SwgugKICFO1ux7ZgBCB6RtAAiFAgAioqvJ26BosEjB9CwmJriEMUxLetGkFhLEZij9UEAVEhKlK4s0EitAPYwUUhLfDUEwrCpZdfSyiJgwlgQIoP6mfDZBAUscmCSKgmtfbkARKFJAiBSTaIAWECogAIgkQoA4SbRhLILDVkQABREARISW6kpBACpKEjQQoAoIqSBJJAiCACpJARBAVEIEkCQKSFEKiJoEgqAJJJCSwAiKaJABJ2LbeGxACZYDwTkkyEfl8JlAAITFvpogQBBIYCCiABAQJIUxEmCYUSDoGLCSwJYQYh76ZClMBBASCDgGJVgpREER4LDyUCSSRBAggQhJUAAVEPwLxbgFhKAAFAZUJklBTuobIIAwSIwRFQBKQhJ/EzwYQQAYUECSQhIACb9AVIBBEtEYAkkAggQBhnNC1YBAiUAuSICEIooJIIoElMAmtQBIISAABFRBEEOFtAUgiiAACCCTBEOSGgEmIAgKSQIlAiDYACZAECRTkRgoSBBD0jm0zICECokL6bCaQDQqAAeFNQUggIhQJsKBAAdJEEpAkCQhJBECJOhAkkICOGAeBIoLwZhIBCQwKIAEIlAYQkEAFFJIIIJIeiIAAMhFQISFQTw0IKIgCpAR0gkBgQAVAAEEERiAiwKDouVR35qAgkpj++Knd7voscHkVFWxbj2V3fguKyANBBBDxLOx27ssMRNFyR1frdfahICpASvy4f7HxppZtrUu9WjeQlPjxt9td2VB0iSRQBSv3euz1OvtQQB4l7xq3u24j2hQBDXc8ar3OPhRJogLieRZfgiqoKqh1f9V6XGc3QH7sLnduPc7ctq33bdt66XeLR12O1ffB9EfMblddvM4R5hWna3z7qMuyL9c99EfNynCe+rq/GLrjvc4dnzWdc8fh3HE4dxzOOXfU/+qyLDV2EMG787heLs3l8QJ4/sD+s+V5+vOh9+fjWJdlOdpmCoh3YSWlki6DY4wRPpuOER6PEcYYITdXl2O9g6LCF8yqgIa81uWIPiggIj96fhhIIqqkx59DRBIP1XpzdXG+G4IIP2qSHHfy2c8fPX12JCUeW/FXXdzZh4IiIKCe5fhrcYjUR/rWZ0u1kNe6H/EOPBRIAuJZgDv4JUDUbAx7c5ipmg1IDz8/JJGURC23Y6nXXQwgQQLhc7goltf3xpZHaNEXBSQhAiRAJ4qApIkIpPQzTATQ3tyyO9+Nz/FhXfbl8b7vxxm6291mKIlpEkmCQEKYpiRC4md7Qvtal6PloHx+FxjncTh3LP+/pR7uuO5R4rF2YyrCVIQ3RSQBKD/rtujiHRSQz2+C9vvO91r3Gn2+t2Ij+24AqqiagoCZAsJUVQFSIn1+CcDIuRjTz29JQM3M7rofPugw07HlPlArPZiVXoaiofdgkAANvfehkISf4QoJNYMkkkif33hzqy93G9PQoi+qvUWf/RrXs4fcYjxzAMH6GWNsdzFEfoZJAoSHSUQ+uwFJRISt7s4/2twSu+p97O46al1qbK7WpR7nAMvxqEetx9oNkc+vxJspQeJzvAiA5kdJoB/71c3u+lrqFa9lr0e9olteMUBZ9+Vq7VjqGeBnGCBA4rN/u4VHm9p97HXN5XZ1r773u77cpuM+9msbIbvFefuZNkJ4K3W/shFi3a+Clms/8ghrrS2Y9liXGL4o0rvua4HQ6h4HhLgf9yjXUqP393nV3fUviPKDWJTQjiUajIl1t/z/61HdUR98wXuj7Q0ejbc2t1S3Tls7wxdEXW0SJnWPAx3X6/Cju+U4wxijlBKUJBnaHqyPltVgXPvhR4m1NgPtORdTpEOmue7xrYGOa3fehj92d4ewrW7djC93bZie+iaDCFt9uc3srq8YlNCWVzRlXHP1pn1d9mNt1763gIh0p62nec2QRPtVY1fNblkDhNPVNmCsy3UPbIu11noc66Z8wWtpbYbRBDCy34JqyX4zsH77rmCbz8XAul/j6nNQQCQ7spyzQQIwMxU1M0UENVNUMVNlaqUUU0iQJDsbRVV4p/BQAQGQB6gqUxGR9Mi0IYHIREQnIjxMgAggQpI0SZIekPO2CIAIj4U3JYHqoy98XztAgiTyf4REAoR/+g9B/kP4J/mnlP4DQISH//RP6Z+EuAA=)

### Watermark

A watermark is a threshold or limit set on memory parameters that helps regulate the
                allocation and usage of system memory.

Table : Watermark parameters

| Parameter | Description |
| --- | --- |
| `/proc/sys/vm/min_free_kbytes` | <ul class="ul" id="memory_1__ul_n1t_4zy_gbc_sshewale_05-03-24-1454-30-329"><br>                                    <li class="li">This parameter determines the minimum amount of free memory<br>                                        that the system must maintain across all zones. </li><br><br>                                    <li class="li">It ensures that a certain reserve of memory remains<br>                                        available for critical operations, such as handling atomic<br>                                        allocations, which cannot wait for memory reclamation. </li><br><br>                                    <li class="li">The number of reserved free pages in each zone is<br>                                        proportional to its size.</li><br><br>                                </ul> |
| `/proc/sys/vm/watermark_scale_factor` | <ul class="ul" id="memory_1__ul_udm_szy_gbc_sshewale_05-03-24-1455-35-986"><br>                                    <li class="li">This factor controls the aggressiveness of Kswapd. </li><br><br>                                    <li class="li">It defines the amount of memory left in a system before<br>                                        Kswapd is woken up, and the amount of free memory required<br>                                        before Kswapd goes back to sleep.</li><br><br>                                    <li class="li">The unit is in fractions of 10,000. </li><br><br>                                    <li class="li">The default value of 10 means that the distance between the<br>                                        watermarks is 0.1% of the available memory in the node or<br>                                        system. The maximum value is 1000, or 10% of memory.</li><br><br>                                </ul> |
| `/proc/sys/vm/watermark_boost_factor` | <ul class="ul" id="memory_1__ul_drl_11z_gbc_sshewale_05-03-24-1457-56-265"><br>                                    <li class="li">This factor is used to optimize memory fragmentation by<br>                                        temporarily providing a high-watermark for the memory<br>                                        management area, which allows Kswapd to reclaim more memory. </li><br><br>                                    <li class="li">The unit is in fractions of 10,000. </li><br><br>                                    <li class="li">The default value of 15,000 means that up to 150% of the<br>                                        high watermark is reclaimed in the event of a pageblock<br>                                        being mixed due to fragmentation.</li><br><br>                                    <li class="li">The number of fragmentation events that have occurred in the<br>                                        recent past determine the level of reclaim. A boost factor<br>                                        of 0 disables the feature.</li><br><br>                                </ul> |

For more information, see [Documentation for /proc/sys/vm/](https://www.kernel.org/doc/Documentation/admin-guide/sysctl/vm.rst).

### Memory carveout

Memory carveouts refer to specific memory regions that the kernel cannot address,
                known as no-map regions. Specific subsystems such as modem, camera, aDSP, cDSP, and
                TrustZone use these regions exclusively and hence those are inaccessible to the
                Linux kernel.

These carveouts are defined in the source code at
                    arch/arm64/boot/dts/qcom/&lt;target&gt;.dtsi.

They fall under the `reserved-memory` node and can be configured.

The following code shows the no-map regions for the cDSP, camera, modem, and
                TrustZone subsystems:

    reserved-memory {
     		cdsp_secure_heap_mem: cdsp-secure-heap@81800000 {
     			reg = <0x0 0x81800000 0x0 0x1e00000>;
     			no-map;
     		};
     
     		camera_mem: camera@84300000 {
     			reg = <0x0 0x84300000 0x0 0x500000>;
     			no-map;
     		};
     		adsp_mem: adsp@86100000 {
     			reg = <0x0 0x86100000 0x0 0x2800000>;
     			no-map;
     		};
     		cdsp_mem: cdsp@88900000 {
     			reg = <0x0 0x88900000 0x0 0x1e00000>;
     			no-map;
     		};
     		mpss_mem: mpss@8b800000 {
     			reg = <0x0 0x8b800000 0x0 0xf600000>;
     			no-map;
     		};
     
     		tz_stat_mem: tz-stat@c0000000 {
     			reg = <0x0 0xc0000000 0x0 0x100000>;
     			no-map;
     		};
     		tags_mem: tags@c0100000 {
     			reg = <0x0 0xc0100000 0x0 0x1200000>;
     			no-map;
     		};
    Copy to clipboard

You can adjust the reserved memory carveout regions based on your product
                requirements. This adjustment can include removing a modem carveout region or
                reducing the size of TrustZone application memory carveout regions.

For example, the following code snippet shows how to disable the modem memory
                carveout for memory optimization:

    reserved-memory {	mpss_mem: mpss@8b800000 {
     			reg = <0x0 0x8b800000 0x0 0xf600000>;
     			no-map;
                        status = "disabled";
     		};
    Copy to clipboard

In this code:

- `0x8b800000` is the base address of the modem region.
- `0xf600000` is the size of the modem region, which is
                    246 MB.
- Add `status= disabled` to make this region available to the Linux
                    kernel.

The following example snippets show how to reduce the memory carveout size of the
                TrustZone trusted applications from 28 MB (`0x1c00000`) to 20 MB
                    (`0x1400000`):

| Before:<br><br><br>                                    <br><br>    reserved memory {<br>                      trusted_apps_mem: trusted_apps@c1800000 {<br>                      reg = <0x0 0xc1800000 0x0 0x1c00000>;<br>                      no-map;<br>     	};<br>    Copy to clipboard | After:<br><br><br>                                    <br><br>    reserved memory {<br>                      trusted_apps_mem: trusted_apps@c1800000 {<br>                      reg = <0x0 0xc1800000 0x0 0x1400000>;<br>                      no-map;<br>     	};<br>    Copy to clipboard |
| --- | --- |

Last Published: Oct 14, 2024

[Previous Topic
Configure](https://docs.qualcomm.com/bundle/publicresource/80-70015-10/topics/14-configure.md) [Next Topic
Troubleshooting](https://docs.qualcomm.com/bundle/publicresource/80-70015-10/topics/24-debug.md)