From 6a47ea96b5523da87ddc10d7e582f24062950e5c Mon Sep 17 00:00:00 2001 From: liulihong Date: Tue, 9 May 2023 16:55:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4libpcap=E4=B8=8A=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liulihong --- thirdparty/libpcap/HPKBUILD | 71 ++++++++++++++++++ thirdparty/libpcap/README.OpenSource | 11 +++ thirdparty/libpcap/README_zh.md | 13 ++++ thirdparty/libpcap/SHA512SUM | 1 + thirdparty/libpcap/docs/hap_integrate.md | 69 +++++++++++++++++ .../libpcap/docs/pic/libpcap_install_dir.png | Bin 0 -> 5274 bytes thirdparty/libpcap/docs/pic/libpcap_test.png | Bin 0 -> 9952 bytes thirdparty/libpcap/docs/pic/libpcap_usage.png | Bin 0 -> 24236 bytes .../docs/pic/tinyxpath_install_dir.png | Bin 0 -> 6349 bytes .../libpcap/docs/pic/tinyxpath_test.png | Bin 0 -> 7245 bytes .../libpcap/docs/pic/tinyxpath_usage.png | Bin 0 -> 25259 bytes 11 files changed, 165 insertions(+) create mode 100644 thirdparty/libpcap/HPKBUILD create mode 100644 thirdparty/libpcap/README.OpenSource create mode 100644 thirdparty/libpcap/README_zh.md create mode 100644 thirdparty/libpcap/SHA512SUM create mode 100644 thirdparty/libpcap/docs/hap_integrate.md create mode 100644 thirdparty/libpcap/docs/pic/libpcap_install_dir.png create mode 100644 thirdparty/libpcap/docs/pic/libpcap_test.png create mode 100644 thirdparty/libpcap/docs/pic/libpcap_usage.png create mode 100644 thirdparty/libpcap/docs/pic/tinyxpath_install_dir.png create mode 100644 thirdparty/libpcap/docs/pic/tinyxpath_test.png create mode 100644 thirdparty/libpcap/docs/pic/tinyxpath_usage.png diff --git a/thirdparty/libpcap/HPKBUILD b/thirdparty/libpcap/HPKBUILD new file mode 100644 index 00000000..f3a2eb5c --- /dev/null +++ b/thirdparty/libpcap/HPKBUILD @@ -0,0 +1,71 @@ +# Contributor: liulihong +# Maintainer: liulihong + +pkgname=libpcap +pkgver=libpcap-1.10.3 +pkgrel=0 +pkgdesc="" +url="" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD") +depends=() +makedepends=() +install= +source="https://github.com/the-tcpdump-group/$pkgname/archive/refs/tags/$pkgver.tar.gz" +builddir=$pkgname-$pkgver +packagename=$builddir.tar.gz +buildtools="configure" + +source envset.sh +host= +prepare() { + mkdir -p $builddir/$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + host=arm-linux + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + host=aarch64-linux + fi + cd $builddir + cd $OLDPWD +} + +build() { + + cd $builddir/$ARCH-build + ../configure "$@" --host=$host > `pwd`/build.log 2>&1 + make -j4 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir/$ARCH-build + make install >> `pwd`/build.log 2>&1 + cd $OLDPWD + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + unset host +} + +check() { + cd $builddir/$ARCH-build + make testprogs >> `pwd`/build.log 2>&1 + cd $OLDPWD + echo "The test must be on an OpenHarmony device!" +} + +cleanbuild(){ + rm -rf ${PWD}/$builddir #${PWD}/packagename +} diff --git a/thirdparty/libpcap/README.OpenSource b/thirdparty/libpcap/README.OpenSource new file mode 100644 index 00000000..2c962321 --- /dev/null +++ b/thirdparty/libpcap/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "libpcap", + "License": "BSD", + "License File": "notes.txt", + "Version Number": "libpcap-1.10.3", + "Owner": "llh_01129@163.com", + "Upstream URL": "https://github.com/the-tcpdump-group/libpcap/archive/refs/tags/libpcap-1.10.3.tar.gz", + "Description": "This directory contains source code for libpcap, a system-independent interface for user-level packet capture. libpcap provides a portable framework for low-level network monitoring." + } +] diff --git a/thirdparty/libpcap/README_zh.md b/thirdparty/libpcap/README_zh.md new file mode 100644 index 00000000..ef6411f5 --- /dev/null +++ b/thirdparty/libpcap/README_zh.md @@ -0,0 +1,13 @@ +# libpcap三方库说明 +## 功能简介 +libpcap是unix/linux平台下的网络数据包捕获函数包,大多数网络监控软件都以它为基础。 + +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:libpcap-1.10.3 +- 当前适配的功能:支持网络数据包捕获 +- [BSD](https://github.com/the-tcpdump-group/libpcap/blob/master/LICENSE) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/libpcap/SHA512SUM b/thirdparty/libpcap/SHA512SUM new file mode 100644 index 00000000..60b6a958 --- /dev/null +++ b/thirdparty/libpcap/SHA512SUM @@ -0,0 +1 @@ +3e872265d4d3d85637fa00c5851269f3b03035df7a93b9168bb49b7f3965765e000bac8e65b4c69f42c6090fd2cb7bde0304d37efb453cd71d214088dd37cd6b libpcap-libpcap-1.10.3.tar.gz diff --git a/thirdparty/libpcap/docs/hap_integrate.md b/thirdparty/libpcap/docs/hap_integrate.md new file mode 100644 index 00000000..921f91ed --- /dev/null +++ b/thirdparty/libpcap/docs/hap_integrate.md @@ -0,0 +1,69 @@ +# libpcap集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/libpcap #三方库libpcap的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将libpcap拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/libpcap tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh libpcap + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + libpcap/arm64-v8a libpcap/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/libpcap_install_dir.png) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libpcap-${OHOS_ARCH}-install/lib/libpcap.a) + + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libpcap-${OHOS_ARCH}-install/include) + ``` + ![tinyxpath_usage](pic/libpcap_usage.png) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录执行make testprogs,生成可执行测试文件,再去testprogs目录执行./capturetest进行抓包测试(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录,下图是设备联网后应用请求网络数据的抓包测试截图) + + ![tinyxpath_test](pic/libpcap_test.png) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/libpcap/docs/pic/libpcap_install_dir.png b/thirdparty/libpcap/docs/pic/libpcap_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..54368c3c1355f1001d9e3ecd01a868c87645f0c1 GIT binary patch literal 5274 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 a5_i7&hHdf-3n>1OL;FAY6X(4@fAZg6l5~0i literal 0 HcmV?d00001 diff --git a/thirdparty/libpcap/docs/pic/libpcap_usage.png b/thirdparty/libpcap/docs/pic/libpcap_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..b41bad2a7b93830b0677fc651355f6d64eca36c3 GIT binary patch literal 24236 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 literal 0 HcmV?d00001 diff --git a/thirdparty/libpcap/docs/pic/tinyxpath_install_dir.png b/thirdparty/libpcap/docs/pic/tinyxpath_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf3eb8adaaf3fa591c069aba9369e6d0607cf88 GIT binary patch literal 6349 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 z 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 b^!Vh>hJ?|6()R#*&=;Q{{fzy|sek`Z@y&x@ literal 0 HcmV?d00001 diff --git a/thirdparty/libpcap/docs/pic/tinyxpath_usage.png b/thirdparty/libpcap/docs/pic/tinyxpath_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..676e188a6d5f14109bbb7c907d28ba345c904cfe GIT binary patch literal 25259 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 G=>GvI8DN?K literal 0 HcmV?d00001 -- Gitee From 51bc8e71b7ce8da8c7f145a8ce85fcf693142491 Mon Sep 17 00:00:00 2001 From: liulihong Date: Tue, 9 May 2023 17:00:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4openssl=E4=B8=8A=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liulihong --- thirdparty/openssl/HPKBUILD | 79 ++++++++++++++++++ thirdparty/openssl/README.OpenSource | 11 +++ thirdparty/openssl/README_zh.md | 12 +++ thirdparty/openssl/SHA512SUM | 1 + thirdparty/openssl/docs/hap_integrate.md | 73 ++++++++++++++++ .../openssl/docs/pic/openssl_install_dir.png | Bin 0 -> 7792 bytes thirdparty/openssl/docs/pic/openssl_test.png | Bin 0 -> 13590 bytes thirdparty/openssl/docs/pic/openssl_usage.png | Bin 0 -> 24180 bytes 8 files changed, 176 insertions(+) create mode 100644 thirdparty/openssl/HPKBUILD create mode 100644 thirdparty/openssl/README.OpenSource create mode 100644 thirdparty/openssl/README_zh.md create mode 100644 thirdparty/openssl/SHA512SUM create mode 100644 thirdparty/openssl/docs/hap_integrate.md create mode 100644 thirdparty/openssl/docs/pic/openssl_install_dir.png create mode 100644 thirdparty/openssl/docs/pic/openssl_test.png create mode 100644 thirdparty/openssl/docs/pic/openssl_usage.png diff --git a/thirdparty/openssl/HPKBUILD b/thirdparty/openssl/HPKBUILD new file mode 100644 index 00000000..5877f7bf --- /dev/null +++ b/thirdparty/openssl/HPKBUILD @@ -0,0 +1,79 @@ +# Contributor: Jeff Han +# Maintainer: Jeff Han +pkgname=openssl +pkgver=OpenSSL_1_1_1t +pkgrel=0 +pkgdesc="" +url="" +archs=("armeabi-v7a" "arm64-v8a") +license="Apache License 2.0" +depends=() +makedepends=() +install= +source="https://github.com/openssl/$pkgname/archive/refs/tags/$pkgver.zip" + +autounpack=true +downloadpackage=true +buildtools="configure" + +builddir=$pkgname-${pkgver} +packagename=$builddir.zip + +source envset.sh + +host= +prepare() { + mkdir -p $builddir/$ARCH-build + if [ $ARCH == "armeabi-v7a" ] + then + setarm32ENV + host=linux-generic32 + fi + if [ $ARCH == "arm64-v8a" ] + then + setarm64ENV + host=linux-aarch64 + fi +} + +#参数1 +build() { + cd $builddir/$ARCH-build + ../Configure "$@" $host > `pwd`/build.log 2>&1 + make -j4 >> `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir/$ARCH-build + make install >> `pwd`/build.log 2>&1 + cd $OLDPWD +} + +check() { + cd $builddir/$ARCH-build + make depend >> `pwd`/build.log 2>&1 + cd $OLDPWD + if [ $ARCH == "armeabi-v7a" ] + then + unsetarm32ENV + fi + if [ $ARCH == "arm64-v8a" ] + then + unsetarm64ENV + fi + unset host + echo "The test must be on an OpenHarmony device!" + # real test CMD + # 将编译目录加到 LD_LIBRARY_PATH 环境变量 + # make test + # 32 个用例错误判定为误报, 不同系统错误描述不同(实际为正常) + # 8 个 dlopen 用例错误, 进程退出时 signal 11. 可能是资源释放问题待 GDB 就位后定位 +} + +# 清理环境 +cleanbuild(){ + rm -rf ${PWD}/$builddir #${PWD}/$packagename +} diff --git a/thirdparty/openssl/README.OpenSource b/thirdparty/openssl/README.OpenSource new file mode 100644 index 00000000..56567a12 --- /dev/null +++ b/thirdparty/openssl/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "openssl", + "License": "Apache License 2.0", + "License File": "notes.txt", + "Version Number": "OpenSSL_1_1_1t", + "Owner": "llh_01129@163.com", + "Upstream URL": "https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1t.zip", + "Description": "OpenSSL is a robust, commercial-grade, full-featured Open Source Toolkit for the Transport Layer Security (TLS) protocol formerly known as the Secure Sockets Layer (SSL) protocol." + } +] diff --git a/thirdparty/openssl/README_zh.md b/thirdparty/openssl/README_zh.md new file mode 100644 index 00000000..e1d613c2 --- /dev/null +++ b/thirdparty/openssl/README_zh.md @@ -0,0 +1,12 @@ +# openssl三方库说明 +## 功能简介 +OpenSSL是一个强大的、商业级的、功能齐全的用于传输层安全(TLS)协议的开源工具包,以前称为安全套接字层(SSL)协议,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Beta2 +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:OpenSSL_1_1_1t +- 当前适配的功能:支持openssl加密传输功能 +- [Apache License 2.0](https://github.com/openssl/openssl) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/openssl/SHA512SUM b/thirdparty/openssl/SHA512SUM new file mode 100644 index 00000000..ac9d1283 --- /dev/null +++ b/thirdparty/openssl/SHA512SUM @@ -0,0 +1 @@ +ae7481ddf8df80b033810d92dac28a70342cc283ab715079239928ed3cb333300f10724317f759ca54a109a3faeeca168474353bee7586ec3f6baafd80fda3b1 openssl-OpenSSL_1_1_1t.zip \ No newline at end of file diff --git a/thirdparty/openssl/docs/hap_integrate.md b/thirdparty/openssl/docs/hap_integrate.md new file mode 100644 index 00000000..b6b70463 --- /dev/null +++ b/thirdparty/openssl/docs/hap_integrate.md @@ -0,0 +1,73 @@ +# openssl集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/openssl #三方库openssl的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将openssl拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/openssl tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh openssl + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ``` + openssl/arm64-v8a openssl/armeabi-v7a + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/openssl_install_dir.png) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl-${OHOS_ARCH}-install/lib/libssl.a) + + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/openssl-${OHOS_ARCH}-install/include) + ``` + ![tinyxpath_usage](pic/openssl_usage.png) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录执行make test 运行测试用例(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录) + +![tinyxpath_test](pic/openssl_test.png) + +32个用例是错误判定为误判,不同系统错误描述不同,实际为正常 + +8个dlopen用例错误,进程退出是signal11,可能是资源释放问题已经提单待回复 + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/openssl/docs/pic/openssl_install_dir.png b/thirdparty/openssl/docs/pic/openssl_install_dir.png new file mode 100644 index 0000000000000000000000000000000000000000..25c4cb03db7741a88e384abd636bafbf30e16dbd GIT binary patch literal 7792 zcmaJ`2RNJS`wpVCRZRc^DJ^GPr1s)LBCoMB676a3FkFg(9~4u zP;v#*xoRw;2S<&`dhcE?z5+s~_t7T1?lxo%af3?m-!NsnwPvnMHB(yA7I=qhotd6G z(HDKXuTuyyR-ywE_DvDryg{Sa-J$WQIX3c_7>=8Y-8CgsCB_lD-F3nTSBC9TVd&e+ zGikbM6Bt!;K83J*@M3G&*>%;OL`C5{gPkWi39!_a&(pT9s}KD?js+yaijM7R7d=_P z4(2y8;!4(>aC;SAkBhiIFua0UwZmvcE7O>jRgZmtek)X+Dy58^%zZ4{fkbEe80wvk!^RouRoqk8jV@&JAH-h5oKa#>XerU#p7YDJ zgbPDPiJ!3Hm|30VYWHgH+J$*Fs9geYMX!Mkbh>F!`>{6E3hjVgvA==ncjJRx;V|z3 zC(C*mLMtr7Jd)v{qP%4UW75l{)Z)?OKOH-%+Jvc{6?YeTyNtjS;N8x%#gZVael@VU z!O|damjn0$$nqJ@^3on1BgkzKO}7z~2VdKKRKkRzPbAYTgPI{hpto~sP|9Y3W;jyT zC1$HHlB6|E?VrYm*&NVijxi=ZE?Vg-)aR*VQMM*F8yCxgHuYJ9Brpuob!-jTV31BVf)UHpRG(1S{xHbbDUSolU(o%ku)|q9q@!s z7r@@}P{xJ{_YxNKb(*lrz)N}q=k<-ntc96Pa25J`iwQIc8FxMi6_g!A4?0WD3c7lL z_YthTz=RT%8WDg1`>R<~ckeTtj?bhv)yko7kd%ASxYrW5vom$)HRZfp!S#vT1|@Vf z`sr+#fwWOadSz4J;tPG7F2C&o?C8~*87Ks!W2*vnqy_Na+?&k)th>|50xvXmbwJWrRJ^M9aECQ~ z9RCrVKkIZRqq9g6Jd`F5pjPm2wD_bTr2ipOz(sMl{(*8?jkNY|t!Sn_r77VzSr0^t zJfSKQ^L*n<_8RXl!Yw4>k@m2z-Xp_n)e7UWhK5%enlxhGd`{Dok=*rmZv5oHtVa6w z&YR1Bus;}qRoDcS>ts(rGJ61^CI1QlKmr$O485C?J#}~Rah1b2gap;@+G#`eS-8~` zGF{eRy4s=H4kuoZU9~ou!PpR9S*JAn%T^d88LUbf$x3X9$^sw|nGDKj-5Aohx9kV| zNT+I%HtNtXFOpJ$jKC#qvzfC#EfkXLIA*o2bY_s>f3PbU@tR3Vm7x;i3-39WY;seS zx(FaiSsX6#Q4=YBJ)+!X*EnUb?cUhcyvLt2XfOG%+y5PeZ@G}2DeIhp8=ea-zRUIO zXJbKDO4a~P%~^r0|8Mks0<~kYr1BU3k%{_e1_;pR&n9{8!sTX%X#=H+dmpvVlEtjQue$Le$-Z-78=HDt*N4ix>dxbXO9G^QzU|1KI zD_5!`()x_X`RQu|s=JawJsxuxAz5Rmy0ifi7!bu`^BI0@JUD+>&*lwyNCP|(wSAeU zo76P(EXuS&_8^;PNW6W^J9nNdl{>g6iJ!DFI1{8WBkUMW?h>Rm?=IaF%J-?ff?Id0 zE~+r&v96*#mPy0|X=|VWFh<`*Sac-kW`dVit$fF?N;V`2+W zkRewA@U_MN&SDNSjv#;vB^TKd@!9e|8ATsV|3N7j9v{vYJ)rXB}Qaln~VTtP!L zdZ0wrr}NzZh#lY|@pIM2g}&=mUaOlA>!9!UvXDp~DJ1h)>8HLy z7lXXsEvzVG(i*L){59^N8DsCps^#gIf8E38Ih5x_PH6+M98C&uS_;@bcK?r&2*z5v zQ0^G1-^za8NCf_1a&qDwkm+LfF*H3g#dhA$F=vtSlDEQER*UU%1vSa*#{sKg4T@k; z+40Z3Q~yitI_nC0tS&Nq*79Nx5{C8^N-!Q*NaO@!8Nu|qNF?_63Y&XnZ;N8`a?isQ z3m)+X7e3hYNu6y4wE>JYXFT*4y~bcsrkems<*B;~O$UjX#IJOZsR4Oyu62QM%`pKJ ztpXK9$1S|F4qojsS?Hq{yR0eisy2-8-jyD@VXXRN3R( zscWy7VrC`QkP)kzGj$VP`iQ;^+h1*FotEgHIlWCzKlu3=`MX$B=$J$a8!RiV_pZ@aN$xJ6?m*YOWXAUb0EJ6Xjvyk0G^RU~TTHoeZ*_Wz!_VUP3YSSZ2(ldXjZAVwGFxv2O4u zVEY#!_P|A_g9gd^D?IO4cYrbWm>9r8Z~R}@`VU+aFLrU3KL&*mo{*qZD>U7<^MgX5 zl8zCuxo$!`wJD)Z{SX@WX+DV2Qp>$>t@Abqg#!bkvaQ!T=qf12SMpW3rawEa zmOXkp@MJdA`@;D7dB9s++8;x|9F`F*z{|2=q<9YdEndUN0%-uC9Ik$Dngc$wVfG}OcSszOE z;iOF9ab;dh(L96AcUxUVlZOOkc~1YlkN%l}uI+d9%56n&rDcJAykMN3Bh?_i^Y+(n z3k>y_jP&7G1P^Qa^4%|iZSw{+uG87Jrf(P;Y?0Q`?SAHl6VdfQAwi1GrWN1Ak}|@3 z4|)#Csx$A-?fSf@xxq}i22N7Z$0l5>lXnfb%Pqa} zBjSO9KXhK)9|~lU!)f+A>FdgW>BS>dJH_;8cy`t|P}7&X7m1{VYvbH~CQlcWl0_W* z#ge+D4PPQo^PN@W2woo)3JdsU{5ExT9VdOpicwTHomcW`GsIiC`XE7dAD`PQEe-o^bDRqNT|oSGZ`m=rXL}y;9+Q&O zY#HtSTFYbDHD;@|lcmAAsnuQ+CtP=mUTltQoi#{t!Bj)>u(0^4n3^#jjc_Z)FP4<9 z``nFYdVs3h%QKjwPWn4~hfeh~@a{t>UsG$%S4m%JYvSE!__aA&yG#wa1TCw)<(zow zFry+Eonk|W8TI|3^KEwy(+fYEJS5ucmvL1E%0~=L(ivG~4n=9`@y3Tae5C}tvcUz) zMUlFm@?J#Y+fy?Ug;(zJdoZ6m*q(=xc80?>&Y+d_c0|U2v>Nn8!Sg|P8P*^dw(MS- zpGV8&4lg3GFeTJZ)hO(qo9+S^ALQl0XK>f2-?to3)GKg}3RFApB3kSXBC;P+%R`h( z0`_|yY8##Zans-n@#=onzRvjTq1=9V9T?n9*evxme^pSDW(8R`L(E=pv= zls(Bx*soqklt-+dqqDL=r#|EsWGb9+szarxq4L1VV^&;;h}t#)1?oZbY^BhHv8jKO z?={4A-j$LC$Y$q%+vsMC$J{Yn!FKOgjt~X72KSxVdG5 zheXYr@Qu)zlg7wUnp`+3UA*$PMaLaKhoh_fDpN>$=B1b8< znDp5wCT0n!+w!i-$Y?CL>wiK|HrgwuR`m z>#;qrg<_!;YvcO9G}9)S@YCF{?9jqpEvtI#4&+_mc#KQPUx@d60X{4@oA6nH5caQ> z#X){kk)Mt8_aR0WO}F~FD{8@4iJQqrYnDPoAJN+CtuAjLYL-ZVmCuALD*ReSV_S=Q zna-X+%-87lZEcH*km7z@nlDCqd-`J+@E$+MVvwZw<2#e%G=5cI;!J!^Ci``1fuZ?pkQJDmPDssi^f?u0-%DNFz1Y3H&K>5A7Z6{yhFj&scnL*HqZV!s{77 z@m6lmcCkzi7rlzXom@!vA5Bi{>YCuNacghNLUkwrr{-lMYy$QDP5)*=@m{E}!!YsV zQQCqJOQrIb$UMge_`Ht`qml+tlmBrlUrIjVwgq1b+M)g;=>a%b$N2i-h|S&*}r9@j%<3rRo3EbMo9_J-Dq z9{diVRiv#MHCFw1)-GJ7W-Wpq>B?D5klqpY|Gy0U(hkIFbGlQAqTf&E^S3(6Wxh>6 zOr5y4Xy*}YK0Zxro&2y{lyBR+$DF>ufma`Bu^;GwlV8Qv1Lh(V6=v7tc)jQuLZ}QU zzOGKjlfmY}2ak6>_xtoDPp_*HF(T+9PM6~=qrSp@yx}aXOjOUWw$ldPPEB3#VYI-i zvh)5+#6sf0=hvUbwQqK2h6k!8x}{2ZzoDRRmts%&rQID0q;T^~lWy-tg~!SC@raa* zn0@US&KA9#UB>;UD&P*z#KD_#_ej-rICX*?lOy@c;w-n|BW~sqiiHmo)RPy)GcJG) zjS5I6H|~Ee(KfpW5CZd#?AR}^{iUYqcqfbi8_N#Ey7%*UMEC24xBnpP9zpRR3FPJ# zy?M)6dd_ff>1pZ7x5(Ogg?H+r*SD0>Lso`fUK2y)P2y^A>N@wXeYUUMqFe=~t`qh} z<9N#I=0erVx%Y^y6PL5S!-;VgljkPSyzs%@98b|kQ@Zn}oO^@k2Q}&N^!#4>o2|>ji7lc=0lO z7P+@dTyN5-hA7l-;5mnvf0`Xov*Z=q?{tqzJUsup{$tM|7Aw3% z2WJH3$lHdgWo5B+uN}8C(Ut2|g5|{^7H^C?8&K53TQ|-;84E55GqW_YH{@~gdAAa5 z(PR{gj4b8YQ`^}qOp1KZ^gKUvChy1*h4K8w^rsRX{!RtfpeS0v0}qH+ga@jpXaCI_ z|95)dKDMGy%^IbBc;CCvZL)3~qjsDi;%a$g>Q}D5p>Mp9mnKH2)HC*)E3?aTj9f};p>Je9YhFt;`9(!mB~Lx394~f z@^tY*BV2Ft7Gw~Jcnvufd|1K(?F=w|({4piV6N{@BfF}TQ|vYCz#kbz+u0I}57W^C z5yL|*=SuUqMe+0v^bUr++nlaL)dXamz3xz8XUP?!>I?}Jd7d-hgr|!ZJn{ZW(mQWM zgH6L?oa{>bQoA?AvxX7SjX2jI zZ>p@z8uY-Xzv$lk#G=x&G4k~lQF4io$oSRBot6ZSs|%W_kN|r+H(Ja9i0Nl(M|2Sq+}6Bk4wqb($_F5LsmOHnrkFWv9rZK&Z`W`(! z&}Cts%P@KiDrvjyzqQarX&!NI>1-b}!b#A1;*gTUgBBFZyX^J{{eCV3Hxsb#G3Bjy z;Dv-YGJS*;JAw!tVOTk_Uga~q*rClPOZjrjvDj{q*sQT2qfI#jt-OgdlAf#%We#Za zQD0cI86I$cTDf6uH=fJmk3e>f$wanaArWH?JgOb!w-#&43G;OAEMw@nt)?G>%i*v* zaXLYrKf}Q0UnLm={#yAI`msu+&Ur*^f{c?0nzZlM@ge5IY%fxGvouw`@kDCN+>uGx zN%-81(#~bbr*HTo6g`{^H*+kTbZXPqm37G7S(2NM2pu=A@oc=+1}9P8ZZ$sckIEw! zWH)qMOo4R?;il(~A4_F%V2jx3Ej4?@d}%n)UgXkD7Ja-Hw1Q{xDco{7G{=tLcBUsJ zyF$430)(@0BV?yNej{Eol3U8o!^yYSaCrjNP8Ujv(5swBPn!r=4($$C=8EN2@25<= zwvsMw!-~4SMeY?Y8JsHZOnsuJc=ublB8+Hn>WBDA7kM(v%SdI(CcAog-w-gew0v>;Yo5=T;Yyxvl+k`Qeqp=QX!<;^tifkOh9qIKU#;36gF}~Z1;TPA z`5n99s@QC4_!%U^HoNG;nP8|OZ88Vac6e^G52281b>5Q8kRl;~a3g?Dr1Gs9|o368TRQk7y};3we20!WZt2c~lHroy0tfy(q#D z=@tWKDk6=H^F6-qw@9fP^CNDEOG3gbT$)dJ%4X6xEJXcf zFfFus)2ZbZg-E!zd^UOiwm&cw?5%rjL4vw~SNOZU7b)ov#!-7t-;nho5qLW+O&2N4j+ z+_W*#s7+Jyo)Br&RQx#AVP!WhC_#M)p`DX6A>#px!*K!@< zeb0XPd(PQ=Kl|C+3xA7=dgb4?{F|Gb+bc&tJou@b+w&MVx948`(~IDnje>J!V0bR? z)2I*J+9g|O!G{;H?|<^Xn_EZ4pVvP7Bl!H%7au0%fm`poexDo4zJAKhZ6EW?mg$k-35E7Wlh<73hOy&PCZXRmJEF+^J% zqOI%E>wf@J-S&TZcJs6G;{S4-m)@C=TsKD^K#d$#Q)t|^xxD9r;QmR|o#;P2wEUF` z^U&wesXxtp_rmCAkg`(+3n@S zT@-`1>ymjXLHZwN1Z%q`uE~=vuOBAc8e?7ox1XWa!D@)jTf7yW;{kACy0>iGRh=> z4s0d!c(NO=*IuAG4WXD@`Ww&xdBb+s!znp?$d~+RrQ6c;-g9ZA_SgUggInR7|DWUI zrn9xq^`6edmpnbEhsilXOD-|FYlAPlMxVhu|Ff~ca3EXQ9^*+#^%HIV%i7`c>?pVTHTse4-*w9C(ex z<`nct670U}ByTUp2a1_B5#@FBOz+IO1cu?W+V&=-s9*{$P-t{81i$kQYJne7vOxarG?dl)3%%O5RckDWyw#Cx;^8Jc%9ATk#QNsj86izqp=U(d#*@tKR)3x4d$@qP&ZG(9ygX()q=iHYhG zjO!mqtC=zzqUg<@49w6+?r$}lAQ#4v^%X|!6vvS=&8$1WjDhwpW(vhD5C8M`npPbYtVdE7LOdc$r<=@;} zxq?u8$Pni6#d4XYFTLH!Ix*45?JOdo{V=CuM7K>P0@~rE+|?603+20`In}jJ5*qY$E}|yyPOmwN!IUQXBfa*ucUK=w^hpubK=C^ z`6xwH$K`lAkMH-ydn>#KzIZm{P%wv_SbLO}!$g(>1f#2lb^HRF$Q>>tS|dkYYv4#X3h(;w;45=K#63jRe$_Z{RIp@ z1Ba(3MOmPE3|Dx#RYBqvZm-jT16PUvdu;yv z$#}<)ppl(|f6B(sG3s{uXfo-Nu?8_VYJ5@5960mpHwMqsIqeW5q9WZ?Uxcg=}En}oq3T< z`$Fy5U{=_MAPsIYlhW7S*22!9^VTArf44!MCp}O;uZ@>PYV*m>3*zayI!zAle|N&7hk zkNorAWfvfV`yL<}&RzXXXrvIaoDmL`YgZz~l3efJ$hu1!H@C<5`B02HvMp=v`T1#4 zWde8oN)g$)D;v!udsAAQMkMw0Kyt|{W39b*CDi&b0j*ZRd>+qk>xa#9M4QA3G&SV*^Rxd>pYD0fUqxKQ*WyTn{>mFKq{YGvm5v(ib zDOfZ4=1!!Ao}yTgSCWT``TXv>@PYQ9RUb#U!+VFU%0j;v!FEPDcTL@o3Z|>Gl7<*X zieU>JYHr%s2T7z&5eK8+wsl|o)Y2wucvZ|@OtjCmLk4!y8xy5F7%P4HNXJF>d{$e_ zT;EE@fqk@lUyYB|?H<#MM{C{P&gd@nKiH`VX&N{bJmzvv1H0lX+OUU$VeN<>#(E{j zdc~GSwD`4&+DTbP!g*~);XNjLlh{1zpN@pLHVyUiozd%M*fI=hvC_h9^pbuj7EP#1 zjW&#m8t-=7)RVi%{J7{?WO!@Ip99gB!gvL@K-V@;DdwsrKB$iM%3wz0nB6Gp@2WW6 z?uk|&kmc!n&W)vG9Vp{6M~&(~N?WbH>1E%9VwEF^Zf-G!(v-F zFgiQF3b>e}uE+<51&pyRl^i>tXk$wltIccY+3h#**vGxdHWTZHDV))`Gjh^j{}LMs zRxyp>yk*7pGFIsJXe{;h%TGn5cNJEWN6# zwnQzy4Xmp7L@0WZRNQu0w=Fw0xuE<0T*mGe`#!d0@L&~lCb$dWknrX4(}$~`cRQ)* zn5cQKFT(M>bi}@Hb-%cO0&BPGzy;3@P~KOu>pxnTohyG^R~AM9d;b@Q@c*DNS{cp# zV7>U6Y5Uh_=Y60!2ID6fw`ISQVBbV8w5%3%FU)1M-IZ)gD3cgEIbR{ePxW}y@dUYK zb$hi8K*{0vYJPS%oh=7Z?SWyXveJUhx6*R?q8d7jJ`huw;=onSe~uSR)?zYbqP944 zZsrv%$;>R;u4l`icYEUX#h$wm*@h;S`(dsQ882_jAv-U2R3)=VCyvCnP0+h~F*4h3 zY3Rk#%jxd2{eh8v*udQd;6)c+dave=Y~@Fe`Oaz0*~do;oVU37)G9-@{ixZOO|AGQ+OzSmaySKQi@LTj%-M))@>_-{L3+%*=2rCDM$DfK)W?itoGhAKA722BhF&BH z@}HEsCuCJ6AHB>|q^A0*Q05ERpO#O!JViV)&*k`f9Z)EEqkZ6wqI3s-loU7Ps91+L zSJ4lrRnZ*=JweBASJrmH`ckb4F{Z00Xa%(RRvN~~&8_MD+0D-D5pUun-b*XcRiv}8 zF`;N(^YQOSnp73(*@FyRrk8!$!dyvcYpIhBlY^6GMM7Z0(=y-5~V~&@DWP+Zv z=Pr8cYk%iy~Q^82~pa62|Di(Ig?Z9@Ac z>!FR)sifCk#~$7{rsXF^?L!X*CqEAsbL!-|ibVtDUL#e2Mz4pc(IDCT8GLuU*xL8r zzVQM3pWWPcZ54so=Jw>X|2!_ZPfZ+}U9<1xI_Z@-htV0IX5P;26c}aAFt3TLibtJW z=woTvKeG$&=K>KEu4VWMa*pXP4vlyZsYk9PE7#@(lQJw6t3xs@AVSry_)>E-L9mSl z#zhkq{Y9{Nr>Bl!KfC&1HJseZZ`C2ynUu`wtagw$E|j}$WaX^@NJ)$PV6Q}5Fw>K= zqn}x4V(A88y_|R*vNx~kI69Xr2gzL_671a2)3-7rU&h*6BY%0mtSHbgsK+|v^YcJo zhX*V#n*~3}!LMmofx0G_x(gA1!a}}{rG3$u99hDe6G3c02nj@r>hVjm@kD)zgrio2 z#O`(rc9_avpxX$*|4J&Rwls$4{qK8Fv9z$4)lU@XIkla(w;GP&OmEOmYGs*<$IPs6^ zO~-*kPmTgd5fn@N+G%xP;`O_Bsr2mT@+Uuj;b{s4S`emAx)NhI_kWDm_Xp8_Q|xbD zkY_@7|4#JAmvc{lZ+q{oZF#qYqUTEy;K;ijci|T6-CdBRrW`wEg1+89;i(n?LvrQ8 z;qTQ@YR61=;~K#sSg>AAeKzHB&hkku|AcQ=9&CrA`&zU8X4_yX*>>V}(~o(Em%X^b zA=$G<@zuktAScTFq>2-46_gOe5~nnnd`!df4M6UjDAJyhpn8Z66|LLf-Ay(P4D!p< zpc(CxGPZ~TFK;8oFIe*r*Y!pGferVVf`XH0~(lRFgFyG+|>a_dae>&%02Ut>q`D$1Oj zz~8P>$D3Qgc7oAEs|Yx$gT*V0g`u@jk1u<@kc) zG5zC6B85E_2NK7bKT6F_~mD;$g>7m*1a=k~dYtx@?AsF4x1plk;Bi%9Fb?*kk zI-!W_n0SA3;?5twFNusiV;Yi%EyOA|Vz{)&YDe+P1xH!%goZ-2v8Ca&MXK+1FiV#Z z6K@40RDWeB{kf^w^vaW_&PeEX!kkV!-Byll|06GaBc^(PM}LR5j~A$pI7L(XFxR+q z5#~8EA;tN*Yt~&V`XV5oey0_3>yW;D)#e|ppQ9Xp%*M|(Jy(a8a8SCSvggue&Wpi=KA>v5sxb%&<5T4f@{T{&1Vso@;lE#LGz<=fcaT^nf5cEZt_u zaw8|jT|ty4L+W&=Izamn4+ytVOuPza-y?GPRc?v)6|Kjrai6GYlxM`as!`erRptmGk6&Ao#{{HeU~j`Qte z`Cop=^w{7Klq(gy%?_jP>2sV#h%1(4kUxY(LZgIBzOCkm_}7`nmYRDUCoW#z_Zq|o z(^`&1tTzxoU9xHYg*cBrS^xEdGmj{P-ML?3%HJDd+J9zaLKRASR(dPV_Vkrm*e_|By7h=AaymhcXhU2nPXb32X5}{52tm@ ze_8aWTOTS2_qMmP@u-O?7+zgOH&6Nz(~kw!H?d45t1+xl==!-@3)cGGKamX{3`^&G z3m;SGPHKOl67J&IZRxYT_KJge)VRdMId7as|{3P!b8a;d{*mpN??QfcG5LueTPt?Xtor0yL<15M#%{~dj62Mn5 za}n$9r@K9yl*M3kzD|mt`aOq;$LpGsJf0o{X%d%q9cFH+Q}S7&8}eH+<{>;PX{gtH zD45*>P>K34mic*>M^l=v5HJi3zY?j4jms1O{JTsJz!B{`#-@gB~okC*J5if z)WUIGx{fW78yhP51krpt#vQ>DOXm-SE0Gq_j3~0lXJOdsBN}u+WIY?FDW*GBD<3Eh zDo`RVpX6n-o)0i-0NnTSmaZ}r60+YI=_H24i%SkdF$(is=6=TFF*83wRr7`>R-_0^ z#O5WSj7*;j!^5zm;u-y}oWSf<*~K|hH+ra99lg)Lmo2|f;vC;TcSAc?gq7fE-|Fv^ z@L2_A47H?u4y!$u0|>($h^27xqkaB;8>q65vk8_1c(ULP@i(`srGO&1Z26Eczrn;c z7k2nlvCUXuOU-wo-oj+&z9#6$chv)tE`<-zu9Wd)wx+r!$i)&2!tdvKjq@ z=yxM7+bosGza7aymAZVVayacfX~|qh(hMrGS_5OC=q~2?*E}Vn8HCVf};*MH7u zkS(dnKk3EC=`R(vq`KI8cX{9X6X&Y)>Df)UkF3@Hp(v6n`8y5fgsk7TZ>BB06j%XY zb#(Daz#HEN5ZL9Fe-FuI=Gg?RqCaNc^8ICw>&nTYOJ{2%_I-}Zyf(t!8=9LdXFn!N zr}h54E#T@CPj7o!t?hmLV6o{k6p2wq{B69kA2(0AbcEC+PA>C$I5m8Soh%v&+VRFqOtHWlGe9nBpo%G)>Rk zi8e1ODVsc@6yWIkVpx&Tp;9b9&iF!hciZgnT>eII+taj)HN@cjSz;^KOW{iHb172M zn&13T5>yHW4>(kkQHGb2h%aotzVy%8lYlaT&q5}C|&G9@;`75x@sfE(T)0+C52 zHvor+gg448ELE64Ir1}nGTU?m>k_9H`)=Umc*~@s8Et1^raFU2#p%&I)gfDn0K+CHkrYm7L0j0O?QThp4H~ zw&?iX|1w3KKf3@CyL1tZfX#9Q8kFRQJ7iL|Q=p-MxwrjYo8;Id+%Se6r%n)b{d(J1 z+(1DwKwS#}k_$uz8-?KPqoND#ljJvn9Cq&i5IyZhNgr$l0!|Km?2d7*hPrgNVMtzJ z;y=En=*T!HM(|cES7g12h;IyO+XZ9UsZetZpx+1>m-_ywf<5MlnYrVYO%Lg5sY;Tn z_EOgR`LsM{Ftg~pF~tq9;5b!u(onPDGK%j4hHn9udU}-ly(MC1)Q4W0Qh6PF58i!v zA|17x$vp-4XK->ZY0m9xy3~bKDEMIR_~0P_$3+jA-h~{wE^fCpJwa@A_I9;o6+lKs zje8$9WEF8EOD+U(Qwk{HrYGN3dyBRilgYNYfXm`}fc%)+G>oD`i_{lj3NtdXj(Jim z+Q{Sy6pK5n7fJD2Fv-ooe5+{s?)T2OyeQYZ@UUxBsDKuISKAJ~jB=t<3i7LS<-}kZ zCNI9yHq(R1KGrf7_es^|ThqLBZ!7X--`Gg9N<=crB0n^3ah0D7BdR8HcW?&J>0#el@E16{jli8lrF zst36ItYSKoXfZK3wwv&CAVP0kcxmzOW zbS9@Zo?k*lPekRNyChr+Md*!2y*v+Yp~CNw<*#~#D29<4=nyQHPPo?exn`x;;mh5- zp4=t~Rpt>eb6XNk76PV3NrZAD?-cs{tSO#f;R`b2G0Uok^|EQWQ0+nI;8Ey!$iO>( za$%cDxP)+wjGt9XUTmV?I_&i6r#XB?E}qZ6*QalYXZ7{5 z6Q!0%b_=c#-6XRO>q{|ZPv>AJoOT7y>1tYY8s_11EKK_})|z0EidIiO%xmXGGEK@E z4j-%$X9iwNVaN2ZBi2O${&OrXc10rc>vG5V?#PG{E|Jb5JvEt0BMwkwd5xO^P(??w zGFn+(GYmLya&R2DQY8`MA2Fxmo?WBYs`#fmB(Ri6qY>U5d`Np*&y~wk`HYp^^ZpVr zji}&FDxD>sn0Q&kD~ghF>njQ=2^koAT)Li9BUaY%Bk$A)L(#Z2bR4^#(^JyOvLjPq z5&FYyb@lhe#8z{BC6`C?zU*RFL+|Qs+O(j0P7pcLcW!Y~wnn#v^O@#DRU<2vHRVWG zbq?F?bAf;%_hbcpY7trrH+{p*$MLs-xOy6cWg(vq-HGOW)jV4Gt*W!ZTht`z%261!kK7SNnMjDbOtRz54?!eI5O5B2`$xQFWPW8v zH^DT}X_xTI8QGzbMXPCmr{BnqsP~j%;o;4ejDQr|j*b~B#<~YOR*Ij4wnR+IqM8A; zN>!hTtMFtOa`2-1bd!HVf2hAO%90Qp^~i&TO-&&f7&L-_FU?i+%kXpPw@(o6^^w~! ze`4=Q(HmaQzQ(V}pF1VMm_cNsbsL4&o2m4t^&Q z;7ENQ5${g>Hj-9Auq_hDzp%lhh@u3*db=ZzN%@c_78ob)T? zVCBr!At2!t!^hi(V>sLC&RSHm-h$v1Si|Pq*{pe)%WLP*ZIe(8hLGyr5}2Z2rXX7b zPaM_p)4heOzP-|=IVjjc(_nMqv9YUmf|fAH*iv6H*GKLZ!)wwo6K8h$Bv8&`=#mWvZM^YO1AE zj)OF9O&N@xZx0>ow+DbC9sy%&qqQgibCN|J7+ygb=GRn?gUy@imYB9cm|k3CD4UDo zLDRA9@J0-6Uceq`e~ zP?Gu}CaB=xv#>D-Njy|v!M@0n(tzwdR3#-C5X*I2t0ny#@7|9xo|Hm~S$;b+Q|54DY9=v&zR` zFO^Kg5gdi9t|iFkV>2q+`g~V`ik8bS(-~*zKz~E7Oskx92i? zyIBt!gFxSnR(dBIQqmZ)72eTJDR@W6S;hGXsq=~*dp z^_i1Jh_p<5ZH;^w8SFDFT;1-YDQ0-O=C{%8WlGVV4~7_Lqhw73H+S`aBrTJFUD*BW z^#B`tFRA$atLB5ju-!c}(29VZ?Rh8&Nc6=+b6f&yU^U9)gK`2kUN17Xq!*~JQ$t)p z+|985w3zVyj~z;9PBu_1=o4Lw6L$`aNj6cpqgXG2JD!BD0fOoIfB*VRzM@0ffNU{k z#tgv|1ap=TV}p+_S=EEEu(yLnLHN}qt_76-7p{X|;;AUP$Sj}*8mju>o zoxFiDY5jpS_&5el5X++qbPc1$nrC#6rt@(oSFt~cmNwYO>t_z4zN!X^#q|X*&XGR* zm@4s6z5hljKoO_Tyxn5*0Rx}I~fuYeH@ijrRcaG zGn5&l0F45g;P-2}CTfRo2q`&xD} z341Pz)Z$bXMFo$c^hGwcwjgyBN5wdBWq0KHT4BbOyzW6E{cBeJz^_63T!80h_=)%y z6V@CTlY;mp?J9Wjlcyn~o0mWnjPU|Xpv5>ZLVo$B#H?N=_x3$ z0o2rx7vv2pp|PPYt03?|Yb&Exb-4_0{aaWNFxa(gSI;VMNtWoq^niM8m}waF9kBHY zNVEeIe|^TxaJ0g=H2kbQ!5O#E;x{F=M@cI*bHow>u{7Q`;I$K zw%9S`$l<{Kz7Z8p!894r$tTrg-l8+;RQKRIS1IC*>G$Lmo%RCiq{hCa>aXZ`=q}pU z`HofdRNtbbtbLLHgH33AFLzJ)$|pG~5-#;@V^I@%`(nf ziwuJ>KifLP_A_FdKO3Q7M@9<9{3ww8{_IGL-Tp|x3HwIhJ|!z4FFMN|gY%C<4+Xb! zB(vE+2E`VxAc@8B(*=R1?tTK)tj@X$Dim3pPHrS;3Uj^Yd9_oUM=e8jc)S8;H~>O<)D2gidPKGzUpQ+_N0F2T9tupu}`sDQ~g&qx1bAG z9xzw?%t+hfx2-lki=QfD2s z2cf*7OA-!P%)~gU|Ab%myWWYz?8o%HzJBQXBl6-$rf%JcohUPl+sqdx{AO12_IROB z3jHNZus3A0x5Tqs0(ZMi`BXZ#SC31GC>^u!#N?@Z+jd;GkUMr_O?+6r8P|NPnu|w8 zPs%8-hi|XDp?EzGHI&(YG&S!;l}Tbr@y`KCb}no7gixEw7L)P*J&c%RVfBijp6=j~ zR`aS_IMyrUJu1w3m$``1*CdT?sUIOyOqxv4#fIY*UaPyRxSZaj$dA!k_|?_71l$61 za$jDSrQ()G_DbCDxvs@|)DVkt?Exsg^X^(l$^NBS%I4Wc%wuxk4qLb60Z4}y<`z~! ze2f;{w<1L2W8+!T%%ubI&|Lav`2#^d=p{3SFJ>IB(l5;Q1qJ=yvi1_al+;ppT|HQE z2+Fi%x)O^f1E7&)b@ax7_SD==G;5cS1!d2?quhM#9M^?vdPU`h6u64lnR7!F z#N~l^dIzmDWU(;K;i6!tQ7LLmMs(?tKWCw5bOSVVIzupLo>cwfz1k`%hv1-UC3Ae_ zqFH@qYXLhzw_BA37nd9idfV~^jO0yX%VdHUw`v@>*&NVuPmzPju2~s7U;%}6Jqz4L8g$j9gEHs zlpFyq79)e)+|0aH>JIrP77NiMdAS0~PDMnNejZ0ndm}>8LaTgu zREF2)E9yG>0zp&T_9}5nu5v$_-wYZF?%}eoFTKMsPlm`7QXl2d#h=RKHN&)?d#YLiVX+DyqZ+S|D@zkcQTRy1K^1M{a9BiT2i4a zIR@Fsl2XtT>E&gslOUQCU^{ZWJUC%qOk-vMlTGpk9n0Kz>eKTIAl6a2K1nyKx241* zJj7K=1&{&W(_1bhW!HInAo>LmMF=}jb*t1{);=*79kt9j}&S_}x;bVcFHrnPMe%N0y4OueR{YEA&cAp{3xO z7y)nGIYF;5E$B{O>%YG$qyC&p=a++eR4_KxSEY&xfL`jr9h{AJya^?E6e|vek$# zJ!&T_bZb`Ix~hr2q?h*V6;11^May$ZlhQ}sue(oPXPP3V>q<0@ zPZKh^yojG=iKwQ9x#v!9_`S`WbN4BFWZ?w|Wyl87h16b{mB!aT;3jLsMx@~kQOYj=-&C|aD05_SSG5K|4qX4?W7V2~WS!+P?`nD`y;?Za^Y9}5 z*E-`n!bABLhHA^U2r`?PlbCHn8ms_*@qPkX!>s$E)n}n1LsUxmF#Az|z3Dn;ES+vr zyP`*;SlWhW1wF3AQ7aWef$B|`c>UO#XltO4?3IMwdr3Fj4o^t6Ee-b=b?tN%cu&8Z z?wHa0$|9L=pk)-1+IZ`d33NiR8-K&K02imRJ|x5k)9{YyeVkD=ArNZzg?2S_6u7J^ zTQ1-|Ot4^phM!bk+lcXf1GKYBKzjXE<5hHvUb%Mh`cOUF{MtWUt&G=(C3e+bA1Xzf zk#hDayDJgCLw`$pBu)<9JEPeFr8{5yAvinXxO3`5+NA+btpbCFv-XjkvNgd+>=26oq&# zAThtYxoGD-k7b+p1R0$9rsDtRA7$nzHeyyIx89~51b4f+8Gma>v4h^{;yo3hWeEH< zSSrBDIs0buUe~9>S2jK);urS(Hafkb&n~>#?}GVmXNq(7{PXDeRcs;rw<-U{_&qJW zW)Y2X{Y%Xm#c%bv|D7)0VKoi~&4GNNf0i+?x&Qj;?`c~_@x&m6Gk0C@b>vXY!S)YM{`>z0pn&@K literal 0 HcmV?d00001 diff --git a/thirdparty/openssl/docs/pic/openssl_usage.png b/thirdparty/openssl/docs/pic/openssl_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..5145dda31d62114a332bc17a846560a8a9ab980d GIT binary patch literal 24180 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�KztLXEN@Hk&6a#KbM3zrU-yen=b#aQRfL$qN#GZ6S0Y8aeIvK^?mhvc zatF#sW{VpU6wHXkfV;uh&eNwNcl@xaM&8=QF!20)f7twzd|NI8ykHN820zACU||g_ u%lRd-T2uY^gyH`S4)Xu@S8@W|K?DFwx>spB?uShAunYR8dhgEJKl~4vBMnpl literal 0 HcmV?d00001 -- Gitee