鍍金池/ 教程/ Java/ HttpClient分段上傳請(qǐng)求
HttpClient獲取服務(wù)器證書
HttpClient HttpRequestRetryHandler示例
HttpClient分段上傳請(qǐng)求
HttpClient自定義HTTP頭
HttpClient重定向處理示例
HttpClient HTML表單提交示例
HttpClient HTTP POST請(qǐng)求方法示例
httpclient簡(jiǎn)介
HttpClient忽略證書錯(cuò)誤
HttpClient HTTP GET請(qǐng)求方法示例
HttpClient HTTP DELETE請(qǐng)求方法示例
HttpClient HTTP PUT請(qǐng)求方法示例
HttpClient Http緩存示例
HttpClient教程

HttpClient分段上傳請(qǐng)求

在本教程中,我們將演示如何使用Apache HttpClient 4.5進(jìn)行分段上傳http請(qǐng)求。

Maven依賴關(guān)系

我們使用maven來(lái)管理依賴關(guān)系,并使用Apache HttpClient 4.5版本。 將以下依賴項(xiàng)添加到您的項(xiàng)目中。

pom.xml 文件的內(nèi)容如下 -

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yiibai.httpclient.httmethods</groupId>
    <artifactId>http-get</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <url>https://memorynotfound.com</url>
    <name>httpclient - ${project.artifactId}</name>

    <dependencies>
        <!-- Apache Commons IO -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

HttpClient分段上傳請(qǐng)求示例

在這個(gè)例子中,我們將演示如何使用HttpClient 4.5來(lái)分段上傳文件。 我們使用MultipartEntityBuilder創(chuàng)建一個(gè)HttpEntity。 當(dāng)創(chuàng)建構(gòu)建器時(shí),添加一個(gè)二進(jìn)制體 - 包含將要上傳的文件以及一個(gè)文本正文。 接下來(lái),使用RequestBuilder創(chuàng)建一個(gè)HTTP請(qǐng)求,并分配先前創(chuàng)建的HttpEntity。

文件:HttpClientMultipartUploadExample.java -

package com.yiibai.httpdemo;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.IOException;

/**
 * This example demonstrates the use of {@link HttpPost} request method.
 * And sending Multipart Form requests
 */
public class HttpClientMultipartUploadExample {

    public static void main(String... args) throws IOException {

        try (CloseableHttpClient httpclient = HttpClients.createDefault()) {

            File file = new File(HttpClientMultipartUploadExample.class.getResource("/java-duke.png").getFile());
            String message = "This is a multipart post";

            // build multipart upload request
            HttpEntity data = MultipartEntityBuilder.create()
                    .setMode(HttpMultipartMode.BROWSER_COMPATIBLE)
                    .addBinaryBody("upfile", file, ContentType.DEFAULT_BINARY, file.getName())
                    .addTextBody("text", message, ContentType.DEFAULT_BINARY)
                    .build();

            // build http request and assign multipart upload data
            HttpUriRequest request = RequestBuilder
                    .post("http://httpbin.org/post")
                    .setEntity(data)
                    .build();

            System.out.println("Executing request " + request.getRequestLine());

            // Create a custom response handler
            ResponseHandler<String> responseHandler = response -> {
                int status = response.getStatusLine().getStatusCode();
                if (status >= 200 && status < 300) {
                    HttpEntity entity = response.getEntity();
                    return entity != null ? EntityUtils.toString(entity) : null;
                } else {
                    throw new ClientProtocolException("Unexpected response status: " + status);
                }
            };
            String responseBody = httpclient.execute(request, responseHandler);
            System.out.println("----------------------------------------");
            System.out.println(responseBody);
        }
    }
}

所有先前的分段文件上傳都包含在帶有相應(yīng)標(biāo)頭消息中。執(zhí)行上面示例代碼,得到以下結(jié)果 -

Executing request POST http://httpbin.org/post HTTP/1.1
----------------------------------------
{
  "args": {}, 
  "data": "", 
  "files": {
    "upfile": "data:application/octet-stream;base64,iVBORw0KGgoAAAANSUhEUgAAAjgAAAP/CAYAAADN77ZOAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd7zkdL3/8VdmTtved4Fl2YVl6Z2lCiggiNIEQaVIkaKgV/SKCoo/8KKCICqIIGBFERUFFbEjWADvRYVruyB4vdKkyi7ssu2cye+P72QmyWTmTEnyTSbv5+MRzpRM8pnh7M57P99vEgcREZH0DQA7AjsAWwPzgPWAOdVlNrDct/5KYC2wDHgCeLz68zHgn8DfgIeBSjrli4iIiBiTgeOAWzDhxY15WQ7cAVwE7JTSexIREZGCmgdcQjKhptXyF+B9wJTk36KIiIgURQl4N+kHm/DyFHAWMJTs2xUREZF+Nwe4HbvBJrz8CTPfR0RERKRji4CHsB9oopaXgNMTe+ciIiLSl+aS3XDjXy5M6gMQERGR/vN97IeXdpdPAE4yH4OIiIj0i1OxH1o6XT6QyCchIiIifWE94AXsB5ZOlzHgtQl8HiIiItIHLsJ+WOl2eRHYPP6PRERERPJsKvA89oNKL8s9QDnuD0ZERETy613YDyhxLO+K+4MRERGR/Po19sNJHMsKYIOYPxsRERHJobmYibq2w0lcy7XxfjwiIiKSR6dgP5TEuawDtoz1ExIrSrYLEBGRXNvLdgExGwD+n+0iRERExK4/Yb/rEvcyCmwc54ck6VMHR0REujUR2MJ2EQkoA2+3XYSIiIjYsTv2uy1JLcuBSfF9VJI2dXBERKRbi20XkKCpwOtsFyHdU8AREZFuLbJdQMJOtl2AdG/AdgEiIpJbC20XkLCXY7pUf7NdSB+YAizBhOL1gFkEhwBXAsuAJ4CHqsuqXnaogCMiIt1aYLuAhDnA6zEXEpX2DWHmZ+0DLAV2ovPflVHg98CvgO8Ad2HmRomIiCTut9ifDJz0cm9sn1Z/mwQcC3wPc8mLuP8/PAK8H5iW1hsSEZHi+jv2A0jSS4X+H4rr1gDwGuCrJBNqopblwHvRCJSIiCToRewHkDSWs+L6wPrEJMyV1x/H3v+T/wa2TvqNiohI8QxjP3iktfwops8s76YC5wJPY///iYvp5hyS6DsWEZHCmY39L7i0lpeACfF8bLk0BLwPeB77/y/CyyhwRHJvXUREimYR9r/c0lxeFcunlj/7Aw9i//NvtazGHLEVoBP9iYhIN4p2GYMDbBeQsonAp4GfAptZrmU8w8DXgJm2CxERkfzbDfv/ck9zuSeejy0XNgP+iP3PvNPla0l8GCIiUiyvwP4XWprLGooxD+cQzORd2593N0sFc2JBQENUIiLSnRHbBaRsCNjZdhEJewvmrMFTbRfSJQf4kHdHAUdERLpRtIAD8DLbBSTo3cBngbLtQnr0amBjUMAREZHuFDHg7Gm7gIScDFxqu4iYOJhLRijgiIhIV4ZtF2DBnpgv0H5yLPA5+ut9HQ0KOCIi0p0idnBmk/1DpjtxGPBl+i8LbAtM67c3JSIi6ShiwAHYw3YBMdkCc5HMfrxoZQnYXQFHRES6UdSA0w9HUk0CvgVMsV1IgrZXwBERkW4U4ZwwUXawXUAMrqL/r8S9QAFHRES6MWS7AEu2J99zVs4ETrBdRAoUcEREpCtF/f6YAiy2XUSXNqF/Dgcfz9yi/oKKiEhv8n5CuF7saLuALl2NuYhmEZQVcEREpBtF/v7I4zycE4ADbReRonI/Hh4mIpIlC4HdMXM3tgY2wByBNAF4EngU+DPwE+B3wJidMjtW5A5O3gLOHOAy20WkrMgBXEQkMVsD5wO/p7OrIT+FuVjgvPRL7tgV2L96tK3lnzF8fmn6HPY/s7SXn8fyyYmICBMx1/S5m97/cl4FfJBsH6l0Jfa/xGwueQihAFsBo9j/vNJeblILR0SkN3OBC4HHgC8Qz5luR4D/AO7DnHY+i4o8RAXZ/f8S9lGK+f/qOQUcEZHuzAEuB/4POA+YkcA+tgLuwlwzKGuK/v2xje0C2vAy4HDbRVjyz6L/goqIdGoCJtA8DLyD5M/oOwW4BTgl4f10qujfH3kIOB+zXYBFD+ooKhGR9u0NXAdsnvJ+S9X9ej+zYI3tAizL+qUODsB0cIrqAdsFiIjkwUTgGqCC3YmTo8CrE36v7boY+xNJbS4vAk7Pn2Jyfoz9z8jWMkZxTmgoItK1rYA/Yv8vbW9ZRvodpCjnYf+zsL1s3POnmIwdsP/Z2FweAo2hioi0chDwG7I132Ia8B1gkuU6VljefxZk9Uiqs20XYNk9oIAjItLMm4FbMZN8s2YL4JOWa1DAyVbw9SwE3mC7CMsUcEREmngz5uyvWT4Q4zTgtRb3r4CTzYBzJtn+vU3D3bYLEBHJojdgJinankfQzvIEMD2Zj2Fch7RZYz8vf+j5U4zXEOZyH7Y/F5vLcqonNlQHR0SkbkfM2Yjz8nfj+pgz1dqw0tJ+s2RzsnU5jSMwZ9Yusp9SvWBtXv4Qi4gkbSbwXfJ3eOlbgN0s7PdFC/vMmiFgie0ifE63XUAG/MC7oYAjImJcBSywXUQXSsCnSP+cLM+kvL+syso8nMXAvraLsMwFfuTdUcAREYEjyfeRJ7sDh6a8z39iTnxYdFkJOKeT7RMPpuF3mHlpgAKOiMgwcKntImJwEeleNXot6uJANs6FUwKOsV1EBnzPf0cBR0SK7gxgE9tFxGAr4OSU9/nE+Kv0vSx0cPYmn8OrcbvRdgEiIlkxCPwD+4e2xrU8TrpnOL41ofeRp2UM+2eVvhb7n4Pt5TfhD0UdHBEpstcDG9kuIkYbAO9IcX+Pp7ivrCph98riQ8DrLO4/K74efkABR0SK7ETbBSTg30mvo6CAY+xkcd+vxpzioMjGgG+GH1TAEZGi2gDYz3YRCZiNOTdOGhRwDJsB52iL+86K24mYD6aAIyJF9RrSPeooTe8BJqSwHwUcw1bAGcT8HhfdNVEPKuCISFG9ynYBCVqPdIbf/i+FfeTBNti5ZMP+wAwL+82SJwgdHu5RwBGRotrLdgEJOxfzL/wk/Q1Yk/A+8mAYOxONj7Swz6z5HDAa9YQCjogU0XxMl6OfbUTyJ38bxYQcSX+YqkT6Z6/OmjHMxXEjKeCISBFl4eyzaTiH5E/f/z8Jbz8v0g44L6P/Q/p4bsOcxyqSAo6IFNFi2wWkZEvgkIT38UDC28+LtANO0v9f8+ATrZ5UwBGRIlpku4AUnZ3w9tXBMbYn+TlPfkU/eupe4BetVlDAEZEimmO7gBTtA+yR4PbVwTEmADumtK+NyMY1sGwa9wK5CjgiUkRFO7T23xPc9gOYawGJuehlGoo+PPV34JbxVlLAEZEiGrFdQMqOILl5RyuBRxLadt7sk9J+ij489QmaHBrup4AjIkU07l+OfaZMsl0czcMxXkbyR62N0J+XGGnXc8AX21lRAUdEiqhoAQfgJJKbe3R/QtvNm1mYI9eStBfpXIYjqz6D6RqOSwFHRIqoiAFnInBmQtv+XULbzaOk5+G8MuHtZ9ka4Op2V1bAEZEiKmLAAfg3YFIC2/1tAtvMKwWc5HwJeLLdlRVwRKSIVtguwJJZwAkJbPf/gGcT2G4eJRlwZpHeoehZUwE+2ckLFHBEpIget12ARe/CTDqOm4apjI2AjRPa9n4U93v7VuDBTl5Q1A9KRIrtMdsFWLQEODyB7Srg1B2U0HaLPDz1qU5foIAjIkVU5IAD5iKccVPAqUsq4ByQ0Haz7kHGuSxDFAUcESmiogecXTCHG8dJE43r9geGY97mYpIb+sq66+jibNkKOCJSRDrzbvxdnEeAp2PeZl5NIv7JxkUdnloDfLmbFyrgiEgRLQMetV2EZQcDO8e8TQ1T1R0R8/aKOjx1M10eoaeAIyJFpbPvwrkxb+/emLeXZ0cQ33dsGdg3pm3lzXXdvlABR0SK6r9tF5ABRwBbx7i9u2LcVt6tD+wZ07Z2BGbGtK08eQS4s9sXK+CISFH9wXYBGVACPhDj9n4DjMW4vbx7XUzbKerFNb9BF5OLRUSKbgnmL8+iL6PAZj1+ln6/z8B7ysryBDDQ28cJwA8z8F5sLD3NEVMHR0SK6mF0eQEw8zviPKJKw1R16wMH9riNIZK/vlUWPUyPk9YVcESkqFzgl7aLyIjjgUUxbUsBJ+jEHl+/K8lcIDXrbux1Awo4IlJkHZ8dtU8NAh+KaVu/jmk7/eIwYEYPry/q/Jtv9roBBRwRKTJ1cOqOB3aIYTuPAf+IYTv9YgQ4uYfXFzHgPAL8qdeNKOCISJH9AXjOdhEZUQI+EtO2NEwV9A66u4L7CLBbzLXkwW1xbEQBR0SKrAL8ynYRGfIa4OUxbEcBJ2ghZqiqU3thQk7R/DCOjSjgiEjRxfKXaR/5GOD0uA3Nw2l0VhevKeLZi9cAP7ddhIhIP9gQ08mxfc6PLC1H9fSJmn88L8vA+8ja0ukV3O/JQM1pLz/u8DNqSh0cESm6x9BlG8I+gjmyqlsVNEwVpZMj1aYCS5MqJMPuiGtDCjgiIjFNauwjmwGn9riN2L6o+sh+wD5trvsK4jkLct5oTpyISIz2wH5rPmvLs8CsHj7TpRl4D1lc2j330pUZqDXtZRUw3ObnIyIibSgDT2L/L/isLZ/t8TPVPJzo5Q1tfH5/zUCdaS+xnnhTQ1QiIuYK2LfYLiKDTsNcKqAbY2i4oZmPA5NbPL8IczHYoon190UBR0TEuMl2ARlUAj5NdyepA7gzvlL6yobAB1o8/6q0CsmY/7JdgIhIPyoDT2G/TZ/F5Z1dfqY7Z6D2rC7rgF2afG43Z6A+G8vCJp+HiIj06Brs/yWfxWUlsLiLz7MMPJ+B+rO6/AWYGPrMBijm3KXn6f0EkwEaoiqOiXQ/li5SFBqmijYRuI7Ov4A0D6e1LTFnjvbbDZhmoRbb/oAJOrFRwCmOl4ALMZeg38hyLSJZdSdmmEoa7Quc3sXr7oi7kD7zNuAI3/0DbRVi2R9tFyD5djgmIb8InIPONyAS5ZPYb9dndVmBOQlgJ3bMQN1ZX1YAO1Q/ryJensEFzkSkB4OYk3d5v1APAQdYrUgke3bC/l/2WV5+Cwx18HmWCP69oyV6eRzYBhjNQC02lqIeOSYxupbGX6xbMYctiojhzQfQEr18pMPP85YM1JyHpchBsNPO4Lg0B6d4vh3x2CGY8c8z0e+ECMBXbBeQcecAB3Ww/p0J1dFverk0Rp5VgH/YLkLybyKwmuYp+h7MzH6RItuA4g4VtLv8C9ikzc9z2wzUqyW7yyMkQP9aL56XgN+0eH534PfA++j+7KUiefcE8DPbRWTcDMxRmSNtrPsndHSaNPdoEhtVwCmm28d5fgS4GPg1sEXy5YhkkoapxrczcFUb67nAzxOuRfLrmSQ2qoBTTO3+y3R34D7UzZFiugVzSgVp7WTg3DbWU8CRZhIJOFJMA8ByOhsjvQd1c6R4voj9+Ql5WCrAceN8lgszUKeWbC4fJQHq4BTTKPDLDl/jzc15F/q9keK43nYBOeEAnwNe1mKdfwD/m045kjPPJbFRfVEV171dvGYC8AnM3JzN4y1HJJN+gQ5fbdcI8H3MmYubGW/+nxTT8iQ2qoBTXPf38No9MN2ctxPz1V9FMqaCJht3YjrwE2DrJs8r4EiUVbYLkP6ygHjGTn8CrJdy7SJp2gidE6fT5Smi5+zNxYRG2/Vpydbiv9hobNTBKa5HMacF79UBmG6QriMi/eoR4Ke2i8iZuZjPbKvQ409jLoMh4rc6iY0q4BRbL8NUfvOAHwKXYy7oKdJvrrVdQA5tiDmYYbfQ4xqmkrBEhqgUcIotroADZi7OO4C7gMUxblckC27FnN1YOjMLE2j8163S+XAkrJLERhVwiu2+BLa5C2YC8rEJbFvEllHMOXGkc5OA7wInVe//ElhnrRrJokROJKuAU2z/ndB2pwI3ANdhLu4p0g+uBcZsF5FTQ5iAeA1mvkU3p6mQ/qWAI7H7Gwm1BqtOBX4H7JDgPkTSosnGvTsdM2T1R9uFSKYkkkUUcIptNfBYwvvYAnP18rPQOXMk/zTZuHd7A2+2XYRkSiIHpyjgyMMp7GMY+BTm4oXTU9ifSFI02TgeOtpS/CYnsVEFHEkj4HgOx8z7WZriPkXipMnGIvGbksRGFXAkzYAD5qywvwJOSXm/InHRZGOReE1NYqMKOJJ2wAFzUb7PYY6oGLKwf5FePIK5RImIxEMdHEnEQxb3fTpwN7DIYg0i3bjcdgEifWRmEhtVwJGkDxUfz86Yc2IcaLEGkU79GF1TSSQu85LYqAKOrML+USGzgR8A56BDySU/Pm27AJE+sV4SG1XAEUj+XDjtKAMXAd9Dh5JLPnwFeNJ2ESJ9QB0cSczjtgvwOQQzZLWt7UJExrEG+KztIkT6gDo4kpgsBRyATYH/Ak62XYjIOK7CDPOKSPemk8BEYwUcgWwMUYWNAF8ArkBnPZXsegZzYVkR6c2mcW9QAUcgex0cv38Dfg7MsV2ISBOfAlzbRYjknAKOJCLLAQdgL+AeYGvbhYhE+DM68Z9IrxRwJBFZDzgAizEh53DbhYhE+KTtAkRyTgFHEpGHgAPmdN63ABdYrkMkTCf+E+mNAo4kYhXwL9tFtMkBzge+BkywXIuIny7fINK9JXFvUGeNFc8fyN+5Z+4GjgSesl2ICOZov4eAhbYLEcmpmcDzcW1MHRzx5DEk7An8DlhquxARYB1wme0iRHJsszg3poAjnmdtF9Cl+cCvgGNtFyICXAf803YRIjm1Q5wbU8ARzzO2C+jBCPBV4GL0Oy12rcacF0dEOrdjnBvTl4F48trB8TjA+4BvABMt1yLF9hny/+dJxIad4tyYAo54+uUv5KMwk4810VNsWYm5xIiIdGZbYrw0jwKOePI8RBW2PfAbYBfbhUhhXU5+Tr0gkhUjwFZxbUwBRzz90sHxrAfcARxmuxAppBeAj9suQiSHYhumUsARTz91cDyTgJsxF+wUSdsVwNO2ixDJmdgmGivgiKffOjieMuaL5nL0+y7pWglcYrsIkZyJrYOjMxmLZwBYS3//TtwCHIe5NIVIGkaAhzHnaxKR8a0CpmO+j3qif9GKZxRYZruIhB2BmZcz13YhUhirgYtsFyGSIxMwB4r0TAFH/J6zXUAKdgN+TQJXrhVp4lrMNapEpD17xrERBRzxW267gJQsAf4T2Nt2IVII64DzbBchkiN7xLERBRzxK0rAAXPV2p8Cb7RdiBTCTcA9tosQyYm94tiIAo74FSngAAwDXwMusFyH9D8XOMd2ESI5MR9Y0OtGFHDEr2gBB8xRY+djrgI9YLkW6W+/BG61XYRITrys1w0o4IhfEQOO51Tg+8AU24VIXzsHc8SiiLTW8zwcBRzxK3LAAXgVcDswz3Yh0rf+AnzWdhEiOaAOjsTqBdsFZMAumMmgm9kuRPrW/6N/zxwuEpft6bGjroAjfv1+or92bYwJObvbLkT60vOYeV8i0twAPQ5TKeCIX9GHqPy8w8gPtF2I9KVrgD/YLkIk43o6V5kCjvgp4ARNxhz18nrbhUjfGQPeabsIkYxTwJHYKOA0GsKcK+ettguRvnMH8C3bRYhk2G6Y85V1RQFH/DTJOFoZuBqdbl/i9w70DwuRZkaApd2+WAFH/FbYLiDjLgSuRH9uJD7/BD5kuwiRDOt6mEp/UYvfS7YLyIG3AV8BBm0XIn3j08B9tosQyaiuA44TZxWSe8PAattF5MTtwBHAi7YLkb6wC/Ab9I9OkbBlwCyg0ukL9YdJ/Nag08i3a39MyJltuxDpC/cC19ouQiSDpgNbdvNCBRwJ0zBV+3bBXECx56veigDnAk/YLkIkg7q6bIMCjoQp4HRmS8zQwra2C5HcWwacbrsIkQzas5sXKeBI2ErbBeTQBsCdxHD1Wym82zDnXRKROgUciYUCTne8SzscZLsQyb13AE/ZLkIkQ5YA8zp9kQKOhCngdG8S8F10aQfpzXPAv9kuQiRjOr74sQKOhGkOTm+GgBuBU2wXIrl2E/Bt20WIZEjHw1QKOBKmDk7vSsB16GKK0psz0FCViGe3Tl+ggCNh6uDEwwE+CXzQdiGSW88AJwKu7UJEMmBHOjw5sQKOhKmDE6//AC62XYTk1o+Ba2wXIZIBU4HFnbxAAUfCVtkuoA+9D7gEXRpFuvNu4EHbRYhkwE6drKyAI2FrbBfQp94DXI3+zEnnXgKOA9bZLkTEsh07WVl/2UrYWtsF9LG3ANcDA7YLkdz5HXCh7SJELFMHR3qiDk6yjgNuAAZtFyK58xHMySRFimrnTlZWwJEwBZzkvR64BRixXYjkSgV4E/BP24WIWDKLDi5urIAjYQo46TgY+AEw2XYhkitPYUJOxXYhIpbs0O6KCjgSpjk46dkXE3Km2i5EcuV2zHCVSBFt2u6KCjgSpg5OuvbGfGHNsl2I5MoFmN8bkaJp+1w4CjgSpoCTvqWYyaNzbBciuaH5OFJUS9pdUQFHwhRw7NgR+CUw33Yhkhv/BI5Ef2alWNTBka7pL0t7tgB+BWxsuxDJjd+gi7pKsSykzdNsKOBImAKOXRsDPwc2sV2I5MZngc/ZLkIkJQOYkDMuBRwJ01FU9i0C7qTDC8tJoZ0J3GW7CJGUtHUklQKOhKmDkw0LgDtQJ0fasw54I+Y8OSL9TgFHuqIOTnYswAxXLbJch+TDY8AhmItzivSztg7GUMCRsFHbBUjAQuAXqJMj7fktcCI607H0t7ntrKSAI2EKONmzEWa4SkdXSTu+BZxvuwiRBCngSFfGbBcgkTbCTDxWyJF2fBi43nYRIglRwJGuqIOTXQo50onTMSePFOk3M9tZSQFHwhRwsk3DVdKuNZgzHT9guxCRmE1uZyUFHAnTEFX2LcSEnEWW65Dsew44AHjEdiEiMVLAka6og5MPCzHDVYvsliE58BjwGuBftgsRiclEwBlvJQUcCVPAyQ91cqRdfwYOB1bZLkQkBiVgQjsrifgp4OTLIuCn6CrkMr5fA69Hf8alP6iDIx3THJz82RTTyVHIkfF8H3gr4NouRCRpCjgSpn/d5dMSFHKkPZ8HzrJdhEiPxg3pCjgSpoCTXwo50q5PA++zXYRIkhRwJExDVPnmhZwNbBcimXcJcIHtIkS6NO6FoRVwJEwdnPxbgrkK+Xq2C5HM+xDwUdtFiHToJdr4rlLAkTAXdXH6weaYo6tm2S5EMu8DmG6OSF6saGelgaSrEBFrtgF+BuwHPG+5FskOB3N6gW2ry3bA9jYLEunQi+2spIAjUXQIaf/YAbgNOJA2/9UjfWcTYBdg1+rP7YGpVisS6c3ydlZSwJEoCjj9ZQ/gO8AhwGrLtUiyJgC7A/sAu2ECzWyrFYnE75/trKSAI1EUcPrP/sA3gKOAdZZrkfhMwgTYvYCXVX+OWK1IJHmPt7OSAo5EUcDpT4cBNwJvQBPJ82wT4FBMR24fYMhuOSKpe6KdlRRwRIrldZgz2b4ZqFiuRdozGXgV8OrqonMcSdEp4EjX1MHpbydijkL4N9uFSFMTgFcCRwNHYEKOiBj/285KCjgSRQGn/70dcyTCebYLkZpJmKGnozGdmgl2yxHJrAfbWWncy41LIa0EJtouQlLxfuAi20UU3NbAm4DTgJmWaxHJuhWY0xyM+w9xdXAkijo4xfFRzDVdLrNdSMFMBd4InA7sbLkWkTx5gDa/oxRwJIoCTrFcCrwAXGe7kALYGDgbMw9qkuVaRPLogXZXVMCRKAo4xeIAV2NavzdarqVfbQu8BzgG/b0r0ovftrui/qBJFAWc4ikDX8aEnFst19JP9gLOxUwa1pxHkd79rt0V9QdOoiwDptkuQqxYCxwO/Mh2ITm3KWZ+09G2CxHpI2OY76aV7axcSrYWEcmZIeDbmDPkSucmAxcAf0LhRiRuf6bNcAMKOBJNQ1TFNhH4HrCT7UJypAScAfwdOB8YtluOSF+6p5OVFXAkioYuZRrwY8w5WqS1jYCfAVehK3eLJOkXnaysgCNR9HshYL6sf4I5tFmiHQ3cD+xruxCRAvhlJyvri0yi6PdCPBsAPwXWs11IxkwHvgp8E5hhuRaRIngIeLyTF+iLTKLo90L8FmOGq/RFbuwI/AE4znYhIgXy805foC8yiaI5OBK2HXAbukbZkcCvgAW2CxEpmB90+gJ9kUmUNZjDhUXCbsV8yY/aLsSCNwFfQCdIFUnbGsycwBWdvEgdHImi4CvNHAp8keL9jrwDc6ZnhRuR9N1Bh+EGFHAkmn4vpJXjgcttF5GiNwOfonihTiQrvtPNi/QHVqKMoZAj4zsXuNh2EQk7DLgZc60uEUnfKOZozmc6faG+xCSKfi+kHR8FTrNdRII2A65H4UbEptvpItyAvsikkbp60i4HuBo4wnYhCZgI3IIuOiti2ze6faECjoTpd0I6UQa+Buxtu5CYfRjYynYRIgW3AvhWty/Wl5mEqYMjnRrBHD6+ve1CYrIb5qgpEbHrBuDFbl+sgCNh+p2QbkzDnIhroe1CYnAZmncjkgXX9fJifZlJmH4npFvedavm2C6kB4cBL7NdhIhwF/C7XjagLzMJ0xCV9GIJ5pwVE2wX0qX32S5ARAC4tNcN6MtMwqYCy20XIbn3fczRVXm6pMMOwH22ixAR/gpsCVR62Yg6OBKmU9FLHA7BXLcpT/+IerPtAkQEMOfY6incgAKONBq0XYD0jTcBH7JdRAcOtV2AiPBXzNFTPVPAkTAFHInTB8nHIddbA4tsFyEifICYhrYVcCRMAUfi9gngtbaLGMfutgsQEe4Cvh3XxhRwJEwBR+Lmne14T9uFtLCj7QJECm4MeDvgxrVBBRwJU8CRJEwAvgdsbruQJjazXYBIwV0F3B/nBhVwJEwBR5IyC/ghMM92IRHm2i5ApMD+Drw/7o0q4EiYAo4kaWPMOXIm2S4kZLbtAkQKqoI5RcOKuDesgCNhCjiStKXAN8jWOZf0d6GIHR8D7kxiw/pDLWEKOJKGgzFj7lmRpzMui/SL/wTOT2rjCjgSpoAjaTmN7Fz76SXbBZ08WxEAACAASURBVIgUzCPAkcC6pHaggCNhCjiSpouAE2wXATxuuwCRAnkROAx4IsmdKOBImAKOpMkBPge80nIdj1jev0hRrAOOAv476R0p4EhYliZ+SjEMAjdhLpdgy18t7lukSM4AfpLGjhRwJEwdHLFhOubwcVvnyLnX0n5FisIF/h34fFo7VMCRMAUcsWURcBt2zpFzL+Z8HCISPxd4J/DJNHeqgCNhCjhi087A1zHXr0rTclKYEyBSQBXMEZNXpL1jBRwJU8AR2w4BLraw3+9Z2KdIP1sLvIkUh6X8FHAkTAFHsuBs4G0p7/O7Ke9PpJ/9C3gV8DVbBSjgSJgCjmTF5cChKe7vfuDhFPcn0q/+CuxOQpdgaJcCjoQp4EhWlIEbgO1T2p8LfCGlfYn0qzuAPYCHbBeigCNhCjiSJVOAHwAbprS/64GxlPYl0k9czETiV2GGp6xTwJEwBRzJmg0wE4Anp7Cvx4FbUtiPSD95AXgdcBYJXluqUwo4EqYzGUsW7YiZrJjG4eMfS2EfIv3iAcyQVOb+YaCAI2FDtgsQaeJQ4NIU9vNb4Gcp7Eck724ElgJ/sV1IFAUcCdMQlWTZu4C3prCf96IzG4s0MwqcAxwLrLRcS1MKOBKmgCNZdwWwf8L7uA/4SsL7EMmjJ4FXkIOhXAUcCVPAkawbBL4JbJbwfs4Gnkp4HyJ5ch+wG3CX7ULaoYAjYZpkLHkwE/ghMDvBfTwLvCXB7YvkyY3AXsAjtgtpl77MJEwdHMmLTYBvAwdgrnmThO8ClwHvTmj7SXoW+ANmAugjmKGFJ4Enqs+Fr9o+G9i4uiwCNgV2xZyLSIrLBd6PnevD9cSxXYBkzteAY2wXIdKBLwCnJLj9EiZIvTbBffRqGWbY4G7gXuCPmDDTqwFgB2BvYB9gP2BqDNuVfBjFXAn8S5brEInFTZjErkVLnpZ3kqwh4OYMvE9veQ7zZ/UMYFvSm24wAhyJmQO1Mub3pCVby0rgEET6yHew/wdLi5ZOl1HgNSRrAPgk5vDxtN/fKsy5ec7BnHckC/MnJwMnAb/D/v9/LfEuLwB7ItJnfoT9P1xatHSzvABsR/JeCzya8HsZwwSHj2HmGE1I4X31Yi9MV2cd9n8PtPS2rMIMRYr0nTux/wdMi5Zul78Dc0neJOCDmHkucdQ9igk0nwAOA2ak8B6SsBC4FjPp2/bvgpbOl7WYM4aL9KX/xP4fMi1aell+DQyTjmHgCMxVyP/RZn0vAX8GbsCcmXkf0rmQaJo2Bj6POjp5WsaA46L+Z+aVjqKSsD9gJi2K5NmXgJMt7HcOsBhYn+BpONYCj2GGtp62UJctm2KG2Y60XYiM60PABbaLEEnSQ9j/l4QWLXEsb0eyYnfMIey2fye0RC8/B8pN/+/llDo4EvYYMN92ESIxGAUOAm63XYgA5sivN2E6OvMs1yJ1jwM70YedxSwcaijZMmK7AJGYDGCO7NnUdiECmMPrvwxsgblg6pjdcgTzj4Bj6MNwAwo40ijrh6OKdGImcCswzXYhUrMMOAvYBXNQg9hzEfAr20UkRUNUEjaGgq/0nx9hzsqqrkG2lIDjMYfHz7JcS9H8FdgeWG27kKToi0z8htHvhPSng4ALbRchDSqYQ+y3wVwHT9LzVvo43IiETcf+bH4tWpJaKsCxSJbtBzyA/d+Vfl++2+7/kDzTEJX4rQ88YbsIkQStBl4O/JftQqSpIeA9wAfQnMAkjGLOdfaA7UKSpuEI8dMRVNLvRjBXBV/fdiHS1FrgI8DWwG2Wa+lHN1KAcAMKOBKkfy1JEcwHvk16l3OQ7vwdMzH8MMxlMKR3FeAS20WkRQFH/BRwpCj2AC63XYS05VbMJOSPY65tJd37DvAn20WkRQFH/BRwpEjeApxuuwhpywrMvJydgJ9YriXPPmO7gDQp4IifAo4UzZXA3raLkLb9CXgVcADwR8u15M0DwB22i0iTAo74KeBI0QxiLueg66/ly88w3Zwz0ZGf7foc5hDxwlDAET8FHCmi9YBvoUnHeTMKXA1sjBluVNBprgJ83XYRaVPAET8dJi5FtTtwje0ipCtrgWuBJcC7gUftlpNJd2GuGl4oCjjipw6OFNmJmE6A5NNLmGtabQK8Hvi13XIy5Vu2C7BBAUf8FHCk6D4N7GO7COnJKHATZvL4zsBVwNNWK7KvkEeeKeCInwKOFJ036XhD24VILH4PvA3YADgQ+DzwnNWK0vcYBTlzcZgCjvhpDo4IzMN0ADTpuH+MAT8FTgXmAtsBbwe+Qf9PTr7ddgG2DNguQDJFHRwRY3fgCjQnpx9VMOfQ+SP1E99NwxyNtUno5xJgUws1xuke2wXYooAjfgo4InWnY646/nnbhUjilgP3V5ew9TEnFjwe2J/8jXzca7sAkSz4POZEUFq0aDHLKmApIsYmwJcwQ162fzfb/f0dTOKDyIO8JVFJljo4IkEjmCuPz7ZdiGTC/wInYY7Oiur2ZM0fKfAFShVwxE8BR6TRRsCNQNl2IZIZ9wO7Yc67k2WFPHrKo4AjfjqKSiTaK4H/Z7sIyZS1mDMnv5nsdkkUcESq1MERae6DwBG2i5DM+SLwRswJBrPmQdsF2KSAI34KOCLNOcAXyP9hwxK/m4GTMRN7s+TvtguwSQFH/BRwRFqbjvkym2i7EMmcrwL/YbuIkMJdYNNPAUf8FHBExrctcJ3tIiST/gO41XYRVaPAs7aLsEkBR/w0yVikPcdirnEk4lfBTDp+0nYhwFOY8/UUlgKO+KmDI9K+T2Au6SDi9yzmLNi2ZSFkWaWAI36TbRcgkiNDmIty6iSAEnYrZq6WTf1+EdFxKeCIZxBdPVmkUxsCX0cnAZRG7wRWWtz/Py3uOxMUcMQzxXYBIjm1P3Cu7SIkcx7FXJHeFg1R2S5AMkPDUyLd+xBwoO0iJHM+jrlSuQ2FPoIKFHCkTh0cke6VgK8A820XIpnyL+ByS/t+ydJ+M0MBRzzq4Ij0Zi5m0vGg7UIkU64EVlnY7woL+8wUBRzxqIMj0rs9gA/bLkIy5RlMdy9t6uDYLkAyQx0ckXi8B12UU4KutLBPm0dwZYICjnjUwRGJh3dRzk1sFyKZ8Ufg/pT3qYBjuwDJDHVwROLjXZRTZwcXT9rDVAo4tguQzFAHRyRe22MOExYBc7XxdSnuTwHHdgGSGZNsFyDSh84E3mi7CMmEp4GfpLg/G0duZYoCjnjUwRFJxnXA5raLkExIc5gqzW5RJingiEcBRyQZk4Fvovk4ArcBa1LaVyWl/WSWAo54NMlYJDnbAR+zXYRYtwK4O6V9KeDYLkAyQx0ckWT9G3Ck7SLEuh+ltB8FHNsFSGaogyOSvM8DG9suQqz6YUr7cVPaT2Yp4IhHHRyR5E0HvgEM2S5ErPkj8EgK+1EHx3YBkhnq4IikYxfgo7aLEKvSOFxcAcd2AZIZCjgi6fl34HDbRYg1d6awDwUc2wVIZmiISiQ9DvBFYKHtQsSK/0xhH5qDY7sAyQQHnclYJG0zgK8Dg7YLkdT9DXg24X04CW8/8xRwBGAi+l0QsWF34ALbRUjqXJLv4gwkvP3M05eagIanRGw6BzjAdhGSOgWchCngCGiCsYhNJcyVptezXYikSgEnYQo4AurgiNg2FzPpuPDzJgrkv0h2IrACju0CJBPUwRGx7yDgLNtFSGqWAY8nuH0FHNsFSCaogyOSDRcDO9ouQlLzlwS3XU5w27mggCOgDo5IVgwD30T/6CiK/0lw2+rg2C5AMkF/mYpkx6bAJ20XIalQwEmQAo6AOjgiWXMKcIztIiRxf05w24U/gaQCjoA6OCJZdBWwyHYRkqgkOzgKOLYLkExQB0cke6YD30BfVP3sOeDphLY9nNB2c0MBR0ABRySrdgXOs12EJOofCW238MFYAUdAQ1QiWXYesJ/tIiQxjyS03aGEtpsbCjgC6uCIZFkJ+BIw03IdkgwFnIQo4AjANNsFiEhLC4DrbBchiVDASYgCjoCZzCgi2XYkcKLtIiR2CjgJUcARUMARyYsrgSW2i5BYKeAkRAFHQAFHJC8mY+bjFP46Q31EASchCjgCMNV2ASLStj2Bc20XIbF5FhhLYLsKOLYLEOsmo/MliOTN+cButouQWFSAfyWwXQUc2wWIdRqeEsmfAeAGdA6rfvFsAttUwLFdgFingCOST4uBj9suQmKhgJMABRxRwBHJr9OBo2wXIT17JoFtFn7qgQKOKOCI5NvVwPq2i5CeJNHBUcCxXYBYp4Ajkm+zMYeOO5brkO5piCoBCjiigCOSfwcCb7NdhHRtWQLbHE5gm7migCO6DpVIf7gE2NJ2EdKVlQlsU0NUtgsQ69TBEekPE4Cvoi+2PFqRwDbVwbFdgFingCPSP3YC3m+7COlYEh2cwl/OQwFHFHBE+st5wK62i5COJBFwCv/9XvgPQBRwRPrMAPBlzJCV5EMSQ1SF/34v/AcgCjgifWgL4MO2i5C2aYgqAQo4ooAj0p/eCbzCdhHSFgWcBCjgiAKOSH8qAV8EptouRMY1msA2C3/iRwUc0XlwRPrXIuATtouQcSURcAr//T5guwCxajI6Z4b0aOrAAGUcpg0EO+IjTomRUok1lQovjI2xfGyUFWNjlqostFOAHwA32y5EmkriD0bhh6gUcIpNw1PS1IRymSWTJrHppEksmjCBOYNDzBwYZM7QIHMHB5k9MMjMgQEGHQdct7rgu+27j7ldcV2Wr1vH8rExlo+uY9noKE+sXcuja9bw6Lo1PLpmLQ+sWcVT69ZZfvd957PAr4GnbRcikdTBSYACTrEp4AiTBwbYcfp0tpwyhc0mT2bTSRPZdNJk5o+M4HhBpRIRWqqL67q+rbn1H47ju29ulxyYMTjIjIEBGBqqPu1WM1B9+8vGRnlw9Uv84aVV3LdqJb9f9RIPr1lNJb2Ppd/MAa4BjrBdiERSBycBCjjFpoBTMGXHYfOpU1k6cya7zJzB0pkz2HzSlOrfhG4ouFDLJ8HpisEHfTEm+JTru+MEg44JP94+vcfqW5teLrPbxCnsNmEyMBtcWD46yq9XvsivXlrBL1au4ME1q+P5UIrjtcCxwNdsFyINkujgFH48WAGn2HR0RZ9zgG1nzGD/9ddn3/XmsXTmTCYPlHEDHZkKVPClFO+1Lq7T6kAM17cuuK7T5LgNL8RQDTpOQ/ipvd7bZkT3Z1q5zMFTp3HwlGngwqPr1vDDFS/wwxdf4K5VKxl1Q29AolwJ3Ak8YbkOCUoijCQRmnJFAafYZtouQOI3Y3iYfTdYn1dusAGvnL8+642MNAwzOaVqxqgAlKDkEjX+4+CGYkyEWiZxwxmp6VCVv1tjngo9HtX9wakNaeHAgsEhTp8xm9Onz+ZfY6Pc/MIyvvnCMn67+qU2P6lCmgFcCxxiuxBJnAKO7QLEKh0i3ic2mDSR1y3ehMMXLWTpnNlmyMl1650aMFMOa6GmGilK9fsm5DSGmHo8cUOPVh9q1uTxnms1VAW1ANS0i+MPQIGb9cdmlsucOmMWp06fxcNrV/Ol5c9zw/LnWV4pfJc+ysHACcD1tguRmiS+ixVwbBcgVmkOTo7NHBnhtYs35ugli9lzvXmUwkcwQb1T4ws2/qATDDklcLyVxjtHmBsZbhycQJ6JfE2Lbk29C9Ssi0OwC1QLUfWws+nQMB+evR7vnzmXb7zwPFcv/xcPr10zzvspnCuAnwOP2S5EAAWcRCjgFJs6ODkzMlDmtZsu5qjNFrP/ggUMOo45iilwhBPmC786LGWGmdxqh8Y3DlUNNrV8AFByqmEn2K1pOpE4zHVxnOCrg5uKGK7yP97QrQk/Xt1goKAwE4gmlkqcPH0mJ0ybwc0vvsBlzz/DXxV0PNMwh45rqCobFHASoIBTbOrg5MSiaVM5dfttOGHrLZnpzanx5tN4DRvXMfNsaimHWrfGqVQfKVVbOl7Q8UJOycw1NuEgvPdaT8XsJ2ricbPQE+7yNJ1b00YXp9b1IXg0luvWU5rjhoKPQxk4aso0jpw8jZtXLOPDzz3No6M6zw4aqsoSBZwEKOAUmwJOhpUch/03XsjpO23PqzZeaM7a5U0WrvHmr5hQ43rDT/4hKaiNPrn1jdef9w5wKoFbcWqhJ8DXUGmYShw1VBVuutS24QWodro1UUdUhZ5rKjhnx3HNWz5q8jQOnTSVq5c9xyeXPcuKSuHPrKOhqmxQwEmAAk6xKeBk0MTBQU7aYVveusuOLJ4+De/EerWhKMeNOPEewU4NNEwqDoYc33wbX6BxHCc6mIw3kbjVY4HuTij5NOniRM/RafZc1Jwc389QIBp2HN45fTbHTJnGe599ku+vfLHJmysEDVVlgwJOAhRwik0BJ0MmDw9x+tKdeMceS5kzcWJwwrDr1M4q7NYufeBSO4eNp0R9yMo/qTgq5ER0cWrDT7WhILchwNSPdqJFkPHWcyPW8R9NVVvTt/+II6p8z5nXRR1V1XAnQv35eeUBvjxvQ25b+SLvffZJnhwr7PeBhqrsU8BJgAJOsSngZMC0kRHO3GMpb9t9F2ZM8ObXEAo49U5NLRu4UBuT8l9SoTpk5fonFUeGnIguTskxz/nuRw1XNZzzpknXptYRCqzjNgaSqPPf+ANMq+ea5pnGYapaLvIdeXXwxCnsueEEznrmSW57qbDdHA1V2TUpgW2uSGCbuaKAU2wKOBZNHRnmXXvvyRl77sLUoSGA0BFRTkTI8dozLk6gm1Pt5DQcAl5qHXIaujhObZqM65112HfwUn29cR5rWMcNbcc3FweCHZlqGqk9En5u3MnGNP4cp7Mzo1Tm+rnz+cKLy/jgv55idfHOiqyhKruSCDiFTeseBZxi02HiFgyWy5yy28584JUvZ9akifUA4Lo4vlATvABlY8Ax61eqL/c6Ob6gM17IcTDnrXHq9/2BJjAfJ2qoyuuIeJqEHTMx2amvM14XJ+o5U1D9dsvQ0v4wVeAxx+XNU6azy/AIb3r68SIeaaWhKnsmJrDNFxLYZq4o4BTXVGDIdhFFs99mi7nksFez1XpzqX2RexNl/UNT1Q6NySzhTk41obhApYRTHYoyw0olKI0TcmqBJtShabjvm0zjPzS87a6N7zGvIxLuBgXm44SDR7NDxr0NxTFM1fj6bYdGuH39hZz8zBPcVbzLPmioyg51cBKggFNcs2wXUCQ7LZjPRYcfxN6LNzYP1Lo2vp/eF3ioW+M4LlTqjZvAvBuva0PJDFlRaR5yvJASml9TOweON1zldVgcpz5U5b021Mlpejh4w7CWE7rvWzmqG9PskHHvxZFnNu5mmCo6Hc0qlblp7oa887kn+ebKQv1DeBpwFXCY7UIKRgEnAQo4xTXbdgFFMG3CCB85/CDevMcuOL4UYHKNP9BUH20298Y/56bimrMS1zo51cRSAadUah5ySk7tJY3DUdVhJKfxORwnEHoCb6Jl14ba6xqCUCBThObVNJtQ7NXSbAgrYLxhqijB1ww7DlfNXp/ppTLXvvh8h9vKtUOBY4AbbRdSIEkEnEIl8ygKOMWlgJOwI3fclsuOOoz1pk0JPlH7Lq93bmqBp9kE49qcGxeoVA8D964CXjFnKMbcDoQcxz8s5dQvo9AQYtz6fJzAUJVr5uL413frr/F+RIYX/0TgyOeq77PZIePV2/VLP8QwTNXssSZdHwe4aOZcppdKXLL8uWY76EdXALcDT9supCDUwUmAAk5xaYgqIQtmTudTbziC12y7ZfOVQkNUjjdE5T+hn0s16Pjm3LgQGI6q3jchp367FnK853wBpTbsNN58G2/CihNx21s5qovTZN5NYFKyF2YCl1YIBRZC64aHqfxdn4aJNaFN+n5GzsNpEHzifdNnU3YcLlr2bNTK/Wg2cBnwJtuFFMS8BLapgGO7ALFGHZyYlUslznjFyzj/8IOYPDwcHM6p8X2hN8y5cepdmkDQCZ3rphpsHEq4FdcMRQVCTnVujdd5KVXr8F+GIXBCv/rQk+O49bk6vqGpehfHm+vi3a6uGjVdJmrejf91rYapog4Nr63qux/eaSC4tDvnpr3hrLOnzeLFyhhXvlCY4arjgZuA79kupADWT2CbGqKyXYBYow5OjDacMZ0vnnocey1Z3Dj84+fW/uPr0rgRt0NBxws43nBUNdg4gFs/K1+1W1Oqhx4qJtgEOjOELsngtXXceqgJ3A53cdz66xqGo7zbbnQ+8b8u8Pk0G6byqb22yTBVLFpv74Lpc3ihUuH6Fctj3GemXQ38AijMG7Yk7oAzBiyLeZu5o4BTXOrgxOSwHbflsye9kRmTJpkM4e/cOLX/ENW9cZuEG/+1purnugEo+bo4JsA4FXBrocbXrfGCjFOdi1M7SsqEl4ahqsgujtfd8XVxvMDjP6LKa8r4OzCB0OPWNtcqwzTr1ni7ayoy/LTYbtPHWj/tOA4fnzmPJ8dG+cmqlS0K6hsbAB8B3m67kD63UczbexpdqsE0tKWQ1MHp0aThIT5zwuv55ttPYeaUyTjlEpRLpsNSLkG5XF28x/33y1Aq4ZRLOOVy8LWlEpQdE0hKjlnPe9z3GI5Te8wpOdWOS/Dx2nO15/0LTW47vm6PUw8P/vXwrU/oNdXVg7d969XGtcKfaOj1DUN8EfediIfDDziNP50mj0fXFVQGPjtrfZYMFuY0UmcAe9suoo9NAjaOeZuPx7y9XFIHp7jUwenB9hvN5/q3nMjmG6zXGBCg8cs+3CiI6Nw4rguOdyi4Q+3kN95wVAUolXBDE4q9ISkHb2KxU59n0zTImMLMqWMah6Yi5+K4XhfHm4cTmvfirRsYmgpNGq4NTfmHqXxDX7XPJ/yh+e47vvtuk+c7mEDc2WPGtFKJG+fM54AnH+H5yljkOn2kBHwO2B5YbbmWfrQd8Tcbnoh5e7mkDk5xqYPTpRP32o1ffvDdbD5//VC3xuu++Lo25bKvc1OO6PCUgou/W1P2d21Kvm5NqR5YQt0Zx9/F8d12WnZvWnVnaPKcd9/XjfF3RmrdkMauTS36+W8EuibRnZv6Zsbr7LT7XG82HhjkillJHPySSZsBH7RdRJ/aNoFtKuCggFNk6uB0aKBU4uPHHMk1px7H8NBQIJSYpVwdcirhlMq1oafgUm4clgoPbXlDV1FBx/GFHO++U3+86RIVcqrBwgmHmupzwflE9VDjBO7jSx6+UFRdJXh7nHWa8QemdtZN0WsmTOaUKYW5Zu17gZ1sF9GH9klgmxqiQkNURTbTdgF5MmPiRL565knsv82WoTkwTbojDRM9oGGSsVs//40ZJqqY4SinOiwFZqioAoFTEnsn8CvVjvk226x4QQYzvOTvtJSqKcHFV6c3wdh36Ld3O3DEVIv7USfaCwxTNTuaylsnfMi4U3/Mu9/yqKnQ+i1PcNPLY/6ngzVdOH0Ov1m9ij+vW9P8Nf1hAPgCsAtQuCuRJugVCWxTHRzUwSmqycCI7SLyYtN5c7jzvHex/7ZbBjo2DV2WwGTiqCGo5ve9rk+gW1P2d2saOzT1YNXOkFQ9/DR2cSKCWav7+O5HTBoO5rp2uzr+fUWt3OR+u90dp/Gn0+TxyJ8tDDsOV89ej8GGSdF9aXvg320X0Ue2AuYnsF0FHBRwikrzb9p04DZbctf5Z7P5/PV8RzhFBJtSda6Nf35NKTw85Q815cjhqcZhqVDI8Q9JtQgybc218U82BqJCjNM01FQfrwUMf1CpP12/HQxCjRkm9NrxRAabiCCVUubYenCYt02Zkc7O7DsfWGK7iD5xcELbVcBBQ1RFpfk3bXjdLjvypbe8icHBwSZhwwnMi6kHDuohwP+vehcc3+UZcF1zJmK3cVjKnKzYP0xSwXEd3FKpdt/7ljcDKt43vjeU5FSPeGoWclzf476josL3ibiP72iq2pW8qZ/gpnY7NPzkUD9RTuASDVH8L6zfr49sRT/f3rZ6fSzae6fN4jsvvcj/jSYzejN//nwWLlzInDlzmDdvHvPmzWP27NnMmTOHu+++myuvvDKR/UaYAFwH7Eu8Z1ksotcntN1HEtpurhSipyoNXgX8yHYRWXbCy3bl6pOPoTwwEBg2Cg4X1c8549TCjm9IpvazutHQ/Bv/4laqAcetzsOpVKBSMYeEV1wYqwQf892n4lbXqy5j4dc32Ya3He8MybXtBOtwvXp869Ue99frO0Gh67tdWyd0EsPa60MnNow88aHvc3Ojnm+2fu1zd0M/zfNum+s1aHJCwVtfWsFJzybzj+djjz2WG264IfK5NWvWsP322/Pggw8msu8mTgSuT3OHfWYx8HAC232SZC79kDsaoiomdXBaOGO/vbjm5GMoD5SDc15K/mGj0Dyccui5wAn9vEPFw/NvyvXtNDksvHa0VOiIqPCJ+4JDVTQZliL4XGB+jP911fvVxxuOpsK/HqHHfT/GG35ywi8Ibcu72TC3ZZz7Fv/ZdujEyewxPCGRbX/729/mmWeeiXxueHiYa665pn5EXDo+AcxJc4d95viEtptqys2ysu0CxIp9gVfbLiKL3n3QflzyxiNwyr75NNUgEx0+Gg/x9j/vVM8k7PjPX+P99AcM/+HXAQ6BQQDvgKFA1yHErT/hBB6r33G861v5X1TrgvhfEOqO+B5zwuu6oW2F9x25LtGdkm6+pxsn9lix6eAQN6yM/zqHY2NjzJ07lz333DPy+UWLFvGPf/yD+++/P/Z9NzERE3C+m9YO+8ggpvs1NYFt/xj4fgLbzR11cIpJk4wjnH/4QXz4dYfWOxzevBp/16ShsxJx/pqyLxCFznXjlMvV4BMdjJzASf1Kwf0HOjf+I6eI6OL4ujYQfNx/5FRNs84Mwc5P5LrhLkx7HZuGVQITn0N1Nb3f6uGmRXT5WHt2HZ7A3iMTu359K82GqDyXXnopc+fOTWTfTZwI7J/mDvvEUSRz9BSog1OjgFNMGqIKeccr9+Gcgw8IhpkmP2vXMU7vjQAAIABJREFUdgrNx3H8R1MFjpYKncnYCzuBzlA45DQJWU70/cDRTKEw4zSEHf/t4OvrX+v14FR/kf/xJh9kVBelIUfFOKQUFcgy4OypyZxm6v777+d//ud/mj4/a9YsLrvsskT23YSDueK4TjvRmbMS3HZqLbysU8ApJnVwfI5eugMX+Ts3vm6JUxtSKgV/hsNN1PlwBsq+n9GHhTfOs6k+Ft5fxLybhsUfPsIBppZgwl0c/yfRpDPjf7ohwISDkH/9cZLQuMFknBXG69pEZLPwz66z0ThzXfYamcg2g8Pdbr2lG2+8seXzxx9/PAcccEAi+25iCXBumjvMuVcDuyW0bRe4L6Ft544CTjGpg1O1/xZL+NyJb6RUu74T0eEhqpPScKVvf8gZgMEhGBoxy/AIDA7DwGBognF4G006R/4hqJJTzSeNgcVpCDPVNxrOGv4v99p7pmlQcQKBp0l3puljzZLEONvpef02tRGEunFaQpdwuOmmm8Zd59prr2XSpEmJ7L+JczAnrZPxnZ/gtv8GLEtw+7migFNM6uAAOy6Yz42nvYmhgXIwQFS/6FueRK8WeHzdF687MziMMzSCMzQBZ3iC+endHp5gAo93+Hm5/vrw8Fj03JtQJyZ8hBSh2959f+iJut2gReCpba6NJDBuAOowPTj+kuJMOfF73cQpTHTi/yv2gQce4KGHHmq5zqJFizjvvPNi33cLQ8Bnyfr/FPsOJ7nuDah7E6CAU0yF7+Asnj2L755xMlNGRoIhwd/5aBZ4qif3CxwV5Q07DQ7jDA7XOzdDE2B4gungVB9zvHUGBnyTif1LVIBpdt9Xc+QQlHfbe3803q5xGp9v6zn/Kk7wrv9eW92eXmTru3WC43DQhGS6KN/73vfGXefss89mu+22S2T/TewNnJLmDnNmGLgk4X3ck/D2c0UBp5gK3cGZPDzEN087njlTJweDjb9r4bUJmoYMX9jxzmY8MIQzOGSGooZGTBdnONjFYbA6VDU4BAND1UnJTbo2jv8cNI4vx/hCRHgYiujbLZsekd2eZusFd9Y0UkQ+0TIZjd/Z6Sm/JJ6uIh0xcXIi2/3+98c/CnhgYIArrriClM+N8zFgXpo7zJFzgc0S3scvE95+rijgFM9EzKnWC8lxHK495nVstb7/7+BQB6f2mH+YJrqrU1vKZZyBQRNaBqtBJ9zFGRrBGfK6N0PV9Qead2cI7a8hhPnqj7jZ9HbgMX+3J7xqk+1GGS+ctFy/Dal9R8e7o/1HJjG1FP9fs3fffTcrV64cd72Xv/zlHH98UueTizQTcwJACVoCvDfhfbyAjqAKUMApnkIPT73rFXvx2u23IfDFXlMPD+F5Hk4gVISuOVUNOJQHoDxQDS7D9bk4tQ6Ob6LxwKBZtzRQP0rKCxzhYBWojeBj3o+mc2silsC6bXxoLTsAbWyjrcwQy0YyZ9hxePWE+Ls4a9eu5Z572huNuPTSS5kxI9ULgR5LcheRzKMS8HmS/4flXcBYwvvIFQWc4ins8NTSBfM5/9X7N35XNhuWieyShIJGLeR4R0WVoTQAAwM4A0P1Ds7QiBmWKg9CeRDHf/XxUrl5V8afTcI11oJNxNuJvJOAyM+ykxd0sY/U9VbAYQkEHIA77rijrfXmzZvHhRdemEgNLVxOgTvFIedi5icl7fYU9pErCjjFU8gOzpThIb503FEMlqOvTjJekyLyQV8YMR0d/3lrvI7OoOngDA77gk1oUnE9wQR3FjUE1argJDopbacl6ykks/YcnpDINXF+8YtftL3uGWecwa677ppAFU0tBt6X5g4zaneSPSzcT5dnCFHAKZ5CBpxLDj2ITWYlc3bZaL5rPbkV3/3oq1BnR9bry5+ppRJbD8V/0r/f//73jI6OtrVuqVTiM5/5DOUmAT8h5wCbp7nDjJkHfAtz3amk/Q1doqGBAk7xFG6I6uWbLOKEpTu0XMdt9b0e+ZzryysurluBSsWEmcqYuT02CqNrcdeuxl27BkZHcStj5nn/+rUAFNqZb/ttFTxeNukmu7hN78Sw8eLYPYErjK9atYo//elPba+/dOlSTjvttNjraGEY+HSaO8yQIeDbJHe9qbBbU9pPrijgFE+hOjgTBwe56shDcPxDKOHv4oYQ4Zr8ULtatu9576rabuixSjXYjI1Wl3W4o2th7WpYswrWrsZdtwZG18HYKO7YaD0IuZXQlbz99bjNg473mqi30+y9xi3ys+zkBV3sI3W9F7BnAgEH4N577+1o/Y9+9KNpX4zzAMyFJYvEAa4BXpbiPr+V4r5yQwGneArVwTlvv33YeOZ0TFDwDxO5vsc8UWHC9b20vq5bCzrVpTJaCzfu6DpYtxbWrjHdmzWrcNeugnWrYd0aE3zG/EGnEgxN3u1mtbm+2vA/5n9PUe+z1e0WxmtvxdI5SqL9lB27D01IZJbSffd1duLaGTNmcNFFFyVQSUtXAFPT3qlFlwInpbi//wPuTnF/uaGAUzyFCThLZs/kzD12if5uDGSHiGAT6Kh4YcB7LBRCKi6MjeGOrYPRtWZYat0a071Zu8os/i7OujWwbq0JQmPrQtuM2H4g8LjBmsNvJpSJWr/viM8g8HCT7UY90GnbaLzaOnkuVsnsaE65zPzyQOzbbXVl8WZOOukkdtstyasFNFgf+GCaO7TofcC7U97n9eT9XwAJUcApnsIEnI8csC+D5eqvuL/pEXW7oXPSJGA0dG58P0fX4a5bawLM2tXV7k29g+NWQw5r15j1RtfCWMW8tuKCW8GtBLfv+veLv3Nkanb94azFe/RnN5rejuochdYLPde4ZkNK8j3V7O/gNtNOT3+Fd5qo4rfp4FDs2/zLX/7S8Wu8CcelBE5A2MJZwDZp7tCCDwAXp7xPF/hqyvvMDQWc4lnPdgFp2HvhAg7efEljl6L6je+Gh2m8L9/wHJtA2AiGGrc2qdi3eJOK14W6N7Vw4+vieMNT1e24leD2W3Z1wgGsraEo73Mg+jatHm+jm9OqqdNsR51mjJbrZ/sfsUsG4g84Tz/9NM8++2zHr9t555056aSTYq+nhUHgavr3fAIXAh+2sN+fAa2vvFpgCjjFU4iA8x/770N0gKGx01FbLRgcAvNswuGjFnKqtysV040Zq5iJxLUOTrV741tYWw03Y/5w1Bhu3KZhh4ggFvG+8N33bjQNeeGVO+/mNO+6tEo+nYcSt6HWfFiSQAcHGPfK4s1cdNFFTJ8+PeZqWtoLOCHNHaZgELgOSPXS7T6ftLTfXFDAKZYyBRii2nfjhew6f4OI727fF7w/MPjvVyJu+34GQkc1nLheQKlUYGysGnLGYN262nAVa828G0ZH6+uM1cON6+vk1IesXHM/3EFquE/wsYb3R/MAVLsdCkl+3lBZ4EUR26Lx6WbdncjttHq+rfU75MuHtPOzR0sGkjkdyiOPPNLV6+bOncsFF1wQbzHju5z++TtoGnAbcKql/T8A/MjSvnNBAadY5kAiJ1XNlLP32KVJmKmuUHu4MQwE5rwEQoRvOMr1dV2qwcat+ALL2Fh9GfWFGe+2b113rFIPN4G5ON6+IoJW1NLJ+2wYwsL3AnzbiOi8NHRPfK8JvySq++N/fa/Bod3QlERgaTqfqLmkOjjdBhyAt73tbWy33XYxVjOuacBlae4wIdsB/4k5DN6WT5C3NmbKFHCKZd74q+TbLhusxysWbtTYoWjZ2fA/3iRU+Loqrtet8S/VoOJ6YWYsKvD4OjwVX4gZC27L9Qcb/z7DQ2Phjk74/bTq5AQ+H7eeeZoOUYUfH+//RETQaPZAL39F+wNdxs0tDyTyF24vAWdgYIBPfepTMVbTlhOB16S90xidANyD3bM0PwR8yeL+c0EBp1j6fv7NW3faPvLLvfWXP6HwUKEhTFQ7K/UQ4gbCTaAr4y3+oagxcyJAd8w87nqhp7YN17ddN9ApCtYT0dlpmJfTLNTU043r/xxqK/nW9fNv37euG37c9W0gKnS49ddGrhLuQPnranq/1cNNi+jysQ5EdHjKwMxS/A3Up556qqfX77vvvhx99NExVdO2NM/yG5e5wE3Al4GJlms5D1hnuYbMU8ApllRPYZq2acPDHLrppuZOyzBTf67xhH3ez+ARUq5/bowv5Lih7ks90Jhw44UZs4Q7O8HuTcO2Km5E4ImoOfK9ejcjOjmB7g1EBhj/4361ABQRjKLCi9vwwuA23dBzEauPLxzOegwnCZqdwLWgXnrppZ63cdlllzFxYqrf2SPA74DN0txpD94A/JlsnJX5d5igJeNQwCmW9W0XkKTjtt6CiYPl4ORbiO5stAoJ/snE4Xk2gQnFvg7LWGO4MZduiHiu0hhsGoerwiHLH758t8NBrRJ6L4HgQ/RzgXASuo9vXhL+9XxL+PHAQ759h4VCUegJ336iUlYL2c03zE6gg7Nq1aqet7FgwQLe+973xlBNR+YBvwUOSXvHHdgC+AHwdbJxmZsK8A4y/VueHQo4xdLXc3BO2HqrluEleNg3oXBQCb7GH2h83ZvIeTNep8a7kGZDJ8e3+I60csd8XZvQ9gJHZ3kdpdpwVSUQcAJhrI0AFzk85Xrdnvr9puGnIexEhZtWHRvvRlS4aSIQppqtkH1zEjib8cqVK2PZznve8x4WLFgQy7Y6MAX4DuYEeSNp77yFDTHn7fkj8GrLtfh9Gl2WoW0KOMXStwFnsxnT2Wb2zGCXImqeTXg4qhZcgt2aYMckNAk4IozUg47XkRmr3w4s9Xk4jZORw0NfwX0HagwPmUWEmqjDyKOH6rzPK+J+k7ATPf+G+mfuuxu83aKjExDdtannpk4CTdS6vTzWvSTm4MTRwQGYOHEiF1+c9ol4ATM96X3AfcDeNgrw2Qj4DPAw8FYg/kTavX9g73w7uaSAUyx9G3COXLI49OVOZEejcf5KeAlO6A2c4yYwGTjUfYkaovIdMRU4R07tMX/HZyw6PHmhJxC0xn8/rR+n8XG8xwiEnYbhqaYdnIjgErgd7Ni44XXc0GvHE6gjYofuOD8tGXHiP5Hv6tWrY9vWMcccw1577RXb9jq0BfBL4PvATinu1wEOBG4G/gacCQynuP92vRVYYbuIPFHAKZa+PYrqsMUbN+lUtPPlb0JNdIfECzNu9DDSWHhycOORU8HDxKPm5ow1BqZAx8i3b7demxsKOy2XputBrevi74y0ez+iW+MG/uO219HxHnD9D7UIMP6HugktobeTViAaTiDgxHlNKcdxuOyyy3ASqLMDB2Pm5vwYOBpI5gRCJkRdjAk1PwaOIFsdG7/r0Un9OpbV/5mSjL7s4MyfPInt