From 9e053884a227ea907f591c58273efc40fe7b5882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Sko=C5=82uda?= Date: Mon, 9 Oct 2017 17:03:01 +0200 Subject: [PATCH] Clean up --- 3E7665B9-C9D2-4DA9-A5C5-C36103D278FC.png | Bin 19073 -> 0 bytes E0AC7B9B-26EF-4163-918E-5BDCF29BD1F6.png | Bin 19073 -> 33482 bytes env/bin/activate | 76 - env/bin/activate.csh | 37 - env/bin/activate.fish | 75 - env/bin/chardetect | 11 - env/bin/easy_install | 11 - env/bin/easy_install-3.6 | 11 - env/bin/pip | 11 - env/bin/pip3 | 11 - env/bin/pip3.6 | 11 - env/bin/python | 1 - env/bin/python3 | 1 - env/bin/python3.6 | 1 - env/bin/wheel | 11 - .../__pycache__/easy_install.cpython-36.pyc | Bin 327 -> 0 bytes .../DESCRIPTION.rst | 49 - .../certifi-2017.7.27.1.dist-info/INSTALLER | 1 - .../certifi-2017.7.27.1.dist-info/METADATA | 71 - .../certifi-2017.7.27.1.dist-info/RECORD | 16 - .../certifi-2017.7.27.1.dist-info/WHEEL | 6 - .../metadata.json | 1 - .../top_level.txt | 1 - .../site-packages/certifi/__init__.py | 3 - .../site-packages/certifi/__main__.py | 2 - .../__pycache__/__init__.cpython-36.pyc | Bin 273 -> 0 bytes .../__pycache__/__main__.cpython-36.pyc | Bin 242 -> 0 bytes .../certifi/__pycache__/core.cpython-36.pyc | Bin 1106 -> 0 bytes .../site-packages/certifi/cacert.pem | 4834 ----------- .../python3.6/site-packages/certifi/core.py | 36 - .../site-packages/certifi/old_root.pem | 414 - .../python3.6/site-packages/certifi/weak.pem | 5248 ----------- .../chardet-3.0.4.dist-info/DESCRIPTION.rst | 70 - .../chardet-3.0.4.dist-info/INSTALLER | 1 - .../chardet-3.0.4.dist-info/METADATA | 96 - .../chardet-3.0.4.dist-info/RECORD | 91 - .../chardet-3.0.4.dist-info/WHEEL | 6 - .../chardet-3.0.4.dist-info/entry_points.txt | 3 - .../chardet-3.0.4.dist-info/metadata.json | 1 - .../chardet-3.0.4.dist-info/top_level.txt | 1 - .../site-packages/chardet/__init__.py | 39 - .../__pycache__/__init__.cpython-36.pyc | Bin 838 -> 0 bytes .../__pycache__/big5freq.cpython-36.pyc | Bin 54725 -> 0 bytes .../__pycache__/big5prober.cpython-36.pyc | Bin 1114 -> 0 bytes .../chardistribution.cpython-36.pyc | Bin 6310 -> 0 bytes .../charsetgroupprober.cpython-36.pyc | Bin 2221 -> 0 bytes .../__pycache__/charsetprober.cpython-36.pyc | Bin 3447 -> 0 bytes .../codingstatemachine.cpython-36.pyc | Bin 2878 -> 0 bytes .../chardet/__pycache__/compat.cpython-36.pyc | Bin 354 -> 0 bytes .../__pycache__/cp949prober.cpython-36.pyc | Bin 1121 -> 0 bytes .../chardet/__pycache__/enums.cpython-36.pyc | Bin 2612 -> 0 bytes .../__pycache__/escprober.cpython-36.pyc | Bin 2603 -> 0 bytes .../chardet/__pycache__/escsm.cpython-36.pyc | Bin 7360 -> 0 bytes .../__pycache__/eucjpprober.cpython-36.pyc | Bin 2407 -> 0 bytes .../__pycache__/euckrfreq.cpython-36.pyc | Bin 24111 -> 0 bytes .../__pycache__/euckrprober.cpython-36.pyc | Bin 1122 -> 0 bytes .../__pycache__/euctwfreq.cpython-36.pyc | Bin 54734 -> 0 bytes .../__pycache__/euctwprober.cpython-36.pyc | Bin 1122 -> 0 bytes .../__pycache__/gb2312freq.cpython-36.pyc | Bin 38376 -> 0 bytes .../__pycache__/gb2312prober.cpython-36.pyc | Bin 1130 -> 0 bytes .../__pycache__/hebrewprober.cpython-36.pyc | Bin 2964 -> 0 bytes .../__pycache__/jisfreq.cpython-36.pyc | Bin 44520 -> 0 bytes .../chardet/__pycache__/jpcntx.cpython-36.pyc | Bin 38659 -> 0 bytes .../langbulgarianmodel.cpython-36.pyc | Bin 24874 -> 0 bytes .../langcyrillicmodel.cpython-36.pyc | Bin 30425 -> 0 bytes .../__pycache__/langgreekmodel.cpython-36.pyc | Bin 24552 -> 0 bytes .../langhebrewmodel.cpython-36.pyc | Bin 23406 -> 0 bytes .../langhungarianmodel.cpython-36.pyc | Bin 24848 -> 0 bytes .../__pycache__/langthaimodel.cpython-36.pyc | Bin 23385 -> 0 bytes .../langturkishmodel.cpython-36.pyc | Bin 23403 -> 0 bytes .../__pycache__/latin1prober.cpython-36.pyc | Bin 2935 -> 0 bytes .../mbcharsetprober.cpython-36.pyc | Bin 2226 -> 0 bytes .../mbcsgroupprober.cpython-36.pyc | Bin 1117 -> 0 bytes .../chardet/__pycache__/mbcssm.cpython-36.pyc | Bin 17570 -> 0 bytes .../sbcharsetprober.cpython-36.pyc | Bin 2979 -> 0 bytes .../sbcsgroupprober.cpython-36.pyc | Bin 1607 -> 0 bytes .../__pycache__/sjisprober.cpython-36.pyc | Bin 2433 -> 0 bytes .../universaldetector.cpython-36.pyc | Bin 5828 -> 0 bytes .../__pycache__/utf8prober.cpython-36.pyc | Bin 1964 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 433 -> 0 bytes .../site-packages/chardet/big5freq.py | 386 - .../site-packages/chardet/big5prober.py | 47 - .../site-packages/chardet/chardistribution.py | 233 - .../chardet/charsetgroupprober.py | 106 - .../site-packages/chardet/charsetprober.py | 145 - .../site-packages/chardet/cli/__init__.py | 1 - .../cli/__pycache__/__init__.cpython-36.pyc | Bin 190 -> 0 bytes .../cli/__pycache__/chardetect.cpython-36.pyc | Bin 2661 -> 0 bytes .../site-packages/chardet/cli/chardetect.py | 85 - .../chardet/codingstatemachine.py | 88 - .../python3.6/site-packages/chardet/compat.py | 34 - .../site-packages/chardet/cp949prober.py | 49 - .../python3.6/site-packages/chardet/enums.py | 76 - .../site-packages/chardet/escprober.py | 101 - .../python3.6/site-packages/chardet/escsm.py | 246 - .../site-packages/chardet/eucjpprober.py | 92 - .../site-packages/chardet/euckrfreq.py | 195 - .../site-packages/chardet/euckrprober.py | 47 - .../site-packages/chardet/euctwfreq.py | 387 - .../site-packages/chardet/euctwprober.py | 46 - .../site-packages/chardet/gb2312freq.py | 283 - .../site-packages/chardet/gb2312prober.py | 46 - .../site-packages/chardet/hebrewprober.py | 292 - .../site-packages/chardet/jisfreq.py | 325 - .../python3.6/site-packages/chardet/jpcntx.py | 233 - .../chardet/langbulgarianmodel.py | 228 - .../chardet/langcyrillicmodel.py | 333 - .../site-packages/chardet/langgreekmodel.py | 225 - .../site-packages/chardet/langhebrewmodel.py | 200 - .../chardet/langhungarianmodel.py | 225 - .../site-packages/chardet/langthaimodel.py | 199 - .../site-packages/chardet/langturkishmodel.py | 193 - .../site-packages/chardet/latin1prober.py | 145 - .../site-packages/chardet/mbcharsetprober.py | 91 - .../site-packages/chardet/mbcsgroupprober.py | 54 - .../python3.6/site-packages/chardet/mbcssm.py | 572 -- .../site-packages/chardet/sbcharsetprober.py | 132 - .../site-packages/chardet/sbcsgroupprober.py | 73 - .../site-packages/chardet/sjisprober.py | 92 - .../chardet/universaldetector.py | 286 - .../site-packages/chardet/utf8prober.py | 82 - .../site-packages/chardet/version.py | 9 - .../python3.6/site-packages/easy_install.py | 5 - .../idna-2.6.dist-info/DESCRIPTION.rst | 213 - .../idna-2.6.dist-info/INSTALLER | 1 - .../site-packages/idna-2.6.dist-info/METADATA | 239 - .../site-packages/idna-2.6.dist-info/RECORD | 23 - .../site-packages/idna-2.6.dist-info/WHEEL | 6 - .../idna-2.6.dist-info/metadata.json | 1 - .../idna-2.6.dist-info/top_level.txt | 1 - .../python3.6/site-packages/idna/__init__.py | 2 - .../idna/__pycache__/__init__.cpython-36.pyc | Bin 249 -> 0 bytes .../idna/__pycache__/codec.cpython-36.pyc | Bin 3096 -> 0 bytes .../idna/__pycache__/compat.cpython-36.pyc | Bin 609 -> 0 bytes .../idna/__pycache__/core.cpython-36.pyc | Bin 8966 -> 0 bytes .../idna/__pycache__/idnadata.cpython-36.pyc | Bin 24498 -> 0 bytes .../idna/__pycache__/intranges.cpython-36.pyc | Bin 1810 -> 0 bytes .../__pycache__/package_data.cpython-36.pyc | Bin 203 -> 0 bytes .../idna/__pycache__/uts46data.cpython-36.pyc | Bin 225898 -> 0 bytes env/lib/python3.6/site-packages/idna/codec.py | 118 - .../python3.6/site-packages/idna/compat.py | 12 - env/lib/python3.6/site-packages/idna/core.py | 387 - .../python3.6/site-packages/idna/idnadata.py | 1585 ---- .../python3.6/site-packages/idna/intranges.py | 53 - .../site-packages/idna/package_data.py | 2 - .../python3.6/site-packages/idna/uts46data.py | 7634 ----------------- .../pip-9.0.1.dist-info/DESCRIPTION.rst | 39 - .../pip-9.0.1.dist-info/INSTALLER | 1 - .../pip-9.0.1.dist-info/METADATA | 69 - .../site-packages/pip-9.0.1.dist-info/RECORD | 501 -- .../site-packages/pip-9.0.1.dist-info/WHEEL | 6 - .../pip-9.0.1.dist-info/entry_points.txt | 5 - .../pip-9.0.1.dist-info/metadata.json | 1 - .../pip-9.0.1.dist-info/top_level.txt | 1 - .../python3.6/site-packages/pip/__init__.py | 331 - .../python3.6/site-packages/pip/__main__.py | 19 - .../pip/__pycache__/__init__.cpython-36.pyc | Bin 8427 -> 0 bytes .../pip/__pycache__/__main__.cpython-36.pyc | Bin 426 -> 0 bytes .../__pycache__/basecommand.cpython-36.pyc | Bin 7262 -> 0 bytes .../pip/__pycache__/baseparser.cpython-36.pyc | Bin 9323 -> 0 bytes .../pip/__pycache__/cmdoptions.cpython-36.pyc | Bin 12981 -> 0 bytes .../pip/__pycache__/download.cpython-36.pyc | Bin 20362 -> 0 bytes .../pip/__pycache__/exceptions.cpython-36.pyc | Bin 10535 -> 0 bytes .../pip/__pycache__/index.cpython-36.pyc | Bin 30285 -> 0 bytes .../pip/__pycache__/locations.cpython-36.pyc | Bin 3921 -> 0 bytes .../pip/__pycache__/pep425tags.cpython-36.pyc | Bin 7516 -> 0 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 390 -> 0 bytes .../pip/__pycache__/wheel.cpython-36.pyc | Bin 21707 -> 0 bytes .../site-packages/pip/_vendor/__init__.py | 107 - .../__pycache__/__init__.cpython-36.pyc | Bin 2793 -> 0 bytes .../__pycache__/appdirs.cpython-36.pyc | Bin 18612 -> 0 bytes .../_vendor/__pycache__/distro.cpython-36.pyc | Bin 32584 -> 0 bytes .../__pycache__/ipaddress.cpython-36.pyc | Bin 66419 -> 0 bytes .../__pycache__/ordereddict.cpython-36.pyc | Bin 3617 -> 0 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 201108 -> 0 bytes .../__pycache__/re-vendor.cpython-36.pyc | Bin 1105 -> 0 bytes .../__pycache__/retrying.cpython-36.pyc | Bin 8094 -> 0 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 24483 -> 0 bytes .../site-packages/pip/_vendor/appdirs.py | 552 -- .../pip/_vendor/cachecontrol/__init__.py | 11 - .../__pycache__/__init__.cpython-36.pyc | Bin 552 -> 0 bytes .../__pycache__/_cmd.cpython-36.pyc | Bin 1561 -> 0 bytes .../__pycache__/adapter.cpython-36.pyc | Bin 2888 -> 0 bytes .../__pycache__/cache.cpython-36.pyc | Bin 1763 -> 0 bytes .../__pycache__/compat.cpython-36.pyc | Bin 619 -> 0 bytes .../__pycache__/controller.cpython-36.pyc | Bin 7763 -> 0 bytes .../__pycache__/filewrapper.cpython-36.pyc | Bin 2156 -> 0 bytes .../__pycache__/heuristics.cpython-36.pyc | Bin 4698 -> 0 bytes .../__pycache__/serialize.cpython-36.pyc | Bin 4475 -> 0 bytes .../__pycache__/wrapper.cpython-36.pyc | Bin 571 -> 0 bytes .../pip/_vendor/cachecontrol/_cmd.py | 60 - .../pip/_vendor/cachecontrol/adapter.py | 125 - .../pip/_vendor/cachecontrol/cache.py | 39 - .../_vendor/cachecontrol/caches/__init__.py | 18 - .../__pycache__/__init__.cpython-36.pyc | Bin 609 -> 0 bytes .../__pycache__/file_cache.cpython-36.pyc | Bin 2806 -> 0 bytes .../__pycache__/redis_cache.cpython-36.pyc | Bin 1712 -> 0 bytes .../_vendor/cachecontrol/caches/file_cache.py | 116 - .../cachecontrol/caches/redis_cache.py | 41 - .../pip/_vendor/cachecontrol/compat.py | 20 - .../pip/_vendor/cachecontrol/controller.py | 353 - .../pip/_vendor/cachecontrol/filewrapper.py | 78 - .../pip/_vendor/cachecontrol/heuristics.py | 138 - .../pip/_vendor/cachecontrol/serialize.py | 196 - .../pip/_vendor/cachecontrol/wrapper.py | 21 - .../pip/_vendor/colorama/__init__.py | 7 - .../__pycache__/__init__.cpython-36.pyc | Bin 446 -> 0 bytes .../colorama/__pycache__/ansi.cpython-36.pyc | Bin 3344 -> 0 bytes .../__pycache__/ansitowin32.cpython-36.pyc | Bin 7076 -> 0 bytes .../__pycache__/initialise.cpython-36.pyc | Bin 1667 -> 0 bytes .../colorama/__pycache__/win32.cpython-36.pyc | Bin 3637 -> 0 bytes .../__pycache__/winterm.cpython-36.pyc | Bin 4569 -> 0 bytes .../pip/_vendor/colorama/ansi.py | 102 - .../pip/_vendor/colorama/ansitowin32.py | 236 - .../pip/_vendor/colorama/initialise.py | 82 - .../pip/_vendor/colorama/win32.py | 154 - .../pip/_vendor/colorama/winterm.py | 162 - .../pip/_vendor/distlib/__init__.py | 23 - .../__pycache__/__init__.cpython-36.pyc | Bin 1044 -> 0 bytes .../distlib/__pycache__/compat.cpython-36.pyc | Bin 32005 -> 0 bytes .../__pycache__/database.cpython-36.pyc | Bin 42143 -> 0 bytes .../distlib/__pycache__/index.cpython-36.pyc | Bin 17377 -> 0 bytes .../__pycache__/locators.cpython-36.pyc | Bin 38601 -> 0 bytes .../__pycache__/manifest.cpython-36.pyc | Bin 10363 -> 0 bytes .../__pycache__/markers.cpython-36.pyc | Bin 6039 -> 0 bytes .../__pycache__/metadata.cpython-36.pyc | Bin 27082 -> 0 bytes .../__pycache__/resources.cpython-36.pyc | Bin 10911 -> 0 bytes .../__pycache__/scripts.cpython-36.pyc | Bin 10078 -> 0 bytes .../distlib/__pycache__/util.cpython-36.pyc | Bin 44505 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 21021 -> 0 bytes .../distlib/__pycache__/wheel.cpython-36.pyc | Bin 25042 -> 0 bytes .../pip/_vendor/distlib/_backport/__init__.py | 6 - .../__pycache__/__init__.cpython-36.pyc | Bin 486 -> 0 bytes .../_backport/__pycache__/misc.cpython-36.pyc | Bin 1092 -> 0 bytes .../__pycache__/shutil.cpython-36.pyc | Bin 21439 -> 0 bytes .../__pycache__/sysconfig.cpython-36.pyc | Bin 16040 -> 0 bytes .../__pycache__/tarfile.cpython-36.pyc | Bin 63050 -> 0 bytes .../pip/_vendor/distlib/_backport/misc.py | 41 - .../pip/_vendor/distlib/_backport/shutil.py | 761 -- .../_vendor/distlib/_backport/sysconfig.cfg | 84 - .../_vendor/distlib/_backport/sysconfig.py | 788 -- .../pip/_vendor/distlib/_backport/tarfile.py | 2607 ------ .../pip/_vendor/distlib/compat.py | 1111 --- .../pip/_vendor/distlib/database.py | 1312 --- .../pip/_vendor/distlib/index.py | 515 -- .../pip/_vendor/distlib/locators.py | 1283 --- .../pip/_vendor/distlib/manifest.py | 393 - .../pip/_vendor/distlib/markers.py | 190 - .../pip/_vendor/distlib/metadata.py | 1068 --- .../pip/_vendor/distlib/resources.py | 355 - .../pip/_vendor/distlib/scripts.py | 384 - .../site-packages/pip/_vendor/distlib/t32.exe | Bin 89088 -> 0 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 97792 -> 0 bytes .../site-packages/pip/_vendor/distlib/util.py | 1611 ---- .../pip/_vendor/distlib/version.py | 742 -- .../site-packages/pip/_vendor/distlib/w32.exe | Bin 85504 -> 0 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 94208 -> 0 bytes .../pip/_vendor/distlib/wheel.py | 978 --- .../site-packages/pip/_vendor/distro.py | 1081 --- .../pip/_vendor/html5lib/__init__.py | 25 - .../__pycache__/__init__.cpython-36.pyc | Bin 965 -> 0 bytes .../__pycache__/_ihatexml.cpython-36.pyc | Bin 13859 -> 0 bytes .../__pycache__/_inputstream.cpython-36.pyc | Bin 22713 -> 0 bytes .../__pycache__/_tokenizer.cpython-36.pyc | Bin 42163 -> 0 bytes .../__pycache__/_utils.cpython-36.pyc | Bin 3372 -> 0 bytes .../__pycache__/constants.cpython-36.pyc | Bin 66322 -> 0 bytes .../__pycache__/html5parser.cpython-36.pyc | Bin 98007 -> 0 bytes .../__pycache__/serializer.cpython-36.pyc | Bin 9368 -> 0 bytes .../pip/_vendor/html5lib/_ihatexml.py | 288 - .../pip/_vendor/html5lib/_inputstream.py | 923 -- .../pip/_vendor/html5lib/_tokenizer.py | 1721 ---- .../pip/_vendor/html5lib/_trie/__init__.py | 14 - .../_trie/__pycache__/__init__.cpython-36.pyc | Bin 428 -> 0 bytes .../_trie/__pycache__/_base.cpython-36.pyc | Bin 1517 -> 0 bytes .../_trie/__pycache__/datrie.cpython-36.pyc | Bin 2030 -> 0 bytes .../_trie/__pycache__/py.cpython-36.pyc | Bin 2235 -> 0 bytes .../pip/_vendor/html5lib/_trie/_base.py | 38 - .../pip/_vendor/html5lib/_trie/datrie.py | 44 - .../pip/_vendor/html5lib/_trie/py.py | 67 - .../pip/_vendor/html5lib/_utils.py | 127 - .../pip/_vendor/html5lib/constants.py | 2945 ------- .../pip/_vendor/html5lib/filters/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 203 -> 0 bytes .../alphabeticalattributes.cpython-36.pyc | Bin 1074 -> 0 bytes .../filters/__pycache__/base.cpython-36.pyc | Bin 853 -> 0 bytes .../inject_meta_charset.cpython-36.pyc | Bin 1704 -> 0 bytes .../filters/__pycache__/lint.cpython-36.pyc | Bin 2375 -> 0 bytes .../__pycache__/optionaltags.cpython-36.pyc | Bin 3047 -> 0 bytes .../__pycache__/sanitizer.cpython-36.pyc | Bin 18042 -> 0 bytes .../__pycache__/whitespace.cpython-36.pyc | Bin 1279 -> 0 bytes .../filters/alphabeticalattributes.py | 20 - .../pip/_vendor/html5lib/filters/base.py | 12 - .../html5lib/filters/inject_meta_charset.py | 65 - .../pip/_vendor/html5lib/filters/lint.py | 81 - .../_vendor/html5lib/filters/optionaltags.py | 206 - .../pip/_vendor/html5lib/filters/sanitizer.py | 865 -- .../_vendor/html5lib/filters/whitespace.py | 38 - .../pip/_vendor/html5lib/html5parser.py | 2733 ------ .../pip/_vendor/html5lib/serializer.py | 334 - .../_vendor/html5lib/treeadapters/__init__.py | 12 - .../__pycache__/__init__.cpython-36.pyc | Bin 458 -> 0 bytes .../__pycache__/genshi.cpython-36.pyc | Bin 1535 -> 0 bytes .../__pycache__/sax.cpython-36.pyc | Bin 1389 -> 0 bytes .../_vendor/html5lib/treeadapters/genshi.py | 47 - .../pip/_vendor/html5lib/treeadapters/sax.py | 44 - .../_vendor/html5lib/treebuilders/__init__.py | 76 - .../__pycache__/__init__.cpython-36.pyc | Bin 3137 -> 0 bytes .../__pycache__/base.cpython-36.pyc | Bin 11180 -> 0 bytes .../__pycache__/dom.cpython-36.pyc | Bin 9276 -> 0 bytes .../__pycache__/etree.cpython-36.pyc | Bin 11870 -> 0 bytes .../__pycache__/etree_lxml.cpython-36.pyc | Bin 11822 -> 0 bytes .../pip/_vendor/html5lib/treebuilders/base.py | 383 - .../pip/_vendor/html5lib/treebuilders/dom.py | 236 - .../_vendor/html5lib/treebuilders/etree.py | 340 - .../html5lib/treebuilders/etree_lxml.py | 367 - .../_vendor/html5lib/treewalkers/__init__.py | 143 - .../__pycache__/__init__.cpython-36.pyc | Bin 3828 -> 0 bytes .../__pycache__/base.cpython-36.pyc | Bin 4584 -> 0 bytes .../__pycache__/dom.cpython-36.pyc | Bin 1725 -> 0 bytes .../__pycache__/etree.cpython-36.pyc | Bin 3679 -> 0 bytes .../__pycache__/etree_lxml.cpython-36.pyc | Bin 6660 -> 0 bytes .../__pycache__/genshi.cpython-36.pyc | Bin 1899 -> 0 bytes .../pip/_vendor/html5lib/treewalkers/base.py | 150 - .../pip/_vendor/html5lib/treewalkers/dom.py | 43 - .../pip/_vendor/html5lib/treewalkers/etree.py | 137 - .../html5lib/treewalkers/etree_lxml.py | 213 - .../_vendor/html5lib/treewalkers/genshi.py | 69 - .../site-packages/pip/_vendor/ipaddress.py | 2425 ------ .../pip/_vendor/lockfile/__init__.py | 347 - .../__pycache__/__init__.cpython-36.pyc | Bin 9912 -> 0 bytes .../__pycache__/linklockfile.cpython-36.pyc | Bin 2291 -> 0 bytes .../__pycache__/mkdirlockfile.cpython-36.pyc | Bin 2653 -> 0 bytes .../__pycache__/pidlockfile.cpython-36.pyc | Bin 4853 -> 0 bytes .../__pycache__/sqlitelockfile.cpython-36.pyc | Bin 3752 -> 0 bytes .../symlinklockfile.cpython-36.pyc | Bin 2176 -> 0 bytes .../pip/_vendor/lockfile/linklockfile.py | 73 - .../pip/_vendor/lockfile/mkdirlockfile.py | 84 - .../pip/_vendor/lockfile/pidlockfile.py | 190 - .../pip/_vendor/lockfile/sqlitelockfile.py | 156 - .../pip/_vendor/lockfile/symlinklockfile.py | 70 - .../site-packages/pip/_vendor/ordereddict.py | 127 - .../pip/_vendor/packaging/__about__.py | 21 - .../pip/_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-36.pyc | Bin 722 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 560 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 1007 -> 0 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 2864 -> 0 bytes .../__pycache__/markers.cpython-36.pyc | Bin 8878 -> 0 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 3865 -> 0 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 19826 -> 0 bytes .../__pycache__/utils.cpython-36.pyc | Bin 491 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 10601 -> 0 bytes .../pip/_vendor/packaging/_compat.py | 30 - .../pip/_vendor/packaging/_structures.py | 68 - .../pip/_vendor/packaging/markers.py | 303 - .../pip/_vendor/packaging/requirements.py | 129 - .../pip/_vendor/packaging/specifiers.py | 774 -- .../pip/_vendor/packaging/utils.py | 14 - .../pip/_vendor/packaging/version.py | 393 - .../pip/_vendor/pkg_resources/__init__.py | 3052 ------- .../__pycache__/__init__.cpython-36.pyc | Bin 95310 -> 0 bytes .../pip/_vendor/progress/__init__.py | 123 - .../__pycache__/__init__.cpython-36.pyc | Bin 3848 -> 0 bytes .../progress/__pycache__/bar.cpython-36.pyc | Bin 2467 -> 0 bytes .../__pycache__/counter.cpython-36.pyc | Bin 1591 -> 0 bytes .../__pycache__/helpers.cpython-36.pyc | Bin 2977 -> 0 bytes .../__pycache__/spinner.cpython-36.pyc | Bin 1233 -> 0 bytes .../site-packages/pip/_vendor/progress/bar.py | 83 - .../pip/_vendor/progress/counter.py | 47 - .../pip/_vendor/progress/helpers.py | 91 - .../pip/_vendor/progress/spinner.py | 40 - .../site-packages/pip/_vendor/pyparsing.py | 5696 ------------ .../site-packages/pip/_vendor/re-vendor.py | 34 - .../pip/_vendor/requests/__init__.py | 88 - .../__pycache__/__init__.cpython-36.pyc | Bin 2340 -> 0 bytes .../__pycache__/adapters.cpython-36.pyc | Bin 15810 -> 0 bytes .../requests/__pycache__/api.cpython-36.pyc | Bin 6041 -> 0 bytes .../requests/__pycache__/auth.cpython-36.pyc | Bin 7155 -> 0 bytes .../requests/__pycache__/certs.cpython-36.pyc | Bin 827 -> 0 bytes .../__pycache__/compat.cpython-36.pyc | Bin 1413 -> 0 bytes .../__pycache__/cookies.cpython-36.pyc | Bin 18479 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 4883 -> 0 bytes .../requests/__pycache__/hooks.cpython-36.pyc | Bin 1000 -> 0 bytes .../__pycache__/models.cpython-36.pyc | Bin 21914 -> 0 bytes .../__pycache__/sessions.cpython-36.pyc | Bin 17972 -> 0 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 3661 -> 0 bytes .../__pycache__/structures.cpython-36.pyc | Bin 4408 -> 0 bytes .../requests/__pycache__/utils.cpython-36.pyc | Bin 18796 -> 0 bytes .../pip/_vendor/requests/adapters.py | 503 -- .../site-packages/pip/_vendor/requests/api.py | 148 - .../pip/_vendor/requests/auth.py | 252 - .../pip/_vendor/requests/cacert.pem | 5616 ------------ .../pip/_vendor/requests/certs.py | 25 - .../pip/_vendor/requests/compat.py | 68 - .../pip/_vendor/requests/cookies.py | 540 -- .../pip/_vendor/requests/exceptions.py | 114 - .../pip/_vendor/requests/hooks.py | 34 - .../pip/_vendor/requests/models.py | 873 -- .../pip/_vendor/requests/packages/__init__.py | 36 - .../__pycache__/__init__.cpython-36.pyc | Bin 1606 -> 0 bytes .../requests/packages/chardet/__init__.py | 32 - .../__pycache__/__init__.cpython-36.pyc | Bin 699 -> 0 bytes .../__pycache__/big5freq.cpython-36.pyc | Bin 141793 -> 0 bytes .../__pycache__/big5prober.cpython-36.pyc | Bin 961 -> 0 bytes .../__pycache__/chardetect.cpython-36.pyc | Bin 2573 -> 0 bytes .../chardistribution.cpython-36.pyc | Bin 6183 -> 0 bytes .../charsetgroupprober.cpython-36.pyc | Bin 2027 -> 0 bytes .../__pycache__/charsetprober.cpython-36.pyc | Bin 1778 -> 0 bytes .../codingstatemachine.cpython-36.pyc | Bin 1498 -> 0 bytes .../chardet/__pycache__/compat.cpython-36.pyc | Bin 507 -> 0 bytes .../__pycache__/constants.cpython-36.pyc | Bin 362 -> 0 bytes .../__pycache__/cp949prober.cpython-36.pyc | Bin 968 -> 0 bytes .../__pycache__/escprober.cpython-36.pyc | Bin 1948 -> 0 bytes .../chardet/__pycache__/escsm.cpython-36.pyc | Bin 6918 -> 0 bytes .../__pycache__/eucjpprober.cpython-36.pyc | Bin 2259 -> 0 bytes .../__pycache__/euckrfreq.cpython-36.pyc | Bin 88833 -> 0 bytes .../__pycache__/euckrprober.cpython-36.pyc | Bin 969 -> 0 bytes .../__pycache__/euctwfreq.cpython-36.pyc | Bin 61231 -> 0 bytes .../__pycache__/euctwprober.cpython-36.pyc | Bin 969 -> 0 bytes .../__pycache__/gb2312freq.cpython-36.pyc | Bin 68849 -> 0 bytes .../__pycache__/gb2312prober.cpython-36.pyc | Bin 975 -> 0 bytes .../__pycache__/hebrewprober.cpython-36.pyc | Bin 2763 -> 0 bytes .../__pycache__/jisfreq.cpython-36.pyc | Bin 84065 -> 0 bytes .../chardet/__pycache__/jpcntx.cpython-36.pyc | Bin 38570 -> 0 bytes .../langbulgarianmodel.cpython-36.pyc | Bin 24852 -> 0 bytes .../langcyrillicmodel.cpython-36.pyc | Bin 30382 -> 0 bytes .../__pycache__/langgreekmodel.cpython-36.pyc | Bin 24539 -> 0 bytes .../langhebrewmodel.cpython-36.pyc | Bin 23397 -> 0 bytes .../langhungarianmodel.cpython-36.pyc | Bin 24837 -> 0 bytes .../__pycache__/langthaimodel.cpython-36.pyc | Bin 23383 -> 0 bytes .../__pycache__/latin1prober.cpython-36.pyc | Bin 2795 -> 0 bytes .../mbcharsetprober.cpython-36.pyc | Bin 1986 -> 0 bytes .../mbcsgroupprober.cpython-36.pyc | Bin 1072 -> 0 bytes .../chardet/__pycache__/mbcssm.cpython-36.pyc | Bin 16615 -> 0 bytes .../sbcharsetprober.cpython-36.pyc | Bin 2745 -> 0 bytes .../sbcsgroupprober.cpython-36.pyc | Bin 1636 -> 0 bytes .../__pycache__/sjisprober.cpython-36.pyc | Bin 2292 -> 0 bytes .../universaldetector.cpython-36.pyc | Bin 3272 -> 0 bytes .../__pycache__/utf8prober.cpython-36.pyc | Bin 1791 -> 0 bytes .../requests/packages/chardet/big5freq.py | 925 -- .../requests/packages/chardet/big5prober.py | 42 - .../requests/packages/chardet/chardetect.py | 80 - .../packages/chardet/chardistribution.py | 231 - .../packages/chardet/charsetgroupprober.py | 106 - .../packages/chardet/charsetprober.py | 62 - .../packages/chardet/codingstatemachine.py | 61 - .../requests/packages/chardet/compat.py | 34 - .../requests/packages/chardet/constants.py | 39 - .../requests/packages/chardet/cp949prober.py | 44 - .../requests/packages/chardet/escprober.py | 86 - .../requests/packages/chardet/escsm.py | 242 - .../requests/packages/chardet/eucjpprober.py | 90 - .../requests/packages/chardet/euckrfreq.py | 596 -- .../requests/packages/chardet/euckrprober.py | 42 - .../requests/packages/chardet/euctwfreq.py | 428 - .../requests/packages/chardet/euctwprober.py | 41 - .../requests/packages/chardet/gb2312freq.py | 472 - .../requests/packages/chardet/gb2312prober.py | 41 - .../requests/packages/chardet/hebrewprober.py | 283 - .../requests/packages/chardet/jisfreq.py | 569 -- .../requests/packages/chardet/jpcntx.py | 227 - .../packages/chardet/langbulgarianmodel.py | 229 - .../packages/chardet/langcyrillicmodel.py | 329 - .../packages/chardet/langgreekmodel.py | 225 - .../packages/chardet/langhebrewmodel.py | 201 - .../packages/chardet/langhungarianmodel.py | 225 - .../packages/chardet/langthaimodel.py | 200 - .../requests/packages/chardet/latin1prober.py | 139 - .../packages/chardet/mbcharsetprober.py | 86 - .../packages/chardet/mbcsgroupprober.py | 54 - .../requests/packages/chardet/mbcssm.py | 572 -- .../packages/chardet/sbcharsetprober.py | 120 - .../packages/chardet/sbcsgroupprober.py | 69 - .../requests/packages/chardet/sjisprober.py | 91 - .../packages/chardet/universaldetector.py | 170 - .../requests/packages/chardet/utf8prober.py | 76 - .../requests/packages/urllib3/__init__.py | 96 - .../__pycache__/__init__.cpython-36.pyc | Bin 2529 -> 0 bytes .../__pycache__/_collections.cpython-36.pyc | Bin 10612 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 8471 -> 0 bytes .../__pycache__/connectionpool.cpython-36.pyc | Bin 22755 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 8928 -> 0 bytes .../urllib3/__pycache__/fields.cpython-36.pyc | Bin 5886 -> 0 bytes .../__pycache__/filepost.cpython-36.pyc | Bin 2689 -> 0 bytes .../__pycache__/poolmanager.cpython-36.pyc | Bin 10875 -> 0 bytes .../__pycache__/request.cpython-36.pyc | Bin 5631 -> 0 bytes .../__pycache__/response.cpython-36.pyc | Bin 13808 -> 0 bytes .../requests/packages/urllib3/_collections.py | 324 - .../requests/packages/urllib3/connection.py | 330 - .../packages/urllib3/connectionpool.py | 866 -- .../packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 220 -> 0 bytes .../__pycache__/appengine.cpython-36.pyc | Bin 6688 -> 0 bytes .../__pycache__/ntlmpool.cpython-36.pyc | Bin 3317 -> 0 bytes .../__pycache__/pyopenssl.cpython-36.pyc | Bin 10161 -> 0 bytes .../contrib/__pycache__/socks.cpython-36.pyc | Bin 4535 -> 0 bytes .../packages/urllib3/contrib/appengine.py | 231 - .../packages/urllib3/contrib/ntlmpool.py | 115 - .../packages/urllib3/contrib/pyopenssl.py | 358 - .../packages/urllib3/contrib/socks.py | 172 - .../requests/packages/urllib3/exceptions.py | 209 - .../requests/packages/urllib3/fields.py | 178 - .../requests/packages/urllib3/filepost.py | 94 - .../packages/urllib3/packages/__init__.py | 5 - .../__pycache__/__init__.cpython-36.pyc | Bin 346 -> 0 bytes .../__pycache__/ordered_dict.cpython-36.pyc | Bin 8423 -> 0 bytes .../packages/__pycache__/six.cpython-36.pyc | Bin 24518 -> 0 bytes .../packages/urllib3/packages/ordered_dict.py | 259 - .../requests/packages/urllib3/packages/six.py | 868 -- .../packages/ssl_match_hostname/__init__.py | 13 - .../__pycache__/__init__.cpython-36.pyc | Bin 507 -> 0 bytes .../_implementation.cpython-36.pyc | Bin 2331 -> 0 bytes .../ssl_match_hostname/_implementation.py | 105 - .../requests/packages/urllib3/poolmanager.py | 367 - .../requests/packages/urllib3/request.py | 151 - .../requests/packages/urllib3/response.py | 530 -- .../packages/urllib3/util/__init__.py | 46 - .../util/__pycache__/__init__.cpython-36.pyc | Bin 1018 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 3304 -> 0 bytes .../util/__pycache__/request.cpython-36.pyc | Bin 2003 -> 0 bytes .../util/__pycache__/response.cpython-36.pyc | Bin 1875 -> 0 bytes .../util/__pycache__/retry.cpython-36.pyc | Bin 9159 -> 0 bytes .../util/__pycache__/ssl_.cpython-36.pyc | Bin 8784 -> 0 bytes .../util/__pycache__/timeout.cpython-36.pyc | Bin 8790 -> 0 bytes .../util/__pycache__/url.cpython-36.pyc | Bin 4939 -> 0 bytes .../packages/urllib3/util/connection.py | 144 - .../requests/packages/urllib3/util/request.py | 72 - .../packages/urllib3/util/response.py | 74 - .../requests/packages/urllib3/util/retry.py | 300 - .../requests/packages/urllib3/util/ssl_.py | 320 - .../requests/packages/urllib3/util/timeout.py | 242 - .../requests/packages/urllib3/util/url.py | 217 - .../pip/_vendor/requests/sessions.py | 712 -- .../pip/_vendor/requests/status_codes.py | 91 - .../pip/_vendor/requests/structures.py | 105 - .../pip/_vendor/requests/utils.py | 817 -- .../site-packages/pip/_vendor/retrying.py | 267 - .../site-packages/pip/_vendor/six.py | 868 -- .../pip/_vendor/webencodings/__init__.py | 342 - .../__pycache__/__init__.cpython-36.pyc | Bin 9678 -> 0 bytes .../__pycache__/labels.cpython-36.pyc | Bin 4092 -> 0 bytes .../__pycache__/mklabels.cpython-36.pyc | Bin 1914 -> 0 bytes .../__pycache__/tests.cpython-36.pyc | Bin 5070 -> 0 bytes .../__pycache__/x_user_defined.cpython-36.pyc | Bin 2667 -> 0 bytes .../pip/_vendor/webencodings/labels.py | 231 - .../pip/_vendor/webencodings/mklabels.py | 59 - .../pip/_vendor/webencodings/tests.py | 153 - .../_vendor/webencodings/x_user_defined.py | 325 - .../site-packages/pip/basecommand.py | 337 - .../python3.6/site-packages/pip/baseparser.py | 293 - .../python3.6/site-packages/pip/cmdoptions.py | 633 -- .../site-packages/pip/commands/__init__.py | 86 - .../__pycache__/__init__.cpython-36.pyc | Bin 2080 -> 0 bytes .../commands/__pycache__/check.cpython-36.pyc | Bin 1321 -> 0 bytes .../__pycache__/completion.cpython-36.pyc | Bin 2652 -> 0 bytes .../__pycache__/download.cpython-36.pyc | Bin 5437 -> 0 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 2634 -> 0 bytes .../commands/__pycache__/hash.cpython-36.pyc | Bin 1975 -> 0 bytes .../commands/__pycache__/help.cpython-36.pyc | Bin 1126 -> 0 bytes .../__pycache__/install.cpython-36.pyc | Bin 9908 -> 0 bytes .../commands/__pycache__/list.cpython-36.pyc | Bin 9737 -> 0 bytes .../__pycache__/search.cpython-36.pyc | Bin 4216 -> 0 bytes .../commands/__pycache__/show.cpython-36.pyc | Bin 5387 -> 0 bytes .../__pycache__/uninstall.cpython-36.pyc | Bin 2612 -> 0 bytes .../commands/__pycache__/wheel.cpython-36.pyc | Bin 5474 -> 0 bytes .../site-packages/pip/commands/check.py | 39 - .../site-packages/pip/commands/completion.py | 81 - .../site-packages/pip/commands/download.py | 212 - .../site-packages/pip/commands/freeze.py | 87 - .../site-packages/pip/commands/hash.py | 57 - .../site-packages/pip/commands/help.py | 35 - .../site-packages/pip/commands/install.py | 437 - .../site-packages/pip/commands/list.py | 337 - .../site-packages/pip/commands/search.py | 133 - .../site-packages/pip/commands/show.py | 154 - .../site-packages/pip/commands/uninstall.py | 76 - .../site-packages/pip/commands/wheel.py | 208 - .../site-packages/pip/compat/__init__.py | 164 - .../__pycache__/__init__.cpython-36.pyc | Bin 4009 -> 0 bytes .../__pycache__/dictconfig.cpython-36.pyc | Bin 13656 -> 0 bytes .../site-packages/pip/compat/dictconfig.py | 565 -- .../python3.6/site-packages/pip/download.py | 906 -- .../python3.6/site-packages/pip/exceptions.py | 244 - env/lib/python3.6/site-packages/pip/index.py | 1102 --- .../python3.6/site-packages/pip/locations.py | 182 - .../site-packages/pip/models/__init__.py | 4 - .../__pycache__/__init__.cpython-36.pyc | Bin 275 -> 0 bytes .../models/__pycache__/index.cpython-36.pyc | Bin 879 -> 0 bytes .../site-packages/pip/models/index.py | 16 - .../site-packages/pip/operations/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 189 -> 0 bytes .../__pycache__/check.cpython-36.pyc | Bin 1476 -> 0 bytes .../__pycache__/freeze.cpython-36.pyc | Bin 2933 -> 0 bytes .../site-packages/pip/operations/check.py | 49 - .../site-packages/pip/operations/freeze.py | 132 - .../python3.6/site-packages/pip/pep425tags.py | 324 - .../site-packages/pip/req/__init__.py | 10 - .../req/__pycache__/__init__.cpython-36.pyc | Bin 456 -> 0 bytes .../req/__pycache__/req_file.cpython-36.pyc | Bin 8471 -> 0 bytes .../__pycache__/req_install.cpython-36.pyc | Bin 30172 -> 0 bytes .../req/__pycache__/req_set.cpython-36.pyc | Bin 21019 -> 0 bytes .../__pycache__/req_uninstall.cpython-36.pyc | Bin 6334 -> 0 bytes .../site-packages/pip/req/req_file.py | 342 - .../site-packages/pip/req/req_install.py | 1204 --- .../site-packages/pip/req/req_set.py | 798 -- .../site-packages/pip/req/req_uninstall.py | 195 - .../site-packages/pip/status_codes.py | 8 - .../site-packages/pip/utils/__init__.py | 852 -- .../utils/__pycache__/__init__.cpython-36.pyc | Bin 22250 -> 0 bytes .../utils/__pycache__/appdirs.cpython-36.pyc | Bin 7753 -> 0 bytes .../utils/__pycache__/build.cpython-36.pyc | Bin 1367 -> 0 bytes .../__pycache__/deprecation.cpython-36.pyc | Bin 1780 -> 0 bytes .../utils/__pycache__/encoding.cpython-36.pyc | Bin 1070 -> 0 bytes .../__pycache__/filesystem.cpython-36.pyc | Bin 635 -> 0 bytes .../utils/__pycache__/glibc.cpython-36.pyc | Bin 1418 -> 0 bytes .../utils/__pycache__/hashes.cpython-36.pyc | Bin 3294 -> 0 bytes .../utils/__pycache__/logging.cpython-36.pyc | Bin 3950 -> 0 bytes .../utils/__pycache__/outdated.cpython-36.pyc | Bin 4275 -> 0 bytes .../__pycache__/packaging.cpython-36.pyc | Bin 2038 -> 0 bytes .../setuptools_build.cpython-36.pyc | Bin 379 -> 0 bytes .../pip/utils/__pycache__/ui.cpython-36.pyc | Bin 9635 -> 0 bytes .../site-packages/pip/utils/appdirs.py | 248 - .../site-packages/pip/utils/build.py | 42 - .../site-packages/pip/utils/deprecation.py | 76 - .../site-packages/pip/utils/encoding.py | 31 - .../site-packages/pip/utils/filesystem.py | 28 - .../site-packages/pip/utils/glibc.py | 81 - .../site-packages/pip/utils/hashes.py | 92 - .../site-packages/pip/utils/logging.py | 130 - .../site-packages/pip/utils/outdated.py | 162 - .../site-packages/pip/utils/packaging.py | 63 - .../pip/utils/setuptools_build.py | 8 - .../python3.6/site-packages/pip/utils/ui.py | 344 - .../site-packages/pip/vcs/__init__.py | 366 - .../vcs/__pycache__/__init__.cpython-36.pyc | Bin 11154 -> 0 bytes .../pip/vcs/__pycache__/bazaar.cpython-36.pyc | Bin 3707 -> 0 bytes .../pip/vcs/__pycache__/git.cpython-36.pyc | Bin 8847 -> 0 bytes .../vcs/__pycache__/mercurial.cpython-36.pyc | Bin 3620 -> 0 bytes .../vcs/__pycache__/subversion.cpython-36.pyc | Bin 7159 -> 0 bytes .../python3.6/site-packages/pip/vcs/bazaar.py | 116 - .../python3.6/site-packages/pip/vcs/git.py | 300 - .../site-packages/pip/vcs/mercurial.py | 103 - .../site-packages/pip/vcs/subversion.py | 269 - env/lib/python3.6/site-packages/pip/wheel.py | 853 -- .../site-packages/pkg_resources/__init__.py | 3051 ------- .../__pycache__/__init__.cpython-36.pyc | Bin 95359 -> 0 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 203 -> 0 bytes .../__pycache__/appdirs.cpython-36.pyc | Bin 18629 -> 0 bytes .../__pycache__/pyparsing.cpython-36.pyc | Bin 201125 -> 0 bytes .../_vendor/__pycache__/six.cpython-36.pyc | Bin 24500 -> 0 bytes .../pkg_resources/_vendor/appdirs.py | 552 -- .../_vendor/packaging/__about__.py | 21 - .../_vendor/packaging/__init__.py | 14 - .../__pycache__/__about__.cpython-36.pyc | Bin 739 -> 0 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 577 -> 0 bytes .../__pycache__/_compat.cpython-36.pyc | Bin 1024 -> 0 bytes .../__pycache__/_structures.cpython-36.pyc | Bin 2881 -> 0 bytes .../__pycache__/markers.cpython-36.pyc | Bin 8043 -> 0 bytes .../__pycache__/requirements.cpython-36.pyc | Bin 3900 -> 0 bytes .../__pycache__/specifiers.cpython-36.pyc | Bin 19843 -> 0 bytes .../__pycache__/utils.cpython-36.pyc | Bin 508 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 10618 -> 0 bytes .../_vendor/packaging/_compat.py | 30 - .../_vendor/packaging/_structures.py | 68 - .../_vendor/packaging/markers.py | 287 - .../_vendor/packaging/requirements.py | 127 - .../_vendor/packaging/specifiers.py | 774 -- .../pkg_resources/_vendor/packaging/utils.py | 14 - .../_vendor/packaging/version.py | 393 - .../pkg_resources/_vendor/pyparsing.py | 5696 ------------ .../pkg_resources/_vendor/six.py | 868 -- .../pkg_resources/extern/__init__.py | 73 - .../__pycache__/__init__.cpython-36.pyc | Bin 2434 -> 0 bytes .../requests-2.18.4.dist-info/DESCRIPTION.rst | 1645 ---- .../requests-2.18.4.dist-info/INSTALLER | 1 - .../requests-2.18.4.dist-info/METADATA | 1680 ---- .../requests-2.18.4.dist-info/RECORD | 43 - .../requests-2.18.4.dist-info/WHEEL | 6 - .../requests-2.18.4.dist-info/metadata.json | 1 - .../requests-2.18.4.dist-info/top_level.txt | 1 - .../site-packages/requests/__init__.py | 121 - .../__pycache__/__init__.cpython-36.pyc | Bin 3260 -> 0 bytes .../__pycache__/__version__.cpython-36.pyc | Bin 546 -> 0 bytes .../_internal_utils.cpython-36.pyc | Bin 1304 -> 0 bytes .../__pycache__/adapters.cpython-36.pyc | Bin 16447 -> 0 bytes .../requests/__pycache__/api.cpython-36.pyc | Bin 6471 -> 0 bytes .../requests/__pycache__/auth.cpython-36.pyc | Bin 7832 -> 0 bytes .../requests/__pycache__/certs.cpython-36.pyc | Bin 617 -> 0 bytes .../__pycache__/compat.cpython-36.pyc | Bin 1557 -> 0 bytes .../__pycache__/cookies.cpython-36.pyc | Bin 18554 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 5307 -> 0 bytes .../requests/__pycache__/help.cpython-36.pyc | Bin 2644 -> 0 bytes .../requests/__pycache__/hooks.cpython-36.pyc | Bin 993 -> 0 bytes .../__pycache__/models.cpython-36.pyc | Bin 23904 -> 0 bytes .../__pycache__/packages.cpython-36.pyc | Bin 428 -> 0 bytes .../__pycache__/sessions.cpython-36.pyc | Bin 18467 -> 0 bytes .../__pycache__/status_codes.cpython-36.pyc | Bin 3669 -> 0 bytes .../__pycache__/structures.cpython-36.pyc | Bin 4401 -> 0 bytes .../requests/__pycache__/utils.cpython-36.pyc | Bin 20647 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 42 - .../site-packages/requests/adapters.py | 525 -- .../python3.6/site-packages/requests/api.py | 152 - .../python3.6/site-packages/requests/auth.py | 293 - .../python3.6/site-packages/requests/certs.py | 18 - .../site-packages/requests/compat.py | 69 - .../site-packages/requests/cookies.py | 542 -- .../site-packages/requests/exceptions.py | 122 - .../python3.6/site-packages/requests/help.py | 120 - .../python3.6/site-packages/requests/hooks.py | 34 - .../site-packages/requests/models.py | 948 -- .../site-packages/requests/packages.py | 14 - .../site-packages/requests/sessions.py | 737 -- .../site-packages/requests/status_codes.py | 91 - .../site-packages/requests/structures.py | 105 - .../python3.6/site-packages/requests/utils.py | 904 -- .../DESCRIPTION.rst | 243 - .../setuptools-28.8.0.dist-info/INSTALLER | 1 - .../setuptools-28.8.0.dist-info/METADATA | 272 - .../setuptools-28.8.0.dist-info/RECORD | 143 - .../setuptools-28.8.0.dist-info/WHEEL | 6 - .../dependency_links.txt | 2 - .../entry_points.txt | 63 - .../setuptools-28.8.0.dist-info/metadata.json | 1 - .../setuptools-28.8.0.dist-info/top_level.txt | 3 - .../setuptools-28.8.0.dist-info/zip-safe | 1 - .../site-packages/setuptools/__init__.py | 160 - .../__pycache__/__init__.cpython-36.pyc | Bin 5705 -> 0 bytes .../__pycache__/archive_util.cpython-36.pyc | Bin 5168 -> 0 bytes .../__pycache__/depends.cpython-36.pyc | Bin 5838 -> 0 bytes .../__pycache__/dist.cpython-36.pyc | Bin 32178 -> 0 bytes .../__pycache__/extension.cpython-36.pyc | Bin 1985 -> 0 bytes .../__pycache__/glob.cpython-36.pyc | Bin 3853 -> 0 bytes .../__pycache__/launch.cpython-36.pyc | Bin 864 -> 0 bytes .../__pycache__/lib2to3_ex.cpython-36.pyc | Bin 2443 -> 0 bytes .../__pycache__/monkey.cpython-36.pyc | Bin 4533 -> 0 bytes .../__pycache__/msvc.cpython-36.pyc | Bin 31286 -> 0 bytes .../__pycache__/namespaces.cpython-36.pyc | Bin 3201 -> 0 bytes .../__pycache__/package_index.cpython-36.pyc | Bin 32500 -> 0 bytes .../__pycache__/py26compat.cpython-36.pyc | Bin 1073 -> 0 bytes .../__pycache__/py27compat.cpython-36.pyc | Bin 622 -> 0 bytes .../__pycache__/py31compat.cpython-36.pyc | Bin 1903 -> 0 bytes .../__pycache__/sandbox.cpython-36.pyc | Bin 15543 -> 0 bytes .../__pycache__/site-patch.cpython-36.pyc | Bin 1516 -> 0 bytes .../__pycache__/ssl_support.cpython-36.pyc | Bin 6369 -> 0 bytes .../__pycache__/unicode_utils.cpython-36.pyc | Bin 1179 -> 0 bytes .../__pycache__/version.cpython-36.pyc | Bin 333 -> 0 bytes .../windows_support.cpython-36.pyc | Bin 1021 -> 0 bytes .../site-packages/setuptools/archive_util.py | 173 - .../site-packages/setuptools/cli-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/cli-64.exe | Bin 74752 -> 0 bytes .../site-packages/setuptools/cli.exe | Bin 65536 -> 0 bytes .../setuptools/command/__init__.py | 17 - .../__pycache__/__init__.cpython-36.pyc | Bin 722 -> 0 bytes .../command/__pycache__/alias.cpython-36.pyc | Bin 2444 -> 0 bytes .../__pycache__/bdist_egg.cpython-36.pyc | Bin 13674 -> 0 bytes .../__pycache__/bdist_rpm.cpython-36.pyc | Bin 1787 -> 0 bytes .../__pycache__/bdist_wininst.cpython-36.pyc | Bin 988 -> 0 bytes .../__pycache__/build_ext.cpython-36.pyc | Bin 10014 -> 0 bytes .../__pycache__/build_py.cpython-36.pyc | Bin 8583 -> 0 bytes .../__pycache__/develop.cpython-36.pyc | Bin 5900 -> 0 bytes .../__pycache__/easy_install.cpython-36.pyc | Bin 63994 -> 0 bytes .../__pycache__/egg_info.cpython-36.pyc | Bin 21067 -> 0 bytes .../__pycache__/install.cpython-36.pyc | Bin 3984 -> 0 bytes .../install_egg_info.cpython-36.pyc | Bin 2449 -> 0 bytes .../__pycache__/install_lib.cpython-36.pyc | Bin 4094 -> 0 bytes .../install_scripts.cpython-36.pyc | Bin 2289 -> 0 bytes .../__pycache__/py36compat.cpython-36.pyc | Bin 4634 -> 0 bytes .../__pycache__/register.cpython-36.pyc | Bin 604 -> 0 bytes .../command/__pycache__/rotate.cpython-36.pyc | Bin 2590 -> 0 bytes .../__pycache__/saveopts.cpython-36.pyc | Bin 935 -> 0 bytes .../command/__pycache__/sdist.cpython-36.pyc | Bin 6119 -> 0 bytes .../command/__pycache__/setopt.cpython-36.pyc | Bin 4613 -> 0 bytes .../command/__pycache__/test.cpython-36.pyc | Bin 7462 -> 0 bytes .../command/__pycache__/upload.cpython-36.pyc | Bin 1363 -> 0 bytes .../__pycache__/upload_docs.cpython-36.pyc | Bin 6032 -> 0 bytes .../site-packages/setuptools/command/alias.py | 80 - .../setuptools/command/bdist_egg.py | 472 - .../setuptools/command/bdist_rpm.py | 43 - .../setuptools/command/bdist_wininst.py | 21 - .../setuptools/command/build_ext.py | 328 - .../setuptools/command/build_py.py | 270 - .../setuptools/command/develop.py | 197 - .../setuptools/command/easy_install.py | 2287 ----- .../setuptools/command/egg_info.py | 697 -- .../setuptools/command/install.py | 125 - .../setuptools/command/install_egg_info.py | 62 - .../setuptools/command/install_lib.py | 121 - .../setuptools/command/install_scripts.py | 65 - .../setuptools/command/launcher manifest.xml | 15 - .../setuptools/command/py36compat.py | 136 - .../setuptools/command/register.py | 10 - .../setuptools/command/rotate.py | 66 - .../setuptools/command/saveopts.py | 22 - .../site-packages/setuptools/command/sdist.py | 202 - .../setuptools/command/setopt.py | 149 - .../site-packages/setuptools/command/test.py | 247 - .../setuptools/command/upload.py | 38 - .../setuptools/command/upload_docs.py | 206 - .../site-packages/setuptools/depends.py | 217 - .../site-packages/setuptools/dist.py | 914 -- .../site-packages/setuptools/extension.py | 57 - .../setuptools/extern/__init__.py | 4 - .../__pycache__/__init__.cpython-36.pyc | Bin 343 -> 0 bytes .../site-packages/setuptools/glob.py | 176 - .../site-packages/setuptools/gui-32.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/gui-64.exe | Bin 75264 -> 0 bytes .../site-packages/setuptools/gui.exe | Bin 65536 -> 0 bytes .../site-packages/setuptools/launch.py | 35 - .../site-packages/setuptools/lib2to3_ex.py | 62 - .../site-packages/setuptools/monkey.py | 186 - .../site-packages/setuptools/msvc.py | 1193 --- .../site-packages/setuptools/namespaces.py | 93 - .../site-packages/setuptools/package_index.py | 1115 --- .../site-packages/setuptools/py26compat.py | 31 - .../site-packages/setuptools/py27compat.py | 18 - .../site-packages/setuptools/py31compat.py | 56 - .../site-packages/setuptools/sandbox.py | 492 -- .../setuptools/script (dev).tmpl | 5 - .../site-packages/setuptools/script.tmpl | 3 - .../site-packages/setuptools/site-patch.py | 74 - .../site-packages/setuptools/ssl_support.py | 250 - .../site-packages/setuptools/unicode_utils.py | 44 - .../site-packages/setuptools/version.py | 6 - .../setuptools/windows_support.py | 29 - .../urllib3-1.22.dist-info/DESCRIPTION.rst | 995 --- .../urllib3-1.22.dist-info/INSTALLER | 1 - .../urllib3-1.22.dist-info/METADATA | 1031 --- .../urllib3-1.22.dist-info/RECORD | 79 - .../urllib3-1.22.dist-info/WHEEL | 6 - .../urllib3-1.22.dist-info/metadata.json | 1 - .../urllib3-1.22.dist-info/top_level.txt | 1 - .../site-packages/urllib3/__init__.py | 97 - .../__pycache__/__init__.cpython-36.pyc | Bin 2503 -> 0 bytes .../__pycache__/_collections.cpython-36.pyc | Bin 10537 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 8836 -> 0 bytes .../__pycache__/connectionpool.cpython-36.pyc | Bin 23731 -> 0 bytes .../__pycache__/exceptions.cpython-36.pyc | Bin 10394 -> 0 bytes .../urllib3/__pycache__/fields.cpython-36.pyc | Bin 5865 -> 0 bytes .../__pycache__/filepost.cpython-36.pyc | Bin 2664 -> 0 bytes .../__pycache__/poolmanager.cpython-36.pyc | Bin 12807 -> 0 bytes .../__pycache__/request.cpython-36.pyc | Bin 5559 -> 0 bytes .../__pycache__/response.cpython-36.pyc | Bin 16228 -> 0 bytes .../site-packages/urllib3/_collections.py | 319 - .../site-packages/urllib3/connection.py | 373 - .../site-packages/urllib3/connectionpool.py | 905 -- .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 194 -> 0 bytes .../__pycache__/appengine.cpython-36.pyc | Bin 8808 -> 0 bytes .../__pycache__/ntlmpool.cpython-36.pyc | Bin 3242 -> 0 bytes .../__pycache__/pyopenssl.cpython-36.pyc | Bin 14128 -> 0 bytes .../securetransport.cpython-36.pyc | Bin 18013 -> 0 bytes .../contrib/__pycache__/socks.cpython-36.pyc | Bin 4803 -> 0 bytes .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 211 -> 0 bytes .../__pycache__/bindings.cpython-36.pyc | Bin 10426 -> 0 bytes .../__pycache__/low_level.cpython-36.pyc | Bin 7451 -> 0 bytes .../contrib/_securetransport/bindings.py | 593 -- .../contrib/_securetransport/low_level.py | 343 - .../urllib3/contrib/appengine.py | 296 - .../site-packages/urllib3/contrib/ntlmpool.py | 112 - .../urllib3/contrib/pyopenssl.py | 455 - .../urllib3/contrib/securetransport.py | 810 -- .../site-packages/urllib3/contrib/socks.py | 188 - .../site-packages/urllib3/exceptions.py | 246 - .../python3.6/site-packages/urllib3/fields.py | 178 - .../site-packages/urllib3/filepost.py | 94 - .../urllib3/packages/__init__.py | 5 - .../__pycache__/__init__.cpython-36.pyc | Bin 320 -> 0 bytes .../__pycache__/ordered_dict.cpython-36.pyc | Bin 8397 -> 0 bytes .../packages/__pycache__/six.cpython-36.pyc | Bin 24492 -> 0 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-36.pyc | Bin 205 -> 0 bytes .../__pycache__/makefile.cpython-36.pyc | Bin 1305 -> 0 bytes .../urllib3/packages/backports/makefile.py | 53 - .../urllib3/packages/ordered_dict.py | 259 - .../site-packages/urllib3/packages/six.py | 868 -- .../packages/ssl_match_hostname/__init__.py | 19 - .../__pycache__/__init__.cpython-36.pyc | Bin 581 -> 0 bytes .../_implementation.cpython-36.pyc | Bin 3284 -> 0 bytes .../ssl_match_hostname/_implementation.py | 157 - .../site-packages/urllib3/poolmanager.py | 440 - .../site-packages/urllib3/request.py | 148 - .../site-packages/urllib3/response.py | 626 -- .../site-packages/urllib3/util/__init__.py | 54 - .../util/__pycache__/__init__.cpython-36.pyc | Bin 1124 -> 0 bytes .../__pycache__/connection.cpython-36.pyc | Bin 3122 -> 0 bytes .../util/__pycache__/request.cpython-36.pyc | Bin 3216 -> 0 bytes .../util/__pycache__/response.cpython-36.pyc | Bin 1897 -> 0 bytes .../util/__pycache__/retry.cpython-36.pyc | Bin 12312 -> 0 bytes .../util/__pycache__/selectors.cpython-36.pyc | Bin 16411 -> 0 bytes .../util/__pycache__/ssl_.cpython-36.pyc | Bin 8957 -> 0 bytes .../util/__pycache__/timeout.cpython-36.pyc | Bin 8765 -> 0 bytes .../util/__pycache__/url.cpython-36.pyc | Bin 5184 -> 0 bytes .../util/__pycache__/wait.cpython-36.pyc | Bin 1659 -> 0 bytes .../site-packages/urllib3/util/connection.py | 130 - .../site-packages/urllib3/util/request.py | 118 - .../site-packages/urllib3/util/response.py | 81 - .../site-packages/urllib3/util/retry.py | 401 - .../site-packages/urllib3/util/selectors.py | 581 -- .../site-packages/urllib3/util/ssl_.py | 341 - .../site-packages/urllib3/util/timeout.py | 242 - .../site-packages/urllib3/util/url.py | 230 - .../site-packages/urllib3/util/wait.py | 40 - .../wheel-0.30.0.dist-info/DESCRIPTION.rst | 340 - .../wheel-0.30.0.dist-info/INSTALLER | 1 - .../wheel-0.30.0.dist-info/LICENSE.txt | 22 - .../wheel-0.30.0.dist-info/METADATA | 374 - .../wheel-0.30.0.dist-info/RECORD | 46 - .../wheel-0.30.0.dist-info/WHEEL | 6 - .../wheel-0.30.0.dist-info/entry_points.txt | 6 - .../wheel-0.30.0.dist-info/metadata.json | 1 - .../wheel-0.30.0.dist-info/top_level.txt | 1 - .../python3.6/site-packages/wheel/__init__.py | 2 - .../python3.6/site-packages/wheel/__main__.py | 19 - .../wheel/__pycache__/__init__.cpython-36.pyc | Bin 204 -> 0 bytes .../wheel/__pycache__/__main__.cpython-36.pyc | Bin 599 -> 0 bytes .../wheel/__pycache__/archive.cpython-36.pyc | Bin 2067 -> 0 bytes .../__pycache__/bdist_wheel.cpython-36.pyc | Bin 13206 -> 0 bytes .../__pycache__/decorator.cpython-36.pyc | Bin 886 -> 0 bytes .../__pycache__/egg2wheel.cpython-36.pyc | Bin 2583 -> 0 bytes .../wheel/__pycache__/install.cpython-36.pyc | Bin 14340 -> 0 bytes .../wheel/__pycache__/metadata.cpython-36.pyc | Bin 8651 -> 0 bytes .../wheel/__pycache__/paths.cpython-36.pyc | Bin 1126 -> 0 bytes .../__pycache__/pep425tags.cpython-36.pyc | Bin 4636 -> 0 bytes .../wheel/__pycache__/pkginfo.cpython-36.pyc | Bin 1575 -> 0 bytes .../wheel/__pycache__/util.cpython-36.pyc | Bin 5642 -> 0 bytes .../__pycache__/wininst2wheel.cpython-36.pyc | Bin 5377 -> 0 bytes .../python3.6/site-packages/wheel/archive.py | 80 - .../site-packages/wheel/bdist_wheel.py | 482 -- .../site-packages/wheel/decorator.py | 19 - .../site-packages/wheel/egg2wheel.py | 90 - .../python3.6/site-packages/wheel/install.py | 494 -- .../python3.6/site-packages/wheel/metadata.py | 338 - .../python3.6/site-packages/wheel/paths.py | 43 - .../site-packages/wheel/pep425tags.py | 180 - .../python3.6/site-packages/wheel/pkginfo.py | 43 - .../wheel/signatures/__init__.py | 110 - .../__pycache__/__init__.cpython-36.pyc | Bin 2923 -> 0 bytes .../__pycache__/djbec.cpython-36.pyc | Bin 9323 -> 0 bytes .../__pycache__/ed25519py.cpython-36.pyc | Bin 1718 -> 0 bytes .../__pycache__/keys.cpython-36.pyc | Bin 4069 -> 0 bytes .../site-packages/wheel/signatures/djbec.py | 323 - .../wheel/signatures/ed25519py.py | 50 - .../site-packages/wheel/signatures/keys.py | 101 - .../site-packages/wheel/tool/__init__.py | 376 - .../tool/__pycache__/__init__.cpython-36.pyc | Bin 11385 -> 0 bytes env/lib/python3.6/site-packages/wheel/util.py | 176 - .../site-packages/wheel/wininst2wheel.py | 217 - env/pip-selfcheck.json | 1 - env/pyvenv.cfg | 3 - icon.png | Bin 19073 -> 33482 bytes info.plist | 15 +- 954 files changed, 13 insertions(+), 162524 deletions(-) delete mode 100644 3E7665B9-C9D2-4DA9-A5C5-C36103D278FC.png delete mode 100644 env/bin/activate delete mode 100644 env/bin/activate.csh delete mode 100644 env/bin/activate.fish delete mode 100755 env/bin/chardetect delete mode 100755 env/bin/easy_install delete mode 100755 env/bin/easy_install-3.6 delete mode 100755 env/bin/pip delete mode 100755 env/bin/pip3 delete mode 100755 env/bin/pip3.6 delete mode 120000 env/bin/python delete mode 120000 env/bin/python3 delete mode 120000 env/bin/python3.6 delete mode 100755 env/bin/wheel delete mode 100644 env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/certifi/__init__.py delete mode 100644 env/lib/python3.6/site-packages/certifi/__main__.py delete mode 100644 env/lib/python3.6/site-packages/certifi/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/certifi/__pycache__/__main__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/certifi/__pycache__/core.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/certifi/cacert.pem delete mode 100644 env/lib/python3.6/site-packages/certifi/core.py delete mode 100644 env/lib/python3.6/site-packages/certifi/old_root.pem delete mode 100644 env/lib/python3.6/site-packages/certifi/weak.pem delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/chardet/__init__.py delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/big5freq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/big5prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/chardistribution.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/charsetprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/cp949prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/enums.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/escprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/escsm.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/eucjpprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/euckrfreq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/euckrprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/euctwfreq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/euctwprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/gb2312freq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/gb2312prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/hebrewprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/jisfreq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/jpcntx.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langthaimodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/langturkishmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/latin1prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/mbcssm.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/sjisprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/universaldetector.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/utf8prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/__pycache__/version.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/big5freq.py delete mode 100644 env/lib/python3.6/site-packages/chardet/big5prober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/chardistribution.py delete mode 100644 env/lib/python3.6/site-packages/chardet/charsetgroupprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/charsetprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/cli/__init__.py delete mode 100644 env/lib/python3.6/site-packages/chardet/cli/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/cli/__pycache__/chardetect.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/chardet/cli/chardetect.py delete mode 100644 env/lib/python3.6/site-packages/chardet/codingstatemachine.py delete mode 100644 env/lib/python3.6/site-packages/chardet/compat.py delete mode 100644 env/lib/python3.6/site-packages/chardet/cp949prober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/enums.py delete mode 100644 env/lib/python3.6/site-packages/chardet/escprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/escsm.py delete mode 100644 env/lib/python3.6/site-packages/chardet/eucjpprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/euckrfreq.py delete mode 100644 env/lib/python3.6/site-packages/chardet/euckrprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/euctwfreq.py delete mode 100644 env/lib/python3.6/site-packages/chardet/euctwprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/gb2312freq.py delete mode 100644 env/lib/python3.6/site-packages/chardet/gb2312prober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/hebrewprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/jisfreq.py delete mode 100644 env/lib/python3.6/site-packages/chardet/jpcntx.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langbulgarianmodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langcyrillicmodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langgreekmodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langhebrewmodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langhungarianmodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langthaimodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/langturkishmodel.py delete mode 100644 env/lib/python3.6/site-packages/chardet/latin1prober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/mbcharsetprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/mbcsgroupprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/mbcssm.py delete mode 100644 env/lib/python3.6/site-packages/chardet/sbcharsetprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/sbcsgroupprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/sjisprober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/universaldetector.py delete mode 100644 env/lib/python3.6/site-packages/chardet/utf8prober.py delete mode 100644 env/lib/python3.6/site-packages/chardet/version.py delete mode 100644 env/lib/python3.6/site-packages/easy_install.py delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/idna-2.6.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/idna/__init__.py delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/codec.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/core.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/idnadata.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/intranges.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/package_data.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/__pycache__/uts46data.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/idna/codec.py delete mode 100644 env/lib/python3.6/site-packages/idna/compat.py delete mode 100644 env/lib/python3.6/site-packages/idna/core.py delete mode 100644 env/lib/python3.6/site-packages/idna/idnadata.py delete mode 100644 env/lib/python3.6/site-packages/idna/intranges.py delete mode 100644 env/lib/python3.6/site-packages/idna/package_data.py delete mode 100644 env/lib/python3.6/site-packages/idna/uts46data.py delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/pip/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/__main__.py delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/__main__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/basecommand.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/cmdoptions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/download.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/exceptions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/index.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/pep425tags.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/status_codes.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/__pycache__/wheel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/appdirs.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/distro.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/ipaddress.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/ordereddict.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/re-vendor.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/retrying.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/__pycache__/six.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/appdirs.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/_cmd.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/adapter.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/cache.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/compat.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/controller.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/filewrapper.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/heuristics.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/serialize.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/wrapper.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/ansi.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/ansitowin32.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/initialise.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/win32.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/colorama/winterm.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/misc.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/shutil.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/tarfile.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/compat.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/database.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/index.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/locators.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/manifest.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/markers.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/metadata.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/resources.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/scripts.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/t32.exe delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/t64.exe delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/util.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/version.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/w32.exe delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/w64.exe delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distlib/wheel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/distro.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_ihatexml.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_inputstream.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_tokenizer.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/_base.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/datrie.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/py.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/_utils.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/constants.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/lint.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/base.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/lint.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/optionaltags.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/sanitizer.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/whitespace.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/html5parser.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/serializer.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treeadapters/sax.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/base.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/dom.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/etree.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/base.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/dom.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/etree.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/ipaddress.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/linklockfile.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/mkdirlockfile.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/pidlockfile.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/sqlitelockfile.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/lockfile/symlinklockfile.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/ordereddict.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__about__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/_compat.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/_structures.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/markers.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/requirements.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/specifiers.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/utils.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/packaging/version.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/bar.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/counter.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/bar.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/counter.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/helpers.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/progress/spinner.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/pyparsing.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/re-vendor.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/api.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/models.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/adapters.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/api.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/auth.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/cacert.pem delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/certs.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/compat.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/cookies.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/exceptions.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/hooks.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/models.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/big5prober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/chardistribution.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/compat.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/constants.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/cp949prober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/escsm.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euckrprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwfreq.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/euctwprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312freq.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/gb2312prober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/hebrewprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jisfreq.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/jpcntx.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langbulgarianmodel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langcyrillicmodel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langgreekmodel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhebrewmodel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langhungarianmodel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/langthaimodel.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/latin1prober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcsgroupprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sbcsgroupprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/chardet/utf8prober.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connection.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/connectionpool.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/appengine.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/contrib/socks.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/fields.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/filepost.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/request.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/response.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/retry.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/timeout.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/packages/urllib3/util/url.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/sessions.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/status_codes.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/structures.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/requests/utils.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/retrying.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/six.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/labels.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/mklabels.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/tests.py delete mode 100644 env/lib/python3.6/site-packages/pip/_vendor/webencodings/x_user_defined.py delete mode 100644 env/lib/python3.6/site-packages/pip/basecommand.py delete mode 100644 env/lib/python3.6/site-packages/pip/baseparser.py delete mode 100644 env/lib/python3.6/site-packages/pip/cmdoptions.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/check.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/completion.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/download.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/freeze.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/hash.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/help.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/install.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/list.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/search.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/show.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/uninstall.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/__pycache__/wheel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/commands/check.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/completion.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/download.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/freeze.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/hash.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/help.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/install.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/list.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/search.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/show.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/uninstall.py delete mode 100644 env/lib/python3.6/site-packages/pip/commands/wheel.py delete mode 100644 env/lib/python3.6/site-packages/pip/compat/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/compat/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/compat/__pycache__/dictconfig.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/compat/dictconfig.py delete mode 100644 env/lib/python3.6/site-packages/pip/download.py delete mode 100644 env/lib/python3.6/site-packages/pip/exceptions.py delete mode 100644 env/lib/python3.6/site-packages/pip/index.py delete mode 100644 env/lib/python3.6/site-packages/pip/locations.py delete mode 100644 env/lib/python3.6/site-packages/pip/models/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/models/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/models/__pycache__/index.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/models/index.py delete mode 100644 env/lib/python3.6/site-packages/pip/operations/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/operations/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/operations/__pycache__/check.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/operations/__pycache__/freeze.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/operations/check.py delete mode 100644 env/lib/python3.6/site-packages/pip/operations/freeze.py delete mode 100644 env/lib/python3.6/site-packages/pip/pep425tags.py delete mode 100644 env/lib/python3.6/site-packages/pip/req/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_file.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_install.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_set.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/req/__pycache__/req_uninstall.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/req/req_file.py delete mode 100644 env/lib/python3.6/site-packages/pip/req/req_install.py delete mode 100644 env/lib/python3.6/site-packages/pip/req/req_set.py delete mode 100644 env/lib/python3.6/site-packages/pip/req/req_uninstall.py delete mode 100644 env/lib/python3.6/site-packages/pip/status_codes.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/appdirs.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/build.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/deprecation.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/encoding.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/filesystem.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/glibc.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/hashes.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/logging.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/outdated.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/packaging.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/setuptools_build.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/__pycache__/ui.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/utils/appdirs.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/build.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/deprecation.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/encoding.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/filesystem.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/glibc.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/hashes.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/logging.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/outdated.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/packaging.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/setuptools_build.py delete mode 100644 env/lib/python3.6/site-packages/pip/utils/ui.py delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/bazaar.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/git.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/mercurial.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/__pycache__/subversion.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/bazaar.py delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/git.py delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/mercurial.py delete mode 100644 env/lib/python3.6/site-packages/pip/vcs/subversion.py delete mode 100644 env/lib/python3.6/site-packages/pip/wheel.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/__pycache__/six.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/appdirs.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__about__.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_compat.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/_structures.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/markers.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/specifiers.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/utils.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/version.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/_vendor/six.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/extern/__init__.py delete mode 100644 env/lib/python3.6/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/requests-2.18.4.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/requests/__init__.py delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/__version__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/_internal_utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/adapters.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/api.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/auth.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/certs.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/cookies.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/exceptions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/help.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/hooks.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/models.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/packages.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/sessions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/status_codes.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/structures.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__pycache__/utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/requests/__version__.py delete mode 100644 env/lib/python3.6/site-packages/requests/_internal_utils.py delete mode 100644 env/lib/python3.6/site-packages/requests/adapters.py delete mode 100644 env/lib/python3.6/site-packages/requests/api.py delete mode 100644 env/lib/python3.6/site-packages/requests/auth.py delete mode 100644 env/lib/python3.6/site-packages/requests/certs.py delete mode 100644 env/lib/python3.6/site-packages/requests/compat.py delete mode 100644 env/lib/python3.6/site-packages/requests/cookies.py delete mode 100644 env/lib/python3.6/site-packages/requests/exceptions.py delete mode 100644 env/lib/python3.6/site-packages/requests/help.py delete mode 100644 env/lib/python3.6/site-packages/requests/hooks.py delete mode 100644 env/lib/python3.6/site-packages/requests/models.py delete mode 100644 env/lib/python3.6/site-packages/requests/packages.py delete mode 100644 env/lib/python3.6/site-packages/requests/sessions.py delete mode 100644 env/lib/python3.6/site-packages/requests/status_codes.py delete mode 100644 env/lib/python3.6/site-packages/requests/structures.py delete mode 100644 env/lib/python3.6/site-packages/requests/utils.py delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/dependency_links.txt delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/entry_points.txt delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/setuptools-28.8.0.dist-info/zip-safe delete mode 100644 env/lib/python3.6/site-packages/setuptools/__init__.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/archive_util.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/depends.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/dist.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/extension.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/glob.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/launch.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/lib2to3_ex.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/monkey.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/msvc.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/namespaces.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/package_index.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py26compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py27compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/py31compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/sandbox.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/site-patch.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/ssl_support.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/unicode_utils.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/version.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/__pycache__/windows_support.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/archive_util.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/cli-32.exe delete mode 100644 env/lib/python3.6/site-packages/setuptools/cli-64.exe delete mode 100644 env/lib/python3.6/site-packages/setuptools/cli.exe delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__init__.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/alias.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/bdist_wininst.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/build_ext.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/build_py.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/develop.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/easy_install.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/egg_info.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install_lib.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/install_scripts.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/py36compat.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/register.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/rotate.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/saveopts.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/sdist.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/setopt.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/test.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/upload.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/__pycache__/upload_docs.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/alias.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/bdist_egg.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/bdist_rpm.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/bdist_wininst.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/build_ext.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/build_py.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/develop.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/easy_install.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/egg_info.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/install.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/install_egg_info.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/install_lib.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/install_scripts.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/launcher manifest.xml delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/py36compat.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/register.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/rotate.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/saveopts.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/sdist.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/setopt.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/test.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/upload.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/command/upload_docs.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/depends.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/dist.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/extension.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/extern/__init__.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/extern/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/setuptools/glob.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/gui-32.exe delete mode 100644 env/lib/python3.6/site-packages/setuptools/gui-64.exe delete mode 100644 env/lib/python3.6/site-packages/setuptools/gui.exe delete mode 100644 env/lib/python3.6/site-packages/setuptools/launch.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/lib2to3_ex.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/monkey.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/msvc.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/namespaces.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/package_index.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/py26compat.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/py27compat.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/py31compat.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/sandbox.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/script (dev).tmpl delete mode 100644 env/lib/python3.6/site-packages/setuptools/script.tmpl delete mode 100644 env/lib/python3.6/site-packages/setuptools/site-patch.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/ssl_support.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/unicode_utils.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/version.py delete mode 100644 env/lib/python3.6/site-packages/setuptools/windows_support.py delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/urllib3-1.22.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/urllib3/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/_collections.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/connection.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/connectionpool.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/exceptions.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/fields.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/filepost.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/poolmanager.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/request.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/__pycache__/response.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/_collections.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/connection.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/connectionpool.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__pycache__/securetransport.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/_securetransport/bindings.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/_securetransport/low_level.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/appengine.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/ntlmpool.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/securetransport.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/contrib/socks.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/exceptions.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/fields.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/filepost.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/__pycache__/six.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/backports/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/backports/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/backports/__pycache__/makefile.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/backports/makefile.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/ordered_dict.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/six.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/packages/ssl_match_hostname/_implementation.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/poolmanager.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/request.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/response.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__init__.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/connection.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/request.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/response.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/retry.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/selectors.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/timeout.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/url.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/__pycache__/wait.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/connection.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/request.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/response.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/retry.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/selectors.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/ssl_.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/timeout.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/url.py delete mode 100644 env/lib/python3.6/site-packages/urllib3/util/wait.py delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/DESCRIPTION.rst delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/INSTALLER delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/LICENSE.txt delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/METADATA delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/RECORD delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/WHEEL delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/entry_points.txt delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/metadata.json delete mode 100644 env/lib/python3.6/site-packages/wheel-0.30.0.dist-info/top_level.txt delete mode 100644 env/lib/python3.6/site-packages/wheel/__init__.py delete mode 100644 env/lib/python3.6/site-packages/wheel/__main__.py delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/__main__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/archive.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/bdist_wheel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/decorator.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/egg2wheel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/install.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/metadata.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/paths.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/pep425tags.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/pkginfo.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/util.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/__pycache__/wininst2wheel.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/archive.py delete mode 100644 env/lib/python3.6/site-packages/wheel/bdist_wheel.py delete mode 100644 env/lib/python3.6/site-packages/wheel/decorator.py delete mode 100644 env/lib/python3.6/site-packages/wheel/egg2wheel.py delete mode 100644 env/lib/python3.6/site-packages/wheel/install.py delete mode 100644 env/lib/python3.6/site-packages/wheel/metadata.py delete mode 100644 env/lib/python3.6/site-packages/wheel/paths.py delete mode 100644 env/lib/python3.6/site-packages/wheel/pep425tags.py delete mode 100644 env/lib/python3.6/site-packages/wheel/pkginfo.py delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/__init__.py delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/__pycache__/djbec.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/__pycache__/ed25519py.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/__pycache__/keys.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/djbec.py delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/ed25519py.py delete mode 100644 env/lib/python3.6/site-packages/wheel/signatures/keys.py delete mode 100644 env/lib/python3.6/site-packages/wheel/tool/__init__.py delete mode 100644 env/lib/python3.6/site-packages/wheel/tool/__pycache__/__init__.cpython-36.pyc delete mode 100644 env/lib/python3.6/site-packages/wheel/util.py delete mode 100644 env/lib/python3.6/site-packages/wheel/wininst2wheel.py delete mode 100644 env/pip-selfcheck.json delete mode 100644 env/pyvenv.cfg diff --git a/3E7665B9-C9D2-4DA9-A5C5-C36103D278FC.png b/3E7665B9-C9D2-4DA9-A5C5-C36103D278FC.png deleted file mode 100644 index 242270d3d732764b8c9fd2d269e24a8b48e2ed23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19073 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≪F6TvF-h6&M&Fnxu%J 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 diff --git a/E0AC7B9B-26EF-4163-918E-5BDCF29BD1F6.png b/E0AC7B9B-26EF-4163-918E-5BDCF29BD1F6.png index 242270d3d732764b8c9fd2d269e24a8b48e2ed23..480a57d82cf8c75eb6a48806b31e0333a60a4a97 100644 GIT binary patch literal 33482 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 literal 19073 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≪F6TvF-h6&M&Fnxu%J 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 diff --git a/env/bin/activate b/env/bin/activate deleted file mode 100644 index 57b1a1e..0000000 --- a/env/bin/activate +++ /dev/null @@ -1,76 +0,0 @@ -# This file must be used with "source bin/activate" *from bash* -# you cannot run it directly - -deactivate () { - # reset old environment variables - if [ -n "$_OLD_VIRTUAL_PATH" ] ; then - PATH="$_OLD_VIRTUAL_PATH" - export PATH - unset _OLD_VIRTUAL_PATH - fi - if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then - PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" - export PYTHONHOME - unset _OLD_VIRTUAL_PYTHONHOME - fi - - # This should detect bash and zsh, which have a hash command that must - # be called to get it to forget past commands. Without forgetting - # past commands the $PATH changes we made may not be respected - if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then - hash -r - fi - - if [ -n "$_OLD_VIRTUAL_PS1" ] ; then - PS1="$_OLD_VIRTUAL_PS1" - export PS1 - unset _OLD_VIRTUAL_PS1 - fi - - unset VIRTUAL_ENV - if [ ! "$1" = "nondestructive" ] ; then - # Self destruct! - unset -f deactivate - fi -} - -# unset irrelevant variables -deactivate nondestructive - -VIRTUAL_ENV="/Users/Adam/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows/user.workflow.3797C385-0BE8-4B72-886D-069E662ABED7/env" -export VIRTUAL_ENV - -_OLD_VIRTUAL_PATH="$PATH" -PATH="$VIRTUAL_ENV/bin:$PATH" -export PATH - -# unset PYTHONHOME if set -# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) -# could use `if (set -u; : $PYTHONHOME) ;` in bash -if [ -n "$PYTHONHOME" ] ; then - _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" - unset PYTHONHOME -fi - -if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then - _OLD_VIRTUAL_PS1="$PS1" - if [ "x(env) " != x ] ; then - PS1="(env) $PS1" - else - if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1" - else - PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1" - fi - fi - export PS1 -fi - -# This should detect bash and zsh, which have a hash command that must -# be called to get it to forget past commands. Without forgetting -# past commands the $PATH changes we made may not be respected -if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then - hash -r -fi diff --git a/env/bin/activate.csh b/env/bin/activate.csh deleted file mode 100644 index b1c1baf..0000000 --- a/env/bin/activate.csh +++ /dev/null @@ -1,37 +0,0 @@ -# This file must be used with "source bin/activate.csh" *from csh*. -# You cannot run it directly. -# Created by Davide Di Blasi . -# Ported to Python 3.3 venv by Andrew Svetlov - -alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' - -# Unset irrelevant variables. -deactivate nondestructive - -setenv VIRTUAL_ENV "/Users/Adam/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows/user.workflow.3797C385-0BE8-4B72-886D-069E662ABED7/env" - -set _OLD_VIRTUAL_PATH="$PATH" -setenv PATH "$VIRTUAL_ENV/bin:$PATH" - - -set _OLD_VIRTUAL_PROMPT="$prompt" - -if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then - if ("env" != "") then - set env_name = "env" - else - if (`basename "VIRTUAL_ENV"` == "__") then - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - set env_name = `basename \`dirname "$VIRTUAL_ENV"\`` - else - set env_name = `basename "$VIRTUAL_ENV"` - endif - endif - set prompt = "[$env_name] $prompt" - unset env_name -endif - -alias pydoc python -m pydoc - -rehash diff --git a/env/bin/activate.fish b/env/bin/activate.fish deleted file mode 100644 index 135a469..0000000 --- a/env/bin/activate.fish +++ /dev/null @@ -1,75 +0,0 @@ -# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org) -# you cannot run it directly - -function deactivate -d "Exit virtualenv and return to normal shell environment" - # reset old environment variables - if test -n "$_OLD_VIRTUAL_PATH" - set -gx PATH $_OLD_VIRTUAL_PATH - set -e _OLD_VIRTUAL_PATH - end - if test -n "$_OLD_VIRTUAL_PYTHONHOME" - set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME - set -e _OLD_VIRTUAL_PYTHONHOME - end - - if test -n "$_OLD_FISH_PROMPT_OVERRIDE" - functions -e fish_prompt - set -e _OLD_FISH_PROMPT_OVERRIDE - functions -c _old_fish_prompt fish_prompt - functions -e _old_fish_prompt - end - - set -e VIRTUAL_ENV - if test "$argv[1]" != "nondestructive" - # Self destruct! - functions -e deactivate - end -end - -# unset irrelevant variables -deactivate nondestructive - -set -gx VIRTUAL_ENV "/Users/Adam/Library/Application Support/Alfred 3/Alfred.alfredpreferences/workflows/user.workflow.3797C385-0BE8-4B72-886D-069E662ABED7/env" - -set -gx _OLD_VIRTUAL_PATH $PATH -set -gx PATH "$VIRTUAL_ENV/bin" $PATH - -# unset PYTHONHOME if set -if set -q PYTHONHOME - set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME - set -e PYTHONHOME -end - -if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" - # fish uses a function instead of an env var to generate the prompt. - - # save the current fish_prompt function as the function _old_fish_prompt - functions -c fish_prompt _old_fish_prompt - - # with the original prompt function renamed, we can override with our own. - function fish_prompt - # Save the return status of the last command - set -l old_status $status - - # Prompt override? - if test -n "(env) " - printf "%s%s" "(env) " (set_color normal) - else - # ...Otherwise, prepend env - set -l _checkbase (basename "$VIRTUAL_ENV") - if test $_checkbase = "__" - # special case for Aspen magic directories - # see http://www.zetadev.com/software/aspen/ - printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) - else - printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) - end - end - - # Restore the return status of the previous command. - echo "exit $old_status" | . - _old_fish_prompt - end - - set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" -end diff --git a/env/bin/chardetect b/env/bin/chardetect deleted file mode 100755 index 76e5ead..0000000 --- a/env/bin/chardetect +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from chardet.cli.chardetect import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/bin/easy_install b/env/bin/easy_install deleted file mode 100755 index 0358f28..0000000 --- a/env/bin/easy_install +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/bin/easy_install-3.6 b/env/bin/easy_install-3.6 deleted file mode 100755 index 0358f28..0000000 --- a/env/bin/easy_install-3.6 +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from setuptools.command.easy_install import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/bin/pip b/env/bin/pip deleted file mode 100755 index 9131257..0000000 --- a/env/bin/pip +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/bin/pip3 b/env/bin/pip3 deleted file mode 100755 index 9131257..0000000 --- a/env/bin/pip3 +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/bin/pip3.6 b/env/bin/pip3.6 deleted file mode 100755 index 9131257..0000000 --- a/env/bin/pip3.6 +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from pip import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/bin/python b/env/bin/python deleted file mode 120000 index 039b719..0000000 --- a/env/bin/python +++ /dev/null @@ -1 +0,0 @@ -python3.6 \ No newline at end of file diff --git a/env/bin/python3 b/env/bin/python3 deleted file mode 120000 index 039b719..0000000 --- a/env/bin/python3 +++ /dev/null @@ -1 +0,0 @@ -python3.6 \ No newline at end of file diff --git a/env/bin/python3.6 b/env/bin/python3.6 deleted file mode 120000 index 0030930..0000000 --- a/env/bin/python3.6 +++ /dev/null @@ -1 +0,0 @@ -/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/bin/python3.6 \ No newline at end of file diff --git a/env/bin/wheel b/env/bin/wheel deleted file mode 100755 index 16a0041..0000000 --- a/env/bin/wheel +++ /dev/null @@ -1,11 +0,0 @@ -#!/Users/Adam/Projekty/Alfred/DeepL-Console-Translator/env/bin/python3.6 - -# -*- coding: utf-8 -*- -import re -import sys - -from wheel.tool import main - -if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit(main()) diff --git a/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc b/env/lib/python3.6/site-packages/__pycache__/easy_install.cpython-36.pyc deleted file mode 100644 index 055f789f068ee9a0bb50dbaeebc668f67748c3dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmYj~y-LJD6oqG!=mv40K+s^9Vl(cVjVy@RSlC#ojoVx%nMpP{KOr+&SPMaX8ehjU zt(C7}pf0GKWS zh8IO82Us2$Zo9^6EllzQNVtPS{Y`Cs$9O^Qwi{pZQIe*u*VJ;drY$M8V7xU1GE(K~ z$xP&nY|a+x9HvkfnVre>$f;7~mNa!U$-7#xNm^DmWveOqYbXC(lV;P0r&6;{@H6bH L&CnlsA>PHGE&N?c diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst deleted file mode 100644 index 30e2362..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,49 +0,0 @@ -Certifi: Python SSL Certificates -================================ - -`Certifi`_ is a carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' - -Enjoy! - -1024-bit Root Certificates -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Browsers and certificate authorities have concluded that 1024-bit keys are -unacceptably weak for certificates, particularly root certificates. For this -reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its -bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) -certificate from the same CA. Because Mozilla removed these certificates from -its bundle, ``certifi`` removed them as well. - -Unfortunately, old versions of OpenSSL (less than 1.0.2) sometimes fail to -validate certificate chains that use the strong roots. For this reason, if you -fail to validate a certificate using the ``certifi.where()`` mechanism, you can -intentionally re-add the 1024-bit roots back into your bundle by calling -``certifi.old_where()`` instead. This is not recommended in production: if at -all possible you should upgrade to a newer OpenSSL. However, if you have no -other option, this may work for you. - -.. _`Certifi`: http://certifi.io/en/latest/ -.. _`Requests`: http://docs.python-requests.org/en/latest/ - - diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/METADATA b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/METADATA deleted file mode 100644 index 6091144..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/METADATA +++ /dev/null @@ -1,71 +0,0 @@ -Metadata-Version: 2.0 -Name: certifi -Version: 2017.7.27.1 -Summary: Python package for providing Mozilla's CA Bundle. -Home-page: http://certifi.io/ -Author: Kenneth Reitz -Author-email: me@kennethreitz.com -License: MPL-2.0 -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Natural Language :: English -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 - -Certifi: Python SSL Certificates -================================ - -`Certifi`_ is a carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python2.7/site-packages/certifi/cacert.pem' - -Enjoy! - -1024-bit Root Certificates -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Browsers and certificate authorities have concluded that 1024-bit keys are -unacceptably weak for certificates, particularly root certificates. For this -reason, Mozilla has removed any weak (i.e. 1024-bit key) certificate from its -bundle, replacing it with an equivalent strong (i.e. 2048-bit or greater key) -certificate from the same CA. Because Mozilla removed these certificates from -its bundle, ``certifi`` removed them as well. - -Unfortunately, old versions of OpenSSL (less than 1.0.2) sometimes fail to -validate certificate chains that use the strong roots. For this reason, if you -fail to validate a certificate using the ``certifi.where()`` mechanism, you can -intentionally re-add the 1024-bit roots back into your bundle by calling -``certifi.old_where()`` instead. This is not recommended in production: if at -all possible you should upgrade to a newer OpenSSL. However, if you have no -other option, this may work for you. - -.. _`Certifi`: http://certifi.io/en/latest/ -.. _`Requests`: http://docs.python-requests.org/en/latest/ - - diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/RECORD b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/RECORD deleted file mode 100644 index a507745..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/RECORD +++ /dev/null @@ -1,16 +0,0 @@ -certifi/__init__.py,sha256=My7zz7T7ihes4NXz6H8W7R5_mbQKxH4QOC-bpe2NzWk,65 -certifi/__main__.py,sha256=FiOYt1Fltst7wk9DRa6GCoBr8qBUxlNQu_MKJf04E6s,41 -certifi/cacert.pem,sha256=H1zXFqV-gILXM16kCI9onoUlQtpPQFRUx22fQXVygv8,296399 -certifi/core.py,sha256=QUebyXnT-N_b9vdOg1zw28xqdT0Y7mLkiBrLEQY8fXM,714 -certifi/old_root.pem,sha256=HT0KIfaM83q0XHFqGEesiGyfmlSWuD2RI0-AVIS2srY,25626 -certifi/weak.pem,sha256=Oo30AxpvkrmeN29S3UgbVzTIfaxqAbdXUZ1y2V6nEe0,322025 -certifi-2017.7.27.1.dist-info/DESCRIPTION.rst,sha256=wVWYoH3eovdWFPZnYU2NT4itGRx3eN5C_s1IuNm4qF4,1731 -certifi-2017.7.27.1.dist-info/METADATA,sha256=oq-Gce39ekQpzgfJJOSDXa3_LUhguodCWLYAGFeBkHI,2548 -certifi-2017.7.27.1.dist-info/RECORD,, -certifi-2017.7.27.1.dist-info/WHEEL,sha256=5wvfB7GvgZAbKBSE9uX9Zbi6LCL-_KgezgHblXhCRnM,113 -certifi-2017.7.27.1.dist-info/metadata.json,sha256=u7l0Z0L2OAt8iknI-JBmglISdRD1WSh_En-v_uE6oTU,915 -certifi-2017.7.27.1.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 -certifi-2017.7.27.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -certifi/__pycache__/__init__.cpython-36.pyc,, -certifi/__pycache__/__main__.cpython-36.pyc,, -certifi/__pycache__/core.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/WHEEL b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/WHEEL deleted file mode 100644 index 7bf9daa..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0.a0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/metadata.json b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/metadata.json deleted file mode 100644 index 497b57f..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6"], "extensions": {"python.details": {"contacts": [{"email": "me@kennethreitz.com", "name": "Kenneth Reitz", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://certifi.io/"}}}, "generator": "bdist_wheel (0.30.0.a0)", "license": "MPL-2.0", "metadata_version": "2.0", "name": "certifi", "summary": "Python package for providing Mozilla's CA Bundle.", "version": "2017.7.27.1"} \ No newline at end of file diff --git a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt b/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt deleted file mode 100644 index 963eac5..0000000 --- a/env/lib/python3.6/site-packages/certifi-2017.7.27.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -certifi diff --git a/env/lib/python3.6/site-packages/certifi/__init__.py b/env/lib/python3.6/site-packages/certifi/__init__.py deleted file mode 100644 index a76cd47..0000000 --- a/env/lib/python3.6/site-packages/certifi/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .core import where, old_where - -__version__ = "2017.07.27.1" diff --git a/env/lib/python3.6/site-packages/certifi/__main__.py b/env/lib/python3.6/site-packages/certifi/__main__.py deleted file mode 100644 index 5f1da0d..0000000 --- a/env/lib/python3.6/site-packages/certifi/__main__.py +++ /dev/null @@ -1,2 +0,0 @@ -from certifi import where -print(where()) diff --git a/env/lib/python3.6/site-packages/certifi/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/certifi/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 91862d802db3fd516e8c5f5199546bde3b006ec4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmX|6OKyWO6toTfH&U0q0*hcE1Qe;N+6#2kY|7>dupyRgK!y;tcj*Cooi4rYs#oZ$ zb`}|F=8ZH@qxV*e#r5aK_uDf<=*RK|V%?MFcyEOvh9y$Cz={+EBSs33d9Nt&f3b}N zV$KdbuDQADC4-~=xJ{xs52HLx@-Ti0eB;->=GygY&x*MLn7JNB-vN9feeMD$e=Qxf zn9GUNxzx0=m3ECnM%yaQ6IpGtHQS_Xh@q*oDN$);(ROr82Qe(Gy^w6F_^Lca*^bs+ ePofd02_QN#0ffW5xqMJP+e`lFo*3O_cjO=D3rEuc diff --git a/env/lib/python3.6/site-packages/certifi/__pycache__/__main__.cpython-36.pyc b/env/lib/python3.6/site-packages/certifi/__pycache__/__main__.cpython-36.pyc deleted file mode 100644 index 95c002035d907d2747e97fb8a030ed5f982f99da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmXr!<>i{oekoFufq~&M5W@izkmUfx#Zo{bg&~D8has0Sijk2al_{06nV}iTN?{6S z&}4oIlxNUnyv16cky@1Mr^y_}o}5}#l9`rS1Ty0mYe7+FUdc*^A{HPIO#DjM2a1&? zmZa*JB^K$Y<>#cN78UEqo9U+~nV1{pBw3o7rdXPo#v8_`C7YEP<(e1(L3*Bkh<-t4 zfo@W1W=@K3ZmMx&xq(@RKGZTe9Uq^Yn3)$JuUAlci^C>2KczG$)s7KpcQMF0Jd6OY CT0UR^ diff --git a/env/lib/python3.6/site-packages/certifi/__pycache__/core.cpython-36.pyc b/env/lib/python3.6/site-packages/certifi/__pycache__/core.cpython-36.pyc deleted file mode 100644 index 0f564aa7b920b6ff42ca803af6df854aa25cd9d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1106 zcmb7D&5qMB5VoDPNkbP_DQAdomzNGwA1Vx_U$x|_zqc3N!( zT)I~tfd}AKIC9LD6R*IDak_s(To}pYNyg*(X6EzW)>ia2`0@TbLFgyCCO+6lu*@q^ z91Ri2oMd>2>zxeAOT<0ypCRrGZ|x0z-r&tMG;HvIhp;zAz*{FozYw8ltkD`{#K{}f ziB@l;RA?*5vR9l&pD!hfj;GSlx#DFes1~-=xuJF{sLYK`vMjMuw0R+n@vj=x9hd9(pwpue$SG6k5P_f@gvO=qcW)OHN84?(DAE~u{@az#;S<1O^d*8GxniOvU5+s z7*{D{-;fTV;9C7o<3h^?lo&4(9gkH87);Fi@np3B=wUWG>>u#M{R8%Zjnlq;IN#p| zndI?tT*#t3DrLsIbFr5!cl*=$d~R2}(gKF4fjj7?YqT>$zy7|Qgqwl~>zO-n7nDUa zJR{ay<4+sg{|Mw-J93c0D!LkKr%@4QD!)kVv{r zL)BQq5X5bl(eW7JHqp0W|2L@n;BlZhwq#8(vfj*}HEgp6=z-wF}!agRrN!nQN zz?bXLJdrtLotAFGk4*~q2&$b6%EMDSXZr?)>rNf5-K?qxuqLy&72n diff --git a/env/lib/python3.6/site-packages/certifi/cacert.pem b/env/lib/python3.6/site-packages/certifi/cacert.pem deleted file mode 100644 index 44313cb..0000000 --- a/env/lib/python3.6/site-packages/certifi/cacert.pem +++ /dev/null @@ -1,4834 +0,0 @@ - -# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA -# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA -# Label: "GlobalSign Root CA" -# Serial: 4835703278459707669005204 -# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a -# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c -# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 -# Label: "GlobalSign Root CA - R2" -# Serial: 4835703278459682885658125 -# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 -# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe -# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only -# Label: "Verisign Class 3 Public Primary Certification Authority - G3" -# Serial: 206684696279472310254277870180966723415 -# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 -# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 -# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - -# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Premium 2048 Secure Server CA" -# Serial: 946069240 -# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 -# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 -# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 -MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub -j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo -U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b -u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ -bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er -fF6adulZkMV8gzURZVE= ------END CERTIFICATE----- - -# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust -# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust -# Label: "Baltimore CyberTrust Root" -# Serial: 33554617 -# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 -# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 -# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network -# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network -# Label: "AddTrust External Root" -# Serial: 1 -# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f -# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 -# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. -# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. -# Label: "Entrust Root Certification Authority" -# Serial: 1164660820 -# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 -# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 -# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 -Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW -KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw -NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw -NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy -ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV -BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo -Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 -4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 -KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI -rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi -94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB -sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi -gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo -kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE -vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t -O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua -AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP -9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ -eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m -0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. -# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. -# Label: "GeoTrust Global CA" -# Serial: 144470 -# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 -# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 -# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. -# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. -# Label: "GeoTrust Universal CA" -# Serial: 1 -# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 -# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 -# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy -c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 -IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV -VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 -cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT -QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh -F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v -c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w -mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd -VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX -teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ -f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe -Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ -nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB -/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY -MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG -9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX -IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn -ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z -uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN -Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja -QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW -koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 -ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt -DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm -bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. -# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. -# Label: "GeoTrust Universal CA 2" -# Serial: 1 -# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 -# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 -# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy -c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD -VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 -c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 -WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG -FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq -XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL -se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb -KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd -IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 -y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt -hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc -QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 -Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV -HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ -KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ -L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr -Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo -ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY -T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz -GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m -1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV -OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH -6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX -QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - -# Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association -# Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association -# Label: "Visa eCommerce Root" -# Serial: 25952180776285836048024890241505565794 -# MD5 Fingerprint: fc:11:b8:d8:08:93:30:00:6d:23:f9:7e:eb:52:1e:02 -# SHA1 Fingerprint: 70:17:9b:86:8c:00:a4:fa:60:91:52:22:3f:9f:3e:32:bd:e0:05:62 -# SHA256 Fingerprint: 69:fa:c9:bd:55:fb:0a:c7:8d:53:bb:ee:5c:f1:d5:97:98:9f:d0:aa:ab:20:a2:51:51:bd:f1:73:3e:e7:d1:22 ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr -MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl -cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv -bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw -CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h -dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l -cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h -2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E -lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV -ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq -299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t -vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL -dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF -AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR -zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 -LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd -7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw -++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt -398znM/jra6O1I7mT1GvFpLgXPYHDw== ------END CERTIFICATE----- - -# Issuer: CN=Certum CA O=Unizeto Sp. z o.o. -# Subject: CN=Certum CA O=Unizeto Sp. z o.o. -# Label: "Certum Root CA" -# Serial: 65568 -# MD5 Fingerprint: 2c:8f:9f:66:1d:18:90:b1:47:26:9d:8e:86:82:8c:a9 -# SHA1 Fingerprint: 62:52:dc:40:f7:11:43:a2:2f:de:9e:f7:34:8e:06:42:51:b1:81:18 -# SHA256 Fingerprint: d8:e0:fe:bc:1d:b2:e3:8d:00:94:0f:37:d2:7d:41:34:4d:99:3e:73:4b:99:d5:65:6d:97:78:d4:d8:14:36:24 ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- - -# Issuer: CN=AAA Certificate Services O=Comodo CA Limited -# Subject: CN=AAA Certificate Services O=Comodo CA Limited -# Label: "Comodo AAA Services root" -# Serial: 1 -# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 -# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 -# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority -# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority -# Label: "QuoVadis Root CA" -# Serial: 985026699 -# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24 -# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9 -# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73 ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz -MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw -IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR -dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp -li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D -rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ -WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug -F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU -xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC -Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv -dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw -ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl -IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh -c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy -ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI -KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T -KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq -y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p -dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD -VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL -MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk -fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 -7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R -cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y -mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW -xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK -SnQ2+Q== ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2" -# Serial: 1289 -# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b -# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 -# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa -GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg -Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J -WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB -rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp -+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 -ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i -Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz -PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og -/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH -oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI -yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud -EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 -A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL -MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f -BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn -g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl -fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K -WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha -B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc -hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR -TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD -mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z -ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y -4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza -8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3" -# Serial: 1478 -# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf -# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 -# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM -V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB -4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr -H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd -8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv -vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT -mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe -btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc -T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt -WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ -c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A -4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD -VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG -CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 -aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw -czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G -A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg -Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 -7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem -d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd -+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B -4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN -t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x -DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 -k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s -zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j -Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT -mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK -4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 -# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 -# Label: "Security Communication Root CA" -# Serial: 0 -# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a -# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 -# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - -# Issuer: CN=Sonera Class2 CA O=Sonera -# Subject: CN=Sonera Class2 CA O=Sonera -# Label: "Sonera Class 2 Root CA" -# Serial: 29 -# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb -# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27 -# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27 ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- - -# Issuer: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Chambers of Commerce Root" -# Serial: 0 -# MD5 Fingerprint: b0:01:ee:14:d9:af:29:18:94:76:8e:f1:69:33:2a:84 -# SHA1 Fingerprint: 6e:3a:55:a4:19:0c:19:5c:93:84:3c:c0:db:72:2e:31:30:61:f0:b1 -# SHA256 Fingerprint: 0c:25:8a:12:a5:67:4a:ef:25:f2:8b:a7:dc:fa:ec:ee:a3:48:e5:41:e6:f5:cc:4e:e6:3b:71:b3:61:60:6a:c3 ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Global Chambersign Root" -# Serial: 0 -# MD5 Fingerprint: c5:e6:7b:bf:06:d0:4f:43:ed:c4:7a:65:8a:fb:6b:19 -# SHA1 Fingerprint: 33:9b:6b:14:50:24:9b:55:7a:01:87:72:84:d9:e0:2f:c3:d2:d8:e9 -# SHA256 Fingerprint: ef:3c:b4:17:fc:8e:bf:6f:97:87:6c:9e:4e:ce:39:de:1e:a5:fe:64:91:41:d1:02:8b:7d:11:c0:b2:29:8c:ed ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo -YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 -MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy -NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G -A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA -A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 -Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s -QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV -eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 -B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh -z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T -AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i -ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w -TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH -MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD -VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE -VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B -AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM -bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi -ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG -VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c -ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ -AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- - -# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com -# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com -# Label: "XRamp Global CA Root" -# Serial: 107108908803651509692980124233745014957 -# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 -# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 -# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB -gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk -MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY -UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx -NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 -dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy -dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 -38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP -KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q -DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 -qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa -JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi -PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P -BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs -jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 -eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD -ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR -vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa -IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy -i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ -O+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Label: "Go Daddy Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 -# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 -# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- - -# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority -# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority -# Label: "Starfield Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 -# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a -# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Label: "StartCom Certification Authority" -# Serial: 1 -# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 -# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f -# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea ------BEGIN CERTIFICATE----- -MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE -FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j -ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js -LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM -BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 -Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy -dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh -cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh -YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg -dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp -bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ -YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT -TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ -9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 -jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW -FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz -ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 -ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L -EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu -L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq -yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC -O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V -um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh -NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= ------END CERTIFICATE----- - -# Issuer: O=Government Root Certification Authority -# Subject: O=Government Root Certification Authority -# Label: "Taiwan GRCA" -# Serial: 42023070807708724159991140556527066870 -# MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e -# SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9 -# SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3 ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ -MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow -PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR -IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q -gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy -yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts -F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 -jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx -ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC -VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK -YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH -EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN -Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud -DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE -MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK -UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf -qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK -ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE -JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 -hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 -EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm -nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX -udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz -ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe -LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl -pYYsfPQS ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root CA" -# Serial: 17154717934120587862167794914071425081 -# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 -# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 -# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root CA" -# Serial: 10944719598952040374951832963794454346 -# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e -# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 -# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert High Assurance EV Root CA" -# Serial: 3553400076410547919724730734378100087 -# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a -# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 -# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- - -# Issuer: CN=Class 2 Primary CA O=Certplus -# Subject: CN=Class 2 Primary CA O=Certplus -# Label: "Certplus Class 2 Primary CA" -# Serial: 177770208045934040241468760488327595043 -# MD5 Fingerprint: 88:2c:8c:52:b8:a2:3c:f3:f7:bb:03:ea:ae:ac:42:0b -# SHA1 Fingerprint: 74:20:74:41:72:9c:dd:92:ec:79:31:d8:23:10:8d:c2:81:92:e2:bb -# SHA256 Fingerprint: 0f:99:3c:8a:ef:97:ba:af:56:87:14:0e:d5:9a:d1:82:1b:b4:af:ac:f0:aa:9a:58:b5:d5:7a:33:8a:3a:fb:cb ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw -PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz -cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 -MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz -IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ -ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR -VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL -kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd -EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas -H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 -HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud -DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 -QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu -Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ -AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 -yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR -FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA -ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB -kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- - -# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. -# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. -# Label: "DST Root CA X3" -# Serial: 91299735575339953335919266965803778155 -# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 -# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 -# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - -# Issuer: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Subject: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Label: "DST ACES CA X6" -# Serial: 17771143917277623872238992636097467865 -# MD5 Fingerprint: 21:d8:4c:82:2b:99:09:33:a2:eb:14:24:8d:8e:5f:e8 -# SHA1 Fingerprint: 40:54:da:6f:1c:3f:40:74:ac:ed:0f:ec:cd:db:79:d1:53:fb:90:1d -# SHA256 Fingerprint: 76:7c:95:5a:76:41:2c:89:af:68:8e:90:a1:c7:0f:55:6c:fd:6b:60:25:db:ea:10:41:6d:7e:b6:83:1f:8c:40 ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx -ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w -MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD -VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx -FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu -ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 -gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH -fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a -ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT -ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk -c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto -dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt -aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI -hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk -QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ -h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR -rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 -9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Label: "SwissSign Gold CA - G2" -# Serial: 13492815561806991280 -# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 -# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 -# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Label: "SwissSign Silver CA - G2" -# Serial: 5700383053117599563 -# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 -# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb -# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. -# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. -# Label: "GeoTrust Primary Certification Authority" -# Serial: 32798226551256963324313806436981982369 -# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf -# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 -# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo -R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx -MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 -AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA -ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 -7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W -kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI -mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ -KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 -6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl -4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K -oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj -UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU -AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only -# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only -# Label: "thawte Primary Root CA" -# Serial: 69529181992039203566298953787712940909 -# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 -# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 -# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB -qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV -BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw -NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j -LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG -A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs -W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta -3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk -6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 -Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J -NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP -r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU -DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz -YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 -/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ -LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 -jVaMaA== ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only -# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" -# Serial: 33037644167568058970164719475676101450 -# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c -# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 -# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW -ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 -nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex -t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz -SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG -BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ -rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ -NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E -BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH -BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv -MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE -p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y -5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK -WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ -4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N -hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - -# Issuer: CN=SecureTrust CA O=SecureTrust Corporation -# Subject: CN=SecureTrust CA O=SecureTrust Corporation -# Label: "SecureTrust CA" -# Serial: 17199774589125277788362757014266862032 -# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 -# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 -# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz -MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv -cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz -Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO -0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao -wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj -7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS -8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT -BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg -JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 -6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ -3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm -D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS -CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -# Issuer: CN=Secure Global CA O=SecureTrust Corporation -# Subject: CN=Secure Global CA O=SecureTrust Corporation -# Label: "Secure Global CA" -# Serial: 9751836167731051554232119481456978597 -# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de -# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b -# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx -MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg -Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ -iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa -/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ -jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI -HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 -sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w -gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw -KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG -AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L -URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO -H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm -I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY -iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO Certification Authority O=COMODO CA Limited -# Label: "COMODO Certification Authority" -# Serial: 104350513648249232941998508985834464573 -# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 -# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b -# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB -gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV -BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw -MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl -YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P -RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 -UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI -2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 -Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp -+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ -DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O -nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW -/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g -PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u -QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY -SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv -IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 -zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd -BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB -ZQ== ------END CERTIFICATE----- - -# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. -# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. -# Label: "Network Solutions Certificate Authority" -# Serial: 116697915152937497490437556386812487904 -# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e -# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce -# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi -MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV -UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO -ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz -c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP -OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl -mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF -BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 -qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw -gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu -bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp -dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 -6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ -h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH -/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN -pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- - -# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited -# Label: "COMODO ECC Certification Authority" -# Serial: 41578283867086692638256921589707938090 -# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 -# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 -# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT -IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw -MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy -ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N -T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR -FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J -cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW -BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm -fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv -GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Label: "Security Communication EV RootCA1" -# Serial: 0 -# MD5 Fingerprint: 22:2d:a6:01:ea:7c:0a:f7:f0:6c:56:43:3f:77:76:d3 -# SHA1 Fingerprint: fe:b8:c4:32:dc:f9:76:9a:ce:ae:3d:d8:90:8f:fd:28:86:65:64:7d -# SHA256 Fingerprint: a2:2d:ba:68:1e:97:37:6e:2d:39:7d:72:8a:ae:3a:9b:62:96:b9:fd:ba:60:bc:2e:11:f6:47:f2:c6:75:fb:37 ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GA CA" -# Serial: 86718877871133159090080555911823548314 -# MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93 -# SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9 -# SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5 ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB -ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly -aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w -NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G -A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX -SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR -VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 -w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF -mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg -4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 -4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw -EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx -SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 -ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 -vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi -Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ -/L7fCg0= ------END CERTIFICATE----- - -# Issuer: CN=Certigna O=Dhimyotis -# Subject: CN=Certigna O=Dhimyotis -# Label: "Certigna" -# Serial: 18364802974209362175 -# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff -# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 -# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV -BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X -DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ -BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 -QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny -gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw -zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q -130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 -JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw -ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT -AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj -AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG -9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h -bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc -fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu -HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w -t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -# Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center -# Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center -# Label: "Deutsche Telekom Root CA 2" -# Serial: 38 -# MD5 Fingerprint: 74:01:4a:91:b1:08:c4:58:ce:47:cd:f0:dd:11:53:08 -# SHA1 Fingerprint: 85:a4:08:c0:9c:19:3e:5d:51:58:7d:cd:d6:13:30:fd:8c:de:37:bf -# SHA256 Fingerprint: b6:19:1a:50:d0:c3:97:7f:7d:a9:9b:cd:aa:c8:6a:22:7d:ae:b9:67:9e:c7:0b:a3:b0:c9:d9:22:71:c1:70:d3 ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - -# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc -# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc -# Label: "Cybertrust Global Root" -# Serial: 4835703278459682877484360 -# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 -# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 -# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG -A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh -bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE -ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS -b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 -7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS -J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y -HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP -t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz -FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY -XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ -MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw -hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js -MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA -A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj -Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx -XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o -omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc -A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE----- - -# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Label: "ePKI Root Certification Authority" -# Serial: 28956088682735189655030529057352760477 -# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 -# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 -# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe -MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 -ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw -IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL -SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH -SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh -ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X -DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 -TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ -fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA -sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU -WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS -nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH -dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip -NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC -AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF -MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB -uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl -PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP -JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ -gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 -j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 -5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB -o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS -/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z -Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE -W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D -hNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -# Issuer: CN=T\xdcB\u0130TAK UEKAE K\xf6k Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 - S\xfcr\xfcm 3 O=T\xfcrkiye Bilimsel ve Teknolojik Ara\u015ft\u0131rma Kurumu - T\xdcB\u0130TAK OU=Ulusal Elektronik ve Kriptoloji Ara\u015ft\u0131rma Enstit\xfcs\xfc - UEKAE/Kamu Sertifikasyon Merkezi -# Subject: CN=T\xdcB\u0130TAK UEKAE K\xf6k Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 - S\xfcr\xfcm 3 O=T\xfcrkiye Bilimsel ve Teknolojik Ara\u015ft\u0131rma Kurumu - T\xdcB\u0130TAK OU=Ulusal Elektronik ve Kriptoloji Ara\u015ft\u0131rma Enstit\xfcs\xfc - UEKAE/Kamu Sertifikasyon Merkezi -# Label: "T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3" -# Serial: 17 -# MD5 Fingerprint: ed:41:f5:8c:50:c5:2b:9c:73:e6:ee:6c:eb:c2:a8:26 -# SHA1 Fingerprint: 1b:4b:39:61:26:27:6b:64:91:a2:68:6d:d7:02:43:21:2d:1f:1d:96 -# SHA256 Fingerprint: e4:c7:34:30:d7:a5:b5:09:25:df:43:37:0a:0d:21:6e:9a:79:b9:d6:db:83:73:a0:c6:9e:b1:cc:31:c7:c5:2a ------BEGIN CERTIFICATE----- -MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS -MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp -bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw -VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy -YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy -dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 -ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe -Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx -GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls -aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU -QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh -xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 -aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr -IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h -gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK -O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO -fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw -lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL -hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID -AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP -NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t -wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM -7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh -gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n -oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs -yZyQ2uypQjyttgI= ------END CERTIFICATE----- - -# Issuer: O=certSIGN OU=certSIGN ROOT CA -# Subject: O=certSIGN OU=certSIGN ROOT CA -# Label: "certSIGN ROOT CA" -# Serial: 35210227249154 -# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 -# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b -# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT -AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD -QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP -MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do -0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ -UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d -RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ -OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv -JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C -AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O -BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ -LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY -MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ -44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I -Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw -i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN -9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only -# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only -# Label: "GeoTrust Primary Certification Authority - G3" -# Serial: 28809105769928564313984085209975885599 -# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 -# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd -# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB -mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT -MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ -BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 -BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz -+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm -hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn -5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W -JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL -DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC -huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB -AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB -zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN -kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH -SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G -spki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only -# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only -# Label: "thawte Primary Root CA - G2" -# Serial: 71758320672825410020661621085256472406 -# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f -# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 -# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp -IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi -BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw -MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig -YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v -dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ -BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 -papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K -DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 -KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox -XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only -# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only -# Label: "thawte Primary Root CA - G3" -# Serial: 127614157056681299805556476275995414779 -# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 -# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 -# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB -rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV -BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa -Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl -LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u -MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm -gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 -YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf -b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 -9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S -zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk -OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA -2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW -oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c -KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM -m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu -MdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only -# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only -# Label: "GeoTrust Primary Certification Authority - G2" -# Serial: 80682863203381065782177908751794619243 -# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a -# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 -# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL -MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj -KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 -MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw -NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV -BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL -So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal -tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG -CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT -qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz -rD6ogRLQy7rQkgu2npaqBA+K ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only -# Label: "VeriSign Universal Root Certification Authority" -# Serial: 85209574734084581917763752644031726877 -# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 -# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 -# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB -vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W -ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 -IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y -IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh -bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF -9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH -H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H -LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN -/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT -rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw -WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs -exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 -sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ -seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz -4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ -BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR -lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 -7M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only -# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" -# Serial: 63143484348153506665311985501458640051 -# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 -# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a -# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp -U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg -SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln -biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm -GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve -fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ -aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj -aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW -kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC -4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga -FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - -# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) -# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) -# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" -# Serial: 80544274841616 -# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 -# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 -# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG -EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 -MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl -cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR -dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB -pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM -b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm -aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz -IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT -lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz -AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 -VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG -ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 -BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG -AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M -U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh -bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C -+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F -uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 -XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA - G2" -# Serial: 10000012 -# MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a -# SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16 -# SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f ------BEGIN CERTIFICATE----- -MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX -DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 -qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp -uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU -Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE -pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp -5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M -UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN -GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy -5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv -6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK -eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 -B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ -BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov -L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG -SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS -CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen -5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 -IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK -gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL -+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL -vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm -bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk -N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC -Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z -ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== ------END CERTIFICATE----- - -# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Label: "Hongkong Post Root CA 1" -# Serial: 1000 -# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca -# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 -# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx -FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg -Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG -A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr -b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ -jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn -PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh -ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 -nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h -q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED -MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC -mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 -7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB -oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs -EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO -fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi -AmvZWg== ------END CERTIFICATE----- - -# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Label: "SecureSign RootCA11" -# Serial: 1 -# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 -# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 -# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr -MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG -A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 -MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp -Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD -QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz -i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 -h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV -MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 -UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni -8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC -h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD -VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB -AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm -KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ -X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr -QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 -pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN -QSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -# Issuer: CN=ACEDICOM Root O=EDICOM OU=PKI -# Subject: CN=ACEDICOM Root O=EDICOM OU=PKI -# Label: "ACEDICOM Root" -# Serial: 7029493972724711941 -# MD5 Fingerprint: 42:81:a0:e2:1c:e3:55:10:de:55:89:42:65:96:22:e6 -# SHA1 Fingerprint: e0:b4:32:2e:b2:f6:a5:68:b6:54:53:84:48:18:4a:50:36:87:43:84 -# SHA256 Fingerprint: 03:95:0f:b4:9a:53:1f:3e:19:91:94:23:98:df:a9:e0:ea:32:d7:ba:1c:dd:9b:c8:5d:b5:7e:d9:40:0b:43:4a ------BEGIN CERTIFICATE----- -MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE -AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x -CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW -MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF -RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC -AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 -09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 -XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P -Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK -t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb -X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 -MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU -fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI -2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH -K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae -ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP -BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw -RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv -bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm -fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 -gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe -I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i -5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi -ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn -MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ -o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 -zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN -GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt -r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK -Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== ------END CERTIFICATE----- - -# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Label: "Microsec e-Szigno Root CA 2009" -# Serial: 14014712776195784473 -# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 -# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e -# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD -VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 -ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G -CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y -OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx -FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp -Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP -kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc -cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U -fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 -N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC -xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 -+rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM -Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG -SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h -mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk -ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c -2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t -HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 -# Label: "GlobalSign Root CA - R3" -# Serial: 4835703278459759426209954 -# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 -# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad -# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 -MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 -RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT -gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm -KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd -QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ -XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw -DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o -LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU -RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp -jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK -6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX -mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs -Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH -WD9f ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" -# Serial: 6047274297262753887 -# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 -# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa -# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy -MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD -VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv -ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl -AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF -661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 -am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 -ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 -PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS -3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k -SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF -3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM -ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g -StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz -Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB -jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -# Issuer: CN=Izenpe.com O=IZENPE S.A. -# Subject: CN=Izenpe.com O=IZENPE S.A. -# Label: "Izenpe.com" -# Serial: 917563065490389241595536686991402621 -# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 -# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 -# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. -# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. -# Label: "Chambers of Commerce Root - 2008" -# Serial: 11806822484801597146 -# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7 -# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c -# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0 ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. -# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. -# Label: "Global Chambersign Root - 2008" -# Serial: 14541511773111788494 -# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3 -# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c -# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - -# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. -# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. -# Label: "Go Daddy Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 -# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b -# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz -NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE -AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD -E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH -/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy -DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh -GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR -tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA -AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX -WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu -9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr -gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo -2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI -4uJEvlz36hz1 ------END CERTIFICATE----- - -# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Label: "Starfield Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 -# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e -# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs -ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw -MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj -aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp -Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg -nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 -HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N -Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN -dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 -HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G -CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU -sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 -4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg -8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 -mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Label: "Starfield Services Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 -# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f -# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs -ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy -ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy -dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p -OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 -8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K -Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe -hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk -6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw -DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q -AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI -bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB -ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z -qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn -0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN -sSi6 ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Commercial O=AffirmTrust -# Subject: CN=AffirmTrust Commercial O=AffirmTrust -# Label: "AffirmTrust Commercial" -# Serial: 8608355977964138876 -# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 -# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 -# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP -Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr -ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL -MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 -yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr -VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ -nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG -XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj -vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt -Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g -N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC -nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Networking O=AffirmTrust -# Subject: CN=AffirmTrust Networking O=AffirmTrust -# Label: "AffirmTrust Networking" -# Serial: 8957382827206547757 -# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f -# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f -# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y -YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua -kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL -QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp -6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG -yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i -QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO -tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu -QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ -Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u -olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 -x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Premium O=AffirmTrust -# Subject: CN=AffirmTrust Premium O=AffirmTrust -# Label: "AffirmTrust Premium" -# Serial: 7893706540734352110 -# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 -# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 -# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz -dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG -A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U -cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf -qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ -JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ -+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS -s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 -HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 -70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG -V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S -qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S -5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia -C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX -OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE -FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 -KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B -8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ -MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc -0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ -u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF -u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH -YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 -GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO -RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e -KeC2uAloGRwYQw== ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust -# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust -# Label: "AffirmTrust Premium ECC" -# Serial: 8401224907861490260 -# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d -# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb -# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC -VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ -cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ -BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt -VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D -0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 -ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G -A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs -aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I -flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA" -# Serial: 279744 -# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 -# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e -# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -# Issuer: CN=Certinomis - Autorit\xe9 Racine O=Certinomis OU=0002 433998903 -# Subject: CN=Certinomis - Autorit\xe9 Racine O=Certinomis OU=0002 433998903 -# Label: "Certinomis - Autorit\xe9 Racine" -# Serial: 1 -# MD5 Fingerprint: 7f:30:78:8c:03:e3:ca:c9:0a:e2:c9:ea:1e:aa:55:1a -# SHA1 Fingerprint: 2e:14:da:ec:28:f0:fa:1e:8e:38:9a:4e:ab:eb:26:c0:0a:d3:83:c3 -# SHA256 Fingerprint: fc:bf:e2:88:62:06:f7:2b:27:59:3c:8b:07:02:97:e1:2d:76:9e:d1:0e:d7:93:07:05:a8:09:8e:ff:c1:4d:17 ------BEGIN CERTIFICATE----- -MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk -BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 -Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl -cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 -aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY -F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N -8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe -rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K -/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu -7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC -28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 -lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E -nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB -0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 -5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj -WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN -jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ -KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s -ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM -OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q -619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn -2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj -o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v -nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG -5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq -pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb -dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 -BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 ------END CERTIFICATE----- - -# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Label: "TWCA Root Certification Authority" -# Serial: 1 -# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 -# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 -# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES -MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU -V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz -WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO -LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE -AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH -K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX -RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z -rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx -3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq -hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC -MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls -XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D -lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn -aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ -YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Label: "Security Communication RootCA2" -# Serial: 0 -# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 -# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 -# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX -DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy -dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj -YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV -OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr -zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM -VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ -hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO -ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw -awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs -OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 -DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF -coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc -okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 -t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy -1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ -SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions RootCA 2011" -# Serial: 0 -# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 -# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d -# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 ------BEGIN CERTIFICATE----- -MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix -RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p -YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw -NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK -EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl -cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz -dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ -fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns -bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD -75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP -FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV -HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp -5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu -b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA -A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p -6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 -TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 -dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys -Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI -l7WdmplNsDz4SgCbZN2fOUvRJ9e4 ------END CERTIFICATE----- - -# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Label: "Actalis Authentication Root CA" -# Serial: 6271844772424770508 -# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 -# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac -# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE -BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w -MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC -SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 -ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv -UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX -4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 -KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ -gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb -rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ -51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F -be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe -KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F -v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn -fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 -jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz -ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL -e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 -jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz -WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V -SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j -pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX -X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok -fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R -K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU -ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU -LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT -LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -# Issuer: O=Trustis Limited OU=Trustis FPS Root CA -# Subject: O=Trustis Limited OU=Trustis FPS Root CA -# Label: "Trustis FPS Root CA" -# Serial: 36053640375399034304724988975563710553 -# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d -# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04 -# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF -MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL -ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx -MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc -MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ -AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH -iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj -vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA -0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB -OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ -BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E -FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 -GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW -zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 -1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE -f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F -jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN -ZetX2fNXlrtIzYE= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Label: "StartCom Certification Authority" -# Serial: 45 -# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 -# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 -# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 ------BEGIN CERTIFICATE----- -MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD -VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul -F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC -ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w -ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk -aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 -YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg -c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 -d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG -CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF -wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS -Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst -0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc -pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl -CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF -P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK -1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm -KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE -JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ -8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm -fyWl8kgAwKQB2j8= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. -# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. -# Label: "StartCom Certification Authority G2" -# Serial: 59 -# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 -# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 -# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 ------BEGIN CERTIFICATE----- -MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 -OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG -A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ -JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD -vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo -D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ -Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW -RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK -HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN -nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM -0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i -UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 -Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg -TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL -BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K -2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX -UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl -6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK -9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ -HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI -wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY -XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l -IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo -hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr -so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 2 Root CA" -# Serial: 2 -# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 -# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 -# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr -6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV -L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 -1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx -MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ -QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB -arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr -Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi -FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS -P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN -9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz -uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h -9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t -OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo -+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 -KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 -DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us -H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ -I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 -5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h -3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz -Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 3 Root CA" -# Serial: 2 -# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec -# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 -# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y -ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E -N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 -tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX -0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c -/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X -KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY -zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS -O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D -34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP -K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv -Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj -QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS -IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 -HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa -O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv -033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u -dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE -kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 -3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD -u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq -4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 3" -# Serial: 1 -# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef -# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 -# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- - -# Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus -# Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus -# Label: "EE Certification Centre Root CA" -# Serial: 112324828676200291871926431888494945866 -# MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f -# SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7 -# SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76 ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 -czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG -CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy -MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl -ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS -b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy -euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO -bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw -WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d -MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE -1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ -zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB -BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF -BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV -v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG -E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW -iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v -GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= ------END CERTIFICATE----- - -# Issuer: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. (c) Aral\u0131k 2007 -# Subject: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. (c) Aral\u0131k 2007 -# Label: "TURKTRUST Certificate Services Provider Root 2007" -# Serial: 1 -# MD5 Fingerprint: 2b:70:20:56:86:82:a0:18:c8:07:53:12:28:70:21:72 -# SHA1 Fingerprint: f1:7f:6f:b6:31:dc:99:e3:a3:c8:7f:fe:1c:f1:81:10:88:d9:60:33 -# SHA256 Fingerprint: 97:8c:d9:66:f2:fa:a0:7b:a7:aa:95:00:d9:c0:2e:9d:77:f2:cd:ad:a6:ad:6b:a7:4a:f4:b9:1c:66:59:3c:50 ------BEGIN CERTIFICATE----- -MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx -OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry -b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC -VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE -sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F -ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY -KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG -+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG -HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P -IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M -733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk -Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW -AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I -aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 -mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa -XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ -qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 2009" -# Serial: 623603 -# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f -# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 -# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha -ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM -HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 -UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 -tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R -ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM -lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp -/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G -A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G -A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy -MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl -cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js -L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL -BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni -acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K -zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 -PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y -Johw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 EV 2009" -# Serial: 623604 -# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 -# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 -# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw -NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV -BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn -ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 -3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z -qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR -p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 -HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw -ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea -HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw -Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh -c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E -RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt -dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku -Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp -3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF -CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na -xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX -KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Raiz del Estado Venezolano O=Sistema Nacional de Certificacion Electronica OU=Superintendencia de Servicios de Certificacion Electronica -# Subject: CN=PSCProcert O=Sistema Nacional de Certificacion Electronica OU=Proveedor de Certificados PROCERT -# Label: "PSCProcert" -# Serial: 11 -# MD5 Fingerprint: e6:24:e9:12:01:ae:0c:de:8e:85:c4:ce:a3:12:dd:ec -# SHA1 Fingerprint: 70:c1:8d:74:b4:28:81:0a:e4:fd:a5:75:d7:01:9f:99:b0:3d:50:74 -# SHA256 Fingerprint: 3c:fc:3c:14:d1:f6:84:ff:17:e3:8c:43:ca:44:0c:00:b9:67:ec:93:3e:8b:fe:06:4c:a1:d7:2c:90:f2:ad:b0 ------BEGIN CERTIFICATE----- -MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s -YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz -dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 -aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh -IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ -KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw -MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy -b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx -KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG -A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u -aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 -7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 -BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G -ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 -JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 -PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 -0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH -0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ -6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m -v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 -K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev -bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw -MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w -MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD -gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 -b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh -bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 -cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp -ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg -ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq -hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD -AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w -MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag -RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t -UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl -cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v -Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG -AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN -AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS -1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB -3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv -Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh -HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm -pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz -sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE -qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb -mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 -opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H -YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R1 O=Disig a.s. -# Subject: CN=CA Disig Root R1 O=Disig a.s. -# Label: "CA Disig Root R1" -# Serial: 14052245610670616104 -# MD5 Fingerprint: be:ec:11:93:9a:f5:69:21:bc:d7:c1:c0:67:89:cc:2a -# SHA1 Fingerprint: 8e:1c:74:f8:a6:20:b9:e5:8a:f4:61:fa:ec:2b:47:56:51:1a:52:c6 -# SHA256 Fingerprint: f9:6f:23:f4:c3:e7:9c:07:7a:46:98:8d:5a:f5:90:06:76:a0:f0:39:cb:64:5d:d1:75:49:b2:16:c8:24:40:ce ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy -MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk -D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o -OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A -fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe -IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n -oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK -/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj -rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD -3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE -7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC -yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd -qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI -hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR -xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA -SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo -HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB -emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC -AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb -7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x -DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk -F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF -a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT -Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R2 O=Disig a.s. -# Subject: CN=CA Disig Root R2 O=Disig a.s. -# Label: "CA Disig Root R2" -# Serial: 10572350602393338211 -# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 -# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 -# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy -MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe -NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH -PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I -x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe -QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR -yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO -QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 -H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ -QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD -i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs -nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 -rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI -hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf -GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb -lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka -+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal -TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i -nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 -gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr -G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os -zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x -L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Label: "ACCVRAIZ1" -# Serial: 6828503384748696800 -# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 -# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 -# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 ------BEGIN CERTIFICATE----- -MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE -AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw -CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ -BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND -VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb -qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY -HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo -G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA -lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr -IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ -0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH -k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 -4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO -m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa -cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl -uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI -KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls -ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG -AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 -VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT -VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG -CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA -cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA -QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA -7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA -cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA -QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA -czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu -aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt -aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud -DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF -BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp -D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU -JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m -AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD -vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms -tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH -7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h -I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA -h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF -d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H -pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 ------END CERTIFICATE----- - -# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Label: "TWCA Global Root CA" -# Serial: 3262 -# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 -# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 -# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx -EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT -VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 -NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT -B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF -10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz -0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh -MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH -zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc -46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 -yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi -laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP -oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA -BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE -qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm -4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL -1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn -LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF -H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo -RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ -nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh -15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW -6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW -nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j -wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz -aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy -KwbQBM0= ------END CERTIFICATE----- - -# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Label: "TeliaSonera Root CA v1" -# Serial: 199041966741090107964904287217786801558 -# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c -# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 -# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 ------BEGIN CERTIFICATE----- -MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw -NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv -b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD -VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F -VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 -7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X -Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ -/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs -81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm -dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe -Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu -sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 -pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs -slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ -arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD -VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG -9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl -dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx -0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj -TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed -Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 -Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI -OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 -vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW -t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn -HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx -SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= ------END CERTIFICATE----- - -# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi -# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi -# Label: "E-Tugra Certification Authority" -# Serial: 7667447206703254355 -# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 -# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 -# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV -BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC -aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV -BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 -Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz -MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ -BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp -em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY -B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH -D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF -Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo -q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D -k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH -fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut -dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM -ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 -zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX -U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 -Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 -XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF -Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR -HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY -GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c -77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 -+GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK -vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 -FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl -yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P -AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD -y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d -NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 2" -# Serial: 1 -# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a -# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 -# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- - -# Issuer: CN=Atos TrustedRoot 2011 O=Atos -# Subject: CN=Atos TrustedRoot 2011 O=Atos -# Label: "Atos TrustedRoot 2011" -# Serial: 6643877497813316402 -# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 -# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 -# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE -AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG -EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM -FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC -REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp -Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM -VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ -SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ -4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L -cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi -eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV -HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG -A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 -DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j -vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP -DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc -maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D -lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv -KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 1 G3" -# Serial: 687049649626669250736271037606554624078720034195 -# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab -# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 -# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 -MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV -wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe -rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 -68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh -4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp -UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o -abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc -3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G -KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt -hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO -Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt -zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD -ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC -MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 -cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN -qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 -YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv -b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 -8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k -NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj -ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp -q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt -nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2 G3" -# Serial: 390156079458959257446133169266079962026824725800 -# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 -# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 -# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 -MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf -qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW -n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym -c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ -O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 -o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j -IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq -IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz -8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh -vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l -7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG -cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD -ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 -AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC -roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga -W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n -lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE -+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV -csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd -dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg -KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM -HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 -WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3 G3" -# Serial: 268090761170461462463995952157327242137089239581 -# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 -# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d -# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 -MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR -/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu -FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR -U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c -ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR -FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k -A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw -eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl -sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp -VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q -A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ -ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD -ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px -KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI -FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv -oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg -u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP -0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf -3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl -8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ -DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN -PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ -ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root G2" -# Serial: 15385348160840213938643033620894905419 -# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d -# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f -# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 ------BEGIN CERTIFICATE----- -MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA -n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc -biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp -EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA -bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu -YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW -BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI -QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I -0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni -lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 -B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv -ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo -IhNzbM8m9Yop5w== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root G3" -# Serial: 15459312981008553731928384953135426796 -# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb -# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 -# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 ------BEGIN CERTIFICATE----- -MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw -CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu -ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg -RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu -Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf -Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q -RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD -AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY -JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv -6pZjamVFkpUBtA== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root G2" -# Serial: 4293743540046975378534879503202253541 -# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 -# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 -# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f ------BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI -2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx -1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ -q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz -tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ -vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP -BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV -5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY -1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 -NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG -Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 -8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe -pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl -MrY= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root G3" -# Serial: 7089244469030293291760083333884364146 -# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca -# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e -# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 ------BEGIN CERTIFICATE----- -MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw -CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu -ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe -Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw -EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x -IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF -K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG -fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO -Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd -BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx -AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ -oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 -sycX ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Trusted Root G4" -# Serial: 7451500558977370777930084869016614236 -# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 -# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 -# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 ------BEGIN CERTIFICATE----- -MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg -RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu -Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y -ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If -xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV -ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO -DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ -jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ -CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi -EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM -fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY -uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK -chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t -9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD -ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 -SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd -+SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc -fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa -sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N -cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N -0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie -4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI -r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 -/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm -gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ ------END CERTIFICATE----- - -# Issuer: CN=Certification Authority of WoSign O=WoSign CA Limited -# Subject: CN=Certification Authority of WoSign O=WoSign CA Limited -# Label: "WoSign" -# Serial: 125491772294754854453622855443212256657 -# MD5 Fingerprint: a1:f2:f9:b5:d2:c8:7a:74:b8:f3:05:f1:d7:e1:84:8d -# SHA1 Fingerprint: b9:42:94:bf:91:ea:8f:b6:4b:e6:10:97:c7:fb:00:13:59:b6:76:cb -# SHA256 Fingerprint: 4b:22:d5:a6:ae:c9:9f:3c:db:79:aa:5e:c0:68:38:47:9c:d5:ec:ba:71:64:f7:f2:2d:c1:d6:5f:63:d8:57:08 ------BEGIN CERTIFICATE----- -MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBV -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV -BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw -MTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX -b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvcqN -rLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1U -fcIiePyOCbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcScc -f+Hb0v1naMQFXQoOXXDX2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2 -ZjC1vt7tj/id07sBMOby8w7gLJKA84X5KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4M -x1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR+ScPewavVIMYe+HdVHpR -aG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ezEC8wQjch -zDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDar -uHqklWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221K -mYo0SLwX3OSACCK28jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvA -Sh0JWzko/amrzgD5LkhLJuYwTKVYyrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWv -HYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0CAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R8bNLtwYgFP6H -EtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 -LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJ -MuYhOZO9sxXqT2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2e -JXLOC62qx1ViC777Y7NhRCOjy+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VN -g64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC2nz4SNAzqfkHx5Xh9T71XXG68pWp -dIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes5cVAWubXbHssw1ab -R80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/EaEQ -PkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGce -xGATVdVhmVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+ -J7x6v+Db9NpSvd4MVHAxkUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMl -OtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGikpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWT -ee5Ehr7XHuQe+w== ------END CERTIFICATE----- - -# Issuer: CN=CA \u6c83\u901a\u6839\u8bc1\u4e66 O=WoSign CA Limited -# Subject: CN=CA \u6c83\u901a\u6839\u8bc1\u4e66 O=WoSign CA Limited -# Label: "WoSign China" -# Serial: 106921963437422998931660691310149453965 -# MD5 Fingerprint: 78:83:5b:52:16:76:c4:24:3b:83:78:e8:ac:da:9a:93 -# SHA1 Fingerprint: 16:32:47:8d:89:f9:21:3a:92:00:85:63:f5:a4:a7:d3:12:40:8a:d6 -# SHA256 Fingerprint: d6:f0:34:bd:94:aa:23:3f:02:97:ec:a4:24:5b:28:39:73:e4:47:aa:59:0f:31:0c:77:f4:8f:df:83:11:22:54 ------BEGIN CERTIFICATE----- -MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBG -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNV -BAMMEkNBIOayg+mAmuagueivgeS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgw -MTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRl -ZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k8H/r -D195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld1 -9AXbbQs5uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExf -v5RxadmWPgxDT74wwJ85dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnk -UkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+L -NVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFyb7Ao65vh4YOhn0pdr8yb -+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc76DbT52V -qyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6K -yX2m+Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0G -AbQOXDBGVWCvOGU6yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaK -J/kR8slC/k7e3x9cxKSGhxYzoacXGKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwEC -AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUAA4ICAQBqinA4 -WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 -yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj -/feTZU7n85iYr83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6 -jBAyvd0zaziGfjk9DgNyp115j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2 -ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0AkLppRQjbbpCBhqcqBT/mhDn4t/lX -X0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97qA4bLJyuQHCH2u2n -FoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Yjj4D -u9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10l -O1Hm13ZBONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Le -ie2uPAmvylezkolwQOQvT8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR1 -2KvxAmLBsX5VYc8T1yaw15zLKYs4SgsOkI26oQ== ------END CERTIFICATE----- - -# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited -# Label: "COMODO RSA Certification Authority" -# Serial: 101909084537582093308941363524873193117 -# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 -# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 -# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 ------BEGIN CERTIFICATE----- -MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB -hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV -BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT -EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR -6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X -pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC -9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV -/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf -Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z -+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w -qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah -SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC -u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf -Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq -crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E -FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB -/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl -wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM -4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV -2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna -FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ -CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK -boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke -jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL -S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb -QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl -0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB -NVOFBkpdn627G190 ------END CERTIFICATE----- - -# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network -# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network -# Label: "USERTrust RSA Certification Authority" -# Serial: 2645093764781058787591871645665788717 -# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 -# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e -# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 ------BEGIN CERTIFICATE----- -MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw -MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV -BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B -3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY -tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ -Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 -VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT -79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 -c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT -Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l -c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee -UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE -Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd -BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G -A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF -Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO -VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 -ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs -8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR -iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze -Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ -XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ -qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB -VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB -L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG -jjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE----- - -# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network -# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network -# Label: "USERTrust ECC Certification Authority" -# Serial: 123013823720199481456569720443997572134 -# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 -# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 -# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a ------BEGIN CERTIFICATE----- -MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl -eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT -JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT -Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg -VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo -I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng -o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G -A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB -zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW -RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 -# Label: "GlobalSign ECC Root CA - R4" -# Serial: 14367148294922964480859022125800977897474 -# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e -# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb -# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c ------BEGIN CERTIFICATE----- -MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk -MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH -bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX -DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD -QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ -FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw -DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F -uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX -kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs -ewv4n4Q= ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 -# Label: "GlobalSign ECC Root CA - R5" -# Serial: 32785792099990507226680698011560947931244 -# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 -# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa -# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 ------BEGIN CERTIFICATE----- -MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk -MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH -bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX -DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD -QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc -8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke -hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI -KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg -515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO -xwy8p2Fp8fc74SrL+SvzZpA3 ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA - G3" -# Serial: 10003001 -# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37 -# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc -# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28 ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX -DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP -cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW -IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX -xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy -KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR -9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az -5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 -6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 -Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP -bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt -BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt -XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd -INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp -LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 -Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp -gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh -/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw -0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A -fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq -4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR -1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ -QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM -94B7IWcnMFk= ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden -# Label: "Staat der Nederlanden EV Root CA" -# Serial: 10000013 -# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba -# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb -# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a ------BEGIN CERTIFICATE----- -MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y -MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg -TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS -b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS -M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC -UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d -Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p -rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l -pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb -j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC -KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS -/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X -cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH -1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP -px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 -MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI -eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u -2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS -v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC -wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy -CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e -vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 -Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa -Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL -eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 -FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc -7uzXLg== ------END CERTIFICATE----- - -# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust -# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust -# Label: "IdenTrust Commercial Root CA 1" -# Serial: 13298821034946342390520003877796839426 -# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 -# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 -# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu -VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw -MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw -JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT -3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU -+ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp -S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 -bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi -T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL -vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK -Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK -dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT -c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv -l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N -iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD -ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH -6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt -LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 -nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 -+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK -W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT -AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq -l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG -4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ -mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A -7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H ------END CERTIFICATE----- - -# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust -# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust -# Label: "IdenTrust Public Sector Root CA 1" -# Serial: 13298821034946342390521976156843933698 -# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba -# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd -# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu -VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN -MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 -MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 -ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy -RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS -bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF -/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R -3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw -EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy -9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V -GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ -2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV -WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD -W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN -AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj -t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV -DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 -TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G -lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW -mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df -WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 -+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ -tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA -GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv -8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - G2" -# Serial: 1246989352 -# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 -# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 -# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 -cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs -IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz -dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy -NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu -dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt -dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 -aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T -RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN -cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW -wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 -U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 -jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN -BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ -jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v -1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R -nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH -VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - EC1" -# Serial: 51543124481930649114116133369 -# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc -# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 -# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 ------BEGIN CERTIFICATE----- -MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG -A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 -d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu -dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq -RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy -MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD -VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g -Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi -A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt -ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH -Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC -R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX -hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G ------END CERTIFICATE----- - -# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority -# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority -# Label: "CFCA EV ROOT" -# Serial: 407555286 -# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 -# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 -# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd ------BEGIN CERTIFICATE----- -MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD -TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y -aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx -MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j -aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP -T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 -sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL -TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 -/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp -7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz -EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt -hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP -a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot -aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg -TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV -PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv -cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL -tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd -BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB -ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT -ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL -jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS -ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy -P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 -xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d -Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN -5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe -/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z -AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ -5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su ------END CERTIFICATE----- - -# Issuer: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. -# Subject: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. -# Label: "T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5" -# Serial: 156233699172481 -# MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e -# SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb -# SHA256 Fingerprint: 49:35:1b:90:34:44:c1:85:cc:dc:5c:69:3d:24:d8:55:5c:b2:08:d6:a8:14:13:07:69:9f:4a:f0:63:19:9d:78 ------BEGIN CERTIFICATE----- -MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UE -BhMCVFIxDzANBgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxn -aSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkg -QS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2Eg -SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAwODA3MDFaFw0yMzA0 -MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYD -VQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 -dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF -bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCUZ4WWe60ghUEoI5RHwWrom -/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537jVJp45wnEFPzpALFp/kR -Gml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1mep5Fimh3 -4khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z -5UNP9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0 -hO8EuPbJbKoCPrZV4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QID -AQABo0IwQDAdBgNVHQ4EFgQUVpkHHtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJ5FdnsX -SDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPoBP5yCccLqh0l -VX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq -URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nf -peYVhDfwwvJllpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CF -Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW -+qtB4Uu2NQvAmxU= ------END CERTIFICATE----- - -# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 -# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 -# Label: "Certinomis - Root CA" -# Serial: 1 -# MD5 Fingerprint: 14:0a:fd:8d:a8:28:b5:38:69:db:56:7e:61:22:03:3f -# SHA1 Fingerprint: 9d:70:bb:01:a5:a4:a0:18:11:2e:f7:1c:01:b9:32:c5:34:e7:88:a8 -# SHA256 Fingerprint: 2a:99:f5:bc:11:74:b7:3c:bb:1d:62:08:84:e0:1c:34:e5:1c:cb:39:78:da:12:5f:0e:33:26:88:83:bf:41:58 ------BEGIN CERTIFICATE----- -MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAb -BgNVBAMTFENlcnRpbm9taXMgLSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMz -MTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMx -FzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRDZXJ0aW5vbWlzIC0g -Um9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQosP5L2 -fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJfl -LieY6pOod5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQV -WZUKxkd8aRi5pwP5ynapz8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDF -TKWrteoB4owuZH9kb/2jJZOLyKIOSY008B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb -5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09xRLWtwHkziOC/7aOgFLSc -CbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE6OXWk6Ri -wsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJ -wx3tFvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SG -m/lg0h9tkQPTYKbVPZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4 -F2iw4lNVYC2vPsKD2NkJK/DAZNuHi5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZng -WVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I6tNxIqSSaHh0 -2TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF -AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/ -0KGRHCwPT5iVWVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWw -F6YSjNRieOpWauwK0kDDPAUwPk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZS -g081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAXlCOotQqSD7J6wWAsOMwaplv/8gzj -qh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJy29SWwNyhlCVCNSN -h4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9Iff/ -ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8V -btaw5BngDwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwj -Y/M50n92Uaf0yKHxDHYiI0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ -8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nMcyrDflOR1m749fPH0FFNjkulW+YZFzvW -gQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVrhkIGuUE= ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GB CA" -# Serial: 157768595616588414422159278966750757568 -# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d -# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed -# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 ------BEGIN CERTIFICATE----- -MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt -MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg -Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i -YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x -CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG -b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh -bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 -HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx -WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX -1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk -u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P -99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r -M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB -BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh -cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 -gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO -ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf -aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic -Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= ------END CERTIFICATE----- - -# Issuer: CN=Certification Authority of WoSign G2 O=WoSign CA Limited -# Subject: CN=Certification Authority of WoSign G2 O=WoSign CA Limited -# Label: "Certification Authority of WoSign G2" -# Serial: 142423943073812161787490648904721057092 -# MD5 Fingerprint: c8:1c:7d:19:aa:cb:71:93:f2:50:f8:52:a8:1e:ba:60 -# SHA1 Fingerprint: fb:ed:dc:90:65:b7:27:20:37:bc:55:0c:9c:56:de:bb:f2:78:94:e1 -# SHA256 Fingerprint: d4:87:a5:6f:83:b0:74:82:e8:5e:96:33:94:c1:ec:c2:c9:e5:1d:09:03:ee:94:6b:02:c3:01:58:1e:d9:9e:16 ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQayXaioidfLwPBbOxemFFRDANBgkqhkiG9w0BAQsFADBY -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxLTArBgNV -BAMTJENlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbiBHMjAeFw0xNDEx -MDgwMDU4NThaFw00NDExMDgwMDU4NThaMFgxCzAJBgNVBAYTAkNOMRowGAYDVQQK -ExFXb1NpZ24gQ0EgTGltaXRlZDEtMCsGA1UEAxMkQ2VydGlmaWNhdGlvbiBBdXRo -b3JpdHkgb2YgV29TaWduIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvsXEoCKASU+/2YcRxlPhuw+9YH+v9oIOH9ywjj2X4FA8jzrvZjtFB5sg+OPX -JYY1kBaiXW8wGQiHC38Gsp1ij96vkqVg1CuAmlI/9ZqD6TRay9nVYlzmDuDfBpgO -gHzKtB0TiGsOqCR3A9DuW/PKaZE1OVbFbeP3PU9ekzgkyhjpJMuSA93MHD0JcOQg -5PGurLtzaaNjOg9FD6FKmsLRY6zLEPg95k4ot+vElbGs/V6r+kHLXZ1L3PR8du9n -fwB6jdKgGlxNIuG12t12s9R23164i5jIFFTMaxeSt+BKv0mUYQs4kI9dJGwlezt5 -2eJ+na2fmKEG/HgUYFf47oB3sQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU+mCp62XF3RYUCE4MD42b4Pdkr2cwDQYJ -KoZIhvcNAQELBQADggEBAFfDejaCnI2Y4qtAqkePx6db7XznPWZaOzG73/MWM5H8 -fHulwqZm46qwtyeYP0nXYGdnPzZPSsvxFPpahygc7Y9BMsaV+X3avXtbwrAh449G -3CE4Q3RM+zD4F3LBMvzIkRfEzFg3TgvMWvchNSiDbGAtROtSjFA9tWwS1/oJu2yy -SrHFieT801LYYRf+epSEj3m2M1m6D8QL4nCgS3gu+sif/a+RZQp4OBXllxcU3fng -LDT4ONCEIgDAFFEYKwLcMFrw6AF8NTojrwjkr6qOKEJJLvD1mTS+7Q9LGOHSJDy7 -XUe3IfKN0QqZjuNuPq1w4I+5ysxugTH2e5x6eeRncRg= ------END CERTIFICATE----- - -# Issuer: CN=CA WoSign ECC Root O=WoSign CA Limited -# Subject: CN=CA WoSign ECC Root O=WoSign CA Limited -# Label: "CA WoSign ECC Root" -# Serial: 138625735294506723296996289575837012112 -# MD5 Fingerprint: 80:c6:53:ee:61:82:28:72:f0:ff:21:b9:17:ca:b2:20 -# SHA1 Fingerprint: d2:7a:d2:be:ed:94:c0:a1:3c:c7:25:21:ea:5d:71:be:81:19:f3:2b -# SHA256 Fingerprint: 8b:45:da:1c:06:f7:91:eb:0c:ab:f2:6b:e5:88:f5:fb:23:16:5c:2e:61:4b:f8:85:56:2d:0d:ce:50:b2:9b:02 ------BEGIN CERTIFICATE----- -MIICCTCCAY+gAwIBAgIQaEpYcIBr8I8C+vbe6LCQkDAKBggqhkjOPQQDAzBGMQsw -CQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMT -EkNBIFdvU2lnbiBFQ0MgUm9vdDAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4 -NThaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEb -MBkGA1UEAxMSQ0EgV29TaWduIEVDQyBSb290MHYwEAYHKoZIzj0CAQYFK4EEACID -YgAE4f2OuEMkq5Z7hcK6C62N4DrjJLnSsb6IOsq/Srj57ywvr1FQPEd1bPiUt5v8 -KB7FVMxjnRZLU8HnIKvNrCXSf4/CwVqCXjCLelTOA7WRf6qU0NGKSMyCBSah1VES -1ns2o0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQUqv3VWqP2h4syhf3RMluARZPzA7gwCgYIKoZIzj0EAwMDaAAwZQIxAOSkhLCB -1T2wdKyUpOgOPQB0TKGXa/kNUTyh2Tv0Daupn75OcsqF1NnstTJFGG+rrQIwfcf3 -aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYua/GRspBl9JrmkO5K ------END CERTIFICATE----- - -# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. -# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. -# Label: "SZAFIR ROOT CA2" -# Serial: 357043034767186914217277344587386743377558296292 -# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 -# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de -# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe ------BEGIN CERTIFICATE----- -MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL -BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 -ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw -NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L -cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg -Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN -QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT -3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw -3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 -3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 -BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN -XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF -AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw -8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG -nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP -oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy -d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg -LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA 2" -# Serial: 44979900017204383099463764357512596969 -# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 -# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 -# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 ------BEGIN CERTIFICATE----- -MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB -gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu -QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG -A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz -OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ -VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 -b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA -DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn -0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB -OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE -fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E -Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m -o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i -sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW -OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez -Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS -adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n -3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ -F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf -CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 -XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm -djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ -WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb -AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq -P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko -b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj -XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P -5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi -DrW5viSP ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions RootCA 2015" -# Serial: 0 -# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce -# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 -# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 ------BEGIN CERTIFICATE----- -MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix -DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k -IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT -N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v -dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG -A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh -ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx -QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA -4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 -AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 -4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C -ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV -9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD -gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 -Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq -NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko -LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc -Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd -ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I -XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI -M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot -9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V -Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea -j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh -X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ -l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf -bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 -pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK -e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 -vm9qp/UsQu0yrbYhnr68 ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" -# Serial: 0 -# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef -# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 -# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 ------BEGIN CERTIFICATE----- -MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN -BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl -bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv -b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ -BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj -YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 -MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 -dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg -QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa -jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi -C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep -lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof -TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR ------END CERTIFICATE----- - -# Issuer: CN=Certplus Root CA G1 O=Certplus -# Subject: CN=Certplus Root CA G1 O=Certplus -# Label: "Certplus Root CA G1" -# Serial: 1491911565779898356709731176965615564637713 -# MD5 Fingerprint: 7f:09:9c:f7:d9:b9:5c:69:69:56:d5:37:3e:14:0d:42 -# SHA1 Fingerprint: 22:fd:d0:b7:fd:a2:4e:0d:ac:49:2c:a0:ac:a6:7b:6a:1f:e3:f7:66 -# SHA256 Fingerprint: 15:2a:40:2b:fc:df:2c:d5:48:05:4d:22:75:b3:9c:7f:ca:3e:c0:97:80:78:b0:f0:ea:76:e5:61:a6:c7:43:3e ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUA -MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy -dHBsdXMgUm9vdCBDQSBHMTAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBa -MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy -dHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -ANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHNr49a -iZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt -6kuJPKNxQv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP -0FG7Yn2ksYyy/yARujVjBYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f -6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTvLRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDE -EW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2z4QTd28n6v+WZxcIbekN -1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc4nBvCGrc -h2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCT -mehd4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV -4EJQeIQEQWGw9CEjjy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPO -WftwenMGE9nTdDckQQoRb5fc5+R+ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1Ud -DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSowcCbkahDFXxd -Bie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHYlwuBsTANBgkq -hkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh -66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7 -/SMNkPX0XtPGYX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BS -S7CTKtQ+FjPlnsZlFT5kOwQ/2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j -2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F6ALEUz65noe8zDUa3qHpimOHZR4R -Kttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilXCNQ314cnrUlZp5Gr -RHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWetUNy -6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEV -V/xuZDDCVRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5 -g4VCXA9DO2pJNdWY9BW/+mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl -++O/QmueD6i9a5jc2NvLi6Td11n0bt3+qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo= ------END CERTIFICATE----- - -# Issuer: CN=Certplus Root CA G2 O=Certplus -# Subject: CN=Certplus Root CA G2 O=Certplus -# Label: "Certplus Root CA G2" -# Serial: 1492087096131536844209563509228951875861589 -# MD5 Fingerprint: a7:ee:c4:78:2d:1b:ee:2d:b9:29:ce:d6:a7:96:32:31 -# SHA1 Fingerprint: 4f:65:8e:1f:e9:06:d8:28:02:e9:54:47:41:c9:54:25:5d:69:cc:1a -# SHA256 Fingerprint: 6c:c0:50:41:e6:44:5e:74:69:6c:4c:fb:c9:f8:0f:54:3b:7e:ab:bb:44:b4:ce:6f:78:7c:6a:99:71:c4:2f:17 ------BEGIN CERTIFICATE----- -MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4x -CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs -dXMgUm9vdCBDQSBHMjAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4x -CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs -dXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABM0PW1aC3/BFGtat -93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uNAm8x -Ik0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0P -AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwj -FNiPwyCrKGBZMB8GA1UdIwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqG -SM49BAMDA2gAMGUCMHD+sAvZ94OX7PNVHdTcswYO/jOYnYs5kGuUIe22113WTNch -p+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjlvPl5adytRSv3tjFzzAal -U5ORGpOucGpnutee5WEaXw== ------END CERTIFICATE----- - -# Issuer: CN=OpenTrust Root CA G1 O=OpenTrust -# Subject: CN=OpenTrust Root CA G1 O=OpenTrust -# Label: "OpenTrust Root CA G1" -# Serial: 1492036577811947013770400127034825178844775 -# MD5 Fingerprint: 76:00:cc:81:29:cd:55:5e:88:6a:7a:2e:f7:4d:39:da -# SHA1 Fingerprint: 79:91:e8:34:f7:e2:ee:dd:08:95:01:52:e9:55:2d:14:e9:58:d5:7e -# SHA256 Fingerprint: 56:c7:71:28:d9:8c:18:d9:1b:4c:fd:ff:bc:25:ee:91:03:d4:75:8e:a2:ab:ad:82:6a:90:f3:45:7d:46:0e:b4 ------BEGIN CERTIFICATE----- -MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUA -MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w -ZW5UcnVzdCBSb290IENBIEcxMB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAw -MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU -T3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7faYp6b -wiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX -/uMftk87ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR0 -77F9jAHiOH3BX2pfJLKOYheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGP -uY4zbGneWK2gDqdkVBFpRGZPTBKnjix9xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLx -p2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO9z0M+Yo0FMT7MzUj8czx -Kselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq3ywgsNw2 -TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+W -G+Oin6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPw -vFEVVJSmdz7QdFG9URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYY -EQRVzXR7z2FwefR7LFxckvzluFqrTJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUl0YhVyE1 -2jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/PxN3DlCPaTKbYw -DQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E -PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kf -gLMtMrpkZ2CvuVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbS -FXJfLkur1J1juONI5f6ELlgKn0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0 -V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLhX4SPgPL0DTatdrOjteFkdjpY3H1P -XlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80nR14SohWZ25g/4/I -i+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcmGS3t -TAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L91 -09S5zvE/bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/Ky -Pu1svf0OnWZzsD2097+o4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJ -AwSQiumPv+i2tCqjI40cHLI5kqiPAlxAOXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj -1oxx ------END CERTIFICATE----- - -# Issuer: CN=OpenTrust Root CA G2 O=OpenTrust -# Subject: CN=OpenTrust Root CA G2 O=OpenTrust -# Label: "OpenTrust Root CA G2" -# Serial: 1492012448042702096986875987676935573415441 -# MD5 Fingerprint: 57:24:b6:59:24:6b:ae:c8:fe:1c:0c:20:f2:c0:4e:eb -# SHA1 Fingerprint: 79:5f:88:60:c5:ab:7c:3d:92:e6:cb:f4:8d:e1:45:cd:11:ef:60:0b -# SHA256 Fingerprint: 27:99:58:29:fe:6a:75:15:c1:bf:e8:48:f9:c4:76:1d:b1:6c:22:59:29:25:7b:f4:0d:08:94:f2:9e:a8:ba:f2 ------BEGIN CERTIFICATE----- -MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUA -MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w -ZW5UcnVzdCBSb290IENBIEcyMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAw -MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU -T3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+Ntmh -/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78e -CbY2albz4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/6 -1UWY0jUJ9gNDlP7ZvyCVeYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fE -FY8ElggGQgT4hNYdvJGmQr5J1WqIP7wtUdGejeBSzFfdNTVY27SPJIjki9/ca1TS -gSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz3GIZ38i1MH/1PCZ1Eb3X -G7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj3CzMpSZy -YhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaH -vGOz9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4 -t/bQWVyJ98LVtZR00dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/ -gh7PU3+06yzbXfZqfUAkBXKJOAGTy3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUajn6QiL3 -5okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59M4PLuG53hq8w -DQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz -Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0 -nXGEL8pZ0keImUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qT -RmTFAHneIWv2V6CG1wZy7HBGS4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpT -wm+bREx50B1ws9efAvSyB7DH5fitIw6mVskpEndI2S9G/Tvw/HRwkqWOOAgfZDC2 -t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ6e18CL13zSdkzJTa -TkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97krgCf2 -o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU -3jg9CcCoSmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eA -iN1nE28daCSLT7d0geX0YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14f -WKGVyasvc0rQLW6aWQ9VGHgtPFGml4vmu7JwqkwR3v98KzfUetF3NI/n+UL3PIEM -S1IK ------END CERTIFICATE----- - -# Issuer: CN=OpenTrust Root CA G3 O=OpenTrust -# Subject: CN=OpenTrust Root CA G3 O=OpenTrust -# Label: "OpenTrust Root CA G3" -# Serial: 1492104908271485653071219941864171170455615 -# MD5 Fingerprint: 21:37:b4:17:16:92:7b:67:46:70:a9:96:d7:a8:13:24 -# SHA1 Fingerprint: 6e:26:64:f3:56:bf:34:55:bf:d1:93:3f:7c:01:de:d8:13:da:8a:a6 -# SHA256 Fingerprint: b7:c3:62:31:70:6e:81:07:8c:36:7c:b8:96:19:8f:1e:32:08:dd:92:69:49:dd:8f:57:09:a4:10:f7:5b:62:92 ------BEGIN CERTIFICATE----- -MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAx -CzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5U -cnVzdCBSb290IENBIEczMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFow -QDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwUT3Bl -blRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARK7liuTcpm -3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5Bta1d -oYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4G -A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5 -DMlv4VBN0BBY3JWIbTAfBgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAK -BggqhkjOPQQDAwNpADBmAjEAj6jcnboMBBf6Fek9LykBl7+BFjNAk2z8+e2AcG+q -j9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta3U1fJAuwACEl74+nBCZx -4nxp5V2a+EEfOzmTk51V6s2N8fvB ------END CERTIFICATE----- - -# Issuer: CN=ISRG Root X1 O=Internet Security Research Group -# Subject: CN=ISRG Root X1 O=Internet Security Research Group -# Label: "ISRG Root X1" -# Serial: 172886928669790476064670243504169061120 -# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e -# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 -# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- - -# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM -# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM -# Label: "AC RAIZ FNMT-RCM" -# Serial: 485876308206448804701554682760554759 -# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d -# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 -# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx -CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ -WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ -BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG -Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ -yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf -BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz -WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF -tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z -374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC -IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL -mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 -wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS -MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 -ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet -UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H -YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 -LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD -nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 -RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM -LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf -77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N -JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm -fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp -6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp -1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B -9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok -RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv -uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 1 O=Amazon -# Subject: CN=Amazon Root CA 1 O=Amazon -# Label: "Amazon Root CA 1" -# Serial: 143266978916655856878034712317230054538369994 -# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 -# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 -# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e ------BEGIN CERTIFICATE----- -MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF -ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 -b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL -MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv -b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj -ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM -9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw -IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 -VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L -93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm -jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA -A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI -U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs -N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv -o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU -5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy -rqXRfboQnoZsG4q5WTP468SQvvG5 ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 2 O=Amazon -# Subject: CN=Amazon Root CA 2 O=Amazon -# Label: "Amazon Root CA 2" -# Serial: 143266982885963551818349160658925006970653239 -# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 -# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a -# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF -ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 -b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL -MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv -b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK -gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ -W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg -1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K -8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r -2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me -z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR -8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj -mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz -7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 -+XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI -0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB -Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm -UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 -LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY -+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS -k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl -7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm -btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl -urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ -fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 -n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE -76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H -9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT -4PsJYGw= ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 3 O=Amazon -# Subject: CN=Amazon Root CA 3 O=Amazon -# Label: "Amazon Root CA 3" -# Serial: 143266986699090766294700635381230934788665930 -# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 -# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e -# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 ------BEGIN CERTIFICATE----- -MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 -MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g -Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG -A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg -Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl -ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr -ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr -BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM -YyRIHN8wfdVoOw== ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 4 O=Amazon -# Subject: CN=Amazon Root CA 4 O=Amazon -# Label: "Amazon Root CA 4" -# Serial: 143266989758080763974105200630763877849284878 -# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd -# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be -# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 ------BEGIN CERTIFICATE----- -MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 -MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g -Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG -A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg -Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi -9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk -M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB -MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw -CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW -1KyLa2tJElMzrdfkviT8tQp21KW8EA== ------END CERTIFICATE----- - -# Issuer: CN=LuxTrust Global Root 2 O=LuxTrust S.A. -# Subject: CN=LuxTrust Global Root 2 O=LuxTrust S.A. -# Label: "LuxTrust Global Root 2" -# Serial: 59914338225734147123941058376788110305822489521 -# MD5 Fingerprint: b2:e1:09:00:61:af:f7:f1:91:6f:c4:ad:8d:5e:3b:7c -# SHA1 Fingerprint: 1e:0e:56:19:0a:d1:8b:25:98:b2:04:44:ff:66:8a:04:17:99:5f:3f -# SHA256 Fingerprint: 54:45:5f:71:29:c2:0b:14:47:c4:18:f9:97:16:8f:24:c5:8f:c5:02:3b:f5:da:5b:e2:eb:6e:1d:d8:90:2e:d5 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM -# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM -# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" -# Serial: 1 -# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 -# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca -# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx -GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp -bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w -KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 -BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy -dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG -EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll -IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU -QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT -TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg -LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 -a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr -LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr -N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X -YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ -iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f -AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH -V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL -BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh -AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf -IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 -lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c -8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf -lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= ------END CERTIFICATE----- diff --git a/env/lib/python3.6/site-packages/certifi/core.py b/env/lib/python3.6/site-packages/certifi/core.py deleted file mode 100644 index f41d3fd..0000000 --- a/env/lib/python3.6/site-packages/certifi/core.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -""" -certifi.py -~~~~~~~~~~ - -This module returns the installation location of cacert.pem. -""" -import os -import warnings - - -class DeprecatedBundleWarning(DeprecationWarning): - """ - The weak security bundle is being deprecated. Please bother your service - provider to get them to stop using cross-signed roots. - """ - - -def where(): - f = os.path.dirname(__file__) - - return os.path.join(f, 'cacert.pem') - - -def old_where(): - warnings.warn( - "The weak security bundle is being deprecated.", - DeprecatedBundleWarning - ) - f = os.path.dirname(__file__) - return os.path.join(f, 'weak.pem') - -if __name__ == '__main__': - print(where()) diff --git a/env/lib/python3.6/site-packages/certifi/old_root.pem b/env/lib/python3.6/site-packages/certifi/old_root.pem deleted file mode 100644 index af30ea7..0000000 --- a/env/lib/python3.6/site-packages/certifi/old_root.pem +++ /dev/null @@ -1,414 +0,0 @@ -# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Secure Server CA" -# Serial: 927650371 -# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee -# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 -# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Label: "ValiCert Class 2 VA" -# Serial: 1 -# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 -# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 -# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- - -# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Express (Class C) Root" -# Serial: 104 -# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 -# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b -# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- - -# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Business (Class B) Root" -# Serial: 105 -# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 -# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af -# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Label: "RSA Root Certificate 1" -# Serial: 1 -# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 -# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb -# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Label: "ValiCert Class 1 VA" -# Serial: 1 -# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb -# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e -# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- - -# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure eBusiness CA 1" -# Serial: 4 -# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d -# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 -# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- - -# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure Global eBusiness CA" -# Serial: 1 -# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc -# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 -# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- - -# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Premium Server CA" -# Serial: 1 -# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a -# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a -# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- - -# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Server CA" -# Serial: 1 -# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d -# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c -# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 149843929435818692848040365716851702463 -# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 -# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 -# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 80507572722862485515306429940691309246 -# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 -# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b -# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i -2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ -2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Label: "Verisign Class 3 Public Primary Certification Authority - G2" -# Serial: 167285380242319648451154478808036881606 -# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 -# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f -# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- - -# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Label: "GTE CyberTrust Global Root" -# Serial: 421 -# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db -# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 -# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- - -# Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority -# Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority -# Label: "Equifax Secure Certificate Authority" -# Serial: 903804111 -# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 -# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a -# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- diff --git a/env/lib/python3.6/site-packages/certifi/weak.pem b/env/lib/python3.6/site-packages/certifi/weak.pem deleted file mode 100644 index 380c523..0000000 --- a/env/lib/python3.6/site-packages/certifi/weak.pem +++ /dev/null @@ -1,5248 +0,0 @@ - -# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA -# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA -# Label: "GlobalSign Root CA" -# Serial: 4835703278459707669005204 -# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a -# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c -# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 -# Label: "GlobalSign Root CA - R2" -# Serial: 4835703278459682885658125 -# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 -# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe -# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only -# Label: "Verisign Class 3 Public Primary Certification Authority - G3" -# Serial: 206684696279472310254277870180966723415 -# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 -# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 -# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - -# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Premium 2048 Secure Server CA" -# Serial: 946069240 -# MD5 Fingerprint: ee:29:31:bc:32:7e:9a:e6:e8:b5:f7:51:b4:34:71:90 -# SHA1 Fingerprint: 50:30:06:09:1d:97:d4:f5:ae:39:f7:cb:e7:92:7d:7d:65:2d:34:31 -# SHA256 Fingerprint: 6d:c4:71:72:e0:1c:bc:b0:bf:62:58:0d:89:5f:e2:b8:ac:9a:d4:f8:73:80:1e:0c:10:b9:c8:37:d2:1e:b1:77 ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0yOTA3 -MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV -HQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJKoZIhvcNAQEFBQADggEBADub -j1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPyT/4xmf3IDExo -U8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf -zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5b -u/8j72gZyxKTJ1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+ -bYQLCIt+jerXmCHG8+c8eS9enNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/Er -fF6adulZkMV8gzURZVE= ------END CERTIFICATE----- - -# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust -# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust -# Label: "Baltimore CyberTrust Root" -# Serial: 33554617 -# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 -# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 -# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- - -# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network -# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network -# Label: "AddTrust External Root" -# Serial: 1 -# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f -# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 -# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. -# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. -# Label: "Entrust Root Certification Authority" -# Serial: 1164660820 -# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 -# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 -# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c ------BEGIN CERTIFICATE----- -MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 -Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW -KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw -NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw -NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy -ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV -BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo -Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 -4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 -KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI -rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi -94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB -sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi -gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo -kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE -vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA -A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t -O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua -AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP -9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ -eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m -0vdXcDazv/wor3ElhVsT/h5/WrQ8 ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. -# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. -# Label: "GeoTrust Global CA" -# Serial: 144470 -# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 -# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 -# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. -# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. -# Label: "GeoTrust Universal CA" -# Serial: 1 -# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 -# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 -# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy -c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 -IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV -VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 -cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT -QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh -F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v -c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w -mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd -VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX -teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ -f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe -Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ -nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB -/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY -MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG -9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX -IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn -ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z -uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN -Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja -QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW -koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 -ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt -DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm -bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. -# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. -# Label: "GeoTrust Universal CA 2" -# Serial: 1 -# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 -# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 -# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW -MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy -c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD -VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 -c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 -WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG -FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq -XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL -se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb -KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd -IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 -y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt -hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc -QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 -Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV -HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ -KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ -L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr -Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo -ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY -T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz -GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m -1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV -OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH -6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX -QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - -# Issuer: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association -# Subject: CN=Visa eCommerce Root O=VISA OU=Visa International Service Association -# Label: "Visa eCommerce Root" -# Serial: 25952180776285836048024890241505565794 -# MD5 Fingerprint: fc:11:b8:d8:08:93:30:00:6d:23:f9:7e:eb:52:1e:02 -# SHA1 Fingerprint: 70:17:9b:86:8c:00:a4:fa:60:91:52:22:3f:9f:3e:32:bd:e0:05:62 -# SHA256 Fingerprint: 69:fa:c9:bd:55:fb:0a:c7:8d:53:bb:ee:5c:f1:d5:97:98:9f:d0:aa:ab:20:a2:51:51:bd:f1:73:3e:e7:d1:22 ------BEGIN CERTIFICATE----- -MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBr -MQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRl -cm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv -bW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2WhcNMjIwNjI0MDAxNjEyWjBrMQsw -CQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5h -dGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1l -cmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h -2mCxlCfLF9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4E -lpF7sDPwsRROEW+1QK8bRaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdV -ZqW1LS7YgFmypw23RuwhY/81q6UCzyr0TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq -299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI/k4+oKsGGelT84ATB+0t -vz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzsGHxBvfaL -dXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUF -AAOCAQEAX/FBfXxcCLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcR -zCSs00Rsca4BIGsDoo8Ytyk6feUWYFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3 -LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pzzkWKsKZJ/0x9nXGIxHYdkFsd -7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBuYQa7FkKMcPcw -++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt -398znM/jra6O1I7mT1GvFpLgXPYHDw== ------END CERTIFICATE----- - -# Issuer: CN=Certum CA O=Unizeto Sp. z o.o. -# Subject: CN=Certum CA O=Unizeto Sp. z o.o. -# Label: "Certum Root CA" -# Serial: 65568 -# MD5 Fingerprint: 2c:8f:9f:66:1d:18:90:b1:47:26:9d:8e:86:82:8c:a9 -# SHA1 Fingerprint: 62:52:dc:40:f7:11:43:a2:2f:de:9e:f7:34:8e:06:42:51:b1:81:18 -# SHA256 Fingerprint: d8:e0:fe:bc:1d:b2:e3:8d:00:94:0f:37:d2:7d:41:34:4d:99:3e:73:4b:99:d5:65:6d:97:78:d4:d8:14:36:24 ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- - -# Issuer: CN=AAA Certificate Services O=Comodo CA Limited -# Subject: CN=AAA Certificate Services O=Comodo CA Limited -# Label: "Comodo AAA Services root" -# Serial: 1 -# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 -# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 -# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority -# Subject: CN=QuoVadis Root Certification Authority O=QuoVadis Limited OU=Root Certification Authority -# Label: "QuoVadis Root CA" -# Serial: 985026699 -# MD5 Fingerprint: 27:de:36:fe:72:b7:00:03:00:9d:f4:f0:1e:6c:04:24 -# SHA1 Fingerprint: de:3f:40:bd:50:93:d3:9b:6c:60:f6:da:bc:07:62:01:00:89:76:c9 -# SHA256 Fingerprint: a4:5e:de:3b:bb:f0:9c:8a:e1:5c:72:ef:c0:72:68:d6:93:a2:1c:99:6f:d5:1e:67:ca:07:94:60:fd:6d:88:73 ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAzMTkxODMzMzNaFw0yMTAzMTcxODMz -MzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUw -IwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQDEyVR -dW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Yp -li4kVEAkOPcahdxYTMukJ0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2D -rOpm2RgbaIr1VxqYuvXtdj182d6UajtLF8HVj71lODqV0D1VNk7feVcxKh7YWWVJ -WCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeLYzcS19Dsw3sgQUSj7cug -F+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWenAScOospU -xbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCC -Ak4wPQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVv -dmFkaXNvZmZzaG9yZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREw -ggENMIIBCQYJKwYBBAG+WAABMIH7MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNl -IG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBh -c3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFy -ZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYI -KwYBBQUHAgEWFmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3T -KbkGGew5Oanwl4Rqy+/fMIGuBgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rq -y+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1p -dGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYD -VQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6tlCL -MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSk -fnIYj9lofFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf8 -7C9TqnN7Az10buYWnuulLsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1R -cHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2xgI4JVrmcGmD+XcHXetwReNDWXcG31a0y -mQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi5upZIof4l/UO/erMkqQW -xFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi5nrQNiOK -SnQ2+Q== ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2" -# Serial: 1289 -# MD5 Fingerprint: 5e:39:7b:dd:f8:ba:ec:82:e9:ac:62:ba:0c:54:00:2b -# SHA1 Fingerprint: ca:3a:fb:cf:12:40:36:4b:44:b2:16:20:88:80:48:39:19:93:7c:f7 -# SHA256 Fingerprint: 85:a0:dd:7d:d7:20:ad:b7:ff:05:f8:3d:54:2b:20:9d:c7:ff:45:28:f7:d6:77:b1:83:89:fe:a5:e5:c4:9e:86 ------BEGIN CERTIFICATE----- -MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMjAeFw0wNjExMjQxODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCa -GMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6XJxg -Fyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55J -WpzmM+Yklvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bB -rrcCaoF6qUWD4gXmuVbBlDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp -+ARz8un+XJiM9XOva7R+zdRcAitMOeGylZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1 -ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt66/3FsvbzSUr5R/7mp/i -Ucw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1JdxnwQ5hYIiz -PtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og -/zOhD7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UH -oycR7hYQe7xFSkyyBNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuI -yV77zGHcizN300QyNQliBJIWENieJ0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1Ud -EwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBQahGK8SEwzJQTU7tD2 -A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGUa6FJpEcwRTEL -MAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT -ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2f -BluornFdLwUvZ+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzn -g/iN/Ae42l9NLmeyhP3ZRPx3UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2Bl -fF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodmVjB3pjd4M1IQWK4/YY7yarHvGH5K -WWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK+JDSV6IZUaUtl0Ha -B0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrWIozc -hLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPR -TUIZ3Ph1WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWD -mbA4CD/pXvk1B+TJYm5Xf6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0Z -ohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y -4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8VCLAAVBpQ570su9t+Oza -8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3" -# Serial: 1478 -# MD5 Fingerprint: 31:85:3c:62:94:97:63:b9:aa:fd:89:4e:af:6f:e0:cf -# SHA1 Fingerprint: 1f:49:14:f7:d8:74:95:1d:dd:ae:02:c0:be:fd:3a:2d:82:75:51:85 -# SHA256 Fingerprint: 18:f1:fc:7f:20:5d:f8:ad:dd:eb:7f:e0:07:dd:57:e3:af:37:5a:9c:4d:8d:73:54:6b:f4:f1:fe:d1:e1:8d:35 ------BEGIN CERTIFICATE----- -MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0x -GTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJv -b3QgQ0EgMzAeFw0wNjExMjQxOTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNV -BAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMRswGQYDVQQDExJRdW9W -YWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDM -V0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNggDhoB -4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUr -H556VOijKTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd -8lyyBTNvijbO0BNO/79KDDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9Cabwv -vWhDFlaJKjdhkf2mrk7AyxRllDdLkgbvBNDInIjbC3uBr7E9KsRlOni27tyAsdLT -mZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwpp5ijJUMv7/FfJuGITfhe -btfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8nT8KKdjc -T5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDt -WAEXMJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZ -c6tsgLjoC2SToJyMGf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A -4iLItLRkT9a6fUg+qGkM17uGcclzuD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYD -VR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHTBgkrBgEEAb5YAAMwgcUwgZMG -CCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmljYXRlIGNvbnN0 -aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 -aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVu -dC4wLQYIKwYBBQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2Nw -czALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4G -A1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4ywLQoUmkRzBFMQswCQYDVQQGEwJC -TTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UEAxMSUXVvVmFkaXMg -Um9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZVqyM0 -7ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSem -d1o417+shvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd -+LJ2w/w4E6oM3kJpK27zPOuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B -4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadN -t54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp8kokUvd0/bpO5qgdAm6x -DYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBCbjPsMZ57 -k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6s -zHXug/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0j -Wy10QJLZYxkNc91pvGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeT -mJlglFwjz1onl14LBQaTNx47aTbrqZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK -4SVhM7JZG+Ju1zdXtg2pEto= ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust.net OU=Security Communication RootCA1 -# Subject: O=SECOM Trust.net OU=Security Communication RootCA1 -# Label: "Security Communication Root CA" -# Serial: 0 -# MD5 Fingerprint: f1:bc:63:6a:54:e0:b5:27:f5:cd:e7:1a:e3:4d:6e:4a -# SHA1 Fingerprint: 36:b1:2b:49:f9:81:9e:d7:4c:9e:bc:38:0f:c6:56:8f:5d:ac:b2:f7 -# SHA256 Fingerprint: e7:5e:72:ed:9f:56:0e:ec:6e:b4:80:00:73:a4:3f:c3:ad:19:19:5a:39:22:82:01:78:95:97:4a:99:02:6b:6c ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- - -# Issuer: CN=Sonera Class2 CA O=Sonera -# Subject: CN=Sonera Class2 CA O=Sonera -# Label: "Sonera Class 2 Root CA" -# Serial: 29 -# MD5 Fingerprint: a3:ec:75:0f:2e:88:df:fa:48:01:4e:0b:5c:48:6f:fb -# SHA1 Fingerprint: 37:f7:6d:e6:07:7c:90:c5:b1:3e:93:1a:b7:41:10:b4:f2:e4:9a:27 -# SHA256 Fingerprint: 79:08:b4:03:14:c1:38:10:0b:51:8d:07:35:80:7f:fb:fc:f8:51:8a:00:95:33:71:05:ba:38:6b:15:3d:d9:27 ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- - -# Issuer: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Chambers of Commerce Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Chambers of Commerce Root" -# Serial: 0 -# MD5 Fingerprint: b0:01:ee:14:d9:af:29:18:94:76:8e:f1:69:33:2a:84 -# SHA1 Fingerprint: 6e:3a:55:a4:19:0c:19:5c:93:84:3c:c0:db:72:2e:31:30:61:f0:b1 -# SHA256 Fingerprint: 0c:25:8a:12:a5:67:4a:ef:25:f2:8b:a7:dc:fa:ec:ee:a3:48:e5:41:e6:f5:cc:4e:e6:3b:71:b3:61:60:6a:c3 ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Subject: CN=Global Chambersign Root O=AC Camerfirma SA CIF A82743287 OU=http://www.chambersign.org -# Label: "Camerfirma Global Chambersign Root" -# Serial: 0 -# MD5 Fingerprint: c5:e6:7b:bf:06:d0:4f:43:ed:c4:7a:65:8a:fb:6b:19 -# SHA1 Fingerprint: 33:9b:6b:14:50:24:9b:55:7a:01:87:72:84:d9:e0:2f:c3:d2:d8:e9 -# SHA256 Fingerprint: ef:3c:b4:17:fc:8e:bf:6f:97:87:6c:9e:4e:ce:39:de:1e:a5:fe:64:91:41:d1:02:8b:7d:11:c0:b2:29:8c:ed ------BEGIN CERTIFICATE----- -MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENo -YW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYxNDE4WhcNMzcwOTMwMTYxNDE4WjB9 -MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgy -NzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEgMB4G -A1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUA -A4IBDQAwggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0 -Mi+ITaFgCPS3CU6gSS9J1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/s -QJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8Oby4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpV -eAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl6DJWk0aJqCWKZQbua795 -B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c8lCrEqWh -z0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0T -AQH/BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1i -ZXJzaWduLm9yZy9jaGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4w -TcbOX60Qq+UDpfqpFDAOBgNVHQ8BAf8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAH -MCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBjaGFtYmVyc2lnbi5vcmcwKgYD -VR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9yZzBbBgNVHSAE -VDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh -bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0B -AQUFAAOCAQEAPDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUM -bKGKfKX0j//U2K0X1S0E0T9YgOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXi -ryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJPJ7oKXqJ1/6v/2j1pReQvayZzKWG -VwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4IBHNfTIzSJRUTN3c -ecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREest2d/ -AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== ------END CERTIFICATE----- - -# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com -# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com -# Label: "XRamp Global CA Root" -# Serial: 107108908803651509692980124233745014957 -# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 -# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 -# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB -gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk -MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY -UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx -NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 -dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy -dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB -dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 -38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP -KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q -DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 -qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa -JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi -PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P -BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs -jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 -eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD -ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR -vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt -qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa -IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy -i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ -O+7ETPTsJ3xCwnR8gooJybQDJbw= ------END CERTIFICATE----- - -# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority -# Label: "Go Daddy Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 -# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 -# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- - -# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority -# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority -# Label: "Starfield Class 2 CA" -# Serial: 0 -# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 -# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a -# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Label: "StartCom Certification Authority" -# Serial: 1 -# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 -# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f -# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea ------BEGIN CERTIFICATE----- -MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE -FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j -ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js -LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM -BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 -Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy -dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh -cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh -YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg -dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp -bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ -YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT -TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ -9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 -jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW -FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz -ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 -ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L -EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu -L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq -yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC -O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V -um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh -NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= ------END CERTIFICATE----- - -# Issuer: O=Government Root Certification Authority -# Subject: O=Government Root Certification Authority -# Label: "Taiwan GRCA" -# Serial: 42023070807708724159991140556527066870 -# MD5 Fingerprint: 37:85:44:53:32:45:1f:20:f0:f3:95:e1:25:c4:43:4e -# SHA1 Fingerprint: f4:8b:11:bf:de:ab:be:94:54:20:71:e6:41:de:6b:be:88:2b:40:b9 -# SHA256 Fingerprint: 76:00:29:5e:ef:e8:5b:9e:1f:d6:24:db:76:06:2a:aa:ae:59:81:8a:54:d2:77:4c:d4:c0:b2:c0:11:31:e1:b3 ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/ -MQswCQYDVQQGEwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5MB4XDTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1ow -PzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dvdmVybm1lbnQgUm9vdCBDZXJ0aWZp -Y2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qNw8XR -IePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1q -gQdW8or5BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKy -yhwOeYHWtXBiCAEuTk8O1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAts -F/tnyMKtsc2AtJfcdgEWFelq16TheEfOhtX7MfP6Mb40qij7cEwdScevLJ1tZqa2 -jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wovJ5pGfaENda1UhhXcSTvx -ls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7Q3hub/FC -VGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHK -YS1tB6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoH -EgKXTiCQ8P8NHuJBO9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThN -Xo+EHWbNxWCWtFJaBYmOlXqYwZE8lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1Ud -DgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNVHRMEBTADAQH/MDkGBGcqBwAE -MTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg209yewDL7MTqK -UWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyf -qzvS/3WXy6TjZwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaK -ZEk9GhiHkASfQlK3T8v+R0F2Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFE -JPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlUD7gsL0u8qV1bYH+Mh6XgUmMqvtg7 -hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6QzDxARvBMB1uUO07+1 -EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+HbkZ6Mm -nD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WX -udpVBrkk7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44Vbnz -ssQwmSNOXfJIoRIM3BKQCZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDe -LMDDav7v3Aun+kbfYNucpllQdSNpc5Oy+fwC00fmcc4QAu4njIT/rEUNE1yDMuAl -pYYsfPQS ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root CA" -# Serial: 17154717934120587862167794914071425081 -# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 -# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 -# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root CA" -# Serial: 10944719598952040374951832963794454346 -# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e -# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 -# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert High Assurance EV Root CA" -# Serial: 3553400076410547919724730734378100087 -# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a -# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 -# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- - -# Issuer: CN=Class 2 Primary CA O=Certplus -# Subject: CN=Class 2 Primary CA O=Certplus -# Label: "Certplus Class 2 Primary CA" -# Serial: 177770208045934040241468760488327595043 -# MD5 Fingerprint: 88:2c:8c:52:b8:a2:3c:f3:f7:bb:03:ea:ae:ac:42:0b -# SHA1 Fingerprint: 74:20:74:41:72:9c:dd:92:ec:79:31:d8:23:10:8d:c2:81:92:e2:bb -# SHA256 Fingerprint: 0f:99:3c:8a:ef:97:ba:af:56:87:14:0e:d5:9a:d1:82:1b:b4:af:ac:f0:aa:9a:58:b5:d5:7a:33:8a:3a:fb:cb ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAw -PTELMAkGA1UEBhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFz -cyAyIFByaW1hcnkgQ0EwHhcNOTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9 -MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2VydHBsdXMxGzAZBgNVBAMTEkNsYXNz -IDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANxQ -ltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR5aiR -VhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyL -kcAbmXuZVg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCd -EgETjdyAYveVqUSISnFOYFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yas -H7WLO7dDWWuwJKZtkIvEcupdM5i3y95ee++U8Rs+yskhwcWYAqqi9lt3m/V+llU0 -HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRMECDAGAQH/AgEKMAsGA1Ud -DwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJYIZIAYb4 -QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMu -Y29tL0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/ -AN9WM2K191EBkOvDP9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8 -yfFC82x/xXp8HVGIutIKPidd3i1RTtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMR -FcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+7UCmnYR0ObncHoUW2ikbhiMA -ybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW//1IMwrh3KWB -kJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- - -# Issuer: CN=DST Root CA X3 O=Digital Signature Trust Co. -# Subject: CN=DST Root CA X3 O=Digital Signature Trust Co. -# Label: "DST Root CA X3" -# Serial: 91299735575339953335919266965803778155 -# MD5 Fingerprint: 41:03:52:dc:0f:f7:50:1b:16:f0:02:8e:ba:6f:45:c5 -# SHA1 Fingerprint: da:c9:02:4f:54:d8:f6:df:94:93:5f:b1:73:26:38:ca:6a:d7:7c:13 -# SHA256 Fingerprint: 06:87:26:03:31:a7:24:03:d9:09:f1:05:e6:9b:cf:0d:32:e1:bd:24:93:ff:c6:d9:20:6d:11:bc:d6:77:07:39 ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - -# Issuer: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Subject: CN=DST ACES CA X6 O=Digital Signature Trust OU=DST ACES -# Label: "DST ACES CA X6" -# Serial: 17771143917277623872238992636097467865 -# MD5 Fingerprint: 21:d8:4c:82:2b:99:09:33:a2:eb:14:24:8d:8e:5f:e8 -# SHA1 Fingerprint: 40:54:da:6f:1c:3f:40:74:ac:ed:0f:ec:cd:db:79:d1:53:fb:90:1d -# SHA256 Fingerprint: 76:7c:95:5a:76:41:2c:89:af:68:8e:90:a1:c7:0f:55:6c:fd:6b:60:25:db:ea:10:41:6d:7e:b6:83:1f:8c:40 ------BEGIN CERTIFICATE----- -MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBb -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3Qx -ETAPBgNVBAsTCERTVCBBQ0VTMRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0w -MzExMjAyMTE5NThaFw0xNzExMjAyMTE5NThaMFsxCzAJBgNVBAYTAlVTMSAwHgYD -VQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UECxMIRFNUIEFDRVMx -FzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPu -ktKe1jzIDZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7 -gLFViYsx+tC3dr5BPTCapCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZH -fAjIgrrep4c9oW24MFbCswKBXy314powGCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4a -ahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPyMjwmR/onJALJfh1biEIT -ajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rk -c3QuY29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjto -dHRwOi8vd3d3LnRydXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMt -aW5kZXguaHRtbDAdBgNVHQ4EFgQUCXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZI -hvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V25FYrnJmQ6AgwbN99Pe7lv7Uk -QIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6tFr8hlxCBPeP/ -h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq -nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpR -rscL9yuwNwXsvFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf2 -9w4LTJxoeHtxMcfrHuBnQfO3oKfN5XozNmr6mis= ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Gold CA - G2 O=SwissSign AG -# Label: "SwissSign Gold CA - G2" -# Serial: 13492815561806991280 -# MD5 Fingerprint: 24:77:d9:a8:91:d1:3b:fa:88:2d:c2:ff:f8:cd:33:93 -# SHA1 Fingerprint: d8:c5:38:8a:b7:30:1b:1b:6e:d4:7a:e6:45:25:3a:6f:9f:1a:27:61 -# SHA256 Fingerprint: 62:dd:0b:e9:b9:f5:0a:16:3e:a0:f8:e7:5c:05:3b:1e:ca:57:ea:55:c8:68:8f:64:7c:68:81:f2:c8:35:7b:95 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Subject: CN=SwissSign Silver CA - G2 O=SwissSign AG -# Label: "SwissSign Silver CA - G2" -# Serial: 5700383053117599563 -# MD5 Fingerprint: e0:06:a1:c9:7d:cf:c9:fc:0d:c0:56:75:96:d8:62:13 -# SHA1 Fingerprint: 9b:aa:e5:9f:56:ee:21:cb:43:5a:be:25:93:df:a7:f0:40:d1:1d:cb -# SHA256 Fingerprint: be:6c:4d:a2:bb:b9:ba:59:b6:f3:93:97:68:37:42:46:c3:c0:05:99:3f:a9:8f:02:0d:1d:ed:be:d4:8a:81:d5 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. -# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. -# Label: "GeoTrust Primary Certification Authority" -# Serial: 32798226551256963324313806436981982369 -# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf -# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 -# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY -MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo -R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx -MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 -AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA -ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 -7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W -kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI -mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ -KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 -6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl -4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K -oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj -UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU -AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only -# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only -# Label: "thawte Primary Root CA" -# Serial: 69529181992039203566298953787712940909 -# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 -# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 -# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB -qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV -BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw -NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j -LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG -A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs -W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta -3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk -6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 -Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J -NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA -MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP -r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU -DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz -YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 -/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ -LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 -jVaMaA== ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only -# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" -# Serial: 33037644167568058970164719475676101450 -# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c -# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 -# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW -ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 -nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex -t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz -SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG -BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ -rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ -NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E -BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH -BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv -MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE -p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y -5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK -WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ -4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N -hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - -# Issuer: CN=SecureTrust CA O=SecureTrust Corporation -# Subject: CN=SecureTrust CA O=SecureTrust Corporation -# Label: "SecureTrust CA" -# Serial: 17199774589125277788362757014266862032 -# MD5 Fingerprint: dc:32:c3:a7:6d:25:57:c7:68:09:9d:ea:2d:a9:a2:d1 -# SHA1 Fingerprint: 87:82:c6:c3:04:35:3b:cf:d2:96:92:d2:59:3e:7d:44:d9:34:ff:11 -# SHA256 Fingerprint: f1:c1:b5:0a:e5:a2:0d:d8:03:0e:c9:f6:bc:24:82:3d:d3:67:b5:25:57:59:b4:e7:1b:61:fc:e9:f7:37:5d:73 ------BEGIN CERTIFICATE----- -MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBI -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -FzAVBgNVBAMTDlNlY3VyZVRydXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIz -MTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAeBgNVBAoTF1NlY3VyZVRydXN0IENv -cnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQXOZEz -Zum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO -0gMdA+9tDWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIao -wW8xQmxSPmjL8xk037uHGFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj -7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b01k/unK8RCSc43Oz969XL0Imnal0ugBS -8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmHursCAwEAAaOBnTCBmjAT -BgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCeg -JYYjaHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGC -NxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt3 -6Z3q059c4EVlew3KW+JwULKUBRSuSceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/ -3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHfmbx8IVQr5Fiiu1cprp6poxkm -D5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZnMUFdAvnZyPS -CPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR -3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= ------END CERTIFICATE----- - -# Issuer: CN=Secure Global CA O=SecureTrust Corporation -# Subject: CN=Secure Global CA O=SecureTrust Corporation -# Label: "Secure Global CA" -# Serial: 9751836167731051554232119481456978597 -# MD5 Fingerprint: cf:f4:27:0d:d4:ed:dc:65:16:49:6d:3d:da:bf:6e:de -# SHA1 Fingerprint: 3a:44:73:5a:e5:81:90:1f:24:86:61:46:1e:3b:9c:c4:5f:f5:3a:1b -# SHA256 Fingerprint: 42:00:f5:04:3a:c8:59:0e:bb:52:7d:20:9e:d1:50:30:29:fb:cb:d4:1c:a1:b5:06:ec:27:f1:5a:de:7d:ac:69 ------BEGIN CERTIFICATE----- -MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBK -MQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24x -GTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkx -MjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3Qg -Q29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwgQ0EwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jxYDiJ -iQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa -/FHtaMbQbqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJ -jnIFHovdRIWCQtBJwB1g8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnI -HmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYVHDGA76oYa8J719rO+TMg1fW9ajMtgQT7 -sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi0XPnj3pDAgMBAAGjgZ0w -gZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCsw -KaAnoCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsG -AQQBgjcVAQQDAgEAMA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0L -URYD7xh8yOOvaliTFGCRsoTciE6+OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXO -H0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cnCDpOGR86p1hcF895P4vkp9Mm -I50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/53CYNv6ZHdAbY -iNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc -f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW ------END CERTIFICATE----- - -# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO Certification Authority O=COMODO CA Limited -# Label: "COMODO Certification Authority" -# Serial: 104350513648249232941998508985834464573 -# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 -# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b -# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 ------BEGIN CERTIFICATE----- -MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB -gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV -BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw -MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl -YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P -RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 -UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI -2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 -Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp -+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ -DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O -nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW -/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g -PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u -QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY -SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv -IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ -RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 -zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd -BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB -ZQ== ------END CERTIFICATE----- - -# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. -# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. -# Label: "Network Solutions Certificate Authority" -# Serial: 116697915152937497490437556386812487904 -# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e -# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce -# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi -MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV -UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO -ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz -c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP -OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl -mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF -BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 -qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw -gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu -bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp -dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 -6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ -h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH -/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN -pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- - -# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited -# Label: "COMODO ECC Certification Authority" -# Serial: 41578283867086692638256921589707938090 -# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 -# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 -# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 ------BEGIN CERTIFICATE----- -MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT -IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw -MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy -ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N -T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv -biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR -FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J -cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW -BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm -fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv -GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication EV RootCA1 -# Label: "Security Communication EV RootCA1" -# Serial: 0 -# MD5 Fingerprint: 22:2d:a6:01:ea:7c:0a:f7:f0:6c:56:43:3f:77:76:d3 -# SHA1 Fingerprint: fe:b8:c4:32:dc:f9:76:9a:ce:ae:3d:d8:90:8f:fd:28:86:65:64:7d -# SHA256 Fingerprint: a2:2d:ba:68:1e:97:37:6e:2d:39:7d:72:8a:ae:3a:9b:62:96:b9:fd:ba:60:bc:2e:11:f6:47:f2:c6:75:fb:37 ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GA CA O=WISeKey OU=Copyright (c) 2005/OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GA CA" -# Serial: 86718877871133159090080555911823548314 -# MD5 Fingerprint: bc:6c:51:33:a7:e9:d3:66:63:54:15:72:1b:21:92:93 -# SHA1 Fingerprint: 59:22:a1:e1:5a:ea:16:35:21:f8:98:39:6a:46:46:b0:44:1b:0f:a9 -# SHA256 Fingerprint: 41:c9:23:86:6a:b4:ca:d6:b7:ad:57:80:81:58:2e:02:07:97:a6:cb:df:4f:ff:78:ce:83:96:b3:89:37:d7:f5 ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCB -ijELMAkGA1UEBhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHly -aWdodCAoYykgMjAwNTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl -ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQTAeFw0w -NTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYDVQQGEwJDSDEQMA4G -A1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIwIAYD -VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBX -SVNlS2V5IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAy0+zAJs9Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxR -VVuuk+g3/ytr6dTqvirdqFEr12bDYVxgAsj1znJ7O7jyTmUIms2kahnBAbtzptf2 -w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbDd50kc3vkDIzh2TbhmYsF -mQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ/yxViJGg -4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t9 -4B3RLoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQw -EAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOx -SPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vImMMkQyh2I+3QZH4VFvbBsUfk2 -ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4+vg1YFkCExh8 -vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZi -Fj4A4xylNoEYokxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ -/L7fCg0= ------END CERTIFICATE----- - -# Issuer: CN=Certigna O=Dhimyotis -# Subject: CN=Certigna O=Dhimyotis -# Label: "Certigna" -# Serial: 18364802974209362175 -# MD5 Fingerprint: ab:57:a6:5b:7d:42:82:19:b5:d8:58:26:28:5e:fd:ff -# SHA1 Fingerprint: b1:2e:13:63:45:86:a4:6f:1a:b2:60:68:37:58:2d:c4:ac:fd:94:97 -# SHA256 Fingerprint: e3:b6:a2:db:2e:d7:ce:48:84:2f:7a:c5:32:41:c7:b7:1d:54:14:4b:fb:40:c1:1f:3f:1d:0b:42:f5:ee:a1:2d ------BEGIN CERTIFICATE----- -MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNV -BAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4X -DTA3MDYyOTE1MTMwNVoXDTI3MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQ -BgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwIQ2VydGlnbmEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7qXOEm7RFHYeGifBZ4 -QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyHGxny -gQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbw -zBfsV1/pogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q -130yGLMLLGq/jj8UEYkgDncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2 -JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKfIrjxwo1p3Po6WAbfAgMBAAGjgbwwgbkw -DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQtCRZvgHyUtVF9lo53BEw -ZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJBgNVBAYT -AkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzj -AQ/JSP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG -9w0BAQUFAAOCAQEAhQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8h -bV6lUmPOEvjvKtpv6zf+EwLHyzs+ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFnc -fca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1kluPBS1xp81HlDQwY9qcEQCYsuu -HWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY1gkIl2PlwS6w -t0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw -WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== ------END CERTIFICATE----- - -# Issuer: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center -# Subject: CN=Deutsche Telekom Root CA 2 O=Deutsche Telekom AG OU=T-TeleSec Trust Center -# Label: "Deutsche Telekom Root CA 2" -# Serial: 38 -# MD5 Fingerprint: 74:01:4a:91:b1:08:c4:58:ce:47:cd:f0:dd:11:53:08 -# SHA1 Fingerprint: 85:a4:08:c0:9c:19:3e:5d:51:58:7d:cd:d6:13:30:fd:8c:de:37:bf -# SHA256 Fingerprint: b6:19:1a:50:d0:c3:97:7f:7d:a9:9b:cd:aa:c8:6a:22:7d:ae:b9:67:9e:c7:0b:a3:b0:c9:d9:22:71:c1:70:d3 ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - -# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc -# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc -# Label: "Cybertrust Global Root" -# Serial: 4835703278459682877484360 -# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 -# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 -# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG -A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh -bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE -ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS -b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 -7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS -J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y -HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP -t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz -FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY -XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ -MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw -hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js -MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA -A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj -Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx -XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o -omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc -A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE----- - -# Issuer: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Subject: O=Chunghwa Telecom Co., Ltd. OU=ePKI Root Certification Authority -# Label: "ePKI Root Certification Authority" -# Serial: 28956088682735189655030529057352760477 -# MD5 Fingerprint: 1b:2e:00:ca:26:06:90:3d:ad:fe:6f:15:68:d3:6b:b3 -# SHA1 Fingerprint: 67:65:0d:f1:7e:8e:7e:5b:82:40:a4:f4:56:4b:cf:e2:3d:69:c6:f0 -# SHA256 Fingerprint: c0:a6:f4:dc:63:a2:4b:fd:cf:54:ef:2a:6a:08:2a:0a:72:de:35:80:3e:2f:f5:ff:52:7a:e5:d8:72:06:df:d5 ------BEGIN CERTIFICATE----- -MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBe -MQswCQYDVQQGEwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0 -ZC4xKjAoBgNVBAsMIWVQS0kgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMxMjdaMF4xCzAJBgNVBAYTAlRXMSMw -IQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEqMCgGA1UECwwhZVBL -SSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAH -SyZbCUNsIZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAh -ijHyl3SJCRImHJ7K2RKilTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3X -DZoTM1PRYfl61dd4s5oz9wCGzh1NlDivqOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1 -TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX12ruOzjjK9SXDrkb5wdJ -fzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0OWQqraffA -sgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uU -WH1+ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLS -nT0IFaUQAS2zMnaolQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pH -dmX2Os+PYhcZewoozRrSgx4hxyy/vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJip -NiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXiZo1jDiVN1Rmy5nk3pyKdVDEC -AwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/QkqiMAwGA1UdEwQF -MAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH -ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGB -uvl2ICO1J2B01GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6Yl -PwZpVnPDimZI+ymBV3QGypzqKOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkP -JXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdVxrsStZf0X4OFunHB2WyBEXYKCrC/ -gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEPNXubrjlpC2JgQCA2 -j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+rGNm6 -5ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUB -o2M3IUxExJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS -/jQ6fbjpKdx2qcgw+BRxgMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2z -Gp1iro2C6pSe3VkQw63d4k3jMdXH7OjysP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTE -W9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmODBCEIZ43ygknQW/2xzQ+D -hNQ+IIX3Sj0rnP0qCglN6oH4EZw= ------END CERTIFICATE----- - -# Issuer: CN=T\xdcB\u0130TAK UEKAE K\xf6k Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 - S\xfcr\xfcm 3 O=T\xfcrkiye Bilimsel ve Teknolojik Ara\u015ft\u0131rma Kurumu - T\xdcB\u0130TAK OU=Ulusal Elektronik ve Kriptoloji Ara\u015ft\u0131rma Enstit\xfcs\xfc - UEKAE/Kamu Sertifikasyon Merkezi -# Subject: CN=T\xdcB\u0130TAK UEKAE K\xf6k Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 - S\xfcr\xfcm 3 O=T\xfcrkiye Bilimsel ve Teknolojik Ara\u015ft\u0131rma Kurumu - T\xdcB\u0130TAK OU=Ulusal Elektronik ve Kriptoloji Ara\u015ft\u0131rma Enstit\xfcs\xfc - UEKAE/Kamu Sertifikasyon Merkezi -# Label: "T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3" -# Serial: 17 -# MD5 Fingerprint: ed:41:f5:8c:50:c5:2b:9c:73:e6:ee:6c:eb:c2:a8:26 -# SHA1 Fingerprint: 1b:4b:39:61:26:27:6b:64:91:a2:68:6d:d7:02:43:21:2d:1f:1d:96 -# SHA256 Fingerprint: e4:c7:34:30:d7:a5:b5:09:25:df:43:37:0a:0d:21:6e:9a:79:b9:d6:db:83:73:a0:c6:9e:b1:cc:31:c7:c5:2a ------BEGIN CERTIFICATE----- -MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRS -MRgwFgYDVQQHDA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJp -bGltc2VsIHZlIFRla25vbG9qaWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSw -VEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ryb25payB2ZSBLcmlwdG9sb2ppIEFy -YcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNVBAsMGkthbXUgU2Vy -dGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUgS8O2 -ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAe -Fw0wNzA4MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIx -GDAWBgNVBAcMD0dlYnplIC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmls -aW1zZWwgdmUgVGVrbm9sb2ppayBBcmHFn3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBU -QUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZlIEtyaXB0b2xvamkgQXJh -xZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2FtdSBTZXJ0 -aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7Zr -IFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4h -gb46ezzb8R1Sf1n68yJMlaCQvEhOEav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yK -O7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1xnnRFDDtG1hba+818qEhTsXO -fJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR6Oqeyjh1jmKw -lZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL -hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQID -AQABo0IwQDAdBgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmP -NOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4N5EY3ATIZJkrGG2AA1nJrvhY0D7t -wyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLTy9LQQfMmNkqblWwM -7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYhLBOh -gLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5n -oN+J1q2MdqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUs -yZyQ2uypQjyttgI= ------END CERTIFICATE----- - -# Issuer: O=certSIGN OU=certSIGN ROOT CA -# Subject: O=certSIGN OU=certSIGN ROOT CA -# Label: "certSIGN ROOT CA" -# Serial: 35210227249154 -# MD5 Fingerprint: 18:98:c0:d6:e9:3a:fc:f9:b0:f5:0c:f7:4b:01:44:17 -# SHA1 Fingerprint: fa:b7:ee:36:97:26:62:fb:2d:b0:2a:f6:bf:03:fd:e8:7c:4b:2f:9b -# SHA256 Fingerprint: ea:a9:62:c4:fa:4a:6b:af:eb:e4:15:19:6d:35:1c:cd:88:8d:4f:53:f3:fa:8a:e6:d7:c4:66:a9:4e:60:42:bb ------BEGIN CERTIFICATE----- -MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYT -AlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBD -QTAeFw0wNjA3MDQxNzIwMDRaFw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJP -MREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7IJUqOtdu0KBuqV5Do -0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHHrfAQ -UySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5d -RdY4zTW2ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQ -OA7+j0xbm0bqQfWwCHTD0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwv -JoIQ4uNllAoEwF73XVv4EOLQunpL+943AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08C -AwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAcYwHQYDVR0O -BBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IBAQA+0hyJ -LjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecY -MnQ8SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ -44gx+FkagQnIl6Z0x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6I -Jd1hJyMctTEHBDa0GpC9oHRxUIltvBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNw -i/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7NzTogVZ96edhBiIL5VaZVDADlN -9u6wWk5JRFRYX0KD ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only -# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only -# Label: "GeoTrust Primary Certification Authority - G3" -# Serial: 28809105769928564313984085209975885599 -# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 -# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd -# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB -mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT -MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv -cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ -BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 -BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz -+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm -hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn -5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W -JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL -DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC -huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB -AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB -zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN -kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH -SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G -spki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only -# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only -# Label: "thawte Primary Root CA - G2" -# Serial: 71758320672825410020661621085256472406 -# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f -# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 -# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp -IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi -BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw -MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig -YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v -dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ -BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 -papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K -DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 -KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox -XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only -# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only -# Label: "thawte Primary Root CA - G3" -# Serial: 127614157056681299805556476275995414779 -# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 -# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 -# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB -rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf -Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw -MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV -BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa -Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl -LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u -MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl -ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm -gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 -YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf -b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 -9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S -zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk -OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV -HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA -2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW -oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c -KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM -m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu -MdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only -# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only -# Label: "GeoTrust Primary Certification Authority - G2" -# Serial: 80682863203381065782177908751794619243 -# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a -# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 -# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL -MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj -KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 -MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV -BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw -NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV -BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL -So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal -tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG -CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT -qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz -rD6ogRLQy7rQkgu2npaqBA+K ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only -# Label: "VeriSign Universal Root Certification Authority" -# Serial: 85209574734084581917763752644031726877 -# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 -# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 -# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB -vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL -ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp -U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W -ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 -IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y -IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh -bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF -9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH -H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H -LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN -/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT -rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw -WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs -exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 -sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ -seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz -4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ -BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR -lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 -7M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only -# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only -# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" -# Serial: 63143484348153506665311985501458640051 -# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 -# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a -# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW -ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln -biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp -U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y -aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp -U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg -SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln -biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm -GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve -fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ -aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj -aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW -kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC -4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga -FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - -# Issuer: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) -# Subject: CN=NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny O=NetLock Kft. OU=Tan\xfas\xedtv\xe1nykiad\xf3k (Certification Services) -# Label: "NetLock Arany (Class Gold) F\u0151tan\xfas\xedtv\xe1ny" -# Serial: 80544274841616 -# MD5 Fingerprint: c5:a1:b7:ff:73:dd:d6:d7:34:32:18:df:fc:3c:ad:88 -# SHA1 Fingerprint: 06:08:3f:59:3f:15:a1:04:a0:69:a4:6b:a9:03:d0:06:b7:97:09:91 -# SHA256 Fingerprint: 6c:61:da:c3:a2:de:f0:31:50:6b:e0:36:d2:a6:fe:40:19:94:fb:d1:3d:f9:c8:d4:66:59:92:74:c4:46:ec:98 ------BEGIN CERTIFICATE----- -MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQG -EwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3 -MDUGA1UECwwuVGFuw7pzw610dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNl -cnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBBcmFueSAoQ2xhc3MgR29sZCkgRsWR -dGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgxMjA2MTUwODIxWjCB -pzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxOZXRM -b2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlm -aWNhdGlvbiBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNz -IEdvbGQpIEbFkXRhbsO6c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAxCRec75LbRTDofTjl5Bu0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrT -lF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw/HpYzY6b7cNGbIRwXdrz -AZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAkH3B5r9s5 -VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRG -ILdwfzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2 -BJtr+UBdADTHLpl1neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAG -AQH/AgEEMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2M -U9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwWqZw8UQCgwBEIBaeZ5m8BiFRh -bvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTtaYtOUZcTh5m2C -+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC -bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2F -uLjbvrW5KfnaNwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2 -XjG4Kvte9nHfRCaexOYNkbQudZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA - G2 O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA - G2" -# Serial: 10000012 -# MD5 Fingerprint: 7c:a5:0f:f8:5b:9a:7d:6d:30:ae:54:5a:e3:42:a2:8a -# SHA1 Fingerprint: 59:af:82:79:91:86:c7:b4:75:07:cb:cf:03:57:46:eb:04:dd:b7:16 -# SHA256 Fingerprint: 66:8c:83:94:7d:a6:3b:72:4b:ec:e1:74:3c:31:a0:e6:ae:d0:db:8e:c5:b3:1b:e3:77:bb:78:4f:91:b6:71:6f ------BEGIN CERTIFICATE----- -MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oX -DTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ5291 -qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8Sp -uOUfiUtnvWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPU -Z5uW6M7XxgpT0GtJlvOjCwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvE -pMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiile7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp -5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCROME4HYYEhLoaJXhena/M -UGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpICT0ugpTN -GmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy -5V6548r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv -6q012iDTiIJh8BIitrzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEK -eN5KzlW/HdXZt1bv8Hb/C3m1r737qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6 -B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMBAAGjgZcwgZQwDwYDVR0TAQH/ -BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcCARYxaHR0cDov -L3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqG -SIb3DQEBCwUAA4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLyS -CZa59sCrI2AGeYwRTlHSeYAz+51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen -5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwjf/ST7ZwaUb7dRUG/kSS0H4zpX897 -IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaNkqbG9AclVMwWVxJK -gnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfkCpYL -+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxL -vJxxcypFURmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkm -bEgeqmiSBeGCc1qb3AdbCG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvk -N1trSt8sV4pAWja63XVECDdCcAz+3F4hoKOKwJCcaNpQ5kUQR3i2TtJlycM33+FC -Y7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoVIPVVYpbtbZNQvOSqeK3Z -ywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm66+KAQ== ------END CERTIFICATE----- - -# Issuer: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Subject: CN=Hongkong Post Root CA 1 O=Hongkong Post -# Label: "Hongkong Post Root CA 1" -# Serial: 1000 -# MD5 Fingerprint: a8:0d:6f:39:78:b9:43:6d:77:42:6d:98:5a:cc:23:ca -# SHA1 Fingerprint: d6:da:a8:20:8d:09:d2:15:4d:24:b5:2f:cb:34:6e:b2:58:b2:8a:58 -# SHA256 Fingerprint: f9:e6:7d:33:6c:51:00:2a:c0:54:c6:32:02:2d:66:dd:a2:e7:e3:ff:f1:0a:d0:61:ed:31:d8:bb:b4:10:cf:b2 ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsx -FjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3Qg -Um9vdCBDQSAxMB4XDTAzMDUxNTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkG -A1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdr -b25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1ApzQ -jVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEn -PzlTCeqrauh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjh -ZY4bXSNmO7ilMlHIhqqhqZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9 -nnV0ttgCXjqQesBCNnLsak3c78QA3xMYV18meMjWCnl3v/evt3a5pQuEF10Q6m/h -q5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNVHRMBAf8ECDAGAQH/AgED -MA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7ih9legYsC -mEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI3 -7piol7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clB -oiMBdDhViw+5LmeiIAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJs -EhTkYY2sEJCehFC78JZvRZ+K88psT/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpO -fMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilTc4afU9hDDl3WY4JxHYB0yvbi -AmvZWg== ------END CERTIFICATE----- - -# Issuer: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Subject: CN=SecureSign RootCA11 O=Japan Certification Services, Inc. -# Label: "SecureSign RootCA11" -# Serial: 1 -# MD5 Fingerprint: b7:52:74:e2:92:b4:80:93:f2:75:e4:cc:d7:f2:ea:26 -# SHA1 Fingerprint: 3b:c4:9f:48:f8:f3:73:a0:9c:1e:bd:f8:5b:b1:c3:65:c7:d8:11:b3 -# SHA256 Fingerprint: bf:0f:ee:fb:9e:3a:58:1a:d5:f9:e9:db:75:89:98:57:43:d2:61:08:5c:4d:31:4f:6f:5d:72:59:aa:42:16:12 ------BEGIN CERTIFICATE----- -MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDEr -MCkGA1UEChMiSmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoG -A1UEAxMTU2VjdXJlU2lnbiBSb290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0 -MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSswKQYDVQQKEyJKYXBhbiBDZXJ0aWZp -Y2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1cmVTaWduIFJvb3RD -QTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvLTJsz -i1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8 -h9uuywGOwvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOV -MdrAG/LuYpmGYz+/3ZMqg6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9 -UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rPO7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni -8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitAbpSACW22s293bzUIUPsC -h8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZXt94wDgYD -VR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEB -AKChOBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xm -KbabfSVSSUOrTC4rbnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQ -X5Ucv+2rIrVls4W6ng+4reV6G4pQOh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWr -QbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01y8hSyn+B/tlr0/cR7SXf+Of5 -pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061lgeLKBObjBmN -QSdJQO7e5iNEOdyhIta6A/I= ------END CERTIFICATE----- - -# Issuer: CN=ACEDICOM Root O=EDICOM OU=PKI -# Subject: CN=ACEDICOM Root O=EDICOM OU=PKI -# Label: "ACEDICOM Root" -# Serial: 7029493972724711941 -# MD5 Fingerprint: 42:81:a0:e2:1c:e3:55:10:de:55:89:42:65:96:22:e6 -# SHA1 Fingerprint: e0:b4:32:2e:b2:f6:a5:68:b6:54:53:84:48:18:4a:50:36:87:43:84 -# SHA256 Fingerprint: 03:95:0f:b4:9a:53:1f:3e:19:91:94:23:98:df:a9:e0:ea:32:d7:ba:1c:dd:9b:c8:5d:b5:7e:d9:40:0b:43:4a ------BEGIN CERTIFICATE----- -MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UE -AwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00x -CzAJBgNVBAYTAkVTMB4XDTA4MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEW -MBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZF -RElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC -AgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHkWLn7 -09gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7 -XBZXehuDYAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5P -Grjm6gSSrj0RuVFCPYewMYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAK -t0SdE3QrwqXrIhWYENiLxQSfHY9g5QYbm8+5eaA9oiM/Qj9r+hwDezCNzmzAv+Yb -X79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbkHQl/Sog4P75n/TSW9R28 -MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTTxKJxqvQU -fecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI -2Sf23EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyH -K9caUPgn6C9D4zq92Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEae -ZAwUswdbxcJzbPEHXEUkFDWug/FqTYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAP -BgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz4SsrSbbXc6GqlPUB53NlTKxQ -MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU9QHnc2VMrFAw -RAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv -bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWIm -fQwng4/F9tqgaHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3 -gvoFNTPhNahXwOf9jU8/kzJPeGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKe -I6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1PwkzQSulgUV1qzOMPPKC8W64iLgpq0i -5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1ThCojz2GuHURwCRi -ipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oIKiMn -MCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZ -o5NjEFIqnxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6 -zqylfDJKZ0DcMDQj3dcEI2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacN -GHk0vFQYXlPKNFHtRQrmjseCNj6nOGOpMCwXEGCSn1WHElkQwg9naRHMTh5+Spqt -r0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3otkYNbn5XOmeUwssfnHdK -Z05phkOTOPu220+DkdRgfks+KzgHVZhepA== ------END CERTIFICATE----- - -# Issuer: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Subject: CN=Microsec e-Szigno Root CA 2009 O=Microsec Ltd. -# Label: "Microsec e-Szigno Root CA 2009" -# Serial: 14014712776195784473 -# MD5 Fingerprint: f8:49:f4:03:bc:44:2d:83:be:48:69:7d:29:64:fc:b1 -# SHA1 Fingerprint: 89:df:74:fe:5c:f4:0f:4a:80:f9:e3:37:7d:54:da:91:e1:01:31:8e -# SHA256 Fingerprint: 3c:5f:81:fe:a5:fa:b8:2c:64:bf:a2:ea:ec:af:cd:e8:e0:77:fc:86:20:a7:ca:e5:37:16:3d:f3:6e:db:f3:78 ------BEGIN CERTIFICATE----- -MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD -VQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0 -ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0G -CSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTAeFw0wOTA2MTYxMTMwMThaFw0y -OTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UEBwwIQnVkYXBlc3Qx -FjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUtU3pp -Z25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o -dTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvP -kd6mJviZpWNwrZuuyjNAfW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tc -cbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG0IMZfcChEhyVbUr02MelTTMuhTlAdX4U -fIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKApxn1ntxVUwOXewdI/5n7 -N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm1HxdrtbC -xkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1 -+rUCAwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G -A1UdDgQWBBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPM -Pcu1SCOhGnqmKrs0aDAbBgNVHREEFDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqG -SIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0olZMEyL/azXm4Q5DwpL7v8u8h -mLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfXI/OMn74dseGk -ddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 -tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c -2Pm2G2JwCz02yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5t -HMN1Rq41Bab2XD0h7lbwyYIiLXpUq3DDfSJlgnCW ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 -# Label: "GlobalSign Root CA - R3" -# Serial: 4835703278459759426209954 -# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 -# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad -# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b ------BEGIN CERTIFICATE----- -MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 -MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 -RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT -gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm -KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd -QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ -XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw -DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o -LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU -RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp -jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK -6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX -mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs -Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH -WD9f ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Subject: CN=Autoridad de Certificacion Firmaprofesional CIF A62634068 -# Label: "Autoridad de Certificacion Firmaprofesional CIF A62634068" -# Serial: 6047274297262753887 -# MD5 Fingerprint: 73:3a:74:7a:ec:bb:a3:96:a6:c2:e4:e2:c8:9b:c0:c3 -# SHA1 Fingerprint: ae:c5:fb:3f:c8:e1:bf:c4:e5:4f:03:07:5a:9a:e8:00:b7:f7:b6:fa -# SHA256 Fingerprint: 04:04:80:28:bf:1f:28:64:d4:8f:9a:d4:d8:32:94:36:6a:82:88:56:55:3f:3b:14:30:3f:90:14:7f:5d:40:ef ------BEGIN CERTIFICATE----- -MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UE -BhMCRVMxQjBABgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1h -cHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEy -MzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIwQAYDVQQDDDlBdXRvcmlkYWQgZGUg -Q2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDDUtd9 -thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQM -cas9UX4PB99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefG -L9ItWY16Ck6WaVICqjaY7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15i -NA9wBj4gGFrO93IbJWyTdBSTo3OxDqqHECNZXyAFGUftaI6SEspd/NYrspI8IM/h -X68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyIplD9amML9ZMWGxmPsu2b -m8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctXMbScyJCy -Z/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirja -EbsXLZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/T -KI8xWVvTyQKmtFLKbpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF -6NkBiDkal4ZkQdU7hwxu+g/GvUgUvzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVh -OSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNHDhpkLzCBpgYD -VR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp -cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBv -ACAAZABlACAAbABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBl -AGwAbwBuAGEAIAAwADgAMAAxADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF -661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx51tkljYyGOylMnfX40S2wBEqgLk9 -am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qkR71kMrv2JYSiJ0L1 -ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaPT481 -PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS -3a/DTg4fJl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5k -SeTy36LssUzAKh3ntLFlosS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF -3dvd6qJ2gHN99ZwExEWN57kci57q13XRcrHedUTnQn3iV2t93Jm8PYMo6oCTjcVM -ZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoRsaS8I8nkvof/uZS2+F0g -StRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTDKCOM/icz -Q0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQB -jLMi6Et8Vcad+qMUu2WFbm5PEn4KPJ2V ------END CERTIFICATE----- - -# Issuer: CN=Izenpe.com O=IZENPE S.A. -# Subject: CN=Izenpe.com O=IZENPE S.A. -# Label: "Izenpe.com" -# Serial: 917563065490389241595536686991402621 -# MD5 Fingerprint: a6:b0:cd:85:80:da:5c:50:34:a3:39:90:2f:55:67:73 -# SHA1 Fingerprint: 2f:78:3d:25:52:18:a7:4a:65:39:71:b5:2c:a2:9c:45:15:6f:e9:19 -# SHA256 Fingerprint: 25:30:cc:8e:98:32:15:02:ba:d9:6f:9b:1f:ba:1b:09:9e:2d:29:9e:0f:45:48:bb:91:4f:36:3b:c0:d4:53:1f ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. -# Subject: CN=Chambers of Commerce Root - 2008 O=AC Camerfirma S.A. -# Label: "Chambers of Commerce Root - 2008" -# Serial: 11806822484801597146 -# MD5 Fingerprint: 5e:80:9e:84:5a:0e:65:0b:17:02:f3:55:18:2a:3e:d7 -# SHA1 Fingerprint: 78:6a:74:ac:76:ab:14:7f:9c:6a:30:50:ba:9e:a8:7e:fe:9a:ce:3c -# SHA256 Fingerprint: 06:3e:4a:fa:c4:91:df:d3:32:f3:08:9b:85:42:e9:46:17:d8:93:d7:fe:94:4e:10:a7:93:7e:e2:9d:96:93:c0 ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- - -# Issuer: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. -# Subject: CN=Global Chambersign Root - 2008 O=AC Camerfirma S.A. -# Label: "Global Chambersign Root - 2008" -# Serial: 14541511773111788494 -# MD5 Fingerprint: 9e:80:ff:78:01:0c:2e:c1:36:bd:fe:96:90:6e:08:f3 -# SHA1 Fingerprint: 4a:bd:ee:ec:95:0d:35:9c:89:ae:c7:52:a1:2c:5b:29:f6:d6:aa:0c -# SHA256 Fingerprint: 13:63:35:43:93:34:a7:69:80:16:a0:d3:24:de:72:28:4e:07:9d:7b:52:20:bb:8f:bd:74:78:16:ee:be:ba:ca ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - -# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. -# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. -# Label: "Go Daddy Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 -# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b -# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT -EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp -ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz -NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH -EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE -AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw -DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD -E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH -/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy -DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh -GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR -tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA -AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE -FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX -WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu -9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr -gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo -2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO -LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI -4uJEvlz36hz1 ------END CERTIFICATE----- - -# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Label: "Starfield Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 -# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e -# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs -ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw -MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 -b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj -aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp -Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg -nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 -HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N -Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN -dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 -HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G -CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU -sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 -4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg -8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K -pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 -mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 ------END CERTIFICATE----- - -# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. -# Label: "Starfield Services Root Certificate Authority - G2" -# Serial: 0 -# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 -# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f -# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 ------BEGIN CERTIFICATE----- -MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx -EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT -HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs -ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 -MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD -VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy -ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy -dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p -OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 -8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K -Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe -hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk -6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw -DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q -AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI -bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB -ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z -qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd -iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn -0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN -sSi6 ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Commercial O=AffirmTrust -# Subject: CN=AffirmTrust Commercial O=AffirmTrust -# Label: "AffirmTrust Commercial" -# Serial: 8608355977964138876 -# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 -# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 -# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP -Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr -ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL -MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 -yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr -VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ -nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG -XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj -vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt -Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g -N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC -nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Networking O=AffirmTrust -# Subject: CN=AffirmTrust Networking O=AffirmTrust -# Label: "AffirmTrust Networking" -# Serial: 8957382827206547757 -# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f -# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f -# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b ------BEGIN CERTIFICATE----- -MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz -dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL -MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp -cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y -YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua -kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL -QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp -6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG -yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i -QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ -KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO -tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu -QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ -Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u -olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 -x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Premium O=AffirmTrust -# Subject: CN=AffirmTrust Premium O=AffirmTrust -# Label: "AffirmTrust Premium" -# Serial: 7893706540734352110 -# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 -# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 -# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a ------BEGIN CERTIFICATE----- -MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE -BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz -dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG -A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U -cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf -qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ -JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ -+jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS -s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 -HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 -70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG -V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S -qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S -5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia -C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX -OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE -FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 -KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg -Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B -8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ -MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc -0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ -u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF -u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH -YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 -GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO -RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e -KeC2uAloGRwYQw== ------END CERTIFICATE----- - -# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust -# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust -# Label: "AffirmTrust Premium ECC" -# Serial: 8401224907861490260 -# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d -# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb -# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 ------BEGIN CERTIFICATE----- -MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC -VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ -cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ -BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt -VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D -0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 -ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G -A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G -A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs -aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I -flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA" -# Serial: 279744 -# MD5 Fingerprint: d5:e9:81:40:c5:18:69:fc:46:2c:89:75:62:0f:aa:78 -# SHA1 Fingerprint: 07:e0:32:e0:20:b7:2c:3f:19:2f:06:28:a2:59:3a:19:a7:0f:06:9e -# SHA256 Fingerprint: 5c:58:46:8d:55:f5:8e:49:7e:74:39:82:d2:b5:00:10:b6:d1:65:37:4a:cf:83:a7:d4:a3:2d:b7:68:c4:40:8e ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- - -# Issuer: CN=Certinomis - Autorit\xe9 Racine O=Certinomis OU=0002 433998903 -# Subject: CN=Certinomis - Autorit\xe9 Racine O=Certinomis OU=0002 433998903 -# Label: "Certinomis - Autorit\xe9 Racine" -# Serial: 1 -# MD5 Fingerprint: 7f:30:78:8c:03:e3:ca:c9:0a:e2:c9:ea:1e:aa:55:1a -# SHA1 Fingerprint: 2e:14:da:ec:28:f0:fa:1e:8e:38:9a:4e:ab:eb:26:c0:0a:d3:83:c3 -# SHA256 Fingerprint: fc:bf:e2:88:62:06:f7:2b:27:59:3c:8b:07:02:97:e1:2d:76:9e:d1:0e:d7:93:07:05:a8:09:8e:ff:c1:4d:17 ------BEGIN CERTIFICATE----- -MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAk -BgNVBAMMHUNlcnRpbm9taXMgLSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4 -Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNl -cnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYwJAYDVQQDDB1DZXJ0 -aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jY -F1AMnmHawE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N -8y4oH3DfVS9O7cdxbwlyLu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWe -rP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K -/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92NjMD2AR5vpTESOH2VwnHu -7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9qc1pkIuVC -28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6 -lSTClrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1E -nn1So2+WLhl+HPNbxxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB -0iSVL1N6aaLwD4ZFjliCK0wi1F6g530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql09 -5gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna4NH4+ej9Uji29YnfAgMBAAGj -WzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBQN -jLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ -KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9s -ov3/4gbIOZ/xWqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZM -OH8oMDX/nyNTt7buFHAAQCvaR6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q -619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40nJ+U8/aGH88bc62UeYdocMMzpXDn -2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1BCxMjidPJC+iKunqj -o3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjvJL1v -nxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG -5ERQL1TEqkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWq -pdEdnV1j6CTmNhTih60bWfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZb -dsLLO7XSAPCjDuGtbkD326C00EauFddEwk01+dIL8hf2rGbVJLJP0RyZwG71fet0 -BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/vgt2Fl43N+bYdJeimUV5 ------END CERTIFICATE----- - -# Issuer: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Root Certification Authority O=TAIWAN-CA OU=Root CA -# Label: "TWCA Root Certification Authority" -# Serial: 1 -# MD5 Fingerprint: aa:08:8f:f6:f9:7b:b7:f2:b1:a7:1e:9b:ea:ea:bd:79 -# SHA1 Fingerprint: cf:9e:87:6d:d3:eb:fc:42:26:97:a3:b5:a3:7a:a0:76:a9:06:23:48 -# SHA256 Fingerprint: bf:d8:8f:e1:10:1c:41:ae:3e:80:1b:f8:be:56:35:0e:e9:ba:d1:a6:b9:bd:51:5e:dc:5c:6d:5b:87:11:ac:44 ------BEGIN CERTIFICATE----- -MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzES -MBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFU -V0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMz -WhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJVEFJV0FO -LUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB -AQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFE -AcK0HMMxQhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HH -K3XLfJ+utdGdIzdjp9xCoi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeX -RfwZVzsrb+RH9JlF/h3x+JejiB03HFyP4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/z -rX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1ry+UPizgN7gr8/g+YnzAx -3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkq -hkiG9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeC -MErJk/9q56YAf4lCmtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdls -XebQ79NqZp4VKIV66IIArB6nCWlWQtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62D -lhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVYT0bf+215WfKEIlKuD8z7fDvn -aspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocnyYh0igzyXxfkZ -YiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== ------END CERTIFICATE----- - -# Issuer: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Subject: O=SECOM Trust Systems CO.,LTD. OU=Security Communication RootCA2 -# Label: "Security Communication RootCA2" -# Serial: 0 -# MD5 Fingerprint: 6c:39:7d:a4:0e:55:59:b2:3f:d6:41:b1:12:50:de:43 -# SHA1 Fingerprint: 5f:3b:8c:f2:f8:10:b3:7d:78:b4:ce:ec:19:19:c3:73:34:b9:c7:74 -# SHA256 Fingerprint: 51:3b:2c:ec:b8:10:d4:cd:e5:dd:85:39:1a:df:c6:c2:dd:60:d8:7b:b7:36:d2:b5:21:48:4a:a4:7a:0e:be:f6 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMe -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoX -DTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRy -dXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3VyaXR5IENvbW11bmlj -YXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAV -OVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGr -zbl+dp+++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVM -VAX3NuRFg3sUZdbcDE3R3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQ -hNBqyjoGADdH5H5XTz+L62e4iKrFvlNVspHEfbmwhRkGeC7bYRr6hfVKkaHnFtWO -ojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1KEOtOghY6rCcMU/Gt1SSw -awNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8QIH4D5cs -OPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 -DQEBCwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpF -coJxDjrSzG+ntKEju/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXc -okgfGT+Ok+vx+hfuzU7jBBJV1uXk3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8 -t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6qtnRGEmyR7jTV7JqR50S+kDFy -1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29mvVXIwAHIRc/ -SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2011 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions RootCA 2011" -# Serial: 0 -# MD5 Fingerprint: 73:9f:4c:4b:73:5b:79:e9:fa:ba:1c:ef:6e:cb:d5:c9 -# SHA1 Fingerprint: fe:45:65:9b:79:03:5b:98:a1:61:b5:51:2e:ac:da:58:09:48:22:4d -# SHA256 Fingerprint: bc:10:4f:15:a4:8b:e7:09:dc:a5:42:a7:e1:d4:b9:df:6f:05:45:27:e8:02:ea:a9:2d:59:54:44:25:8a:fe:71 ------BEGIN CERTIFICATE----- -MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1Ix -RDBCBgNVBAoTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1p -YyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExMB4XDTExMTIw -NjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYTAkdSMUQwQgYDVQQK -EztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIENl -cnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPz -dYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJ -fel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa71HFK9+WXesyHgLacEns -bgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u8yBRQlqD -75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSP -FEDH3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNV -HRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp -5dgTBCPuQSUwRwYDVR0eBEAwPqA8MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQu -b3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQub3JnMA0GCSqGSIb3DQEBBQUA -A4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVtXdMiKahsog2p -6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 -TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7 -dIsXRSZMFpGD/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8Acys -Nnq/onN694/BtZqhFLKPM58N7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXI -l7WdmplNsDz4SgCbZN2fOUvRJ9e4 ------END CERTIFICATE----- - -# Issuer: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Subject: CN=Actalis Authentication Root CA O=Actalis S.p.A./03358520967 -# Label: "Actalis Authentication Root CA" -# Serial: 6271844772424770508 -# MD5 Fingerprint: 69:c1:0d:4f:07:a3:1b:c3:fe:56:3d:04:bc:11:f6:a6 -# SHA1 Fingerprint: f3:73:b3:87:06:5a:28:84:8a:f2:f3:4a:ce:19:2b:dd:c7:8e:9c:ac -# SHA256 Fingerprint: 55:92:60:84:ec:96:3a:64:b9:6e:2a:be:01:ce:0b:a8:6a:64:fb:fe:bc:c7:aa:b5:af:c1:55:b3:7f:d7:60:66 ------BEGIN CERTIFICATE----- -MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UE -BhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8w -MzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 -IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDkyMjExMjIwMlowazELMAkGA1UEBhMC -SVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1 -ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENB -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNv -UTufClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX -4ay8IMKx4INRimlNAJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9 -KK3giq0itFZljoZUj5NDKd45RnijMCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/ -gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1fYVEiVRvjRuPjPdA1Yprb -rxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2oxgkg4YQ -51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2F -be8lEfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxe -KF+w6D9Fz8+vm2/7hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4F -v6MGn8i1zeQf1xcGDXqVdFUNaBr8EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbn -fpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5jF66CyCU3nuDuP/jVo23Eek7 -jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLYiDrIn3hm7Ynz -ezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt -ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAL -e3KHwGCmSUyIWOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70 -jsNjLiNmsGe+b7bAEzlgqqI0JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDz -WochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKxK3JCaKygvU5a2hi/a5iB0P2avl4V -SM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+Xlff1ANATIGk0k9j -pwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC4yyX -X04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+Ok -fcvHlXHo2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7R -K4X9p2jIugErsWx0Hbhzlefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btU -ZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXemOR/qnuOf0GZvBeyqdn6/axag67XH/JJU -LysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9vwGYT7JZVEc+NHt4bVaT -LnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== ------END CERTIFICATE----- - -# Issuer: O=Trustis Limited OU=Trustis FPS Root CA -# Subject: O=Trustis Limited OU=Trustis FPS Root CA -# Label: "Trustis FPS Root CA" -# Serial: 36053640375399034304724988975563710553 -# MD5 Fingerprint: 30:c9:e7:1e:6b:e6:14:eb:65:b2:16:69:20:31:67:4d -# SHA1 Fingerprint: 3b:c0:38:0b:33:c3:f6:a6:0c:86:15:22:93:d9:df:f5:4b:81:c0:04 -# SHA256 Fingerprint: c1:b4:82:99:ab:a5:20:8f:e9:63:0a:ce:55:ca:68:a0:3e:da:5a:51:9c:88:02:a0:d3:a6:73:be:8f:8e:55:7d ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBF -MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQL -ExNUcnVzdGlzIEZQUyBSb290IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTEx -MzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1RydXN0aXMgTGltaXRlZDEc -MBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQRUN+ -AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihH -iTHcDnlkH5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjj -vSkCqPoc4Vu5g6hBSLwacY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA -0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zto3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlB -OrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEAAaNTMFEwDwYDVR0TAQH/ -BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAdBgNVHQ4E -FgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01 -GX2cGE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmW -zaD+vkAMXBJV+JOCyinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP4 -1BIy+Q7DsdwyhEQsb8tGD+pmQQ9P8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZE -f1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHVl/9D7S3B2l0pKoU/rGXuhg8F -jZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYliB6XzCGcKQEN -ZetX2fNXlrtIzYE= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing -# Label: "StartCom Certification Authority" -# Serial: 45 -# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 -# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 -# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 ------BEGIN CERTIFICATE----- -MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg -Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 -MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi -U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh -cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk -pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf -OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C -Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT -Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi -HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM -Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w -+2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ -Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 -Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B -26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID -AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD -VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul -F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC -ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w -ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk -aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 -YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg -c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 -aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 -d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG -CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF -wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS -Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst -0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc -pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl -CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF -P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK -1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm -KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE -JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ -8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm -fyWl8kgAwKQB2j8= ------END CERTIFICATE----- - -# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. -# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. -# Label: "StartCom Certification Authority G2" -# Serial: 59 -# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 -# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 -# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 ------BEGIN CERTIFICATE----- -MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW -MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 -OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG -A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ -JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD -vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo -D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ -Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW -RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK -HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN -nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM -0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i -UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 -Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg -TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE -AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL -BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K -2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX -UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl -6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK -9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ -HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI -wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY -XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l -IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo -hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr -so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 2 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 2 Root CA" -# Serial: 2 -# MD5 Fingerprint: 46:a7:d2:fe:45:fb:64:5a:a8:59:90:9b:78:44:9b:29 -# SHA1 Fingerprint: 49:0a:75:74:de:87:0a:47:fe:58:ee:f6:c7:6b:eb:c6:0b:12:40:99 -# SHA256 Fingerprint: 9a:11:40:25:19:7c:5b:b9:5d:94:e6:3d:55:cd:43:79:08:47:b6:46:b2:3c:df:11:ad:a4:a0:0e:ff:15:fb:48 ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMiBSb290IENBMB4XDTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1ow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1g1Lr -6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPV -L4O2fuPn9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC91 -1K2GScuVr1QGbNgGE41b/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHx -MlAQTn/0hpPshNOOvEu/XAFOBz3cFIqUCqTqc/sLUegTBxj6DvEr0VQVfTzh97QZ -QmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeffawrbD02TTqigzXsu8lkB -arcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgIzRFo1clr -Us3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLi -FRhnBkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRS -P/TizPJhk9H9Z2vXUq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN -9SG9dKpN6nIDSdvHXx1iY8f93ZHsM+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxP -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMmAd+BikoL1Rpzz -uvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAU18h -9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s -A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3t -OluwlN5E40EIosHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo -+fsicdl9sz1Gv7SEr5AcD48Saq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7 -KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYdDnkM/crqJIByw5c/8nerQyIKx+u2 -DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWDLfJ6v9r9jv6ly0Us -H8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0oyLQ -I+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK7 -5t98biGCwWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h -3PFaTWwyI0PurKju7koSCTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPz -Y11aWOIv4x3kqdbQCtCev9eBCfHJxyYNrJgWVqA= ------END CERTIFICATE----- - -# Issuer: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Subject: CN=Buypass Class 3 Root CA O=Buypass AS-983163327 -# Label: "Buypass Class 3 Root CA" -# Serial: 2 -# MD5 Fingerprint: 3d:3b:18:9e:2c:64:5a:e8:d5:88:ce:0e:f9:37:c2:ec -# SHA1 Fingerprint: da:fa:f7:fa:66:84:ec:06:8f:14:50:bd:c7:c2:81:a5:bc:a9:64:57 -# SHA256 Fingerprint: ed:f7:eb:bc:a2:7a:2a:38:4d:38:7b:7d:40:10:c6:66:e2:ed:b4:84:3e:4c:29:b4:ae:1d:5b:93:32:e6:b2:4d ------BEGIN CERTIFICATE----- -MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEd -MBsGA1UECgwUQnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3Mg -Q2xhc3MgMyBSb290IENBMB4XDTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFow -TjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSAw -HgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEB -BQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRHsJ8Y -ZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3E -N3coTRiR5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9 -tznDDgFHmV0ST9tD+leh7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX -0DJq1l1sDPGzbjniazEuOQAnFN44wOwZZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c -/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH2xc519woe2v1n/MuwU8X -KhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV/afmiSTY -zIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvS -O1UQRwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D -34xFMFbG02SrZvPAXpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgP -K9Dx2hzLabjKSWJtyNBjYt1gD1iqj6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3 -AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFEe4zf/lb+74suwv -Tg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAACAj -QTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV -cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXS -IGrs/CIBKM+GuIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2 -HJLw5QY33KbmkJs4j1xrG0aGQ0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsa -O5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8ZORK15FTAaggiG6cX0S5y2CBNOxv -033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2KSb12tjE8nVhz36u -dmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz6MkE -kbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg41 -3OEMXbugUZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvD -u79leNKGef9JOxqDDPDeeOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq -4/g7u9xN12TyUb7mqqta6THuBrxzvxNiCp/HuZc= ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 3 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 3" -# Serial: 1 -# MD5 Fingerprint: ca:fb:40:a8:4e:39:92:8a:1d:fe:8e:2f:c4:27:ea:ef -# SHA1 Fingerprint: 55:a6:72:3e:cb:f2:ec:cd:c3:23:74:70:19:9d:2a:be:11:e3:81:d1 -# SHA256 Fingerprint: fd:73:da:d3:1c:64:4f:f1:b4:3b:ef:0c:cd:da:96:71:0b:9c:d9:87:5e:ca:7e:31:70:7a:f3:e9:6d:52:2b:bd ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- - -# Issuer: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus -# Subject: CN=EE Certification Centre Root CA O=AS Sertifitseerimiskeskus -# Label: "EE Certification Centre Root CA" -# Serial: 112324828676200291871926431888494945866 -# MD5 Fingerprint: 43:5e:88:d4:7d:1a:4a:7e:fd:84:2e:52:eb:01:d4:6f -# SHA1 Fingerprint: c9:a8:b9:e7:55:80:5e:58:e3:53:77:a7:25:eb:af:c3:7b:27:cc:d7 -# SHA256 Fingerprint: 3e:84:ba:43:42:90:85:16:e7:75:73:c0:99:2f:09:79:ca:08:4e:46:85:68:1f:f1:95:cc:ba:8a:22:9b:8a:76 ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1 -MQswCQYDVQQGEwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1 -czEoMCYGA1UEAwwfRUUgQ2VydGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYG -CSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIwMTAxMDMwMTAxMDMwWhgPMjAzMDEy -MTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlBUyBTZXJ0aWZpdHNl -ZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRyZSBS -b290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUy -euuOF0+W2Ap7kaJjbMeMTC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvO -bntl8jixwKIy72KyaOBhU8E2lf/slLo2rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIw -WFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw93X2PaRka9ZP585ArQ/d -MtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtNP2MbRMNE -1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/ -zQas8fElyalL1BSZMEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYB -BQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEF -BQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+RjxY6hUFaTlrg4wCQiZrxTFGGV -v9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqMlIpPnTX/dqQG -E5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIW -iAYLtqZLICjU3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/v -GVCJYMzpJJUPwssd8m92kMfMdcGWxZ0= ------END CERTIFICATE----- - -# Issuer: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. (c) Aral\u0131k 2007 -# Subject: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. (c) Aral\u0131k 2007 -# Label: "TURKTRUST Certificate Services Provider Root 2007" -# Serial: 1 -# MD5 Fingerprint: 2b:70:20:56:86:82:a0:18:c8:07:53:12:28:70:21:72 -# SHA1 Fingerprint: f1:7f:6f:b6:31:dc:99:e3:a3:c8:7f:fe:1c:f1:81:10:88:d9:60:33 -# SHA256 Fingerprint: 97:8c:d9:66:f2:fa:a0:7b:a7:aa:95:00:d9:c0:2e:9d:77:f2:cd:ad:a6:ad:6b:a7:4a:f4:b9:1c:66:59:3c:50 ------BEGIN CERTIFICATE----- -MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOc -UktUUlVTVCBFbGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sx -c8SxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xS -S1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kg -SGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4XDTA3MTIyNTE4Mzcx -OVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxla3Ry -b25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMC -VFIxDzANBgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDE -sGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7F -ni4gKGMpIEFyYWzEsWsgMjAwNzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9NYvDdE3ePYakqtdTyuTFY -KTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQvKUmi8wUG -+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveG -HtyaKhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6P -IzdezKKqdfcYbwnTrqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M -733WB2+Y8a+xwXrXgTW4qhe04MsCAwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHk -Yb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/sPx+EnWVUXKgW -AkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I -aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5 -mxRZNTZPz/OOXl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsa -XRik7r4EW5nVcV9VZWRi1aKbBFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZ -qxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAKpoRq0Tl9 ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 2009" -# Serial: 623603 -# MD5 Fingerprint: cd:e0:25:69:8d:47:ac:9c:89:35:90:f7:fd:51:3d:2f -# SHA1 Fingerprint: 58:e8:ab:b0:36:15:33:fb:80:f7:9b:1b:6d:29:d3:ff:8d:5f:00:f0 -# SHA256 Fingerprint: 49:e7:a4:42:ac:f0:ea:62:87:05:00:54:b5:25:64:b6:50:e4:f4:9e:42:e3:48:d6:aa:38:e0:39:e9:57:b1:c1 ------BEGIN CERTIFICATE----- -MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgMjAwOTAeFw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NTha -ME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxJzAlBgNVBAMM -HkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOADER03 -UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42 -tSHKXzlABF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9R -ySPocq60vFYJfxLLHLGvKZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsM -lFqVlNpQmvH/pStmMaTJOKDfHR+4CS7zp+hnUquVH+BGPtikw8paxTGA6Eian5Rp -/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUCAwEAAaOCARowggEWMA8G -A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ4PGEMA4G -A1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVj -dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUy -MENBJTIwMiUyMDIwMDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRl -cmV2b2NhdGlvbmxpc3QwQ6BBoD+GPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3Js -L2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAwOS5jcmwwDQYJKoZIhvcNAQEL -BQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm2H6NMLVwMeni -acfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 -o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4K -zCUqNQT4YJEVdT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8 -PIWmawomDeCTmGCufsYkl4phX5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3Y -Johw1+qRzT65ysCQblrGXnRl11z+o+I= ------END CERTIFICATE----- - -# Issuer: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Subject: CN=D-TRUST Root Class 3 CA 2 EV 2009 O=D-Trust GmbH -# Label: "D-TRUST Root Class 3 CA 2 EV 2009" -# Serial: 623604 -# MD5 Fingerprint: aa:c6:43:2c:5e:2d:cd:c4:34:c0:50:4f:11:02:4f:b6 -# SHA1 Fingerprint: 96:c9:1b:0b:95:b4:10:98:42:fa:d0:d8:22:79:fe:60:fa:b9:16:83 -# SHA256 Fingerprint: ee:c5:49:6b:98:8c:e9:86:25:b9:34:09:2e:ec:29:08:be:d0:b0:f3:16:c2:d4:73:0c:84:ea:f1:f3:d3:48:81 ------BEGIN CERTIFICATE----- -MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRF -MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBD -bGFzcyAzIENBIDIgRVYgMjAwOTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUw -NDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxELVRydXN0IEdtYkgxKjAoBgNV -BAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAwOTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfSegpn -ljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM0 -3TP1YtHhzRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6Z -qQTMFexgaDbtCHu39b+T7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lR -p75mpoo6Kr3HGrHhFPC+Oh25z1uxav60sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8 -HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure3511H3a6UCAwEAAaOCASQw -ggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyvcop9Ntea -HNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFw -Oi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xh -c3MlMjAzJTIwQ0ElMjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1E -RT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0MEagRKBChkBodHRwOi8vd3d3LmQt -dHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xhc3NfM19jYV8yX2V2XzIwMDku -Y3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+PPoeUSbrh/Yp -3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 -nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNF -CSuGdXzfX2lXANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7na -xpeG0ILD5EJt/rDiZE4OJudANCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqX -KVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVvw9y4AyHqnxbxLFS1 ------END CERTIFICATE----- - -# Issuer: CN=Autoridad de Certificacion Raiz del Estado Venezolano O=Sistema Nacional de Certificacion Electronica OU=Superintendencia de Servicios de Certificacion Electronica -# Subject: CN=PSCProcert O=Sistema Nacional de Certificacion Electronica OU=Proveedor de Certificados PROCERT -# Label: "PSCProcert" -# Serial: 11 -# MD5 Fingerprint: e6:24:e9:12:01:ae:0c:de:8e:85:c4:ce:a3:12:dd:ec -# SHA1 Fingerprint: 70:c1:8d:74:b4:28:81:0a:e4:fd:a5:75:d7:01:9f:99:b0:3d:50:74 -# SHA256 Fingerprint: 3c:fc:3c:14:d1:f6:84:ff:17:e3:8c:43:ca:44:0c:00:b9:67:ec:93:3e:8b:fe:06:4c:a1:d7:2c:90:f2:ad:b0 ------BEGIN CERTIFICATE----- -MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1 -dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9s -YW5vMQswCQYDVQQGEwJWRTEQMA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlz -dHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0 -aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBlcmludGVuZGVuY2lh -IGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUwIwYJ -KoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEw -MFoXDTIwMTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHBy -b2NlcnQubmV0LnZlMQ8wDQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGEx -KjAoBgNVBAsTIVByb3ZlZWRvciBkZSBDZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQG -A1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9u -aWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo9 -7BVCwfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74 -BCXfgI8Qhd19L3uA3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38G -ieU89RLAu9MLmV+QfI4tL3czkkohRqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9 -JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmOEO8GqQKJ/+MMbpfg353bIdD0 -PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG20qCZyFSTXai2 -0b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH -0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/ -6mnbVSKVUyqUtd+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1m -v6JpIzi4mWCZDlZTOpx+FIywBm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7 -K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvpr2uKGcfLFFb14dq12fy/czja+eev -bqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/AgEBMDcGA1UdEgQw -MC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAzNi0w -MB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFD -gBStuyIdxuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0 -b3JpZGFkIGRlIENlcnRpZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xh -bm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0 -cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5hY2lvbmFsIGRlIENlcnRp -ZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5kZW5jaWEg -ZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkq -hkiG9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQD -AgEGME0GA1UdEQRGMESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0w -MDAwMDKgGwYFYIZeAgKgEgwQUklGLUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEag -RKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9sY3IvQ0VSVElGSUNBRE8t -UkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNyYWl6LnN1c2Nl -cnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v -Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsG -AQUFBwIBFh5odHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcN -AQELBQADggIBACtZ6yKZu4SqT96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS -1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmNg7+mvTV+LFwxNG9s2/NkAZiqlCxB -3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4quxtxj7mkoP3Yldmv -Wb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1n8Gh -HVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHm -pHmJWhSnFFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXz -sOfIt+FTvZLm8wyWuevo5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bE -qCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq3TNWOByyrYDT13K9mmyZY+gAu0F2Bbdb -mRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5poLWccret9W6aAjtmcz9 -opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3YeMLEYC/H -YvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R1 O=Disig a.s. -# Subject: CN=CA Disig Root R1 O=Disig a.s. -# Label: "CA Disig Root R1" -# Serial: 14052245610670616104 -# MD5 Fingerprint: be:ec:11:93:9a:f5:69:21:bc:d7:c1:c0:67:89:cc:2a -# SHA1 Fingerprint: 8e:1c:74:f8:a6:20:b9:e5:8a:f4:61:fa:ec:2b:47:56:51:1a:52:c6 -# SHA256 Fingerprint: f9:6f:23:f4:c3:e7:9c:07:7a:46:98:8d:5a:f5:90:06:76:a0:f0:39:cb:64:5d:d1:75:49:b2:16:c8:24:40:ce ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQy -MDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjEw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy3QRk -D2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/o -OI7bm+V8u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3A -fQ+lekLZWnDZv6fXARz2m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJe -IgpFy4QxTaz+29FHuvlglzmxZcfe+5nkCiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8n -oc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTaYVKvJrT1cU/J19IG32PK -/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6vpmumwKj -rckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD -3AjLLhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE -7cderVC6xkGbrPAXZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkC -yC2fg69naQanMVXVz0tv/wQFx1isXxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLd -qvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ04IwDQYJKoZI -hvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR -xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaA -SfX8MPWbTx9BLxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXo -HqJPYNcHKfyyo6SdbhWSVhlMCrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpB -emOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5GfbVSUZP/3oNn6z4eGBrxEWi1CXYBmC -AMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85YmLLW1AL14FABZyb -7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKSds+x -DzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvk -F7mGnjixlAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqF -a3qdnom2piiZk4hA9z7NUaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsT -Q6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJa7+h89n07eLw4+1knj0vllJPgFOL ------END CERTIFICATE----- - -# Issuer: CN=CA Disig Root R2 O=Disig a.s. -# Subject: CN=CA Disig Root R2 O=Disig a.s. -# Label: "CA Disig Root R2" -# Serial: 10572350602393338211 -# MD5 Fingerprint: 26:01:fb:d8:27:a7:17:9a:45:54:38:1a:43:01:3b:03 -# SHA1 Fingerprint: b5:61:eb:ea:a4:de:e4:25:4b:69:1a:98:a5:57:47:c2:34:c7:d9:71 -# SHA256 Fingerprint: e2:3d:4a:03:6d:7b:70:e9:f5:95:b1:42:20:79:d2:b9:1e:df:bb:1f:b6:51:a0:63:3e:aa:8a:9d:c5:f8:07:03 ------BEGIN CERTIFICATE----- -MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNV -BAYTAlNLMRMwEQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMu -MRkwFwYDVQQDExBDQSBEaXNpZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQy -MDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sxEzARBgNVBAcTCkJyYXRpc2xhdmEx -EzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERpc2lnIFJvb3QgUjIw -ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbCw3Oe -NcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNH -PWSb6WiaxswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3I -x2ymrdMxp7zo5eFm1tL7A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbe -QTg06ov80egEFGEtQX6sx3dOy1FU+16SGBsEWmjGycT6txOgmLcRK7fWV8x8nhfR -yyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqVg8NTEQxzHQuyRpDRQjrO -QG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa5Beny912 -H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJ -QfYEkoopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUD -i/ZnWejBBhG93c+AAk9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORs -nLMOPReisjQS1n6yqEm70XooQL6iFh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1 -rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud -DwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5uQu0wDQYJKoZI -hvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM -tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqf -GopTpti72TVVsRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkb -lvdhuDvEK7Z4bLQjb/D907JedR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka -+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W81k/BfDxujRNt+3vrMNDcTa/F1bal -TFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjxmHHEt38OFdAlab0i -nSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01utI3 -gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18Dr -G5gPcFw0sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3Os -zMOl6W8KjptlwlCFtaOgUxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8x -L4ysEr3vQCj8KWefshNPZiTEUxnpHikV7+ZtsH8tZ/3zbBt1RqPlShfppNcL ------END CERTIFICATE----- - -# Issuer: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Subject: CN=ACCVRAIZ1 O=ACCV OU=PKIACCV -# Label: "ACCVRAIZ1" -# Serial: 6828503384748696800 -# MD5 Fingerprint: d0:a0:5a:ee:05:b6:09:94:21:a1:7d:f1:b2:29:82:02 -# SHA1 Fingerprint: 93:05:7a:88:15:c6:4f:ce:88:2f:fa:91:16:52:28:78:bc:53:64:17 -# SHA256 Fingerprint: 9a:6e:c0:12:e1:a7:da:9d:be:34:19:4d:47:8a:d7:c0:db:18:22:fb:07:1d:f1:29:81:49:6e:d1:04:38:41:13 ------BEGIN CERTIFICATE----- -MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE -AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw -CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ -BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND -VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb -qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY -HtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWo -G2ioPej0RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpA -lHPrzg5XPAOBOp0KoVdDaaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhr -IA8wKFSVf+DuzgpmndFALW4ir50awQUZ0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/ -0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDGWuzndN9wrqODJerWx5eH -k6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs78yM2x/47 -4KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMO -m3WR5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpa -cXpkatcnYGMN285J9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPl -uUsXQA+xtrn13k/c4LOsOxFwYIRKQ26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYI -KwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRwOi8vd3d3LmFjY3YuZXMvZmls -ZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEuY3J0MB8GCCsG -AQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 -VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeT -VfZW6oHlNsyMHj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIG -CCsGAQUFBwICMIIBFB6CARAAQQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUA -cgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBhAO0AegAgAGQAZQAgAGwAYQAgAEEA -QwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUAYwBuAG8AbABvAGcA -7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBjAHQA -cgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAA -QwBQAFMAIABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUA -czAwBggrBgEFBQcCARYkaHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2Mu -aHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRt -aW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2MV9kZXIuY3JsMA4GA1Ud -DwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZIhvcNAQEF -BQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdp -D70ER9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gU -JyCpZET/LtZ1qmxNYEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+m -AM/EKXMRNt6GGT6d7hmKG9Ww7Y49nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepD -vV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJTS+xJlsndQAJxGJ3KQhfnlms -tn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3sCPdK6jT2iWH -7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h -I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szA -h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF -d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H -pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7 ------END CERTIFICATE----- - -# Issuer: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Subject: CN=TWCA Global Root CA O=TAIWAN-CA OU=Root CA -# Label: "TWCA Global Root CA" -# Serial: 3262 -# MD5 Fingerprint: f9:03:7e:cf:e6:9e:3c:73:7a:2a:90:07:69:ff:2b:96 -# SHA1 Fingerprint: 9c:bb:48:53:f6:a4:f6:d3:52:a4:e8:32:52:55:60:13:f5:ad:af:65 -# SHA256 Fingerprint: 59:76:90:07:f7:68:5d:0f:cd:50:87:2f:9f:95:d5:75:5a:5b:2b:45:7d:81:f3:69:2b:61:0a:98:67:2f:0e:1b ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcx -EjAQBgNVBAoTCVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMT -VFdDQSBHbG9iYWwgUm9vdCBDQTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5 -NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQKEwlUQUlXQU4tQ0ExEDAOBgNVBAsT -B1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3QgQ0EwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2CnJfF -10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz -0ALfUPZVr2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfCh -MBwqoJimFb3u/Rk28OKRQ4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbH -zIh1HrtsBv+baz4X7GGqcXzGHaL3SekVtTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc -46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1WKKD+u4ZqyPpcC1jcxkt2 -yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99sy2sbZCi -laLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYP -oA/pyJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQA -BDzfuBSO6N+pjWxnkjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcE -qYSjMq+u7msXi7Kx/mzhkIyIqJdIzshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm -4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6gcFGn90xHNcgL -1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn -LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WF -H6vPNOw/KP4M8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNo -RI2T9GRwoD2dKAXDOXC4Ynsg/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+ -nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlglPx4mI88k1HtQJAH32RjJMtOcQWh -15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryPA9gK8kxkRr05YuWW -6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3mi4TW -nsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5j -wa19hAM8EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWz -aGHQRiapIVJpLesux+t3zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmy -KwbQBM0= ------END CERTIFICATE----- - -# Issuer: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Subject: CN=TeliaSonera Root CA v1 O=TeliaSonera -# Label: "TeliaSonera Root CA v1" -# Serial: 199041966741090107964904287217786801558 -# MD5 Fingerprint: 37:41:49:1b:18:56:9a:26:f5:ad:c2:66:fb:40:a5:4c -# SHA1 Fingerprint: 43:13:bb:96:f1:d5:86:9b:c1:4e:6a:92:f6:cf:f6:34:69:87:82:37 -# SHA256 Fingerprint: dd:69:36:fe:21:f8:f0:77:c1:23:a1:a5:21:c1:22:24:f7:22:55:b7:3e:03:a7:26:06:93:e8:a2:4b:0f:a3:89 ------BEGIN CERTIFICATE----- -MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAw -NzEUMBIGA1UECgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJv -b3QgQ0EgdjEwHhcNMDcxMDE4MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYD -VQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwWVGVsaWFTb25lcmEgUm9vdCBDQSB2 -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+6yfwIaPzaSZVfp3F -VRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA3GV1 -7CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+X -Z75Ljo1kB1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+ -/jXh7VB7qTCNGdMJjmhnXb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs -81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxHoLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkm -dtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3F0fUTPHSiXk+TT2YqGHe -Oh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJoWjiUIMu -sDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4 -pgd7gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fs -slESl1MpWtTwEhDcTwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQ -arMCpgKIv7NHfirZ1fpoeDVNAgMBAAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYD -VR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qWDNXr+nuqF+gTEjANBgkqhkiG -9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNmzqjMDfz1mgbl -dxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx -0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1Tj -TQpgcmLNkQfWpb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBed -Y2gea+zDTYa4EzAvXUYNR0PVG6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7 -Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpcc41teyWRyu5FrgZLAMzTsVlQ2jqI -OylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOTJsjrDNYmiLbAJM+7 -vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2qReW -t88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcn -HL/EVlP6Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVx -SK236thZiNSQvxaz2emsWWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= ------END CERTIFICATE----- - -# Issuer: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi -# Subject: CN=E-Tugra Certification Authority O=E-Tu\u011fra EBG Bili\u015fim Teknolojileri ve Hizmetleri A.\u015e. OU=E-Tugra Sertifikasyon Merkezi -# Label: "E-Tugra Certification Authority" -# Serial: 7667447206703254355 -# MD5 Fingerprint: b8:a1:03:63:b0:bd:21:71:70:8a:6f:13:3a:bb:79:49 -# SHA1 Fingerprint: 51:c6:e7:08:49:06:6e:f3:92:d4:5c:a0:0d:6d:a3:62:8f:c3:52:39 -# SHA256 Fingerprint: b0:bf:d5:2b:b0:d7:d9:bd:92:bf:5d:4d:c1:3d:a2:55:c0:2c:54:2f:37:83:65:ea:89:39:11:f5:5e:55:f2:3c ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNV -BAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBC -aWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNV -BAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQDDB9FLVR1 -Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMwNTEyMDk0OFoXDTIz -MDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExQDA+ -BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhp -em1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4vU/kwVRHoViVF56C/UY -B4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vdhQd2h8y/L5VMzH2nPbxH -D5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5KCKpbknSF -Q9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEo -q1+gElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3D -k14opz8n8Y4e0ypQBaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcH -fC425lAcP9tDJMW/hkd5s3kc91r0E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsut -dEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gzrt48Ue7LE3wBf4QOXVGUnhMM -ti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAqjqFGOjGY5RH8 -zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUX -U8u3Zg5mTPj5dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6 -Jyr+zE7S6E5UMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5 -XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAF -Nzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAKkEh47U6YA5n+KGCR -HTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jOXKqY -GwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c -77NCR807VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3 -+GbHeJAAFS6LrVE1Uweoa2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WK -vJUawSg5TB9D0pH0clmKuVb8P7Sd2nCcdlqMQ1DujjByTd//SffGqWfZbawCEeI6 -FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEVKV0jq9BgoRJP3vQXzTLl -yb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gTDx4JnW2P -AJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpD -y4Q08ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8d -NL/+I5c30jn6PQ0GC7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - -# Issuer: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Subject: CN=T-TeleSec GlobalRoot Class 2 O=T-Systems Enterprise Services GmbH OU=T-Systems Trust Center -# Label: "T-TeleSec GlobalRoot Class 2" -# Serial: 1 -# MD5 Fingerprint: 2b:9b:9e:e4:7b:6c:1f:00:72:1a:cc:c1:77:79:df:6a -# SHA1 Fingerprint: 59:0d:2d:7d:88:4f:40:2e:61:7e:a5:62:32:17:65:cf:17:d8:94:e9 -# SHA256 Fingerprint: 91:e2:f5:78:8d:58:10:eb:a7:ba:58:73:7d:e1:54:8a:8e:ca:cd:01:45:98:bc:0b:14:3e:04:1b:17:05:25:52 ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- - -# Issuer: CN=Atos TrustedRoot 2011 O=Atos -# Subject: CN=Atos TrustedRoot 2011 O=Atos -# Label: "Atos TrustedRoot 2011" -# Serial: 6643877497813316402 -# MD5 Fingerprint: ae:b9:c4:32:4b:ac:7f:5d:66:cc:77:94:bb:2a:77:56 -# SHA1 Fingerprint: 2b:b1:f5:3e:55:0c:1d:c5:f1:d4:e6:b7:6a:46:4b:55:06:02:ac:21 -# SHA256 Fingerprint: f3:56:be:a2:44:b7:a9:1e:b3:5d:53:ca:9a:d7:86:4a:ce:01:8e:2d:35:d5:f8:f9:6d:df:68:a6:f4:1a:a4:74 ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UE -AwwVQXRvcyBUcnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQG -EwJERTAeFw0xMTA3MDcxNDU4MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMM -FUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsGA1UECgwEQXRvczELMAkGA1UEBhMC -REUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVhTuXbyo7LjvPpvMp -Nb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr54rM -VD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+ -SZFhyBH+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ -4J7sVaE3IqKHBAUsR320HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0L -cp2AMBYHlT8oDv3FdU9T1nSatCQujgKRz3bFmx5VdJx4IbHwLfELn8LVlhgf8FQi -eowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7Rl+lwrrw7GWzbITAPBgNV -HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZbNshMBgG -A1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 -DQEBCwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8j -vZfza1zv7v1Apt+hk6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kP -DpFrdRbhIfzYJsdHt6bPWHJxfrrhTZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pc -maHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a961qn8FYiqTxlVMYVqL2Gns2D -lmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G3mB/ufNPRJLv -KrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 1 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 1 G3" -# Serial: 687049649626669250736271037606554624078720034195 -# MD5 Fingerprint: a4:bc:5b:3f:fe:37:9a:fa:64:f0:e2:fa:05:3d:0b:ab -# SHA1 Fingerprint: 1b:8e:ea:57:96:29:1a:c9:39:ea:b8:0a:81:1a:73:73:c0:93:79:67 -# SHA256 Fingerprint: 8a:86:6f:d1:b2:76:b5:7e:57:8e:92:1c:65:82:8a:2b:ed:58:e9:f2:f2:88:05:41:34:b7:f1:f4:bf:c9:cc:74 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00 -MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakEPBtV -wedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWe -rNrwU8lmPNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF341 -68Xfuw6cwI2H44g4hWf6Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh -4Pw5qlPafX7PGglTvF0FBM+hSo+LdoINofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXp -UhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/lg6AnhF4EwfWQvTA9xO+o -abw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV7qJZjqlc -3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/G -KubX9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSt -hfbZxbGL0eUQMk1fiyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KO -Tk0k+17kBL5yG6YnLUlamXrXXAkgt3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOt -zCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZIhvcNAQELBQAD -ggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC -MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2 -cDMT/uFPpiN3GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUN -qXsCHKnQO18LwIE6PWThv6ctTr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5 -YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP+V04ikkwj+3x6xn0dxoxGE1nVGwv -b2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh3jRJjehZrJ3ydlo2 -8hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fawx/k -NSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNj -ZgKAvQU6O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhp -q1467HxpvMc7hU6eFbm0FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFt -nh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOVhMJKzRwuJIczYOXD ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 2 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 2 G3" -# Serial: 390156079458959257446133169266079962026824725800 -# MD5 Fingerprint: af:0c:86:6e:bf:40:2d:7f:0b:3e:12:50:ba:12:3d:06 -# SHA1 Fingerprint: 09:3c:61:f3:8b:8b:dc:7d:55:df:75:38:02:05:00:e1:25:f5:c8:36 -# SHA256 Fingerprint: 8f:e4:fb:0a:f9:3a:4d:0d:67:db:0b:eb:b2:3e:37:c7:1b:f3:25:dc:bc:dd:24:0e:a0:4d:af:58:b4:7e:18:40 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00 -MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFhZiFf -qq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMW -n4rjyduYNM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ym -c5GQYaYDFCDy54ejiK2toIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+ -O7q414AB+6XrW7PFXmAqMaCvN+ggOp+oMiwMzAkd056OXbxMmO7FGmh77FOm6RQ1 -o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+lV0POKa2Mq1W/xPtbAd0j -IaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZoL1NesNKq -IcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz -8eQQsSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43eh -vNURG3YBZwjgQQvD6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l -7ZizlWNof/k19N+IxWA1ksB8aRxhlRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALG -cC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZIhvcNAQELBQAD -ggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 -AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RC -roijQ1h5fq7KpVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0Ga -W/ZZGYjeVYg3UQt4XAoeo0L9x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4n -lv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgzdWqTHBLmYF5vHX/JHyPLhGGfHoJE -+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6XU/IyAgkwo1jwDQHV -csaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+NwmNtd -dbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNg -KCLjsZWDzYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeM -HVOyToV7BjjHLPj4sHKNJeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4 -WSr2Rz0ZiC3oheGe7IUIarFsNMkd7EgrO3jtZsSOeWmD3n+M ------END CERTIFICATE----- - -# Issuer: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited -# Subject: CN=QuoVadis Root CA 3 G3 O=QuoVadis Limited -# Label: "QuoVadis Root CA 3 G3" -# Serial: 268090761170461462463995952157327242137089239581 -# MD5 Fingerprint: df:7d:b9:ad:54:6f:68:a1:df:89:57:03:97:43:b0:d7 -# SHA1 Fingerprint: 48:12:bd:92:3c:a8:c4:39:06:e7:30:6d:27:96:e6:a4:cf:22:2e:7d -# SHA256 Fingerprint: 88:ef:81:de:20:2e:b0:18:45:2e:43:f8:64:72:5c:ea:5f:bd:1f:c2:d9:d2:05:73:07:09:c5:d8:b8:69:0f:46 ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQEL -BQAwSDELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAc -BgNVBAMTFVF1b1ZhZGlzIFJvb3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00 -MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM -aW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMgRzMwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286IxSR -/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNu -FoM7pmRLMon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXR -U7Ox7sWTaYI+FrUoRqHe6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+c -ra1AdHkrAj80//ogaX3T7mH1urPnMNA3I4ZyYUUpSFlob3emLoG+B01vr87ERROR -FHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3UVDmrJqMz6nWB2i3ND0/k -A9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f75li59wzw -eyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634Ryl -sSqiMd5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBp -VzgeAVuNVejH38DMdyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0Q -A4XN8f+MFrXBsj6IbGB/kE+V9/YtrQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ -ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -BjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZIhvcNAQELBQAD -ggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px -KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnI -FUBhynLWcKzSt/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5Wvv -oxXqA/4Ti2Tk08HS6IT7SdEQTXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFg -u/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9DuDcpmvJRPpq3t/O5jrFc/ZSXPsoaP -0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGibIh6BJpsQBJFxwAYf -3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmDhPbl -8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+ -DhcI00iX0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HN -PlopNLk9hM6xZdRZkZFWdSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ -ywaZWWDYWGWVjUTR939+J399roD1B0y2PpxxVJkES/1Y+Zj0 ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root G2 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root G2" -# Serial: 15385348160840213938643033620894905419 -# MD5 Fingerprint: 92:38:b9:f8:63:24:82:65:2c:57:33:e6:fe:81:8f:9d -# SHA1 Fingerprint: a1:4b:48:d9:43:ee:0a:0e:40:90:4f:3c:e0:a4:c0:91:93:51:5d:3f -# SHA256 Fingerprint: 7d:05:eb:b6:82:33:9f:8c:94:51:ee:09:4e:eb:fe:fa:79:53:a1:14:ed:b2:f4:49:49:45:2f:ab:7d:2f:c1:85 ------BEGIN CERTIFICATE----- -MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSA -n61UQbVH35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4Htecc -biJVMWWXvdMX0h5i89vqbFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9Hp -EgjAALAcKxHad3A2m67OeYfcgnDmCXRwVWmvo2ifv922ebPynXApVfSr/5Vh88lA -bx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OPYLfykqGxvYmJHzDNw6Yu -YjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+RnlTGNAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQW -BBTOw0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPI -QW5pJ6d1Ee88hjZv0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I -0jJmwYrA8y8678Dj1JGG0VDjA9tzd29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4Gni -lmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAWhsI6yLETcDbYz+70CjTVW0z9 -B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0MjomZmWzwPDCv -ON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo -IhNzbM8m9Yop5w== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Assured ID Root G3 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Assured ID Root G3" -# Serial: 15459312981008553731928384953135426796 -# MD5 Fingerprint: 7c:7f:65:31:0c:81:df:8d:ba:3e:99:e2:5c:ad:6e:fb -# SHA1 Fingerprint: f5:17:a2:4f:9a:48:c6:c9:f8:a2:00:26:9f:dc:0f:48:2c:ab:30:89 -# SHA256 Fingerprint: 7e:37:cb:8b:4c:47:09:0c:ab:36:55:1b:a6:f4:5d:b8:40:68:0f:ba:16:6a:95:2d:b1:00:71:7f:43:05:3f:c2 ------BEGIN CERTIFICATE----- -MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQsw -CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu -ZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3Qg -RzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBlMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu -Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJf -Zn4f5dwbRXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17Q -RSAPWXYQ1qAk8C3eNvJsKTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ -BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgFUaFNN6KDec6NHSrkhDAKBggqhkjOPQQD -AwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5FyYZ5eEJJZVrmDxxDnOOlY -JjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy1vUhZscv -6pZjamVFkpUBtA== ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root G2 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root G2" -# Serial: 4293743540046975378534879503202253541 -# MD5 Fingerprint: e4:a6:8a:c8:54:ac:52:42:46:0a:fd:72:48:1b:2a:44 -# SHA1 Fingerprint: df:3c:24:f9:bf:d6:66:76:1b:26:80:73:fe:06:d1:cc:8d:4f:82:a4 -# SHA256 Fingerprint: cb:3c:cb:b7:60:31:e5:e0:13:8f:8d:d3:9a:23:f9:de:47:ff:c3:5e:43:c1:14:4c:ea:27:d4:6a:5a:b1:cb:5f ------BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH -MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI -2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx -1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ -q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz -tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ -vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP -BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV -5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY -1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4 -NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG -Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91 -8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe -pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl -MrY= ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Global Root G3 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Global Root G3" -# Serial: 7089244469030293291760083333884364146 -# MD5 Fingerprint: f5:5d:a4:50:a5:fb:28:7e:1e:0f:0d:cc:96:57:56:ca -# SHA1 Fingerprint: 7e:04:de:89:6a:3e:66:6d:00:e6:87:d3:3f:fa:d9:3b:e8:3d:34:9e -# SHA256 Fingerprint: 31:ad:66:48:f8:10:41:38:c7:38:f3:9e:a4:32:01:33:39:3e:3a:18:cc:02:29:6e:f9:7c:2a:c9:ef:67:31:d0 ------BEGIN CERTIFICATE----- -MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw -CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu -ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe -Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw -EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x -IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF -K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG -fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO -Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd -BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx -AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/ -oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8 -sycX ------END CERTIFICATE----- - -# Issuer: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com -# Subject: CN=DigiCert Trusted Root G4 O=DigiCert Inc OU=www.digicert.com -# Label: "DigiCert Trusted Root G4" -# Serial: 7451500558977370777930084869016614236 -# MD5 Fingerprint: 78:f2:fc:aa:60:1f:2f:b4:eb:c9:37:ba:53:2e:75:49 -# SHA1 Fingerprint: dd:fb:16:cd:49:31:c9:73:a2:03:7d:3f:c8:3a:4d:7d:77:5d:05:e4 -# SHA256 Fingerprint: 55:2f:7b:dc:f1:a7:af:9e:6c:e6:72:01:7f:4f:12:ab:f7:72:40:c7:8e:76:1a:c2:03:d1:d9:d2:0a:c8:99:88 ------BEGIN CERTIFICATE----- -MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBi -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3Qg -RzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1MTIwMDAwWjBiMQswCQYDVQQGEwJV -UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu -Y29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3y -ithZwuEppz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1If -xp4VpX6+n6lXFllVcq9ok3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDV -ySAdYyktzuxeTsiT+CFhmzTrBcZe7FsavOvJz82sNEBfsXpm7nfISKhmV1efVFiO -DCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGYQJB5w3jHtrHEtWoYOAMQ -jdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6MUSaM0C/ -CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCi -EhtmmnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADM -fRyVw4/3IbKyEbe7f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QY -uKZ3AeEPlAwhHbJUKSWJbOUOUlFHdL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXK -chYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8oR7FwI+isX4KJpn15GkvmB0t -9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIB -hjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD -ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2 -SV1EY+CtnJYYZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd -+SeuMIW59mdNOj6PWTkiU0TryF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWc -fFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy7zBZLq7gcfJW5GqXb5JQbZaNaHqa -sjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iahixTXTBmyUEFxPT9N -cCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN5r5N -0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie -4u1Ki7wb/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mI -r/OSmbaz5mEP0oUA51Aa5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1 -/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tKG48BtieVU+i2iW1bvGjUI+iLUaJW+fCm -gKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP82Z+ ------END CERTIFICATE----- - -# Issuer: CN=Certification Authority of WoSign O=WoSign CA Limited -# Subject: CN=Certification Authority of WoSign O=WoSign CA Limited -# Label: "WoSign" -# Serial: 125491772294754854453622855443212256657 -# MD5 Fingerprint: a1:f2:f9:b5:d2:c8:7a:74:b8:f3:05:f1:d7:e1:84:8d -# SHA1 Fingerprint: b9:42:94:bf:91:ea:8f:b6:4b:e6:10:97:c7:fb:00:13:59:b6:76:cb -# SHA256 Fingerprint: 4b:22:d5:a6:ae:c9:9f:3c:db:79:aa:5e:c0:68:38:47:9c:d5:ec:ba:71:64:f7:f2:2d:c1:d6:5f:63:d8:57:08 ------BEGIN CERTIFICATE----- -MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBV -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNV -BAMTIUNlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgw -MTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFX -b1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvcqN -rLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1U -fcIiePyOCbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcScc -f+Hb0v1naMQFXQoOXXDX2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2 -ZjC1vt7tj/id07sBMOby8w7gLJKA84X5KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4M -x1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR+ScPewavVIMYe+HdVHpR -aG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ezEC8wQjch -zDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDar -uHqklWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221K -mYo0SLwX3OSACCK28jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvA -Sh0JWzko/amrzgD5LkhLJuYwTKVYyrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWv -HYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0CAwEAAaNCMEAwDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R8bNLtwYgFP6H -EtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 -LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJ -MuYhOZO9sxXqT2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2e -JXLOC62qx1ViC777Y7NhRCOjy+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VN -g64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC2nz4SNAzqfkHx5Xh9T71XXG68pWp -dIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes5cVAWubXbHssw1ab -R80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/EaEQ -PkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGce -xGATVdVhmVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+ -J7x6v+Db9NpSvd4MVHAxkUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMl -OtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGikpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWT -ee5Ehr7XHuQe+w== ------END CERTIFICATE----- - -# Issuer: CN=CA \u6c83\u901a\u6839\u8bc1\u4e66 O=WoSign CA Limited -# Subject: CN=CA \u6c83\u901a\u6839\u8bc1\u4e66 O=WoSign CA Limited -# Label: "WoSign China" -# Serial: 106921963437422998931660691310149453965 -# MD5 Fingerprint: 78:83:5b:52:16:76:c4:24:3b:83:78:e8:ac:da:9a:93 -# SHA1 Fingerprint: 16:32:47:8d:89:f9:21:3a:92:00:85:63:f5:a4:a7:d3:12:40:8a:d6 -# SHA256 Fingerprint: d6:f0:34:bd:94:aa:23:3f:02:97:ec:a4:24:5b:28:39:73:e4:47:aa:59:0f:31:0c:77:f4:8f:df:83:11:22:54 ------BEGIN CERTIFICATE----- -MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBG -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNV -BAMMEkNBIOayg+mAmuagueivgeS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgw -MTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRl -ZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjANBgkqhkiG9w0BAQEF -AAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k8H/r -D195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld1 -9AXbbQs5uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExf -v5RxadmWPgxDT74wwJ85dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnk -UkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+L -NVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFyb7Ao65vh4YOhn0pdr8yb -+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc76DbT52V -qyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6K -yX2m+Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0G -AbQOXDBGVWCvOGU6yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaK -J/kR8slC/k7e3x9cxKSGhxYzoacXGKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwEC -AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUAA4ICAQBqinA4 -WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 -yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj -/feTZU7n85iYr83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6 -jBAyvd0zaziGfjk9DgNyp115j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2 -ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0AkLppRQjbbpCBhqcqBT/mhDn4t/lX -X0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97qA4bLJyuQHCH2u2n -FoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Yjj4D -u9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10l -O1Hm13ZBONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Le -ie2uPAmvylezkolwQOQvT8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR1 -2KvxAmLBsX5VYc8T1yaw15zLKYs4SgsOkI26oQ== ------END CERTIFICATE----- - -# Issuer: CN=COMODO RSA Certification Authority O=COMODO CA Limited -# Subject: CN=COMODO RSA Certification Authority O=COMODO CA Limited -# Label: "COMODO RSA Certification Authority" -# Serial: 101909084537582093308941363524873193117 -# MD5 Fingerprint: 1b:31:b0:71:40:36:cc:14:36:91:ad:c4:3e:fd:ec:18 -# SHA1 Fingerprint: af:e5:d2:44:a8:d1:19:42:30:ff:47:9f:e2:f8:97:bb:cd:7a:8c:b4 -# SHA256 Fingerprint: 52:f0:e1:c4:e5:8e:c6:29:29:1b:60:31:7f:07:46:71:b8:5d:7e:a8:0d:5b:07:27:34:63:53:4b:32:b4:02:34 ------BEGIN CERTIFICATE----- -MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCB -hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV -BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5 -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgT -EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR -Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR -6FSS0gpWsawNJN3Fz0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8X -pz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC -9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+5eNu/Nio5JIk2kNrYrhV -/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pGx8cgoLEf -Zd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z -+pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7w -qP/0uK3pN/u6uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZah -SL0896+1DSJMwBGB7FY79tOi4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVIC -u9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+CGCe01a60y1Dma/RMhnEw6abf -Fobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5WdYgGq/yapiq -crxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E -FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB -/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvl -wFTPoCWOAvn9sKIN9SCYPBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM -4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV -2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSgtZx8jb8uk2Intzna -FxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwWsRqZ -CuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiK -boHGhfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmcke -jkk9u+UJueBPSZI9FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yL -S0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWb -QOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk527RH89elWsn2/x20Kk4yl -0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7ILaZRfyHB -NVOFBkpdn627G190 ------END CERTIFICATE----- - -# Issuer: CN=USERTrust RSA Certification Authority O=The USERTRUST Network -# Subject: CN=USERTrust RSA Certification Authority O=The USERTRUST Network -# Label: "USERTrust RSA Certification Authority" -# Serial: 2645093764781058787591871645665788717 -# MD5 Fingerprint: 1b:fe:69:d1:91:b7:19:33:a3:72:a8:0f:e1:55:e5:b5 -# SHA1 Fingerprint: 2b:8f:1b:57:33:0d:bb:a2:d0:7a:6c:51:f7:0e:e9:0d:da:b9:ad:8e -# SHA256 Fingerprint: e7:93:c9:b0:2f:d8:aa:13:e2:1c:31:22:8a:cc:b0:81:19:64:3b:74:9c:89:89:64:b1:74:6d:46:c3:d4:cb:d2 ------BEGIN CERTIFICATE----- -MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw -MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV -BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B -3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY -tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ -Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 -VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT -79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 -c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT -Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l -c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee -UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE -Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd -BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G -A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF -Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO -VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 -ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs -8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR -iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze -Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ -XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ -qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB -VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB -L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG -jjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE----- - -# Issuer: CN=USERTrust ECC Certification Authority O=The USERTRUST Network -# Subject: CN=USERTrust ECC Certification Authority O=The USERTRUST Network -# Label: "USERTrust ECC Certification Authority" -# Serial: 123013823720199481456569720443997572134 -# MD5 Fingerprint: fa:68:bc:d9:b5:7f:ad:fd:c9:1d:06:83:28:cc:24:c1 -# SHA1 Fingerprint: d1:cb:ca:5d:b2:d5:2a:7f:69:3b:67:4d:e5:f0:5a:1d:0c:95:7d:f0 -# SHA256 Fingerprint: 4f:f4:60:d5:4b:9c:86:da:bf:bc:fc:57:12:e0:40:0d:2b:ed:3f:bc:4d:4f:bd:aa:86:e0:6a:dc:d2:a9:ad:7a ------BEGIN CERTIFICATE----- -MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl -eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT -JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAwMjAx -MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNVBAgT -Ck5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVUaGUg -VVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlm -aWNhdGlvbiBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqflo -I+d61SRvU8Za2EurxtW20eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinng -o4N+LZfQYcTxmdwlkWOrfzCjtHDix6EznPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0G -A1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBBHU6+4WMB -zzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbW -RNZu9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R4 -# Label: "GlobalSign ECC Root CA - R4" -# Serial: 14367148294922964480859022125800977897474 -# MD5 Fingerprint: 20:f0:27:68:d1:7e:a0:9d:0e:e6:2a:ca:df:5c:89:8e -# SHA1 Fingerprint: 69:69:56:2e:40:80:f4:24:a1:e7:19:9f:14:ba:f3:ee:58:ab:6a:bb -# SHA256 Fingerprint: be:c9:49:11:c2:95:56:76:db:6c:0a:55:09:86:d7:6e:3b:a0:05:66:7c:44:2c:97:62:b4:fb:b7:73:de:22:8c ------BEGIN CERTIFICATE----- -MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEk -MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpH -bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX -DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD -QSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprlOQcJ -FspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAw -DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61F -uOJAf/sKbvu+M8k8o4TVMAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGX -kPoUVy0D7O48027KqGx2vKLeuwIgJ6iFJzWbVsaj8kfSt24bAgAXqmemFZHe+pTs -ewv4n4Q= ------END CERTIFICATE----- - -# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 -# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign ECC Root CA - R5 -# Label: "GlobalSign ECC Root CA - R5" -# Serial: 32785792099990507226680698011560947931244 -# MD5 Fingerprint: 9f:ad:3b:1c:02:1e:8a:ba:17:74:38:81:0c:a2:bc:08 -# SHA1 Fingerprint: 1f:24:c6:30:cd:a4:18:ef:20:69:ff:ad:4f:dd:5f:46:3a:1b:69:aa -# SHA256 Fingerprint: 17:9f:bc:14:8a:3d:d0:0f:d2:4e:a1:34:58:cc:43:bf:a7:f5:9c:81:82:d7:83:a5:13:f6:eb:ec:10:0c:89:24 ------BEGIN CERTIFICATE----- -MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEk -MCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpH -bG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoX -DTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMbR2xvYmFsU2lnbiBFQ0MgUm9vdCBD -QSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQDEwpHbG9iYWxTaWdu -MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6SFkc -8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8ke -hOvRnkmSh5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYI -KoZIzj0EAwMDaAAwZQIxAOVpEslu28YxuglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg -515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7yFz9SO8NdCKoCOJuxUnO -xwy8p2Fp8fc74SrL+SvzZpA3 ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden Root CA - G3 O=Staat der Nederlanden -# Label: "Staat der Nederlanden Root CA - G3" -# Serial: 10003001 -# MD5 Fingerprint: 0b:46:67:07:db:10:2f:19:8c:35:50:60:d1:0b:f4:37 -# SHA1 Fingerprint: d8:eb:6b:41:51:92:59:e0:f3:e7:85:00:c0:3d:b6:88:97:c9:ee:fc -# SHA256 Fingerprint: 3c:4f:b0:b9:5a:b8:b3:00:32:f4:32:b8:6f:53:5f:e1:72:c1:85:d0:fd:39:86:58:37:cf:36:18:7f:a6:f4:28 ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gUm9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloX -DTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMCTkwxHjAcBgNVBAoMFVN0YWF0IGRl -ciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5lZGVybGFuZGVuIFJv -b3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4yolQP -cPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WW -IkYFsO2tx1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqX -xz8ecAgwoNzFs21v0IJyEavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFy -KJLZWyNtZrVtB0LrpjPOktvA9mxjeM3KTj215VKb8b475lRgsGYeCasH/lSJEULR -9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUurmkVLoR9BvUhTFXFkC4az -5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU51nus6+N8 -6U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7 -Ngzp07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHP -bMk7ccHViLVlvMDoFxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXt -BznaqB16nzaeErAMZRKQFWDZJkBE41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTt -XUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMBAAGjQjBAMA8GA1UdEwEB/wQF -MAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleuyjWcLhL75Lpd -INyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwp -LiniyMMB8jPqKqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8 -Ipf3YF3qKS9Ysr1YvY2WTxB1v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixp -gZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA8KCWAg8zxXHzniN9lLf9OtMJgwYh -/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b8KKaa8MFSu1BYBQw -0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0rmj1A -fsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq -4BZ+Extq1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR -1VmiiXTTn74eS9fGbbeIJG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/ -QFH1T/U67cjF68IeHRaVesd+QnGTbksVtzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM -94B7IWcnMFk= ------END CERTIFICATE----- - -# Issuer: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden -# Subject: CN=Staat der Nederlanden EV Root CA O=Staat der Nederlanden -# Label: "Staat der Nederlanden EV Root CA" -# Serial: 10000013 -# MD5 Fingerprint: fc:06:af:7b:e8:1a:f1:9a:b4:e8:d2:70:1f:c0:f5:ba -# SHA1 Fingerprint: 76:e2:7e:c1:4f:db:82:c1:c0:a6:75:b5:05:be:3d:29:b4:ed:db:bb -# SHA256 Fingerprint: 4d:24:91:41:4c:fe:95:67:46:ec:4c:ef:a6:cf:6f:72:e2:8a:13:29:43:2f:9d:8a:90:7a:c4:cb:5d:ad:c1:5a ------BEGIN CERTIFICATE----- -MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJO -TDEeMBwGA1UECgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFh -dCBkZXIgTmVkZXJsYW5kZW4gRVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0y -MjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5MMR4wHAYDVQQKDBVTdGFhdCBkZXIg -TmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRlcmxhbmRlbiBFViBS -b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkkSzrS -M4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nC -UiY4iKTWO0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3d -Z//BYY1jTw+bbRcwJu+r0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46p -rfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13l -pJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gVXJrm0w912fxBmJc+qiXb -j5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr08C+eKxC -KFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS -/ZbV0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0X -cgOPvZuM5l5Tnrmd74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH -1vI4gnPah1vlPNOePqc7nvQDs/nxfRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrP -px9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwaivsnuL8wbqg7 -MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI -eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u -2dfOWBfoqSmuc0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHS -v4ilf0X8rLiltTMMgsT7B/Zq5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTC -wPTxGfARKbalGAKb12NMcIxHowNDXLldRqANb/9Zjr7dn3LDWyvfjFvO5QxGbJKy -CqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tNf1zuacpzEPuKqf2e -vTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi5Dp6 -Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIa -Gl6I6lD4WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeL -eG9QgkRQP2YGiqtDhFZKDyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8 -FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGyeUN51q1veieQA6TqJIc/2b3Z6fJfUEkc -7uzXLg== ------END CERTIFICATE----- - -# Issuer: CN=IdenTrust Commercial Root CA 1 O=IdenTrust -# Subject: CN=IdenTrust Commercial Root CA 1 O=IdenTrust -# Label: "IdenTrust Commercial Root CA 1" -# Serial: 13298821034946342390520003877796839426 -# MD5 Fingerprint: b3:3e:77:73:75:ee:a0:d3:e3:7e:49:63:49:59:bb:c7 -# SHA1 Fingerprint: df:71:7e:aa:4a:d9:4e:c9:55:84:99:60:2d:48:de:5f:bc:f0:3a:25 -# SHA256 Fingerprint: 5d:56:49:9b:e4:d2:e0:8b:cf:ca:d0:8a:3e:38:72:3d:50:50:3b:de:70:69:48:e4:2f:55:60:30:19:e5:28:ae ------BEGIN CERTIFICATE----- -MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBK -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVu -VHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQw -MTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MScw -JQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENBIDEwggIiMA0GCSqG -SIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ldhNlT -3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU -+ehcCuz/mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gp -S0l4PJNgiCL8mdo2yMKi1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1 -bVoE/c40yiTcdCMbXTMTEl3EASX2MN0CXZ/g1Ue9tOsbobtJSdifWwLziuQkkORi -T0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl3ZBWzvurpWCdxJ35UrCL -vYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzyNeVJSQjK -Vsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZK -dHzVWYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHT -c+XvvqDtMwt0viAgxGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hv -l7yTmvmcEpB4eoCHFddydJxVdHixuuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5N -iGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB -/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZIhvcNAQELBQAD -ggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH -6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwt -LRvM7Kqas6pgghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93 -nAbowacYXVKV7cndJZ5t+qntozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3 -+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmVYjzlVYA211QC//G5Xc7UI2/YRYRK -W2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUXfeu+h1sXIFRRk0pT -AwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/rokTLq -l1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG -4iZZRHUe2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZ -mUlO+KWA2yUPHGNiiskzZ2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A -7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7RcGzM7vRX+Bi6hG6H ------END CERTIFICATE----- - -# Issuer: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust -# Subject: CN=IdenTrust Public Sector Root CA 1 O=IdenTrust -# Label: "IdenTrust Public Sector Root CA 1" -# Serial: 13298821034946342390521976156843933698 -# MD5 Fingerprint: 37:06:a5:b0:fc:89:9d:ba:f4:6b:8c:1a:64:cd:d5:ba -# SHA1 Fingerprint: ba:29:41:60:77:98:3f:f4:f3:ef:f2:31:05:3b:2e:ea:6d:4d:45:fd -# SHA256 Fingerprint: 30:d0:89:5a:9a:44:8a:26:20:91:63:55:22:d1:f5:20:10:b5:86:7a:ca:e1:2c:78:ef:95:8f:d4:f4:38:9f:2f ------BEGIN CERTIFICATE----- -MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBN -MQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVu -VHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcN -MzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJVUzESMBAGA1UEChMJSWRlblRydXN0 -MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBSb290IENBIDEwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTyP4o7 -ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGy -RBb06tD6Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlS -bdsHyo+1W/CD80/HLaXIrcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF -/YTLNiCBWS2ab21ISGHKTN9T0a9SvESfqy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R -3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoSmJxZZoY+rfGwyj4GD3vw -EUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFnol57plzy -9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9V -GxyhLrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ -2fjXctscvG29ZV/viDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsV -WaFHVCkugyhfHMKiq3IXAAaOReyL4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gD -W/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ -BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMwDQYJKoZIhvcN -AQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj -t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHV -DRDtfULAj+7AmgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9 -TaDKQGXSc3z1i9kKlT/YPyNtGtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8G -lwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFtm6/n6J91eEyrRjuazr8FGF1NFTwW -mhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMxNRF4eKLg6TCMf4Df -WN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4Mhn5 -+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJ -tshquDDIajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhA -GaQdp/lLQzfcaFpPz+vCZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv -8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ3Wl9af0AVqW3rLatt8o+Ae+c ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - G2 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2009 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - G2" -# Serial: 1246989352 -# MD5 Fingerprint: 4b:e2:c9:91:96:65:0c:f4:0e:5a:93:92:a0:0a:fe:b2 -# SHA1 Fingerprint: 8c:f4:27:fd:79:0c:3a:d1:66:06:8d:e8:1e:57:ef:bb:93:22:72:d4 -# SHA256 Fingerprint: 43:df:57:74:b0:3e:7f:ef:5f:e4:0d:93:1a:7b:ed:f1:bb:2e:6b:42:73:8c:4e:6d:38:41:10:3d:3a:a7:f3:39 ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 -cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs -IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz -dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy -NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu -dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt -dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 -aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T -RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN -cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW -wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 -U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 -jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN -BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ -jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v -1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R -nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH -VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== ------END CERTIFICATE----- - -# Issuer: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only -# Subject: CN=Entrust Root Certification Authority - EC1 O=Entrust, Inc. OU=See www.entrust.net/legal-terms/(c) 2012 Entrust, Inc. - for authorized use only -# Label: "Entrust Root Certification Authority - EC1" -# Serial: 51543124481930649114116133369 -# MD5 Fingerprint: b6:7e:1d:f0:58:c5:49:6c:24:3b:3d:ed:98:18:ed:bc -# SHA1 Fingerprint: 20:d8:06:40:df:9b:25:f5:12:25:3a:11:ea:f7:59:8a:eb:14:b5:47 -# SHA256 Fingerprint: 02:ed:0e:b2:8c:14:da:45:16:5c:56:67:91:70:0d:64:51:d7:fb:56:f0:b2:ab:1d:3b:8e:b0:70:e5:6e:df:f5 ------BEGIN CERTIFICATE----- -MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkG -A1UEBhMCVVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3 -d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVu -dHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEzMDEGA1UEAxMq -RW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRUMxMB4XDTEy -MTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYwFAYD -VQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 -L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0g -Zm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEVDMTB2MBAGByqGSM49AgEGBSuBBAAi -A2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHyAsWfoPZb1YsGGYZPUxBt -ByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef9eNi1KlH -Bz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVC -R98crlOZF7ZvHH3hvxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nX -hTcGtXsI/esni0qU+eH6p44mCOh8kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G ------END CERTIFICATE----- - -# Issuer: CN=CFCA EV ROOT O=China Financial Certification Authority -# Subject: CN=CFCA EV ROOT O=China Financial Certification Authority -# Label: "CFCA EV ROOT" -# Serial: 407555286 -# MD5 Fingerprint: 74:e1:b6:ed:26:7a:7a:44:30:33:94:ab:7b:27:81:30 -# SHA1 Fingerprint: e2:b8:29:4b:55:84:ab:6b:58:c2:90:46:6c:ac:3f:b8:39:8f:84:83 -# SHA256 Fingerprint: 5c:c3:d7:8e:4e:1d:5e:45:54:7a:04:e6:87:3e:64:f9:0c:f9:53:6d:1c:cc:2e:f8:00:f3:55:c4:c5:fd:70:fd ------BEGIN CERTIFICATE----- -MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJD -TjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y -aXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkx -MjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5j -aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNBIEVWIFJP -T1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnVBU03 -sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpL -TIpTUnrD7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5 -/ZOkVIBMUtRSqy5J35DNuF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp -7hZZLDRJGqgG16iI0gNyejLi6mhNbiyWZXvKWfry4t3uMCz7zEasxGPrb382KzRz -EpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7xzbh72fROdOXW3NiGUgt -hxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9fpy25IGvP -a931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqot -aK8KgWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNg -TnYGmE69g60dWIolhdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfV -PKPtl8MeNPo4+QgO48BdK4PRVmrJtqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hv -cWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAfBgNVHSMEGDAWgBTj/i39KNAL -tbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd -BgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB -ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObT -ej/tUxPQ4i9qecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdL -jOztUmCypAbqTuv0axn96/Ua4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBS -ESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sGE5uPhnEFtC+NiWYzKXZUmhH4J/qy -P5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfXBDrDMlI1Dlb4pd19 -xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjnaH9d -Ci77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN -5mydLIhyPDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe -/v5WOaHIz16eGWRGENoXkbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+Z -AAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3CekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ -5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su ------END CERTIFICATE----- - -# Issuer: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. -# Subject: CN=T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5 O=T\xdcRKTRUST Bilgi \u0130leti\u015fim ve Bili\u015fim G\xfcvenli\u011fi Hizmetleri A.\u015e. -# Label: "T\xdcRKTRUST Elektronik Sertifika Hizmet Sa\u011flay\u0131c\u0131s\u0131 H5" -# Serial: 156233699172481 -# MD5 Fingerprint: da:70:8e:f0:22:df:93:26:f6:5f:9f:d3:15:06:52:4e -# SHA1 Fingerprint: c4:18:f6:4d:46:d1:df:00:3d:27:30:13:72:43:a9:12:11:c6:75:fb -# SHA256 Fingerprint: 49:35:1b:90:34:44:c1:85:cc:dc:5c:69:3d:24:d8:55:5c:b2:08:d6:a8:14:13:07:69:9f:4a:f0:63:19:9d:78 ------BEGIN CERTIFICATE----- -MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UE -BhMCVFIxDzANBgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxn -aSDEsGxldGnFn2ltIHZlIEJpbGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkg -QS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1QgRWxla3Ryb25payBTZXJ0aWZpa2Eg -SGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAwODA3MDFaFw0yMzA0 -MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0wSwYD -VQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8 -dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF -bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIB -IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCUZ4WWe60ghUEoI5RHwWrom -/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537jVJp45wnEFPzpALFp/kR -Gml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1mep5Fimh3 -4khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z -5UNP9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0 -hO8EuPbJbKoCPrZV4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QID -AQABo0IwQDAdBgNVHQ4EFgQUVpkHHtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/ -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJ5FdnsX -SDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPoBP5yCccLqh0l -VX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq -URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nf -peYVhDfwwvJllpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CF -Yv4HAqGEVka+lgqaE9chTLd8B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW -+qtB4Uu2NQvAmxU= ------END CERTIFICATE----- - -# Issuer: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 -# Subject: CN=Certinomis - Root CA O=Certinomis OU=0002 433998903 -# Label: "Certinomis - Root CA" -# Serial: 1 -# MD5 Fingerprint: 14:0a:fd:8d:a8:28:b5:38:69:db:56:7e:61:22:03:3f -# SHA1 Fingerprint: 9d:70:bb:01:a5:a4:a0:18:11:2e:f7:1c:01:b9:32:c5:34:e7:88:a8 -# SHA256 Fingerprint: 2a:99:f5:bc:11:74:b7:3c:bb:1d:62:08:84:e0:1c:34:e5:1c:cb:39:78:da:12:5f:0e:33:26:88:83:bf:41:58 ------BEGIN CERTIFICATE----- -MIIFkjCCA3qgAwIBAgIBATANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJGUjET -MBEGA1UEChMKQ2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxHTAb -BgNVBAMTFENlcnRpbm9taXMgLSBSb290IENBMB4XDTEzMTAyMTA5MTcxOFoXDTMz -MTAyMTA5MTcxOFowWjELMAkGA1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMx -FzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMR0wGwYDVQQDExRDZXJ0aW5vbWlzIC0g -Um9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTMCQosP5L2 -fxSeC5yaah1AMGT9qt8OHgZbn1CF6s2Nq0Nn3rD6foCWnoR4kkjW4znuzuRZWJfl -LieY6pOod5tK8O90gC3rMB+12ceAnGInkYjwSond3IjmFPnVAy//ldu9n+ws+hQV -WZUKxkd8aRi5pwP5ynapz8dvtF4F/u7BUrJ1Mofs7SlmO/NKFoL21prbcpjp3vDF -TKWrteoB4owuZH9kb/2jJZOLyKIOSY008B/sWEUuNKqEUL3nskoTuLAPrjhdsKkb -5nPJWqHZZkCqqU2mNAKthH6yI8H7KsZn9DS2sJVqM09xRLWtwHkziOC/7aOgFLSc -CbAK42C++PhmiM1b8XcF4LVzbsF9Ri6OSyemzTUK/eVNfaoqoynHWmgE6OXWk6Ri -wsXm9E/G+Z8ajYJJGYrKWUM66A0ywfRMEwNvbqY/kXPLynNvEiCL7sCCeN5LLsJJ -wx3tFvYk9CcbXFcx3FXuqB5vbKziRcxXV4p1VxngtViZSTYxPDMBbRZKzbgqg4SG -m/lg0h9tkQPTYKbVPZrdd5A9NaSfD171UkRpucC63M9933zZxKyGIjK8e2uR73r4 -F2iw4lNVYC2vPsKD2NkJK/DAZNuHi5HMkesE/Xa0lZrmFAYb1TQdvtj/dBxThZng -WVJKYe2InmtJiUZ+IFrZ50rlau7SZRFDAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIB -BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTvkUz1pcMw6C8I6tNxIqSSaHh0 -2TAfBgNVHSMEGDAWgBTvkUz1pcMw6C8I6tNxIqSSaHh02TANBgkqhkiG9w0BAQsF -AAOCAgEAfj1U2iJdGlg+O1QnurrMyOMaauo++RLrVl89UM7g6kgmJs95Vn6RHJk/ -0KGRHCwPT5iVWVO90CLYiF2cN/z7ZMF4jIuaYAnq1fohX9B0ZedQxb8uuQsLrbWw -F6YSjNRieOpWauwK0kDDPAUwPk2Ut59KA9N9J0u2/kTO+hkzGm2kQtHdzMjI1xZS -g081lLMSVX3l4kLr5JyTCcBMWwerx20RoFAXlCOotQqSD7J6wWAsOMwaplv/8gzj -qh8c3LigkyfeY+N/IZ865Z764BNqdeuWXGKRlI5nU7aJ+BIJy29SWwNyhlCVCNSN -h4YVH5Uk2KRvms6knZtt0rJ2BobGVgjF6wnaNsIbW0G+YSrjcOa4pvi2WsS9Iff/ -ql+hbHY5ZtbqTFXhADObE5hjyW/QASAJN1LnDE8+zbz1X5YnpyACleAu6AdBBR8V -btaw5BngDwKTACdyxYvRVB9dSsNAl35VpnzBMwQUAR1JIGkLGZOdblgi90AMRgwj -Y/M50n92Uaf0yKHxDHYiI0ZSKS3io0EHVmmY0gUJvGnHWmHNj4FgFU2A3ZDifcRQ -8ow7bkrHxuaAKzyBvBGAFhAn1/DNP3nMcyrDflOR1m749fPH0FFNjkulW+YZFzvW -gQncItzujrnEj1PhZ7szuIgVRs/taTX/dQ1G885x4cVrhkIGuUE= ------END CERTIFICATE----- - -# Issuer: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed -# Subject: CN=OISTE WISeKey Global Root GB CA O=WISeKey OU=OISTE Foundation Endorsed -# Label: "OISTE WISeKey Global Root GB CA" -# Serial: 157768595616588414422159278966750757568 -# MD5 Fingerprint: a4:eb:b9:61:28:2e:b7:2f:98:b0:35:26:90:99:51:1d -# SHA1 Fingerprint: 0f:f9:40:76:18:d3:d7:6a:4b:98:f0:a8:35:9e:0c:fd:27:ac:cc:ed -# SHA256 Fingerprint: 6b:9c:08:e8:6e:b0:f7:67:cf:ad:65:cd:98:b6:21:49:e5:49:4a:67:f5:84:5e:7b:d1:ed:01:9f:27:b8:6b:d6 ------BEGIN CERTIFICATE----- -MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBt -MQswCQYDVQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUg -Rm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9i -YWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAwMzJaFw0zOTEyMDExNTEwMzFaMG0x -CzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQLExlPSVNURSBG -b3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh -bCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3 -HEokKtaXscriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGx -WuR51jIjK+FTzJlFXHtPrby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX -1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNk -u7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4oQnc/nSMbsrY9gBQHTC5P -99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvgGUpuuy9r -M2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUB -BAMCAQAwDQYJKoZIhvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrgh -cViXfa43FK8+5/ea4n32cZiZBKpDdHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5 -gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0VQreUGdNZtGn//3ZwLWoo4rO -ZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEuiHZeeevJuQHHf -aPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic -Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM= ------END CERTIFICATE----- - -# Issuer: CN=Certification Authority of WoSign G2 O=WoSign CA Limited -# Subject: CN=Certification Authority of WoSign G2 O=WoSign CA Limited -# Label: "Certification Authority of WoSign G2" -# Serial: 142423943073812161787490648904721057092 -# MD5 Fingerprint: c8:1c:7d:19:aa:cb:71:93:f2:50:f8:52:a8:1e:ba:60 -# SHA1 Fingerprint: fb:ed:dc:90:65:b7:27:20:37:bc:55:0c:9c:56:de:bb:f2:78:94:e1 -# SHA256 Fingerprint: d4:87:a5:6f:83:b0:74:82:e8:5e:96:33:94:c1:ec:c2:c9:e5:1d:09:03:ee:94:6b:02:c3:01:58:1e:d9:9e:16 ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQayXaioidfLwPBbOxemFFRDANBgkqhkiG9w0BAQsFADBY -MQswCQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxLTArBgNV -BAMTJENlcnRpZmljYXRpb24gQXV0aG9yaXR5IG9mIFdvU2lnbiBHMjAeFw0xNDEx -MDgwMDU4NThaFw00NDExMDgwMDU4NThaMFgxCzAJBgNVBAYTAkNOMRowGAYDVQQK -ExFXb1NpZ24gQ0EgTGltaXRlZDEtMCsGA1UEAxMkQ2VydGlmaWNhdGlvbiBBdXRo -b3JpdHkgb2YgV29TaWduIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC -AQEAvsXEoCKASU+/2YcRxlPhuw+9YH+v9oIOH9ywjj2X4FA8jzrvZjtFB5sg+OPX -JYY1kBaiXW8wGQiHC38Gsp1ij96vkqVg1CuAmlI/9ZqD6TRay9nVYlzmDuDfBpgO -gHzKtB0TiGsOqCR3A9DuW/PKaZE1OVbFbeP3PU9ekzgkyhjpJMuSA93MHD0JcOQg -5PGurLtzaaNjOg9FD6FKmsLRY6zLEPg95k4ot+vElbGs/V6r+kHLXZ1L3PR8du9n -fwB6jdKgGlxNIuG12t12s9R23164i5jIFFTMaxeSt+BKv0mUYQs4kI9dJGwlezt5 -2eJ+na2fmKEG/HgUYFf47oB3sQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU+mCp62XF3RYUCE4MD42b4Pdkr2cwDQYJ -KoZIhvcNAQELBQADggEBAFfDejaCnI2Y4qtAqkePx6db7XznPWZaOzG73/MWM5H8 -fHulwqZm46qwtyeYP0nXYGdnPzZPSsvxFPpahygc7Y9BMsaV+X3avXtbwrAh449G -3CE4Q3RM+zD4F3LBMvzIkRfEzFg3TgvMWvchNSiDbGAtROtSjFA9tWwS1/oJu2yy -SrHFieT801LYYRf+epSEj3m2M1m6D8QL4nCgS3gu+sif/a+RZQp4OBXllxcU3fng -LDT4ONCEIgDAFFEYKwLcMFrw6AF8NTojrwjkr6qOKEJJLvD1mTS+7Q9LGOHSJDy7 -XUe3IfKN0QqZjuNuPq1w4I+5ysxugTH2e5x6eeRncRg= ------END CERTIFICATE----- - -# Issuer: CN=CA WoSign ECC Root O=WoSign CA Limited -# Subject: CN=CA WoSign ECC Root O=WoSign CA Limited -# Label: "CA WoSign ECC Root" -# Serial: 138625735294506723296996289575837012112 -# MD5 Fingerprint: 80:c6:53:ee:61:82:28:72:f0:ff:21:b9:17:ca:b2:20 -# SHA1 Fingerprint: d2:7a:d2:be:ed:94:c0:a1:3c:c7:25:21:ea:5d:71:be:81:19:f3:2b -# SHA256 Fingerprint: 8b:45:da:1c:06:f7:91:eb:0c:ab:f2:6b:e5:88:f5:fb:23:16:5c:2e:61:4b:f8:85:56:2d:0d:ce:50:b2:9b:02 ------BEGIN CERTIFICATE----- -MIICCTCCAY+gAwIBAgIQaEpYcIBr8I8C+vbe6LCQkDAKBggqhkjOPQQDAzBGMQsw -CQYDVQQGEwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMT -EkNBIFdvU2lnbiBFQ0MgUm9vdDAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4 -NThaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEb -MBkGA1UEAxMSQ0EgV29TaWduIEVDQyBSb290MHYwEAYHKoZIzj0CAQYFK4EEACID -YgAE4f2OuEMkq5Z7hcK6C62N4DrjJLnSsb6IOsq/Srj57ywvr1FQPEd1bPiUt5v8 -KB7FVMxjnRZLU8HnIKvNrCXSf4/CwVqCXjCLelTOA7WRf6qU0NGKSMyCBSah1VES -1ns2o0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQUqv3VWqP2h4syhf3RMluARZPzA7gwCgYIKoZIzj0EAwMDaAAwZQIxAOSkhLCB -1T2wdKyUpOgOPQB0TKGXa/kNUTyh2Tv0Daupn75OcsqF1NnstTJFGG+rrQIwfcf3 -aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYua/GRspBl9JrmkO5K ------END CERTIFICATE----- - -# Issuer: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. -# Subject: CN=SZAFIR ROOT CA2 O=Krajowa Izba Rozliczeniowa S.A. -# Label: "SZAFIR ROOT CA2" -# Serial: 357043034767186914217277344587386743377558296292 -# MD5 Fingerprint: 11:64:c1:89:b0:24:b1:8c:b1:07:7e:89:9e:51:9e:99 -# SHA1 Fingerprint: e2:52:fa:95:3f:ed:db:24:60:bd:6e:28:f3:9c:cc:cf:5e:b3:3f:de -# SHA256 Fingerprint: a1:33:9d:33:28:1a:0b:56:e5:57:d3:d3:2b:1c:e7:f9:36:7e:b0:94:bd:5f:a7:2a:7e:50:04:c8:de:d7:ca:fe ------BEGIN CERTIFICATE----- -MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQEL -BQAwUTELMAkGA1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6 -ZW5pb3dhIFMuQS4xGDAWBgNVBAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkw -NzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9L -cmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYDVQQDDA9TWkFGSVIg -Uk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5QqEvN -QLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT -3PSQ1hNKDJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw -3gAeqDRHu5rr/gsUvTaE2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr6 -3fE9biCloBK0TXC5ztdyO4mTp4CEHCdJckm1/zuVnsHMyAHs6A6KCpbns6aH5db5 -BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwiieDhZNRnvDF5YTy7ykHN -XGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD -AgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsF -AAOCAQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw -8PRBEew/R40/cof5O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOG -nXkZ7/e7DDWQw4rtTw/1zBLZpD67oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCP -oky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul4+vJhaAlIDf7js4MNIThPIGy -d05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6+/NNIxuZMzSg -LvWpCz/UXeHPhJ/iGcJfitYgHuNztw== ------END CERTIFICATE----- - -# Issuer: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Subject: CN=Certum Trusted Network CA 2 O=Unizeto Technologies S.A. OU=Certum Certification Authority -# Label: "Certum Trusted Network CA 2" -# Serial: 44979900017204383099463764357512596969 -# MD5 Fingerprint: 6d:46:9e:d9:25:6d:08:23:5b:5e:74:7d:1e:27:db:f2 -# SHA1 Fingerprint: d3:dd:48:3e:2b:bf:4c:05:e8:af:10:f5:fa:76:26:cf:d3:dc:30:92 -# SHA256 Fingerprint: b6:76:f2:ed:da:e8:77:5c:d3:6c:b0:f6:3c:d1:d4:60:39:61:f4:9e:62:65:ba:01:3a:2f:03:07:b6:d0:b8:04 ------BEGIN CERTIFICATE----- -MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCB -gDELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu -QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIG -A1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQSAyMCIYDzIwMTExMDA2MDgz -OTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQTDEiMCAGA1UEChMZ -VW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3 -b3JrIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWA -DGSdhhuWZGc/IjoedQF97/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn -0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+oCgCXhVqqndwpyeI1B+twTUrWwbNWuKFB -OJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40bRr5HMNUuctHFY9rnY3lE -fktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2puTRZCr+E -Sv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1m -o130GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02i -sx7QBlrd9pPPV3WZ9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOW -OZV7bIBaTxNyxtd9KXpEulKkKtVBRgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgez -Tv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pyehizKV/Ma5ciSixqClnrDvFAS -adgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vMBhBgu4M1t15n -3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMC -AQYwDQYJKoZIhvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQ -F/xlhMcQSZDe28cmk4gmb3DWAl45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTf -CVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuAL55MYIR4PSFk1vtBHxgP58l1cb29 -XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMoclm2q8KMZiYcdywm -djWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tMpkT/ -WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jb -AoJnwTnbw3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksq -P/ujmv5zMnHCnsZy4YpoJ/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Ko -b7a6bINDd82Kkhehnlt4Fj1F4jNy3eFmypnTycUm/Q1oBEauttmbjL4ZvrHG8hnj -XALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLXis7VmFxWlgPF7ncGNf/P -5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7zAYspsbi -DrW5viSP ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions RootCA 2015" -# Serial: 0 -# MD5 Fingerprint: ca:ff:e2:db:03:d9:cb:4b:e9:0f:ad:84:fd:7b:18:ce -# SHA1 Fingerprint: 01:0c:06:95:a6:98:19:14:ff:bf:5f:c6:b0:b6:95:ea:29:e9:12:a6 -# SHA256 Fingerprint: a0:40:92:9a:02:ce:53:b4:ac:f4:f2:ff:c6:98:1c:e4:49:6f:75:5e:6d:45:fe:0b:2a:69:2b:cd:52:52:3f:36 ------BEGIN CERTIFICATE----- -MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1Ix -DzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5k -IFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMT -N0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9v -dENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAxMTIxWjCBpjELMAkG -A1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNh -ZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkx -QDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1 -dGlvbnMgUm9vdENBIDIwMTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQDC+Kk/G4n8PDwEXT2QNrCROnk8ZlrvbTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA -4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+ehiGsxr/CL0BgzuNtFajT0 -AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+6PAQZe10 -4S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06C -ojXdFPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV -9Cz82XBST3i4vTwri5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrD -gfgXy5I2XdGj2HUb4Ysn6npIQf1FGQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6 -Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2fu/Z8VFRfS0myGlZYeCsargq -NhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9muiNX6hME6wGko -LfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc -Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVd -ctA4GGqd83EkVAswDQYJKoZIhvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0I -XtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+D1hYc2Ryx+hFjtyp8iY/xnmMsVMI -M4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrMd/K4kPFox/la/vot -9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+yd+2V -Z5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/ea -j8GsGsVn82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnh -X9izjFk0WaSrT2y7HxjbdavYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQ -l033DlZdwJVqwjbDG2jJ9SrcR5q+ss7FJej6A7na+RZukYT1HCjI/CbM1xyQVqdf -bzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVtJ94Cj8rDtSvK6evIIVM4 -pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGaJI7ZjnHK -e7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0 -vm9qp/UsQu0yrbYhnr68 ------END CERTIFICATE----- - -# Issuer: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Subject: CN=Hellenic Academic and Research Institutions ECC RootCA 2015 O=Hellenic Academic and Research Institutions Cert. Authority -# Label: "Hellenic Academic and Research Institutions ECC RootCA 2015" -# Serial: 0 -# MD5 Fingerprint: 81:e5:b4:17:eb:c2:f5:e1:4b:0d:41:7b:49:92:fe:ef -# SHA1 Fingerprint: 9f:f1:71:8d:92:d5:9a:f3:7d:74:97:b4:bc:6f:84:68:0b:ba:b6:66 -# SHA256 Fingerprint: 44:b5:45:aa:8a:25:e6:5a:73:ca:15:dc:27:fc:36:d2:4c:1c:b9:95:3a:06:65:39:b1:15:82:dc:48:7b:48:33 ------BEGIN CERTIFICATE----- -MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzAN -BgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl -c2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hl -bGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgRUNDIFJv -b3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEwMzcxMlowgaoxCzAJ -BgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmljIEFj -YWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5 -MUQwQgYDVQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0 -dXRpb25zIEVDQyBSb290Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKg -QehLgoRc4vgxEZmGZE4JJS+dQS8KrjVPdJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJa -jq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoKVlp8aQuqgAkkbH7BRqNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFLQi -C4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaep -lSTAGiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7Sof -TUwJCA3sS61kFyjndc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR ------END CERTIFICATE----- - -# Issuer: CN=Certplus Root CA G1 O=Certplus -# Subject: CN=Certplus Root CA G1 O=Certplus -# Label: "Certplus Root CA G1" -# Serial: 1491911565779898356709731176965615564637713 -# MD5 Fingerprint: 7f:09:9c:f7:d9:b9:5c:69:69:56:d5:37:3e:14:0d:42 -# SHA1 Fingerprint: 22:fd:d0:b7:fd:a2:4e:0d:ac:49:2c:a0:ac:a6:7b:6a:1f:e3:f7:66 -# SHA256 Fingerprint: 15:2a:40:2b:fc:df:2c:d5:48:05:4d:22:75:b3:9c:7f:ca:3e:c0:97:80:78:b0:f0:ea:76:e5:61:a6:c7:43:3e ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgISESBVg+QtPlRWhS2DN7cs3EYRMA0GCSqGSIb3DQEBDQUA -MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy -dHBsdXMgUm9vdCBDQSBHMTAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBa -MD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2Vy -dHBsdXMgUm9vdCBDQSBHMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -ANpQh7bauKk+nWT6VjOaVj0W5QOVsjQcmm1iBdTYj+eJZJ+622SLZOZ5KmHNr49a -iZFluVj8tANfkT8tEBXgfs+8/H9DZ6itXjYj2JizTfNDnjl8KvzsiNWI7nC9hRYt -6kuJPKNxQv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP -0FG7Yn2ksYyy/yARujVjBYZHYEMzkPZHogNPlk2dT8Hq6pyi/jQu3rfKG3akt62f -6ajUeD94/vI4CTYd0hYCyOwqaK/1jpTvLRN6HkJKHRUxrgwEV/xhc/MxVoYxgKDE -EW4wduOU8F8ExKyHcomYxZ3MVwia9Az8fXoFOvpHgDm2z4QTd28n6v+WZxcIbekN -1iNQMLAVdBM+5S//Ds3EC0pd8NgAM0lm66EYfFkuPSi5YXHLtaW6uOrc4nBvCGrc -h2c0798wct3zyT8j/zXhviEpIDCB5BmlIOklynMxdCm+4kLV87ImZsdo/Rmz5yCT -mehd4F6H50boJZwKKSTUzViGUkAksnsPmBIgJPaQbEfIDbsYIC7Z/fyL8inqh3SV -4EJQeIQEQWGw9CEjjy3LKCHyamz0GqbFFLQ3ZU+V/YDI+HLlJWvEYLF7bY5KinPO -WftwenMGE9nTdDckQQoRb5fc5+R+ob0V8rqHDz1oihYHAgMBAAGjYzBhMA4GA1Ud -DwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSowcCbkahDFXxd -Bie0KlHYlwuBsTAfBgNVHSMEGDAWgBSowcCbkahDFXxdBie0KlHYlwuBsTANBgkq -hkiG9w0BAQ0FAAOCAgEAnFZvAX7RvUz1isbwJh/k4DgYzDLDKTudQSk0YcbX8ACh -66Ryj5QXvBMsdbRX7gp8CXrc1cqh0DQT+Hern+X+2B50ioUHj3/MeXrKls3N/U/7 -/SMNkPX0XtPGYX2eEeAC7gkE2Qfdpoq3DIMku4NQkv5gdRE+2J2winq14J2by5BS -S7CTKtQ+FjPlnsZlFT5kOwQ/2wyPX1wdaR+v8+khjPPvl/aatxm2hHSco1S1cE5j -2FddUyGbQJJD+tZ3VTNPZNX70Cxqjm0lpu+F6ALEUz65noe8zDUa3qHpimOHZR4R -Kttjd5cUvpoUmRGywO6wT/gUITJDT5+rosuoD6o7BlXGEilXCNQ314cnrUlZp5Gr -RHpejXDbl85IULFzk/bwg2D5zfHhMf1bfHEhYxQUqq/F3pN+aLHsIqKqkHWetUNy -6mSjhEv9DKgma3GX7lZjZuhCVPnHHd/Qj1vfyDBviP4NxDMcU6ij/UgQ8uQKTuEV -V/xuZDDCVRHc6qnNSlSsKWNEz0pAoNZoWRsz+e86i9sgktxChL8Bq4fA1SCC28a5 -g4VCXA9DO2pJNdWY9BW/+mGBDAkgGNLQFwzLSABQ6XaCjGTXOqAHVcweMcDvOrRl -++O/QmueD6i9a5jc2NvLi6Td11n0bt3+qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo= ------END CERTIFICATE----- - -# Issuer: CN=Certplus Root CA G2 O=Certplus -# Subject: CN=Certplus Root CA G2 O=Certplus -# Label: "Certplus Root CA G2" -# Serial: 1492087096131536844209563509228951875861589 -# MD5 Fingerprint: a7:ee:c4:78:2d:1b:ee:2d:b9:29:ce:d6:a7:96:32:31 -# SHA1 Fingerprint: 4f:65:8e:1f:e9:06:d8:28:02:e9:54:47:41:c9:54:25:5d:69:cc:1a -# SHA256 Fingerprint: 6c:c0:50:41:e6:44:5e:74:69:6c:4c:fb:c9:f8:0f:54:3b:7e:ab:bb:44:b4:ce:6f:78:7c:6a:99:71:c4:2f:17 ------BEGIN CERTIFICATE----- -MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4x -CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs -dXMgUm9vdCBDQSBHMjAeFw0xNDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4x -CzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBs -dXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABM0PW1aC3/BFGtat -93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uNAm8x -Ik0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0P -AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwj -FNiPwyCrKGBZMB8GA1UdIwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqG -SM49BAMDA2gAMGUCMHD+sAvZ94OX7PNVHdTcswYO/jOYnYs5kGuUIe22113WTNch -p+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjlvPl5adytRSv3tjFzzAal -U5ORGpOucGpnutee5WEaXw== ------END CERTIFICATE----- - -# Issuer: CN=OpenTrust Root CA G1 O=OpenTrust -# Subject: CN=OpenTrust Root CA G1 O=OpenTrust -# Label: "OpenTrust Root CA G1" -# Serial: 1492036577811947013770400127034825178844775 -# MD5 Fingerprint: 76:00:cc:81:29:cd:55:5e:88:6a:7a:2e:f7:4d:39:da -# SHA1 Fingerprint: 79:91:e8:34:f7:e2:ee:dd:08:95:01:52:e9:55:2d:14:e9:58:d5:7e -# SHA256 Fingerprint: 56:c7:71:28:d9:8c:18:d9:1b:4c:fd:ff:bc:25:ee:91:03:d4:75:8e:a2:ab:ad:82:6a:90:f3:45:7d:46:0e:b4 ------BEGIN CERTIFICATE----- -MIIFbzCCA1egAwIBAgISESCzkFU5fX82bWTCp59rY45nMA0GCSqGSIb3DQEBCwUA -MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w -ZW5UcnVzdCBSb290IENBIEcxMB4XDTE0MDUyNjA4NDU1MFoXDTM4MDExNTAwMDAw -MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU -T3BlblRydXN0IFJvb3QgQ0EgRzEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQD4eUbalsUwXopxAy1wpLuwxQjczeY1wICkES3d5oeuXT2R0odsN7faYp6b -wiTXj/HbpqbfRm9RpnHLPhsxZ2L3EVs0J9V5ToybWL0iEA1cJwzdMOWo010hOHQX -/uMftk87ay3bfWAfjH1MBcLrARYVmBSO0ZB3Ij/swjm4eTrwSSTilZHcYTSSjFR0 -77F9jAHiOH3BX2pfJLKOYheteSCtqx234LSWSE9mQxAGFiQD4eCcjsZGT44ameGP -uY4zbGneWK2gDqdkVBFpRGZPTBKnjix9xNRbxQA0MMHZmf4yzgeEtE7NCv82TWLx -p2NX5Ntqp66/K7nJ5rInieV+mhxNaMbBGN4zK1FGSxyO9z0M+Yo0FMT7MzUj8czx -Kselu7Cizv5Ta01BG2Yospb6p64KTrk5M0ScdMGTHPjgniQlQ/GbI4Kq3ywgsNw2 -TgOzfALU5nsaqocTvz6hdLubDuHAk5/XpGbKuxs74zD0M1mKB3IDVedzagMxbm+W -G+Oin6+Sx+31QrclTDsTBM8clq8cIqPQqwWyTBIjUtz9GVsnnB47ev1CI9sjgBPw -vFEVVJSmdz7QdFG9URQIOTfLHzSpMJ1ShC5VkLG631UAC9hWLbFJSXKAqWLXwPYY -EQRVzXR7z2FwefR7LFxckvzluFqrTJOVoSfupb7PcSNCupt2LQIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUl0YhVyE1 -2jZVx/PxN3DlCPaTKbYwHwYDVR0jBBgwFoAUl0YhVyE12jZVx/PxN3DlCPaTKbYw -DQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E -PLuHIT839HEl2ku6q5aCgZG27dmxpGWX4m9kWaSW7mDKHyP7Rbr/jyTwyqkxf3kf -gLMtMrpkZ2CvuVnN35pJ06iCsfmYlIrM4LvgBBuZYLFGZdwIorJGnkSI6pN+VxbS -FXJfLkur1J1juONI5f6ELlgKn0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0 -V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLhX4SPgPL0DTatdrOjteFkdjpY3H1P -XlZs5VVZV6Xf8YpmMIzUUmI4d7S+KNfKNsSbBfD4Fdvb8e80nR14SohWZ25g/4/I -i+GOvUKpMwpZQhISKvqxnUOOBZuZ2mKtVzazHbYNeS2WuOvyDEsMpZTGMKcmGS3t -TAZQMPH9WD25SxdfGbRqhFS0OE85og2WaMMolP3tLR9Ka0OWLpABEPs4poEL0L91 -09S5zvE/bw4cHjdx5RiHdRk/ULlepEU0rbDK5uUTdg8xFKmOLZTW1YVNcxVPS/Ky -Pu1svf0OnWZzsD2097+o4BGkxK51CUpjAEggpsadCwmKtODmzj7HPiY46SvepghJ -AwSQiumPv+i2tCqjI40cHLI5kqiPAlxAOXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj -1oxx ------END CERTIFICATE----- - -# Issuer: CN=OpenTrust Root CA G2 O=OpenTrust -# Subject: CN=OpenTrust Root CA G2 O=OpenTrust -# Label: "OpenTrust Root CA G2" -# Serial: 1492012448042702096986875987676935573415441 -# MD5 Fingerprint: 57:24:b6:59:24:6b:ae:c8:fe:1c:0c:20:f2:c0:4e:eb -# SHA1 Fingerprint: 79:5f:88:60:c5:ab:7c:3d:92:e6:cb:f4:8d:e1:45:cd:11:ef:60:0b -# SHA256 Fingerprint: 27:99:58:29:fe:6a:75:15:c1:bf:e8:48:f9:c4:76:1d:b1:6c:22:59:29:25:7b:f4:0d:08:94:f2:9e:a8:ba:f2 ------BEGIN CERTIFICATE----- -MIIFbzCCA1egAwIBAgISESChaRu/vbm9UpaPI+hIvyYRMA0GCSqGSIb3DQEBDQUA -MEAxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9w -ZW5UcnVzdCBSb290IENBIEcyMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAw -MFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwU -T3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQDMtlelM5QQgTJT32F+D3Y5z1zCU3UdSXqWON2ic2rxb95eolq5cSG+Ntmh -/LzubKh8NBpxGuga2F8ORAbtp+Dz0mEL4DKiltE48MLaARf85KxP6O6JHnSrT78e -CbY2albz4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/6 -1UWY0jUJ9gNDlP7ZvyCVeYCYitmJNbtRG6Q3ffyZO6v/v6wNj0OxmXsWEH4db0fE -FY8ElggGQgT4hNYdvJGmQr5J1WqIP7wtUdGejeBSzFfdNTVY27SPJIjki9/ca1TS -gSuyzpJLHB9G+h3Ykst2Z7UJmQnlrBcUVXDGPKBWCgOz3GIZ38i1MH/1PCZ1Eb3X -G7OHngevZXHloM8apwkQHZOJZlvoPGIytbU6bumFAYueQ4xncyhZW+vj3CzMpSZy -YhK05pyDRPZRpOLAeiRXyg6lPzq1O4vldu5w5pLeFlwoW5cZJ5L+epJUzpM5ChaH -vGOz9bGTXOBut9Dq+WIyiET7vycotjCVXRIouZW+j1MY5aIYFuJWpLIsEPUdN6b4 -t/bQWVyJ98LVtZR00dX+G7bw5tYee9I8y6jj9RjzIR9u701oBnstXW5DiabA+aC/ -gh7PU3+06yzbXfZqfUAkBXKJOAGTy3HCOV0GEfZvePg3DTmEJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUajn6QiL3 -5okATV59M4PLuG53hq8wHwYDVR0jBBgwFoAUajn6QiL35okATV59M4PLuG53hq8w -DQYJKoZIhvcNAQENBQADggIBAJjLq0A85TMCl38th6aP1F5Kr7ge57tx+4BkJamz -Gj5oXScmp7oq4fBXgwpkTx4idBvpkF/wrM//T2h6OKQQbA2xx6R3gBi2oihEdqc0 -nXGEL8pZ0keImUEiyTCYYW49qKgFbdEfwFFEVn8nNQLdXpgKQuswv42hm1GqO+qT -RmTFAHneIWv2V6CG1wZy7HBGS4tz3aAhdT7cHcCP009zHIXZ/n9iyJVvttN7jLpT -wm+bREx50B1ws9efAvSyB7DH5fitIw6mVskpEndI2S9G/Tvw/HRwkqWOOAgfZDC2 -t0v7NqwQjqBSM2OdAzVWxWm9xiNaJ5T2pBL4LTM8oValX9YZ6e18CL13zSdkzJTa -TkZQh+D5wVOAHrut+0dSixv9ovneDiK3PTNZbNTe9ZUGMg1RGUFcPk8G97krgCf2 -o6p6fAbhQ8MTOWIaNr3gKC6UAuQpLmBVrkA9sHSSXvAgZJY/X0VdiLWK2gKgW0VU -3jg9CcCoSmVGFvyqv1ROTVu+OEO3KMqLM6oaJbolXCkvW0pujOotnCr2BXbgd5eA -iN1nE28daCSLT7d0geX0YJ96Vdc+N9oWaz53rK4YcJUIeSkDiv7BO7M/Gg+kO14f -WKGVyasvc0rQLW6aWQ9VGHgtPFGml4vmu7JwqkwR3v98KzfUetF3NI/n+UL3PIEM -S1IK ------END CERTIFICATE----- - -# Issuer: CN=OpenTrust Root CA G3 O=OpenTrust -# Subject: CN=OpenTrust Root CA G3 O=OpenTrust -# Label: "OpenTrust Root CA G3" -# Serial: 1492104908271485653071219941864171170455615 -# MD5 Fingerprint: 21:37:b4:17:16:92:7b:67:46:70:a9:96:d7:a8:13:24 -# SHA1 Fingerprint: 6e:26:64:f3:56:bf:34:55:bf:d1:93:3f:7c:01:de:d8:13:da:8a:a6 -# SHA256 Fingerprint: b7:c3:62:31:70:6e:81:07:8c:36:7c:b8:96:19:8f:1e:32:08:dd:92:69:49:dd:8f:57:09:a4:10:f7:5b:62:92 ------BEGIN CERTIFICATE----- -MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAx -CzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5U -cnVzdCBSb290IENBIEczMB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFow -QDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9wZW5UcnVzdDEdMBsGA1UEAwwUT3Bl -blRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARK7liuTcpm -3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5Bta1d -oYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4G -A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5 -DMlv4VBN0BBY3JWIbTAfBgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAK -BggqhkjOPQQDAwNpADBmAjEAj6jcnboMBBf6Fek9LykBl7+BFjNAk2z8+e2AcG+q -j9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta3U1fJAuwACEl74+nBCZx -4nxp5V2a+EEfOzmTk51V6s2N8fvB ------END CERTIFICATE----- - -# Issuer: CN=ISRG Root X1 O=Internet Security Research Group -# Subject: CN=ISRG Root X1 O=Internet Security Research Group -# Label: "ISRG Root X1" -# Serial: 172886928669790476064670243504169061120 -# MD5 Fingerprint: 0c:d2:f9:e0:da:17:73:e9:ed:86:4d:a5:e3:70:e7:4e -# SHA1 Fingerprint: ca:bd:2a:79:a1:07:6a:31:f2:1d:25:36:35:cb:03:9d:43:29:a5:e8 -# SHA256 Fingerprint: 96:bc:ec:06:26:49:76:f3:74:60:77:9a:cf:28:c5:a7:cf:e8:a3:c0:aa:e1:1a:8f:fc:ee:05:c0:bd:df:08:c6 ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- - -# Issuer: O=FNMT-RCM OU=AC RAIZ FNMT-RCM -# Subject: O=FNMT-RCM OU=AC RAIZ FNMT-RCM -# Label: "AC RAIZ FNMT-RCM" -# Serial: 485876308206448804701554682760554759 -# MD5 Fingerprint: e2:09:04:b4:d3:bd:d1:a0:14:fd:1a:d2:47:c4:57:1d -# SHA1 Fingerprint: ec:50:35:07:b2:15:c4:95:62:19:e2:a8:9a:5b:42:99:2c:4c:2c:20 -# SHA256 Fingerprint: eb:c5:57:0c:29:01:8c:4d:67:b1:aa:12:7b:af:12:f7:03:b4:61:1e:bc:17:b7:da:b5:57:38:94:17:9b:93:fa ------BEGIN CERTIFICATE----- -MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx -CzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJ -WiBGTk1ULVJDTTAeFw0wODEwMjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJ -BgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBG -Tk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALpxgHpMhm5/ -yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcfqQgf -BBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAz -WHFctPVrbtQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxF -tBDXaEAUwED653cXeuYLj2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z -374jNUUeAlz+taibmSXaXvMiwzn15Cou08YfxGyqxRxqAQVKL9LFwag0Jl1mpdIC -IfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mwWsXmo8RZZUc1g16p6DUL -mbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnTtOmlcYF7 -wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peS -MKGJ47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2 -ZSysV4999AeU14ECll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMet -UqIJ5G+GR4of6ygnXYMgrwTJbFaai0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUw -AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFPd9xf3E6Jobd2Sn9R2gzL+H -YJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3 -LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD -nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1 -RXxlDPiyN8+sD8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYM -LVN0V2Ue1bLdI4E7pWYjJ2cJj+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf -77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrTQfv6MooqtyuGC2mDOL7Nii4LcK2N -JpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW+YJF1DngoABd15jm -fZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7Ixjp -6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp -1txyM/1d8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B -9kiABdcPUXmsEKvU7ANm5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wok -RqEIr9baRRmW1FMdW4R58MD3R++Lj8UGrp1MYp3/RgT408m2ECVAdf4WqslKYIYv -uu8wd+RU4riEmViAqhOLUTpPSPaLtrM= ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 1 O=Amazon -# Subject: CN=Amazon Root CA 1 O=Amazon -# Label: "Amazon Root CA 1" -# Serial: 143266978916655856878034712317230054538369994 -# MD5 Fingerprint: 43:c6:bf:ae:ec:fe:ad:2f:18:c6:88:68:30:fc:c8:e6 -# SHA1 Fingerprint: 8d:a7:f9:65:ec:5e:fc:37:91:0f:1c:6e:59:fd:c1:cc:6a:6e:de:16 -# SHA256 Fingerprint: 8e:cd:e6:88:4f:3d:87:b1:12:5b:a3:1a:c3:fc:b1:3d:70:16:de:7f:57:cc:90:4f:e1:cb:97:c6:ae:98:19:6e ------BEGIN CERTIFICATE----- -MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF -ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 -b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL -MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv -b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj -ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM -9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw -IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6 -VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L -93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm -jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA -A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI -U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs -N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv -o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU -5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy -rqXRfboQnoZsG4q5WTP468SQvvG5 ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 2 O=Amazon -# Subject: CN=Amazon Root CA 2 O=Amazon -# Label: "Amazon Root CA 2" -# Serial: 143266982885963551818349160658925006970653239 -# MD5 Fingerprint: c8:e5:8d:ce:a8:42:e2:7a:c0:2a:5c:7c:9e:26:bf:66 -# SHA1 Fingerprint: 5a:8c:ef:45:d7:a6:98:59:76:7a:8c:8b:44:96:b5:78:cf:47:4b:1a -# SHA256 Fingerprint: 1b:a5:b2:aa:8c:65:40:1a:82:96:01:18:f8:0b:ec:4f:62:30:4d:83:ce:c4:71:3a:19:c3:9c:01:1e:a4:6d:b4 ------BEGIN CERTIFICATE----- -MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwF -ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6 -b24gUm9vdCBDQSAyMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTEL -MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv -b3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK2Wny2cSkxK -gXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4kHbZ -W0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg -1dKmSYXpN+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K -8nu+NQWpEjTj82R0Yiw9AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r -2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvdfLC6HM783k81ds8P+HgfajZRRidhW+me -z/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAExkv8LV/SasrlX6avvDXbR -8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSSbtqDT6Zj -mUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz -7Mt0Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6 -+XUyo05f7O0oYtlNc/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI -0u1ufm8/0i2BWSlmy5A5lREedCf+3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMB -Af8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSwDPBMMPQFWAJI/TPlUq9LhONm -UjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oAA7CXDpO8Wqj2 -LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY -+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kS -k5Nrp+gvU5LEYFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl -7uxMMne0nxrpS10gxdr9HIcWxkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygm -btmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQgj9sAq+uEjonljYE1x2igGOpm/Hl -urR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbWaQbLU8uz/mtBzUF+ -fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoVYh63 -n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE -76KlXIx3KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H -9jVlpNMKVv/1F2Rs76giJUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT -4PsJYGw= ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 3 O=Amazon -# Subject: CN=Amazon Root CA 3 O=Amazon -# Label: "Amazon Root CA 3" -# Serial: 143266986699090766294700635381230934788665930 -# MD5 Fingerprint: a0:d4:ef:0b:f7:b5:d8:49:95:2a:ec:f5:c4:fc:81:87 -# SHA1 Fingerprint: 0d:44:dd:8c:3c:8c:1a:1a:58:75:64:81:e9:0f:2e:2a:ff:b3:d2:6e -# SHA256 Fingerprint: 18:ce:6c:fe:7b:f1:4e:60:b2:e3:47:b8:df:e8:68:cb:31:d0:2e:bb:3a:da:27:15:69:f5:03:43:b4:6d:b3:a4 ------BEGIN CERTIFICATE----- -MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5 -MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g -Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG -A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg -Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl -ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr -ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr -BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM -YyRIHN8wfdVoOw== ------END CERTIFICATE----- - -# Issuer: CN=Amazon Root CA 4 O=Amazon -# Subject: CN=Amazon Root CA 4 O=Amazon -# Label: "Amazon Root CA 4" -# Serial: 143266989758080763974105200630763877849284878 -# MD5 Fingerprint: 89:bc:27:d5:eb:17:8d:06:6a:69:d5:fd:89:47:b4:cd -# SHA1 Fingerprint: f6:10:84:07:d6:f8:bb:67:98:0c:c2:e2:44:c2:eb:ae:1c:ef:63:be -# SHA256 Fingerprint: e3:5d:28:41:9e:d0:20:25:cf:a6:90:38:cd:62:39:62:45:8d:a5:c6:95:fb:de:a3:c2:2b:0b:fb:25:89:70:92 ------BEGIN CERTIFICATE----- -MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5 -MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g -Um9vdCBDQSA0MB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG -A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg -Q0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN/sGKe0uoe0ZLY7Bi -9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri83Bk -M6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WB -MAoGCCqGSM49BAMDA2gAMGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlw -CkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1AE47xDqUEpHJWEadIRNyp4iciuRMStuW -1KyLa2tJElMzrdfkviT8tQp21KW8EA== ------END CERTIFICATE----- - -# Issuer: CN=LuxTrust Global Root 2 O=LuxTrust S.A. -# Subject: CN=LuxTrust Global Root 2 O=LuxTrust S.A. -# Label: "LuxTrust Global Root 2" -# Serial: 59914338225734147123941058376788110305822489521 -# MD5 Fingerprint: b2:e1:09:00:61:af:f7:f1:91:6f:c4:ad:8d:5e:3b:7c -# SHA1 Fingerprint: 1e:0e:56:19:0a:d1:8b:25:98:b2:04:44:ff:66:8a:04:17:99:5f:3f -# SHA256 Fingerprint: 54:45:5f:71:29:c2:0b:14:47:c4:18:f9:97:16:8f:24:c5:8f:c5:02:3b:f5:da:5b:e2:eb:6e:1d:d8:90:2e:d5 ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - -# Issuer: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM -# Subject: CN=TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 O=Turkiye Bilimsel ve Teknolojik Arastirma Kurumu - TUBITAK OU=Kamu Sertifikasyon Merkezi - Kamu SM -# Label: "TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1" -# Serial: 1 -# MD5 Fingerprint: dc:00:81:dc:69:2f:3e:2f:b0:3b:f6:3d:5a:91:8e:49 -# SHA1 Fingerprint: 31:43:64:9b:ec:ce:27:ec:ed:3a:3f:0b:8f:0d:e4:e8:91:dd:ee:ca -# SHA256 Fingerprint: 46:ed:c3:68:90:46:d5:3a:45:3f:b3:10:4a:b8:0d:ca:ec:65:8b:26:60:ea:16:29:dd:7e:86:79:90:64:87:16 ------BEGIN CERTIFICATE----- -MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIx -GDAWBgNVBAcTD0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxp -bXNlbCB2ZSBUZWtub2xvamlrIEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0w -KwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24gTWVya2V6aSAtIEthbXUgU00xNjA0 -BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRpZmlrYXNpIC0gU3Vy -dW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYDVQQG -EwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXll -IEJpbGltc2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklU -QUsxLTArBgNVBAsTJEthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBT -TTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11IFNNIFNTTCBLb2sgU2VydGlmaWthc2kg -LSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr3UwM6q7 -a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y86Ij5iySr -LqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INr -N3wcwv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2X -YacQuFWQfw4tJzh03+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/ -iSIzL+aFCr2lqBs23tPcLG07xxO9WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4f -AJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQUZT/HiobGPN08VFw1+DrtUgxH -V8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL -BQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh -AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPf -IPP54+M638yclNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4 -lzwDGrpDxpa5RXI4s6ehlj2Re37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c -8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0jq5Rm+K37DwhuJi1/FwcJsoz7UMCf -lo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM= ------END CERTIFICATE----- -# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited -# Label: "Entrust.net Secure Server CA" -# Serial: 927650371 -# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee -# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 -# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority -# Label: "ValiCert Class 2 VA" -# Serial: 1 -# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 -# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 -# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- - -# Issuer: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Expressz (Class C) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Express (Class C) Root" -# Serial: 104 -# MD5 Fingerprint: 4f:eb:f1:f0:70:c2:80:63:5d:58:9f:da:12:3c:a9:c4 -# SHA1 Fingerprint: e3:92:51:2f:0a:cf:f5:05:df:f6:de:06:7f:75:37:e1:65:ea:57:4b -# SHA256 Fingerprint: 0b:5e:ed:4e:84:64:03:cf:55:e0:65:84:84:40:ed:2a:82:75:8b:f5:b9:aa:1f:25:3d:46:13:cf:a0:80:ff:3f ------BEGIN CERTIFICATE----- -MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQD -EytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBDKSBUYW51c2l0dmFueWtpYWRvMB4X -DTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJBgNVBAYTAkhVMREw -DwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9u -c2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMr -TmV0TG9jayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNA -OoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3ZW3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC -2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63euyucYT2BDMIJTLrdKwW -RMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQwDgYDVR0P -AQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEW -ggJNRklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0 -YWxhbm9zIFN6b2xnYWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFz -b2sgYWxhcGphbiBrZXN6dWx0LiBBIGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBO -ZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1iaXp0b3NpdGFzYSB2ZWRpLiBB -IGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0ZWxlIGF6IGVs -b2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs -ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25s -YXBqYW4gYSBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kg -a2VyaGV0byBheiBlbGxlbm9yemVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4g -SU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5kIHRoZSB1c2Ugb2YgdGhpcyBjZXJ0 -aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQUyBhdmFpbGFibGUg -YXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwgYXQg -Y3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmY -ta3UzbM2xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2g -pO0u9f38vf5NNwgMvOOWgyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4 -Fp1hBWeAyNDYpQcCNJgEjTME1A== ------END CERTIFICATE----- - -# Issuer: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Subject: CN=NetLock Uzleti (Class B) Tanusitvanykiado O=NetLock Halozatbiztonsagi Kft. OU=Tanusitvanykiadok -# Label: "NetLock Business (Class B) Root" -# Serial: 105 -# MD5 Fingerprint: 39:16:aa:b9:6a:41:e1:14:69:df:9e:6c:3b:72:dc:b6 -# SHA1 Fingerprint: 87:9f:4b:ee:05:df:98:58:3b:e3:60:d6:33:e7:0d:3f:fe:98:71:af -# SHA256 Fingerprint: 39:df:7b:68:2b:7b:93:8f:84:71:54:81:cc:de:8d:60:d8:f2:2e:c5:98:87:7d:0a:aa:c1:2b:59:18:2b:03:12 ------BEGIN CERTIFICATE----- -MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUx -ETAPBgNVBAcTCEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0 -b25zYWdpIEtmdC4xGjAYBgNVBAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQD -EylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikgVGFudXNpdHZhbnlraWFkbzAeFw05 -OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYDVQQGEwJIVTERMA8G -A1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNh -Z2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5l -dExvY2sgVXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqG -SIb3DQEBAQUAA4GNADCBiQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xK -gZjupNTKihe5In+DCnVMm8Bp2GQ5o+2So/1bXHQawEfKOml2mrriRBf8TKPV/riX -iK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr1nGTLbO/CVRY7QbrqHvc -Q7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8E -BAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1G -SUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFu -b3MgU3pvbGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBh -bGFwamFuIGtlc3p1bHQuIEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExv -Y2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRvc2l0YXNhIHZlZGkuIEEgZGln -aXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUgYXogZWxvaXJ0 -IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh -c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGph -biBhIGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJo -ZXRvIGF6IGVsbGVub3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBP -UlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmlj -YXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2YWlsYWJsZSBhdCBo -dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBjcHNA -bmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06 -sPgzTEdM43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXa -n3BukxowOR0w2y7jfLKRstE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKS -NitjrFgBazMpUIaD8QFI ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority -# Label: "RSA Root Certificate 1" -# Serial: 1 -# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 -# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb -# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy -NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD -cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs -2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY -JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE -Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ -n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A -PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu ------END CERTIFICATE----- - -# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority -# Label: "ValiCert Class 1 VA" -# Serial: 1 -# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb -# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e -# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- - -# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure eBusiness CA 1" -# Serial: 4 -# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d -# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 -# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- - -# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. -# Label: "Equifax Secure Global eBusiness CA" -# Serial: 1 -# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc -# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 -# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- - -# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Premium Server CA" -# Serial: 1 -# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a -# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a -# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- - -# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division -# Label: "Thawte Server CA" -# Serial: 1 -# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d -# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c -# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 149843929435818692848040365716851702463 -# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 -# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 -# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority -# Label: "Verisign Class 3 Public Primary Certification Authority" -# Serial: 80507572722862485515306429940691309246 -# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 -# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b -# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i -2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ -2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ ------END CERTIFICATE----- - -# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network -# Label: "Verisign Class 3 Public Primary Certification Authority - G2" -# Serial: 167285380242319648451154478808036881606 -# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 -# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f -# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- - -# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. -# Label: "GTE CyberTrust Global Root" -# Serial: 421 -# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db -# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 -# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- - -# Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority -# Subject: C=US, O=Equifax, OU=Equifax Secure Certificate Authority -# Label: "Equifax Secure Certificate Authority" -# Serial: 903804111 -# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 -# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a -# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst deleted file mode 100644 index c0f044d..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,70 +0,0 @@ -Chardet: The Universal Character Encoding Detector --------------------------------------------------- - -.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg - :alt: Build status - :target: https://travis-ci.org/chardet/chardet - -.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg - :target: https://coveralls.io/r/chardet/chardet - -.. image:: https://img.shields.io/pypi/v/chardet.svg - :target: https://warehouse.python.org/project/chardet/ - :alt: Latest version on PyPI - -.. image:: https://img.shields.io/pypi/l/chardet.svg - :alt: License - - -Detects - - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) - - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) - - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) - - EUC-KR, ISO-2022-KR (Korean) - - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) - - ISO-8859-5, windows-1251 (Bulgarian) - - ISO-8859-1, windows-1252 (Western European languages) - - ISO-8859-7, windows-1253 (Greek) - - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) - - TIS-620 (Thai) - -.. note:: - Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily - disabled until we can retrain the models. - -Requires Python 2.6, 2.7, or 3.3+. - -Installation ------------- - -Install from `PyPI `_:: - - pip install chardet - -Documentation -------------- - -For users, docs are now available at https://chardet.readthedocs.io/. - -Command-line Tool ------------------ - -chardet comes with a command-line script which reports on the encodings of one -or more files:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -About ------ - -This is a continuation of Mark Pilgrim's excellent chardet. Previously, two -versions needed to be maintained: one that supported python 2.x and one that -supported python 3.x. We've recently merged with `Ian Cordasco `_'s -`charade `_ fork, so now we have one -coherent version that works for Python 2.6+. - -:maintainer: Dan Blanchard - - diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA deleted file mode 100644 index 1427867..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/METADATA +++ /dev/null @@ -1,96 +0,0 @@ -Metadata-Version: 2.0 -Name: chardet -Version: 3.0.4 -Summary: Universal encoding detector for Python 2 and 3 -Home-page: https://github.com/chardet/chardet -Author: Daniel Blanchard -Author-email: dan.blanchard@gmail.com -License: LGPL -Keywords: encoding,i18n,xml -Platform: UNKNOWN -Classifier: Development Status :: 4 - Beta -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Text Processing :: Linguistic - -Chardet: The Universal Character Encoding Detector --------------------------------------------------- - -.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg - :alt: Build status - :target: https://travis-ci.org/chardet/chardet - -.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg - :target: https://coveralls.io/r/chardet/chardet - -.. image:: https://img.shields.io/pypi/v/chardet.svg - :target: https://warehouse.python.org/project/chardet/ - :alt: Latest version on PyPI - -.. image:: https://img.shields.io/pypi/l/chardet.svg - :alt: License - - -Detects - - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants) - - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese) - - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese) - - EUC-KR, ISO-2022-KR (Korean) - - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic) - - ISO-8859-5, windows-1251 (Bulgarian) - - ISO-8859-1, windows-1252 (Western European languages) - - ISO-8859-7, windows-1253 (Greek) - - ISO-8859-8, windows-1255 (Visual and Logical Hebrew) - - TIS-620 (Thai) - -.. note:: - Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily - disabled until we can retrain the models. - -Requires Python 2.6, 2.7, or 3.3+. - -Installation ------------- - -Install from `PyPI `_:: - - pip install chardet - -Documentation -------------- - -For users, docs are now available at https://chardet.readthedocs.io/. - -Command-line Tool ------------------ - -chardet comes with a command-line script which reports on the encodings of one -or more files:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -About ------ - -This is a continuation of Mark Pilgrim's excellent chardet. Previously, two -versions needed to be maintained: one that supported python 2.x and one that -supported python 3.x. We've recently merged with `Ian Cordasco `_'s -`charade `_ fork, so now we have one -coherent version that works for Python 2.6+. - -:maintainer: Dan Blanchard - - diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD deleted file mode 100644 index 4ac3e79..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/RECORD +++ /dev/null @@ -1,91 +0,0 @@ -chardet/__init__.py,sha256=YsP5wQlsHJ2auF1RZJfypiSrCA7_bQiRm3ES_NI76-Y,1559 -chardet/big5freq.py,sha256=D_zK5GyzoVsRes0HkLJziltFQX0bKCLOrFe9_xDvO_8,31254 -chardet/big5prober.py,sha256=kBxHbdetBpPe7xrlb-e990iot64g_eGSLd32lB7_h3M,1757 -chardet/chardistribution.py,sha256=3woWS62KrGooKyqz4zQSnjFbJpa6V7g02daAibTwcl8,9411 -chardet/charsetgroupprober.py,sha256=6bDu8YIiRuScX4ca9Igb0U69TA2PGXXDej6Cc4_9kO4,3787 -chardet/charsetprober.py,sha256=KSmwJErjypyj0bRZmC5F5eM7c8YQgLYIjZXintZNstg,5110 -chardet/codingstatemachine.py,sha256=VYp_6cyyki5sHgXDSZnXW4q1oelHc3cu9AyQTX7uug8,3590 -chardet/compat.py,sha256=PKTzHkSbtbHDqS9PyujMbX74q1a8mMpeQTDVsQhZMRw,1134 -chardet/cp949prober.py,sha256=TZ434QX8zzBsnUvL_8wm4AQVTZ2ZkqEEQL_lNw9f9ow,1855 -chardet/enums.py,sha256=Aimwdb9as1dJKZaFNUH2OhWIVBVd6ZkJJ_WK5sNY8cU,1661 -chardet/escprober.py,sha256=kkyqVg1Yw3DIOAMJ2bdlyQgUFQhuHAW8dUGskToNWSc,3950 -chardet/escsm.py,sha256=RuXlgNvTIDarndvllNCk5WZBIpdCxQ0kcd9EAuxUh84,10510 -chardet/eucjpprober.py,sha256=iD8Jdp0ISRjgjiVN7f0e8xGeQJ5GM2oeZ1dA8nbSeUw,3749 -chardet/euckrfreq.py,sha256=-7GdmvgWez4-eO4SuXpa7tBiDi5vRXQ8WvdFAzVaSfo,13546 -chardet/euckrprober.py,sha256=MqFMTQXxW4HbzIpZ9lKDHB3GN8SP4yiHenTmf8g_PxY,1748 -chardet/euctwfreq.py,sha256=No1WyduFOgB5VITUA7PLyC5oJRNzRyMbBxaKI1l16MA,31621 -chardet/euctwprober.py,sha256=13p6EP4yRaxqnP4iHtxHOJ6R2zxHq1_m8hTRjzVZ95c,1747 -chardet/gb2312freq.py,sha256=JX8lsweKLmnCwmk8UHEQsLgkr_rP_kEbvivC4qPOrlc,20715 -chardet/gb2312prober.py,sha256=gGvIWi9WhDjE-xQXHvNIyrnLvEbMAYgyUSZ65HUfylw,1754 -chardet/hebrewprober.py,sha256=c3SZ-K7hvyzGY6JRAZxJgwJ_sUS9k0WYkvMY00YBYFo,13838 -chardet/jisfreq.py,sha256=vpmJv2Bu0J8gnMVRPHMFefTRvo_ha1mryLig8CBwgOg,25777 -chardet/jpcntx.py,sha256=PYlNqRUQT8LM3cT5FmHGP0iiscFlTWED92MALvBungo,19643 -chardet/langbulgarianmodel.py,sha256=1HqQS9Pbtnj1xQgxitJMvw8X6kKr5OockNCZWfEQrPE,12839 -chardet/langcyrillicmodel.py,sha256=LODajvsetH87yYDDQKA2CULXUH87tI223dhfjh9Zx9c,17948 -chardet/langgreekmodel.py,sha256=8YAW7bU8YwSJap0kIJSbPMw1BEqzGjWzqcqf0WgUKAA,12688 -chardet/langhebrewmodel.py,sha256=JSnqmE5E62tDLTPTvLpQsg5gOMO4PbdWRvV7Avkc0HA,11345 -chardet/langhungarianmodel.py,sha256=RhapYSG5l0ZaO-VV4Fan5sW0WRGQqhwBM61yx3yxyOA,12592 -chardet/langthaimodel.py,sha256=8l0173Gu_W6G8mxmQOTEF4ls2YdE7FxWf3QkSxEGXJQ,11290 -chardet/langturkishmodel.py,sha256=W22eRNJsqI6uWAfwXSKVWWnCerYqrI8dZQTm_M0lRFk,11102 -chardet/latin1prober.py,sha256=S2IoORhFk39FEFOlSFWtgVybRiP6h7BlLldHVclNkU8,5370 -chardet/mbcharsetprober.py,sha256=AR95eFH9vuqSfvLQZN-L5ijea25NOBCoXqw8s5O9xLQ,3413 -chardet/mbcsgroupprober.py,sha256=h6TRnnYq2OxG1WdD5JOyxcdVpn7dG0q-vB8nWr5mbh4,2012 -chardet/mbcssm.py,sha256=SY32wVIF3HzcjY3BaEspy9metbNSKxIIB0RKPn7tjpI,25481 -chardet/sbcharsetprober.py,sha256=LDSpCldDCFlYwUkGkwD2oFxLlPWIWXT09akH_2PiY74,5657 -chardet/sbcsgroupprober.py,sha256=1IprcCB_k1qfmnxGC6MBbxELlKqD3scW6S8YIwdeyXA,3546 -chardet/sjisprober.py,sha256=IIt-lZj0WJqK4rmUZzKZP4GJlE8KUEtFYVuY96ek5MQ,3774 -chardet/universaldetector.py,sha256=qL0174lSZE442eB21nnktT9_VcAye07laFWUeUrjttY,12485 -chardet/utf8prober.py,sha256=IdD8v3zWOsB8OLiyPi-y_fqwipRFxV9Nc1eKBLSuIEw,2766 -chardet/version.py,sha256=sp3B08mrDXB-pf3K9fqJ_zeDHOCLC8RrngQyDFap_7g,242 -chardet/cli/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 -chardet/cli/chardetect.py,sha256=YBO8L4mXo0WR6_-Fjh_8QxPBoEBNqB9oNxNrdc54AQs,2738 -chardet-3.0.4.dist-info/DESCRIPTION.rst,sha256=PQ4sBsMyKFZkjC6QpmbpLn0UtCNyeb-ZqvCGEgyZMGk,2174 -chardet-3.0.4.dist-info/METADATA,sha256=RV_2I4B1Z586DL8oVO5Kp7X5bUdQ5EuKAvNoAEF8wSw,3239 -chardet-3.0.4.dist-info/RECORD,, -chardet-3.0.4.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -chardet-3.0.4.dist-info/entry_points.txt,sha256=fAMmhu5eJ-zAJ-smfqQwRClQ3-nozOCmvJ6-E8lgGJo,60 -chardet-3.0.4.dist-info/metadata.json,sha256=0htbRM18ujyGZDdfowgAqj6Hq2eQtwzwyhaEveKntgo,1375 -chardet-3.0.4.dist-info/top_level.txt,sha256=AowzBbZy4x8EirABDdJSLJZMkJ_53iIag8xfKR6D7kI,8 -../../../bin/chardetect,sha256=B0jxRmDzoJT_r6ySTR32CuxQArixTVuDsEbfA0d7R1E,279 -chardet-3.0.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -chardet/__pycache__/__init__.cpython-36.pyc,, -chardet/__pycache__/big5freq.cpython-36.pyc,, -chardet/__pycache__/big5prober.cpython-36.pyc,, -chardet/__pycache__/chardistribution.cpython-36.pyc,, -chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, -chardet/__pycache__/charsetprober.cpython-36.pyc,, -chardet/__pycache__/codingstatemachine.cpython-36.pyc,, -chardet/__pycache__/compat.cpython-36.pyc,, -chardet/__pycache__/cp949prober.cpython-36.pyc,, -chardet/__pycache__/enums.cpython-36.pyc,, -chardet/__pycache__/escprober.cpython-36.pyc,, -chardet/__pycache__/escsm.cpython-36.pyc,, -chardet/__pycache__/eucjpprober.cpython-36.pyc,, -chardet/__pycache__/euckrfreq.cpython-36.pyc,, -chardet/__pycache__/euckrprober.cpython-36.pyc,, -chardet/__pycache__/euctwfreq.cpython-36.pyc,, -chardet/__pycache__/euctwprober.cpython-36.pyc,, -chardet/__pycache__/gb2312freq.cpython-36.pyc,, -chardet/__pycache__/gb2312prober.cpython-36.pyc,, -chardet/__pycache__/hebrewprober.cpython-36.pyc,, -chardet/__pycache__/jisfreq.cpython-36.pyc,, -chardet/__pycache__/jpcntx.cpython-36.pyc,, -chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, -chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, -chardet/__pycache__/langgreekmodel.cpython-36.pyc,, -chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, -chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, -chardet/__pycache__/langthaimodel.cpython-36.pyc,, -chardet/__pycache__/langturkishmodel.cpython-36.pyc,, -chardet/__pycache__/latin1prober.cpython-36.pyc,, -chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, -chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, -chardet/__pycache__/mbcssm.cpython-36.pyc,, -chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, -chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, -chardet/__pycache__/sjisprober.cpython-36.pyc,, -chardet/__pycache__/universaldetector.cpython-36.pyc,, -chardet/__pycache__/utf8prober.cpython-36.pyc,, -chardet/__pycache__/version.cpython-36.pyc,, -chardet/cli/__pycache__/__init__.cpython-36.pyc,, -chardet/cli/__pycache__/chardetect.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL deleted file mode 100644 index 8b6dd1b..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt deleted file mode 100644 index a884269..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[console_scripts] -chardetect = chardet.cli.chardetect:main - diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json deleted file mode 100644 index 8cdf025..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic"], "extensions": {"python.commands": {"wrap_console": {"chardetect": "chardet.cli.chardetect:main"}}, "python.details": {"contacts": [{"email": "dan.blanchard@gmail.com", "name": "Daniel Blanchard", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/chardet/chardet"}}, "python.exports": {"console_scripts": {"chardetect": "chardet.cli.chardetect:main"}}}, "generator": "bdist_wheel (0.29.0)", "keywords": ["encoding", "i18n", "xml"], "license": "LGPL", "metadata_version": "2.0", "name": "chardet", "summary": "Universal encoding detector for Python 2 and 3", "test_requires": [{"requires": ["hypothesis", "pytest"]}], "version": "3.0.4"} \ No newline at end of file diff --git a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt b/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt deleted file mode 100644 index 79236f2..0000000 --- a/env/lib/python3.6/site-packages/chardet-3.0.4.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -chardet diff --git a/env/lib/python3.6/site-packages/chardet/__init__.py b/env/lib/python3.6/site-packages/chardet/__init__.py deleted file mode 100644 index 0f9f820..0000000 --- a/env/lib/python3.6/site-packages/chardet/__init__.py +++ /dev/null @@ -1,39 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - - -from .compat import PY2, PY3 -from .universaldetector import UniversalDetector -from .version import __version__, VERSION - - -def detect(byte_str): - """ - Detect the encoding of the given byte string. - - :param byte_str: The byte sequence to examine. - :type byte_str: ``bytes`` or ``bytearray`` - """ - if not isinstance(byte_str, bytearray): - if not isinstance(byte_str, bytes): - raise TypeError('Expected object of type bytes or bytearray, got: ' - '{0}'.format(type(byte_str))) - else: - byte_str = bytearray(byte_str) - detector = UniversalDetector() - detector.feed(byte_str) - return detector.close() diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 603032b33c52443b8847e5fbfb5e71429ea11f4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmYjQL2uJA6t>eeNdrSI9N_39mDp0YuCNLrB$x!3f!IJ=E~y*4S*j!sj$78zT_}Hp z6DR%-M_)Pd7dY{pu46Cq%X{|w-urAn?`>`Q-`!uQ_Z@_OqZ?v@{Q^ey6cj@YXDG)Z z&aKeG#<#LYZijYlH?n5#gih{;F8DTUenX+hoMY5=|6qW3E!}u`x@**47wgW4BAs(t z(d-phJXS(Nz^y1UbEznzNV^{o-ygqudlVbA5yQrY@e)S$8k9myr0~kBdbMSN^-wh! zp4zIpL@R8*uek6OHr^#t&I(=PC7!y*#|SKMg@B=T@xvz|Ybr#Yal(sOu(U{snACm( zYzs18C{8LRVPVIwA;XeNn%4^vEDTK=asmm~q5RVfGI62=;pa3@3%;|4sYSVt`Hv!_ zkpWes5fSprp;FStXjEe^`iJKw92I9ojHh7K+%|bC12Xs;@`xlt4at|@Ww)jMv`ULg zQ6QpQ*CD!DSJSN%NO35oklL9DnNy{0!%mvB*7k&RrkimlD&Dn1&tME??XjzS`-x;5 zBL5~qDbqPsJeX4%Ohm@uDuZYcB;)>*-E4d?*k=d*{pfKti3e&o@Ap8GA~*@kwA>!g z(u{5Ae2;$a4bFo2j7lhQ{g0xwNL3W=lnd>wD?c!8U@9Zm$3AxO9m@mlV|f?mj$q$T zEb@{nX&Og1Ks`86Z6}*16rKU9lhhl#p*kjq_beA|mhtEJz^hDb8{fw5 F#y^GF=*Iv6 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/big5freq.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/big5freq.cpython-36.pyc deleted file mode 100644 index da4fd2204f87e7d189032b0a22750e229189548a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54725 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 =nz|vb8RCW^*%rE9Av+YmKy)QkM?xf~u&7 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 R-F5eWfByRk{D1uf{s-a=PBj1k diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/big5prober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/big5prober.cpython-36.pyc deleted file mode 100644 index 1629a8c9ee11b799227334311a5568d4dd77bfba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmah|%Wl&^6rJ%aZb({G#ACq`i??>3wDueI-=eguU4BumQ!{0g=?03(Q? zie!{gir7(3<}$a$uJSUU`6c#Lkkwd?l0zbV5nK=vNV;%YC~5=J3V%@u)uP3N{!H0) ze{N;(IMxGcKj_I&YVfT0CL+zp0~=e}kCWpxmvH-NKOJ`tQe$;GoY{1ezs_SdH>m+% zbN}sOhY$L^|Nh|3y95&4EcXhTHULQ&6@)pLWJCoO&PB*v=?PbO7i2-154fxtaBxXH z!m#36QODF(c?njJ3r~!V+dKnfiKXXc;hZ=Na9Y=T3wY+f4Hg8>+BrE1(IW`Nq(`ll z!Z)+2)EYP^MaX%Yr3VBwL5&9kCLw4$=X}6#(DHH znx@l@;Ve~RBa^%Fm#yw`l)$8fv^VDvc$t=C+nmmI2t_`HZ4eN;O6xSFXZLQ&+q`b_ zFBXx>9=?W63JUBvN6f>wbOUZ$RM+7sab=qDSTwK}=$q$pCR=c095BQ=d$^Qu`9J^9 zS?i(HjQm&HP{sLp7LVn|Qp)8Pul=nMXNtvfUer0yCSs-#H#q-1i&f<*IV(co5R_o& zdKIGTH84fjhI32Eeqtyh{d x_-$p?w^b^R-7ROkB(O?z0Yot%Kon#d`nHk^mBR>MRPDWdjK$#i8?^kne*oY~3IqTE diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/chardistribution.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/chardistribution.cpython-36.pyc deleted file mode 100644 index 2c64a35427c0bed91fd25c7486ebe6c29244d8cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6310 zcmcIoOLH4p74E0hl3(&8ek7Shc`y^fB+k=V~Zrf3;hjY6< znFzZmDxqe<4}i_^sA2MD3@DxPv3Lyy{FGT z_v>>`>q<{g`t#)99{>5Qru|E6yDao?p#^^j5t`5|T2*)Ts^J<{(=~O1y1mstw@=CJN~YTH_E!hof$E?;sB3pM zkr2sOnn?OXFHQFdct@nbr~D(}hry>s7x*s4kAUwMJ>Yv3KMKBA^nveF{22I*=m+1g z_@m$l#31-V#UB$x^IGo6rjG69%xHAx(e%Q1z3F?C1#e-_yHl9?jyG4hJyVD>@yNpD z)cqN6e%76dvQ5e3hqKd@_r2S*^9zO9sYeU5b9t{YiCa_OM}PYtxGI~faJr)>Dc+4=o+^-|uZ>V)DuYAWG0 zT9<*|Ewtc1h_AW2&|E|4t|<)H5~gbl%S{MdBwlH5QY3|gJ0K&{xTi#y=*B%QdPFbo zU7}B9aPJoVIQD^PboxnA-Yy5BEHAEw<$7(hR;;`T%0XEJ@|VB3`_IPE7hm06{{9fV zuWoLdu%Se-@Zz1;O``=DL4>xhc`=2R=o^Zfidu@=>)O-AODq){EYS10WHjiNV1*af zy(Q^C^XgLgGV1ce;$p@3f^x%;j)pH*%cWw)6K$q?vIvVK+Y|MgA9Z7Wh#6EBV6{>e zGq&^tKg{Wo75J5vjfrdG z#?@=yC2y%T5nirdy@+eMHoh>vT3$WBxK^%+^Hu*!@%hDxC*ypO@WY+=Hd`;OzK9&p zE7!`Q=Ut$?dOnDDRFIH@+DEvj?% z<-6HZ#V<!vVQY`L(GB~P)P>p+>OubY@> ztY~sUSm>&~`MY>XiMG z+zwPwHJef$Y9Zc^m&Q|rsVYR|@vIQ3%S(hwP-iQ7r6N06TlJ-6_KRJ>5d!NP7GV%+1kZ4wa}<_xMob- zFc51E#ME=bWN%a(;)pe-jcCFiMJg5vG^XTaUcK0xf5GC-?|~@XZT^zIEC~+~=|W|P zchQg1OJy10eMJ;(J7={ap8cn2@rG;%QE${}oawxwR@g;gIgf>s$x@D!DCbaN)YJ4` z$*)wl{HLta!PkLKo|p#^llqjx9N8I{1aE;@_X|BI%N3WtOyc?s6YZ<46p+U%*U z!*m;CDajrKX$wp7rnlcKF8vYOUKH(b_+g^xceM5@iB58jBulazMRHF`&BGQ(=e|Qw*pc_TC7n-(uEIK%MGj_Z#5!F*J3A)59j5 z-rEZ&kr-ii+X=HIVTNxFrsZ6=~(Z z-$NeIX_`HN+{f%UY&1@H^ua;F#xwg3pVdE9^Gvs*Z& z^vw?Bkp`piNC+$dyz_%wvfsyH%98N5+9jVmH4(Q@%PQEo4>%~ zxHx0Di_>hDJ%yyU5?`L)lExrv#kVgZZ>G|=+P=e14hkB&{vUi`3pAAEbI0A3zg7yL z^DjTCKELQ5$ysV-MXC{1OshJYCA6DfUgTfNYDiT~s#s#3U@PeGQAQk7&3z>?^e3Od^_q3Y3-k@J51o&5p1fd9h{ Q8O@)SnavEU-*9H^zgOf1zyJUM diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc deleted file mode 100644 index 365056ac9ae4d9eb90188d36ce838ca80f699d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2221 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc deleted file mode 100644 index 22ae65a131a3b217bb0b95fe29d17d7ccf6cc639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2878 zcma)8U31$+6kSRFisP8lQfLO4SzefWXzkFCblPE{r7gVBz$6)F(2HiRUE2z>^M#ggFL&E_T$`p&$)NyyBizL-|K(=Qfo8z7dv-V z@cbCf+(ajt^imcw>B}JX#(wB~?0Y6Fvig?EstQhnup+%Z)~UV2YPR#vL*Ma=)(a7j zl1%McVO301^DDr^V>I&&onoOUS?EhI49LV=1~>;ER%K1r@m`Y+xrTdPHsw0*4Yej) za^o#K^}?oX!}NQ_)u*{kvY|6JGc0~X98Hev2{+^fAD13+oAX1Zlff|;ynl=dqh3x` z7Aro;HO3}F+a#W*LUW8d;4c3z*A7epq}*jkic5vyEOu!XtK?9bTRgG+C`nU3P)c$; z5_Yya=L%L~Gqzahu$J8thayQuKUKGQo~d#db_;HkvFh@Dm|NZuk3=?91{TdZxV|tj zoM$x5Ct4jQ`P9sIii}*EVZ+h6*A87PF3|2SumGLG{<2jU5-rRJn6^qQV~J9MrBj>V zo>TIu>45h3pX~0J5RVW;0!-t4C{eKy51Kf$BLq(Tr)ntDWn~-`X?b?tOu8UN@I#R% zl0zlMCprA-I1xdO2GL6Mkubck6zGsDv&kS)vRiug;`!XInO~VqV&nK9vr?I4m_aO;c1{{$FGGQ0TAk%Q2ZlzN#w19S zv*hGQqXbDALxDKYtbk~ih$a^=!p&2i6vq;msc~l+IA$VS8+N;k`c3);pV&eK<8sp!5~>QET9hE5QIa;WL>v4_HpvjMR#gX(aaXQ z6YqpYIC0T?uJcbwuJv zP;mZEsTZXxE7r?-m)b==&4)uAoW8$+Wn;qt`h)JG#4*V{$La5*tMih_n_u=GA7u zmiPMO%U^=-d`C=F(M9(&-U-681L78JgHvy(6X*b=Mb({Nx`F48r}3RE!*;Rj_vv*5 z-8X2)N$S16vBJD#?@V+0x)Qk4e1r$+3B@;|{U&?kHC@HcQQ|n#*XXrIU7hADj;6wk!=_6?2NyP7PCBrXJjx!& zVA0IfD;v3~Z!u`DqGLhZYeCa1ew%u)?Y;hV1+j~rOUjbEj$QJKm?<^&N(Wc!SX@K? zyTZUnA|gsqDnDWST-VQ6m|wAF$&a%PYtH;2m0isi6{;|#6mhvavx*xI-jzVfPBbfm zy>o7T@o#Re*!O>ZYoz#FF%`rA_D^rZji1k4@mCh!9BHSsuGg`)Xhw8OO;b8uT2b_J zD$?0mQ;#B<$5Et7e^*xeIz4?z-3{8?nCN_>v^{pF&!y2>E@`T*&(I8&YU6svYcv`` tqm350xlUEDVJ57qY&te&jo0%20sh0e`Bk7rZ7kb6P7MCj?mFPZZ~(4D>6R*2 zpkfRK%xJzDy(hi#CzJ7;`?0AkLO#jAqIlopr~!fqqad6Bc`}6kOys$s+!Pk4V1b>P z+yR@r)hQ|_IutyxepHLQ!gwT8=YT2X{xGDj@1~|S@sI{$I_jzFRDZk&sq(st@+zx) z`mk9H@X^$=ciSpYYXRI#Vg=D4jWoRKNOukNcG783??fIAp##2vH8S7F8rVLTEUOEF z=`0G_HVLj4MY0N)Vihc-%P31jy(oh@*0y46*5u7BY4bwNO7P>CdAMWgE|voH->%Ch e))!6Jd)H+x+5&FQ@TodMcyw%7*q-5-zxx}RFkHC+ diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/cp949prober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/cp949prober.cpython-36.pyc deleted file mode 100644 index 30ff6a3c01290cf5eb91a154f51621a02316c9cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmah|&2AGh5VrTfY0{z!5J;Th6hXVCO@ksK{?dv=NvQ}N@WtA!opdYjCfH6-`Nr=%~#C#T-J?YIxjvNR0hh3| z(mm|7I<()Tz4yC&?@|cyx4D-{wE%ELFhj(-Kts$hbIv2;a*w&pJ4bU&e84tmz`+Ib z5HUH2<+Al(g-gu^Of$1_Zn}B`gGL&kp}BMH%wbcz+MC0g`Z|~+n8P!49GM-4z$rdx zE|tETPPmi-94;eDvm(=!O5;%aFp#Cx@<3HC9kaf}7WkrxA?%dP(wAIu4Lo>?iy_QQ zl%^t4iqh}s_i;Rt*$FTipCmFKjs@dV#k3ud2CZjXV$f;tuuf}-KBdF7t+(>lCbUrz ze~c&DWPLEr1Y6JfcJg(zeH5p_JmdO$o&fO^TZfIwOh%C9Bk0NigjaCQjqvI11^PCw zu6ct;!)4c;Gm2vv_;C)1Z;#13n3`DDV6wOx8n7(uCLOpsEs~r+28%K@A?NhoV#LLt z{vS2iA4{GT{|Xz4q!>+;5sw!_-nit|56#Hb)nrF$S)()`v#Bt+PU)9vBB~urTNwe3 zpawmYE8teH!caCY3z>2uKpBRLtHhQKHY`~AJOrSOjv`!->YlZM!pJRKum#mrLRzbY zrOX4%s|RLfM^^K}C0$ifr6~vrz^XumMwHg|btVdP09t3OH2n@ zm$C}-3R?wvRmw$ntE-f6PlR3z0umjOWXOpTrlS~UZbDqaNg8tol8Dm5FiI1t;tgHF zctXam_sSjcimq?CX)=t&25Gt>sRwQ-Rmj)O4J-YnxH%ZPeo*nEQCaukgl8iIvrVA* zb6{Md88~~EWoV9NX`bb1f#s>n3Sg@`)y;66Cf&qM_@t{781~SQ2?wi*;A6pK9wul% zC(J)O;sQhxqk2qSl7{{<7qJ@* z9cQXL&M0DOfb&(yd7Zk!;!V+USmZel)%OoNhEwY{Op}(3Zeuy!F}HV|`k`(7qKFbK zEZHBdIu`yh7*{=ZMfE5O7+6PoNt{YZ#{W9di(&!AgtQe zu|K}wPyK-1AMr=-$%FM_brF`cJNhK9j86rgMgxkGX}Np`FZuLR81THCsP+ul`@=ws zOr;tt(h|?}LS3Oc*ST6(coF6+OoK3$rng&eI7lHmw)`OBV)F7sLj}nqzavNT!m4jZ*<3`j*PBOBB{ytwpuxwf!1uQgyf8F=`eqT5Zc|Jm00c zTB}8ii;rjy9-W7JKGSi(6<~LP;x%Aeejbh`*D~_`rNDeleXQ<_sPBh^d4+6$sN2sf zWDKA4D^(#dH_jakRdKBoOHIQz8n$U|Q*En#U^N}nrmEGpojv1PS72BO(B;g;r~lsp zd#*S1Lq2za_0bNHo*<+7BJZNZ2l}DVwQC)FS};1Dc898_-F=?}Fb~RC9Dq+RIRI07 z6V<)}c2j9`jj62oR(X@5r9~;Ob@}U*haPYFuXx}Oqlis@yxA?mnI?7xmmspZ9@H@b zhzg<;$S;Yo0Jq0}l*S|qp$i}wzvG}88t!5K;=nsn11QGYWElX9>||p@@FW#sya8a& z3BVSnAnbg>4i7+b5D6b(+z;jE2yYd!3d_jUDrcrSFNiOs85Y}gZNL);G@bJWzQ^q` zp_Sa^tEZi->(}PHW*OTx+k9bA?Z9f8yGHAfs*Ag}-|hltyfCIKUf{;@h(m{D z;#1i6f{n5jNL087FCGHLc%mgp11e+%zVU$02KsOlDE<=IP1!I9YVff(z1vvEurc@K z>Ezd&li<94p1Y2m!87zh9>kCjLax&5bs;GNUO!DZ?iBL`fryJB;c|9=LkuoZP}f6i$G8JqA>QMA;J%c3mOUJ-=atV3+JBwgY0i)ebRLk+B8%-lTd9ZcZJ5dzY%+!@YXDMGH-H8-S{~*!$Y>d$>;8r?tB6S{67K_ BZ}k8G diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/escprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/escprober.cpython-36.pyc deleted file mode 100644 index 4df07324df75a707ea262fc4a4002cd2a663ddb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2603 zcma)7-ESL35Z}E!pU?K$N!>K0h{CBzNJg|SX&Wd)&?<3Sw~Z6Ufx<~>ac);ijM?-OclKos_JX6t*wXB){5j$hwHPWN%kUm?*CHcqeSt z<3=nt8eY2-ijtlb9yY>OztIxw9X}Q_u~C1jme>gs&%8EI0kbK^MU8j44QEjJ}h zp61pu8BsS4e1>NgZ}A+rkBOV%d0v1q`-~XG&4F9ylle;IopQiz8bhwCx7lWG|5rP&l(Fba`r)?p{?x7ghpOm9*w*%4vk)s84$I9GIBIbVx>8R~u4Je*lEF$dE97NV-Ox>YBHSTmxS3reiD4 zjOYk7X8+mQKkDW{_uHAwJ|)Y8Y&eq@#xjm4%_%ys=s87;pm%;m5X%q@tp;$+`2alD zRH!R0B&n#sC#1~5{S%9^PS}YVOEP2UvM7)?NF+kVEw0|H)++T1t5-L+9#+?@m9@l# z@Q9F0bc9SJu~5~ze`o6s>dFlMnh!R&D|c!#3qQ$R10wiDz~0R3^}{$h$Hrk5oOzHt zk%*Jx$rN4}^CU4@gejDyB!nd{X^9aDzp3sAW@Q-j{6-Wp_AB|jUEY(OC!kz@(van5 z&*wr$Wwugo?cVrk+26gja+BY>ag%+>n%+vh9Nf4DtreDc%6px?E4%%U&#wgHdgJM} zm3A5L1Q(o*04G2sBi}3?(IJhT{Y4HVGlsOQp?rVw5s6c%GXfkkQz0O&s5OcIPAMbv zu(67_ynq~(O9Ek3F-de^gz_9t7m=I?Qqtri@~Bs$@(tvdkX%H9TYLgNLVZFDV6#Cr z#VRee!KE_? zzN-2E&Q)f={#-FcMuh34J<+Kiu5OlOzueDy>{bR83;;+wJprP7- zd!f)0F(gsg#G2)a4OpU_NWk@mHhAZZFHY;vN?8gPVpmak4$Q&NLkd9q@kl%P9&ZZ# zcSrhAw;|9&y-RH(-`ht{8)_qZWDJd1?;4La*#=1J4B%&wZi;Ik1Ev{5GR5`BRQ?p3 z-84Ycf|*R6zz(=B3+sv?$tj86wMSUY^00dW#<{8PBeHKkLchVvl2Kcih?|$t;gwP7 zly3s>Wo84G&6?;~$Bw%>2~6G@se z-t!n!B}?UPVnH2);vXMMtX@)?^fq$u0!i|dis}j9hh?(_oE8C<|M+g8c7%n{N*P*V z-p<*EZCIwNF||^`%}+9LTs0*os#~1A-sqaCUv(6uMA#1^_25X1mWmTqZPO^KdI$$fLK3P-Rh6ZvS;!*b(z#fMHzcVHK{ljne@puV z`geM&xc0)qusohO@4fFWo_QW-B^C>R4Sat;mgKmfoc+gh+y|fAF%~2ZGT8-oC%0ABj2(Sp}W z8@QT2>pPy+B_hBK2~ZD16KDW}5Q6X*fdt_Z38A#+KiYHX*=Wz;0L^^SG*b?=#l z?g;Cnw4KJNwfK9-UFb`?E;5L1%6Y3BBn-18LPHRtVH$y`k(DSsCNU;?b5^u>afKa6 z9ERQAY`D=~J?Qq(f@{9??3fXmPluk(JJXt-f0GW%nljqlsP2$4ctXZ$494jg9ft{s zYjbG=o{~6|cF&sKroC_a)cfqpxW}z!q$^{K(HuiO$6T&1k_60=Ng8J}DnTb90h5~F zQ!rKJlFvG9nR7|L9X*gLr)PCqY)Vbq!8*|KVdKZfgAFSKTt{Hd=kN|mz1vDQarigR)dVX-Oxv z6G9u2-QrOyvy{oCwhuc2G#$hy?Bwkoli;4zkkA90%6@?e`{xRk>W7OQ3sAuz6%1gw z&0pfi@DuT$dVniNpJBLc6kIGislE77V=Tl`BJMd6N#Xjsrx!_Ux(;=D4yH)rC*%5{ z@0x2BgQ2GL-!ZPuzfog+H%5uL=R_n!eN}`()=cYN|KV!wt7b-BO5?D~C2s2Vv|Hse z)*b7~Mg$q!&Z>v;a7kh__A6}3pFJZn)s z7zvAW32N`y0mVog6f&Lem{2I!>(ze20mVog6f)hRP|kq*#wioHL&WA6q#MfF1v_+3 zUr0*2dM*Q1)U=pQpOjZ$W#saDb`927*TiM9TFEvuwbdo|JE^Bj>BdElxNG>r$=K%3nsRV!-kW#dyj__}ruEt$TVV>ZMGIBo+3MN?VL1F>va3W^XY*p*1htL&~6 z?kcqf9c_T99sMhbb<&PkdQJO8qA6|)!j;z4WUC_IB$dK@3SufoT0ByNwjcGHiI>Qv0uz|w z2QLB*aGDw9b3iSH_iH%S8d4BNfV3)S!zE;`V|N)l-0=~#7-I{S8edv^?mHU13%cOL z*X9QVg-0|RV+YRMes-kqor%h1ECi)RL%m(GP=zZvPu(FS(-kj!Zuw)jCkb+VJpdD?2ioVi~fzG&?8r!8hT zTaS)g>~as>vNKXjMlgb#f?!tQkR-CHj-b@)N-5N;7Oz!d`TcsUUTZyVJZ5XXLBeG; z81+uL@DeXA={pBe*B3JCNVeX5a(LXTy=d{)ljAx}p6^#|9h1yOAV5czQlAy)$qtQW zE^5OO2OUU@Xi^`78lOVbsh7}oqpY(@3G#`hDeN)7lxP`NH>pE6X~8HNC0YcIYmCdw zVTYzI!VM9|roA5p!E2H}1%E`JHZ)}<+V`hMmc%U$k=lmM8A4|0omR}uJ}^m_GY(^y z6=&I7&;D)}UhooHjL}E53FGU_ie5w&iU$-7OembE1(y6D`=tCJYAhthK>vZs6Y$IA*1Q6sS_rashiMZ^h}o)b43e(?hT!B8prap8x;= diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/euckrfreq.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/euckrfreq.cpython-36.pyc deleted file mode 100644 index 2a0ea7ad44b9a1365e3608fe0f51441eb633521a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24111 zcmeI(^|uz+(jef21rHD)5MsEy6Wk%VMTijGt#JwN?(P=c-QC^Y-Q8u*!#8Wz{5Jo< z+`H~`t9I3{-R}vUaJri;(W6J181d-uce93sTnqWX{*y6sNJxRuyhWT)YK2q{sTHPb zm?4pCWv&`F)J&B^Qf3M5sQW)V;upB1|4#JK^iDUlMau}GTnQ7(sxLxWjS|x8VM95t zWsS9M(jf|Iu-4kIs;vxIC#@%qukWw$p)A9Cg=eA#3eQFF4cMTt5u30Xt&M7fEz+&n zhJhwGHlUcjiA-rG+O8T^bQ``7cXn8Np=GCNNw`qj8oEoGK}#QNFSYEpwg(Zcy;j{T z9cx}Le5J5Jv`?X>mUGt9p`FR|Tv{oG<%SLw?bmz&2XP2770TH*-i{{Nj>D=)a1=YW z#70KvcD3!8LLO08g$|+__8wO_fs;6e`UNF(R+!y6>OUrHC!BT50d~tR-_pY_SrT0WnjJhv+fQNXc`bd<^ zj>n=~raTcn#WOrd1y}G$Ut-(7Gq0ueqv(Z}C8B-?e5v^_bdct-G47O5vw$R)Djb)tc64jWwk;W zQCNgSctk)4hkqf8h`9D9v7@8Hzvvk{#82qR65sh>B>4jzpTj6vaSH zRI@jhsHbSJBhQ-B*%@Ccq?UHKw-sVr`$uzPX)jS6YaOL=MPH+f0mIFUCykHln!gbx zz_<7g-{S}5ciNAliuNW#LTLu$=U|N~iL50?UM*dn_E9y7wY6H3ijpBYQXnN#A+2pk zk;1kbpLZa&>KcVKq8_U0r2CN8S~sVCC+#kJEb47nedlPlY=6W>9D$ny8RbxbIt}Gd`=93#JU$(oZ#;wd}}&vh8qS9h0juI$|WU4=lN})8$pe)KEfyw{)Sos`Y-r7rRdF`zr-6*Ok z>hB6Fi7F$v^a%RiL^Gg@mO;{AM8D!UWc~bMM4=~!{@!wKRp}qtQD zey3%eLLSt#R_imi)fUx3O??@y^%d1Z7}Qm5XM9gX-&?C^tv*`Vkx`+6G_NxnidNdu zNHkFOqI8H4okvu|+ED2-X%$nViJmI_DC%caNoiwKnxHAdx`Jk+<_ORNEzt@;n77S< z{zjcQCA+k>Y8wo5cxr{s=KW zDOA^~-Zmf`hC6qIs5A2E``5NkXrsBasII7sXpt#hMcM7>CQ7E-UDN|99XU#0YteGi z_o8`rv_ThZS8ZFU(9^b}qJFO6wCV_#Hb`?X)sG5W@d@4Rt)qIzwqHd36>^Ar+tCMo z(GP__w}{HxF+lW(wSl4(_6`ya#t;m}N(T*4J#1Sgmo`jcI7VP3wrQ!2QPTLfwKaaE z&oK(yRY!|PYZ-&F7>Dr)`P}TFj|Pm9PEeSLNtlc&n2Kq5=Ait>PnV9hEw*%qw7Kd` zQ5{#mQJPXU6?R~jYA4k@s()e^x?r4n7ex16RVsa9tPQmHKYPPU?`jDr+Nm&GVGibE z9+LWOolUtedScWo(N1ggwKOtimcjz*LWDQ8lfJ|H?xL{1KGvpaj)nQw3OIbc9cT0{ zGGH-|Ni*BgOLR?C%C>mY_V`5_-;~{WtY!4)Gf=@=fI7~I;Ec|8#F6&YG5`sUs)sb1 zvuFvYC6j27mZ+j7u4*ZkA@qNtztxb^-c=Zlw`gz2Me~+xUV)WZg`TRbMQgAY>#!ah zaNp#Oq6sd1lV~#vy0p!zd5mvh)E5|}P{!ePMO!py*0M{wRk{t^u>(7?3%jugzZg)@ zjxU^h*W{l~*{iw_8LeG%1rfE>5JkcU^iw@*MphPCI`ju^Gf zj&?XIJ%-~rfiLv^X2(yWO*pBL#M&v*3ei>6ckXFx#T`DyY5sM8ry&;OjA~w|ofVzK zaLwmMiA2j)FGw%qXKR;nNt#!*38VB4c0vD|d|5TTD`p6ZWLD{M(M!=IEsya8PchiF?6KpSG_o&AYdikJV1>e3 zhTyrD7kG)Onuln4C2eZQYtb8gaO65S2$xF{lx zt?z^=jwmjo8Tz#-9%f48i)M+w5hXwllS|uMNc5j-3|Cdem42&bujo6`W=Fn2OD*49 z`vE^9Arc|FDTzf%kQB*K(ca{u6iA6wNR73wAdM)kBbQ6lO4A`d8e7|^8pSpLjSLDk zO`h%CqN)8)4f^Q}&CpDa_Ln10$^+ zKz4;3h^f%T+I-Opdz(sgs^&s5=>pY-ScIPxiYw$6t^6hToWbx<); zaU3-25Rxe@cE(6wh-TJGXeo)GQ3|DT*oWSLSaw{tcZq1S=swEmD~oa{j|!-Wul+Nc z>Yz%}45G@SuA(ZUeWpZmMi~5JZIr7jX>SS9EzwtYY}LHf6-?FqtLA0W-$Y~dHMiq; zX;u7zKk>lcKy|qtEku7Q{Ece(2T@IF?X=Q%RJS(H+F?7=i&hv=L!p?Kd^qBQj%aD1 zrKW0C(R`y0qL7yC7_ILgYqj*%MgoPS3LS0x${BSOR*K%JWMT~Ie`UF#x;NQWYdD;*}Pt#7uy!==YGH&WeVt&Hlo z()p->h{l%}eWCdqeSag8LUcRQNsEcbSQ}yTG-+JvNa-l7b5&;*-eR=1F&K++Sg&Qg z=!(-Oh$bS6Gt!&4O`)Y|lEP$6!5Bk-R@kp)s|BJTdZxxHbhpvX-87gc56GZ6I&b<2icsFOiN!;L!(NICSjN6xcau@gn0w- zTHn{A-S+O*S5UeZukcCXHWp|;;R`Vi+l<;{M@45WMJt8zIG}m2>eu@AiBg%jUvvOJ z8G2B32#4{NDO>d&6dkdaSeg{AO+ISvlXRMvny4zBA-ZJfF)iDjy91%SLjP5+@TpNpDzv@}hNNeXr@y$Cg zx`2(QoV2&MmNItyVM;b!)N);PNz_DjupJLIKa}n?@3LxPYga@m?6@krh6B>;qKl%1 zwoMS-uolJPH$}H_8F-KN5FM}zMtUbmPJVjhBIq|{JR-(nC zXR6OpN_yOsluj#S)ChgwDbyGB6-`h$g=hL+*t<^krRZygUA`Kxq?PS>Ey}MYp6X4} z8*6XzjplboB@oqCP5AjT@X&yF`rhLMdMkVsCDWYI&@V-y`$K;vDwGpVH#8)2C^=0D zBMOUf2#*NZ?cC6ZP@&(NKS$OgA`(KkhW^?xAc-hGZXmMiDrX#({(>kjEruwjsJv=a zQ9^5F@T+t?q8Jd)5eTG#0)> zY{Wra9MJN$C?2{Pp9@70!DYnvg*_&ni__8{Me*&(B3h>JrX#NMDHbu&AsHdS=`2PCH^Pu^mZ}6v>br zDUcF>8I?+u8flOg>5v}%osmIw)X-zd=b(5FnkBk|Oj;&bn{LM$7t~MTPis>glv&F} z1+OIBId0SmWR+$^cC^uwL$uo7oTBcAX2JJ%%vCrq&87MiN=u_T@**Z6x58~v9#L1@ z;^-S9ihz^mokCRSPEozAaN1g4+upePpRMJS=0^dX(Na+K)ER|Dg;4}&Rf~#t7_i5H zV$$L$fs(lX`7*SevtzO7yy(&AbG4Mh57sWAw6qM$B9^|AF1(zyJTB_1AgYK;n4zz- z=#pv`(J%NFzu~N}!SAA~_yd39FI+WXCH|IH!#}8w%ZC1l8q%7mh1&SWPMjM1x4KY5cy=|>cHng4Sn!-P}wU>54NBoNmuAq~sGrFKFx}iII zpeMFzF6^|E=B<}@HU1QmIlP@}57h*&ps7MHd$%j}7WF}2^h19Pz%b1NMT0OHLoi&y zzgg}KmELvG6yt||t|FWx3%Hp(y$2s%Ht4_c~Ou}RY&X^*4U`l(Pwx2w9FE{sSHsX7ns+EP7wr_K zwPTm)oxY8B)Ykk$%RNywYhS9?!fwrbuowHV9|zD&^K(Np`v|i>kCJw?_n?-kS`LX0 z;|Pu-jFw}fmv$T%oxpfg(pftxJuQ7DJ@q-o8JxvAod3LL-UZP`T*75s!BxEXDX)nx zxZLZa8~DaW?ne%%-L&>tbW8M|=G&q>xQlzZj|X^&T?TA+#%p_zq6?Y#84=mlP4rpa$?dnNtW8JDbm zk7{;IHQ=@C8@$CdYpa}5PgGA|OglQ@otBQG_o{0QeWN+c=QY(2_=uybw+#3s4GFzb zb0-Y`v?Hv-TrD&3r8KN+ID|(8e1V9Fgf;d?7DYi+L_;JO^w#GcW>j=*4L(m6)fbJ^ zlGT-dBZ{FA6S43WVj~XT8THO-aiw1)9^&J@YIfCHPJ1BAVC@^#1c>d(G3c$Osg`dQ zKIp6HGLEQ*UP|ciEm7!KDfF8(zSGxG)CBEa?h#P}Truyd9pCHwXxQ%Xrl-sx3rGttCTp)KMs6%C~l8(vm`9rnOi`rIZ#>NG1B)jz!pkQTkFV>=UIC zrA0cVM+W@-x$2CJ(oD#Vt=1|#sHc`J*0LfSvg3|}a)=7LjP!O)7p=uLdvmJhLKt7k z#9Drm=Ef6!c|>`U4`KB!{d__G8RfUOPG130IMsrpLI|%=SX2Z>Q4GZ~LA8%j)kJ@Y zN+^`XENkJ-`$tqAKPz<8_m!)kB$_2ErBE7WP!_X&{BoiJ`sy3-gXjl4BA8rWwE`-J zQZ{AA&|k+vXiG>C+8h#u_JstYpE4u}Z4L=Sp8$pgp|=S_0>9jY&>bN`RQN$Ehz|D? zf*6R2Sa2^ah>bXKPbKgWBXFZSaAP3wJv{ImB={EJ;d}f5KRgEskqC*A1WAz$$&msn zkqW7i2EJ(r>5v{7kP-g18)Swb%Y&@Q2Hzio9LR}W_zAg@2YHbX`B4A`Q3!=m1VvE{ z#Zdw!@iR)HG|HeX%Aq_epdu=vGOFMg{0iSLg5OaUf53O?;4k=H7x-gA@DHk^25O=f zYNHP7q8{p_0emM58lf?KPYar&8JfeNYl9YOiB@QhHfW1>Xpau)2!93(I-xVVpewqe zJ9?ledZ9P^pfCENKL%hR24OIUU?_%RI7VP3MqxC@U@XRAJSJcwCSfwBU@E3zI%Z%d zX5l}~#vIJWJj}-eEW{!##u6;WGAzdmti&p;#u}`}I;_VAY{VvP#ujYFHf+ZZ?8GkY z#vbg&KJ3Q<9K<0U#t|IFF&xJUoWv=d#u=Q&Ih@A@T*M_@#uZ$}HC)FH+{7*1#vR16wJj5eB#uGfnGd#x&yu>TK#v8oFJG{pSe8eZXKNf_6AESeC2#*NxYE9q z2#MiG!yqY=AvxSR4^ko(QX>u0A|28r12Q5LG9wGJA{(;9pQnSI$OSJI1-X$2d65tK z;pfP}Gnb$c3d0`|f}$vf;wXWV@UQlu6iTBE%Ay>~qXH_T5-P(Dli(Npir?@%JUj{h zz@PXFf1?`yL3Q{EEAS(8Pz$wD2X#>o{>&LPKtnWwAGd=hXo_ZNjsPvt60Oi0ZO|6& z&>kJo5&xnSI-?7^q8qxS2YR9xdZQ2eq96KW00v?Z24e_@Vi<;F1V&;MMq>=dVjRX} z0w!V-CSwYwVj8An24-Rw{=;m{!CcJ4d@R61EW%#hE44vZ zcp)UnjvVktSda^z^9H$*2YHbX`B4A`Q3!=m1VvE{#ZdxoBn2K41f@_KWl$F7P#zUf z5tUFGRqzXb#c%K+C#VWPLO641#}99W_uBegF3~(fsq)6(HMiV7>DtgfQgud$(Vwvn1<1s{*gM1Rh!ko>B*%1q5yr2X4Lw zG2lUV;9*LwvZY6(qp7_zrG{2j1}rykZq3L?R?c5+p@3Bu5IQL@K04 z8o1LPq(gdSKt{N46J$mfWJNY)M-JpfF8qYt@K%4|#qhvudVx1Z0(W`>_gR8MD2yT~ ziehlvG$?_R_!*^88r~iW+@cD~p*$*}A}XOWs^Ay=ir?@%s^Sm)3D2to_hJKgR{}Rt z0yj~D8mNg{sEsiB@QhHfW1>Xpau)h=0)u zozVqd(GA_v13l3Tz0n7K(GUGG00S`ygE0g{F$}{o0wXaBqcH|!F%IJ~0TVF^lQ9KT zF%8o(12ZuT|6w-fU@qoiJ{Djh7GW`#U@4YiIaXjLR$(>PU@g{RJvLw?HeoZiU@Nv^ zJ9c0vc40U6U@!JzKMvp^4&gA4;3$saI8NXsPT@4p;4IGJJTBlOF5xn+;3}@+I&R=5 zZs9iW;4bdrJ|5s99^o;b;3=NrIbPr;Ug0&~;4R+aJwD(gJ|QH0DE>-h5ElM+QQ&WA z1pXdC;N{T3E0=-SD+BL~1>U_1yay3@P9AtL9(bY}coY|S@({QY9Jo~(#6}!=`7-dn zQ{c6xz}qr`=ly{P#eoNZfrmDMhaG`imBEilh(t(?BuI*6NRAXpiBw39G)Rkd@TO*v z0U6=pU62``f&?Bg1lf=sIgk^%@Dp+)5Aq@(@}mI!#iyVU3d2kOffwe3V({{L;O*<6 zB)k$Dl!90Hf->-KPEZczQ2`a<2|(a>cTfet;8*;H-%%BR;7|O8zfleUpgL-xCTgKJ z>Yy&_p*|X*AsV4EnxH9~p*h?p4qBikTA?-Cz{?tew?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRvNg@tA;#n1sogf~lB> z>6n3;n1%l^8*?xh^DrL^un>!|7)!7e%di|PuoA1V8f&l?>#!ahuo0WE8C$Rw+prxw zuoJtm8+))9`>-Dea1e)Z7)Njv$8a1ca1y6*8fS18=Wreua1obq8CP%>*Ki#-a1*z1 z8+ULQ_i!H%@DPvi7*FsN&+r^C@Di`^8gK9x@9-WU@DZO75+Rf@2#atCj|lhz5fKTI z5d~2Z4gOY6@Fij(CSt+gItaW=9eBk#@cwe(W#Yiwxq(+|121z1-s23sN*Q=nG4SqM z;5DwmYf^#todT~b1ztl6ynGaR%_s1>P2l~Iz$+htH#-6^a0K4n2)t(ycy%D~R6g)9 zI`FhJ$cRkHj4a5CY{-rr$cbF|3AvF6d65tKQ2+%|2!&AuMNtgJQ356LGfJT}%AhRD zp*$*}A}XOWs^Ay=ir?@%s^Sm)iNEkSs^K40M-9|OE!0LG)I~kiM*}oOBQ!=6G(|Hs zhbLq~3$#Qlv_>1WMLV=d2Xw^0=!DMbg0AR>?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O z;TVCD7=_UogRvNg@tA;#n1sogf~lB>>6n3;n1%l^8*?xh^DrL^un>!|7)!7e%di|P zuoA1V8f&l?>#!ahuo0WE8C$Rw+prxwuoJtm8+))9`>-Dea1e)Z7)Njv$8a1ca1y6* z8fS18=Wreua1obq8CP%>*Ki#-a1*z18+ULQ_i!H%@DPvi7*FsN&+r^C@Di`^8gK9x z@9-WU@DZQjO@hEf@W2!9z=Q0-)91j0;@}HJL?lE;6huWdM8}tiftZMeuMit?5Eow~ z9^&I0B*3@$4&UPk{D_1|gv3aKq)3M3NP(0{h15ucv`B~a$bgK5 zg`bccd5{Xoc2jgSH60!5sQc zP}CkB&=LQl6FQ>{x}qDpqX&AT7kZ-)`l28DV*mzX5C&rihGH0oV+2NG6h>nV#$p`C zV*(~(5+-8`reYeVV+Lko7XHI*%)wmD!+b2jLM*~!EWuJN!*Z;^O02?atif8W!+LDM zMr^`nY{6D+!*=YzPVB;N?7?2_!+spVK^($i9Klf>!*QIzNu0uIoWWU~!+Bi5MO?yV zT)|ab!*$%iP29q5+`(Pk!+ku!Lp;J`Ji${u!*jgAOT5Bsyun+%!+U(dM|?s^#8AQ@ zEW#l?BH#-|L?lE;6huWdM8}tiftZMeuMit?5Eow~9^&I0B*3@$4&UPk{D_1|gv3aK zq)3M3NP(0{h15ucv`B~a$bgK5g`bccd5{r+Fc5<<7(*}=!!R5pFcPCM8e=dP<1ii*FcFh58B;J7(=Z(~FcY)zA7*0?=3*Y^ zV*wUo5f)Rq+S@#9#Ou)$k9hqXufC7HXpo>Y^U%qX8PC5gMZjnxYw+!+W7Y3$#Qlv_>1W zMLV=d2Xw^0=!DMbg0AR>?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRvNg z@tA;#n1sogf~lB>>6n3;n1%l^8*?xh^DrL^un>!|7)!7e%di|PuoA1V8f&l?>#!ah zuo0WE8C$Rw+prxwuoJtm8+))9`>-Dea1e)Z7)Njv$8a1ca1y6*8fS18=Wreua1obq z8CP%>*Ki#-a1*z18+ULQ_i!H%@DPvi7*FsN&+r^C@Di`^8gK9x@9-WU@DZO75;>GG z2#atCj|lhz5fKTI5d~2Z4bkx>Vjw1B;VZ;O9K^-fh==(21_|&jzQgzU0Y4%k5+N~? zASsd|IZ_}cQXw_cAT81%Ju<-i-l@V>O<1%_;ZhZ=RsOwv$-)IoS1VGoQss&z3stFH zvRv6}6$^&`U)7lZyQ5&C(nYIPDp|E?)%gFjQn*CH(2eD)6{}dZLbY-gixjOmC-gh2 z*?3zoL$jcM>*_6QXJ}nL$WW(gqgu6t78$B#&rr8U)*P7|)yS1STdiDKvsKGftxnDC zEi*UHnlbc0b(>_UoS|9$X6b6Qs^6$qy2iD$RBw|pd%X-b>s1eG)o%HJ{=assnhk?G uLG9-0o3%R|DNp03wOTc*oiA1B&zdb#hW^AEK5Y2#Az}XifB#=!f&T^Eb0_Bj diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/euckrprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/euckrprober.cpython-36.pyc deleted file mode 100644 index 1daba2c4876ac0c7aa25c7f535456d900db17315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmah|&2AGh5VrR(+carW1qdWgaEe5`rA>n>Aq1oqhmwLCIN*!5Sv%<#?j9eI5GCNCB1-G9)IiE9nXC8dAr%Hf31E0_#;5*Ct4UD;1@8}9vFrg z7AV66V}l*xWG-Pu#JAWJK~^I*j9w$=v)~-DfaAGKLRRaeR`?4;s1`2o_6niX zS5wWq$Fb~l{Z5VtT!Lqg!nZUYs1KIfvc*`yaXoM|-K#G945;9p^9eSWH!_ zz`0_bwBMt>w|o0<5;)>|xR*$^0dPbxL&Uj2L(DL9&O_pIkGae{M{`Vkz&2;V!3FXV zF*(=DWgEZBFfj#~VOA5|O!XLyMjD@?xpU&o!Kq#C&EcK;I+!C^YiH;rG#-W^C_Zd0 zmA)z_TuPuFl_8~Ro@z>^2`GIqWGS&!P?bs33UY@n)K6nWz>Le%mt1iTJa~$WA*@T3 zCL&gf(r@VZNi>n^DUcbR#xfd?1>;ghv=fa6?WbE}u-n;TyX_tNgbtIA-pbmWFh+Uw zKANPH^+Ayewx03r_{(PJI7*;djO*)_7s)3%v8~&fOl1gJK7y$XKzIe$afoNP7wFr# zD)R=9hRd$`&y>k9@Z%iL0{CtH;7B%LuZ3kD7Kgx9iR@`2iE9%sA-JIVoroY}p_ zBNspV@3AB}7)u`K|2j4laXu>I5no?8@Kl_bV#X4gLF62oty6N?(XjH?(XjH?uPq(&-3QFU;I9^ z*3A58X6=g`IoIC%r2FQZNE0F)E!U%6NXWI2|Np-qLPGutT{nv!iW(v1Lu!0h{;a(vbT z{naG;k7Y$^BcyFK$7*S7U>xsGRu3UvAdfQ`DYy`oVv6SzH76K*(*7XM_Fy&KwMU6U5TvU4VEh}s7xn3>{9%Ao<(=Elysm4vYIn=l)c&L)|?VTbO zKCAF)ORQ+F+n10DV#@s;5)!Q-q@U$tJy*2c@0eC7 zzFW088k#PotT~dXv5MoEy**S?tG3NDuHbwMEjHj1h;Qh49CwBMuEscNX{5#HSizd2 zgQYTx5Xh_Ac!hrDtz|EbuC7z*YzFcu#+y3WVuA~4Jdup~yk$wPQ{#mTkiZ-hS;sjdsWzH50*+hOYad;zi(fAo5g>?0fBPo@lyrm3%P2Hb`%!g&JOm}CHkYl;!3OJ%hTp^vQyptQ3 zm0!tQkWRb1^f#P03YCBrS}gR>r4gPgK1|wst*z&12+s)23_A$dV+HRAXia5{cJ~uF zs*PFVR_bat>lx9aF=J6($F`xB|xWuH! zQGRW#l;W1c0wtr`TOc@}$rrLthIuu9OsBt5NnmfA%abdtnkKUgc`B_x?>>&}sx6|j z7)q&|mp~NWqpTxJe(g+)8NaAy32}*u4q~lQs0Ptb4lFe*4;(VvBT~t9KSb^lg}#-x zloiL`K_UNAi6&#A;8Kc*aGYnYp_gCx#kDcjFiUy=l(CFd363oGGHUk}9CswYNQ()X z)wr!>2iDIn%1MqFmVHT;wpWyVNqTYUCAG{cEkrLTi1xCV$h@n>ouZP|SYw>a0C5fN zE!Wx&=RCvSSl$)(zMz+0$WC=n68)f!M)s1CiYDU}$4VKUw6>CCfZ|0IpT=6nds^IJ z-W~*gcZf+;i|rtuTRs##oJuJ@C(+eS$Y9EHa_i~ky^IF-R%)_^wC{P73SKQY8S8f_ zE%+Oa|0VZ;u6ko&KZ#b2DN@fyrfxtQ?*TV!E8^St(O>j|23K>ax z8!G-x;}>*L#xOU-PRL#t)>?a;!TV|b+tu9T`lJm=**i&+)?LJ4Zaii zTz~6~uvNw)Q#Q7@m$xiOa)pX%(qABVy2#xoc%l>PN;EQ@*3}s(3)_VZ5WLE{WT2PJ zaxtvYPy?sY4<4vdfl6GtJ6ZF@mD9m+!3pg}vzOB0l+$EaqRGPA(D)7|*UPx%G8WhK zW!6rP36@Pr?Xnz7s*z=NR&8zkPAUSa`>G|jm)3HM$$u1g)G+O&O%mKdFT3eAWWC`S z;l#6;V;8HICL?KgkGS?iGFYCaw^5-O;x4OEUiXJ}x`FkQ=n~i~cOpk}b*E}=DaT~X zeY{!e?PujDS`HpM*e6O>pjTFn_!_$6Tq3G_K*lbP%^V#Kc+lPh0?CCeWz}a*QSH7X zNkMtLj0NPsC-9MDHGy0(LX(fgZ4&agkV--hkxx$aFzX0hC*P8{ptKx<>zXK$xSjSc z@_ur#k1bzXF67NC_$ZaT>c$8Y;5}wq75OWW+q#3fo) z&)>1G3+d0>l1d4=$0>IZlGWZw-RE)|Cpi9MUDs7=0wFHcNsfwoNkZV1Wq2JN2vdf* zmV*p^L&?)Z&cFnFDK-9B$tSGL_VP*lRgITAxGC)xR8lB6y%~DhEAE)(ap$r?a6HSW zq*CecsCFOmF0%~LWD4gJUhYcXVltAkUJ*!1ITeAu(l)>|%bzrvno2rNe#H^rG0oyg zW?7t6G*}?yww}unJ!{@`kV@QFGO8IcrC$6T=uR)!=x2_xa?cCC02g6jm^^Pd{e7m5 z6$Fx+sGGgCMwmvgH>pd~?oz(Yx&o(#tTuUhAy@5{BoK~#E5j@xx{uy-Lr)hs-g1q! z7xun1;62Kd1XmDJM9(jI`&cg5Ulrbr(3)~(7w?sj*Dy}WJ|=pgt522{!Vz+$|AEi>n=D0sh2WdK@Q8Sy#L9VOthMb3Uk~ebw*lQ^G+4An>E9^j5O+6Aq5>ob!ltu zZFZ$2YN&wRRz#CQRm;4prPJC6_(sMQ-q#w6CL|5{KZw52ecG@ktFUS_EoVVw4MmiZ zPVpmJ%cAZ_$`yH=!dp^9g>-@x;-302{L1=F@pSao>E)h~qa4qKwB}vUF<9|8&OUHB z&w0};w1M|OL%*caTQ3tW3|-tNZ!xnR%dnREv-f&^ZurI3VNZ=(Epw!|GBub zVSCa(hZPRHhP1T`9h6qavVu0EvZiw!m-dB>C<--|woQ}a?WM8Ytj3p?FQ`OdHJAHd z&tF;2byg8spWFL_=yob;3A`eZR>>?5F`d1*jyPpl8@iuPIjy)89Fa)PBifteOReoN z?{Le6(!#58!SaKWk!5@h-@qPM=3CZB-tSmZV3@{3I}80A+d=%H#&lBYb#*|Y_Hv^N zp3hrCMl{PWNPU9;T#6kA{GMZmkXw4$r28sVqI3KJJq@^kR6l9yO!*_nPmoncp!m<0 zG2j=-D5D&yf|Rp5x;3n`RL((6aS_P>%Ia*al6tAgy3bl?m{`1j61YvEv<@;TIb29= z-t$glrsaAW?|9>I#24IJlL_Vi;Ow(PCLP2TvQVcXQA3edFS+3_)#C9EA@CXRZt|72 z7S6I2y$kBb7q`mtw&I`jHq*f<%LKfCDp|~Fgm(cRvH}^u@qTHqlDc2WO=$0xo>RKC ziNZoy>8NDTMh?LvSZz2G3%N*dxpr479)akpFiXhaCMw6O>cUrpB+^D3A+pm*YMBgv zwfvs^Pv#A;t1YZ7I#}eu{@`7wjmkRxO0~~b>lt=nCQo9@oeKR<^mlPz2ni3ZwVRwH zqTG}+>Ig}t$rK!4sv80NC>}{%X(hiTuu#U=8mhy4kkwXhO1VF3qno`CyhAPjl>3_X z0J7>JmEdd+=bd)HQtewu^3oZk=FMc@6O<#UyT{}iNc}-zjNtziN~%yA8EGLRsdTJ1 z#)=hora}%WzA^0BO;njwdT}$6YR|#S(ep~S-tc>Dji91U^lVxRbf5I~jmFCE7@--Uz1N`voPJSg@k?LSs-Sw@k zS~xv_qnFI|{&A*@2}E)b*)1cpjvH%|+?jgGBDkj9G*rGN@Ezok;p>7sHuR^bQSV_6%T#u+k^XuTeu5OC^TD!A_ z{Gs?d@-@u+H_=A~&dR81FPptfYBaX@kw8-+Xd|a7b3r?Wb_w33 z-TxrBxT11PIkoXJ-fLry;Jvzvrtv`>xv4a?*GKR_VP_yWi^Ca5FABX#ke&B?xg!OS zf-Z7nl1d=>m4hg3Z?olGC38qy=D>2Y%CJhBsH8%n=N0-7Z35pox^+ZrIh?FI$R*=j zjzrRSakM8oLB<7p$BZ9?^+w&@Lb_3YYxyUYzw~kuPLPkFcpROUwtNeFq)aeO5kJiCb zhx5HoqeDSbSsdLKt^LJ&R2zlDY6!_jWxYbvsr+a!pNzZW`Wxm4^N!{%EbS*Di!A#S zEn=@I{LGQZ=dV72V)imq-TN4%dv{#%|37A3P zmhn6I(1bX!zr~Hzt`kJ6DTFPqc(={ z##OS6kkjhsHDGVvi7v$lNUmfoCBNc`&AP!+1Rg-tp`6XKw31bH^;(U% z;wJNU)bm$HXa$>jW9al9?>}8NX3huA*xK!dnD~{&ch^^Bq zGO9u~$V@L0fzzgpFSniU`-YvGu?7f9ETp=Oz2a(!%cP-!M1O@9uEKt~6?_gd+goXG z71WShp59w}H7%D@S+Bp-9RCptiUI#*Zpw zo{)qbgDuO*Ekvb`xX(4YNuj!y>rHe-FDoG-(balBCvB&+?i_tspF8#{I_+WE1~NiJ zD5!&aMC-$RZDcX;->!5#2X>a!J;AHVM;4NUmDJD;q_x*yCytjKUntquFiWIewO7~P zAtMx0va{gFMm@qYRgKlqklr*IjaV&&G}TZ`L+=rCR7QA6rh~%t8Vha$Q)Ps1g{E0% zv`h(sr{G21Z$(KY!C?|3Kll6)=80jw^X+$6Y}+<4k(V}#>!i>MoscY(NG99QN3 zuB)QF^~9ZkzttV$m{!6^@|)$x)T|pk63$qOe8T=9bylGb ztP~1GlD0O4N9eLBLo18ZfM^SbAQfcT&IthtHuQRKr{+jV_A&^sl+cgwO`_6qHescd|^^w~bO1q5xSgCZiP1*$le-JIhn_Wgmhtrt+83UfxUr|Uc ztv`V@tVOCd5;DNvTc3lfPz=%v8OYIuR2Bk1vL^Eub)18EtFf-T@Dq6l+Z&^UZ?)D= zL+MCm)MRewGD_S^X|s(mR~sjwz2H1T@YkVJK|@a{4;Q?d=tQ$EHcUaqR}(#8Z-kJM zaGuH_x#jd6$#N9OXW~Y))<{cFB{FXgB{SEMElRJuy1@$za^ zfC=I*@-~Jof^X8xLOHdM@h99tB#z0DpJO|` zA-{u_RgEdU>7C0|)}QuXkot?2)rFcvFQyK@b7dBWT|wtk)}l!N&y*x@@hBJCu znrvg4UC2Wj?n=KC+1^JXiB;Rk z(O0!E$q1@dyD!}^Ms8z-7P~#7dJI zjGIE{kpBS&kc#g(=V@&TtAMMuMA|o`eigDvFFQH5>%N@aywF(2V%};>*0NWfmC-qW zO|%)6CgK9ad?JvE_lV^yvn?U86nd!p9c0&iF~O5qIgOB9_aTo6p^zTM#SM;)rcZIaf+PE*|8G#(G)=G}@hTcGGu8BH@b-=q@?m@w^ zq}5~9Fz*1tsgR;8ne>QtdPHGYRBUW2m9uP+rZu2G&9? zQd#u;AZ#p!3KPw0Z!(qK1oFUZ-X!*>7=NtR{uH-Sp>qWCiYvtN7e_1SS6hu9_B!gc zxn8o7I%Ds(v`uCUN4dFUYG^NkxE;`2-0!3YDl~|<4$*Z+I4WbPkU6@F$*SNqI@2p+ zn7LGz+MCFGj>_k}*DQ0e)|0wS`8UDMo#Yn|YzprZaX)IZD(`**^H>|C8>OX?k%san%LIa32uV!fEaVb=N#kF$KFRoobyZjS)qSYv zza93!mI)PlMzk}5qQ>teBa*nfPOY=$R04l#ttxA?4hj(1!fL6Ft*mXZ9S%tAB6y71 z4qA3|;{U;Ad-cd4(_}UcO-gk1l zkZQ>B59KJNUaMQp2zv+&HsCH9QK%HRcbT=9HBeU>Wb78QoMR7bG=YL9k4T`EYF{bd zNVOrx+AD68-1I{7={YKaeU^pfPGfb|WG``}Rr}7~KE)3h^$W|2(gs;JCcmGzFo8-O z-3a{R^E}OfovBpRL2F&r*40=lxrIcrw@+*PVVB_dln+=QgeGdt)9y8TgL#|Uiz;_M z$38fqjrXiW(u!#4puM|F9@14Htvjo{xSrZ=X0JIMmbQQ+oYs1XD@vuN)7VGlh>*h^ z=bZRa%f@CqV(*w`WujkE>0rv^_D;Y_Xe&6otDnec{FJ@Z(38M*6P>X<3ylb*knvo# z>&7ppq0jYKmm{jZ+fHqg{?4geT*x^BEsV8Oq4SpW#f6B=p@R$dPLsN!ZW|cDdsHti z<+g$xLh4X%s-az$lQh&>@SoZkPB|IW6<0zB@p((Ka;o;X+@$uRDb$*BDc)`_=taHE zBHGdNlI3(6=jpX|0WRAsEn^wS4ArjKJLDqgbP!3k)|5bZxFENTjBlL5F=JhoaSd|m z>N+botE3uvSWQ?L)VRT$K%oR0Z=>f8mN$*?PRLCmd8OTAwdGjI(MjAM4SmqYFdbas z=;Z@4ilc<(LsnT$elK^Dz1yTtD0zp~LT+^4zli2jZ8mF+;Q#1-5?tKSvFQECG24~d zWbcsRR@%5r?;ey>vaN~QK~racpCddgos0*T87Mzw{h)&@s+eJ^nOy~XL0Xg22`PUU(b1DOf*6zh{n+y8i_kEl8^_twRp{=sk--V= zV-16-4&sL3YC^gSek-J&6Yor*OW2X9c3AP7f?rs^gi5MahF6xoHTjxVoyrjzJBYrq z_qG1I61eYNZaLkmy3Yb>>>Vf2RmnM)M+s!tX&oWoJBX^Vi^?Br924@E{JXFkf~)bS zU>#Qcd&_*3|I=xB2YcDPFL=M9+=ur)f#dX|tMS3|gylz8`>;+iI!2=`wU|HDteJ8hNs01koCDH}U4vUrr%2?A2ARFM*Qw${4yA$IluXNg%V2 z#R~^9-yDVMopJ#R*vn0?9+mXu|K;c^x19cBu$EBCOEe;>`htJdZVx5v@D_1QKiTUh zqqpFwq$;Ual(#&+emZSH;GAVKjtZ>$l>75GNo1++fP@9A^n} zWexMQ4r0I$ycH?`&U#|X^Q>867Ds+1OUf-3295*tej)Iq5pJv2K%6_c?&Q)zOx|B1 z7BtacY*tfNcxm;iEYNd9xdXM^oj?Ic5=Za{7b=z$|A948#uLlZddcK-e^*9a!IRAv z=>8u~mJt%Dc27u7X?b~9!&Fk6)&0hDh@LB}(L?ZV6I~;pNnCS|Xu8TG<236Raq-mc zDYp?vGu2i~i_dXiNCMVxP|0yN7qZaM3GLl-5Q$iU?pyFCw)~wV2`ecKayT{Z#U$Fn zfWNW^b6lW2gq2Kidfqe||J`zxVfyL$44j3nhW!L2PzawJ#d3mtqeZ2*;2LQ=zJ8RzV6 zcgfP&d!XcOCzRImp=Dl$irb52xymq==`A)(!`OAx4HS)X-5Tm^c=wY!wmDvn-)TXSTgJV;zt)}IiM z_cy_RS$+qwH5k^?ed&6FA13n?p zf&4!NvO^BoK|Upwj=WW66mgNi;kZHNJgbVcs>VA;YrW|uWJM-FTlXiW&2$yA8ro|& z?hMgsY~GQ&%Bke%mbq9r$&cdbr1(j}wWP%-U(hgpSc6$ZV62jNh2$oXRpXuI=CMq~ zo0s)e+E3!1>94gblaC{*)=n$bMOt+e&61X%w}xd&-f?h`KwnZdIri9lMDG?Wgj5vD zbDYq>1b)(F?XcstH_E58l;vns))X8SVmO2E9avXw)FNLs>`#E;+Lq7MT`ag7M;&_w z)M#VxqT*u+3{|oqM{FgtIMaS|?`rZh_}Si8y(E)XNJd?H3oS2NR#&6B;#Ukwvtv~FSQ)lW*Iv)pHux1P`$cVGT6pQ#~g!!W{Tdy8(e_Fo5zv7;l6K+Wk{& zxy2PHUrR4L;4*V6~Ewm}3s*r6y{~v6S*aaT6eqYE@tW$JMZ&!ww9(2^mVIgzo>fY)yHBdE2ns zLLui_X+ubs39g4ZcD&5>l+WE;Vo;Vywv_MS*9Zv*0da860t>rBL#^?gP19c_*pX)Cf(*U7?)B(C3H-_9hGICU^>~nZ1!(yDIn^ z442VeNDtVrP!dC@WHnPQsgS7zniKeyz;*3@t9UZr2jW`ru9Mr7RLQW9l)XZv+R5m} zF+zXMW%Lk|*!f+RHW_*gc}w)Z$@^ILg?=zz@MDeNP`tJ)Q=UpIh2|(UN}=judIah@ zwcqJAQMW&p0Wi%(t)<;1up361tq##)F2!)@tz=)y%Lw!&I*`C!amgwF#rm4JkKnyJ z_{CleQ*N<0P1;Wyzi63?UK_;+k^0hdpR_hYT1s1Hc}+uug|xCaLPJ9=hr(EAaL=e4 zRQt$!r=hl#hY1-e;|C=VQ2txSLsB`z&fejC()bpRM;z_s#^fkZZwhNTsSz+*L!*d} zhI{I6H(OOTeq>!&XteI9JL0C~v#GX3jR;2VPPDy3BZ)2-9AC9jmJfwI*2~wVIuJM* zCdxZT-6y<%+51(=>_Wz9Esa8B#3iLSmNgE>LpB}EB|pM3trrqS#s&hdNqw)E34)`u zeh$-Py_YdojTy$OLu!%^O4#epdIA&WCUF{*SR=#I^gP)zaabYUw}Ev^eh~6WFXKpk zBjk}Lr^uKJ)8MI$|I`hqp=XwFE&p~ECQ0kyOpCIn%Q(Qg&pX3%oHo8yvZJ`Uyx-`# zuxg#`Rkt@@Tnu|NrOkrQy!m*0!VfyAOL;iG*+S;Pb6vfFxt8G_#5@`EEa$@lSP1n9 z%ygWyU zQAkF)^*Kt?Tgvg7IVw4g*!D_6HEHwIXzubX=I!DjYHRX6Z(F0DbQL~@H7Tw=ZwSX3 zj%DO~3m!yZLD*?%ccMAkiCZpY1&o#ZnZ4BN_S5NO)+oxq^A6T{a@I>dPogrPUVihg zq_PTnDZZLD-Y_wx9n!(KM003kqrEjk(pxrDW0X18+FJ+fVFTQtazHN|!yJldlaW(y zSLZTWFF%I0W`w-1{sT1*>*bZbDMF^gYs*cfy2;(l+5*#fx3adumsF4rW+} zvutRXoJwvNyaO62IYG(E=B+EEgOHuP*?4!ccEcCum|(U&mfiJINAO@TosM18&ku{!?ijhVb$Xh20mm8EA=juFsYhyz6<36Jv9vyl z&yn_2jZQ?zLtl=z_6lfn8|yKFnLg+hh(59WS3_qNI?VdV-ZH@{6`D(Vh=UkLWxkMH zCW>vZgY!!z?jL&nlpJSyj@~@Ehjcp8<^D%TG$?ME^Frnexk0azvg&r z@1o@sA&(s5OOB=DP8g;?M{0G)kZ%b6^>RsCCjt$P)ls3#VSB8by841Qjod371Ek&L z9mraszwkna8gP)k@q%j@;i`<|s@-s4Wm!GNUE|0s&wemM@_*sR+;o?oqifq#bLh#uuCIfxU zH|3V5vJzg|8zp2FfgQYKoyKa*+tQYk+RGX(ZVg8_y?pMYmsW5YQt#}2rJ*veZ(~w* zIihN)K1W%OF;rfwyNWlvLrl-RTHHX^SRv^g#0tgV2)-?N9LHPBNuwPN*<+s>(l@OFYV5MGVt9P4zI zO5=^3T5{emc_YAAaM)f%)*W$cR9g#??5$%(X2qcQHR~Jr%HgEfX%5Phb@eUB6jo6a zW#E0vn&Oi^h&5h~9hMV$*Xu7Lsj1SwBhcPecxkq_;-c7#3d=dxhqWdnvBo!8W}w`| zUNmt%S@9g*a>q28)y8!@BI5&ZX;R+{o~G_ABOK7$7S;w`^%B=f+&yU@Ef2fg8+o_7 zJkbeskv7RNKUn?zcq*0fs)ZP#0r@{PK2_RACmEBL(AB5-+;#^X8Jf z#oioJ$%PE1G8=x8J5$_dQs1!(*h?WUC8UBZCf{O&)RzCU=FL-!;^xC$%iJ1I=7`fuTjqoY`r{YXkt`4wfxuSC$I)7F9Ln45eFf=suu$+ejyb9= zvP?%b8maB#c0g9$H__i#2l1!n*Usf8`~q*NJg1VLKn92?cYE=BrBdg_38Qav@sh1sLy>JY12H)$soQ%Kh{SCiz{G@|yVFEJ# zVP%ILFvT$Uq-~)5m*ssKkDXdyXl%BL_G$^aYA?EKM_r1eY8->ELMA~@%8|93i`7qX z0yX-xrmFEb46w{CWSlAADwM~vyx`oV7P}||#XYdB!0{U_S8|scd1Yjy7hOXS#XWaI zN3@%l=o3Bf7Q8~Ce+1`~c0)#X%Zfw`N_!<_498xVY?o7;CM3U%pUHns>IdE>`ujnD zJ>=H4_pi9g;_efjF852z0vrXQ5=S9cVfcpLHci$eFwe)fm;qhNk6@~Nq8>_!! zmM_IE)y8g}7PmK3MhR9)xTUouGR{!`QM=1z%?i6Ra`Ujh6!*PlZ2~Er&|wYzEG?dl=)6bl)e+K7&rO|pR-!XhTc_>; zaqC%SU5XK5C0P+<>|_liUzbWfSfR#I$_M4fGFE+#25^kyjQ%=8LwkAkTt&%7mTipR zM3Y0D-*(H!9DnO?Wti9U5c#I8$ZE{h+8hl9_Kqu5mFNYIp`~sqJ!%OJSq6FxSB$SJA)UztpvA*Hn2(BW|+!*Nq=oQ+QC20 zpgrpdsWr~DgXIXVt+gDc@r&XT8m5`9epIr!p|?;@srXh_AvLnWY-f5(lO5^BA+SwI zH7cF#o#y>V@E!s?lzb~Ljv7y4yNm}i`U^QD<18H2Zs)MZokkbd93{K5{?J-}ddI|d zv)3I)+UvpU3B8~TrAi>R^$*UPetLw}8Fo>MrJ30!v{5 zsh8pohZPrhhUhhV|2mSLjwyz{f{L%FH$tIZ9LuOIhZV3g6or%cElBQJ3<*NdFC+-9 z5#n~ckRbGrRY(xpMo17U9}u8igPuxbHH^3|Sy6{0VLi4*rI0@DF5% z9FP-oL2k$cc_AOYnqCOp;I01crLG=?V76g*rSGy{L&f)>ycT7iEk2W`MJHbFaR z4;`Q*bb`*%1-e2v=ng%gC-j2e&F!7v1d!Y~*PBVZ(qg3&Mr#=q2HHY9Xb&BrBXok! z&;`0eH|P#MpeOW#-p~j7LO0iG4kzFwoPyJE2F}7cI1d-#B3y#Y za0RZyHMkBp;3nLH+i(Z&!acYT58xp@g2(U#p29PD4lm#(yn@&82HwIucn=@oBYc98 zaH04N!hu&t2fnlpJck$fCOn7$UqM8O1d+i{6@zcUO=H1#;6eW&D)>e<@RRr;I{5ih z@FRFUGx!-|fS*VPG2vJ6v`yek+`vBrgSZe6yiG3f%xvJR!XP0e0{5*3ZnO;i8z4vq z-iHt*2k#LG+6o7(I2ns_HCgZj__d}$ptg2vDUnu32Y1kIp1w1Ae-3R*)O zXbZl64g8cN=l~s|6Lf|y&=tBtcjy5=06KsYpuobq!cGv+sVHfO%J+K${!G1UZ2jLJLh9htkj=^y_0Vm-U zoQ5-S7S6$WxBwU75?qEWa22k>b+`dH;TGJ6J8&27!F_lD58)9!h9~e8p22f?0WaYd zyoNXM7T&>o_y8Z_6NG#o3eRr@;lQ`(fp<{^;lU3wg9z{yM1)8X8NLROa0i}u47|}I zhyqa|8hj7Y;RpB;euAGN2K)js!HX}0SP&ch%q)lt@xZN=fgeQ&zd=Gs1c|}zy@9(U zgJkeKczaKf0#ZUMNDXNqEu@3=kOBSxKjjTFL1xGTS>aFk3;qUoi3NUw7-WYWkP~u2 zZpZ_9As^%iH_rqGpdb{2!cYW?LNO=~C7>jfg3?e1e7P8ugYr-TDnccw4F5qD@c2Mb z4XQ&8@OW2H3u;3hs0;PLSC2shXb6pIxtO?I zgiWv+w!l`{2HRl=?1Wvg8}`6n*a!RJ033uva2SrjQ8)(2;RKw7Q*av2z*#s4=ivfe zgiCN4uE15e2G`*R+=N?j8}7hexCi&)0X&39@ED%JQ+Ni?;RU>eSMVC%z*~3+@8JV{ zgiqkDErGjagK*%n!N9$fL3sEQB7m3v1Q8(;LpO@A9%c+YBoV}gc;K}!K?3mhg}@yfK_W;DNgydC1CMeA z$sq-#gjA3k(m+~B2k9XL`~exkYYBtQ;Pn@QZ>54i;V<|bvVljvgY1w4azZZ14S66h zcp*TLAKcd%6o7(I2;9#R__jSL3dNu}lz@^@3fx)~l!3BP4$4CXs0fvyGW-WspelG4 zET|4OpeEFU+E54Fdm7Y(`p^IxLL+DlO`s|GF>%lgnnMd{39Z0w_dy$I3+*24za z2%BItY=Nz?4YtD$*a^E}H|&AEun+db0XPVU;4mD4qi_t4!wEPEr{FZ4fwOQ9&cg+` z2$$e8T!E`_4X(otxCyu5Hr#=`a1ZXo19%9J;4wUbr|=A(!wYx`ui!Pjfw%Au-opp@ z2%o@{p226}ckBgzXF=eX3IyT7Ya#>B<^{g+4kAJ%@IZFp;h?~S9l^Ko9Yles5DmVE z=4kOi`WH*y7k!QYS#yp166q)y<`gTO-r zK`zJ*c_1(319#j9Zl?+gKtU)3g~0=VK~Zp1c~BfmKuIVCrJ)SCQ!Xe6<)H#pgi25u zJU0?lfvQjqszVK^3ALa$)PcHC59&h$Xb6pM+DKHhL!E~4bGhr6YhB+`7=D~be01IIeEQTep6qdnqSOF_x6|9Ceuol+A zde{IPVH0eIEwB}~!FJdIJ7E{>hCQ$s_Q8HQ00-d^9EKxs6pq1hH~}Z&6r6@La2C$N zdAI-<;SyYiD{vLA!F9L+H{llChC6T| zd-wn!;S;#KIdEHS5Dq?vFCaX82@&8chzOA&GJFkQVG(%tDDe9+0uSB=?lBLd!S~=s zx8Mix0`0)NV*`)i1u@_khzZ_)9(XfH;3W$|9Ec0?z?(t?FDwW=i60~c&jtkURSw)Q z79@pa@H@C8J8<(+;0~1_6{LnVkQUNGddL9YSr&MXEXV|zAq!*$&u0hT3L1EiK;ZGm z!1Eq0H zJT?=!7bK_zmEk|A0#(7gK!fT~18PDos10?XF4Tki&;S}jBWMgwpeeXHAZP~7p#`*r zR?r&SKwD@B?V$s71ozYjouLbKg>KLtdO%O;1-+pU^o4%V9|pic7zBf12n>Z`FdRm} zNEij9VGN9gaWEbxz(kk?lVJ)>g=sJyX249C1+!re%!PR{9~QtuSOkk<2`q(WupCyv zN>~M}VGXQ>b+8^bz(&{vn_&xVg>A4McEC>91-oGn?1g=>9}d7lI0T2`2polDa2!s+ zNjL?k;S8LGb8sFmz(u$Om*EOrg==sfZoo~r1-Ic2+=Y8^A0EI%cm$8(2|R^o@El&i zOLzsZ;SIcnckmuQz(@E5ArV6H8H58bgbKVvB=C%D;337pJ$S)a5D_AQUwRODV`AV1 zfPuI11zz3}M1iOf4ZPDT@Pd%QOJ{H5HVG zGEf%EL3yYE6`>MThX0@nRE26#9cn;LaOYj%cC^6#XF*-42lb%=G=xUb7@9y+a9>o= z44Oj=XbG*rZTx{dNrSe~4%$Np=m?#lGjxHj&<(mn59kTKpf~h^zR(Z)!vGivgJ3WW zfuS%AhQkOL38P>%jDfK*4#vX-m8E!38&yRoPo1&4$i{`xCocvGF*YHa1E}*4Y&!n;5OWWyKoQg!vlB-kKi#p zfv4~cp2G`x39sNayn(my4&K8D_z0iC`?UgZ+X=kwB={V@fbj4oL;x?I4!l@0@M5~a z8-fBaatOR?An+Vi;11Rx3Pgoy;8&dne!D{8*B=C45+8VBM&PN*z+-QLr*eXr@GHcE z*boQeLOh5M3E($K2#Fvuc-LIuy<>s5Zv|c}6?mmh;Bm3Qouol3NDXNqEu@3=kOBUH zjNsMlfp>BSUbz@}*;?QwM}hZK1nvY6+~*v)e>unwIUpzGg4~b?@x_uMWGlJhZ0Z{N&sG!=A!j?f7@Ll@`@ z-Jm=4fS%9`dP5)R3;m!!41j?!2nNFt7z)E+IE;XiFbYP)7#IuVU_4BKi7*K!!xWeb z(_lKxfSE80X2Tqq3-e$;EP#cu2o}QI z+h9BFfSs@lcEcXn3;SR{9Dsvx2oA#$I10z$IGli!a0*Vt88{2);5=M_i*N}p!xgv+ z*WfzbfSYg&Zo?h83-{nYJb;Jr2p+=|cnZ(pIlO?E@CshT8+Z%v;5~eRkMIe+uPgAL zroii00uQeT9!3s4%NckMD)6L9@D)UaNDvvmhHv0o_zt2#RPbK3z>8-B@0R#D+K!7ve#DNC3Y1!k^#`&4CxR2HwaT`~%q`2jm3rVF)}A7vzDw zkPq_1zfb@QLLn#&MW84YgW^yEN6{rf;pgPomnotXB zLmj9K9(fHsq7^iNhR_HaLlbBU?uHMVL33yUEuj^(hBnX^+Ch8h03D$dbcQa_6}mxp z=m9;U7xacc&=>kae;5D*VGs<4Autq%!EhJ>BViPbhA}V}#=&@)025&nOok~i6{f*- zm;p0k7R-h@Fc;>*d{_VrVG%5bC9o8h!E#suD`6F^hBdGj*1>w%02^TwY=$kc6}G{4 z*a16X7wm>Tuow2hemDRJ;Sd~#BXAUs!ErbNC*c&FhBI&$&cS)O02kpBT!t%f6|TW` zxB)le7TktAa2M{ueRu#5;SoHBC-4-W!E<;4FX0uuhBxpQ-obnL03YEK_~lN4--i^0 zgU{g$@QUofE6f5f_X@m9BJjL-;8DlG6K}!S@C|$m-$4|J3en(uhz>u1*L4Tp7#nz} zY2a;Cfj80w-qH|w066fxUJx7NKwO9i@gV{H1_>b%B!(oA6q3R3kQ`D#N=OB%Aq}L3 zbdVl0fCtBdjF1U3Ll(#if5Knj*F*=|;2+2iIUpzGg4~b?@pfdaiRiG;PwF`k4`3GK8A9$H}Pz!299jFWS zpgwqsLEr@gf#<3MPfi6*pec9|C};-Fp#`*rR?r&SKwD@B?V$ts-C%)V@)dN3F3=Ua zL3ii@J)sx$hCa|2`aypf00UtV42B^v6o$cY7y%<;6pV&3Fc!wac$feaVG>M+DKHhL z!E~4bGhr6YhB+`7=D~be01IIeEQTep6qdnqSOF_x6|9Ceuol+Ade{IPVH0eIEwB}~ z!FJdIJ7E{>hCQ$s_Q8HQ00-d^9EKxs6pq1hH~}Z&6r6@La2C$NdAI-<;SyYiD{vLA z!F9L+H{llChC6T|d-wn!;S+>J4#j5> z4*u8PT{TN#wrLnm0!aul;_e9!8~2dlkl^kccYSepcXxMpcXxMpcXt@p%+&mbIrzG( zR#$a(^+6x>*>l}d5EXCZ9lVQZFm@iI<9&Pp)2YGMXZRQ~@CiPJO_X4-B#7My4fUWY z9@L_P&}`6@3^Hy(NGS+^1Zj^T0uh{72N%=9wQz8S8Ggqfh>2K;jW~#lc!-Y#NQej| zLSiIAQY1riq(DlfLTaQzTBL(4X3!=KifciZD`Y@MWP)BuQ2Ge^9w8gt)dwfJ!A)v# zVHzAMhFr*vJjjcD$d3Xjh(aigA}EStD2@^+iBc$yNR&ZYltXz`Kt)tSWmG{`R6}*t zfIwFe_zB7qp$_W84P>Z?`e=ZLXoSXSf~IJO=4gSIXoc2jgSKdg_UM3)=!DMbg0AR> z?&yJ@=!M?sgTCm8{uqFP7=*zXf}t3O;TVCD7=_UogRvNg@tA;#n1sogf~lB>>6n3; zn1$JxgSnW8`B;F3ScJt`f~8o7$riNxP{xegS)tg z`*?tdc!bAzf~RKAwCiyAtI0niID_JkqpU^0x6LSsgVY0kq&<%J^sSq$bgK*6pgt3n zW`Zb8&}s=vA0ZO57D0w02rmSkgCG(RDxwl9qYA2`8mglPYN8fuqYmoA`FE&?`e=ZL zXoSXSf~IJO=4gSIXoc2jgSKdg_UM3)=!DMbg0AR>?&yJ@=!M?sgTCm8{uqFP7=*zX zf}t3O;TVCD7=_UogRvNg@tA;#n1sogf~lB>>6n3;n1$JxgSnW8`B;F3ScJt`f~8o7 z$riNxP{xegS)tg`*?tdc!bAzf~RRb3=7NGToM6T#m}?29JA%E9V4WhEFbJ_A5+6j}gLZq+Mh`OPK^QhjrUpIK zphg;GMT4|ukaY}7gF#R*DAonRxu6IaB;bM?S`ZZrQer`KE9hYb5vw3h6(p&G?o*Ix z3erYFXDFxv1$mtyQ4$n4g6Kt1xd=It3%QX8d65tKQ2+%|2!&AuMNtgJQ354V3Z)T= zGAN63D31!Lh)Sr8DyWKTsE!(_iCUcFP2#c`vcx3ahaOYq1XNu>l*g z37fG6Td@t>u>(7?3%jugd$AAuaR3K#2#0Y5M{x|taRMiC3a4=fXK@baaRC=`372sN zS8)y3aRWDT3%79xcX1E*@c<9;2#@guPw@=T@d7XL3WDZAnLOxj2jS@;JsiY^gEDWB z(+!fOK} zX^{?pB0c`X-^hTB$b`(uf~?4f?8t$C@Go*A7jh#H@**GdqW}t`5DKFRilP{bqXbH# z6iOo!Wl$F7P#zUf5tUFGRZtbxP#rZ;6SYtqbx;?gKcOD#qX8PC5gMZjnxYw+qXk-` z6{x}qDpqX&AT7kZ-)`l28DV*mzX5C&rihGH0oV+2NG6h>nV z#$p`CV*(~(5+-8`reYeVV+Lko7G`4(=3*Y^V*wUo5f)V z2Eo@L&>D1DgGOqQLJe}EL02<~VFpRap!XQ09)sj!kWvgHh(YTxX!-@EvY<*9zr3$h{`vLgrn!N16fT*!?)$cuc)j{+!&LMV(PD2iezjuI$| zQYei`ltEdPLwQs{MN~p%R6$i#Lv_?ZP1Hhd)InY7orQX+j|OOnMre#CXo_ZNjuvQ% zR%nejXp44ej}GXFPUws-=!$OWjvnZVUg(WJ=!<^nj{z8nK^Tl77>Z#Sju9A%Q5cOe z7>jWjj|rHFNtlc&n2Kqbjv1JVS(uGEn2ULsj|EtWMOcg_Sc+v>julvmRalKRSc`R7 zj}6#}P1uYr*otk~jvd&EUD%C1*o%GGj{`V}LpY2hIErI9juSYEQ#g$?IE!;Qj|;en zOSp_HxQc7IjvKg%TeyuoxQlzZj|X^&M|g}Uc#3Cuju&`|S9l}FYu?0Lh=Qni8}Hy< zM8kWCj`#5aKEy}(7%}h(KE-GF9ADr|e1)&^4Zg*9_#QvtNBo4J@e6*%Z}=U5ASPlV zHsT;I;vqf~AR!`<2#JvdNs$c6kpd}^3aOC>X^{?pB0c`X-^hTB$b`(uf~?4f?8t$C z@Go*A7jh#H@**GdqW}t`5DKFRilP{bqXbH#6iOo!Wl$F7P#zUf5tUFGRZtbxP#rZ; z6SYtqbx;>lkD(swqX8PC5gMZjnxYw+qXk-`6{x}qDpqX&AT z7kZ-)`l28DV*mzX5C&rihGH0oV+2NG6h>nV#$p`CV*(~(5+-8`reYeVV+Lko7G`4( z=3*Y^V*wUo5f)f zzQWh|2H)a4e2*XSBYwiq_yxb>H~fx25EHQw8*va9@em&gkPs0_gv3aKq)3M3NP(0{ zh15ucv`B|Pksg2HZ)8A5WI|?SK~`i#cI3c6_!l{m3%QX8d65tKQ2+%|2!&AuMNtgJ zQ354V3Z)T=GAN63D31!Lh)Sr8DyWKTsE!(_iCUcFP2#c`vcx3ahaO zYq1XNu>l*g37fG6Td@t>u>(7?3%jugd$AAuaR3K#2#0Y5M{x|taRMiC3a4=fXK@ba zaRC=`372sNS8)y3aRWDT3%79xcX1E*@c<9;2#@guPw@=T@d7XL3U7S+nm6$lq97{X z#yfZy(eNIk<9&R95AhK`Mhtv{Pw^Q(#~1h#U*T(fgKzO2zQ+&v5kKK){DNQc8-B+h zh>2K;jW~#lc!-Y#NQej|LSiIAQY1riq(DlfLTaQzTBO6DNRPkpH!>h2G9fdvAS<#V zJ96M3{EM8(h1|%4yvT?AD1d?}gu*C-q9}&qD1nkFh0=&b8I(milt%?rL?u*46;wqv zR7VZeL@m@t9n^)ucc_Q@Xn=-jgvMxsrf7!dXn~e!h1O_;wrGd;=zxysgwE)KuIPsD z=z*T-h2H3czUYVk7=VEoguxhsp%{kY7=e)(h0z#;u^5N(n1G3xgvpqKshEc8n1Pv? zh1r;cxtNFfSb&9CgvD5brC5gLSb>#Th1FPtwOEJs*no}Lgw5E3t=NX`*nyqch27YL zz1WBSIDmsVgu^(3qd11+IDwNmh0{2Lvp9$IxPXhegv+>stGI^ixPhCvh1#T zh1FPtwOEJs*no}Lgw5E3t=NX`*nyqch27YLz1WBSIDmsVgu^(3qd11+IDwNmh0{2L zvp9$IxPXhegv+>stGI^ixPhCvh1#Th1FPtwOEJs*no}Lgw5E3t=NX`*nyqc zh27YLz1WBSIDmsVgu^(3qd11+IDwNmh0{2Lvp9$IxPXhegv+>stGI^ixPhCvh10+WXzc*vOtdFS&D!CKksD9o*{o^!90;!^JmEynJ0hdEcvIr z{zrZNwg1i2DiL);)rMv3SBz*_HbhjaU86$9P%k1fMMULt$xmq)fyEN)U24aY@f)! xzfq-7v2MaTO^!xOSF?771~n?CkNX~c{jm!S|#c& zmHHGs0IvhLy>j9eI5GA%CB1-G9)IiE9nXC8dADA#eyx1}{3AfPu#JAWJK~^CZjNT#Uv)~f3faAGKLRRUbM)(Uus0J?XcP2uo zZ>O5KPh#2S`lB56xdhKfd&JUw*wwM-oj5s3a}K)?4?neg#|Np>GVM=vI?CVVv6!k< zfpg6|X}3c=9}W)RCve2gaIcYS0^o>XhKO^82AE;yT!zHu9&?#@iRPI2fNjozgDd1A zVsfq&t2Ta_VPXm}!>lH_nd%uBjWoVMbLZ5VgHyZOo5MTxbudS;RxZ$KXgmx-P<+%_ zDSR~zR6mUk0W&TOUvkAY@Zc#f2C%MB znuu5_O247sr_orZXFz6j7RzWb5{yd~(N;9;`dM9gc!x-jK zFB+%g&Hf}6Y%}A#@%eV^Bub!JjO&|~PZE7TwyoP5Ph|*MK7pwWKzI#TafoMkm+0GC zlzEFs!)4q2XUb$4_;HSA0sOYvJC-%rYhYQ0#p2S`;kBrle4uuk#~FVLJIVoroY{lr zBbPt=@3AE4#p!vR|LfRL#QAU%54mak;>cT7EO-1BsFKtbbj8 z*(GTRA{(W!l(}PBdB?2m$Q|3@C6$%J3m}RD6&h9A(0?;2k?ltKvMle_Ba@7gKn>f+ F`2%JE47UIP diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/gb2312freq.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/gb2312freq.cpython-36.pyc deleted file mode 100644 index f776fcdda626ed801050aa35e8634da625fa9f64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38376 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 Gf&T$&(S;uX diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/gb2312prober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/gb2312prober.cpython-36.pyc deleted file mode 100644 index e704d0456a5182c054b512effaab5f00daccf486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1130 zcmah|&2G~`5Z?7)+>o@WQjtJh;6x-^w`m$w2_a~TdLacVT-eLX@orL=wG(zXMXh>E zr9K4@!0T}Il@qVPi5a^o=>^vE?B^YOe!ls<+icdq)qZ>`0z!V0rR4#B4YxT2BZ#1i zWRy{g*ilaAGPlI8@-m=e^Ch4qQ!&$Oxg6{ z+{)fbtOwG5(37Fm;92iYM4FEWHny@KCnsqx;q=kbL3?+neV7`n)8Wjfll)B{t8VgVqe@T}nP3mNaL4F)o9AFGvGkJ6ol|EHPU~844$s`T!JNQeyCkO}dIW)}^tiQB z_+~bhS_AW>2suyl)N-ydp!UJAm84{Yn@r<0*oIhQfX7I|h17+wrI8kx@QhR=*jG4D zRBR0A-^uUK(Nw2rz-M$8>u5AlLTVH7ZZsZtUbNM4zq=>)J9~VGkCLu!XPs?W<2?Ep zP1EV-aF!~unaSPw>vs1fN?=|>+S`3R#KBC<@oi1dbqHlXh1(z?bd}a=NG~>)3EWyV zdWT75vxgsIqk;lM&M^zB?{ovsT2$9zD{*C-@K`jkBIusyaVDR^iE+RX=i=d=oXcyNxd1XoWakERge}&UrQwGljUp`IlL&Do@E>5dxQ> z345+rA+BBnQ#5bJnMkETAIQd{vU`Y;h*CsP02owLNE<=JE6+e@Y%Lq!5Kv7@BS&n# zQkTJhEvx>uQhV%vIprm(Rq6{MiUBF2G|SL`E2&U9knm;I-mAx049cKE%ggx#im3{` diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/hebrewprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/hebrewprober.cpython-36.pyc deleted file mode 100644 index d5f08fc14ffc079c85913cf88bf927428d877c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2964 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 V(e%5;^!hjdpW(u7hi|+0e*k2Bzsdjr diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc deleted file mode 100644 index cee715b379bf07a57ba65df3e2d8f2446f20d285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24874 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc deleted file mode 100644 index 124a7259a946db8206188db55fa32ac96a0b67d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30425 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc deleted file mode 100644 index 0857300a635b2eb3469259e289505e389b327cc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24552 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc deleted file mode 100644 index b793af6dbe922ec0894b5f23f2d07edbdc7d1212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23406 zcmeI4cbME&6^1tu15%WLqF5=42@sZ4ij;&T5FiCYATX3+voqNYY~$`EAr!^ldsnbG z>>aWGZx=gu#S$A9uwb3yJ6}0^y!rz6z3Co3xgf+t1!o|XcLZ46(mI))msIXQzL#PVp39E%|!ui7K!ct+Q zaD}i=NWy?HCd?Dg6iyUQ5{?j73a1H+g@r;xxI{QkSRyPE<_f0@!@_*wNTIc|p6#ay z=LoBW4Z>N%pm4458R4_S=Y-D-vxF0bF9=^0z9f8ExK;Ry@Kxb!!qtQYzP zy`Jrt3s(!*2)7Hz3O^BkD%6Fa2|pLE61EG+2#*tv7k(k=@oj&+Fk84lI7E1?@EGCI z!Xt&lgkK6L3y%OY(`d`n$-b-)4^R8>}IOVjf_u1MQu8nLRn=^Ob!iAL?E9x6kee3KQm6`pU z`ckzyQXNUPda4ffjaFukrh0$9Rv+%Kx9nzWTva)+xox!3-#1tt9T{sh8(Zqt)Yoi` zR1UbJULUR2hX)25W1Fgj^=7l4D*LG9SiM;t?i;G#w&!5q@WAH2f%@uMJ+0xB7SI{A z#(QN1v-5i88T#Z>7okr$b%Zu9*9V^TVv-&~(&I~dhDpyM={+UAqNE3u^!SoqThh}^ zdOJz)Dd~+Rz1gHkmGnN7USQIjO?sqBk1y%nC4G~UzG6w=$N#Y*eIL`o!Xd(;!eN5G ztx4b8q%UC7H$BY~^wmyB2uBJ>3Ho}bqXqrOCH*#}xxzeQzOX=8C@d26Gn0-J3YVzg zm2`rjpOkc>aFU?ki*$;xSXd&QDl8S23Co4kgwur;!WqJu!db#fVU@62SRxB!13x$esk#MnaiEyb<6)qF{gbhN!P!sCHMqxnMBs7G}g)4+XVMrJj zMubt}N+AhjLQ~i*Y!S8!R|(sMtA%TXYlZ6s{lF&uW~S?fCkam$o+3O|c$)BZ;Tgg+ zg=Y!R7M>$KS9qTAeBlMc3xyX6FBV=Ryi|CZ@N(f5!YhSW39lAjBita|D7;p9o$z|$ z4Z<6RHwkYR-XgqJc$@Hc;U?i7!aId`3GWu(BfM95pYVR+1HuP|4++zS4+|d=c5h); z&wed+vrKo@5j;Xi83dDS<;ktwi%lz9Lj|u*R}KY2QG0>C0ruw3=!F74b1-8~zM?;r zn`E}2!fcp9xe7xEZ!ifC4opHOe`}!wRu^{Vo*it(2p-G93}{72PK97hf;lTxq5GX{ z(y0}zv&pX5WQb!daydhVi*Q)s4Gv5~tT1=(!hD-YNu(fcdm*X>b#S%Gl&p6m=2+3`Yc~QAIN)>wTph_5~U6Y~P&B(>M3VU%# z*brV6Axz0coT19S#95UG+e=7ptirS0)^cZs1qvNBkepW!pcRdk~2B8%9%J& z^voH`Yr+hwJU0Y)WOnD7jkAh}E{BIU_OtICU@f@!)J_zHy3O#j*!c) zsK*(~X$C6^891z%7ZpOv&5(x4ylp5ZC)lN!2nWGIVTN3fKq)KELNH#3;LR<<-kgJ6 zyt&|ThRM9+RBVF+;mjr=4&{by5@+SHP>v&np?9w8;{L+WtON&&$#aXqiwgV0Va3*% zh%;2Vm$-Hn^}@XEn(jUXyC}QD8-m$^Gca??6WKv9ig|s88B|B!@?cjcgeh~%jkmE9 zatkvEp*wzlZzr3g?AzqavRFMoboeYUKoNmD0;S{t3uUoTw#H3JHkYTJ1BJI3ivEIa%V0|oM*Ec zR2Z6&;Fv6v-@mXXW($s-Nw8HR!q$ijTeBm#l0ru=cn6<_VLHF9+rxxU#tr$*%C`~H zdAr@oU}!(RP!w-)l$)fX$jF`HowADe=K%}h0r6rodDu`eiOb~%Z|7!sqUD{^0ZoRC zTnB|AIIP$y-xT`GDGHFwSty$8KG*J)IAa^#Zr59za8atDaz*i4c`Rnb>s*^54$~pz za$5)qCUH|yF|Spa4XxI^=0t&k#Erd`YICijE*iaYmWwtg{Saus3 zxe#}6M;GUyRJalcDi^|;<8uAwLc&)gXLH0c{c&%$y?>AY^JQkLA@B?#~X!XIH@y7J=6e3J^yr z&ZdN-amHeQcyp7p7vfNiPi3k&HxwW@ml3>_&nbfO=FaeTN9~L|+$o6t!g)4CcWz#4u zPcH;_q(Xtv+Eg?>{#0zdu;=gu%HwjMzB6)rA^4u6vv;o?wEm3M`ctgcr7M=Kt*%>B zU9)!C^0n1fOU|y$T(SJrwaeF6S1wt7dUe&BWy@Dq_Fvx^R`kFBZ0o9#T7B@Qo^*@; zilA`!aPMepZ0T#(d$;tZ-i;%Jt-s|u)>~cFJFsEFvGWEu9KUE`?f3-?t8=Rx`xiCm z4J|mP_0Pa?@4DX6#^{_4n;V0*IYagNeOr%Nw5eBrzO`0w-t+(Z1FoC=_hN^1@zJB( oZrk(3mfSp8Kl$+1?PEtwYjIlHzti_B^WOJ;)2Ht??Z5y23knV?tN;K2 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc deleted file mode 100644 index 1ff8b689b19c7378cfcf8c265a7cae4170a782fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24848 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 G?0*5I=E^Pr diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langthaimodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langthaimodel.cpython-36.pyc deleted file mode 100644 index 6991ddce0cffa4984e31f4283af9a7442c729c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23385 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/langturkishmodel.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/langturkishmodel.cpython-36.pyc deleted file mode 100644 index 3a379ff738b6dcb1ae0d1540c6b2466227773c15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23403 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/latin1prober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/latin1prober.cpython-36.pyc deleted file mode 100644 index 8442baec8bfc635102eb946869834280ed689621..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2935 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 L$}od{x@i3euUQii diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc deleted file mode 100644 index 137ad5be0985f192b87c95e6268aa5c267baf2a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcmZ8f&2G~`5Z?7qer$)*lmjR3L2BKmX=o&bPy!c3r#Oyk)Ksg|# zQcpYr55Vhiw77BN6*w`wF=^DbzVSEXwPxm<*{{`{@8zE#ew7jWjn<9@{5e2=1;Y@- z93_}wthm9A#3ZKXCbtrs*qU3sl$1$XbDLL^DyeE-;!ffcSMxIWk{YRLUg7tW4YHwm zmETV`$tFg}h&jx?M$C=y!X$O(^--ht2SXVRoY%V-f#^rsv6#-%Q!yPx0;10O*{j1_ zuYdBozw+Fd=iQUjmFpcJHTU+Q?`2tLaGCW5M zV{FVZ!{0#u%v_+%0@#2OpbV%0ssLw!MwL0D?i`K11yaI7MxzH3xjdMR=rHCPC|1jD zIZGoUT*#4ED2*p^MyXJFg=$9F%9NCW#Xv$8C929eU`RRD%FEmqk&Lp2ky|q2L*cq(OjI_(42X&ul#It<%cGimL@ z8BP2%KaJDv!7S!%JBjv#tKIg6AHwuml&#*$Ae1Au3d@3a($C@^)bJP}AAmu)ZdiEz zaf~ky@94ktzyAjA!FWK9NsvU8<_@LFl+C!}9;KgV0bhR6N%C6JW*Bh};?*IYHVrH` z72i@uDck@^JzK2(USo^YRV$#~TJ=I*AOKF~| Mm6xh_58rvre-CmH)&Kwi diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/mbcssm.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/mbcssm.cpython-36.pyc deleted file mode 100644 index f43c2f6f0013162a3951a1e49dedab72d69bb9e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17570 zcmeHO-BKGj6!yaU2ZQ`bS+@fb@EbZo+`P15oP zeTVh|`Zk?ja@#9jp;y&8TJ35Vud&w-b;+{hqaz)CM@L6TXSK%rD3OT&9{uabUyGs8 z-y!u+3x&Sr^=i2<6rv%jl|vPcXj+KQkshY~)XP6Qd}!FLL5uqXGWSRJK{RM^e@fFN zLa&o3>!A@AVNn{TvERZZM(0VNIfgx|utDcN`RG*2rl!zC}q3a zR*!e%>h+QO+_E!cl%A0|y+Qg}A5E}0>!*Y0s{y(|5;RP?pU^W>pTxUMuenQ{EZsOq zyNHA{@c@0SPic`1(wk(6CHPtmvLQNz_72lqWW@BLy|(Vr+*V3CYA+3wQF@za_Zr7J2)w*?HmIEbmDD6749@%np2{_K;{t$!9e~ljJJ9!e=$Z zuF_GQ)hxY7uBo#+6Gy6M$*ZfP@>1>`d78}8`{X*i#$#`eU8iF>@;rS&ZqNvgb9*3% zH1?r7ipA4Damo41I_9IWUE`cRPK5S@1jjV-qNmitOSHfAm@Lo~xyf$u-V5v|9Y?!w z(TC(VBI2C-u{y%7!Mw>wg1PW`l`W#((%#Q)Rb;Z4v{cAstEE#~e}|^YUB+!?ci3Gz zfz~h5C6YAp&`+)ymUN0H=m4GMqr%)G=giK5b?Z{<)_UAcs1L$d5eeJCh_o%l?KNsL?EGJdb9z ze7=63_Th~YP6$R96F9sWJ_(#v44e4W;u8jEB<1dnDL%NFn=Zlp7+3P6l^T__V0#NA z6{;d}c4p7pJI<#*RNxaEz`Flv=D9|8y?X*qO~g%j1Jg}+5?JnJ zM7givbTEoAp1|thbjk0$o~NEba52v5&i&)Es)=Oa*~RtH?%D4m1i|T2P4TeENxk0b zQl!SttcV>-KJ}pjpV$DVF8Ke<8+PQh!{I}FI|>?OF{OAOfl*+eJ^!nls(tWrW#gb) z{~J|U^JG+{MqGbfIoJLH=Y5%n$kxNAapb!k8&sRm+IEKN;%_Gd)4KZ0<93!u&6J*- z95(cqnJGP8;!_Z$#^zI_%U9@e&pVgh*|W<<2y8O~&d*A>y+*F1eB1h*PY?V%N&7g7 z0g20ObrMO^swxN2#%-v|?&4J1v=&_2YMVC#k$B+1LR^xYYdfmN3*!(4&|ZIC3b{D}Yd4j#9I|8D#Ij-i7vXH1IU zW7K;fa6NThSk?a5Om}j2#%kv~y3dEjAAQ5bTFtvNMU#6)F zdsO(ew7!>yH{&R)S!HFnSglqb9{zF?`?~Uh9+lZQvwYC%9^WqmVg9aK8<(!nY4h5x zUcIMB6IbjUje2-qTePkREg;XcQ`e`tE%Vx(w$M?nb1luUSu4TLR{VCpURVjx%Js&Y zUk^)fuf;jyq4gE6ug7lH^+|5$v^I*@Y)98>oNJ!Z#<}K6t+SeEwPExx_!#1B#w=&e O61)%XP=d_4EB*!35As9+ diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc deleted file mode 100644 index 20aeec8bed75680699eb0f7978aab89dd6d548e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2979 zcmZ`*Pjef$6$kbYxuhssl2tp75)Yd=Z8(#JspCK6PFgvUX;~SW@|bix-Dw9y5+J$M za!F&CR-{rVY9`lS+nIiVTyp54AD|y0$Gx>V`I6?GOZ$6R$&!)?J9rD=0eBC1@BJP= zT3jstJ^%F|u3cg58+N8RXx~STZ-GcAdB{fG=bYMBXpL;&9yz`}Z4nFiY3MCpxoqWWXKpO%OjMEz!hk#wc0 zo=;WORolU?3WLFTEW6n2RUzf5#2paDd@h-9N$%Uy@*QdWu5_Tp`bM6<>UX*3iUXYjM(h>7Za#^n6zxV}nm|wN?v_Y-yQ zG%xQ%g8=hbzh}y~>;1p|mCBdv4;$SRMd@!J*Z4Cu5|;28n_EL`&N!Q)E$o>E>db6V zS2EC?p?O0+Lkor$XKc7Y>m-A6yiqNsZakeRt#jBq^@IqbAQ2+XiP2c9Ff9nJUML+a znU+M<9w{*~wn!I5*p3r1)>7$oQN-%G=#HlmEE9v5jFWaqgQuM?ESDBVPt#0lyIRF6 zsXD0>tFV{4nLzJEp1*KL9DJc5L>D4sA--haN41F#UclhB7j0eZjYDV=*TkJ#zjN#E z&9HOt&TV<`)@|`C(d*txZjNq!h|-U0t=c4*yx*Ayp?rU&K5FlMcxO-}ZKO(G{o@Xe zK)39uA58Xj0k`u@)OZzy@iNa@`1t8}P`SX&ADmoimwcKE{a;!1*XW$Ls5BOpR-Y%% z(4Di@%${W7yd>%w3VXtWcH`y$u)|AKRxN4|KVwO~Lajw2E{MOkqM3%LY7&1PH70LnP|~vwZd|0` zSph$-=XGrIV?BqqOlQYyE}m z0eU3+(ynvdTbi>&Z$_Ffo3Z<7tqd>A+$=xy<~C5ijbU|5ykRNjf-tL&-Dp#4Hs+LgT^ij+RM_fxYvDje@sBGqpv0Vc>B}d4mBU5t~(CGmhxL-U~wL2XqIGuwonmpZ9>?F%p2uoCO7ZP#XB437!1> z#!jR4bZ6V3L%PuX7BZ9Hq8nVbv9{XQ<&m8vuC z``*KyXN?D9tA!+$slL{zZ+>#YYCqT5X^F@6YQaF8?{$!fu}*7>?vw{9@20LvW17I- z*u^iN>h=SSNu8cj@-b${6uyiX@j1Z4B44q+ToJi}YKd|LFmlOSLTiN=EgCIz4;&9) z(floLQO`Pf<06nEVXwf6qMvMIqP~HKq$sDjvUVN)nWPxwi8VxonYdzW6e|uz-5Mi2 zK+iRtT-KNNu8Vap@!-|DM*q*NUv2*T;AmaHj_v!XDBrF7SCain(1puP#&JOYCg3Q+ zxKEQ;zxwZbHJ@b?lT%E_@lGsi958bk$}?5V*dgWm2N$c~26u)U(Qn8dT<-M9o x)QxK1Up)8R&}3!brD%*zBx;H(lg6{uZqnT;Az`Waadyn#zDW{kL5Z*0{|8k<%ftWx diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc deleted file mode 100644 index f310263ecd0576c675fb9f3c5be2f3d66a797650..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1607 zcmaJ>%Wm676rCaUpeRzJWZ7|o7U))J6Zs`20g9rqfx1DPpnwDvnazMA#}u6zN*Pj4 zTqr9A$WOGpZu&c2a@$pZp{vfFkrg`yN`Xh`KFFDS?-?HZzWZDK&zGf-&|m1*RZ;v~ zb?3h-h*69=5}05N+~St7iLJTKE22uOqDE?>PU^xTj%bjEaEYtq72Xsc@q|x&ZC80q zv`Je8B+zz^cSM(THLvp>(IY+09lk5}$e!j6eoyR^eT>dg?8eRaC~h*mw#oh28>7De zH&$EhAv-GtzI7~S8j zqf4dr%u1(Ao`f6{JGy3_ z$x^;b^O??yRQtAv8mD1=xc0gY_DH@QnGkwX>Mt5ukhv0%39fL3!@df3@&>s40d9#m6(-h7j_gQDCos^lm1>= z&6f)%Wmj#xbSO=;w4hW%DH7_ERe%~m9l!x-0Js2601p5fAX@+(1*E>vip*sIt~R(j zIV-3D(a}w?tg*KR%i^*snF{tRWhH0)g7`B%)J+=MQi&LRg#1h(pH6C<-D~DEj*u!7g0S+u+>SzB89}T6c diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/sjisprober.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/sjisprober.cpython-36.pyc deleted file mode 100644 index c6786bf246082ef63718b8883a7a3315a2ec17e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2433 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 diff --git a/env/lib/python3.6/site-packages/chardet/__pycache__/version.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/__pycache__/version.cpython-36.pyc deleted file mode 100644 index 33fb6bca9f6daf59ca6b81c31ab96f68564472f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmX|7Jx{|h5KY>YqM)wKH`1X==@)8+P=#P%DH5%a=wdmslNb^^vYnK6<#+G{nE5A+ zS@{QyOqf!7(!IOWJ?Y-NeyioaHa{M|EX(>dxsRIZrY6;~0b(sJVlQoKKh{X?#a`A) zeQvd#&AYoun1W1@BBel|nbHabPuHLYD3;|Zi`F2imW-B+$Dk7mC6$T^4!p<$DnUdL zCRh@x-AIZIR!k?1gQB{~y?hOr6WA_xEKo&|D!v8H~Br5}lu7(YH5`Ef8f>!rbXG$iA}5S^kZ9O+&*=$eSRzwmRGcY=bY iq?6G;UUf%_zw@-OI|;^jb$I^w){EcM$}!;79Qy|jFNcf( diff --git a/env/lib/python3.6/site-packages/chardet/big5freq.py b/env/lib/python3.6/site-packages/chardet/big5freq.py deleted file mode 100644 index 38f3251..0000000 --- a/env/lib/python3.6/site-packages/chardet/big5freq.py +++ /dev/null @@ -1,386 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Big5 frequency table -# by Taiwan's Mandarin Promotion Council -# -# -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Ideal Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -BIG5_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -#Char to FreqOrder table -BIG5_TABLE_SIZE = 5376 - -BIG5_CHAR_TO_FREQ_ORDER = ( - 1,1801,1506, 255,1431, 198, 9, 82, 6,5008, 177, 202,3681,1256,2821, 110, # 16 -3814, 33,3274, 261, 76, 44,2114, 16,2946,2187,1176, 659,3971, 26,3451,2653, # 32 -1198,3972,3350,4202, 410,2215, 302, 590, 361,1964, 8, 204, 58,4510,5009,1932, # 48 - 63,5010,5011, 317,1614, 75, 222, 159,4203,2417,1480,5012,3555,3091, 224,2822, # 64 -3682, 3, 10,3973,1471, 29,2787,1135,2866,1940, 873, 130,3275,1123, 312,5013, # 80 -4511,2052, 507, 252, 682,5014, 142,1915, 124, 206,2947, 34,3556,3204, 64, 604, # 96 -5015,2501,1977,1978, 155,1991, 645, 641,1606,5016,3452, 337, 72, 406,5017, 80, # 112 - 630, 238,3205,1509, 263, 939,1092,2654, 756,1440,1094,3453, 449, 69,2987, 591, # 128 - 179,2096, 471, 115,2035,1844, 60, 50,2988, 134, 806,1869, 734,2036,3454, 180, # 144 - 995,1607, 156, 537,2907, 688,5018, 319,1305, 779,2145, 514,2379, 298,4512, 359, # 160 -2502, 90,2716,1338, 663, 11, 906,1099,2553, 20,2441, 182, 532,1716,5019, 732, # 176 -1376,4204,1311,1420,3206, 25,2317,1056, 113, 399, 382,1950, 242,3455,2474, 529, # 192 -3276, 475,1447,3683,5020, 117, 21, 656, 810,1297,2300,2334,3557,5021, 126,4205, # 208 - 706, 456, 150, 613,4513, 71,1118,2037,4206, 145,3092, 85, 835, 486,2115,1246, # 224 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,5022,2128,2359, 347,3815, 221, # 240 -3558,3135,5023,1956,1153,4207, 83, 296,1199,3093, 192, 624, 93,5024, 822,1898, # 256 -2823,3136, 795,2065, 991,1554,1542,1592, 27, 43,2867, 859, 139,1456, 860,4514, # 272 - 437, 712,3974, 164,2397,3137, 695, 211,3037,2097, 195,3975,1608,3559,3560,3684, # 288 -3976, 234, 811,2989,2098,3977,2233,1441,3561,1615,2380, 668,2077,1638, 305, 228, # 304 -1664,4515, 467, 415,5025, 262,2099,1593, 239, 108, 300, 200,1033, 512,1247,2078, # 320 -5026,5027,2176,3207,3685,2682, 593, 845,1062,3277, 88,1723,2038,3978,1951, 212, # 336 - 266, 152, 149, 468,1899,4208,4516, 77, 187,5028,3038, 37, 5,2990,5029,3979, # 352 -5030,5031, 39,2524,4517,2908,3208,2079, 55, 148, 74,4518, 545, 483,1474,1029, # 368 -1665, 217,1870,1531,3138,1104,2655,4209, 24, 172,3562, 900,3980,3563,3564,4519, # 384 - 32,1408,2824,1312, 329, 487,2360,2251,2717, 784,2683, 4,3039,3351,1427,1789, # 400 - 188, 109, 499,5032,3686,1717,1790, 888,1217,3040,4520,5033,3565,5034,3352,1520, # 416 -3687,3981, 196,1034, 775,5035,5036, 929,1816, 249, 439, 38,5037,1063,5038, 794, # 432 -3982,1435,2301, 46, 178,3278,2066,5039,2381,5040, 214,1709,4521, 804, 35, 707, # 448 - 324,3688,1601,2554, 140, 459,4210,5041,5042,1365, 839, 272, 978,2262,2580,3456, # 464 -2129,1363,3689,1423, 697, 100,3094, 48, 70,1231, 495,3139,2196,5043,1294,5044, # 480 -2080, 462, 586,1042,3279, 853, 256, 988, 185,2382,3457,1698, 434,1084,5045,3458, # 496 - 314,2625,2788,4522,2335,2336, 569,2285, 637,1817,2525, 757,1162,1879,1616,3459, # 512 - 287,1577,2116, 768,4523,1671,2868,3566,2526,1321,3816, 909,2418,5046,4211, 933, # 528 -3817,4212,2053,2361,1222,4524, 765,2419,1322, 786,4525,5047,1920,1462,1677,2909, # 544 -1699,5048,4526,1424,2442,3140,3690,2600,3353,1775,1941,3460,3983,4213, 309,1369, # 560 -1130,2825, 364,2234,1653,1299,3984,3567,3985,3986,2656, 525,1085,3041, 902,2001, # 576 -1475, 964,4527, 421,1845,1415,1057,2286, 940,1364,3141, 376,4528,4529,1381, 7, # 592 -2527, 983,2383, 336,1710,2684,1846, 321,3461, 559,1131,3042,2752,1809,1132,1313, # 608 - 265,1481,1858,5049, 352,1203,2826,3280, 167,1089, 420,2827, 776, 792,1724,3568, # 624 -4214,2443,3281,5050,4215,5051, 446, 229, 333,2753, 901,3818,1200,1557,4530,2657, # 640 -1921, 395,2754,2685,3819,4216,1836, 125, 916,3209,2626,4531,5052,5053,3820,5054, # 656 -5055,5056,4532,3142,3691,1133,2555,1757,3462,1510,2318,1409,3569,5057,2146, 438, # 672 -2601,2910,2384,3354,1068, 958,3043, 461, 311,2869,2686,4217,1916,3210,4218,1979, # 688 - 383, 750,2755,2627,4219, 274, 539, 385,1278,1442,5058,1154,1965, 384, 561, 210, # 704 - 98,1295,2556,3570,5059,1711,2420,1482,3463,3987,2911,1257, 129,5060,3821, 642, # 720 - 523,2789,2790,2658,5061, 141,2235,1333, 68, 176, 441, 876, 907,4220, 603,2602, # 736 - 710, 171,3464, 404, 549, 18,3143,2398,1410,3692,1666,5062,3571,4533,2912,4534, # 752 -5063,2991, 368,5064, 146, 366, 99, 871,3693,1543, 748, 807,1586,1185, 22,2263, # 768 - 379,3822,3211,5065,3212, 505,1942,2628,1992,1382,2319,5066, 380,2362, 218, 702, # 784 -1818,1248,3465,3044,3572,3355,3282,5067,2992,3694, 930,3283,3823,5068, 59,5069, # 800 - 585, 601,4221, 497,3466,1112,1314,4535,1802,5070,1223,1472,2177,5071, 749,1837, # 816 - 690,1900,3824,1773,3988,1476, 429,1043,1791,2236,2117, 917,4222, 447,1086,1629, # 832 -5072, 556,5073,5074,2021,1654, 844,1090, 105, 550, 966,1758,2828,1008,1783, 686, # 848 -1095,5075,2287, 793,1602,5076,3573,2603,4536,4223,2948,2302,4537,3825, 980,2503, # 864 - 544, 353, 527,4538, 908,2687,2913,5077, 381,2629,1943,1348,5078,1341,1252, 560, # 880 -3095,5079,3467,2870,5080,2054, 973, 886,2081, 143,4539,5081,5082, 157,3989, 496, # 896 -4224, 57, 840, 540,2039,4540,4541,3468,2118,1445, 970,2264,1748,1966,2082,4225, # 912 -3144,1234,1776,3284,2829,3695, 773,1206,2130,1066,2040,1326,3990,1738,1725,4226, # 928 - 279,3145, 51,1544,2604, 423,1578,2131,2067, 173,4542,1880,5083,5084,1583, 264, # 944 - 610,3696,4543,2444, 280, 154,5085,5086,5087,1739, 338,1282,3096, 693,2871,1411, # 960 -1074,3826,2445,5088,4544,5089,5090,1240, 952,2399,5091,2914,1538,2688, 685,1483, # 976 -4227,2475,1436, 953,4228,2055,4545, 671,2400, 79,4229,2446,3285, 608, 567,2689, # 992 -3469,4230,4231,1691, 393,1261,1792,2401,5092,4546,5093,5094,5095,5096,1383,1672, # 1008 -3827,3213,1464, 522,1119, 661,1150, 216, 675,4547,3991,1432,3574, 609,4548,2690, # 1024 -2402,5097,5098,5099,4232,3045, 0,5100,2476, 315, 231,2447, 301,3356,4549,2385, # 1040 -5101, 233,4233,3697,1819,4550,4551,5102, 96,1777,1315,2083,5103, 257,5104,1810, # 1056 -3698,2718,1139,1820,4234,2022,1124,2164,2791,1778,2659,5105,3097, 363,1655,3214, # 1072 -5106,2993,5107,5108,5109,3992,1567,3993, 718, 103,3215, 849,1443, 341,3357,2949, # 1088 -1484,5110,1712, 127, 67, 339,4235,2403, 679,1412, 821,5111,5112, 834, 738, 351, # 1104 -2994,2147, 846, 235,1497,1881, 418,1993,3828,2719, 186,1100,2148,2756,3575,1545, # 1120 -1355,2950,2872,1377, 583,3994,4236,2581,2995,5113,1298,3699,1078,2557,3700,2363, # 1136 - 78,3829,3830, 267,1289,2100,2002,1594,4237, 348, 369,1274,2197,2178,1838,4552, # 1152 -1821,2830,3701,2757,2288,2003,4553,2951,2758, 144,3358, 882,4554,3995,2759,3470, # 1168 -4555,2915,5114,4238,1726, 320,5115,3996,3046, 788,2996,5116,2831,1774,1327,2873, # 1184 -3997,2832,5117,1306,4556,2004,1700,3831,3576,2364,2660, 787,2023, 506, 824,3702, # 1200 - 534, 323,4557,1044,3359,2024,1901, 946,3471,5118,1779,1500,1678,5119,1882,4558, # 1216 - 165, 243,4559,3703,2528, 123, 683,4239, 764,4560, 36,3998,1793, 589,2916, 816, # 1232 - 626,1667,3047,2237,1639,1555,1622,3832,3999,5120,4000,2874,1370,1228,1933, 891, # 1248 -2084,2917, 304,4240,5121, 292,2997,2720,3577, 691,2101,4241,1115,4561, 118, 662, # 1264 -5122, 611,1156, 854,2386,1316,2875, 2, 386, 515,2918,5123,5124,3286, 868,2238, # 1280 -1486, 855,2661, 785,2216,3048,5125,1040,3216,3578,5126,3146, 448,5127,1525,5128, # 1296 -2165,4562,5129,3833,5130,4242,2833,3579,3147, 503, 818,4001,3148,1568, 814, 676, # 1312 -1444, 306,1749,5131,3834,1416,1030, 197,1428, 805,2834,1501,4563,5132,5133,5134, # 1328 -1994,5135,4564,5136,5137,2198, 13,2792,3704,2998,3149,1229,1917,5138,3835,2132, # 1344 -5139,4243,4565,2404,3580,5140,2217,1511,1727,1120,5141,5142, 646,3836,2448, 307, # 1360 -5143,5144,1595,3217,5145,5146,5147,3705,1113,1356,4002,1465,2529,2530,5148, 519, # 1376 -5149, 128,2133, 92,2289,1980,5150,4003,1512, 342,3150,2199,5151,2793,2218,1981, # 1392 -3360,4244, 290,1656,1317, 789, 827,2365,5152,3837,4566, 562, 581,4004,5153, 401, # 1408 -4567,2252, 94,4568,5154,1399,2794,5155,1463,2025,4569,3218,1944,5156, 828,1105, # 1424 -4245,1262,1394,5157,4246, 605,4570,5158,1784,2876,5159,2835, 819,2102, 578,2200, # 1440 -2952,5160,1502, 436,3287,4247,3288,2836,4005,2919,3472,3473,5161,2721,2320,5162, # 1456 -5163,2337,2068, 23,4571, 193, 826,3838,2103, 699,1630,4248,3098, 390,1794,1064, # 1472 -3581,5164,1579,3099,3100,1400,5165,4249,1839,1640,2877,5166,4572,4573, 137,4250, # 1488 - 598,3101,1967, 780, 104, 974,2953,5167, 278, 899, 253, 402, 572, 504, 493,1339, # 1504 -5168,4006,1275,4574,2582,2558,5169,3706,3049,3102,2253, 565,1334,2722, 863, 41, # 1520 -5170,5171,4575,5172,1657,2338, 19, 463,2760,4251, 606,5173,2999,3289,1087,2085, # 1536 -1323,2662,3000,5174,1631,1623,1750,4252,2691,5175,2878, 791,2723,2663,2339, 232, # 1552 -2421,5176,3001,1498,5177,2664,2630, 755,1366,3707,3290,3151,2026,1609, 119,1918, # 1568 -3474, 862,1026,4253,5178,4007,3839,4576,4008,4577,2265,1952,2477,5179,1125, 817, # 1584 -4254,4255,4009,1513,1766,2041,1487,4256,3050,3291,2837,3840,3152,5180,5181,1507, # 1600 -5182,2692, 733, 40,1632,1106,2879, 345,4257, 841,2531, 230,4578,3002,1847,3292, # 1616 -3475,5183,1263, 986,3476,5184, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562, # 1632 -4010,4011,2954, 967,2761,2665,1349, 592,2134,1692,3361,3003,1995,4258,1679,4012, # 1648 -1902,2188,5185, 739,3708,2724,1296,1290,5186,4259,2201,2202,1922,1563,2605,2559, # 1664 -1871,2762,3004,5187, 435,5188, 343,1108, 596, 17,1751,4579,2239,3477,3709,5189, # 1680 -4580, 294,3582,2955,1693, 477, 979, 281,2042,3583, 643,2043,3710,2631,2795,2266, # 1696 -1031,2340,2135,2303,3584,4581, 367,1249,2560,5190,3585,5191,4582,1283,3362,2005, # 1712 - 240,1762,3363,4583,4584, 836,1069,3153, 474,5192,2149,2532, 268,3586,5193,3219, # 1728 -1521,1284,5194,1658,1546,4260,5195,3587,3588,5196,4261,3364,2693,1685,4262, 961, # 1744 -1673,2632, 190,2006,2203,3841,4585,4586,5197, 570,2504,3711,1490,5198,4587,2633, # 1760 -3293,1957,4588, 584,1514, 396,1045,1945,5199,4589,1968,2449,5200,5201,4590,4013, # 1776 - 619,5202,3154,3294, 215,2007,2796,2561,3220,4591,3221,4592, 763,4263,3842,4593, # 1792 -5203,5204,1958,1767,2956,3365,3712,1174, 452,1477,4594,3366,3155,5205,2838,1253, # 1808 -2387,2189,1091,2290,4264, 492,5206, 638,1169,1825,2136,1752,4014, 648, 926,1021, # 1824 -1324,4595, 520,4596, 997, 847,1007, 892,4597,3843,2267,1872,3713,2405,1785,4598, # 1840 -1953,2957,3103,3222,1728,4265,2044,3714,4599,2008,1701,3156,1551, 30,2268,4266, # 1856 -5207,2027,4600,3589,5208, 501,5209,4267, 594,3478,2166,1822,3590,3479,3591,3223, # 1872 - 829,2839,4268,5210,1680,3157,1225,4269,5211,3295,4601,4270,3158,2341,5212,4602, # 1888 -4271,5213,4015,4016,5214,1848,2388,2606,3367,5215,4603, 374,4017, 652,4272,4273, # 1904 - 375,1140, 798,5216,5217,5218,2366,4604,2269, 546,1659, 138,3051,2450,4605,5219, # 1920 -2254, 612,1849, 910, 796,3844,1740,1371, 825,3845,3846,5220,2920,2562,5221, 692, # 1936 - 444,3052,2634, 801,4606,4274,5222,1491, 244,1053,3053,4275,4276, 340,5223,4018, # 1952 -1041,3005, 293,1168, 87,1357,5224,1539, 959,5225,2240, 721, 694,4277,3847, 219, # 1968 -1478, 644,1417,3368,2666,1413,1401,1335,1389,4019,5226,5227,3006,2367,3159,1826, # 1984 - 730,1515, 184,2840, 66,4607,5228,1660,2958, 246,3369, 378,1457, 226,3480, 975, # 2000 -4020,2959,1264,3592, 674, 696,5229, 163,5230,1141,2422,2167, 713,3593,3370,4608, # 2016 -4021,5231,5232,1186, 15,5233,1079,1070,5234,1522,3224,3594, 276,1050,2725, 758, # 2032 -1126, 653,2960,3296,5235,2342, 889,3595,4022,3104,3007, 903,1250,4609,4023,3481, # 2048 -3596,1342,1681,1718, 766,3297, 286, 89,2961,3715,5236,1713,5237,2607,3371,3008, # 2064 -5238,2962,2219,3225,2880,5239,4610,2505,2533, 181, 387,1075,4024, 731,2190,3372, # 2080 -5240,3298, 310, 313,3482,2304, 770,4278, 54,3054, 189,4611,3105,3848,4025,5241, # 2096 -1230,1617,1850, 355,3597,4279,4612,3373, 111,4280,3716,1350,3160,3483,3055,4281, # 2112 -2150,3299,3598,5242,2797,4026,4027,3009, 722,2009,5243,1071, 247,1207,2343,2478, # 2128 -1378,4613,2010, 864,1437,1214,4614, 373,3849,1142,2220, 667,4615, 442,2763,2563, # 2144 -3850,4028,1969,4282,3300,1840, 837, 170,1107, 934,1336,1883,5244,5245,2119,4283, # 2160 -2841, 743,1569,5246,4616,4284, 582,2389,1418,3484,5247,1803,5248, 357,1395,1729, # 2176 -3717,3301,2423,1564,2241,5249,3106,3851,1633,4617,1114,2086,4285,1532,5250, 482, # 2192 -2451,4618,5251,5252,1492, 833,1466,5253,2726,3599,1641,2842,5254,1526,1272,3718, # 2208 -4286,1686,1795, 416,2564,1903,1954,1804,5255,3852,2798,3853,1159,2321,5256,2881, # 2224 -4619,1610,1584,3056,2424,2764, 443,3302,1163,3161,5257,5258,4029,5259,4287,2506, # 2240 -3057,4620,4030,3162,2104,1647,3600,2011,1873,4288,5260,4289, 431,3485,5261, 250, # 2256 - 97, 81,4290,5262,1648,1851,1558, 160, 848,5263, 866, 740,1694,5264,2204,2843, # 2272 -3226,4291,4621,3719,1687, 950,2479, 426, 469,3227,3720,3721,4031,5265,5266,1188, # 2288 - 424,1996, 861,3601,4292,3854,2205,2694, 168,1235,3602,4293,5267,2087,1674,4622, # 2304 -3374,3303, 220,2565,1009,5268,3855, 670,3010, 332,1208, 717,5269,5270,3603,2452, # 2320 -4032,3375,5271, 513,5272,1209,2882,3376,3163,4623,1080,5273,5274,5275,5276,2534, # 2336 -3722,3604, 815,1587,4033,4034,5277,3605,3486,3856,1254,4624,1328,3058,1390,4035, # 2352 -1741,4036,3857,4037,5278, 236,3858,2453,3304,5279,5280,3723,3859,1273,3860,4625, # 2368 -5281, 308,5282,4626, 245,4627,1852,2480,1307,2583, 430, 715,2137,2454,5283, 270, # 2384 - 199,2883,4038,5284,3606,2727,1753, 761,1754, 725,1661,1841,4628,3487,3724,5285, # 2400 -5286, 587, 14,3305, 227,2608, 326, 480,2270, 943,2765,3607, 291, 650,1884,5287, # 2416 -1702,1226, 102,1547, 62,3488, 904,4629,3489,1164,4294,5288,5289,1224,1548,2766, # 2432 - 391, 498,1493,5290,1386,1419,5291,2056,1177,4630, 813, 880,1081,2368, 566,1145, # 2448 -4631,2291,1001,1035,2566,2609,2242, 394,1286,5292,5293,2069,5294, 86,1494,1730, # 2464 -4039, 491,1588, 745, 897,2963, 843,3377,4040,2767,2884,3306,1768, 998,2221,2070, # 2480 - 397,1827,1195,1970,3725,3011,3378, 284,5295,3861,2507,2138,2120,1904,5296,4041, # 2496 -2151,4042,4295,1036,3490,1905, 114,2567,4296, 209,1527,5297,5298,2964,2844,2635, # 2512 -2390,2728,3164, 812,2568,5299,3307,5300,1559, 737,1885,3726,1210, 885, 28,2695, # 2528 -3608,3862,5301,4297,1004,1780,4632,5302, 346,1982,2222,2696,4633,3863,1742, 797, # 2544 -1642,4043,1934,1072,1384,2152, 896,4044,3308,3727,3228,2885,3609,5303,2569,1959, # 2560 -4634,2455,1786,5304,5305,5306,4045,4298,1005,1308,3728,4299,2729,4635,4636,1528, # 2576 -2610, 161,1178,4300,1983, 987,4637,1101,4301, 631,4046,1157,3229,2425,1343,1241, # 2592 -1016,2243,2570, 372, 877,2344,2508,1160, 555,1935, 911,4047,5307, 466,1170, 169, # 2608 -1051,2921,2697,3729,2481,3012,1182,2012,2571,1251,2636,5308, 992,2345,3491,1540, # 2624 -2730,1201,2071,2406,1997,2482,5309,4638, 528,1923,2191,1503,1874,1570,2369,3379, # 2640 -3309,5310, 557,1073,5311,1828,3492,2088,2271,3165,3059,3107, 767,3108,2799,4639, # 2656 -1006,4302,4640,2346,1267,2179,3730,3230, 778,4048,3231,2731,1597,2667,5312,4641, # 2672 -5313,3493,5314,5315,5316,3310,2698,1433,3311, 131, 95,1504,4049, 723,4303,3166, # 2688 -1842,3610,2768,2192,4050,2028,2105,3731,5317,3013,4051,1218,5318,3380,3232,4052, # 2704 -4304,2584, 248,1634,3864, 912,5319,2845,3732,3060,3865, 654, 53,5320,3014,5321, # 2720 -1688,4642, 777,3494,1032,4053,1425,5322, 191, 820,2121,2846, 971,4643, 931,3233, # 2736 - 135, 664, 783,3866,1998, 772,2922,1936,4054,3867,4644,2923,3234, 282,2732, 640, # 2752 -1372,3495,1127, 922, 325,3381,5323,5324, 711,2045,5325,5326,4055,2223,2800,1937, # 2768 -4056,3382,2224,2255,3868,2305,5327,4645,3869,1258,3312,4057,3235,2139,2965,4058, # 2784 -4059,5328,2225, 258,3236,4646, 101,1227,5329,3313,1755,5330,1391,3314,5331,2924, # 2800 -2057, 893,5332,5333,5334,1402,4305,2347,5335,5336,3237,3611,5337,5338, 878,1325, # 2816 -1781,2801,4647, 259,1385,2585, 744,1183,2272,4648,5339,4060,2509,5340, 684,1024, # 2832 -4306,5341, 472,3612,3496,1165,3315,4061,4062, 322,2153, 881, 455,1695,1152,1340, # 2848 - 660, 554,2154,4649,1058,4650,4307, 830,1065,3383,4063,4651,1924,5342,1703,1919, # 2864 -5343, 932,2273, 122,5344,4652, 947, 677,5345,3870,2637, 297,1906,1925,2274,4653, # 2880 -2322,3316,5346,5347,4308,5348,4309, 84,4310, 112, 989,5349, 547,1059,4064, 701, # 2896 -3613,1019,5350,4311,5351,3497, 942, 639, 457,2306,2456, 993,2966, 407, 851, 494, # 2912 -4654,3384, 927,5352,1237,5353,2426,3385, 573,4312, 680, 921,2925,1279,1875, 285, # 2928 - 790,1448,1984, 719,2168,5354,5355,4655,4065,4066,1649,5356,1541, 563,5357,1077, # 2944 -5358,3386,3061,3498, 511,3015,4067,4068,3733,4069,1268,2572,3387,3238,4656,4657, # 2960 -5359, 535,1048,1276,1189,2926,2029,3167,1438,1373,2847,2967,1134,2013,5360,4313, # 2976 -1238,2586,3109,1259,5361, 700,5362,2968,3168,3734,4314,5363,4315,1146,1876,1907, # 2992 -4658,2611,4070, 781,2427, 132,1589, 203, 147, 273,2802,2407, 898,1787,2155,4071, # 3008 -4072,5364,3871,2803,5365,5366,4659,4660,5367,3239,5368,1635,3872, 965,5369,1805, # 3024 -2699,1516,3614,1121,1082,1329,3317,4073,1449,3873, 65,1128,2848,2927,2769,1590, # 3040 -3874,5370,5371, 12,2668, 45, 976,2587,3169,4661, 517,2535,1013,1037,3240,5372, # 3056 -3875,2849,5373,3876,5374,3499,5375,2612, 614,1999,2323,3877,3110,2733,2638,5376, # 3072 -2588,4316, 599,1269,5377,1811,3735,5378,2700,3111, 759,1060, 489,1806,3388,3318, # 3088 -1358,5379,5380,2391,1387,1215,2639,2256, 490,5381,5382,4317,1759,2392,2348,5383, # 3104 -4662,3878,1908,4074,2640,1807,3241,4663,3500,3319,2770,2349, 874,5384,5385,3501, # 3120 -3736,1859, 91,2928,3737,3062,3879,4664,5386,3170,4075,2669,5387,3502,1202,1403, # 3136 -3880,2969,2536,1517,2510,4665,3503,2511,5388,4666,5389,2701,1886,1495,1731,4076, # 3152 -2370,4667,5390,2030,5391,5392,4077,2702,1216, 237,2589,4318,2324,4078,3881,4668, # 3168 -4669,2703,3615,3504, 445,4670,5393,5394,5395,5396,2771, 61,4079,3738,1823,4080, # 3184 -5397, 687,2046, 935, 925, 405,2670, 703,1096,1860,2734,4671,4081,1877,1367,2704, # 3200 -3389, 918,2106,1782,2483, 334,3320,1611,1093,4672, 564,3171,3505,3739,3390, 945, # 3216 -2641,2058,4673,5398,1926, 872,4319,5399,3506,2705,3112, 349,4320,3740,4082,4674, # 3232 -3882,4321,3741,2156,4083,4675,4676,4322,4677,2408,2047, 782,4084, 400, 251,4323, # 3248 -1624,5400,5401, 277,3742, 299,1265, 476,1191,3883,2122,4324,4325,1109, 205,5402, # 3264 -2590,1000,2157,3616,1861,5403,5404,5405,4678,5406,4679,2573, 107,2484,2158,4085, # 3280 -3507,3172,5407,1533, 541,1301, 158, 753,4326,2886,3617,5408,1696, 370,1088,4327, # 3296 -4680,3618, 579, 327, 440, 162,2244, 269,1938,1374,3508, 968,3063, 56,1396,3113, # 3312 -2107,3321,3391,5409,1927,2159,4681,3016,5410,3619,5411,5412,3743,4682,2485,5413, # 3328 -2804,5414,1650,4683,5415,2613,5416,5417,4086,2671,3392,1149,3393,4087,3884,4088, # 3344 -5418,1076, 49,5419, 951,3242,3322,3323, 450,2850, 920,5420,1812,2805,2371,4328, # 3360 -1909,1138,2372,3885,3509,5421,3243,4684,1910,1147,1518,2428,4685,3886,5422,4686, # 3376 -2393,2614, 260,1796,3244,5423,5424,3887,3324, 708,5425,3620,1704,5426,3621,1351, # 3392 -1618,3394,3017,1887, 944,4329,3395,4330,3064,3396,4331,5427,3744, 422, 413,1714, # 3408 -3325, 500,2059,2350,4332,2486,5428,1344,1911, 954,5429,1668,5430,5431,4089,2409, # 3424 -4333,3622,3888,4334,5432,2307,1318,2512,3114, 133,3115,2887,4687, 629, 31,2851, # 3440 -2706,3889,4688, 850, 949,4689,4090,2970,1732,2089,4335,1496,1853,5433,4091, 620, # 3456 -3245, 981,1242,3745,3397,1619,3746,1643,3326,2140,2457,1971,1719,3510,2169,5434, # 3472 -3246,5435,5436,3398,1829,5437,1277,4690,1565,2048,5438,1636,3623,3116,5439, 869, # 3488 -2852, 655,3890,3891,3117,4092,3018,3892,1310,3624,4691,5440,5441,5442,1733, 558, # 3504 -4692,3747, 335,1549,3065,1756,4336,3748,1946,3511,1830,1291,1192, 470,2735,2108, # 3520 -2806, 913,1054,4093,5443,1027,5444,3066,4094,4693, 982,2672,3399,3173,3512,3247, # 3536 -3248,1947,2807,5445, 571,4694,5446,1831,5447,3625,2591,1523,2429,5448,2090, 984, # 3552 -4695,3749,1960,5449,3750, 852, 923,2808,3513,3751, 969,1519, 999,2049,2325,1705, # 3568 -5450,3118, 615,1662, 151, 597,4095,2410,2326,1049, 275,4696,3752,4337, 568,3753, # 3584 -3626,2487,4338,3754,5451,2430,2275, 409,3249,5452,1566,2888,3514,1002, 769,2853, # 3600 - 194,2091,3174,3755,2226,3327,4339, 628,1505,5453,5454,1763,2180,3019,4096, 521, # 3616 -1161,2592,1788,2206,2411,4697,4097,1625,4340,4341, 412, 42,3119, 464,5455,2642, # 3632 -4698,3400,1760,1571,2889,3515,2537,1219,2207,3893,2643,2141,2373,4699,4700,3328, # 3648 -1651,3401,3627,5456,5457,3628,2488,3516,5458,3756,5459,5460,2276,2092, 460,5461, # 3664 -4701,5462,3020, 962, 588,3629, 289,3250,2644,1116, 52,5463,3067,1797,5464,5465, # 3680 -5466,1467,5467,1598,1143,3757,4342,1985,1734,1067,4702,1280,3402, 465,4703,1572, # 3696 - 510,5468,1928,2245,1813,1644,3630,5469,4704,3758,5470,5471,2673,1573,1534,5472, # 3712 -5473, 536,1808,1761,3517,3894,3175,2645,5474,5475,5476,4705,3518,2929,1912,2809, # 3728 -5477,3329,1122, 377,3251,5478, 360,5479,5480,4343,1529, 551,5481,2060,3759,1769, # 3744 -2431,5482,2930,4344,3330,3120,2327,2109,2031,4706,1404, 136,1468,1479, 672,1171, # 3760 -3252,2308, 271,3176,5483,2772,5484,2050, 678,2736, 865,1948,4707,5485,2014,4098, # 3776 -2971,5486,2737,2227,1397,3068,3760,4708,4709,1735,2931,3403,3631,5487,3895, 509, # 3792 -2854,2458,2890,3896,5488,5489,3177,3178,4710,4345,2538,4711,2309,1166,1010, 552, # 3808 - 681,1888,5490,5491,2972,2973,4099,1287,1596,1862,3179, 358, 453, 736, 175, 478, # 3824 -1117, 905,1167,1097,5492,1854,1530,5493,1706,5494,2181,3519,2292,3761,3520,3632, # 3840 -4346,2093,4347,5495,3404,1193,2489,4348,1458,2193,2208,1863,1889,1421,3331,2932, # 3856 -3069,2182,3521, 595,2123,5496,4100,5497,5498,4349,1707,2646, 223,3762,1359, 751, # 3872 -3121, 183,3522,5499,2810,3021, 419,2374, 633, 704,3897,2394, 241,5500,5501,5502, # 3888 - 838,3022,3763,2277,2773,2459,3898,1939,2051,4101,1309,3122,2246,1181,5503,1136, # 3904 -2209,3899,2375,1446,4350,2310,4712,5504,5505,4351,1055,2615, 484,3764,5506,4102, # 3920 - 625,4352,2278,3405,1499,4353,4103,5507,4104,4354,3253,2279,2280,3523,5508,5509, # 3936 -2774, 808,2616,3765,3406,4105,4355,3123,2539, 526,3407,3900,4356, 955,5510,1620, # 3952 -4357,2647,2432,5511,1429,3766,1669,1832, 994, 928,5512,3633,1260,5513,5514,5515, # 3968 -1949,2293, 741,2933,1626,4358,2738,2460, 867,1184, 362,3408,1392,5516,5517,4106, # 3984 -4359,1770,1736,3254,2934,4713,4714,1929,2707,1459,1158,5518,3070,3409,2891,1292, # 4000 -1930,2513,2855,3767,1986,1187,2072,2015,2617,4360,5519,2574,2514,2170,3768,2490, # 4016 -3332,5520,3769,4715,5521,5522, 666,1003,3023,1022,3634,4361,5523,4716,1814,2257, # 4032 - 574,3901,1603, 295,1535, 705,3902,4362, 283, 858, 417,5524,5525,3255,4717,4718, # 4048 -3071,1220,1890,1046,2281,2461,4107,1393,1599, 689,2575, 388,4363,5526,2491, 802, # 4064 -5527,2811,3903,2061,1405,2258,5528,4719,3904,2110,1052,1345,3256,1585,5529, 809, # 4080 -5530,5531,5532, 575,2739,3524, 956,1552,1469,1144,2328,5533,2329,1560,2462,3635, # 4096 -3257,4108, 616,2210,4364,3180,2183,2294,5534,1833,5535,3525,4720,5536,1319,3770, # 4112 -3771,1211,3636,1023,3258,1293,2812,5537,5538,5539,3905, 607,2311,3906, 762,2892, # 4128 -1439,4365,1360,4721,1485,3072,5540,4722,1038,4366,1450,2062,2648,4367,1379,4723, # 4144 -2593,5541,5542,4368,1352,1414,2330,2935,1172,5543,5544,3907,3908,4724,1798,1451, # 4160 -5545,5546,5547,5548,2936,4109,4110,2492,2351, 411,4111,4112,3637,3333,3124,4725, # 4176 -1561,2674,1452,4113,1375,5549,5550, 47,2974, 316,5551,1406,1591,2937,3181,5552, # 4192 -1025,2142,3125,3182, 354,2740, 884,2228,4369,2412, 508,3772, 726,3638, 996,2433, # 4208 -3639, 729,5553, 392,2194,1453,4114,4726,3773,5554,5555,2463,3640,2618,1675,2813, # 4224 - 919,2352,2975,2353,1270,4727,4115, 73,5556,5557, 647,5558,3259,2856,2259,1550, # 4240 -1346,3024,5559,1332, 883,3526,5560,5561,5562,5563,3334,2775,5564,1212, 831,1347, # 4256 -4370,4728,2331,3909,1864,3073, 720,3910,4729,4730,3911,5565,4371,5566,5567,4731, # 4272 -5568,5569,1799,4732,3774,2619,4733,3641,1645,2376,4734,5570,2938, 669,2211,2675, # 4288 -2434,5571,2893,5572,5573,1028,3260,5574,4372,2413,5575,2260,1353,5576,5577,4735, # 4304 -3183, 518,5578,4116,5579,4373,1961,5580,2143,4374,5581,5582,3025,2354,2355,3912, # 4320 - 516,1834,1454,4117,2708,4375,4736,2229,2620,1972,1129,3642,5583,2776,5584,2976, # 4336 -1422, 577,1470,3026,1524,3410,5585,5586, 432,4376,3074,3527,5587,2594,1455,2515, # 4352 -2230,1973,1175,5588,1020,2741,4118,3528,4737,5589,2742,5590,1743,1361,3075,3529, # 4368 -2649,4119,4377,4738,2295, 895, 924,4378,2171, 331,2247,3076, 166,1627,3077,1098, # 4384 -5591,1232,2894,2231,3411,4739, 657, 403,1196,2377, 542,3775,3412,1600,4379,3530, # 4400 -5592,4740,2777,3261, 576, 530,1362,4741,4742,2540,2676,3776,4120,5593, 842,3913, # 4416 -5594,2814,2032,1014,4121, 213,2709,3413, 665, 621,4380,5595,3777,2939,2435,5596, # 4432 -2436,3335,3643,3414,4743,4381,2541,4382,4744,3644,1682,4383,3531,1380,5597, 724, # 4448 -2282, 600,1670,5598,1337,1233,4745,3126,2248,5599,1621,4746,5600, 651,4384,5601, # 4464 -1612,4385,2621,5602,2857,5603,2743,2312,3078,5604, 716,2464,3079, 174,1255,2710, # 4480 -4122,3645, 548,1320,1398, 728,4123,1574,5605,1891,1197,3080,4124,5606,3081,3082, # 4496 -3778,3646,3779, 747,5607, 635,4386,4747,5608,5609,5610,4387,5611,5612,4748,5613, # 4512 -3415,4749,2437, 451,5614,3780,2542,2073,4388,2744,4389,4125,5615,1764,4750,5616, # 4528 -4390, 350,4751,2283,2395,2493,5617,4391,4126,2249,1434,4127, 488,4752, 458,4392, # 4544 -4128,3781, 771,1330,2396,3914,2576,3184,2160,2414,1553,2677,3185,4393,5618,2494, # 4560 -2895,2622,1720,2711,4394,3416,4753,5619,2543,4395,5620,3262,4396,2778,5621,2016, # 4576 -2745,5622,1155,1017,3782,3915,5623,3336,2313, 201,1865,4397,1430,5624,4129,5625, # 4592 -5626,5627,5628,5629,4398,1604,5630, 414,1866, 371,2595,4754,4755,3532,2017,3127, # 4608 -4756,1708, 960,4399, 887, 389,2172,1536,1663,1721,5631,2232,4130,2356,2940,1580, # 4624 -5632,5633,1744,4757,2544,4758,4759,5634,4760,5635,2074,5636,4761,3647,3417,2896, # 4640 -4400,5637,4401,2650,3418,2815, 673,2712,2465, 709,3533,4131,3648,4402,5638,1148, # 4656 - 502, 634,5639,5640,1204,4762,3649,1575,4763,2623,3783,5641,3784,3128, 948,3263, # 4672 - 121,1745,3916,1110,5642,4403,3083,2516,3027,4132,3785,1151,1771,3917,1488,4133, # 4688 -1987,5643,2438,3534,5644,5645,2094,5646,4404,3918,1213,1407,2816, 531,2746,2545, # 4704 -3264,1011,1537,4764,2779,4405,3129,1061,5647,3786,3787,1867,2897,5648,2018, 120, # 4720 -4406,4407,2063,3650,3265,2314,3919,2678,3419,1955,4765,4134,5649,3535,1047,2713, # 4736 -1266,5650,1368,4766,2858, 649,3420,3920,2546,2747,1102,2859,2679,5651,5652,2000, # 4752 -5653,1111,3651,2977,5654,2495,3921,3652,2817,1855,3421,3788,5655,5656,3422,2415, # 4768 -2898,3337,3266,3653,5657,2577,5658,3654,2818,4135,1460, 856,5659,3655,5660,2899, # 4784 -2978,5661,2900,3922,5662,4408, 632,2517, 875,3923,1697,3924,2296,5663,5664,4767, # 4800 -3028,1239, 580,4768,4409,5665, 914, 936,2075,1190,4136,1039,2124,5666,5667,5668, # 4816 -5669,3423,1473,5670,1354,4410,3925,4769,2173,3084,4137, 915,3338,4411,4412,3339, # 4832 -1605,1835,5671,2748, 398,3656,4413,3926,4138, 328,1913,2860,4139,3927,1331,4414, # 4848 -3029, 937,4415,5672,3657,4140,4141,3424,2161,4770,3425, 524, 742, 538,3085,1012, # 4864 -5673,5674,3928,2466,5675, 658,1103, 225,3929,5676,5677,4771,5678,4772,5679,3267, # 4880 -1243,5680,4142, 963,2250,4773,5681,2714,3658,3186,5682,5683,2596,2332,5684,4774, # 4896 -5685,5686,5687,3536, 957,3426,2547,2033,1931,2941,2467, 870,2019,3659,1746,2780, # 4912 -2781,2439,2468,5688,3930,5689,3789,3130,3790,3537,3427,3791,5690,1179,3086,5691, # 4928 -3187,2378,4416,3792,2548,3188,3131,2749,4143,5692,3428,1556,2549,2297, 977,2901, # 4944 -2034,4144,1205,3429,5693,1765,3430,3189,2125,1271, 714,1689,4775,3538,5694,2333, # 4960 -3931, 533,4417,3660,2184, 617,5695,2469,3340,3539,2315,5696,5697,3190,5698,5699, # 4976 -3932,1988, 618, 427,2651,3540,3431,5700,5701,1244,1690,5702,2819,4418,4776,5703, # 4992 -3541,4777,5704,2284,1576, 473,3661,4419,3432, 972,5705,3662,5706,3087,5707,5708, # 5008 -4778,4779,5709,3793,4145,4146,5710, 153,4780, 356,5711,1892,2902,4420,2144, 408, # 5024 - 803,2357,5712,3933,5713,4421,1646,2578,2518,4781,4782,3934,5714,3935,4422,5715, # 5040 -2416,3433, 752,5716,5717,1962,3341,2979,5718, 746,3030,2470,4783,4423,3794, 698, # 5056 -4784,1893,4424,3663,2550,4785,3664,3936,5719,3191,3434,5720,1824,1302,4147,2715, # 5072 -3937,1974,4425,5721,4426,3192, 823,1303,1288,1236,2861,3542,4148,3435, 774,3938, # 5088 -5722,1581,4786,1304,2862,3939,4787,5723,2440,2162,1083,3268,4427,4149,4428, 344, # 5104 -1173, 288,2316, 454,1683,5724,5725,1461,4788,4150,2597,5726,5727,4789, 985, 894, # 5120 -5728,3436,3193,5729,1914,2942,3795,1989,5730,2111,1975,5731,4151,5732,2579,1194, # 5136 - 425,5733,4790,3194,1245,3796,4429,5734,5735,2863,5736, 636,4791,1856,3940, 760, # 5152 -1800,5737,4430,2212,1508,4792,4152,1894,1684,2298,5738,5739,4793,4431,4432,2213, # 5168 - 479,5740,5741, 832,5742,4153,2496,5743,2980,2497,3797, 990,3132, 627,1815,2652, # 5184 -4433,1582,4434,2126,2112,3543,4794,5744, 799,4435,3195,5745,4795,2113,1737,3031, # 5200 -1018, 543, 754,4436,3342,1676,4796,4797,4154,4798,1489,5746,3544,5747,2624,2903, # 5216 -4155,5748,5749,2981,5750,5751,5752,5753,3196,4799,4800,2185,1722,5754,3269,3270, # 5232 -1843,3665,1715, 481, 365,1976,1857,5755,5756,1963,2498,4801,5757,2127,3666,3271, # 5248 - 433,1895,2064,2076,5758, 602,2750,5759,5760,5761,5762,5763,3032,1628,3437,5764, # 5264 -3197,4802,4156,2904,4803,2519,5765,2551,2782,5766,5767,5768,3343,4804,2905,5769, # 5280 -4805,5770,2864,4806,4807,1221,2982,4157,2520,5771,5772,5773,1868,1990,5774,5775, # 5296 -5776,1896,5777,5778,4808,1897,4158, 318,5779,2095,4159,4437,5780,5781, 485,5782, # 5312 - 938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328 -3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344 - 890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360 -2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376 -) - diff --git a/env/lib/python3.6/site-packages/chardet/big5prober.py b/env/lib/python3.6/site-packages/chardet/big5prober.py deleted file mode 100644 index 98f9970..0000000 --- a/env/lib/python3.6/site-packages/chardet/big5prober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import Big5DistributionAnalysis -from .mbcssm import BIG5_SM_MODEL - - -class Big5Prober(MultiByteCharSetProber): - def __init__(self): - super(Big5Prober, self).__init__() - self.coding_sm = CodingStateMachine(BIG5_SM_MODEL) - self.distribution_analyzer = Big5DistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "Big5" - - @property - def language(self): - return "Chinese" diff --git a/env/lib/python3.6/site-packages/chardet/chardistribution.py b/env/lib/python3.6/site-packages/chardet/chardistribution.py deleted file mode 100644 index c0395f4..0000000 --- a/env/lib/python3.6/site-packages/chardet/chardistribution.py +++ /dev/null @@ -1,233 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE, - EUCTW_TYPICAL_DISTRIBUTION_RATIO) -from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE, - EUCKR_TYPICAL_DISTRIBUTION_RATIO) -from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE, - GB2312_TYPICAL_DISTRIBUTION_RATIO) -from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE, - BIG5_TYPICAL_DISTRIBUTION_RATIO) -from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE, - JIS_TYPICAL_DISTRIBUTION_RATIO) - - -class CharDistributionAnalysis(object): - ENOUGH_DATA_THRESHOLD = 1024 - SURE_YES = 0.99 - SURE_NO = 0.01 - MINIMUM_DATA_THRESHOLD = 3 - - def __init__(self): - # Mapping table to get frequency order from char order (get from - # GetOrder()) - self._char_to_freq_order = None - self._table_size = None # Size of above table - # This is a constant value which varies from language to language, - # used in calculating confidence. See - # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html - # for further detail. - self.typical_distribution_ratio = None - self._done = None - self._total_chars = None - self._freq_chars = None - self.reset() - - def reset(self): - """reset analyser, clear any state""" - # If this flag is set to True, detection is done and conclusion has - # been made - self._done = False - self._total_chars = 0 # Total characters encountered - # The number of characters whose frequency order is less than 512 - self._freq_chars = 0 - - def feed(self, char, char_len): - """feed a character with known length""" - if char_len == 2: - # we only care about 2-bytes character in our distribution analysis - order = self.get_order(char) - else: - order = -1 - if order >= 0: - self._total_chars += 1 - # order is valid - if order < self._table_size: - if 512 > self._char_to_freq_order[order]: - self._freq_chars += 1 - - def get_confidence(self): - """return confidence based on existing data""" - # if we didn't receive any character in our consideration range, - # return negative answer - if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD: - return self.SURE_NO - - if self._total_chars != self._freq_chars: - r = (self._freq_chars / ((self._total_chars - self._freq_chars) - * self.typical_distribution_ratio)) - if r < self.SURE_YES: - return r - - # normalize confidence (we don't want to be 100% sure) - return self.SURE_YES - - def got_enough_data(self): - # It is not necessary to receive all data to draw conclusion. - # For charset detection, certain amount of data is enough - return self._total_chars > self.ENOUGH_DATA_THRESHOLD - - def get_order(self, byte_str): - # We do not handle characters based on the original encoding string, - # but convert this encoding string to a number, here called order. - # This allows multiple encodings of a language to share one frequency - # table. - return -1 - - -class EUCTWDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(EUCTWDistributionAnalysis, self).__init__() - self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER - self._table_size = EUCTW_TABLE_SIZE - self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for euc-TW encoding, we are interested - # first byte range: 0xc4 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char = byte_str[0] - if first_char >= 0xC4: - return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1 - else: - return -1 - - -class EUCKRDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(EUCKRDistributionAnalysis, self).__init__() - self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER - self._table_size = EUCKR_TABLE_SIZE - self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for euc-KR encoding, we are interested - # first byte range: 0xb0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char = byte_str[0] - if first_char >= 0xB0: - return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1 - else: - return -1 - - -class GB2312DistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(GB2312DistributionAnalysis, self).__init__() - self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER - self._table_size = GB2312_TABLE_SIZE - self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for GB2312 encoding, we are interested - # first byte range: 0xb0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if (first_char >= 0xB0) and (second_char >= 0xA1): - return 94 * (first_char - 0xB0) + second_char - 0xA1 - else: - return -1 - - -class Big5DistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(Big5DistributionAnalysis, self).__init__() - self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER - self._table_size = BIG5_TABLE_SIZE - self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for big5 encoding, we are interested - # first byte range: 0xa4 -- 0xfe - # second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if first_char >= 0xA4: - if second_char >= 0xA1: - return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63 - else: - return 157 * (first_char - 0xA4) + second_char - 0x40 - else: - return -1 - - -class SJISDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(SJISDistributionAnalysis, self).__init__() - self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER - self._table_size = JIS_TABLE_SIZE - self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for sjis encoding, we are interested - # first byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe - # second byte range: 0x40 -- 0x7e, 0x81 -- oxfe - # no validation needed here. State machine has done that - first_char, second_char = byte_str[0], byte_str[1] - if (first_char >= 0x81) and (first_char <= 0x9F): - order = 188 * (first_char - 0x81) - elif (first_char >= 0xE0) and (first_char <= 0xEF): - order = 188 * (first_char - 0xE0 + 31) - else: - return -1 - order = order + second_char - 0x40 - if second_char > 0x7F: - order = -1 - return order - - -class EUCJPDistributionAnalysis(CharDistributionAnalysis): - def __init__(self): - super(EUCJPDistributionAnalysis, self).__init__() - self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER - self._table_size = JIS_TABLE_SIZE - self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO - - def get_order(self, byte_str): - # for euc-JP encoding, we are interested - # first byte range: 0xa0 -- 0xfe - # second byte range: 0xa1 -- 0xfe - # no validation needed here. State machine has done that - char = byte_str[0] - if char >= 0xA0: - return 94 * (char - 0xA1) + byte_str[1] - 0xa1 - else: - return -1 diff --git a/env/lib/python3.6/site-packages/chardet/charsetgroupprober.py b/env/lib/python3.6/site-packages/chardet/charsetgroupprober.py deleted file mode 100644 index 8b3738e..0000000 --- a/env/lib/python3.6/site-packages/chardet/charsetgroupprober.py +++ /dev/null @@ -1,106 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .enums import ProbingState -from .charsetprober import CharSetProber - - -class CharSetGroupProber(CharSetProber): - def __init__(self, lang_filter=None): - super(CharSetGroupProber, self).__init__(lang_filter=lang_filter) - self._active_num = 0 - self.probers = [] - self._best_guess_prober = None - - def reset(self): - super(CharSetGroupProber, self).reset() - self._active_num = 0 - for prober in self.probers: - if prober: - prober.reset() - prober.active = True - self._active_num += 1 - self._best_guess_prober = None - - @property - def charset_name(self): - if not self._best_guess_prober: - self.get_confidence() - if not self._best_guess_prober: - return None - return self._best_guess_prober.charset_name - - @property - def language(self): - if not self._best_guess_prober: - self.get_confidence() - if not self._best_guess_prober: - return None - return self._best_guess_prober.language - - def feed(self, byte_str): - for prober in self.probers: - if not prober: - continue - if not prober.active: - continue - state = prober.feed(byte_str) - if not state: - continue - if state == ProbingState.FOUND_IT: - self._best_guess_prober = prober - return self.state - elif state == ProbingState.NOT_ME: - prober.active = False - self._active_num -= 1 - if self._active_num <= 0: - self._state = ProbingState.NOT_ME - return self.state - return self.state - - def get_confidence(self): - state = self.state - if state == ProbingState.FOUND_IT: - return 0.99 - elif state == ProbingState.NOT_ME: - return 0.01 - best_conf = 0.0 - self._best_guess_prober = None - for prober in self.probers: - if not prober: - continue - if not prober.active: - self.logger.debug('%s not active', prober.charset_name) - continue - conf = prober.get_confidence() - self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf) - if best_conf < conf: - best_conf = conf - self._best_guess_prober = prober - if not self._best_guess_prober: - return 0.0 - return best_conf diff --git a/env/lib/python3.6/site-packages/chardet/charsetprober.py b/env/lib/python3.6/site-packages/chardet/charsetprober.py deleted file mode 100644 index eac4e59..0000000 --- a/env/lib/python3.6/site-packages/chardet/charsetprober.py +++ /dev/null @@ -1,145 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import logging -import re - -from .enums import ProbingState - - -class CharSetProber(object): - - SHORTCUT_THRESHOLD = 0.95 - - def __init__(self, lang_filter=None): - self._state = None - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - - def reset(self): - self._state = ProbingState.DETECTING - - @property - def charset_name(self): - return None - - def feed(self, buf): - pass - - @property - def state(self): - return self._state - - def get_confidence(self): - return 0.0 - - @staticmethod - def filter_high_byte_only(buf): - buf = re.sub(b'([\x00-\x7F])+', b' ', buf) - return buf - - @staticmethod - def filter_international_words(buf): - """ - We define three types of bytes: - alphabet: english alphabets [a-zA-Z] - international: international characters [\x80-\xFF] - marker: everything else [^a-zA-Z\x80-\xFF] - - The input buffer can be thought to contain a series of words delimited - by markers. This function works to filter all words that contain at - least one international character. All contiguous sequences of markers - are replaced by a single space ascii character. - - This filter applies to all scripts which do not use English characters. - """ - filtered = bytearray() - - # This regex expression filters out only words that have at-least one - # international character. The word may include one marker character at - # the end. - words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?', - buf) - - for word in words: - filtered.extend(word[:-1]) - - # If the last character in the word is a marker, replace it with a - # space as markers shouldn't affect our analysis (they are used - # similarly across all languages and may thus have similar - # frequencies). - last_char = word[-1:] - if not last_char.isalpha() and last_char < b'\x80': - last_char = b' ' - filtered.extend(last_char) - - return filtered - - @staticmethod - def filter_with_english_letters(buf): - """ - Returns a copy of ``buf`` that retains only the sequences of English - alphabet and high byte characters that are not between <> characters. - Also retains English alphabet and high byte characters immediately - before occurrences of >. - - This filter can be applied to all scripts which contain both English - characters and extended ASCII characters, but is currently only used by - ``Latin1Prober``. - """ - filtered = bytearray() - in_tag = False - prev = 0 - - for curr in range(len(buf)): - # Slice here to get bytes instead of an int with Python 3 - buf_char = buf[curr:curr + 1] - # Check if we're coming out of or entering an HTML tag - if buf_char == b'>': - in_tag = False - elif buf_char == b'<': - in_tag = True - - # If current character is not extended-ASCII and not alphabetic... - if buf_char < b'\x80' and not buf_char.isalpha(): - # ...and we're not in a tag - if curr > prev and not in_tag: - # Keep everything after last non-extended-ASCII, - # non-alphabetic character - filtered.extend(buf[prev:curr]) - # Output a space to delimit stretch we kept - filtered.extend(b' ') - prev = curr + 1 - - # If we're not in a tag... - if not in_tag: - # Keep everything after last non-extended-ASCII, non-alphabetic - # character - filtered.extend(buf[prev:]) - - return filtered diff --git a/env/lib/python3.6/site-packages/chardet/cli/__init__.py b/env/lib/python3.6/site-packages/chardet/cli/__init__.py deleted file mode 100644 index 8b13789..0000000 --- a/env/lib/python3.6/site-packages/chardet/cli/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/env/lib/python3.6/site-packages/chardet/cli/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/chardet/cli/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 5685e773efa870c02fe98a059622831d06f827a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 190 zcmXr!<>i{oekqcXfq~&M5W@jTzyXMhS%5?eLokCTqu)w~B9JhG_?4|+P?TAgSdyw= zmRO{pmYFD~WMXcVlVoXTnqp~U8gCe%mTXpHlxt!D1nGJDA^HWG1-eP4 znK>!Cxv9p9{>0` z$)kQ`K9uKfC=s-r^D8h13%Jy!qUdg=noDX!zec?fvAw>p0Q3Lz&Jr zyPBlK3De1Qp;%c6R!WwaQm|2)2{udgM6smcOo~}4HK{N?5vgQcXff1+N1_;(JT1m5 zivIK>$!D49^`eO3`;ZMMiL4ZvDsy3Nl2F2iq>_b7_K8nL3>I02t#vb=;b{*a}5?Q#mA(qcB(Y$VH^ zDGgV;QS@(w#%cRzKN+Ypn`;rLIX!@B&172Wcr-7DIxP!xFfUU0FXAlKLME9yYrAGQ zjxU8&SdU{2{qv_M=0XhQ`5k`8{K{5bX zHb7wI2+B6rrL-2ZRB4*63@E%W!J{`zWRkNiErjZ^3z)JZ(`{mX_DI0i3c7utj8O)}FUzx7veS+Bp-Z;{vH*8k=h@ z?!7#^>9Lo`H*ewX<;hJydJWb^%W49BQmA>R&)U1Pj)0mSx@aP0a&3Z<5ZnYDS!Zg) ztW?5;m9`8?HROVjWqft5%zJneassjz`Q}0<9F;Opbh~D1))^C!55}FFfW~qkhW_Em z577N5KLmC!6DglNmjBT#kN=E2w*DoG5f7x8X)! z=!WP+H*gQoH!&kgYY29-Ux1b#&8EXI5VSLOi7a2afU-OFxX%O3`MkDrd8h;VK-Z>W z5mGy?k6m7WRYN+ECWw(o(}v!G=I$%s&PGcI$>hEG90{|F1Up4y`P1ggkw5D_-sF4l zJG_Pe{r4SMZ1ICvp6lp6y}u;AgOx`K_|uQyIs6XN<(>+#h4EX7i_3w{+KRkQJQpM&9cG3c{N^lF>)3Zrd-C-+r?b_mR7yoam zKmu>oiQCJ(A#8xGh&8tWV``R^7eD@)%FxvW$?=*Dt}s*1GkV(Rg6M)ujLgaRH;lhM zc)-OdK|1y-qHh~d4vhQzc3^^u$Yv%W&rPj>@51|@@rT3@W;dQL-WnhEDIRxO144T{MH9?H^`yaSJA1C0p> z^U+91`5T&{T4o|^kG3jFxerQJiPqPqX3MAvQU9>ProDU*3KR)wUz*VFly;%M;qsh-2DA71>_5?Vhy{Og)Zy zIgDcy#VG11bRv!=)nn;XLlh)GqK4cw^>rYvcm39S)J3Y}mr}*rcQ=#xVNg~3>IYCM wZ2_oU-CT&s8s`x`Z#CAz#%FoS=b89p3ybPqG=cXnoNT}`{Q1$n=zhcfACb}w*Z=?k diff --git a/env/lib/python3.6/site-packages/chardet/cli/chardetect.py b/env/lib/python3.6/site-packages/chardet/cli/chardetect.py deleted file mode 100644 index f0a4cc5..0000000 --- a/env/lib/python3.6/site-packages/chardet/cli/chardetect.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python -""" -Script which takes one or more file paths and reports on their detected -encodings - -Example:: - - % chardetect somefile someotherfile - somefile: windows-1252 with confidence 0.5 - someotherfile: ascii with confidence 1.0 - -If no paths are provided, it takes its input from stdin. - -""" - -from __future__ import absolute_import, print_function, unicode_literals - -import argparse -import sys - -from chardet import __version__ -from chardet.compat import PY2 -from chardet.universaldetector import UniversalDetector - - -def description_of(lines, name='stdin'): - """ - Return a string describing the probable encoding of a file or - list of strings. - - :param lines: The lines to get the encoding of. - :type lines: Iterable of bytes - :param name: Name of file or collection of lines - :type name: str - """ - u = UniversalDetector() - for line in lines: - line = bytearray(line) - u.feed(line) - # shortcut out of the loop to save reading further - particularly useful if we read a BOM. - if u.done: - break - u.close() - result = u.result - if PY2: - name = name.decode(sys.getfilesystemencoding(), 'ignore') - if result['encoding']: - return '{0}: {1} with confidence {2}'.format(name, result['encoding'], - result['confidence']) - else: - return '{0}: no result'.format(name) - - -def main(argv=None): - """ - Handles command line arguments and gets things started. - - :param argv: List of arguments, as if specified on the command-line. - If None, ``sys.argv[1:]`` is used instead. - :type argv: list of str - """ - # Get command line arguments - parser = argparse.ArgumentParser( - description="Takes one or more file paths and reports their detected \ - encodings") - parser.add_argument('input', - help='File whose encoding we would like to determine. \ - (default: stdin)', - type=argparse.FileType('rb'), nargs='*', - default=[sys.stdin if PY2 else sys.stdin.buffer]) - parser.add_argument('--version', action='version', - version='%(prog)s {0}'.format(__version__)) - args = parser.parse_args(argv) - - for f in args.input: - if f.isatty(): - print("You are running chardetect interactively. Press " + - "CTRL-D twice at the start of a blank line to signal the " + - "end of your input. If you want help, run chardetect " + - "--help\n", file=sys.stderr) - print(description_of(f, f.name)) - - -if __name__ == '__main__': - main() diff --git a/env/lib/python3.6/site-packages/chardet/codingstatemachine.py b/env/lib/python3.6/site-packages/chardet/codingstatemachine.py deleted file mode 100644 index 68fba44..0000000 --- a/env/lib/python3.6/site-packages/chardet/codingstatemachine.py +++ /dev/null @@ -1,88 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import logging - -from .enums import MachineState - - -class CodingStateMachine(object): - """ - A state machine to verify a byte sequence for a particular encoding. For - each byte the detector receives, it will feed that byte to every active - state machine available, one byte at a time. The state machine changes its - state based on its previous state and the byte it receives. There are 3 - states in a state machine that are of interest to an auto-detector: - - START state: This is the state to start with, or a legal byte sequence - (i.e. a valid code point) for character has been identified. - - ME state: This indicates that the state machine identified a byte sequence - that is specific to the charset it is designed for and that - there is no other possible encoding which can contain this byte - sequence. This will to lead to an immediate positive answer for - the detector. - - ERROR state: This indicates the state machine identified an illegal byte - sequence for that encoding. This will lead to an immediate - negative answer for this encoding. Detector will exclude this - encoding from consideration from here on. - """ - def __init__(self, sm): - self._model = sm - self._curr_byte_pos = 0 - self._curr_char_len = 0 - self._curr_state = None - self.logger = logging.getLogger(__name__) - self.reset() - - def reset(self): - self._curr_state = MachineState.START - - def next_state(self, c): - # for each byte we get its class - # if it is first byte, we also get byte length - byte_class = self._model['class_table'][c] - if self._curr_state == MachineState.START: - self._curr_byte_pos = 0 - self._curr_char_len = self._model['char_len_table'][byte_class] - # from byte's class and state_table, we get its next state - curr_state = (self._curr_state * self._model['class_factor'] - + byte_class) - self._curr_state = self._model['state_table'][curr_state] - self._curr_byte_pos += 1 - return self._curr_state - - def get_current_charlen(self): - return self._curr_char_len - - def get_coding_state_machine(self): - return self._model['name'] - - @property - def language(self): - return self._model['language'] diff --git a/env/lib/python3.6/site-packages/chardet/compat.py b/env/lib/python3.6/site-packages/chardet/compat.py deleted file mode 100644 index ddd7468..0000000 --- a/env/lib/python3.6/site-packages/chardet/compat.py +++ /dev/null @@ -1,34 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# Contributor(s): -# Dan Blanchard -# Ian Cordasco -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -import sys - - -if sys.version_info < (3, 0): - PY2 = True - PY3 = False - base_str = (str, unicode) - text_type = unicode -else: - PY2 = False - PY3 = True - base_str = (bytes, str) - text_type = str diff --git a/env/lib/python3.6/site-packages/chardet/cp949prober.py b/env/lib/python3.6/site-packages/chardet/cp949prober.py deleted file mode 100644 index efd793a..0000000 --- a/env/lib/python3.6/site-packages/chardet/cp949prober.py +++ /dev/null @@ -1,49 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .chardistribution import EUCKRDistributionAnalysis -from .codingstatemachine import CodingStateMachine -from .mbcharsetprober import MultiByteCharSetProber -from .mbcssm import CP949_SM_MODEL - - -class CP949Prober(MultiByteCharSetProber): - def __init__(self): - super(CP949Prober, self).__init__() - self.coding_sm = CodingStateMachine(CP949_SM_MODEL) - # NOTE: CP949 is a superset of EUC-KR, so the distribution should be - # not different. - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "CP949" - - @property - def language(self): - return "Korean" diff --git a/env/lib/python3.6/site-packages/chardet/enums.py b/env/lib/python3.6/site-packages/chardet/enums.py deleted file mode 100644 index 0451207..0000000 --- a/env/lib/python3.6/site-packages/chardet/enums.py +++ /dev/null @@ -1,76 +0,0 @@ -""" -All of the Enums that are used throughout the chardet package. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - - -class InputState(object): - """ - This enum represents the different states a universal detector can be in. - """ - PURE_ASCII = 0 - ESC_ASCII = 1 - HIGH_BYTE = 2 - - -class LanguageFilter(object): - """ - This enum represents the different language filters we can apply to a - ``UniversalDetector``. - """ - CHINESE_SIMPLIFIED = 0x01 - CHINESE_TRADITIONAL = 0x02 - JAPANESE = 0x04 - KOREAN = 0x08 - NON_CJK = 0x10 - ALL = 0x1F - CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL - CJK = CHINESE | JAPANESE | KOREAN - - -class ProbingState(object): - """ - This enum represents the different states a prober can be in. - """ - DETECTING = 0 - FOUND_IT = 1 - NOT_ME = 2 - - -class MachineState(object): - """ - This enum represents the different states a state machine can be in. - """ - START = 0 - ERROR = 1 - ITS_ME = 2 - - -class SequenceLikelihood(object): - """ - This enum represents the likelihood of a character following the previous one. - """ - NEGATIVE = 0 - UNLIKELY = 1 - LIKELY = 2 - POSITIVE = 3 - - @classmethod - def get_num_categories(cls): - """:returns: The number of likelihood categories in the enum.""" - return 4 - - -class CharacterCategory(object): - """ - This enum represents the different categories language models for - ``SingleByteCharsetProber`` put characters into. - - Anything less than CONTROL is considered a letter. - """ - UNDEFINED = 255 - LINE_BREAK = 254 - SYMBOL = 253 - DIGIT = 252 - CONTROL = 251 diff --git a/env/lib/python3.6/site-packages/chardet/escprober.py b/env/lib/python3.6/site-packages/chardet/escprober.py deleted file mode 100644 index c70493f..0000000 --- a/env/lib/python3.6/site-packages/chardet/escprober.py +++ /dev/null @@ -1,101 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .codingstatemachine import CodingStateMachine -from .enums import LanguageFilter, ProbingState, MachineState -from .escsm import (HZ_SM_MODEL, ISO2022CN_SM_MODEL, ISO2022JP_SM_MODEL, - ISO2022KR_SM_MODEL) - - -class EscCharSetProber(CharSetProber): - """ - This CharSetProber uses a "code scheme" approach for detecting encodings, - whereby easily recognizable escape or shift sequences are relied on to - identify these encodings. - """ - - def __init__(self, lang_filter=None): - super(EscCharSetProber, self).__init__(lang_filter=lang_filter) - self.coding_sm = [] - if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED: - self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL)) - self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL)) - if self.lang_filter & LanguageFilter.JAPANESE: - self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL)) - if self.lang_filter & LanguageFilter.KOREAN: - self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL)) - self.active_sm_count = None - self._detected_charset = None - self._detected_language = None - self._state = None - self.reset() - - def reset(self): - super(EscCharSetProber, self).reset() - for coding_sm in self.coding_sm: - if not coding_sm: - continue - coding_sm.active = True - coding_sm.reset() - self.active_sm_count = len(self.coding_sm) - self._detected_charset = None - self._detected_language = None - - @property - def charset_name(self): - return self._detected_charset - - @property - def language(self): - return self._detected_language - - def get_confidence(self): - if self._detected_charset: - return 0.99 - else: - return 0.00 - - def feed(self, byte_str): - for c in byte_str: - for coding_sm in self.coding_sm: - if not coding_sm or not coding_sm.active: - continue - coding_state = coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - coding_sm.active = False - self.active_sm_count -= 1 - if self.active_sm_count <= 0: - self._state = ProbingState.NOT_ME - return self.state - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - self._detected_charset = coding_sm.get_coding_state_machine() - self._detected_language = coding_sm.language - return self.state - - return self.state diff --git a/env/lib/python3.6/site-packages/chardet/escsm.py b/env/lib/python3.6/site-packages/chardet/escsm.py deleted file mode 100644 index 0069523..0000000 --- a/env/lib/python3.6/site-packages/chardet/escsm.py +++ /dev/null @@ -1,246 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .enums import MachineState - -HZ_CLS = ( -1,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,0,0, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,0,0,0,0, # 20 - 27 -0,0,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -0,0,0,0,0,0,0,0, # 40 - 47 -0,0,0,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,4,0,5,2,0, # 78 - 7f -1,1,1,1,1,1,1,1, # 80 - 87 -1,1,1,1,1,1,1,1, # 88 - 8f -1,1,1,1,1,1,1,1, # 90 - 97 -1,1,1,1,1,1,1,1, # 98 - 9f -1,1,1,1,1,1,1,1, # a0 - a7 -1,1,1,1,1,1,1,1, # a8 - af -1,1,1,1,1,1,1,1, # b0 - b7 -1,1,1,1,1,1,1,1, # b8 - bf -1,1,1,1,1,1,1,1, # c0 - c7 -1,1,1,1,1,1,1,1, # c8 - cf -1,1,1,1,1,1,1,1, # d0 - d7 -1,1,1,1,1,1,1,1, # d8 - df -1,1,1,1,1,1,1,1, # e0 - e7 -1,1,1,1,1,1,1,1, # e8 - ef -1,1,1,1,1,1,1,1, # f0 - f7 -1,1,1,1,1,1,1,1, # f8 - ff -) - -HZ_ST = ( -MachineState.START,MachineState.ERROR, 3,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f -MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START, 4,MachineState.ERROR,# 10-17 - 5,MachineState.ERROR, 6,MachineState.ERROR, 5, 5, 4,MachineState.ERROR,# 18-1f - 4,MachineState.ERROR, 4, 4, 4,MachineState.ERROR, 4,MachineState.ERROR,# 20-27 - 4,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 28-2f -) - -HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) - -HZ_SM_MODEL = {'class_table': HZ_CLS, - 'class_factor': 6, - 'state_table': HZ_ST, - 'char_len_table': HZ_CHAR_LEN_TABLE, - 'name': "HZ-GB-2312", - 'language': 'Chinese'} - -ISO2022CN_CLS = ( -2,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,0,0, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,0,0,0,0, # 20 - 27 -0,3,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -0,0,0,4,0,0,0,0, # 40 - 47 -0,0,0,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,0,0,0,0,0, # 78 - 7f -2,2,2,2,2,2,2,2, # 80 - 87 -2,2,2,2,2,2,2,2, # 88 - 8f -2,2,2,2,2,2,2,2, # 90 - 97 -2,2,2,2,2,2,2,2, # 98 - 9f -2,2,2,2,2,2,2,2, # a0 - a7 -2,2,2,2,2,2,2,2, # a8 - af -2,2,2,2,2,2,2,2, # b0 - b7 -2,2,2,2,2,2,2,2, # b8 - bf -2,2,2,2,2,2,2,2, # c0 - c7 -2,2,2,2,2,2,2,2, # c8 - cf -2,2,2,2,2,2,2,2, # d0 - d7 -2,2,2,2,2,2,2,2, # d8 - df -2,2,2,2,2,2,2,2, # e0 - e7 -2,2,2,2,2,2,2,2, # e8 - ef -2,2,2,2,2,2,2,2, # f0 - f7 -2,2,2,2,2,2,2,2, # f8 - ff -) - -ISO2022CN_ST = ( -MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 -MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f -MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 -MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,# 18-1f -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 20-27 - 5, 6,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 28-2f -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 30-37 -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,# 38-3f -) - -ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022CN_SM_MODEL = {'class_table': ISO2022CN_CLS, - 'class_factor': 9, - 'state_table': ISO2022CN_ST, - 'char_len_table': ISO2022CN_CHAR_LEN_TABLE, - 'name': "ISO-2022-CN", - 'language': 'Chinese'} - -ISO2022JP_CLS = ( -2,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,2,2, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,7,0,0,0, # 20 - 27 -3,0,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -6,0,4,0,8,0,0,0, # 40 - 47 -0,9,5,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,0,0,0,0,0, # 78 - 7f -2,2,2,2,2,2,2,2, # 80 - 87 -2,2,2,2,2,2,2,2, # 88 - 8f -2,2,2,2,2,2,2,2, # 90 - 97 -2,2,2,2,2,2,2,2, # 98 - 9f -2,2,2,2,2,2,2,2, # a0 - a7 -2,2,2,2,2,2,2,2, # a8 - af -2,2,2,2,2,2,2,2, # b0 - b7 -2,2,2,2,2,2,2,2, # b8 - bf -2,2,2,2,2,2,2,2, # c0 - c7 -2,2,2,2,2,2,2,2, # c8 - cf -2,2,2,2,2,2,2,2, # d0 - d7 -2,2,2,2,2,2,2,2, # d8 - df -2,2,2,2,2,2,2,2, # e0 - e7 -2,2,2,2,2,2,2,2, # e8 - ef -2,2,2,2,2,2,2,2, # f0 - f7 -2,2,2,2,2,2,2,2, # f8 - ff -) - -ISO2022JP_ST = ( -MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07 -MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17 -MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,# 18-1f -MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 20-27 -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 6,MachineState.ITS_ME,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,# 28-2f -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,# 30-37 -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 38-3f -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.START,# 40-47 -) - -ISO2022JP_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) - -ISO2022JP_SM_MODEL = {'class_table': ISO2022JP_CLS, - 'class_factor': 10, - 'state_table': ISO2022JP_ST, - 'char_len_table': ISO2022JP_CHAR_LEN_TABLE, - 'name': "ISO-2022-JP", - 'language': 'Japanese'} - -ISO2022KR_CLS = ( -2,0,0,0,0,0,0,0, # 00 - 07 -0,0,0,0,0,0,0,0, # 08 - 0f -0,0,0,0,0,0,0,0, # 10 - 17 -0,0,0,1,0,0,0,0, # 18 - 1f -0,0,0,0,3,0,0,0, # 20 - 27 -0,4,0,0,0,0,0,0, # 28 - 2f -0,0,0,0,0,0,0,0, # 30 - 37 -0,0,0,0,0,0,0,0, # 38 - 3f -0,0,0,5,0,0,0,0, # 40 - 47 -0,0,0,0,0,0,0,0, # 48 - 4f -0,0,0,0,0,0,0,0, # 50 - 57 -0,0,0,0,0,0,0,0, # 58 - 5f -0,0,0,0,0,0,0,0, # 60 - 67 -0,0,0,0,0,0,0,0, # 68 - 6f -0,0,0,0,0,0,0,0, # 70 - 77 -0,0,0,0,0,0,0,0, # 78 - 7f -2,2,2,2,2,2,2,2, # 80 - 87 -2,2,2,2,2,2,2,2, # 88 - 8f -2,2,2,2,2,2,2,2, # 90 - 97 -2,2,2,2,2,2,2,2, # 98 - 9f -2,2,2,2,2,2,2,2, # a0 - a7 -2,2,2,2,2,2,2,2, # a8 - af -2,2,2,2,2,2,2,2, # b0 - b7 -2,2,2,2,2,2,2,2, # b8 - bf -2,2,2,2,2,2,2,2, # c0 - c7 -2,2,2,2,2,2,2,2, # c8 - cf -2,2,2,2,2,2,2,2, # d0 - d7 -2,2,2,2,2,2,2,2, # d8 - df -2,2,2,2,2,2,2,2, # e0 - e7 -2,2,2,2,2,2,2,2, # e8 - ef -2,2,2,2,2,2,2,2, # f0 - f7 -2,2,2,2,2,2,2,2, # f8 - ff -) - -ISO2022KR_ST = ( -MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07 -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f -MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 4,MachineState.ERROR,MachineState.ERROR,# 10-17 -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 18-1f -MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 20-27 -) - -ISO2022KR_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0) - -ISO2022KR_SM_MODEL = {'class_table': ISO2022KR_CLS, - 'class_factor': 6, - 'state_table': ISO2022KR_ST, - 'char_len_table': ISO2022KR_CHAR_LEN_TABLE, - 'name': "ISO-2022-KR", - 'language': 'Korean'} - - diff --git a/env/lib/python3.6/site-packages/chardet/eucjpprober.py b/env/lib/python3.6/site-packages/chardet/eucjpprober.py deleted file mode 100644 index 20ce8f7..0000000 --- a/env/lib/python3.6/site-packages/chardet/eucjpprober.py +++ /dev/null @@ -1,92 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .enums import ProbingState, MachineState -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import EUCJPDistributionAnalysis -from .jpcntx import EUCJPContextAnalysis -from .mbcssm import EUCJP_SM_MODEL - - -class EUCJPProber(MultiByteCharSetProber): - def __init__(self): - super(EUCJPProber, self).__init__() - self.coding_sm = CodingStateMachine(EUCJP_SM_MODEL) - self.distribution_analyzer = EUCJPDistributionAnalysis() - self.context_analyzer = EUCJPContextAnalysis() - self.reset() - - def reset(self): - super(EUCJPProber, self).reset() - self.context_analyzer.reset() - - @property - def charset_name(self): - return "EUC-JP" - - @property - def language(self): - return "Japanese" - - def feed(self, byte_str): - for i in range(len(byte_str)): - # PY3K: byte_str is a byte array, so byte_str[i] is an int, not a byte - coding_state = self.coding_sm.next_state(byte_str[i]) - if coding_state == MachineState.ERROR: - self.logger.debug('%s %s prober hit error at byte %s', - self.charset_name, self.language, i) - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte_str[0] - self.context_analyzer.feed(self._last_char, char_len) - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.context_analyzer.feed(byte_str[i - 1:i + 1], - char_len) - self.distribution_analyzer.feed(byte_str[i - 1:i + 1], - char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if (self.context_analyzer.got_enough_data() and - (self.get_confidence() > self.SHORTCUT_THRESHOLD)): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/env/lib/python3.6/site-packages/chardet/euckrfreq.py b/env/lib/python3.6/site-packages/chardet/euckrfreq.py deleted file mode 100644 index b68078c..0000000 --- a/env/lib/python3.6/site-packages/chardet/euckrfreq.py +++ /dev/null @@ -1,195 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology - -# 128 --> 0.79 -# 256 --> 0.92 -# 512 --> 0.986 -# 1024 --> 0.99944 -# 2048 --> 0.99999 -# -# Idea Distribution Ratio = 0.98653 / (1-0.98653) = 73.24 -# Random Distribution Ration = 512 / (2350-512) = 0.279. -# -# Typical Distribution Ratio - -EUCKR_TYPICAL_DISTRIBUTION_RATIO = 6.0 - -EUCKR_TABLE_SIZE = 2352 - -# Char to FreqOrder table , -EUCKR_CHAR_TO_FREQ_ORDER = ( - 13, 130, 120,1396, 481,1719,1720, 328, 609, 212,1721, 707, 400, 299,1722, 87, -1397,1723, 104, 536,1117,1203,1724,1267, 685,1268, 508,1725,1726,1727,1728,1398, -1399,1729,1730,1731, 141, 621, 326,1057, 368,1732, 267, 488, 20,1733,1269,1734, - 945,1400,1735, 47, 904,1270,1736,1737, 773, 248,1738, 409, 313, 786, 429,1739, - 116, 987, 813,1401, 683, 75,1204, 145,1740,1741,1742,1743, 16, 847, 667, 622, - 708,1744,1745,1746, 966, 787, 304, 129,1747, 60, 820, 123, 676,1748,1749,1750, -1751, 617,1752, 626,1753,1754,1755,1756, 653,1757,1758,1759,1760,1761,1762, 856, - 344,1763,1764,1765,1766, 89, 401, 418, 806, 905, 848,1767,1768,1769, 946,1205, - 709,1770,1118,1771, 241,1772,1773,1774,1271,1775, 569,1776, 999,1777,1778,1779, -1780, 337, 751,1058, 28, 628, 254,1781, 177, 906, 270, 349, 891,1079,1782, 19, -1783, 379,1784, 315,1785, 629, 754,1402, 559,1786, 636, 203,1206,1787, 710, 567, -1788, 935, 814,1789,1790,1207, 766, 528,1791,1792,1208,1793,1794,1795,1796,1797, -1403,1798,1799, 533,1059,1404,1405,1156,1406, 936, 884,1080,1800, 351,1801,1802, -1803,1804,1805, 801,1806,1807,1808,1119,1809,1157, 714, 474,1407,1810, 298, 899, - 885,1811,1120, 802,1158,1812, 892,1813,1814,1408, 659,1815,1816,1121,1817,1818, -1819,1820,1821,1822, 319,1823, 594, 545,1824, 815, 937,1209,1825,1826, 573,1409, -1022,1827,1210,1828,1829,1830,1831,1832,1833, 556, 722, 807,1122,1060,1834, 697, -1835, 900, 557, 715,1836,1410, 540,1411, 752,1159, 294, 597,1211, 976, 803, 770, -1412,1837,1838, 39, 794,1413, 358,1839, 371, 925,1840, 453, 661, 788, 531, 723, - 544,1023,1081, 869, 91,1841, 392, 430, 790, 602,1414, 677,1082, 457,1415,1416, -1842,1843, 475, 327,1024,1417, 795, 121,1844, 733, 403,1418,1845,1846,1847, 300, - 119, 711,1212, 627,1848,1272, 207,1849,1850, 796,1213, 382,1851, 519,1852,1083, - 893,1853,1854,1855, 367, 809, 487, 671,1856, 663,1857,1858, 956, 471, 306, 857, -1859,1860,1160,1084,1861,1862,1863,1864,1865,1061,1866,1867,1868,1869,1870,1871, - 282, 96, 574,1872, 502,1085,1873,1214,1874, 907,1875,1876, 827, 977,1419,1420, -1421, 268,1877,1422,1878,1879,1880, 308,1881, 2, 537,1882,1883,1215,1884,1885, - 127, 791,1886,1273,1423,1887, 34, 336, 404, 643,1888, 571, 654, 894, 840,1889, - 0, 886,1274, 122, 575, 260, 908, 938,1890,1275, 410, 316,1891,1892, 100,1893, -1894,1123, 48,1161,1124,1025,1895, 633, 901,1276,1896,1897, 115, 816,1898, 317, -1899, 694,1900, 909, 734,1424, 572, 866,1425, 691, 85, 524,1010, 543, 394, 841, -1901,1902,1903,1026,1904,1905,1906,1907,1908,1909, 30, 451, 651, 988, 310,1910, -1911,1426, 810,1216, 93,1912,1913,1277,1217,1914, 858, 759, 45, 58, 181, 610, - 269,1915,1916, 131,1062, 551, 443,1000, 821,1427, 957, 895,1086,1917,1918, 375, -1919, 359,1920, 687,1921, 822,1922, 293,1923,1924, 40, 662, 118, 692, 29, 939, - 887, 640, 482, 174,1925, 69,1162, 728,1428, 910,1926,1278,1218,1279, 386, 870, - 217, 854,1163, 823,1927,1928,1929,1930, 834,1931, 78,1932, 859,1933,1063,1934, -1935,1936,1937, 438,1164, 208, 595,1938,1939,1940,1941,1219,1125,1942, 280, 888, -1429,1430,1220,1431,1943,1944,1945,1946,1947,1280, 150, 510,1432,1948,1949,1950, -1951,1952,1953,1954,1011,1087,1955,1433,1043,1956, 881,1957, 614, 958,1064,1065, -1221,1958, 638,1001, 860, 967, 896,1434, 989, 492, 553,1281,1165,1959,1282,1002, -1283,1222,1960,1961,1962,1963, 36, 383, 228, 753, 247, 454,1964, 876, 678,1965, -1966,1284, 126, 464, 490, 835, 136, 672, 529, 940,1088,1435, 473,1967,1968, 467, - 50, 390, 227, 587, 279, 378, 598, 792, 968, 240, 151, 160, 849, 882,1126,1285, - 639,1044, 133, 140, 288, 360, 811, 563,1027, 561, 142, 523,1969,1970,1971, 7, - 103, 296, 439, 407, 506, 634, 990,1972,1973,1974,1975, 645,1976,1977,1978,1979, -1980,1981, 236,1982,1436,1983,1984,1089, 192, 828, 618, 518,1166, 333,1127,1985, - 818,1223,1986,1987,1988,1989,1990,1991,1992,1993, 342,1128,1286, 746, 842,1994, -1995, 560, 223,1287, 98, 8, 189, 650, 978,1288,1996,1437,1997, 17, 345, 250, - 423, 277, 234, 512, 226, 97, 289, 42, 167,1998, 201,1999,2000, 843, 836, 824, - 532, 338, 783,1090, 182, 576, 436,1438,1439, 527, 500,2001, 947, 889,2002,2003, -2004,2005, 262, 600, 314, 447,2006, 547,2007, 693, 738,1129,2008, 71,1440, 745, - 619, 688,2009, 829,2010,2011, 147,2012, 33, 948,2013,2014, 74, 224,2015, 61, - 191, 918, 399, 637,2016,1028,1130, 257, 902,2017,2018,2019,2020,2021,2022,2023, -2024,2025,2026, 837,2027,2028,2029,2030, 179, 874, 591, 52, 724, 246,2031,2032, -2033,2034,1167, 969,2035,1289, 630, 605, 911,1091,1168,2036,2037,2038,1441, 912, -2039, 623,2040,2041, 253,1169,1290,2042,1442, 146, 620, 611, 577, 433,2043,1224, - 719,1170, 959, 440, 437, 534, 84, 388, 480,1131, 159, 220, 198, 679,2044,1012, - 819,1066,1443, 113,1225, 194, 318,1003,1029,2045,2046,2047,2048,1067,2049,2050, -2051,2052,2053, 59, 913, 112,2054, 632,2055, 455, 144, 739,1291,2056, 273, 681, - 499,2057, 448,2058,2059, 760,2060,2061, 970, 384, 169, 245,1132,2062,2063, 414, -1444,2064,2065, 41, 235,2066, 157, 252, 877, 568, 919, 789, 580,2067, 725,2068, -2069,1292,2070,2071,1445,2072,1446,2073,2074, 55, 588, 66,1447, 271,1092,2075, -1226,2076, 960,1013, 372,2077,2078,2079,2080,2081,1293,2082,2083,2084,2085, 850, -2086,2087,2088,2089,2090, 186,2091,1068, 180,2092,2093,2094, 109,1227, 522, 606, -2095, 867,1448,1093, 991,1171, 926, 353,1133,2096, 581,2097,2098,2099,1294,1449, -1450,2100, 596,1172,1014,1228,2101,1451,1295,1173,1229,2102,2103,1296,1134,1452, - 949,1135,2104,2105,1094,1453,1454,1455,2106,1095,2107,2108,2109,2110,2111,2112, -2113,2114,2115,2116,2117, 804,2118,2119,1230,1231, 805,1456, 405,1136,2120,2121, -2122,2123,2124, 720, 701,1297, 992,1457, 927,1004,2125,2126,2127,2128,2129,2130, - 22, 417,2131, 303,2132, 385,2133, 971, 520, 513,2134,1174, 73,1096, 231, 274, - 962,1458, 673,2135,1459,2136, 152,1137,2137,2138,2139,2140,1005,1138,1460,1139, -2141,2142,2143,2144, 11, 374, 844,2145, 154,1232, 46,1461,2146, 838, 830, 721, -1233, 106,2147, 90, 428, 462, 578, 566,1175, 352,2148,2149, 538,1234, 124,1298, -2150,1462, 761, 565,2151, 686,2152, 649,2153, 72, 173,2154, 460, 415,2155,1463, -2156,1235, 305,2157,2158,2159,2160,2161,2162, 579,2163,2164,2165,2166,2167, 747, -2168,2169,2170,2171,1464, 669,2172,2173,2174,2175,2176,1465,2177, 23, 530, 285, -2178, 335, 729,2179, 397,2180,2181,2182,1030,2183,2184, 698,2185,2186, 325,2187, -2188, 369,2189, 799,1097,1015, 348,2190,1069, 680,2191, 851,1466,2192,2193, 10, -2194, 613, 424,2195, 979, 108, 449, 589, 27, 172, 81,1031, 80, 774, 281, 350, -1032, 525, 301, 582,1176,2196, 674,1045,2197,2198,1467, 730, 762,2199,2200,2201, -2202,1468,2203, 993,2204,2205, 266,1070, 963,1140,2206,2207,2208, 664,1098, 972, -2209,2210,2211,1177,1469,1470, 871,2212,2213,2214,2215,2216,1471,2217,2218,2219, -2220,2221,2222,2223,2224,2225,2226,2227,1472,1236,2228,2229,2230,2231,2232,2233, -2234,2235,1299,2236,2237, 200,2238, 477, 373,2239,2240, 731, 825, 777,2241,2242, -2243, 521, 486, 548,2244,2245,2246,1473,1300, 53, 549, 137, 875, 76, 158,2247, -1301,1474, 469, 396,1016, 278, 712,2248, 321, 442, 503, 767, 744, 941,1237,1178, -1475,2249, 82, 178,1141,1179, 973,2250,1302,2251, 297,2252,2253, 570,2254,2255, -2256, 18, 450, 206,2257, 290, 292,1142,2258, 511, 162, 99, 346, 164, 735,2259, -1476,1477, 4, 554, 343, 798,1099,2260,1100,2261, 43, 171,1303, 139, 215,2262, -2263, 717, 775,2264,1033, 322, 216,2265, 831,2266, 149,2267,1304,2268,2269, 702, -1238, 135, 845, 347, 309,2270, 484,2271, 878, 655, 238,1006,1478,2272, 67,2273, - 295,2274,2275, 461,2276, 478, 942, 412,2277,1034,2278,2279,2280, 265,2281, 541, -2282,2283,2284,2285,2286, 70, 852,1071,2287,2288,2289,2290, 21, 56, 509, 117, - 432,2291,2292, 331, 980, 552,1101, 148, 284, 105, 393,1180,1239, 755,2293, 187, -2294,1046,1479,2295, 340,2296, 63,1047, 230,2297,2298,1305, 763,1306, 101, 800, - 808, 494,2299,2300,2301, 903,2302, 37,1072, 14, 5,2303, 79, 675,2304, 312, -2305,2306,2307,2308,2309,1480, 6,1307,2310,2311,2312, 1, 470, 35, 24, 229, -2313, 695, 210, 86, 778, 15, 784, 592, 779, 32, 77, 855, 964,2314, 259,2315, - 501, 380,2316,2317, 83, 981, 153, 689,1308,1481,1482,1483,2318,2319, 716,1484, -2320,2321,2322,2323,2324,2325,1485,2326,2327, 128, 57, 68, 261,1048, 211, 170, -1240, 31,2328, 51, 435, 742,2329,2330,2331, 635,2332, 264, 456,2333,2334,2335, - 425,2336,1486, 143, 507, 263, 943,2337, 363, 920,1487, 256,1488,1102, 243, 601, -1489,2338,2339,2340,2341,2342,2343,2344, 861,2345,2346,2347,2348,2349,2350, 395, -2351,1490,1491, 62, 535, 166, 225,2352,2353, 668, 419,1241, 138, 604, 928,2354, -1181,2355,1492,1493,2356,2357,2358,1143,2359, 696,2360, 387, 307,1309, 682, 476, -2361,2362, 332, 12, 222, 156,2363, 232,2364, 641, 276, 656, 517,1494,1495,1035, - 416, 736,1496,2365,1017, 586,2366,2367,2368,1497,2369, 242,2370,2371,2372,1498, -2373, 965, 713,2374,2375,2376,2377, 740, 982,1499, 944,1500,1007,2378,2379,1310, -1501,2380,2381,2382, 785, 329,2383,2384,1502,2385,2386,2387, 932,2388,1503,2389, -2390,2391,2392,1242,2393,2394,2395,2396,2397, 994, 950,2398,2399,2400,2401,1504, -1311,2402,2403,2404,2405,1049, 749,2406,2407, 853, 718,1144,1312,2408,1182,1505, -2409,2410, 255, 516, 479, 564, 550, 214,1506,1507,1313, 413, 239, 444, 339,1145, -1036,1508,1509,1314,1037,1510,1315,2411,1511,2412,2413,2414, 176, 703, 497, 624, - 593, 921, 302,2415, 341, 165,1103,1512,2416,1513,2417,2418,2419, 376,2420, 700, -2421,2422,2423, 258, 768,1316,2424,1183,2425, 995, 608,2426,2427,2428,2429, 221, -2430,2431,2432,2433,2434,2435,2436,2437, 195, 323, 726, 188, 897, 983,1317, 377, - 644,1050, 879,2438, 452,2439,2440,2441,2442,2443,2444, 914,2445,2446,2447,2448, - 915, 489,2449,1514,1184,2450,2451, 515, 64, 427, 495,2452, 583,2453, 483, 485, -1038, 562, 213,1515, 748, 666,2454,2455,2456,2457, 334,2458, 780, 996,1008, 705, -1243,2459,2460,2461,2462,2463, 114,2464, 493,1146, 366, 163,1516, 961,1104,2465, - 291,2466,1318,1105,2467,1517, 365,2468, 355, 951,1244,2469,1319,2470, 631,2471, -2472, 218,1320, 364, 320, 756,1518,1519,1321,1520,1322,2473,2474,2475,2476, 997, -2477,2478,2479,2480, 665,1185,2481, 916,1521,2482,2483,2484, 584, 684,2485,2486, - 797,2487,1051,1186,2488,2489,2490,1522,2491,2492, 370,2493,1039,1187, 65,2494, - 434, 205, 463,1188,2495, 125, 812, 391, 402, 826, 699, 286, 398, 155, 781, 771, - 585,2496, 590, 505,1073,2497, 599, 244, 219, 917,1018, 952, 646,1523,2498,1323, -2499,2500, 49, 984, 354, 741,2501, 625,2502,1324,2503,1019, 190, 357, 757, 491, - 95, 782, 868,2504,2505,2506,2507,2508,2509, 134,1524,1074, 422,1525, 898,2510, - 161,2511,2512,2513,2514, 769,2515,1526,2516,2517, 411,1325,2518, 472,1527,2519, -2520,2521,2522,2523,2524, 985,2525,2526,2527,2528,2529,2530, 764,2531,1245,2532, -2533, 25, 204, 311,2534, 496,2535,1052,2536,2537,2538,2539,2540,2541,2542, 199, - 704, 504, 468, 758, 657,1528, 196, 44, 839,1246, 272, 750,2543, 765, 862,2544, -2545,1326,2546, 132, 615, 933,2547, 732,2548,2549,2550,1189,1529,2551, 283,1247, -1053, 607, 929,2552,2553,2554, 930, 183, 872, 616,1040,1147,2555,1148,1020, 441, - 249,1075,2556,2557,2558, 466, 743,2559,2560,2561, 92, 514, 426, 420, 526,2562, -2563,2564,2565,2566,2567,2568, 185,2569,2570,2571,2572, 776,1530, 658,2573, 362, -2574, 361, 922,1076, 793,2575,2576,2577,2578,2579,2580,1531, 251,2581,2582,2583, -2584,1532, 54, 612, 237,1327,2585,2586, 275, 408, 647, 111,2587,1533,1106, 465, - 3, 458, 9, 38,2588, 107, 110, 890, 209, 26, 737, 498,2589,1534,2590, 431, - 202, 88,1535, 356, 287,1107, 660,1149,2591, 381,1536, 986,1150, 445,1248,1151, - 974,2592,2593, 846,2594, 446, 953, 184,1249,1250, 727,2595, 923, 193, 883,2596, -2597,2598, 102, 324, 539, 817,2599, 421,1041,2600, 832,2601, 94, 175, 197, 406, -2602, 459,2603,2604,2605,2606,2607, 330, 555,2608,2609,2610, 706,1108, 389,2611, -2612,2613,2614, 233,2615, 833, 558, 931, 954,1251,2616,2617,1537, 546,2618,2619, -1009,2620,2621,2622,1538, 690,1328,2623, 955,2624,1539,2625,2626, 772,2627,2628, -2629,2630,2631, 924, 648, 863, 603,2632,2633, 934,1540, 864, 865,2634, 642,1042, - 670,1190,2635,2636,2637,2638, 168,2639, 652, 873, 542,1054,1541,2640,2641,2642, # 512, 256 -) - diff --git a/env/lib/python3.6/site-packages/chardet/euckrprober.py b/env/lib/python3.6/site-packages/chardet/euckrprober.py deleted file mode 100644 index 345a060..0000000 --- a/env/lib/python3.6/site-packages/chardet/euckrprober.py +++ /dev/null @@ -1,47 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import EUCKRDistributionAnalysis -from .mbcssm import EUCKR_SM_MODEL - - -class EUCKRProber(MultiByteCharSetProber): - def __init__(self): - super(EUCKRProber, self).__init__() - self.coding_sm = CodingStateMachine(EUCKR_SM_MODEL) - self.distribution_analyzer = EUCKRDistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "EUC-KR" - - @property - def language(self): - return "Korean" diff --git a/env/lib/python3.6/site-packages/chardet/euctwfreq.py b/env/lib/python3.6/site-packages/chardet/euctwfreq.py deleted file mode 100644 index ed7a995..0000000 --- a/env/lib/python3.6/site-packages/chardet/euctwfreq.py +++ /dev/null @@ -1,387 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# EUCTW frequency table -# Converted from big5 work -# by Taiwan's Mandarin Promotion Council -# - -# 128 --> 0.42261 -# 256 --> 0.57851 -# 512 --> 0.74851 -# 1024 --> 0.89384 -# 2048 --> 0.97583 -# -# Idea Distribution Ratio = 0.74851/(1-0.74851) =2.98 -# Random Distribution Ration = 512/(5401-512)=0.105 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher than RDR - -EUCTW_TYPICAL_DISTRIBUTION_RATIO = 0.75 - -# Char to FreqOrder table , -EUCTW_TABLE_SIZE = 5376 - -EUCTW_CHAR_TO_FREQ_ORDER = ( - 1,1800,1506, 255,1431, 198, 9, 82, 6,7310, 177, 202,3615,1256,2808, 110, # 2742 -3735, 33,3241, 261, 76, 44,2113, 16,2931,2184,1176, 659,3868, 26,3404,2643, # 2758 -1198,3869,3313,4060, 410,2211, 302, 590, 361,1963, 8, 204, 58,4296,7311,1931, # 2774 - 63,7312,7313, 317,1614, 75, 222, 159,4061,2412,1480,7314,3500,3068, 224,2809, # 2790 -3616, 3, 10,3870,1471, 29,2774,1135,2852,1939, 873, 130,3242,1123, 312,7315, # 2806 -4297,2051, 507, 252, 682,7316, 142,1914, 124, 206,2932, 34,3501,3173, 64, 604, # 2822 -7317,2494,1976,1977, 155,1990, 645, 641,1606,7318,3405, 337, 72, 406,7319, 80, # 2838 - 630, 238,3174,1509, 263, 939,1092,2644, 756,1440,1094,3406, 449, 69,2969, 591, # 2854 - 179,2095, 471, 115,2034,1843, 60, 50,2970, 134, 806,1868, 734,2035,3407, 180, # 2870 - 995,1607, 156, 537,2893, 688,7320, 319,1305, 779,2144, 514,2374, 298,4298, 359, # 2886 -2495, 90,2707,1338, 663, 11, 906,1099,2545, 20,2436, 182, 532,1716,7321, 732, # 2902 -1376,4062,1311,1420,3175, 25,2312,1056, 113, 399, 382,1949, 242,3408,2467, 529, # 2918 -3243, 475,1447,3617,7322, 117, 21, 656, 810,1297,2295,2329,3502,7323, 126,4063, # 2934 - 706, 456, 150, 613,4299, 71,1118,2036,4064, 145,3069, 85, 835, 486,2114,1246, # 2950 -1426, 428, 727,1285,1015, 800, 106, 623, 303,1281,7324,2127,2354, 347,3736, 221, # 2966 -3503,3110,7325,1955,1153,4065, 83, 296,1199,3070, 192, 624, 93,7326, 822,1897, # 2982 -2810,3111, 795,2064, 991,1554,1542,1592, 27, 43,2853, 859, 139,1456, 860,4300, # 2998 - 437, 712,3871, 164,2392,3112, 695, 211,3017,2096, 195,3872,1608,3504,3505,3618, # 3014 -3873, 234, 811,2971,2097,3874,2229,1441,3506,1615,2375, 668,2076,1638, 305, 228, # 3030 -1664,4301, 467, 415,7327, 262,2098,1593, 239, 108, 300, 200,1033, 512,1247,2077, # 3046 -7328,7329,2173,3176,3619,2673, 593, 845,1062,3244, 88,1723,2037,3875,1950, 212, # 3062 - 266, 152, 149, 468,1898,4066,4302, 77, 187,7330,3018, 37, 5,2972,7331,3876, # 3078 -7332,7333, 39,2517,4303,2894,3177,2078, 55, 148, 74,4304, 545, 483,1474,1029, # 3094 -1665, 217,1869,1531,3113,1104,2645,4067, 24, 172,3507, 900,3877,3508,3509,4305, # 3110 - 32,1408,2811,1312, 329, 487,2355,2247,2708, 784,2674, 4,3019,3314,1427,1788, # 3126 - 188, 109, 499,7334,3620,1717,1789, 888,1217,3020,4306,7335,3510,7336,3315,1520, # 3142 -3621,3878, 196,1034, 775,7337,7338, 929,1815, 249, 439, 38,7339,1063,7340, 794, # 3158 -3879,1435,2296, 46, 178,3245,2065,7341,2376,7342, 214,1709,4307, 804, 35, 707, # 3174 - 324,3622,1601,2546, 140, 459,4068,7343,7344,1365, 839, 272, 978,2257,2572,3409, # 3190 -2128,1363,3623,1423, 697, 100,3071, 48, 70,1231, 495,3114,2193,7345,1294,7346, # 3206 -2079, 462, 586,1042,3246, 853, 256, 988, 185,2377,3410,1698, 434,1084,7347,3411, # 3222 - 314,2615,2775,4308,2330,2331, 569,2280, 637,1816,2518, 757,1162,1878,1616,3412, # 3238 - 287,1577,2115, 768,4309,1671,2854,3511,2519,1321,3737, 909,2413,7348,4069, 933, # 3254 -3738,7349,2052,2356,1222,4310, 765,2414,1322, 786,4311,7350,1919,1462,1677,2895, # 3270 -1699,7351,4312,1424,2437,3115,3624,2590,3316,1774,1940,3413,3880,4070, 309,1369, # 3286 -1130,2812, 364,2230,1653,1299,3881,3512,3882,3883,2646, 525,1085,3021, 902,2000, # 3302 -1475, 964,4313, 421,1844,1415,1057,2281, 940,1364,3116, 376,4314,4315,1381, 7, # 3318 -2520, 983,2378, 336,1710,2675,1845, 321,3414, 559,1131,3022,2742,1808,1132,1313, # 3334 - 265,1481,1857,7352, 352,1203,2813,3247, 167,1089, 420,2814, 776, 792,1724,3513, # 3350 -4071,2438,3248,7353,4072,7354, 446, 229, 333,2743, 901,3739,1200,1557,4316,2647, # 3366 -1920, 395,2744,2676,3740,4073,1835, 125, 916,3178,2616,4317,7355,7356,3741,7357, # 3382 -7358,7359,4318,3117,3625,1133,2547,1757,3415,1510,2313,1409,3514,7360,2145, 438, # 3398 -2591,2896,2379,3317,1068, 958,3023, 461, 311,2855,2677,4074,1915,3179,4075,1978, # 3414 - 383, 750,2745,2617,4076, 274, 539, 385,1278,1442,7361,1154,1964, 384, 561, 210, # 3430 - 98,1295,2548,3515,7362,1711,2415,1482,3416,3884,2897,1257, 129,7363,3742, 642, # 3446 - 523,2776,2777,2648,7364, 141,2231,1333, 68, 176, 441, 876, 907,4077, 603,2592, # 3462 - 710, 171,3417, 404, 549, 18,3118,2393,1410,3626,1666,7365,3516,4319,2898,4320, # 3478 -7366,2973, 368,7367, 146, 366, 99, 871,3627,1543, 748, 807,1586,1185, 22,2258, # 3494 - 379,3743,3180,7368,3181, 505,1941,2618,1991,1382,2314,7369, 380,2357, 218, 702, # 3510 -1817,1248,3418,3024,3517,3318,3249,7370,2974,3628, 930,3250,3744,7371, 59,7372, # 3526 - 585, 601,4078, 497,3419,1112,1314,4321,1801,7373,1223,1472,2174,7374, 749,1836, # 3542 - 690,1899,3745,1772,3885,1476, 429,1043,1790,2232,2116, 917,4079, 447,1086,1629, # 3558 -7375, 556,7376,7377,2020,1654, 844,1090, 105, 550, 966,1758,2815,1008,1782, 686, # 3574 -1095,7378,2282, 793,1602,7379,3518,2593,4322,4080,2933,2297,4323,3746, 980,2496, # 3590 - 544, 353, 527,4324, 908,2678,2899,7380, 381,2619,1942,1348,7381,1341,1252, 560, # 3606 -3072,7382,3420,2856,7383,2053, 973, 886,2080, 143,4325,7384,7385, 157,3886, 496, # 3622 -4081, 57, 840, 540,2038,4326,4327,3421,2117,1445, 970,2259,1748,1965,2081,4082, # 3638 -3119,1234,1775,3251,2816,3629, 773,1206,2129,1066,2039,1326,3887,1738,1725,4083, # 3654 - 279,3120, 51,1544,2594, 423,1578,2130,2066, 173,4328,1879,7386,7387,1583, 264, # 3670 - 610,3630,4329,2439, 280, 154,7388,7389,7390,1739, 338,1282,3073, 693,2857,1411, # 3686 -1074,3747,2440,7391,4330,7392,7393,1240, 952,2394,7394,2900,1538,2679, 685,1483, # 3702 -4084,2468,1436, 953,4085,2054,4331, 671,2395, 79,4086,2441,3252, 608, 567,2680, # 3718 -3422,4087,4088,1691, 393,1261,1791,2396,7395,4332,7396,7397,7398,7399,1383,1672, # 3734 -3748,3182,1464, 522,1119, 661,1150, 216, 675,4333,3888,1432,3519, 609,4334,2681, # 3750 -2397,7400,7401,7402,4089,3025, 0,7403,2469, 315, 231,2442, 301,3319,4335,2380, # 3766 -7404, 233,4090,3631,1818,4336,4337,7405, 96,1776,1315,2082,7406, 257,7407,1809, # 3782 -3632,2709,1139,1819,4091,2021,1124,2163,2778,1777,2649,7408,3074, 363,1655,3183, # 3798 -7409,2975,7410,7411,7412,3889,1567,3890, 718, 103,3184, 849,1443, 341,3320,2934, # 3814 -1484,7413,1712, 127, 67, 339,4092,2398, 679,1412, 821,7414,7415, 834, 738, 351, # 3830 -2976,2146, 846, 235,1497,1880, 418,1992,3749,2710, 186,1100,2147,2746,3520,1545, # 3846 -1355,2935,2858,1377, 583,3891,4093,2573,2977,7416,1298,3633,1078,2549,3634,2358, # 3862 - 78,3750,3751, 267,1289,2099,2001,1594,4094, 348, 369,1274,2194,2175,1837,4338, # 3878 -1820,2817,3635,2747,2283,2002,4339,2936,2748, 144,3321, 882,4340,3892,2749,3423, # 3894 -4341,2901,7417,4095,1726, 320,7418,3893,3026, 788,2978,7419,2818,1773,1327,2859, # 3910 -3894,2819,7420,1306,4342,2003,1700,3752,3521,2359,2650, 787,2022, 506, 824,3636, # 3926 - 534, 323,4343,1044,3322,2023,1900, 946,3424,7421,1778,1500,1678,7422,1881,4344, # 3942 - 165, 243,4345,3637,2521, 123, 683,4096, 764,4346, 36,3895,1792, 589,2902, 816, # 3958 - 626,1667,3027,2233,1639,1555,1622,3753,3896,7423,3897,2860,1370,1228,1932, 891, # 3974 -2083,2903, 304,4097,7424, 292,2979,2711,3522, 691,2100,4098,1115,4347, 118, 662, # 3990 -7425, 611,1156, 854,2381,1316,2861, 2, 386, 515,2904,7426,7427,3253, 868,2234, # 4006 -1486, 855,2651, 785,2212,3028,7428,1040,3185,3523,7429,3121, 448,7430,1525,7431, # 4022 -2164,4348,7432,3754,7433,4099,2820,3524,3122, 503, 818,3898,3123,1568, 814, 676, # 4038 -1444, 306,1749,7434,3755,1416,1030, 197,1428, 805,2821,1501,4349,7435,7436,7437, # 4054 -1993,7438,4350,7439,7440,2195, 13,2779,3638,2980,3124,1229,1916,7441,3756,2131, # 4070 -7442,4100,4351,2399,3525,7443,2213,1511,1727,1120,7444,7445, 646,3757,2443, 307, # 4086 -7446,7447,1595,3186,7448,7449,7450,3639,1113,1356,3899,1465,2522,2523,7451, 519, # 4102 -7452, 128,2132, 92,2284,1979,7453,3900,1512, 342,3125,2196,7454,2780,2214,1980, # 4118 -3323,7455, 290,1656,1317, 789, 827,2360,7456,3758,4352, 562, 581,3901,7457, 401, # 4134 -4353,2248, 94,4354,1399,2781,7458,1463,2024,4355,3187,1943,7459, 828,1105,4101, # 4150 -1262,1394,7460,4102, 605,4356,7461,1783,2862,7462,2822, 819,2101, 578,2197,2937, # 4166 -7463,1502, 436,3254,4103,3255,2823,3902,2905,3425,3426,7464,2712,2315,7465,7466, # 4182 -2332,2067, 23,4357, 193, 826,3759,2102, 699,1630,4104,3075, 390,1793,1064,3526, # 4198 -7467,1579,3076,3077,1400,7468,4105,1838,1640,2863,7469,4358,4359, 137,4106, 598, # 4214 -3078,1966, 780, 104, 974,2938,7470, 278, 899, 253, 402, 572, 504, 493,1339,7471, # 4230 -3903,1275,4360,2574,2550,7472,3640,3029,3079,2249, 565,1334,2713, 863, 41,7473, # 4246 -7474,4361,7475,1657,2333, 19, 463,2750,4107, 606,7476,2981,3256,1087,2084,1323, # 4262 -2652,2982,7477,1631,1623,1750,4108,2682,7478,2864, 791,2714,2653,2334, 232,2416, # 4278 -7479,2983,1498,7480,2654,2620, 755,1366,3641,3257,3126,2025,1609, 119,1917,3427, # 4294 - 862,1026,4109,7481,3904,3760,4362,3905,4363,2260,1951,2470,7482,1125, 817,4110, # 4310 -4111,3906,1513,1766,2040,1487,4112,3030,3258,2824,3761,3127,7483,7484,1507,7485, # 4326 -2683, 733, 40,1632,1106,2865, 345,4113, 841,2524, 230,4364,2984,1846,3259,3428, # 4342 -7486,1263, 986,3429,7487, 735, 879, 254,1137, 857, 622,1300,1180,1388,1562,3907, # 4358 -3908,2939, 967,2751,2655,1349, 592,2133,1692,3324,2985,1994,4114,1679,3909,1901, # 4374 -2185,7488, 739,3642,2715,1296,1290,7489,4115,2198,2199,1921,1563,2595,2551,1870, # 4390 -2752,2986,7490, 435,7491, 343,1108, 596, 17,1751,4365,2235,3430,3643,7492,4366, # 4406 - 294,3527,2940,1693, 477, 979, 281,2041,3528, 643,2042,3644,2621,2782,2261,1031, # 4422 -2335,2134,2298,3529,4367, 367,1249,2552,7493,3530,7494,4368,1283,3325,2004, 240, # 4438 -1762,3326,4369,4370, 836,1069,3128, 474,7495,2148,2525, 268,3531,7496,3188,1521, # 4454 -1284,7497,1658,1546,4116,7498,3532,3533,7499,4117,3327,2684,1685,4118, 961,1673, # 4470 -2622, 190,2005,2200,3762,4371,4372,7500, 570,2497,3645,1490,7501,4373,2623,3260, # 4486 -1956,4374, 584,1514, 396,1045,1944,7502,4375,1967,2444,7503,7504,4376,3910, 619, # 4502 -7505,3129,3261, 215,2006,2783,2553,3189,4377,3190,4378, 763,4119,3763,4379,7506, # 4518 -7507,1957,1767,2941,3328,3646,1174, 452,1477,4380,3329,3130,7508,2825,1253,2382, # 4534 -2186,1091,2285,4120, 492,7509, 638,1169,1824,2135,1752,3911, 648, 926,1021,1324, # 4550 -4381, 520,4382, 997, 847,1007, 892,4383,3764,2262,1871,3647,7510,2400,1784,4384, # 4566 -1952,2942,3080,3191,1728,4121,2043,3648,4385,2007,1701,3131,1551, 30,2263,4122, # 4582 -7511,2026,4386,3534,7512, 501,7513,4123, 594,3431,2165,1821,3535,3432,3536,3192, # 4598 - 829,2826,4124,7514,1680,3132,1225,4125,7515,3262,4387,4126,3133,2336,7516,4388, # 4614 -4127,7517,3912,3913,7518,1847,2383,2596,3330,7519,4389, 374,3914, 652,4128,4129, # 4630 - 375,1140, 798,7520,7521,7522,2361,4390,2264, 546,1659, 138,3031,2445,4391,7523, # 4646 -2250, 612,1848, 910, 796,3765,1740,1371, 825,3766,3767,7524,2906,2554,7525, 692, # 4662 - 444,3032,2624, 801,4392,4130,7526,1491, 244,1053,3033,4131,4132, 340,7527,3915, # 4678 -1041,2987, 293,1168, 87,1357,7528,1539, 959,7529,2236, 721, 694,4133,3768, 219, # 4694 -1478, 644,1417,3331,2656,1413,1401,1335,1389,3916,7530,7531,2988,2362,3134,1825, # 4710 - 730,1515, 184,2827, 66,4393,7532,1660,2943, 246,3332, 378,1457, 226,3433, 975, # 4726 -3917,2944,1264,3537, 674, 696,7533, 163,7534,1141,2417,2166, 713,3538,3333,4394, # 4742 -3918,7535,7536,1186, 15,7537,1079,1070,7538,1522,3193,3539, 276,1050,2716, 758, # 4758 -1126, 653,2945,3263,7539,2337, 889,3540,3919,3081,2989, 903,1250,4395,3920,3434, # 4774 -3541,1342,1681,1718, 766,3264, 286, 89,2946,3649,7540,1713,7541,2597,3334,2990, # 4790 -7542,2947,2215,3194,2866,7543,4396,2498,2526, 181, 387,1075,3921, 731,2187,3335, # 4806 -7544,3265, 310, 313,3435,2299, 770,4134, 54,3034, 189,4397,3082,3769,3922,7545, # 4822 -1230,1617,1849, 355,3542,4135,4398,3336, 111,4136,3650,1350,3135,3436,3035,4137, # 4838 -2149,3266,3543,7546,2784,3923,3924,2991, 722,2008,7547,1071, 247,1207,2338,2471, # 4854 -1378,4399,2009, 864,1437,1214,4400, 373,3770,1142,2216, 667,4401, 442,2753,2555, # 4870 -3771,3925,1968,4138,3267,1839, 837, 170,1107, 934,1336,1882,7548,7549,2118,4139, # 4886 -2828, 743,1569,7550,4402,4140, 582,2384,1418,3437,7551,1802,7552, 357,1395,1729, # 4902 -3651,3268,2418,1564,2237,7553,3083,3772,1633,4403,1114,2085,4141,1532,7554, 482, # 4918 -2446,4404,7555,7556,1492, 833,1466,7557,2717,3544,1641,2829,7558,1526,1272,3652, # 4934 -4142,1686,1794, 416,2556,1902,1953,1803,7559,3773,2785,3774,1159,2316,7560,2867, # 4950 -4405,1610,1584,3036,2419,2754, 443,3269,1163,3136,7561,7562,3926,7563,4143,2499, # 4966 -3037,4406,3927,3137,2103,1647,3545,2010,1872,4144,7564,4145, 431,3438,7565, 250, # 4982 - 97, 81,4146,7566,1648,1850,1558, 160, 848,7567, 866, 740,1694,7568,2201,2830, # 4998 -3195,4147,4407,3653,1687, 950,2472, 426, 469,3196,3654,3655,3928,7569,7570,1188, # 5014 - 424,1995, 861,3546,4148,3775,2202,2685, 168,1235,3547,4149,7571,2086,1674,4408, # 5030 -3337,3270, 220,2557,1009,7572,3776, 670,2992, 332,1208, 717,7573,7574,3548,2447, # 5046 -3929,3338,7575, 513,7576,1209,2868,3339,3138,4409,1080,7577,7578,7579,7580,2527, # 5062 -3656,3549, 815,1587,3930,3931,7581,3550,3439,3777,1254,4410,1328,3038,1390,3932, # 5078 -1741,3933,3778,3934,7582, 236,3779,2448,3271,7583,7584,3657,3780,1273,3781,4411, # 5094 -7585, 308,7586,4412, 245,4413,1851,2473,1307,2575, 430, 715,2136,2449,7587, 270, # 5110 - 199,2869,3935,7588,3551,2718,1753, 761,1754, 725,1661,1840,4414,3440,3658,7589, # 5126 -7590, 587, 14,3272, 227,2598, 326, 480,2265, 943,2755,3552, 291, 650,1883,7591, # 5142 -1702,1226, 102,1547, 62,3441, 904,4415,3442,1164,4150,7592,7593,1224,1548,2756, # 5158 - 391, 498,1493,7594,1386,1419,7595,2055,1177,4416, 813, 880,1081,2363, 566,1145, # 5174 -4417,2286,1001,1035,2558,2599,2238, 394,1286,7596,7597,2068,7598, 86,1494,1730, # 5190 -3936, 491,1588, 745, 897,2948, 843,3340,3937,2757,2870,3273,1768, 998,2217,2069, # 5206 - 397,1826,1195,1969,3659,2993,3341, 284,7599,3782,2500,2137,2119,1903,7600,3938, # 5222 -2150,3939,4151,1036,3443,1904, 114,2559,4152, 209,1527,7601,7602,2949,2831,2625, # 5238 -2385,2719,3139, 812,2560,7603,3274,7604,1559, 737,1884,3660,1210, 885, 28,2686, # 5254 -3553,3783,7605,4153,1004,1779,4418,7606, 346,1981,2218,2687,4419,3784,1742, 797, # 5270 -1642,3940,1933,1072,1384,2151, 896,3941,3275,3661,3197,2871,3554,7607,2561,1958, # 5286 -4420,2450,1785,7608,7609,7610,3942,4154,1005,1308,3662,4155,2720,4421,4422,1528, # 5302 -2600, 161,1178,4156,1982, 987,4423,1101,4157, 631,3943,1157,3198,2420,1343,1241, # 5318 -1016,2239,2562, 372, 877,2339,2501,1160, 555,1934, 911,3944,7611, 466,1170, 169, # 5334 -1051,2907,2688,3663,2474,2994,1182,2011,2563,1251,2626,7612, 992,2340,3444,1540, # 5350 -2721,1201,2070,2401,1996,2475,7613,4424, 528,1922,2188,1503,1873,1570,2364,3342, # 5366 -3276,7614, 557,1073,7615,1827,3445,2087,2266,3140,3039,3084, 767,3085,2786,4425, # 5382 -1006,4158,4426,2341,1267,2176,3664,3199, 778,3945,3200,2722,1597,2657,7616,4427, # 5398 -7617,3446,7618,7619,7620,3277,2689,1433,3278, 131, 95,1504,3946, 723,4159,3141, # 5414 -1841,3555,2758,2189,3947,2027,2104,3665,7621,2995,3948,1218,7622,3343,3201,3949, # 5430 -4160,2576, 248,1634,3785, 912,7623,2832,3666,3040,3786, 654, 53,7624,2996,7625, # 5446 -1688,4428, 777,3447,1032,3950,1425,7626, 191, 820,2120,2833, 971,4429, 931,3202, # 5462 - 135, 664, 783,3787,1997, 772,2908,1935,3951,3788,4430,2909,3203, 282,2723, 640, # 5478 -1372,3448,1127, 922, 325,3344,7627,7628, 711,2044,7629,7630,3952,2219,2787,1936, # 5494 -3953,3345,2220,2251,3789,2300,7631,4431,3790,1258,3279,3954,3204,2138,2950,3955, # 5510 -3956,7632,2221, 258,3205,4432, 101,1227,7633,3280,1755,7634,1391,3281,7635,2910, # 5526 -2056, 893,7636,7637,7638,1402,4161,2342,7639,7640,3206,3556,7641,7642, 878,1325, # 5542 -1780,2788,4433, 259,1385,2577, 744,1183,2267,4434,7643,3957,2502,7644, 684,1024, # 5558 -4162,7645, 472,3557,3449,1165,3282,3958,3959, 322,2152, 881, 455,1695,1152,1340, # 5574 - 660, 554,2153,4435,1058,4436,4163, 830,1065,3346,3960,4437,1923,7646,1703,1918, # 5590 -7647, 932,2268, 122,7648,4438, 947, 677,7649,3791,2627, 297,1905,1924,2269,4439, # 5606 -2317,3283,7650,7651,4164,7652,4165, 84,4166, 112, 989,7653, 547,1059,3961, 701, # 5622 -3558,1019,7654,4167,7655,3450, 942, 639, 457,2301,2451, 993,2951, 407, 851, 494, # 5638 -4440,3347, 927,7656,1237,7657,2421,3348, 573,4168, 680, 921,2911,1279,1874, 285, # 5654 - 790,1448,1983, 719,2167,7658,7659,4441,3962,3963,1649,7660,1541, 563,7661,1077, # 5670 -7662,3349,3041,3451, 511,2997,3964,3965,3667,3966,1268,2564,3350,3207,4442,4443, # 5686 -7663, 535,1048,1276,1189,2912,2028,3142,1438,1373,2834,2952,1134,2012,7664,4169, # 5702 -1238,2578,3086,1259,7665, 700,7666,2953,3143,3668,4170,7667,4171,1146,1875,1906, # 5718 -4444,2601,3967, 781,2422, 132,1589, 203, 147, 273,2789,2402, 898,1786,2154,3968, # 5734 -3969,7668,3792,2790,7669,7670,4445,4446,7671,3208,7672,1635,3793, 965,7673,1804, # 5750 -2690,1516,3559,1121,1082,1329,3284,3970,1449,3794, 65,1128,2835,2913,2759,1590, # 5766 -3795,7674,7675, 12,2658, 45, 976,2579,3144,4447, 517,2528,1013,1037,3209,7676, # 5782 -3796,2836,7677,3797,7678,3452,7679,2602, 614,1998,2318,3798,3087,2724,2628,7680, # 5798 -2580,4172, 599,1269,7681,1810,3669,7682,2691,3088, 759,1060, 489,1805,3351,3285, # 5814 -1358,7683,7684,2386,1387,1215,2629,2252, 490,7685,7686,4173,1759,2387,2343,7687, # 5830 -4448,3799,1907,3971,2630,1806,3210,4449,3453,3286,2760,2344, 874,7688,7689,3454, # 5846 -3670,1858, 91,2914,3671,3042,3800,4450,7690,3145,3972,2659,7691,3455,1202,1403, # 5862 -3801,2954,2529,1517,2503,4451,3456,2504,7692,4452,7693,2692,1885,1495,1731,3973, # 5878 -2365,4453,7694,2029,7695,7696,3974,2693,1216, 237,2581,4174,2319,3975,3802,4454, # 5894 -4455,2694,3560,3457, 445,4456,7697,7698,7699,7700,2761, 61,3976,3672,1822,3977, # 5910 -7701, 687,2045, 935, 925, 405,2660, 703,1096,1859,2725,4457,3978,1876,1367,2695, # 5926 -3352, 918,2105,1781,2476, 334,3287,1611,1093,4458, 564,3146,3458,3673,3353, 945, # 5942 -2631,2057,4459,7702,1925, 872,4175,7703,3459,2696,3089, 349,4176,3674,3979,4460, # 5958 -3803,4177,3675,2155,3980,4461,4462,4178,4463,2403,2046, 782,3981, 400, 251,4179, # 5974 -1624,7704,7705, 277,3676, 299,1265, 476,1191,3804,2121,4180,4181,1109, 205,7706, # 5990 -2582,1000,2156,3561,1860,7707,7708,7709,4464,7710,4465,2565, 107,2477,2157,3982, # 6006 -3460,3147,7711,1533, 541,1301, 158, 753,4182,2872,3562,7712,1696, 370,1088,4183, # 6022 -4466,3563, 579, 327, 440, 162,2240, 269,1937,1374,3461, 968,3043, 56,1396,3090, # 6038 -2106,3288,3354,7713,1926,2158,4467,2998,7714,3564,7715,7716,3677,4468,2478,7717, # 6054 -2791,7718,1650,4469,7719,2603,7720,7721,3983,2661,3355,1149,3356,3984,3805,3985, # 6070 -7722,1076, 49,7723, 951,3211,3289,3290, 450,2837, 920,7724,1811,2792,2366,4184, # 6086 -1908,1138,2367,3806,3462,7725,3212,4470,1909,1147,1518,2423,4471,3807,7726,4472, # 6102 -2388,2604, 260,1795,3213,7727,7728,3808,3291, 708,7729,3565,1704,7730,3566,1351, # 6118 -1618,3357,2999,1886, 944,4185,3358,4186,3044,3359,4187,7731,3678, 422, 413,1714, # 6134 -3292, 500,2058,2345,4188,2479,7732,1344,1910, 954,7733,1668,7734,7735,3986,2404, # 6150 -4189,3567,3809,4190,7736,2302,1318,2505,3091, 133,3092,2873,4473, 629, 31,2838, # 6166 -2697,3810,4474, 850, 949,4475,3987,2955,1732,2088,4191,1496,1852,7737,3988, 620, # 6182 -3214, 981,1242,3679,3360,1619,3680,1643,3293,2139,2452,1970,1719,3463,2168,7738, # 6198 -3215,7739,7740,3361,1828,7741,1277,4476,1565,2047,7742,1636,3568,3093,7743, 869, # 6214 -2839, 655,3811,3812,3094,3989,3000,3813,1310,3569,4477,7744,7745,7746,1733, 558, # 6230 -4478,3681, 335,1549,3045,1756,4192,3682,1945,3464,1829,1291,1192, 470,2726,2107, # 6246 -2793, 913,1054,3990,7747,1027,7748,3046,3991,4479, 982,2662,3362,3148,3465,3216, # 6262 -3217,1946,2794,7749, 571,4480,7750,1830,7751,3570,2583,1523,2424,7752,2089, 984, # 6278 -4481,3683,1959,7753,3684, 852, 923,2795,3466,3685, 969,1519, 999,2048,2320,1705, # 6294 -7754,3095, 615,1662, 151, 597,3992,2405,2321,1049, 275,4482,3686,4193, 568,3687, # 6310 -3571,2480,4194,3688,7755,2425,2270, 409,3218,7756,1566,2874,3467,1002, 769,2840, # 6326 - 194,2090,3149,3689,2222,3294,4195, 628,1505,7757,7758,1763,2177,3001,3993, 521, # 6342 -1161,2584,1787,2203,2406,4483,3994,1625,4196,4197, 412, 42,3096, 464,7759,2632, # 6358 -4484,3363,1760,1571,2875,3468,2530,1219,2204,3814,2633,2140,2368,4485,4486,3295, # 6374 -1651,3364,3572,7760,7761,3573,2481,3469,7762,3690,7763,7764,2271,2091, 460,7765, # 6390 -4487,7766,3002, 962, 588,3574, 289,3219,2634,1116, 52,7767,3047,1796,7768,7769, # 6406 -7770,1467,7771,1598,1143,3691,4198,1984,1734,1067,4488,1280,3365, 465,4489,1572, # 6422 - 510,7772,1927,2241,1812,1644,3575,7773,4490,3692,7774,7775,2663,1573,1534,7776, # 6438 -7777,4199, 536,1807,1761,3470,3815,3150,2635,7778,7779,7780,4491,3471,2915,1911, # 6454 -2796,7781,3296,1122, 377,3220,7782, 360,7783,7784,4200,1529, 551,7785,2059,3693, # 6470 -1769,2426,7786,2916,4201,3297,3097,2322,2108,2030,4492,1404, 136,1468,1479, 672, # 6486 -1171,3221,2303, 271,3151,7787,2762,7788,2049, 678,2727, 865,1947,4493,7789,2013, # 6502 -3995,2956,7790,2728,2223,1397,3048,3694,4494,4495,1735,2917,3366,3576,7791,3816, # 6518 - 509,2841,2453,2876,3817,7792,7793,3152,3153,4496,4202,2531,4497,2304,1166,1010, # 6534 - 552, 681,1887,7794,7795,2957,2958,3996,1287,1596,1861,3154, 358, 453, 736, 175, # 6550 - 478,1117, 905,1167,1097,7796,1853,1530,7797,1706,7798,2178,3472,2287,3695,3473, # 6566 -3577,4203,2092,4204,7799,3367,1193,2482,4205,1458,2190,2205,1862,1888,1421,3298, # 6582 -2918,3049,2179,3474, 595,2122,7800,3997,7801,7802,4206,1707,2636, 223,3696,1359, # 6598 - 751,3098, 183,3475,7803,2797,3003, 419,2369, 633, 704,3818,2389, 241,7804,7805, # 6614 -7806, 838,3004,3697,2272,2763,2454,3819,1938,2050,3998,1309,3099,2242,1181,7807, # 6630 -1136,2206,3820,2370,1446,4207,2305,4498,7808,7809,4208,1055,2605, 484,3698,7810, # 6646 -3999, 625,4209,2273,3368,1499,4210,4000,7811,4001,4211,3222,2274,2275,3476,7812, # 6662 -7813,2764, 808,2606,3699,3369,4002,4212,3100,2532, 526,3370,3821,4213, 955,7814, # 6678 -1620,4214,2637,2427,7815,1429,3700,1669,1831, 994, 928,7816,3578,1260,7817,7818, # 6694 -7819,1948,2288, 741,2919,1626,4215,2729,2455, 867,1184, 362,3371,1392,7820,7821, # 6710 -4003,4216,1770,1736,3223,2920,4499,4500,1928,2698,1459,1158,7822,3050,3372,2877, # 6726 -1292,1929,2506,2842,3701,1985,1187,2071,2014,2607,4217,7823,2566,2507,2169,3702, # 6742 -2483,3299,7824,3703,4501,7825,7826, 666,1003,3005,1022,3579,4218,7827,4502,1813, # 6758 -2253, 574,3822,1603, 295,1535, 705,3823,4219, 283, 858, 417,7828,7829,3224,4503, # 6774 -4504,3051,1220,1889,1046,2276,2456,4004,1393,1599, 689,2567, 388,4220,7830,2484, # 6790 - 802,7831,2798,3824,2060,1405,2254,7832,4505,3825,2109,1052,1345,3225,1585,7833, # 6806 - 809,7834,7835,7836, 575,2730,3477, 956,1552,1469,1144,2323,7837,2324,1560,2457, # 6822 -3580,3226,4005, 616,2207,3155,2180,2289,7838,1832,7839,3478,4506,7840,1319,3704, # 6838 -3705,1211,3581,1023,3227,1293,2799,7841,7842,7843,3826, 607,2306,3827, 762,2878, # 6854 -1439,4221,1360,7844,1485,3052,7845,4507,1038,4222,1450,2061,2638,4223,1379,4508, # 6870 -2585,7846,7847,4224,1352,1414,2325,2921,1172,7848,7849,3828,3829,7850,1797,1451, # 6886 -7851,7852,7853,7854,2922,4006,4007,2485,2346, 411,4008,4009,3582,3300,3101,4509, # 6902 -1561,2664,1452,4010,1375,7855,7856, 47,2959, 316,7857,1406,1591,2923,3156,7858, # 6918 -1025,2141,3102,3157, 354,2731, 884,2224,4225,2407, 508,3706, 726,3583, 996,2428, # 6934 -3584, 729,7859, 392,2191,1453,4011,4510,3707,7860,7861,2458,3585,2608,1675,2800, # 6950 - 919,2347,2960,2348,1270,4511,4012, 73,7862,7863, 647,7864,3228,2843,2255,1550, # 6966 -1346,3006,7865,1332, 883,3479,7866,7867,7868,7869,3301,2765,7870,1212, 831,1347, # 6982 -4226,4512,2326,3830,1863,3053, 720,3831,4513,4514,3832,7871,4227,7872,7873,4515, # 6998 -7874,7875,1798,4516,3708,2609,4517,3586,1645,2371,7876,7877,2924, 669,2208,2665, # 7014 -2429,7878,2879,7879,7880,1028,3229,7881,4228,2408,7882,2256,1353,7883,7884,4518, # 7030 -3158, 518,7885,4013,7886,4229,1960,7887,2142,4230,7888,7889,3007,2349,2350,3833, # 7046 - 516,1833,1454,4014,2699,4231,4519,2225,2610,1971,1129,3587,7890,2766,7891,2961, # 7062 -1422, 577,1470,3008,1524,3373,7892,7893, 432,4232,3054,3480,7894,2586,1455,2508, # 7078 -2226,1972,1175,7895,1020,2732,4015,3481,4520,7896,2733,7897,1743,1361,3055,3482, # 7094 -2639,4016,4233,4521,2290, 895, 924,4234,2170, 331,2243,3056, 166,1627,3057,1098, # 7110 -7898,1232,2880,2227,3374,4522, 657, 403,1196,2372, 542,3709,3375,1600,4235,3483, # 7126 -7899,4523,2767,3230, 576, 530,1362,7900,4524,2533,2666,3710,4017,7901, 842,3834, # 7142 -7902,2801,2031,1014,4018, 213,2700,3376, 665, 621,4236,7903,3711,2925,2430,7904, # 7158 -2431,3302,3588,3377,7905,4237,2534,4238,4525,3589,1682,4239,3484,1380,7906, 724, # 7174 -2277, 600,1670,7907,1337,1233,4526,3103,2244,7908,1621,4527,7909, 651,4240,7910, # 7190 -1612,4241,2611,7911,2844,7912,2734,2307,3058,7913, 716,2459,3059, 174,1255,2701, # 7206 -4019,3590, 548,1320,1398, 728,4020,1574,7914,1890,1197,3060,4021,7915,3061,3062, # 7222 -3712,3591,3713, 747,7916, 635,4242,4528,7917,7918,7919,4243,7920,7921,4529,7922, # 7238 -3378,4530,2432, 451,7923,3714,2535,2072,4244,2735,4245,4022,7924,1764,4531,7925, # 7254 -4246, 350,7926,2278,2390,2486,7927,4247,4023,2245,1434,4024, 488,4532, 458,4248, # 7270 -4025,3715, 771,1330,2391,3835,2568,3159,2159,2409,1553,2667,3160,4249,7928,2487, # 7286 -2881,2612,1720,2702,4250,3379,4533,7929,2536,4251,7930,3231,4252,2768,7931,2015, # 7302 -2736,7932,1155,1017,3716,3836,7933,3303,2308, 201,1864,4253,1430,7934,4026,7935, # 7318 -7936,7937,7938,7939,4254,1604,7940, 414,1865, 371,2587,4534,4535,3485,2016,3104, # 7334 -4536,1708, 960,4255, 887, 389,2171,1536,1663,1721,7941,2228,4027,2351,2926,1580, # 7350 -7942,7943,7944,1744,7945,2537,4537,4538,7946,4539,7947,2073,7948,7949,3592,3380, # 7366 -2882,4256,7950,4257,2640,3381,2802, 673,2703,2460, 709,3486,4028,3593,4258,7951, # 7382 -1148, 502, 634,7952,7953,1204,4540,3594,1575,4541,2613,3717,7954,3718,3105, 948, # 7398 -3232, 121,1745,3837,1110,7955,4259,3063,2509,3009,4029,3719,1151,1771,3838,1488, # 7414 -4030,1986,7956,2433,3487,7957,7958,2093,7959,4260,3839,1213,1407,2803, 531,2737, # 7430 -2538,3233,1011,1537,7960,2769,4261,3106,1061,7961,3720,3721,1866,2883,7962,2017, # 7446 - 120,4262,4263,2062,3595,3234,2309,3840,2668,3382,1954,4542,7963,7964,3488,1047, # 7462 -2704,1266,7965,1368,4543,2845, 649,3383,3841,2539,2738,1102,2846,2669,7966,7967, # 7478 -1999,7968,1111,3596,2962,7969,2488,3842,3597,2804,1854,3384,3722,7970,7971,3385, # 7494 -2410,2884,3304,3235,3598,7972,2569,7973,3599,2805,4031,1460, 856,7974,3600,7975, # 7510 -2885,2963,7976,2886,3843,7977,4264, 632,2510, 875,3844,1697,3845,2291,7978,7979, # 7526 -4544,3010,1239, 580,4545,4265,7980, 914, 936,2074,1190,4032,1039,2123,7981,7982, # 7542 -7983,3386,1473,7984,1354,4266,3846,7985,2172,3064,4033, 915,3305,4267,4268,3306, # 7558 -1605,1834,7986,2739, 398,3601,4269,3847,4034, 328,1912,2847,4035,3848,1331,4270, # 7574 -3011, 937,4271,7987,3602,4036,4037,3387,2160,4546,3388, 524, 742, 538,3065,1012, # 7590 -7988,7989,3849,2461,7990, 658,1103, 225,3850,7991,7992,4547,7993,4548,7994,3236, # 7606 -1243,7995,4038, 963,2246,4549,7996,2705,3603,3161,7997,7998,2588,2327,7999,4550, # 7622 -8000,8001,8002,3489,3307, 957,3389,2540,2032,1930,2927,2462, 870,2018,3604,1746, # 7638 -2770,2771,2434,2463,8003,3851,8004,3723,3107,3724,3490,3390,3725,8005,1179,3066, # 7654 -8006,3162,2373,4272,3726,2541,3163,3108,2740,4039,8007,3391,1556,2542,2292, 977, # 7670 -2887,2033,4040,1205,3392,8008,1765,3393,3164,2124,1271,1689, 714,4551,3491,8009, # 7686 -2328,3852, 533,4273,3605,2181, 617,8010,2464,3308,3492,2310,8011,8012,3165,8013, # 7702 -8014,3853,1987, 618, 427,2641,3493,3394,8015,8016,1244,1690,8017,2806,4274,4552, # 7718 -8018,3494,8019,8020,2279,1576, 473,3606,4275,3395, 972,8021,3607,8022,3067,8023, # 7734 -8024,4553,4554,8025,3727,4041,4042,8026, 153,4555, 356,8027,1891,2888,4276,2143, # 7750 - 408, 803,2352,8028,3854,8029,4277,1646,2570,2511,4556,4557,3855,8030,3856,4278, # 7766 -8031,2411,3396, 752,8032,8033,1961,2964,8034, 746,3012,2465,8035,4279,3728, 698, # 7782 -4558,1892,4280,3608,2543,4559,3609,3857,8036,3166,3397,8037,1823,1302,4043,2706, # 7798 -3858,1973,4281,8038,4282,3167, 823,1303,1288,1236,2848,3495,4044,3398, 774,3859, # 7814 -8039,1581,4560,1304,2849,3860,4561,8040,2435,2161,1083,3237,4283,4045,4284, 344, # 7830 -1173, 288,2311, 454,1683,8041,8042,1461,4562,4046,2589,8043,8044,4563, 985, 894, # 7846 -8045,3399,3168,8046,1913,2928,3729,1988,8047,2110,1974,8048,4047,8049,2571,1194, # 7862 - 425,8050,4564,3169,1245,3730,4285,8051,8052,2850,8053, 636,4565,1855,3861, 760, # 7878 -1799,8054,4286,2209,1508,4566,4048,1893,1684,2293,8055,8056,8057,4287,4288,2210, # 7894 - 479,8058,8059, 832,8060,4049,2489,8061,2965,2490,3731, 990,3109, 627,1814,2642, # 7910 -4289,1582,4290,2125,2111,3496,4567,8062, 799,4291,3170,8063,4568,2112,1737,3013, # 7926 -1018, 543, 754,4292,3309,1676,4569,4570,4050,8064,1489,8065,3497,8066,2614,2889, # 7942 -4051,8067,8068,2966,8069,8070,8071,8072,3171,4571,4572,2182,1722,8073,3238,3239, # 7958 -1842,3610,1715, 481, 365,1975,1856,8074,8075,1962,2491,4573,8076,2126,3611,3240, # 7974 - 433,1894,2063,2075,8077, 602,2741,8078,8079,8080,8081,8082,3014,1628,3400,8083, # 7990 -3172,4574,4052,2890,4575,2512,8084,2544,2772,8085,8086,8087,3310,4576,2891,8088, # 8006 -4577,8089,2851,4578,4579,1221,2967,4053,2513,8090,8091,8092,1867,1989,8093,8094, # 8022 -8095,1895,8096,8097,4580,1896,4054, 318,8098,2094,4055,4293,8099,8100, 485,8101, # 8038 - 938,3862, 553,2670, 116,8102,3863,3612,8103,3498,2671,2773,3401,3311,2807,8104, # 8054 -3613,2929,4056,1747,2930,2968,8105,8106, 207,8107,8108,2672,4581,2514,8109,3015, # 8070 - 890,3614,3864,8110,1877,3732,3402,8111,2183,2353,3403,1652,8112,8113,8114, 941, # 8086 -2294, 208,3499,4057,2019, 330,4294,3865,2892,2492,3733,4295,8115,8116,8117,8118, # 8102 -) - diff --git a/env/lib/python3.6/site-packages/chardet/euctwprober.py b/env/lib/python3.6/site-packages/chardet/euctwprober.py deleted file mode 100644 index 35669cc..0000000 --- a/env/lib/python3.6/site-packages/chardet/euctwprober.py +++ /dev/null @@ -1,46 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import EUCTWDistributionAnalysis -from .mbcssm import EUCTW_SM_MODEL - -class EUCTWProber(MultiByteCharSetProber): - def __init__(self): - super(EUCTWProber, self).__init__() - self.coding_sm = CodingStateMachine(EUCTW_SM_MODEL) - self.distribution_analyzer = EUCTWDistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "EUC-TW" - - @property - def language(self): - return "Taiwan" diff --git a/env/lib/python3.6/site-packages/chardet/gb2312freq.py b/env/lib/python3.6/site-packages/chardet/gb2312freq.py deleted file mode 100644 index 697837b..0000000 --- a/env/lib/python3.6/site-packages/chardet/gb2312freq.py +++ /dev/null @@ -1,283 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# GB2312 most frequently used character table -# -# Char to FreqOrder table , from hz6763 - -# 512 --> 0.79 -- 0.79 -# 1024 --> 0.92 -- 0.13 -# 2048 --> 0.98 -- 0.06 -# 6768 --> 1.00 -- 0.02 -# -# Ideal Distribution Ratio = 0.79135/(1-0.79135) = 3.79 -# Random Distribution Ration = 512 / (3755 - 512) = 0.157 -# -# Typical Distribution Ratio about 25% of Ideal one, still much higher that RDR - -GB2312_TYPICAL_DISTRIBUTION_RATIO = 0.9 - -GB2312_TABLE_SIZE = 3760 - -GB2312_CHAR_TO_FREQ_ORDER = ( -1671, 749,1443,2364,3924,3807,2330,3921,1704,3463,2691,1511,1515, 572,3191,2205, -2361, 224,2558, 479,1711, 963,3162, 440,4060,1905,2966,2947,3580,2647,3961,3842, -2204, 869,4207, 970,2678,5626,2944,2956,1479,4048, 514,3595, 588,1346,2820,3409, - 249,4088,1746,1873,2047,1774, 581,1813, 358,1174,3590,1014,1561,4844,2245, 670, -1636,3112, 889,1286, 953, 556,2327,3060,1290,3141, 613, 185,3477,1367, 850,3820, -1715,2428,2642,2303,2732,3041,2562,2648,3566,3946,1349, 388,3098,2091,1360,3585, - 152,1687,1539, 738,1559, 59,1232,2925,2267,1388,1249,1741,1679,2960, 151,1566, -1125,1352,4271, 924,4296, 385,3166,4459, 310,1245,2850, 70,3285,2729,3534,3575, -2398,3298,3466,1960,2265, 217,3647, 864,1909,2084,4401,2773,1010,3269,5152, 853, -3051,3121,1244,4251,1895, 364,1499,1540,2313,1180,3655,2268, 562, 715,2417,3061, - 544, 336,3768,2380,1752,4075, 950, 280,2425,4382, 183,2759,3272, 333,4297,2155, -1688,2356,1444,1039,4540, 736,1177,3349,2443,2368,2144,2225, 565, 196,1482,3406, - 927,1335,4147, 692, 878,1311,1653,3911,3622,1378,4200,1840,2969,3149,2126,1816, -2534,1546,2393,2760, 737,2494, 13, 447, 245,2747, 38,2765,2129,2589,1079, 606, - 360, 471,3755,2890, 404, 848, 699,1785,1236, 370,2221,1023,3746,2074,2026,2023, -2388,1581,2119, 812,1141,3091,2536,1519, 804,2053, 406,1596,1090, 784, 548,4414, -1806,2264,2936,1100, 343,4114,5096, 622,3358, 743,3668,1510,1626,5020,3567,2513, -3195,4115,5627,2489,2991, 24,2065,2697,1087,2719, 48,1634, 315, 68, 985,2052, - 198,2239,1347,1107,1439, 597,2366,2172, 871,3307, 919,2487,2790,1867, 236,2570, -1413,3794, 906,3365,3381,1701,1982,1818,1524,2924,1205, 616,2586,2072,2004, 575, - 253,3099, 32,1365,1182, 197,1714,2454,1201, 554,3388,3224,2748, 756,2587, 250, -2567,1507,1517,3529,1922,2761,2337,3416,1961,1677,2452,2238,3153, 615, 911,1506, -1474,2495,1265,1906,2749,3756,3280,2161, 898,2714,1759,3450,2243,2444, 563, 26, -3286,2266,3769,3344,2707,3677, 611,1402, 531,1028,2871,4548,1375, 261,2948, 835, -1190,4134, 353, 840,2684,1900,3082,1435,2109,1207,1674, 329,1872,2781,4055,2686, -2104, 608,3318,2423,2957,2768,1108,3739,3512,3271,3985,2203,1771,3520,1418,2054, -1681,1153, 225,1627,2929, 162,2050,2511,3687,1954, 124,1859,2431,1684,3032,2894, - 585,4805,3969,2869,2704,2088,2032,2095,3656,2635,4362,2209, 256, 518,2042,2105, -3777,3657, 643,2298,1148,1779, 190, 989,3544, 414, 11,2135,2063,2979,1471, 403, -3678, 126, 770,1563, 671,2499,3216,2877, 600,1179, 307,2805,4937,1268,1297,2694, - 252,4032,1448,1494,1331,1394, 127,2256, 222,1647,1035,1481,3056,1915,1048, 873, -3651, 210, 33,1608,2516, 200,1520, 415, 102, 0,3389,1287, 817, 91,3299,2940, - 836,1814, 549,2197,1396,1669,2987,3582,2297,2848,4528,1070, 687, 20,1819, 121, -1552,1364,1461,1968,2617,3540,2824,2083, 177, 948,4938,2291, 110,4549,2066, 648, -3359,1755,2110,2114,4642,4845,1693,3937,3308,1257,1869,2123, 208,1804,3159,2992, -2531,2549,3361,2418,1350,2347,2800,2568,1291,2036,2680, 72, 842,1990, 212,1233, -1154,1586, 75,2027,3410,4900,1823,1337,2710,2676, 728,2810,1522,3026,4995, 157, - 755,1050,4022, 710, 785,1936,2194,2085,1406,2777,2400, 150,1250,4049,1206, 807, -1910, 534, 529,3309,1721,1660, 274, 39,2827, 661,2670,1578, 925,3248,3815,1094, -4278,4901,4252, 41,1150,3747,2572,2227,4501,3658,4902,3813,3357,3617,2884,2258, - 887, 538,4187,3199,1294,2439,3042,2329,2343,2497,1255, 107, 543,1527, 521,3478, -3568, 194,5062, 15, 961,3870,1241,1192,2664, 66,5215,3260,2111,1295,1127,2152, -3805,4135, 901,1164,1976, 398,1278, 530,1460, 748, 904,1054,1966,1426, 53,2909, - 509, 523,2279,1534, 536,1019, 239,1685, 460,2353, 673,1065,2401,3600,4298,2272, -1272,2363, 284,1753,3679,4064,1695, 81, 815,2677,2757,2731,1386, 859, 500,4221, -2190,2566, 757,1006,2519,2068,1166,1455, 337,2654,3203,1863,1682,1914,3025,1252, -1409,1366, 847, 714,2834,2038,3209, 964,2970,1901, 885,2553,1078,1756,3049, 301, -1572,3326, 688,2130,1996,2429,1805,1648,2930,3421,2750,3652,3088, 262,1158,1254, - 389,1641,1812, 526,1719, 923,2073,1073,1902, 468, 489,4625,1140, 857,2375,3070, -3319,2863, 380, 116,1328,2693,1161,2244, 273,1212,1884,2769,3011,1775,1142, 461, -3066,1200,2147,2212, 790, 702,2695,4222,1601,1058, 434,2338,5153,3640, 67,2360, -4099,2502, 618,3472,1329, 416,1132, 830,2782,1807,2653,3211,3510,1662, 192,2124, - 296,3979,1739,1611,3684, 23, 118, 324, 446,1239,1225, 293,2520,3814,3795,2535, -3116, 17,1074, 467,2692,2201, 387,2922, 45,1326,3055,1645,3659,2817, 958, 243, -1903,2320,1339,2825,1784,3289, 356, 576, 865,2315,2381,3377,3916,1088,3122,1713, -1655, 935, 628,4689,1034,1327, 441, 800, 720, 894,1979,2183,1528,5289,2702,1071, -4046,3572,2399,1571,3281, 79, 761,1103, 327, 134, 758,1899,1371,1615, 879, 442, - 215,2605,2579, 173,2048,2485,1057,2975,3317,1097,2253,3801,4263,1403,1650,2946, - 814,4968,3487,1548,2644,1567,1285, 2, 295,2636, 97, 946,3576, 832, 141,4257, -3273, 760,3821,3521,3156,2607, 949,1024,1733,1516,1803,1920,2125,2283,2665,3180, -1501,2064,3560,2171,1592, 803,3518,1416, 732,3897,4258,1363,1362,2458, 119,1427, - 602,1525,2608,1605,1639,3175, 694,3064, 10, 465, 76,2000,4846,4208, 444,3781, -1619,3353,2206,1273,3796, 740,2483, 320,1723,2377,3660,2619,1359,1137,1762,1724, -2345,2842,1850,1862, 912, 821,1866, 612,2625,1735,2573,3369,1093, 844, 89, 937, - 930,1424,3564,2413,2972,1004,3046,3019,2011, 711,3171,1452,4178, 428, 801,1943, - 432, 445,2811, 206,4136,1472, 730, 349, 73, 397,2802,2547, 998,1637,1167, 789, - 396,3217, 154,1218, 716,1120,1780,2819,4826,1931,3334,3762,2139,1215,2627, 552, -3664,3628,3232,1405,2383,3111,1356,2652,3577,3320,3101,1703, 640,1045,1370,1246, -4996, 371,1575,2436,1621,2210, 984,4033,1734,2638, 16,4529, 663,2755,3255,1451, -3917,2257,1253,1955,2234,1263,2951, 214,1229, 617, 485, 359,1831,1969, 473,2310, - 750,2058, 165, 80,2864,2419, 361,4344,2416,2479,1134, 796,3726,1266,2943, 860, -2715, 938, 390,2734,1313,1384, 248, 202, 877,1064,2854, 522,3907, 279,1602, 297, -2357, 395,3740, 137,2075, 944,4089,2584,1267,3802, 62,1533,2285, 178, 176, 780, -2440, 201,3707, 590, 478,1560,4354,2117,1075, 30, 74,4643,4004,1635,1441,2745, - 776,2596, 238,1077,1692,1912,2844, 605, 499,1742,3947, 241,3053, 980,1749, 936, -2640,4511,2582, 515,1543,2162,5322,2892,2993, 890,2148,1924, 665,1827,3581,1032, - 968,3163, 339,1044,1896, 270, 583,1791,1720,4367,1194,3488,3669, 43,2523,1657, - 163,2167, 290,1209,1622,3378, 550, 634,2508,2510, 695,2634,2384,2512,1476,1414, - 220,1469,2341,2138,2852,3183,2900,4939,2865,3502,1211,3680, 854,3227,1299,2976, -3172, 186,2998,1459, 443,1067,3251,1495, 321,1932,3054, 909, 753,1410,1828, 436, -2441,1119,1587,3164,2186,1258, 227, 231,1425,1890,3200,3942, 247, 959, 725,5254, -2741, 577,2158,2079, 929, 120, 174, 838,2813, 591,1115, 417,2024, 40,3240,1536, -1037, 291,4151,2354, 632,1298,2406,2500,3535,1825,1846,3451, 205,1171, 345,4238, - 18,1163, 811, 685,2208,1217, 425,1312,1508,1175,4308,2552,1033, 587,1381,3059, -2984,3482, 340,1316,4023,3972, 792,3176, 519, 777,4690, 918, 933,4130,2981,3741, - 90,3360,2911,2200,5184,4550, 609,3079,2030, 272,3379,2736, 363,3881,1130,1447, - 286, 779, 357,1169,3350,3137,1630,1220,2687,2391, 747,1277,3688,2618,2682,2601, -1156,3196,5290,4034,3102,1689,3596,3128, 874, 219,2783, 798, 508,1843,2461, 269, -1658,1776,1392,1913,2983,3287,2866,2159,2372, 829,4076, 46,4253,2873,1889,1894, - 915,1834,1631,2181,2318, 298, 664,2818,3555,2735, 954,3228,3117, 527,3511,2173, - 681,2712,3033,2247,2346,3467,1652, 155,2164,3382, 113,1994, 450, 899, 494, 994, -1237,2958,1875,2336,1926,3727, 545,1577,1550, 633,3473, 204,1305,3072,2410,1956, -2471, 707,2134, 841,2195,2196,2663,3843,1026,4940, 990,3252,4997, 368,1092, 437, -3212,3258,1933,1829, 675,2977,2893, 412, 943,3723,4644,3294,3283,2230,2373,5154, -2389,2241,2661,2323,1404,2524, 593, 787, 677,3008,1275,2059, 438,2709,2609,2240, -2269,2246,1446, 36,1568,1373,3892,1574,2301,1456,3962, 693,2276,5216,2035,1143, -2720,1919,1797,1811,2763,4137,2597,1830,1699,1488,1198,2090, 424,1694, 312,3634, -3390,4179,3335,2252,1214, 561,1059,3243,2295,2561, 975,5155,2321,2751,3772, 472, -1537,3282,3398,1047,2077,2348,2878,1323,3340,3076, 690,2906, 51, 369, 170,3541, -1060,2187,2688,3670,2541,1083,1683, 928,3918, 459, 109,4427, 599,3744,4286, 143, -2101,2730,2490, 82,1588,3036,2121, 281,1860, 477,4035,1238,2812,3020,2716,3312, -1530,2188,2055,1317, 843, 636,1808,1173,3495, 649, 181,1002, 147,3641,1159,2414, -3750,2289,2795, 813,3123,2610,1136,4368, 5,3391,4541,2174, 420, 429,1728, 754, -1228,2115,2219, 347,2223,2733, 735,1518,3003,2355,3134,1764,3948,3329,1888,2424, -1001,1234,1972,3321,3363,1672,1021,1450,1584, 226, 765, 655,2526,3404,3244,2302, -3665, 731, 594,2184, 319,1576, 621, 658,2656,4299,2099,3864,1279,2071,2598,2739, - 795,3086,3699,3908,1707,2352,2402,1382,3136,2475,1465,4847,3496,3865,1085,3004, -2591,1084, 213,2287,1963,3565,2250, 822, 793,4574,3187,1772,1789,3050, 595,1484, -1959,2770,1080,2650, 456, 422,2996, 940,3322,4328,4345,3092,2742, 965,2784, 739, -4124, 952,1358,2498,2949,2565, 332,2698,2378, 660,2260,2473,4194,3856,2919, 535, -1260,2651,1208,1428,1300,1949,1303,2942, 433,2455,2450,1251,1946, 614,1269, 641, -1306,1810,2737,3078,2912, 564,2365,1419,1415,1497,4460,2367,2185,1379,3005,1307, -3218,2175,1897,3063, 682,1157,4040,4005,1712,1160,1941,1399, 394, 402,2952,1573, -1151,2986,2404, 862, 299,2033,1489,3006, 346, 171,2886,3401,1726,2932, 168,2533, - 47,2507,1030,3735,1145,3370,1395,1318,1579,3609,4560,2857,4116,1457,2529,1965, - 504,1036,2690,2988,2405, 745,5871, 849,2397,2056,3081, 863,2359,3857,2096, 99, -1397,1769,2300,4428,1643,3455,1978,1757,3718,1440, 35,4879,3742,1296,4228,2280, - 160,5063,1599,2013, 166, 520,3479,1646,3345,3012, 490,1937,1545,1264,2182,2505, -1096,1188,1369,1436,2421,1667,2792,2460,1270,2122, 727,3167,2143, 806,1706,1012, -1800,3037, 960,2218,1882, 805, 139,2456,1139,1521, 851,1052,3093,3089, 342,2039, - 744,5097,1468,1502,1585,2087, 223, 939, 326,2140,2577, 892,2481,1623,4077, 982, -3708, 135,2131, 87,2503,3114,2326,1106, 876,1616, 547,2997,2831,2093,3441,4530, -4314, 9,3256,4229,4148, 659,1462,1986,1710,2046,2913,2231,4090,4880,5255,3392, -3274,1368,3689,4645,1477, 705,3384,3635,1068,1529,2941,1458,3782,1509, 100,1656, -2548, 718,2339, 408,1590,2780,3548,1838,4117,3719,1345,3530, 717,3442,2778,3220, -2898,1892,4590,3614,3371,2043,1998,1224,3483, 891, 635, 584,2559,3355, 733,1766, -1729,1172,3789,1891,2307, 781,2982,2271,1957,1580,5773,2633,2005,4195,3097,1535, -3213,1189,1934,5693,3262, 586,3118,1324,1598, 517,1564,2217,1868,1893,4445,3728, -2703,3139,1526,1787,1992,3882,2875,1549,1199,1056,2224,1904,2711,5098,4287, 338, -1993,3129,3489,2689,1809,2815,1997, 957,1855,3898,2550,3275,3057,1105,1319, 627, -1505,1911,1883,3526, 698,3629,3456,1833,1431, 746, 77,1261,2017,2296,1977,1885, - 125,1334,1600, 525,1798,1109,2222,1470,1945, 559,2236,1186,3443,2476,1929,1411, -2411,3135,1777,3372,2621,1841,1613,3229, 668,1430,1839,2643,2916, 195,1989,2671, -2358,1387, 629,3205,2293,5256,4439, 123,1310, 888,1879,4300,3021,3605,1003,1162, -3192,2910,2010, 140,2395,2859, 55,1082,2012,2901, 662, 419,2081,1438, 680,2774, -4654,3912,1620,1731,1625,5035,4065,2328, 512,1344, 802,5443,2163,2311,2537, 524, -3399, 98,1155,2103,1918,2606,3925,2816,1393,2465,1504,3773,2177,3963,1478,4346, - 180,1113,4655,3461,2028,1698, 833,2696,1235,1322,1594,4408,3623,3013,3225,2040, -3022, 541,2881, 607,3632,2029,1665,1219, 639,1385,1686,1099,2803,3231,1938,3188, -2858, 427, 676,2772,1168,2025, 454,3253,2486,3556, 230,1950, 580, 791,1991,1280, -1086,1974,2034, 630, 257,3338,2788,4903,1017, 86,4790, 966,2789,1995,1696,1131, - 259,3095,4188,1308, 179,1463,5257, 289,4107,1248, 42,3413,1725,2288, 896,1947, - 774,4474,4254, 604,3430,4264, 392,2514,2588, 452, 237,1408,3018, 988,4531,1970, -3034,3310, 540,2370,1562,1288,2990, 502,4765,1147, 4,1853,2708, 207, 294,2814, -4078,2902,2509, 684, 34,3105,3532,2551, 644, 709,2801,2344, 573,1727,3573,3557, -2021,1081,3100,4315,2100,3681, 199,2263,1837,2385, 146,3484,1195,2776,3949, 997, -1939,3973,1008,1091,1202,1962,1847,1149,4209,5444,1076, 493, 117,5400,2521, 972, -1490,2934,1796,4542,2374,1512,2933,2657, 413,2888,1135,2762,2314,2156,1355,2369, - 766,2007,2527,2170,3124,2491,2593,2632,4757,2437, 234,3125,3591,1898,1750,1376, -1942,3468,3138, 570,2127,2145,3276,4131, 962, 132,1445,4196, 19, 941,3624,3480, -3366,1973,1374,4461,3431,2629, 283,2415,2275, 808,2887,3620,2112,2563,1353,3610, - 955,1089,3103,1053, 96, 88,4097, 823,3808,1583, 399, 292,4091,3313, 421,1128, - 642,4006, 903,2539,1877,2082, 596, 29,4066,1790, 722,2157, 130, 995,1569, 769, -1485, 464, 513,2213, 288,1923,1101,2453,4316, 133, 486,2445, 50, 625, 487,2207, - 57, 423, 481,2962, 159,3729,1558, 491, 303, 482, 501, 240,2837, 112,3648,2392, -1783, 362, 8,3433,3422, 610,2793,3277,1390,1284,1654, 21,3823, 734, 367, 623, - 193, 287, 374,1009,1483, 816, 476, 313,2255,2340,1262,2150,2899,1146,2581, 782, -2116,1659,2018,1880, 255,3586,3314,1110,2867,2137,2564, 986,2767,5185,2006, 650, - 158, 926, 762, 881,3157,2717,2362,3587, 306,3690,3245,1542,3077,2427,1691,2478, -2118,2985,3490,2438, 539,2305, 983, 129,1754, 355,4201,2386, 827,2923, 104,1773, -2838,2771, 411,2905,3919, 376, 767, 122,1114, 828,2422,1817,3506, 266,3460,1007, -1609,4998, 945,2612,4429,2274, 726,1247,1964,2914,2199,2070,4002,4108, 657,3323, -1422, 579, 455,2764,4737,1222,2895,1670, 824,1223,1487,2525, 558, 861,3080, 598, -2659,2515,1967, 752,2583,2376,2214,4180, 977, 704,2464,4999,2622,4109,1210,2961, - 819,1541, 142,2284, 44, 418, 457,1126,3730,4347,4626,1644,1876,3671,1864, 302, -1063,5694, 624, 723,1984,3745,1314,1676,2488,1610,1449,3558,3569,2166,2098, 409, -1011,2325,3704,2306, 818,1732,1383,1824,1844,3757, 999,2705,3497,1216,1423,2683, -2426,2954,2501,2726,2229,1475,2554,5064,1971,1794,1666,2014,1343, 783, 724, 191, -2434,1354,2220,5065,1763,2752,2472,4152, 131, 175,2885,3434, 92,1466,4920,2616, -3871,3872,3866, 128,1551,1632, 669,1854,3682,4691,4125,1230, 188,2973,3290,1302, -1213, 560,3266, 917, 763,3909,3249,1760, 868,1958, 764,1782,2097, 145,2277,3774, -4462, 64,1491,3062, 971,2132,3606,2442, 221,1226,1617, 218, 323,1185,3207,3147, - 571, 619,1473,1005,1744,2281, 449,1887,2396,3685, 275, 375,3816,1743,3844,3731, - 845,1983,2350,4210,1377, 773, 967,3499,3052,3743,2725,4007,1697,1022,3943,1464, -3264,2855,2722,1952,1029,2839,2467, 84,4383,2215, 820,1391,2015,2448,3672, 377, -1948,2168, 797,2545,3536,2578,2645, 94,2874,1678, 405,1259,3071, 771, 546,1315, - 470,1243,3083, 895,2468, 981, 969,2037, 846,4181, 653,1276,2928, 14,2594, 557, -3007,2474, 156, 902,1338,1740,2574, 537,2518, 973,2282,2216,2433,1928, 138,2903, -1293,2631,1612, 646,3457, 839,2935, 111, 496,2191,2847, 589,3186, 149,3994,2060, -4031,2641,4067,3145,1870, 37,3597,2136,1025,2051,3009,3383,3549,1121,1016,3261, -1301, 251,2446,2599,2153, 872,3246, 637, 334,3705, 831, 884, 921,3065,3140,4092, -2198,1944, 246,2964, 108,2045,1152,1921,2308,1031, 203,3173,4170,1907,3890, 810, -1401,2003,1690, 506, 647,1242,2828,1761,1649,3208,2249,1589,3709,2931,5156,1708, - 498, 666,2613, 834,3817,1231, 184,2851,1124, 883,3197,2261,3710,1765,1553,2658, -1178,2639,2351, 93,1193, 942,2538,2141,4402, 235,1821, 870,1591,2192,1709,1871, -3341,1618,4126,2595,2334, 603, 651, 69, 701, 268,2662,3411,2555,1380,1606, 503, - 448, 254,2371,2646, 574,1187,2309,1770, 322,2235,1292,1801, 305, 566,1133, 229, -2067,2057, 706, 167, 483,2002,2672,3295,1820,3561,3067, 316, 378,2746,3452,1112, - 136,1981, 507,1651,2917,1117, 285,4591, 182,2580,3522,1304, 335,3303,1835,2504, -1795,1792,2248, 674,1018,2106,2449,1857,2292,2845, 976,3047,1781,2600,2727,1389, -1281, 52,3152, 153, 265,3950, 672,3485,3951,4463, 430,1183, 365, 278,2169, 27, -1407,1336,2304, 209,1340,1730,2202,1852,2403,2883, 979,1737,1062, 631,2829,2542, -3876,2592, 825,2086,2226,3048,3625, 352,1417,3724, 542, 991, 431,1351,3938,1861, -2294, 826,1361,2927,3142,3503,1738, 463,2462,2723, 582,1916,1595,2808, 400,3845, -3891,2868,3621,2254, 58,2492,1123, 910,2160,2614,1372,1603,1196,1072,3385,1700, -3267,1980, 696, 480,2430, 920, 799,1570,2920,1951,2041,4047,2540,1321,4223,2469, -3562,2228,1271,2602, 401,2833,3351,2575,5157, 907,2312,1256, 410, 263,3507,1582, - 996, 678,1849,2316,1480, 908,3545,2237, 703,2322, 667,1826,2849,1531,2604,2999, -2407,3146,2151,2630,1786,3711, 469,3542, 497,3899,2409, 858, 837,4446,3393,1274, - 786, 620,1845,2001,3311, 484, 308,3367,1204,1815,3691,2332,1532,2557,1842,2020, -2724,1927,2333,4440, 567, 22,1673,2728,4475,1987,1858,1144,1597, 101,1832,3601, - 12, 974,3783,4391, 951,1412, 1,3720, 453,4608,4041, 528,1041,1027,3230,2628, -1129, 875,1051,3291,1203,2262,1069,2860,2799,2149,2615,3278, 144,1758,3040, 31, - 475,1680, 366,2685,3184, 311,1642,4008,2466,5036,1593,1493,2809, 216,1420,1668, - 233, 304,2128,3284, 232,1429,1768,1040,2008,3407,2740,2967,2543, 242,2133, 778, -1565,2022,2620, 505,2189,2756,1098,2273, 372,1614, 708, 553,2846,2094,2278, 169, -3626,2835,4161, 228,2674,3165, 809,1454,1309, 466,1705,1095, 900,3423, 880,2667, -3751,5258,2317,3109,2571,4317,2766,1503,1342, 866,4447,1118, 63,2076, 314,1881, -1348,1061, 172, 978,3515,1747, 532, 511,3970, 6, 601, 905,2699,3300,1751, 276, -1467,3725,2668, 65,4239,2544,2779,2556,1604, 578,2451,1802, 992,2331,2624,1320, -3446, 713,1513,1013, 103,2786,2447,1661, 886,1702, 916, 654,3574,2031,1556, 751, -2178,2821,2179,1498,1538,2176, 271, 914,2251,2080,1325, 638,1953,2937,3877,2432, -2754, 95,3265,1716, 260,1227,4083, 775, 106,1357,3254, 426,1607, 555,2480, 772, -1985, 244,2546, 474, 495,1046,2611,1851,2061, 71,2089,1675,2590, 742,3758,2843, -3222,1433, 267,2180,2576,2826,2233,2092,3913,2435, 956,1745,3075, 856,2113,1116, - 451, 3,1988,2896,1398, 993,2463,1878,2049,1341,2718,2721,2870,2108, 712,2904, -4363,2753,2324, 277,2872,2349,2649, 384, 987, 435, 691,3000, 922, 164,3939, 652, -1500,1184,4153,2482,3373,2165,4848,2335,3775,3508,3154,2806,2830,1554,2102,1664, -2530,1434,2408, 893,1547,2623,3447,2832,2242,2532,3169,2856,3223,2078, 49,3770, -3469, 462, 318, 656,2259,3250,3069, 679,1629,2758, 344,1138,1104,3120,1836,1283, -3115,2154,1437,4448, 934, 759,1999, 794,2862,1038, 533,2560,1722,2342, 855,2626, -1197,1663,4476,3127, 85,4240,2528, 25,1111,1181,3673, 407,3470,4561,2679,2713, - 768,1925,2841,3986,1544,1165, 932, 373,1240,2146,1930,2673, 721,4766, 354,4333, - 391,2963, 187, 61,3364,1442,1102, 330,1940,1767, 341,3809,4118, 393,2496,2062, -2211, 105, 331, 300, 439, 913,1332, 626, 379,3304,1557, 328, 689,3952, 309,1555, - 931, 317,2517,3027, 325, 569, 686,2107,3084, 60,1042,1333,2794, 264,3177,4014, -1628, 258,3712, 7,4464,1176,1043,1778, 683, 114,1975, 78,1492, 383,1886, 510, - 386, 645,5291,2891,2069,3305,4138,3867,2939,2603,2493,1935,1066,1848,3588,1015, -1282,1289,4609, 697,1453,3044,2666,3611,1856,2412, 54, 719,1330, 568,3778,2459, -1748, 788, 492, 551,1191,1000, 488,3394,3763, 282,1799, 348,2016,1523,3155,2390, -1049, 382,2019,1788,1170, 729,2968,3523, 897,3926,2785,2938,3292, 350,2319,3238, -1718,1717,2655,3453,3143,4465, 161,2889,2980,2009,1421, 56,1908,1640,2387,2232, -1917,1874,2477,4921, 148, 83,3438, 592,4245,2882,1822,1055, 741, 115,1496,1624, - 381,1638,4592,1020, 516,3214, 458, 947,4575,1432, 211,1514,2926,1865,2142, 189, - 852,1221,1400,1486, 882,2299,4036, 351, 28,1122, 700,6479,6480,6481,6482,6483, #last 512 -) - diff --git a/env/lib/python3.6/site-packages/chardet/gb2312prober.py b/env/lib/python3.6/site-packages/chardet/gb2312prober.py deleted file mode 100644 index 8446d2d..0000000 --- a/env/lib/python3.6/site-packages/chardet/gb2312prober.py +++ /dev/null @@ -1,46 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import GB2312DistributionAnalysis -from .mbcssm import GB2312_SM_MODEL - -class GB2312Prober(MultiByteCharSetProber): - def __init__(self): - super(GB2312Prober, self).__init__() - self.coding_sm = CodingStateMachine(GB2312_SM_MODEL) - self.distribution_analyzer = GB2312DistributionAnalysis() - self.reset() - - @property - def charset_name(self): - return "GB2312" - - @property - def language(self): - return "Chinese" diff --git a/env/lib/python3.6/site-packages/chardet/hebrewprober.py b/env/lib/python3.6/site-packages/chardet/hebrewprober.py deleted file mode 100644 index b0e1bf4..0000000 --- a/env/lib/python3.6/site-packages/chardet/hebrewprober.py +++ /dev/null @@ -1,292 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Shy Shalom -# Portions created by the Initial Developer are Copyright (C) 2005 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState - -# This prober doesn't actually recognize a language or a charset. -# It is a helper prober for the use of the Hebrew model probers - -### General ideas of the Hebrew charset recognition ### -# -# Four main charsets exist in Hebrew: -# "ISO-8859-8" - Visual Hebrew -# "windows-1255" - Logical Hebrew -# "ISO-8859-8-I" - Logical Hebrew -# "x-mac-hebrew" - ?? Logical Hebrew ?? -# -# Both "ISO" charsets use a completely identical set of code points, whereas -# "windows-1255" and "x-mac-hebrew" are two different proper supersets of -# these code points. windows-1255 defines additional characters in the range -# 0x80-0x9F as some misc punctuation marks as well as some Hebrew-specific -# diacritics and additional 'Yiddish' ligature letters in the range 0xc0-0xd6. -# x-mac-hebrew defines similar additional code points but with a different -# mapping. -# -# As far as an average Hebrew text with no diacritics is concerned, all four -# charsets are identical with respect to code points. Meaning that for the -# main Hebrew alphabet, all four map the same values to all 27 Hebrew letters -# (including final letters). -# -# The dominant difference between these charsets is their directionality. -# "Visual" directionality means that the text is ordered as if the renderer is -# not aware of a BIDI rendering algorithm. The renderer sees the text and -# draws it from left to right. The text itself when ordered naturally is read -# backwards. A buffer of Visual Hebrew generally looks like so: -# "[last word of first line spelled backwards] [whole line ordered backwards -# and spelled backwards] [first word of first line spelled backwards] -# [end of line] [last word of second line] ... etc' " -# adding punctuation marks, numbers and English text to visual text is -# naturally also "visual" and from left to right. -# -# "Logical" directionality means the text is ordered "naturally" according to -# the order it is read. It is the responsibility of the renderer to display -# the text from right to left. A BIDI algorithm is used to place general -# punctuation marks, numbers and English text in the text. -# -# Texts in x-mac-hebrew are almost impossible to find on the Internet. From -# what little evidence I could find, it seems that its general directionality -# is Logical. -# -# To sum up all of the above, the Hebrew probing mechanism knows about two -# charsets: -# Visual Hebrew - "ISO-8859-8" - backwards text - Words and sentences are -# backwards while line order is natural. For charset recognition purposes -# the line order is unimportant (In fact, for this implementation, even -# word order is unimportant). -# Logical Hebrew - "windows-1255" - normal, naturally ordered text. -# -# "ISO-8859-8-I" is a subset of windows-1255 and doesn't need to be -# specifically identified. -# "x-mac-hebrew" is also identified as windows-1255. A text in x-mac-hebrew -# that contain special punctuation marks or diacritics is displayed with -# some unconverted characters showing as question marks. This problem might -# be corrected using another model prober for x-mac-hebrew. Due to the fact -# that x-mac-hebrew texts are so rare, writing another model prober isn't -# worth the effort and performance hit. -# -#### The Prober #### -# -# The prober is divided between two SBCharSetProbers and a HebrewProber, -# all of which are managed, created, fed data, inquired and deleted by the -# SBCSGroupProber. The two SBCharSetProbers identify that the text is in -# fact some kind of Hebrew, Logical or Visual. The final decision about which -# one is it is made by the HebrewProber by combining final-letter scores -# with the scores of the two SBCharSetProbers to produce a final answer. -# -# The SBCSGroupProber is responsible for stripping the original text of HTML -# tags, English characters, numbers, low-ASCII punctuation characters, spaces -# and new lines. It reduces any sequence of such characters to a single space. -# The buffer fed to each prober in the SBCS group prober is pure text in -# high-ASCII. -# The two SBCharSetProbers (model probers) share the same language model: -# Win1255Model. -# The first SBCharSetProber uses the model normally as any other -# SBCharSetProber does, to recognize windows-1255, upon which this model was -# built. The second SBCharSetProber is told to make the pair-of-letter -# lookup in the language model backwards. This in practice exactly simulates -# a visual Hebrew model using the windows-1255 logical Hebrew model. -# -# The HebrewProber is not using any language model. All it does is look for -# final-letter evidence suggesting the text is either logical Hebrew or visual -# Hebrew. Disjointed from the model probers, the results of the HebrewProber -# alone are meaningless. HebrewProber always returns 0.00 as confidence -# since it never identifies a charset by itself. Instead, the pointer to the -# HebrewProber is passed to the model probers as a helper "Name Prober". -# When the Group prober receives a positive identification from any prober, -# it asks for the name of the charset identified. If the prober queried is a -# Hebrew model prober, the model prober forwards the call to the -# HebrewProber to make the final decision. In the HebrewProber, the -# decision is made according to the final-letters scores maintained and Both -# model probers scores. The answer is returned in the form of the name of the -# charset identified, either "windows-1255" or "ISO-8859-8". - -class HebrewProber(CharSetProber): - # windows-1255 / ISO-8859-8 code points of interest - FINAL_KAF = 0xea - NORMAL_KAF = 0xeb - FINAL_MEM = 0xed - NORMAL_MEM = 0xee - FINAL_NUN = 0xef - NORMAL_NUN = 0xf0 - FINAL_PE = 0xf3 - NORMAL_PE = 0xf4 - FINAL_TSADI = 0xf5 - NORMAL_TSADI = 0xf6 - - # Minimum Visual vs Logical final letter score difference. - # If the difference is below this, don't rely solely on the final letter score - # distance. - MIN_FINAL_CHAR_DISTANCE = 5 - - # Minimum Visual vs Logical model score difference. - # If the difference is below this, don't rely at all on the model score - # distance. - MIN_MODEL_DISTANCE = 0.01 - - VISUAL_HEBREW_NAME = "ISO-8859-8" - LOGICAL_HEBREW_NAME = "windows-1255" - - def __init__(self): - super(HebrewProber, self).__init__() - self._final_char_logical_score = None - self._final_char_visual_score = None - self._prev = None - self._before_prev = None - self._logical_prober = None - self._visual_prober = None - self.reset() - - def reset(self): - self._final_char_logical_score = 0 - self._final_char_visual_score = 0 - # The two last characters seen in the previous buffer, - # mPrev and mBeforePrev are initialized to space in order to simulate - # a word delimiter at the beginning of the data - self._prev = ' ' - self._before_prev = ' ' - # These probers are owned by the group prober. - - def set_model_probers(self, logicalProber, visualProber): - self._logical_prober = logicalProber - self._visual_prober = visualProber - - def is_final(self, c): - return c in [self.FINAL_KAF, self.FINAL_MEM, self.FINAL_NUN, - self.FINAL_PE, self.FINAL_TSADI] - - def is_non_final(self, c): - # The normal Tsadi is not a good Non-Final letter due to words like - # 'lechotet' (to chat) containing an apostrophe after the tsadi. This - # apostrophe is converted to a space in FilterWithoutEnglishLetters - # causing the Non-Final tsadi to appear at an end of a word even - # though this is not the case in the original text. - # The letters Pe and Kaf rarely display a related behavior of not being - # a good Non-Final letter. Words like 'Pop', 'Winamp' and 'Mubarak' - # for example legally end with a Non-Final Pe or Kaf. However, the - # benefit of these letters as Non-Final letters outweighs the damage - # since these words are quite rare. - return c in [self.NORMAL_KAF, self.NORMAL_MEM, - self.NORMAL_NUN, self.NORMAL_PE] - - def feed(self, byte_str): - # Final letter analysis for logical-visual decision. - # Look for evidence that the received buffer is either logical Hebrew - # or visual Hebrew. - # The following cases are checked: - # 1) A word longer than 1 letter, ending with a final letter. This is - # an indication that the text is laid out "naturally" since the - # final letter really appears at the end. +1 for logical score. - # 2) A word longer than 1 letter, ending with a Non-Final letter. In - # normal Hebrew, words ending with Kaf, Mem, Nun, Pe or Tsadi, - # should not end with the Non-Final form of that letter. Exceptions - # to this rule are mentioned above in isNonFinal(). This is an - # indication that the text is laid out backwards. +1 for visual - # score - # 3) A word longer than 1 letter, starting with a final letter. Final - # letters should not appear at the beginning of a word. This is an - # indication that the text is laid out backwards. +1 for visual - # score. - # - # The visual score and logical score are accumulated throughout the - # text and are finally checked against each other in GetCharSetName(). - # No checking for final letters in the middle of words is done since - # that case is not an indication for either Logical or Visual text. - # - # We automatically filter out all 7-bit characters (replace them with - # spaces) so the word boundary detection works properly. [MAP] - - if self.state == ProbingState.NOT_ME: - # Both model probers say it's not them. No reason to continue. - return ProbingState.NOT_ME - - byte_str = self.filter_high_byte_only(byte_str) - - for cur in byte_str: - if cur == ' ': - # We stand on a space - a word just ended - if self._before_prev != ' ': - # next-to-last char was not a space so self._prev is not a - # 1 letter word - if self.is_final(self._prev): - # case (1) [-2:not space][-1:final letter][cur:space] - self._final_char_logical_score += 1 - elif self.is_non_final(self._prev): - # case (2) [-2:not space][-1:Non-Final letter][ - # cur:space] - self._final_char_visual_score += 1 - else: - # Not standing on a space - if ((self._before_prev == ' ') and - (self.is_final(self._prev)) and (cur != ' ')): - # case (3) [-2:space][-1:final letter][cur:not space] - self._final_char_visual_score += 1 - self._before_prev = self._prev - self._prev = cur - - # Forever detecting, till the end or until both model probers return - # ProbingState.NOT_ME (handled above) - return ProbingState.DETECTING - - @property - def charset_name(self): - # Make the decision: is it Logical or Visual? - # If the final letter score distance is dominant enough, rely on it. - finalsub = self._final_char_logical_score - self._final_char_visual_score - if finalsub >= self.MIN_FINAL_CHAR_DISTANCE: - return self.LOGICAL_HEBREW_NAME - if finalsub <= -self.MIN_FINAL_CHAR_DISTANCE: - return self.VISUAL_HEBREW_NAME - - # It's not dominant enough, try to rely on the model scores instead. - modelsub = (self._logical_prober.get_confidence() - - self._visual_prober.get_confidence()) - if modelsub > self.MIN_MODEL_DISTANCE: - return self.LOGICAL_HEBREW_NAME - if modelsub < -self.MIN_MODEL_DISTANCE: - return self.VISUAL_HEBREW_NAME - - # Still no good, back to final letter distance, maybe it'll save the - # day. - if finalsub < 0.0: - return self.VISUAL_HEBREW_NAME - - # (finalsub > 0 - Logical) or (don't know what to do) default to - # Logical. - return self.LOGICAL_HEBREW_NAME - - @property - def language(self): - return 'Hebrew' - - @property - def state(self): - # Remain active as long as any of the model probers are active. - if (self._logical_prober.state == ProbingState.NOT_ME) and \ - (self._visual_prober.state == ProbingState.NOT_ME): - return ProbingState.NOT_ME - return ProbingState.DETECTING diff --git a/env/lib/python3.6/site-packages/chardet/jisfreq.py b/env/lib/python3.6/site-packages/chardet/jisfreq.py deleted file mode 100644 index 83fc082..0000000 --- a/env/lib/python3.6/site-packages/chardet/jisfreq.py +++ /dev/null @@ -1,325 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# Sampling from about 20M text materials include literature and computer technology -# -# Japanese frequency table, applied to both S-JIS and EUC-JP -# They are sorted in order. - -# 128 --> 0.77094 -# 256 --> 0.85710 -# 512 --> 0.92635 -# 1024 --> 0.97130 -# 2048 --> 0.99431 -# -# Ideal Distribution Ratio = 0.92635 / (1-0.92635) = 12.58 -# Random Distribution Ration = 512 / (2965+62+83+86-512) = 0.191 -# -# Typical Distribution Ratio, 25% of IDR - -JIS_TYPICAL_DISTRIBUTION_RATIO = 3.0 - -# Char to FreqOrder table , -JIS_TABLE_SIZE = 4368 - -JIS_CHAR_TO_FREQ_ORDER = ( - 40, 1, 6, 182, 152, 180, 295,2127, 285, 381,3295,4304,3068,4606,3165,3510, # 16 -3511,1822,2785,4607,1193,2226,5070,4608, 171,2996,1247, 18, 179,5071, 856,1661, # 32 -1262,5072, 619, 127,3431,3512,3230,1899,1700, 232, 228,1294,1298, 284, 283,2041, # 48 -2042,1061,1062, 48, 49, 44, 45, 433, 434,1040,1041, 996, 787,2997,1255,4305, # 64 -2108,4609,1684,1648,5073,5074,5075,5076,5077,5078,3687,5079,4610,5080,3927,3928, # 80 -5081,3296,3432, 290,2285,1471,2187,5082,2580,2825,1303,2140,1739,1445,2691,3375, # 96 -1691,3297,4306,4307,4611, 452,3376,1182,2713,3688,3069,4308,5083,5084,5085,5086, # 112 -5087,5088,5089,5090,5091,5092,5093,5094,5095,5096,5097,5098,5099,5100,5101,5102, # 128 -5103,5104,5105,5106,5107,5108,5109,5110,5111,5112,4097,5113,5114,5115,5116,5117, # 144 -5118,5119,5120,5121,5122,5123,5124,5125,5126,5127,5128,5129,5130,5131,5132,5133, # 160 -5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5145,5146,5147,5148,5149, # 176 -5150,5151,5152,4612,5153,5154,5155,5156,5157,5158,5159,5160,5161,5162,5163,5164, # 192 -5165,5166,5167,5168,5169,5170,5171,5172,5173,5174,5175,1472, 598, 618, 820,1205, # 208 -1309,1412,1858,1307,1692,5176,5177,5178,5179,5180,5181,5182,1142,1452,1234,1172, # 224 -1875,2043,2149,1793,1382,2973, 925,2404,1067,1241, 960,1377,2935,1491, 919,1217, # 240 -1865,2030,1406,1499,2749,4098,5183,5184,5185,5186,5187,5188,2561,4099,3117,1804, # 256 -2049,3689,4309,3513,1663,5189,3166,3118,3298,1587,1561,3433,5190,3119,1625,2998, # 272 -3299,4613,1766,3690,2786,4614,5191,5192,5193,5194,2161, 26,3377, 2,3929, 20, # 288 -3691, 47,4100, 50, 17, 16, 35, 268, 27, 243, 42, 155, 24, 154, 29, 184, # 304 - 4, 91, 14, 92, 53, 396, 33, 289, 9, 37, 64, 620, 21, 39, 321, 5, # 320 - 12, 11, 52, 13, 3, 208, 138, 0, 7, 60, 526, 141, 151,1069, 181, 275, # 336 -1591, 83, 132,1475, 126, 331, 829, 15, 69, 160, 59, 22, 157, 55,1079, 312, # 352 - 109, 38, 23, 25, 10, 19, 79,5195, 61, 382,1124, 8, 30,5196,5197,5198, # 368 -5199,5200,5201,5202,5203,5204,5205,5206, 89, 62, 74, 34,2416, 112, 139, 196, # 384 - 271, 149, 84, 607, 131, 765, 46, 88, 153, 683, 76, 874, 101, 258, 57, 80, # 400 - 32, 364, 121,1508, 169,1547, 68, 235, 145,2999, 41, 360,3027, 70, 63, 31, # 416 - 43, 259, 262,1383, 99, 533, 194, 66, 93, 846, 217, 192, 56, 106, 58, 565, # 432 - 280, 272, 311, 256, 146, 82, 308, 71, 100, 128, 214, 655, 110, 261, 104,1140, # 448 - 54, 51, 36, 87, 67,3070, 185,2618,2936,2020, 28,1066,2390,2059,5207,5208, # 464 -5209,5210,5211,5212,5213,5214,5215,5216,4615,5217,5218,5219,5220,5221,5222,5223, # 480 -5224,5225,5226,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,3514,5237,5238, # 496 -5239,5240,5241,5242,5243,5244,2297,2031,4616,4310,3692,5245,3071,5246,3598,5247, # 512 -4617,3231,3515,5248,4101,4311,4618,3808,4312,4102,5249,4103,4104,3599,5250,5251, # 528 -5252,5253,5254,5255,5256,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267, # 544 -5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283, # 560 -5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299, # 576 -5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315, # 592 -5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5331, # 608 -5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344,5345,5346,5347, # 624 -5348,5349,5350,5351,5352,5353,5354,5355,5356,5357,5358,5359,5360,5361,5362,5363, # 640 -5364,5365,5366,5367,5368,5369,5370,5371,5372,5373,5374,5375,5376,5377,5378,5379, # 656 -5380,5381, 363, 642,2787,2878,2788,2789,2316,3232,2317,3434,2011, 165,1942,3930, # 672 -3931,3932,3933,5382,4619,5383,4620,5384,5385,5386,5387,5388,5389,5390,5391,5392, # 688 -5393,5394,5395,5396,5397,5398,5399,5400,5401,5402,5403,5404,5405,5406,5407,5408, # 704 -5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5421,5422,5423,5424, # 720 -5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5437,5438,5439,5440, # 736 -5441,5442,5443,5444,5445,5446,5447,5448,5449,5450,5451,5452,5453,5454,5455,5456, # 752 -5457,5458,5459,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5470,5471,5472, # 768 -5473,5474,5475,5476,5477,5478,5479,5480,5481,5482,5483,5484,5485,5486,5487,5488, # 784 -5489,5490,5491,5492,5493,5494,5495,5496,5497,5498,5499,5500,5501,5502,5503,5504, # 800 -5505,5506,5507,5508,5509,5510,5511,5512,5513,5514,5515,5516,5517,5518,5519,5520, # 816 -5521,5522,5523,5524,5525,5526,5527,5528,5529,5530,5531,5532,5533,5534,5535,5536, # 832 -5537,5538,5539,5540,5541,5542,5543,5544,5545,5546,5547,5548,5549,5550,5551,5552, # 848 -5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568, # 864 -5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584, # 880 -5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600, # 896 -5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616, # 912 -5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632, # 928 -5633,5634,5635,5636,5637,5638,5639,5640,5641,5642,5643,5644,5645,5646,5647,5648, # 944 -5649,5650,5651,5652,5653,5654,5655,5656,5657,5658,5659,5660,5661,5662,5663,5664, # 960 -5665,5666,5667,5668,5669,5670,5671,5672,5673,5674,5675,5676,5677,5678,5679,5680, # 976 -5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696, # 992 -5697,5698,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712, # 1008 -5713,5714,5715,5716,5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727,5728, # 1024 -5729,5730,5731,5732,5733,5734,5735,5736,5737,5738,5739,5740,5741,5742,5743,5744, # 1040 -5745,5746,5747,5748,5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760, # 1056 -5761,5762,5763,5764,5765,5766,5767,5768,5769,5770,5771,5772,5773,5774,5775,5776, # 1072 -5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5789,5790,5791,5792, # 1088 -5793,5794,5795,5796,5797,5798,5799,5800,5801,5802,5803,5804,5805,5806,5807,5808, # 1104 -5809,5810,5811,5812,5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824, # 1120 -5825,5826,5827,5828,5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840, # 1136 -5841,5842,5843,5844,5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856, # 1152 -5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872, # 1168 -5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888, # 1184 -5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904, # 1200 -5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920, # 1216 -5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936, # 1232 -5937,5938,5939,5940,5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952, # 1248 -5953,5954,5955,5956,5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968, # 1264 -5969,5970,5971,5972,5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984, # 1280 -5985,5986,5987,5988,5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000, # 1296 -6001,6002,6003,6004,6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016, # 1312 -6017,6018,6019,6020,6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032, # 1328 -6033,6034,6035,6036,6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048, # 1344 -6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064, # 1360 -6065,6066,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080, # 1376 -6081,6082,6083,6084,6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096, # 1392 -6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112, # 1408 -6113,6114,2044,2060,4621, 997,1235, 473,1186,4622, 920,3378,6115,6116, 379,1108, # 1424 -4313,2657,2735,3934,6117,3809, 636,3233, 573,1026,3693,3435,2974,3300,2298,4105, # 1440 - 854,2937,2463, 393,2581,2417, 539, 752,1280,2750,2480, 140,1161, 440, 708,1569, # 1456 - 665,2497,1746,1291,1523,3000, 164,1603, 847,1331, 537,1997, 486, 508,1693,2418, # 1472 -1970,2227, 878,1220, 299,1030, 969, 652,2751, 624,1137,3301,2619, 65,3302,2045, # 1488 -1761,1859,3120,1930,3694,3516, 663,1767, 852, 835,3695, 269, 767,2826,2339,1305, # 1504 - 896,1150, 770,1616,6118, 506,1502,2075,1012,2519, 775,2520,2975,2340,2938,4314, # 1520 -3028,2086,1224,1943,2286,6119,3072,4315,2240,1273,1987,3935,1557, 175, 597, 985, # 1536 -3517,2419,2521,1416,3029, 585, 938,1931,1007,1052,1932,1685,6120,3379,4316,4623, # 1552 - 804, 599,3121,1333,2128,2539,1159,1554,2032,3810, 687,2033,2904, 952, 675,1467, # 1568 -3436,6121,2241,1096,1786,2440,1543,1924, 980,1813,2228, 781,2692,1879, 728,1918, # 1584 -3696,4624, 548,1950,4625,1809,1088,1356,3303,2522,1944, 502, 972, 373, 513,2827, # 1600 - 586,2377,2391,1003,1976,1631,6122,2464,1084, 648,1776,4626,2141, 324, 962,2012, # 1616 -2177,2076,1384, 742,2178,1448,1173,1810, 222, 102, 301, 445, 125,2420, 662,2498, # 1632 - 277, 200,1476,1165,1068, 224,2562,1378,1446, 450,1880, 659, 791, 582,4627,2939, # 1648 -3936,1516,1274, 555,2099,3697,1020,1389,1526,3380,1762,1723,1787,2229, 412,2114, # 1664 -1900,2392,3518, 512,2597, 427,1925,2341,3122,1653,1686,2465,2499, 697, 330, 273, # 1680 - 380,2162, 951, 832, 780, 991,1301,3073, 965,2270,3519, 668,2523,2636,1286, 535, # 1696 -1407, 518, 671, 957,2658,2378, 267, 611,2197,3030,6123, 248,2299, 967,1799,2356, # 1712 - 850,1418,3437,1876,1256,1480,2828,1718,6124,6125,1755,1664,2405,6126,4628,2879, # 1728 -2829, 499,2179, 676,4629, 557,2329,2214,2090, 325,3234, 464, 811,3001, 992,2342, # 1744 -2481,1232,1469, 303,2242, 466,1070,2163, 603,1777,2091,4630,2752,4631,2714, 322, # 1760 -2659,1964,1768, 481,2188,1463,2330,2857,3600,2092,3031,2421,4632,2318,2070,1849, # 1776 -2598,4633,1302,2254,1668,1701,2422,3811,2905,3032,3123,2046,4106,1763,1694,4634, # 1792 -1604, 943,1724,1454, 917, 868,2215,1169,2940, 552,1145,1800,1228,1823,1955, 316, # 1808 -1080,2510, 361,1807,2830,4107,2660,3381,1346,1423,1134,4108,6127, 541,1263,1229, # 1824 -1148,2540, 545, 465,1833,2880,3438,1901,3074,2482, 816,3937, 713,1788,2500, 122, # 1840 -1575, 195,1451,2501,1111,6128, 859, 374,1225,2243,2483,4317, 390,1033,3439,3075, # 1856 -2524,1687, 266, 793,1440,2599, 946, 779, 802, 507, 897,1081, 528,2189,1292, 711, # 1872 -1866,1725,1167,1640, 753, 398,2661,1053, 246, 348,4318, 137,1024,3440,1600,2077, # 1888 -2129, 825,4319, 698, 238, 521, 187,2300,1157,2423,1641,1605,1464,1610,1097,2541, # 1904 -1260,1436, 759,2255,1814,2150, 705,3235, 409,2563,3304, 561,3033,2005,2564, 726, # 1920 -1956,2343,3698,4109, 949,3812,3813,3520,1669, 653,1379,2525, 881,2198, 632,2256, # 1936 -1027, 778,1074, 733,1957, 514,1481,2466, 554,2180, 702,3938,1606,1017,1398,6129, # 1952 -1380,3521, 921, 993,1313, 594, 449,1489,1617,1166, 768,1426,1360, 495,1794,3601, # 1968 -1177,3602,1170,4320,2344, 476, 425,3167,4635,3168,1424, 401,2662,1171,3382,1998, # 1984 -1089,4110, 477,3169, 474,6130,1909, 596,2831,1842, 494, 693,1051,1028,1207,3076, # 2000 - 606,2115, 727,2790,1473,1115, 743,3522, 630, 805,1532,4321,2021, 366,1057, 838, # 2016 - 684,1114,2142,4322,2050,1492,1892,1808,2271,3814,2424,1971,1447,1373,3305,1090, # 2032 -1536,3939,3523,3306,1455,2199, 336, 369,2331,1035, 584,2393, 902, 718,2600,6131, # 2048 -2753, 463,2151,1149,1611,2467, 715,1308,3124,1268, 343,1413,3236,1517,1347,2663, # 2064 -2093,3940,2022,1131,1553,2100,2941,1427,3441,2942,1323,2484,6132,1980, 872,2368, # 2080 -2441,2943, 320,2369,2116,1082, 679,1933,3941,2791,3815, 625,1143,2023, 422,2200, # 2096 -3816,6133, 730,1695, 356,2257,1626,2301,2858,2637,1627,1778, 937, 883,2906,2693, # 2112 -3002,1769,1086, 400,1063,1325,3307,2792,4111,3077, 456,2345,1046, 747,6134,1524, # 2128 - 884,1094,3383,1474,2164,1059, 974,1688,2181,2258,1047, 345,1665,1187, 358, 875, # 2144 -3170, 305, 660,3524,2190,1334,1135,3171,1540,1649,2542,1527, 927, 968,2793, 885, # 2160 -1972,1850, 482, 500,2638,1218,1109,1085,2543,1654,2034, 876, 78,2287,1482,1277, # 2176 - 861,1675,1083,1779, 724,2754, 454, 397,1132,1612,2332, 893, 672,1237, 257,2259, # 2192 -2370, 135,3384, 337,2244, 547, 352, 340, 709,2485,1400, 788,1138,2511, 540, 772, # 2208 -1682,2260,2272,2544,2013,1843,1902,4636,1999,1562,2288,4637,2201,1403,1533, 407, # 2224 - 576,3308,1254,2071, 978,3385, 170, 136,1201,3125,2664,3172,2394, 213, 912, 873, # 2240 -3603,1713,2202, 699,3604,3699, 813,3442, 493, 531,1054, 468,2907,1483, 304, 281, # 2256 -4112,1726,1252,2094, 339,2319,2130,2639, 756,1563,2944, 748, 571,2976,1588,2425, # 2272 -2715,1851,1460,2426,1528,1392,1973,3237, 288,3309, 685,3386, 296, 892,2716,2216, # 2288 -1570,2245, 722,1747,2217, 905,3238,1103,6135,1893,1441,1965, 251,1805,2371,3700, # 2304 -2601,1919,1078, 75,2182,1509,1592,1270,2640,4638,2152,6136,3310,3817, 524, 706, # 2320 -1075, 292,3818,1756,2602, 317, 98,3173,3605,3525,1844,2218,3819,2502, 814, 567, # 2336 - 385,2908,1534,6137, 534,1642,3239, 797,6138,1670,1529, 953,4323, 188,1071, 538, # 2352 - 178, 729,3240,2109,1226,1374,2000,2357,2977, 731,2468,1116,2014,2051,6139,1261, # 2368 -1593, 803,2859,2736,3443, 556, 682, 823,1541,6140,1369,2289,1706,2794, 845, 462, # 2384 -2603,2665,1361, 387, 162,2358,1740, 739,1770,1720,1304,1401,3241,1049, 627,1571, # 2400 -2427,3526,1877,3942,1852,1500, 431,1910,1503, 677, 297,2795, 286,1433,1038,1198, # 2416 -2290,1133,1596,4113,4639,2469,1510,1484,3943,6141,2442, 108, 712,4640,2372, 866, # 2432 -3701,2755,3242,1348, 834,1945,1408,3527,2395,3243,1811, 824, 994,1179,2110,1548, # 2448 -1453, 790,3003, 690,4324,4325,2832,2909,3820,1860,3821, 225,1748, 310, 346,1780, # 2464 -2470, 821,1993,2717,2796, 828, 877,3528,2860,2471,1702,2165,2910,2486,1789, 453, # 2480 - 359,2291,1676, 73,1164,1461,1127,3311, 421, 604, 314,1037, 589, 116,2487, 737, # 2496 - 837,1180, 111, 244, 735,6142,2261,1861,1362, 986, 523, 418, 581,2666,3822, 103, # 2512 - 855, 503,1414,1867,2488,1091, 657,1597, 979, 605,1316,4641,1021,2443,2078,2001, # 2528 -1209, 96, 587,2166,1032, 260,1072,2153, 173, 94, 226,3244, 819,2006,4642,4114, # 2544 -2203, 231,1744, 782, 97,2667, 786,3387, 887, 391, 442,2219,4326,1425,6143,2694, # 2560 - 633,1544,1202, 483,2015, 592,2052,1958,2472,1655, 419, 129,4327,3444,3312,1714, # 2576 -1257,3078,4328,1518,1098, 865,1310,1019,1885,1512,1734, 469,2444, 148, 773, 436, # 2592 -1815,1868,1128,1055,4329,1245,2756,3445,2154,1934,1039,4643, 579,1238, 932,2320, # 2608 - 353, 205, 801, 115,2428, 944,2321,1881, 399,2565,1211, 678, 766,3944, 335,2101, # 2624 -1459,1781,1402,3945,2737,2131,1010, 844, 981,1326,1013, 550,1816,1545,2620,1335, # 2640 -1008, 371,2881, 936,1419,1613,3529,1456,1395,2273,1834,2604,1317,2738,2503, 416, # 2656 -1643,4330, 806,1126, 229, 591,3946,1314,1981,1576,1837,1666, 347,1790, 977,3313, # 2672 - 764,2861,1853, 688,2429,1920,1462, 77, 595, 415,2002,3034, 798,1192,4115,6144, # 2688 -2978,4331,3035,2695,2582,2072,2566, 430,2430,1727, 842,1396,3947,3702, 613, 377, # 2704 - 278, 236,1417,3388,3314,3174, 757,1869, 107,3530,6145,1194, 623,2262, 207,1253, # 2720 -2167,3446,3948, 492,1117,1935, 536,1838,2757,1246,4332, 696,2095,2406,1393,1572, # 2736 -3175,1782, 583, 190, 253,1390,2230, 830,3126,3389, 934,3245,1703,1749,2979,1870, # 2752 -2545,1656,2204, 869,2346,4116,3176,1817, 496,1764,4644, 942,1504, 404,1903,1122, # 2768 -1580,3606,2945,1022, 515, 372,1735, 955,2431,3036,6146,2797,1110,2302,2798, 617, # 2784 -6147, 441, 762,1771,3447,3607,3608,1904, 840,3037, 86, 939,1385, 572,1370,2445, # 2800 -1336, 114,3703, 898, 294, 203,3315, 703,1583,2274, 429, 961,4333,1854,1951,3390, # 2816 -2373,3704,4334,1318,1381, 966,1911,2322,1006,1155, 309, 989, 458,2718,1795,1372, # 2832 -1203, 252,1689,1363,3177, 517,1936, 168,1490, 562, 193,3823,1042,4117,1835, 551, # 2848 - 470,4645, 395, 489,3448,1871,1465,2583,2641, 417,1493, 279,1295, 511,1236,1119, # 2864 - 72,1231,1982,1812,3004, 871,1564, 984,3449,1667,2696,2096,4646,2347,2833,1673, # 2880 -3609, 695,3246,2668, 807,1183,4647, 890, 388,2333,1801,1457,2911,1765,1477,1031, # 2896 -3316,3317,1278,3391,2799,2292,2526, 163,3450,4335,2669,1404,1802,6148,2323,2407, # 2912 -1584,1728,1494,1824,1269, 298, 909,3318,1034,1632, 375, 776,1683,2061, 291, 210, # 2928 -1123, 809,1249,1002,2642,3038, 206,1011,2132, 144, 975, 882,1565, 342, 667, 754, # 2944 -1442,2143,1299,2303,2062, 447, 626,2205,1221,2739,2912,1144,1214,2206,2584, 760, # 2960 -1715, 614, 950,1281,2670,2621, 810, 577,1287,2546,4648, 242,2168, 250,2643, 691, # 2976 - 123,2644, 647, 313,1029, 689,1357,2946,1650, 216, 771,1339,1306, 808,2063, 549, # 2992 - 913,1371,2913,2914,6149,1466,1092,1174,1196,1311,2605,2396,1783,1796,3079, 406, # 3008 -2671,2117,3949,4649, 487,1825,2220,6150,2915, 448,2348,1073,6151,2397,1707, 130, # 3024 - 900,1598, 329, 176,1959,2527,1620,6152,2275,4336,3319,1983,2191,3705,3610,2155, # 3040 -3706,1912,1513,1614,6153,1988, 646, 392,2304,1589,3320,3039,1826,1239,1352,1340, # 3056 -2916, 505,2567,1709,1437,2408,2547, 906,6154,2672, 384,1458,1594,1100,1329, 710, # 3072 - 423,3531,2064,2231,2622,1989,2673,1087,1882, 333, 841,3005,1296,2882,2379, 580, # 3088 -1937,1827,1293,2585, 601, 574, 249,1772,4118,2079,1120, 645, 901,1176,1690, 795, # 3104 -2207, 478,1434, 516,1190,1530, 761,2080, 930,1264, 355, 435,1552, 644,1791, 987, # 3120 - 220,1364,1163,1121,1538, 306,2169,1327,1222, 546,2645, 218, 241, 610,1704,3321, # 3136 -1984,1839,1966,2528, 451,6155,2586,3707,2568, 907,3178, 254,2947, 186,1845,4650, # 3152 - 745, 432,1757, 428,1633, 888,2246,2221,2489,3611,2118,1258,1265, 956,3127,1784, # 3168 -4337,2490, 319, 510, 119, 457,3612, 274,2035,2007,4651,1409,3128, 970,2758, 590, # 3184 -2800, 661,2247,4652,2008,3950,1420,1549,3080,3322,3951,1651,1375,2111, 485,2491, # 3200 -1429,1156,6156,2548,2183,1495, 831,1840,2529,2446, 501,1657, 307,1894,3247,1341, # 3216 - 666, 899,2156,1539,2549,1559, 886, 349,2208,3081,2305,1736,3824,2170,2759,1014, # 3232 -1913,1386, 542,1397,2948, 490, 368, 716, 362, 159, 282,2569,1129,1658,1288,1750, # 3248 -2674, 276, 649,2016, 751,1496, 658,1818,1284,1862,2209,2087,2512,3451, 622,2834, # 3264 - 376, 117,1060,2053,1208,1721,1101,1443, 247,1250,3179,1792,3952,2760,2398,3953, # 3280 -6157,2144,3708, 446,2432,1151,2570,3452,2447,2761,2835,1210,2448,3082, 424,2222, # 3296 -1251,2449,2119,2836, 504,1581,4338, 602, 817, 857,3825,2349,2306, 357,3826,1470, # 3312 -1883,2883, 255, 958, 929,2917,3248, 302,4653,1050,1271,1751,2307,1952,1430,2697, # 3328 -2719,2359, 354,3180, 777, 158,2036,4339,1659,4340,4654,2308,2949,2248,1146,2232, # 3344 -3532,2720,1696,2623,3827,6158,3129,1550,2698,1485,1297,1428, 637, 931,2721,2145, # 3360 - 914,2550,2587, 81,2450, 612, 827,2646,1242,4655,1118,2884, 472,1855,3181,3533, # 3376 -3534, 569,1353,2699,1244,1758,2588,4119,2009,2762,2171,3709,1312,1531,6159,1152, # 3392 -1938, 134,1830, 471,3710,2276,1112,1535,3323,3453,3535, 982,1337,2950, 488, 826, # 3408 - 674,1058,1628,4120,2017, 522,2399, 211, 568,1367,3454, 350, 293,1872,1139,3249, # 3424 -1399,1946,3006,1300,2360,3324, 588, 736,6160,2606, 744, 669,3536,3828,6161,1358, # 3440 - 199, 723, 848, 933, 851,1939,1505,1514,1338,1618,1831,4656,1634,3613, 443,2740, # 3456 -3829, 717,1947, 491,1914,6162,2551,1542,4121,1025,6163,1099,1223, 198,3040,2722, # 3472 - 370, 410,1905,2589, 998,1248,3182,2380, 519,1449,4122,1710, 947, 928,1153,4341, # 3488 -2277, 344,2624,1511, 615, 105, 161,1212,1076,1960,3130,2054,1926,1175,1906,2473, # 3504 - 414,1873,2801,6164,2309, 315,1319,3325, 318,2018,2146,2157, 963, 631, 223,4342, # 3520 -4343,2675, 479,3711,1197,2625,3712,2676,2361,6165,4344,4123,6166,2451,3183,1886, # 3536 -2184,1674,1330,1711,1635,1506, 799, 219,3250,3083,3954,1677,3713,3326,2081,3614, # 3552 -1652,2073,4657,1147,3041,1752, 643,1961, 147,1974,3955,6167,1716,2037, 918,3007, # 3568 -1994, 120,1537, 118, 609,3184,4345, 740,3455,1219, 332,1615,3830,6168,1621,2980, # 3584 -1582, 783, 212, 553,2350,3714,1349,2433,2082,4124, 889,6169,2310,1275,1410, 973, # 3600 - 166,1320,3456,1797,1215,3185,2885,1846,2590,2763,4658, 629, 822,3008, 763, 940, # 3616 -1990,2862, 439,2409,1566,1240,1622, 926,1282,1907,2764, 654,2210,1607, 327,1130, # 3632 -3956,1678,1623,6170,2434,2192, 686, 608,3831,3715, 903,3957,3042,6171,2741,1522, # 3648 -1915,1105,1555,2552,1359, 323,3251,4346,3457, 738,1354,2553,2311,2334,1828,2003, # 3664 -3832,1753,2351,1227,6172,1887,4125,1478,6173,2410,1874,1712,1847, 520,1204,2607, # 3680 - 264,4659, 836,2677,2102, 600,4660,3833,2278,3084,6174,4347,3615,1342, 640, 532, # 3696 - 543,2608,1888,2400,2591,1009,4348,1497, 341,1737,3616,2723,1394, 529,3252,1321, # 3712 - 983,4661,1515,2120, 971,2592, 924, 287,1662,3186,4349,2700,4350,1519, 908,1948, # 3728 -2452, 156, 796,1629,1486,2223,2055, 694,4126,1259,1036,3392,1213,2249,2742,1889, # 3744 -1230,3958,1015, 910, 408, 559,3617,4662, 746, 725, 935,4663,3959,3009,1289, 563, # 3760 - 867,4664,3960,1567,2981,2038,2626, 988,2263,2381,4351, 143,2374, 704,1895,6175, # 3776 -1188,3716,2088, 673,3085,2362,4352, 484,1608,1921,2765,2918, 215, 904,3618,3537, # 3792 - 894, 509, 976,3043,2701,3961,4353,2837,2982, 498,6176,6177,1102,3538,1332,3393, # 3808 -1487,1636,1637, 233, 245,3962, 383, 650, 995,3044, 460,1520,1206,2352, 749,3327, # 3824 - 530, 700, 389,1438,1560,1773,3963,2264, 719,2951,2724,3834, 870,1832,1644,1000, # 3840 - 839,2474,3717, 197,1630,3394, 365,2886,3964,1285,2133, 734, 922, 818,1106, 732, # 3856 - 480,2083,1774,3458, 923,2279,1350, 221,3086, 85,2233,2234,3835,1585,3010,2147, # 3872 -1387,1705,2382,1619,2475, 133, 239,2802,1991,1016,2084,2383, 411,2838,1113, 651, # 3888 -1985,1160,3328, 990,1863,3087,1048,1276,2647, 265,2627,1599,3253,2056, 150, 638, # 3904 -2019, 656, 853, 326,1479, 680,1439,4354,1001,1759, 413,3459,3395,2492,1431, 459, # 3920 -4355,1125,3329,2265,1953,1450,2065,2863, 849, 351,2678,3131,3254,3255,1104,1577, # 3936 - 227,1351,1645,2453,2193,1421,2887, 812,2121, 634, 95,2435, 201,2312,4665,1646, # 3952 -1671,2743,1601,2554,2702,2648,2280,1315,1366,2089,3132,1573,3718,3965,1729,1189, # 3968 - 328,2679,1077,1940,1136, 558,1283, 964,1195, 621,2074,1199,1743,3460,3619,1896, # 3984 -1916,1890,3836,2952,1154,2112,1064, 862, 378,3011,2066,2113,2803,1568,2839,6178, # 4000 -3088,2919,1941,1660,2004,1992,2194, 142, 707,1590,1708,1624,1922,1023,1836,1233, # 4016 -1004,2313, 789, 741,3620,6179,1609,2411,1200,4127,3719,3720,4666,2057,3721, 593, # 4032 -2840, 367,2920,1878,6180,3461,1521, 628,1168, 692,2211,2649, 300, 720,2067,2571, # 4048 -2953,3396, 959,2504,3966,3539,3462,1977, 701,6181, 954,1043, 800, 681, 183,3722, # 4064 -1803,1730,3540,4128,2103, 815,2314, 174, 467, 230,2454,1093,2134, 755,3541,3397, # 4080 -1141,1162,6182,1738,2039, 270,3256,2513,1005,1647,2185,3837, 858,1679,1897,1719, # 4096 -2954,2324,1806, 402, 670, 167,4129,1498,2158,2104, 750,6183, 915, 189,1680,1551, # 4112 - 455,4356,1501,2455, 405,1095,2955, 338,1586,1266,1819, 570, 641,1324, 237,1556, # 4128 -2650,1388,3723,6184,1368,2384,1343,1978,3089,2436, 879,3724, 792,1191, 758,3012, # 4144 -1411,2135,1322,4357, 240,4667,1848,3725,1574,6185, 420,3045,1546,1391, 714,4358, # 4160 -1967, 941,1864, 863, 664, 426, 560,1731,2680,1785,2864,1949,2363, 403,3330,1415, # 4176 -1279,2136,1697,2335, 204, 721,2097,3838, 90,6186,2085,2505, 191,3967, 124,2148, # 4192 -1376,1798,1178,1107,1898,1405, 860,4359,1243,1272,2375,2983,1558,2456,1638, 113, # 4208 -3621, 578,1923,2609, 880, 386,4130, 784,2186,2266,1422,2956,2172,1722, 497, 263, # 4224 -2514,1267,2412,2610, 177,2703,3542, 774,1927,1344, 616,1432,1595,1018, 172,4360, # 4240 -2325, 911,4361, 438,1468,3622, 794,3968,2024,2173,1681,1829,2957, 945, 895,3090, # 4256 - 575,2212,2476, 475,2401,2681, 785,2744,1745,2293,2555,1975,3133,2865, 394,4668, # 4272 -3839, 635,4131, 639, 202,1507,2195,2766,1345,1435,2572,3726,1908,1184,1181,2457, # 4288 -3727,3134,4362, 843,2611, 437, 916,4669, 234, 769,1884,3046,3047,3623, 833,6187, # 4304 -1639,2250,2402,1355,1185,2010,2047, 999, 525,1732,1290,1488,2612, 948,1578,3728, # 4320 -2413,2477,1216,2725,2159, 334,3840,1328,3624,2921,1525,4132, 564,1056, 891,4363, # 4336 -1444,1698,2385,2251,3729,1365,2281,2235,1717,6188, 864,3841,2515, 444, 527,2767, # 4352 -2922,3625, 544, 461,6189, 566, 209,2437,3398,2098,1065,2068,3331,3626,3257,2137, # 4368 #last 512 -) - - diff --git a/env/lib/python3.6/site-packages/chardet/jpcntx.py b/env/lib/python3.6/site-packages/chardet/jpcntx.py deleted file mode 100644 index 20044e4..0000000 --- a/env/lib/python3.6/site-packages/chardet/jpcntx.py +++ /dev/null @@ -1,233 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - - -# This is hiragana 2-char sequence table, the number in each cell represents its frequency category -jp2CharContext = ( -(0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1), -(2,4,0,4,0,3,0,4,0,3,4,4,4,2,4,3,3,4,3,2,3,3,4,2,3,3,3,2,4,1,4,3,3,1,5,4,3,4,3,4,3,5,3,0,3,5,4,2,0,3,1,0,3,3,0,3,3,0,1,1,0,4,3,0,3,3,0,4,0,2,0,3,5,5,5,5,4,0,4,1,0,3,4), -(0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2), -(0,4,0,5,0,5,0,4,0,4,5,4,4,3,5,3,5,1,5,3,4,3,4,4,3,4,3,3,4,3,5,4,4,3,5,5,3,5,5,5,3,5,5,3,4,5,5,3,1,3,2,0,3,4,0,4,2,0,4,2,1,5,3,2,3,5,0,4,0,2,0,5,4,4,5,4,5,0,4,0,0,4,4), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,3,0,4,0,3,0,3,0,4,5,4,3,3,3,3,4,3,5,4,4,3,5,4,4,3,4,3,4,4,4,4,5,3,4,4,3,4,5,5,4,5,5,1,4,5,4,3,0,3,3,1,3,3,0,4,4,0,3,3,1,5,3,3,3,5,0,4,0,3,0,4,4,3,4,3,3,0,4,1,1,3,4), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,4,0,3,0,3,0,4,0,3,4,4,3,2,2,1,2,1,3,1,3,3,3,3,3,4,3,1,3,3,5,3,3,0,4,3,0,5,4,3,3,5,4,4,3,4,4,5,0,1,2,0,1,2,0,2,2,0,1,0,0,5,2,2,1,4,0,3,0,1,0,4,4,3,5,4,3,0,2,1,0,4,3), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,3,0,5,0,4,0,2,1,4,4,2,4,1,4,2,4,2,4,3,3,3,4,3,3,3,3,1,4,2,3,3,3,1,4,4,1,1,1,4,3,3,2,0,2,4,3,2,0,3,3,0,3,1,1,0,0,0,3,3,0,4,2,2,3,4,0,4,0,3,0,4,4,5,3,4,4,0,3,0,0,1,4), -(1,4,0,4,0,4,0,4,0,3,5,4,4,3,4,3,5,4,3,3,4,3,5,4,4,4,4,3,4,2,4,3,3,1,5,4,3,2,4,5,4,5,5,4,4,5,4,4,0,3,2,2,3,3,0,4,3,1,3,2,1,4,3,3,4,5,0,3,0,2,0,4,5,5,4,5,4,0,4,0,0,5,4), -(0,5,0,5,0,4,0,3,0,4,4,3,4,3,3,3,4,0,4,4,4,3,4,3,4,3,3,1,4,2,4,3,4,0,5,4,1,4,5,4,4,5,3,2,4,3,4,3,2,4,1,3,3,3,2,3,2,0,4,3,3,4,3,3,3,4,0,4,0,3,0,4,5,4,4,4,3,0,4,1,0,1,3), -(0,3,1,4,0,3,0,2,0,3,4,4,3,1,4,2,3,3,4,3,4,3,4,3,4,4,3,2,3,1,5,4,4,1,4,4,3,5,4,4,3,5,5,4,3,4,4,3,1,2,3,1,2,2,0,3,2,0,3,1,0,5,3,3,3,4,3,3,3,3,4,4,4,4,5,4,2,0,3,3,2,4,3), -(0,2,0,3,0,1,0,1,0,0,3,2,0,0,2,0,1,0,2,1,3,3,3,1,2,3,1,0,1,0,4,2,1,1,3,3,0,4,3,3,1,4,3,3,0,3,3,2,0,0,0,0,1,0,0,2,0,0,0,0,0,4,1,0,2,3,2,2,2,1,3,3,3,4,4,3,2,0,3,1,0,3,3), -(0,4,0,4,0,3,0,3,0,4,4,4,3,3,3,3,3,3,4,3,4,2,4,3,4,3,3,2,4,3,4,5,4,1,4,5,3,5,4,5,3,5,4,0,3,5,5,3,1,3,3,2,2,3,0,3,4,1,3,3,2,4,3,3,3,4,0,4,0,3,0,4,5,4,4,5,3,0,4,1,0,3,4), -(0,2,0,3,0,3,0,0,0,2,2,2,1,0,1,0,0,0,3,0,3,0,3,0,1,3,1,0,3,1,3,3,3,1,3,3,3,0,1,3,1,3,4,0,0,3,1,1,0,3,2,0,0,0,0,1,3,0,1,0,0,3,3,2,0,3,0,0,0,0,0,3,4,3,4,3,3,0,3,0,0,2,3), -(2,3,0,3,0,2,0,1,0,3,3,4,3,1,3,1,1,1,3,1,4,3,4,3,3,3,0,0,3,1,5,4,3,1,4,3,2,5,5,4,4,4,4,3,3,4,4,4,0,2,1,1,3,2,0,1,2,0,0,1,0,4,1,3,3,3,0,3,0,1,0,4,4,4,5,5,3,0,2,0,0,4,4), -(0,2,0,1,0,3,1,3,0,2,3,3,3,0,3,1,0,0,3,0,3,2,3,1,3,2,1,1,0,0,4,2,1,0,2,3,1,4,3,2,0,4,4,3,1,3,1,3,0,1,0,0,1,0,0,0,1,0,0,0,0,4,1,1,1,2,0,3,0,0,0,3,4,2,4,3,2,0,1,0,0,3,3), -(0,1,0,4,0,5,0,4,0,2,4,4,2,3,3,2,3,3,5,3,3,3,4,3,4,2,3,0,4,3,3,3,4,1,4,3,2,1,5,5,3,4,5,1,3,5,4,2,0,3,3,0,1,3,0,4,2,0,1,3,1,4,3,3,3,3,0,3,0,1,0,3,4,4,4,5,5,0,3,0,1,4,5), -(0,2,0,3,0,3,0,0,0,2,3,1,3,0,4,0,1,1,3,0,3,4,3,2,3,1,0,3,3,2,3,1,3,0,2,3,0,2,1,4,1,2,2,0,0,3,3,0,0,2,0,0,0,1,0,0,0,0,2,2,0,3,2,1,3,3,0,2,0,2,0,0,3,3,1,2,4,0,3,0,2,2,3), -(2,4,0,5,0,4,0,4,0,2,4,4,4,3,4,3,3,3,1,2,4,3,4,3,4,4,5,0,3,3,3,3,2,0,4,3,1,4,3,4,1,4,4,3,3,4,4,3,1,2,3,0,4,2,0,4,1,0,3,3,0,4,3,3,3,4,0,4,0,2,0,3,5,3,4,5,2,0,3,0,0,4,5), -(0,3,0,4,0,1,0,1,0,1,3,2,2,1,3,0,3,0,2,0,2,0,3,0,2,0,0,0,1,0,1,1,0,0,3,1,0,0,0,4,0,3,1,0,2,1,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4,2,2,3,1,0,3,0,0,0,1,4,4,4,3,0,0,4,0,0,1,4), -(1,4,1,5,0,3,0,3,0,4,5,4,4,3,5,3,3,4,4,3,4,1,3,3,3,3,2,1,4,1,5,4,3,1,4,4,3,5,4,4,3,5,4,3,3,4,4,4,0,3,3,1,2,3,0,3,1,0,3,3,0,5,4,4,4,4,4,4,3,3,5,4,4,3,3,5,4,0,3,2,0,4,4), -(0,2,0,3,0,1,0,0,0,1,3,3,3,2,4,1,3,0,3,1,3,0,2,2,1,1,0,0,2,0,4,3,1,0,4,3,0,4,4,4,1,4,3,1,1,3,3,1,0,2,0,0,1,3,0,0,0,0,2,0,0,4,3,2,4,3,5,4,3,3,3,4,3,3,4,3,3,0,2,1,0,3,3), -(0,2,0,4,0,3,0,2,0,2,5,5,3,4,4,4,4,1,4,3,3,0,4,3,4,3,1,3,3,2,4,3,0,3,4,3,0,3,4,4,2,4,4,0,4,5,3,3,2,2,1,1,1,2,0,1,5,0,3,3,2,4,3,3,3,4,0,3,0,2,0,4,4,3,5,5,0,0,3,0,2,3,3), -(0,3,0,4,0,3,0,1,0,3,4,3,3,1,3,3,3,0,3,1,3,0,4,3,3,1,1,0,3,0,3,3,0,0,4,4,0,1,5,4,3,3,5,0,3,3,4,3,0,2,0,1,1,1,0,1,3,0,1,2,1,3,3,2,3,3,0,3,0,1,0,1,3,3,4,4,1,0,1,2,2,1,3), -(0,1,0,4,0,4,0,3,0,1,3,3,3,2,3,1,1,0,3,0,3,3,4,3,2,4,2,0,1,0,4,3,2,0,4,3,0,5,3,3,2,4,4,4,3,3,3,4,0,1,3,0,0,1,0,0,1,0,0,0,0,4,2,3,3,3,0,3,0,0,0,4,4,4,5,3,2,0,3,3,0,3,5), -(0,2,0,3,0,0,0,3,0,1,3,0,2,0,0,0,1,0,3,1,1,3,3,0,0,3,0,0,3,0,2,3,1,0,3,1,0,3,3,2,0,4,2,2,0,2,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,2,1,2,0,1,0,1,0,0,0,1,3,1,2,0,0,0,1,0,0,1,4), -(0,3,0,3,0,5,0,1,0,2,4,3,1,3,3,2,1,1,5,2,1,0,5,1,2,0,0,0,3,3,2,2,3,2,4,3,0,0,3,3,1,3,3,0,2,5,3,4,0,3,3,0,1,2,0,2,2,0,3,2,0,2,2,3,3,3,0,2,0,1,0,3,4,4,2,5,4,0,3,0,0,3,5), -(0,3,0,3,0,3,0,1,0,3,3,3,3,0,3,0,2,0,2,1,1,0,2,0,1,0,0,0,2,1,0,0,1,0,3,2,0,0,3,3,1,2,3,1,0,3,3,0,0,1,0,0,0,0,0,2,0,0,0,0,0,2,3,1,2,3,0,3,0,1,0,3,2,1,0,4,3,0,1,1,0,3,3), -(0,4,0,5,0,3,0,3,0,4,5,5,4,3,5,3,4,3,5,3,3,2,5,3,4,4,4,3,4,3,4,5,5,3,4,4,3,4,4,5,4,4,4,3,4,5,5,4,2,3,4,2,3,4,0,3,3,1,4,3,2,4,3,3,5,5,0,3,0,3,0,5,5,5,5,4,4,0,4,0,1,4,4), -(0,4,0,4,0,3,0,3,0,3,5,4,4,2,3,2,5,1,3,2,5,1,4,2,3,2,3,3,4,3,3,3,3,2,5,4,1,3,3,5,3,4,4,0,4,4,3,1,1,3,1,0,2,3,0,2,3,0,3,0,0,4,3,1,3,4,0,3,0,2,0,4,4,4,3,4,5,0,4,0,0,3,4), -(0,3,0,3,0,3,1,2,0,3,4,4,3,3,3,0,2,2,4,3,3,1,3,3,3,1,1,0,3,1,4,3,2,3,4,4,2,4,4,4,3,4,4,3,2,4,4,3,1,3,3,1,3,3,0,4,1,0,2,2,1,4,3,2,3,3,5,4,3,3,5,4,4,3,3,0,4,0,3,2,2,4,4), -(0,2,0,1,0,0,0,0,0,1,2,1,3,0,0,0,0,0,2,0,1,2,1,0,0,1,0,0,0,0,3,0,0,1,0,1,1,3,1,0,0,0,1,1,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,1,2,2,0,3,4,0,0,0,1,1,0,0,1,0,0,0,0,0,1,1), -(0,1,0,0,0,1,0,0,0,0,4,0,4,1,4,0,3,0,4,0,3,0,4,0,3,0,3,0,4,1,5,1,4,0,0,3,0,5,0,5,2,0,1,0,0,0,2,1,4,0,1,3,0,0,3,0,0,3,1,1,4,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), -(1,4,0,5,0,3,0,2,0,3,5,4,4,3,4,3,5,3,4,3,3,0,4,3,3,3,3,3,3,2,4,4,3,1,3,4,4,5,4,4,3,4,4,1,3,5,4,3,3,3,1,2,2,3,3,1,3,1,3,3,3,5,3,3,4,5,0,3,0,3,0,3,4,3,4,4,3,0,3,0,2,4,3), -(0,1,0,4,0,0,0,0,0,1,4,0,4,1,4,2,4,0,3,0,1,0,1,0,0,0,0,0,2,0,3,1,1,1,0,3,0,0,0,1,2,1,0,0,1,1,1,1,0,1,0,0,0,1,0,0,3,0,0,0,0,3,2,0,2,2,0,1,0,0,0,2,3,2,3,3,0,0,0,0,2,1,0), -(0,5,1,5,0,3,0,3,0,5,4,4,5,1,5,3,3,0,4,3,4,3,5,3,4,3,3,2,4,3,4,3,3,0,3,3,1,4,4,3,4,4,4,3,4,5,5,3,2,3,1,1,3,3,1,3,1,1,3,3,2,4,5,3,3,5,0,4,0,3,0,4,4,3,5,3,3,0,3,4,0,4,3), -(0,5,0,5,0,3,0,2,0,4,4,3,5,2,4,3,3,3,4,4,4,3,5,3,5,3,3,1,4,0,4,3,3,0,3,3,0,4,4,4,4,5,4,3,3,5,5,3,2,3,1,2,3,2,0,1,0,0,3,2,2,4,4,3,1,5,0,4,0,3,0,4,3,1,3,2,1,0,3,3,0,3,3), -(0,4,0,5,0,5,0,4,0,4,5,5,5,3,4,3,3,2,5,4,4,3,5,3,5,3,4,0,4,3,4,4,3,2,4,4,3,4,5,4,4,5,5,0,3,5,5,4,1,3,3,2,3,3,1,3,1,0,4,3,1,4,4,3,4,5,0,4,0,2,0,4,3,4,4,3,3,0,4,0,0,5,5), -(0,4,0,4,0,5,0,1,1,3,3,4,4,3,4,1,3,0,5,1,3,0,3,1,3,1,1,0,3,0,3,3,4,0,4,3,0,4,4,4,3,4,4,0,3,5,4,1,0,3,0,0,2,3,0,3,1,0,3,1,0,3,2,1,3,5,0,3,0,1,0,3,2,3,3,4,4,0,2,2,0,4,4), -(2,4,0,5,0,4,0,3,0,4,5,5,4,3,5,3,5,3,5,3,5,2,5,3,4,3,3,4,3,4,5,3,2,1,5,4,3,2,3,4,5,3,4,1,2,5,4,3,0,3,3,0,3,2,0,2,3,0,4,1,0,3,4,3,3,5,0,3,0,1,0,4,5,5,5,4,3,0,4,2,0,3,5), -(0,5,0,4,0,4,0,2,0,5,4,3,4,3,4,3,3,3,4,3,4,2,5,3,5,3,4,1,4,3,4,4,4,0,3,5,0,4,4,4,4,5,3,1,3,4,5,3,3,3,3,3,3,3,0,2,2,0,3,3,2,4,3,3,3,5,3,4,1,3,3,5,3,2,0,0,0,0,4,3,1,3,3), -(0,1,0,3,0,3,0,1,0,1,3,3,3,2,3,3,3,0,3,0,0,0,3,1,3,0,0,0,2,2,2,3,0,0,3,2,0,1,2,4,1,3,3,0,0,3,3,3,0,1,0,0,2,1,0,0,3,0,3,1,0,3,0,0,1,3,0,2,0,1,0,3,3,1,3,3,0,0,1,1,0,3,3), -(0,2,0,3,0,2,1,4,0,2,2,3,1,1,3,1,1,0,2,0,3,1,2,3,1,3,0,0,1,0,4,3,2,3,3,3,1,4,2,3,3,3,3,1,0,3,1,4,0,1,1,0,1,2,0,1,1,0,1,1,0,3,1,3,2,2,0,1,0,0,0,2,3,3,3,1,0,0,0,0,0,2,3), -(0,5,0,4,0,5,0,2,0,4,5,5,3,3,4,3,3,1,5,4,4,2,4,4,4,3,4,2,4,3,5,5,4,3,3,4,3,3,5,5,4,5,5,1,3,4,5,3,1,4,3,1,3,3,0,3,3,1,4,3,1,4,5,3,3,5,0,4,0,3,0,5,3,3,1,4,3,0,4,0,1,5,3), -(0,5,0,5,0,4,0,2,0,4,4,3,4,3,3,3,3,3,5,4,4,4,4,4,4,5,3,3,5,2,4,4,4,3,4,4,3,3,4,4,5,5,3,3,4,3,4,3,3,4,3,3,3,3,1,2,2,1,4,3,3,5,4,4,3,4,0,4,0,3,0,4,4,4,4,4,1,0,4,2,0,2,4), -(0,4,0,4,0,3,0,1,0,3,5,2,3,0,3,0,2,1,4,2,3,3,4,1,4,3,3,2,4,1,3,3,3,0,3,3,0,0,3,3,3,5,3,3,3,3,3,2,0,2,0,0,2,0,0,2,0,0,1,0,0,3,1,2,2,3,0,3,0,2,0,4,4,3,3,4,1,0,3,0,0,2,4), -(0,0,0,4,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,1,0,2,0,1,0,0,0,0,0,3,1,3,0,3,2,0,0,0,1,0,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,2,0,0,0,0,0,0,2), -(0,2,1,3,0,2,0,2,0,3,3,3,3,1,3,1,3,3,3,3,3,3,4,2,2,1,2,1,4,0,4,3,1,3,3,3,2,4,3,5,4,3,3,3,3,3,3,3,0,1,3,0,2,0,0,1,0,0,1,0,0,4,2,0,2,3,0,3,3,0,3,3,4,2,3,1,4,0,1,2,0,2,3), -(0,3,0,3,0,1,0,3,0,2,3,3,3,0,3,1,2,0,3,3,2,3,3,2,3,2,3,1,3,0,4,3,2,0,3,3,1,4,3,3,2,3,4,3,1,3,3,1,1,0,1,1,0,1,0,1,0,1,0,0,0,4,1,1,0,3,0,3,1,0,2,3,3,3,3,3,1,0,0,2,0,3,3), -(0,0,0,0,0,0,0,0,0,0,3,0,2,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,3,0,3,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,0,2,3,0,0,0,0,0,0,0,0,3), -(0,2,0,3,1,3,0,3,0,2,3,3,3,1,3,1,3,1,3,1,3,3,3,1,3,0,2,3,1,1,4,3,3,2,3,3,1,2,2,4,1,3,3,0,1,4,2,3,0,1,3,0,3,0,0,1,3,0,2,0,0,3,3,2,1,3,0,3,0,2,0,3,4,4,4,3,1,0,3,0,0,3,3), -(0,2,0,1,0,2,0,0,0,1,3,2,2,1,3,0,1,1,3,0,3,2,3,1,2,0,2,0,1,1,3,3,3,0,3,3,1,1,2,3,2,3,3,1,2,3,2,0,0,1,0,0,0,0,0,0,3,0,1,0,0,2,1,2,1,3,0,3,0,0,0,3,4,4,4,3,2,0,2,0,0,2,4), -(0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,3,1,0,0,0,0,0,0,0,3), -(0,3,0,3,0,2,0,3,0,3,3,3,2,3,2,2,2,0,3,1,3,3,3,2,3,3,0,0,3,0,3,2,2,0,2,3,1,4,3,4,3,3,2,3,1,5,4,4,0,3,1,2,1,3,0,3,1,1,2,0,2,3,1,3,1,3,0,3,0,1,0,3,3,4,4,2,1,0,2,1,0,2,4), -(0,1,0,3,0,1,0,2,0,1,4,2,5,1,4,0,2,0,2,1,3,1,4,0,2,1,0,0,2,1,4,1,1,0,3,3,0,5,1,3,2,3,3,1,0,3,2,3,0,1,0,0,0,0,0,0,1,0,0,0,0,4,0,1,0,3,0,2,0,1,0,3,3,3,4,3,3,0,0,0,0,2,3), -(0,0,0,1,0,0,0,0,0,0,2,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,1,0,0,0,0,0,3), -(0,1,0,3,0,4,0,3,0,2,4,3,1,0,3,2,2,1,3,1,2,2,3,1,1,1,2,1,3,0,1,2,0,1,3,2,1,3,0,5,5,1,0,0,1,3,2,1,0,3,0,0,1,0,0,0,0,0,3,4,0,1,1,1,3,2,0,2,0,1,0,2,3,3,1,2,3,0,1,0,1,0,4), -(0,0,0,1,0,3,0,3,0,2,2,1,0,0,4,0,3,0,3,1,3,0,3,0,3,0,1,0,3,0,3,1,3,0,3,3,0,0,1,2,1,1,1,0,1,2,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,2,2,1,2,0,0,2,0,0,0,0,2,3,3,3,3,0,0,0,0,1,4), -(0,0,0,3,0,3,0,0,0,0,3,1,1,0,3,0,1,0,2,0,1,0,0,0,0,0,0,0,1,0,3,0,2,0,2,3,0,0,2,2,3,1,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,2,3), -(2,4,0,5,0,5,0,4,0,3,4,3,3,3,4,3,3,3,4,3,4,4,5,4,5,5,5,2,3,0,5,5,4,1,5,4,3,1,5,4,3,4,4,3,3,4,3,3,0,3,2,0,2,3,0,3,0,0,3,3,0,5,3,2,3,3,0,3,0,3,0,3,4,5,4,5,3,0,4,3,0,3,4), -(0,3,0,3,0,3,0,3,0,3,3,4,3,2,3,2,3,0,4,3,3,3,3,3,3,3,3,0,3,2,4,3,3,1,3,4,3,4,4,4,3,4,4,3,2,4,4,1,0,2,0,0,1,1,0,2,0,0,3,1,0,5,3,2,1,3,0,3,0,1,2,4,3,2,4,3,3,0,3,2,0,4,4), -(0,3,0,3,0,1,0,0,0,1,4,3,3,2,3,1,3,1,4,2,3,2,4,2,3,4,3,0,2,2,3,3,3,0,3,3,3,0,3,4,1,3,3,0,3,4,3,3,0,1,1,0,1,0,0,0,4,0,3,0,0,3,1,2,1,3,0,4,0,1,0,4,3,3,4,3,3,0,2,0,0,3,3), -(0,3,0,4,0,1,0,3,0,3,4,3,3,0,3,3,3,1,3,1,3,3,4,3,3,3,0,0,3,1,5,3,3,1,3,3,2,5,4,3,3,4,5,3,2,5,3,4,0,1,0,0,0,0,0,2,0,0,1,1,0,4,2,2,1,3,0,3,0,2,0,4,4,3,5,3,2,0,1,1,0,3,4), -(0,5,0,4,0,5,0,2,0,4,4,3,3,2,3,3,3,1,4,3,4,1,5,3,4,3,4,0,4,2,4,3,4,1,5,4,0,4,4,4,4,5,4,1,3,5,4,2,1,4,1,1,3,2,0,3,1,0,3,2,1,4,3,3,3,4,0,4,0,3,0,4,4,4,3,3,3,0,4,2,0,3,4), -(1,4,0,4,0,3,0,1,0,3,3,3,1,1,3,3,2,2,3,3,1,0,3,2,2,1,2,0,3,1,2,1,2,0,3,2,0,2,2,3,3,4,3,0,3,3,1,2,0,1,1,3,1,2,0,0,3,0,1,1,0,3,2,2,3,3,0,3,0,0,0,2,3,3,4,3,3,0,1,0,0,1,4), -(0,4,0,4,0,4,0,0,0,3,4,4,3,1,4,2,3,2,3,3,3,1,4,3,4,0,3,0,4,2,3,3,2,2,5,4,2,1,3,4,3,4,3,1,3,3,4,2,0,2,1,0,3,3,0,0,2,0,3,1,0,4,4,3,4,3,0,4,0,1,0,2,4,4,4,4,4,0,3,2,0,3,3), -(0,0,0,1,0,4,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,3,2,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2), -(0,2,0,3,0,4,0,4,0,1,3,3,3,0,4,0,2,1,2,1,1,1,2,0,3,1,1,0,1,0,3,1,0,0,3,3,2,0,1,1,0,0,0,0,0,1,0,2,0,2,2,0,3,1,0,0,1,0,1,1,0,1,2,0,3,0,0,0,0,1,0,0,3,3,4,3,1,0,1,0,3,0,2), -(0,0,0,3,0,5,0,0,0,0,1,0,2,0,3,1,0,1,3,0,0,0,2,0,0,0,1,0,0,0,1,1,0,0,4,0,0,0,2,3,0,1,4,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,3,0,0,0,0,0,3), -(0,2,0,5,0,5,0,1,0,2,4,3,3,2,5,1,3,2,3,3,3,0,4,1,2,0,3,0,4,0,2,2,1,1,5,3,0,0,1,4,2,3,2,0,3,3,3,2,0,2,4,1,1,2,0,1,1,0,3,1,0,1,3,1,2,3,0,2,0,0,0,1,3,5,4,4,4,0,3,0,0,1,3), -(0,4,0,5,0,4,0,4,0,4,5,4,3,3,4,3,3,3,4,3,4,4,5,3,4,5,4,2,4,2,3,4,3,1,4,4,1,3,5,4,4,5,5,4,4,5,5,5,2,3,3,1,4,3,1,3,3,0,3,3,1,4,3,4,4,4,0,3,0,4,0,3,3,4,4,5,0,0,4,3,0,4,5), -(0,4,0,4,0,3,0,3,0,3,4,4,4,3,3,2,4,3,4,3,4,3,5,3,4,3,2,1,4,2,4,4,3,1,3,4,2,4,5,5,3,4,5,4,1,5,4,3,0,3,2,2,3,2,1,3,1,0,3,3,3,5,3,3,3,5,4,4,2,3,3,4,3,3,3,2,1,0,3,2,1,4,3), -(0,4,0,5,0,4,0,3,0,3,5,5,3,2,4,3,4,0,5,4,4,1,4,4,4,3,3,3,4,3,5,5,2,3,3,4,1,2,5,5,3,5,5,2,3,5,5,4,0,3,2,0,3,3,1,1,5,1,4,1,0,4,3,2,3,5,0,4,0,3,0,5,4,3,4,3,0,0,4,1,0,4,4), -(1,3,0,4,0,2,0,2,0,2,5,5,3,3,3,3,3,0,4,2,3,4,4,4,3,4,0,0,3,4,5,4,3,3,3,3,2,5,5,4,5,5,5,4,3,5,5,5,1,3,1,0,1,0,0,3,2,0,4,2,0,5,2,3,2,4,1,3,0,3,0,4,5,4,5,4,3,0,4,2,0,5,4), -(0,3,0,4,0,5,0,3,0,3,4,4,3,2,3,2,3,3,3,3,3,2,4,3,3,2,2,0,3,3,3,3,3,1,3,3,3,0,4,4,3,4,4,1,1,4,4,2,0,3,1,0,1,1,0,4,1,0,2,3,1,3,3,1,3,4,0,3,0,1,0,3,1,3,0,0,1,0,2,0,0,4,4), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), -(0,3,0,3,0,2,0,3,0,1,5,4,3,3,3,1,4,2,1,2,3,4,4,2,4,4,5,0,3,1,4,3,4,0,4,3,3,3,2,3,2,5,3,4,3,2,2,3,0,0,3,0,2,1,0,1,2,0,0,0,0,2,1,1,3,1,0,2,0,4,0,3,4,4,4,5,2,0,2,0,0,1,3), -(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,4,2,1,1,0,1,0,3,2,0,0,3,1,1,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1,0,0,0,2,0,0,0,1,4,0,4,2,1,0,0,0,0,0,1), -(0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,3,1,0,0,0,2,0,2,1,0,0,1,2,1,0,1,1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,1,3,1,0,0,0,0,0,1,0,0,2,1,0,0,0,0,0,0,0,0,2), -(0,4,0,4,0,4,0,3,0,4,4,3,4,2,4,3,2,0,4,4,4,3,5,3,5,3,3,2,4,2,4,3,4,3,1,4,0,2,3,4,4,4,3,3,3,4,4,4,3,4,1,3,4,3,2,1,2,1,3,3,3,4,4,3,3,5,0,4,0,3,0,4,3,3,3,2,1,0,3,0,0,3,3), -(0,4,0,3,0,3,0,3,0,3,5,5,3,3,3,3,4,3,4,3,3,3,4,4,4,3,3,3,3,4,3,5,3,3,1,3,2,4,5,5,5,5,4,3,4,5,5,3,2,2,3,3,3,3,2,3,3,1,2,3,2,4,3,3,3,4,0,4,0,2,0,4,3,2,2,1,2,0,3,0,0,4,1), -) - -class JapaneseContextAnalysis(object): - NUM_OF_CATEGORY = 6 - DONT_KNOW = -1 - ENOUGH_REL_THRESHOLD = 100 - MAX_REL_THRESHOLD = 1000 - MINIMUM_DATA_THRESHOLD = 4 - - def __init__(self): - self._total_rel = None - self._rel_sample = None - self._need_to_skip_char_num = None - self._last_char_order = None - self._done = None - self.reset() - - def reset(self): - self._total_rel = 0 # total sequence received - # category counters, each integer counts sequence in its category - self._rel_sample = [0] * self.NUM_OF_CATEGORY - # if last byte in current buffer is not the last byte of a character, - # we need to know how many bytes to skip in next buffer - self._need_to_skip_char_num = 0 - self._last_char_order = -1 # The order of previous char - # If this flag is set to True, detection is done and conclusion has - # been made - self._done = False - - def feed(self, byte_str, num_bytes): - if self._done: - return - - # The buffer we got is byte oriented, and a character may span in more than one - # buffers. In case the last one or two byte in last buffer is not - # complete, we record how many byte needed to complete that character - # and skip these bytes here. We can choose to record those bytes as - # well and analyse the character once it is complete, but since a - # character will not make much difference, by simply skipping - # this character will simply our logic and improve performance. - i = self._need_to_skip_char_num - while i < num_bytes: - order, char_len = self.get_order(byte_str[i:i + 2]) - i += char_len - if i > num_bytes: - self._need_to_skip_char_num = i - num_bytes - self._last_char_order = -1 - else: - if (order != -1) and (self._last_char_order != -1): - self._total_rel += 1 - if self._total_rel > self.MAX_REL_THRESHOLD: - self._done = True - break - self._rel_sample[jp2CharContext[self._last_char_order][order]] += 1 - self._last_char_order = order - - def got_enough_data(self): - return self._total_rel > self.ENOUGH_REL_THRESHOLD - - def get_confidence(self): - # This is just one way to calculate confidence. It works well for me. - if self._total_rel > self.MINIMUM_DATA_THRESHOLD: - return (self._total_rel - self._rel_sample[0]) / self._total_rel - else: - return self.DONT_KNOW - - def get_order(self, byte_str): - return -1, 1 - -class SJISContextAnalysis(JapaneseContextAnalysis): - def __init__(self): - super(SJISContextAnalysis, self).__init__() - self._charset_name = "SHIFT_JIS" - - @property - def charset_name(self): - return self._charset_name - - def get_order(self, byte_str): - if not byte_str: - return -1, 1 - # find out current char's byte length - first_char = byte_str[0] - if (0x81 <= first_char <= 0x9F) or (0xE0 <= first_char <= 0xFC): - char_len = 2 - if (first_char == 0x87) or (0xFA <= first_char <= 0xFC): - self._charset_name = "CP932" - else: - char_len = 1 - - # return its order if it is hiragana - if len(byte_str) > 1: - second_char = byte_str[1] - if (first_char == 202) and (0x9F <= second_char <= 0xF1): - return second_char - 0x9F, char_len - - return -1, char_len - -class EUCJPContextAnalysis(JapaneseContextAnalysis): - def get_order(self, byte_str): - if not byte_str: - return -1, 1 - # find out current char's byte length - first_char = byte_str[0] - if (first_char == 0x8E) or (0xA1 <= first_char <= 0xFE): - char_len = 2 - elif first_char == 0x8F: - char_len = 3 - else: - char_len = 1 - - # return its order if it is hiragana - if len(byte_str) > 1: - second_char = byte_str[1] - if (first_char == 0xA4) and (0xA1 <= second_char <= 0xF3): - return second_char - 0xA1, char_len - - return -1, char_len - - diff --git a/env/lib/python3.6/site-packages/chardet/langbulgarianmodel.py b/env/lib/python3.6/site-packages/chardet/langbulgarianmodel.py deleted file mode 100644 index 2aa4fb2..0000000 --- a/env/lib/python3.6/site-packages/chardet/langbulgarianmodel.py +++ /dev/null @@ -1,228 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -# this table is modified base on win1251BulgarianCharToOrderMap, so -# only number <64 is sure valid - -Latin5_BulgarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 -110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 -253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 -116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 -194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, # 80 -210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225, # 90 - 81,226,227,228,229,230,105,231,232,233,234,235,236, 45,237,238, # a0 - 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # b0 - 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,239, 67,240, 60, 56, # c0 - 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # d0 - 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,241, 42, 16, # e0 - 62,242,243,244, 58,245, 98,246,247,248,249,250,251, 91,252,253, # f0 -) - -win1251BulgarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 77, 90, 99,100, 72,109,107,101, 79,185, 81,102, 76, 94, 82, # 40 -110,186,108, 91, 74,119, 84, 96,111,187,115,253,253,253,253,253, # 50 -253, 65, 69, 70, 66, 63, 68,112,103, 92,194,104, 95, 86, 87, 71, # 60 -116,195, 85, 93, 97,113,196,197,198,199,200,253,253,253,253,253, # 70 -206,207,208,209,210,211,212,213,120,214,215,216,217,218,219,220, # 80 -221, 78, 64, 83,121, 98,117,105,222,223,224,225,226,227,228,229, # 90 - 88,230,231,232,233,122, 89,106,234,235,236,237,238, 45,239,240, # a0 - 73, 80,118,114,241,242,243,244,245, 62, 58,246,247,248,249,250, # b0 - 31, 32, 35, 43, 37, 44, 55, 47, 40, 59, 33, 46, 38, 36, 41, 30, # c0 - 39, 28, 34, 51, 48, 49, 53, 50, 54, 57, 61,251, 67,252, 60, 56, # d0 - 1, 18, 9, 20, 11, 3, 23, 15, 2, 26, 12, 10, 14, 6, 4, 13, # e0 - 7, 8, 5, 19, 29, 25, 22, 21, 27, 24, 17, 75, 52,253, 42, 16, # f0 -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 96.9392% -# first 1024 sequences:3.0618% -# rest sequences: 0.2992% -# negative sequences: 0.0020% -BulgarianLangModel = ( -0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,3,3,3,3,3, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,2,2,1,2,2, -3,1,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,0,1, -0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,0,3,1,0, -0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,3,3,3,3,3,0,3,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,2,3,2,2,1,3,3,3,3,2,2,2,1,1,2,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,2,3,2,2,3,3,1,1,2,3,3,2,3,3,3,3,2,1,2,0,2,0,3,0,0, -0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,1,3,3,3,3,3,2,3,2,3,3,3,3,3,2,3,3,1,3,0,3,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,1,3,3,2,3,3,3,1,3,3,2,3,2,2,2,0,0,2,0,2,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,0,3,3,3,2,2,3,3,3,1,2,2,3,2,1,1,2,0,2,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,2,3,3,1,2,3,2,2,2,3,3,3,3,3,2,2,3,1,2,0,2,1,2,0,0, -0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,1,3,3,3,3,3,2,3,3,3,2,3,3,2,3,2,2,2,3,1,2,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,3,3,1,1,1,2,2,1,3,1,3,2,2,3,0,0,1,0,1,0,1,0,0, -0,0,0,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,2,2,3,2,2,3,1,2,1,1,1,2,3,1,3,1,2,2,0,1,1,1,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,1,3,2,2,3,3,1,2,3,1,1,3,3,3,3,1,2,2,1,1,1,0,2,0,2,0,1, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,2,3,3,3,2,2,1,1,2,0,2,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,0,1,2,1,3,3,2,3,3,3,3,3,2,3,2,1,0,3,1,2,1,2,1,2,3,2,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,2,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,1,3,3,2,3,3,2,2,2,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,0,3,3,3,3,3,2,1,1,2,1,3,3,0,3,1,1,1,1,3,2,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,3,1,1,3,1,3,3,2,3,2,2,2,3,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,2,3,3,2,2,3,2,1,1,1,1,1,3,1,3,1,1,0,0,0,1,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,2,3,2,0,3,2,0,3,0,2,0,0,2,1,3,1,0,0,1,0,0,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,2,1,1,1,1,2,1,1,2,1,1,1,2,2,1,2,1,1,1,0,1,1,0,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,2,1,3,1,1,2,1,3,2,1,1,0,1,2,3,2,1,1,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,2,2,1,0,1,0,0,1,0,0,0,2,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,2,3,2,3,3,1,3,2,1,1,1,2,1,1,2,1,3,0,1,0,0,0,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,2,2,3,3,2,3,2,2,2,3,1,2,2,1,1,2,1,1,2,2,0,1,1,0,1,0,2,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,1,3,1,0,2,2,1,3,2,1,0,0,2,0,2,0,1,0,0,0,0,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,3,1,2,0,2,3,1,2,3,2,0,1,3,1,2,1,1,1,0,0,1,0,0,2,2,2,3, -2,2,2,2,1,2,1,1,2,2,1,1,2,0,1,1,1,0,0,1,1,0,0,1,1,0,0,0,1,1,0,1, -3,3,3,3,3,2,1,2,2,1,2,0,2,0,1,0,1,2,1,2,1,1,0,0,0,1,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1, -3,3,2,3,3,1,1,3,1,0,3,2,1,0,0,0,1,2,0,2,0,1,0,0,0,1,0,1,2,1,2,2, -1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,0,1,2,1,1,1,0,0,0,0,0,1,1,0,0, -3,1,0,1,0,2,3,2,2,2,3,2,2,2,2,2,1,0,2,1,2,1,1,1,0,1,2,1,2,2,2,1, -1,1,2,2,2,2,1,2,1,1,0,1,2,1,2,2,2,1,1,1,0,1,1,1,1,2,0,1,0,0,0,0, -2,3,2,3,3,0,0,2,1,0,2,1,0,0,0,0,2,3,0,2,0,0,0,0,0,1,0,0,2,0,1,2, -2,1,2,1,2,2,1,1,1,2,1,1,1,0,1,2,2,1,1,1,1,1,0,1,1,1,0,0,1,2,0,0, -3,3,2,2,3,0,2,3,1,1,2,0,0,0,1,0,0,2,0,2,0,0,0,1,0,1,0,1,2,0,2,2, -1,1,1,1,2,1,0,1,2,2,2,1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,0,0, -2,3,2,3,3,0,0,3,0,1,1,0,1,0,0,0,2,2,1,2,0,0,0,0,0,0,0,0,2,0,1,2, -2,2,1,1,1,1,1,2,2,2,1,0,2,0,1,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0, -3,3,3,3,2,2,2,2,2,0,2,1,1,1,1,2,1,2,1,1,0,2,0,1,0,1,0,0,2,0,1,2, -1,1,1,1,1,1,1,2,2,1,1,0,2,0,1,0,2,0,0,1,1,1,0,0,2,0,0,0,1,1,0,0, -2,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,1,2,0,1,2, -2,2,2,1,1,2,1,1,2,2,2,1,2,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0, -2,3,3,3,3,0,2,2,0,2,1,0,0,0,1,1,1,2,0,2,0,0,0,3,0,0,0,0,2,0,2,2, -1,1,1,2,1,2,1,1,2,2,2,1,2,0,1,1,1,0,1,1,1,1,0,2,1,0,0,0,1,1,0,0, -2,3,3,3,3,0,2,1,0,0,2,0,0,0,0,0,1,2,0,2,0,0,0,0,0,0,0,0,2,0,1,2, -1,1,1,2,1,1,1,1,2,2,2,0,1,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,0,1,0,0, -3,3,2,2,3,0,1,0,1,0,0,0,0,0,0,0,1,1,0,3,0,0,0,0,0,0,0,0,1,0,2,2, -1,1,1,1,1,2,1,1,2,2,1,2,2,1,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,0,0, -3,1,0,1,0,2,2,2,2,3,2,1,1,1,2,3,0,0,1,0,2,1,1,0,1,1,1,1,2,1,1,1, -1,2,2,1,2,1,2,2,1,1,0,1,2,1,2,2,1,1,1,0,0,1,1,1,2,1,0,1,0,0,0,0, -2,1,0,1,0,3,1,2,2,2,2,1,2,2,1,1,1,0,2,1,2,2,1,1,2,1,1,0,2,1,1,1, -1,2,2,2,2,2,2,2,1,2,0,1,1,0,2,1,1,1,1,1,0,0,1,1,1,1,0,1,0,0,0,0, -2,1,1,1,1,2,2,2,2,1,2,2,2,1,2,2,1,1,2,1,2,3,2,2,1,1,1,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,3,2,0,1,2,0,1,2,1,1,0,1,0,1,2,1,2,0,0,0,1,1,0,0,0,1,0,0,2, -1,1,0,0,1,1,0,1,1,1,1,0,2,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1,0,0, -2,0,0,0,0,1,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1, -1,2,2,2,2,1,1,2,1,2,1,1,1,0,2,1,2,1,1,1,0,2,1,1,1,1,0,1,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, -1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,3,2,0,0,0,0,1,0,0,0,0,0,0,1,1,0,2,0,0,0,0,0,0,0,0,1,0,1,2, -1,1,1,1,1,1,0,0,2,2,2,2,2,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,1,1,0,1, -2,3,1,2,1,0,1,1,0,2,2,2,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,1,2, -1,1,1,1,2,1,1,1,1,1,1,1,1,0,1,1,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0, -2,2,2,2,2,0,0,2,0,0,2,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,0,2,2, -1,1,1,1,1,0,0,1,2,1,1,0,1,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,0,2,0,1,1,0,0,0,1,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,1,1, -0,0,0,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,3,2,0,0,1,0,0,1,0,0,0,0,0,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,2, -1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -2,1,2,2,2,1,2,1,2,2,1,1,2,1,1,1,0,1,1,1,1,2,0,1,0,1,1,1,1,0,1,1, -1,1,2,1,1,1,1,1,1,0,0,1,2,1,1,1,1,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0, -1,0,0,1,3,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,1,0,0,1,0,2,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,2,0,0,1, -0,2,0,1,0,0,1,1,2,0,1,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,1,1,0,2,1,0,1,1,1,0,0,1,0,2,0,1,0,0,0,0,0,0,0,0,0,1, -0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,2,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, -0,1,0,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -2,0,1,0,0,1,2,1,1,1,1,1,1,2,2,1,0,0,1,0,1,0,0,0,0,1,1,1,1,0,0,0, -1,1,2,1,1,1,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,1,2,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -0,1,1,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, -1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,2,0,0,2,0,1,0,0,1,0,0,1, -1,1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0, -1,1,1,1,1,1,1,2,0,0,0,0,0,0,2,1,0,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -) - -Latin5BulgarianModel = { - 'char_to_order_map': Latin5_BulgarianCharToOrderMap, - 'precedence_matrix': BulgarianLangModel, - 'typical_positive_ratio': 0.969392, - 'keep_english_letter': False, - 'charset_name': "ISO-8859-5", - 'language': 'Bulgairan', -} - -Win1251BulgarianModel = { - 'char_to_order_map': win1251BulgarianCharToOrderMap, - 'precedence_matrix': BulgarianLangModel, - 'typical_positive_ratio': 0.969392, - 'keep_english_letter': False, - 'charset_name': "windows-1251", - 'language': 'Bulgarian', -} diff --git a/env/lib/python3.6/site-packages/chardet/langcyrillicmodel.py b/env/lib/python3.6/site-packages/chardet/langcyrillicmodel.py deleted file mode 100644 index e5f9a1f..0000000 --- a/env/lib/python3.6/site-packages/chardet/langcyrillicmodel.py +++ /dev/null @@ -1,333 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# KOI8-R language model -# Character Mapping Table: -KOI8R_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, # 80 -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, # 90 -223,224,225, 68,226,227,228,229,230,231,232,233,234,235,236,237, # a0 -238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, # b0 - 27, 3, 21, 28, 13, 2, 39, 19, 26, 4, 23, 11, 8, 12, 5, 1, # c0 - 15, 16, 9, 7, 6, 14, 24, 10, 17, 18, 20, 25, 30, 29, 22, 54, # d0 - 59, 37, 44, 58, 41, 48, 53, 46, 55, 42, 60, 36, 49, 38, 31, 34, # e0 - 35, 43, 45, 32, 40, 52, 56, 33, 61, 62, 51, 57, 47, 63, 50, 70, # f0 -) - -win1251_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, -239,240,241,242,243,244,245,246, 68,247,248,249,250,251,252,253, - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, -) - -latin5_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, -239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, -) - -macCyrillic_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, -239,240,241,242,243,244,245,246,247,248,249,250,251,252, 68, 16, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27,255, -) - -IBM855_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 -191,192,193,194, 68,195,196,197,198,199,200,201,202,203,204,205, -206,207,208,209,210,211,212,213,214,215,216,217, 27, 59, 54, 70, - 3, 37, 21, 44, 28, 58, 13, 41, 2, 48, 39, 53, 19, 46,218,219, -220,221,222,223,224, 26, 55, 4, 42,225,226,227,228, 23, 60,229, -230,231,232,233,234,235, 11, 36,236,237,238,239,240,241,242,243, - 8, 49, 12, 38, 5, 31, 1, 34, 15,244,245,246,247, 35, 16,248, - 43, 9, 45, 7, 32, 6, 40, 14, 52, 24, 56, 10, 33, 17, 61,249, -250, 18, 62, 20, 51, 25, 57, 30, 47, 29, 63, 22, 50,251,252,255, -) - -IBM866_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,142,143,144,145,146,147,148,149,150,151,152, 74,153, 75,154, # 40 -155,156,157,158,159,160,161,162,163,164,165,253,253,253,253,253, # 50 -253, 71,172, 66,173, 65,174, 76,175, 64,176,177, 77, 72,178, 69, # 60 - 67,179, 78, 73,180,181, 79,182,183,184,185,253,253,253,253,253, # 70 - 37, 44, 33, 46, 41, 48, 56, 51, 42, 60, 36, 49, 38, 31, 34, 35, - 45, 32, 40, 52, 53, 55, 58, 50, 57, 63, 70, 62, 61, 47, 59, 43, - 3, 21, 10, 19, 13, 2, 24, 20, 4, 23, 11, 8, 12, 5, 1, 15, -191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206, -207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222, -223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238, - 9, 7, 6, 14, 39, 26, 28, 22, 25, 29, 54, 18, 17, 30, 27, 16, -239, 68,240,241,242,243,244,245,246,247,248,249,250,251,252,255, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 97.6601% -# first 1024 sequences: 2.3389% -# rest sequences: 0.1237% -# negative sequences: 0.0009% -RussianLangModel = ( -0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,3,3,3,3,1,3,3,3,2,3,2,3,3, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,2,2,2,2,2,0,0,2, -3,3,3,2,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,2,3,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,2,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,2,3,3,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, -0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,2,1, -0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,2,2,2,3,1,3,3,1,3,3,3,3,2,2,3,0,2,2,2,3,3,2,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,3,3,3,2,2,3,2,3,3,3,2,1,2,2,0,1,2,2,2,2,2,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,3,0,2,2,3,3,2,1,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,1,2,3,2,2,3,2,3,3,3,3,2,2,3,0,3,2,2,3,1,1,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,3,3,3,3,2,2,2,0,3,3,3,2,2,2,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,2,3,2,3,3,3,3,3,3,2,3,2,2,0,1,3,2,1,2,2,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,2,1,1,3,0,1,1,1,1,2,1,1,0,2,2,2,1,2,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,2,2,2,2,1,3,2,3,2,3,2,1,2,2,0,1,1,2,1,2,1,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,2,3,3,3,2,2,2,2,0,2,2,2,2,3,1,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,2,3,2,2,3,3,3,3,3,3,3,3,3,1,3,2,0,0,3,3,3,3,2,3,3,3,3,2,3,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,3,2,2,3,3,0,2,1,0,3,2,3,2,3,0,0,1,2,0,0,1,0,1,2,1,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,3,0,2,3,3,3,3,2,3,3,3,3,1,2,2,0,0,2,3,2,2,2,3,2,3,2,2,3,0,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,0,2,3,2,3,0,1,2,3,3,2,0,2,3,0,0,2,3,2,2,0,1,3,1,3,2,2,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,3,0,2,3,3,3,3,3,3,3,3,2,1,3,2,0,0,2,2,3,3,3,2,3,3,0,2,2,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,2,3,3,2,2,2,3,3,0,0,1,1,1,1,1,2,0,0,1,1,1,1,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,0,3,2,3,3,2,3,2,0,2,1,0,1,1,0,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,3,2,2,2,2,3,1,3,2,3,1,1,2,1,0,2,2,2,2,1,3,1,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -2,2,3,3,3,3,3,1,2,2,1,3,1,0,3,0,0,3,0,0,0,1,1,0,1,2,1,0,0,0,0,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,2,1,1,3,3,3,2,2,1,2,2,3,1,1,2,0,0,2,2,1,3,0,0,2,1,1,2,1,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,3,3,3,1,2,2,2,1,2,1,3,3,1,1,2,1,2,1,2,2,0,2,0,0,1,1,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,3,2,1,3,2,2,3,2,0,3,2,0,3,0,1,0,1,1,0,0,1,1,1,1,0,1,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,3,3,3,2,2,2,3,3,1,2,1,2,1,0,1,0,1,1,0,1,0,0,2,1,1,1,0,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -3,1,1,2,1,2,3,3,2,2,1,2,2,3,0,2,1,0,0,2,2,3,2,1,2,2,2,2,2,3,1,0, -0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,1,1,0,1,1,2,2,1,1,3,0,0,1,3,1,1,1,0,0,0,1,0,1,1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,3,3,3,2,0,0,0,2,1,0,1,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,1,0,0,2,3,2,2,2,1,2,2,2,1,2,1,0,0,1,1,1,0,2,0,1,1,1,0,0,1,1, -1,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,3,0,0,0,0,1,0,0,0,0,3,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,1,1, -1,0,1,0,1,2,0,0,1,1,2,1,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0, -2,2,3,2,2,2,3,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,1,0,1,1,1,0,2,1, -1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,1,0,1,1,0, -3,3,3,2,2,2,2,3,2,2,1,1,2,2,2,2,1,1,3,1,2,1,2,0,0,1,1,0,1,0,2,1, -1,1,1,1,1,2,1,0,1,1,1,1,0,1,0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,1,1,0, -2,0,0,1,0,3,2,2,2,2,1,2,1,2,1,2,0,0,0,2,1,2,2,1,1,2,2,0,1,1,0,2, -1,1,1,1,1,0,1,1,1,2,1,1,1,2,1,0,1,2,1,1,1,1,0,1,1,1,0,0,1,0,0,1, -1,3,2,2,2,1,1,1,2,3,0,0,0,0,2,0,2,2,1,0,0,0,0,0,0,1,0,0,0,0,1,1, -1,0,1,1,0,1,0,1,1,0,1,1,0,2,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, -2,3,2,3,2,1,2,2,2,2,1,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,2,1, -1,1,2,1,0,2,0,0,1,0,1,0,0,1,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0, -3,0,0,1,0,2,2,2,3,2,2,2,2,2,2,2,0,0,0,2,1,2,1,1,1,2,2,0,0,0,1,2, -1,1,1,1,1,0,1,2,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1, -2,3,2,3,3,2,0,1,1,1,0,0,1,0,2,0,1,1,3,1,0,0,0,0,0,0,0,1,0,0,2,1, -1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,0,0,0,1,0, -2,3,3,3,3,1,2,2,2,2,0,1,1,0,2,1,1,1,2,1,0,1,1,0,0,1,0,1,0,0,2,0, -0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,3,3,2,0,0,1,1,2,2,1,0,0,2,0,1,1,3,0,0,1,0,0,0,0,0,1,0,1,2,1, -1,1,2,0,1,1,1,0,1,0,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,1,0, -1,3,2,3,2,1,0,0,2,2,2,0,1,0,2,0,1,1,1,0,1,0,0,0,3,0,1,1,0,0,2,1, -1,1,1,0,1,1,0,0,0,0,1,1,0,1,0,0,2,1,1,0,1,0,0,0,1,0,1,0,0,1,1,0, -3,1,2,1,1,2,2,2,2,2,2,1,2,2,1,1,0,0,0,2,2,2,0,0,0,1,2,1,0,1,0,1, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,1,1,1,0,1,0,1,1,0,1,1,1,0,0,1, -3,0,0,0,0,2,0,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,0,1,0,1,1,0,0,1,0,1, -1,1,0,0,1,0,0,0,1,0,1,1,0,0,1,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1, -1,3,3,2,2,0,0,0,2,2,0,0,0,1,2,0,1,1,2,0,0,0,0,0,0,0,0,1,0,0,2,1, -0,1,1,0,0,1,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0, -2,3,2,3,2,0,0,0,0,1,1,0,0,0,2,0,2,0,2,0,0,0,0,0,1,0,0,1,0,0,1,1, -1,1,2,0,1,2,1,0,1,1,2,1,1,1,1,1,2,1,1,0,1,0,0,1,1,1,1,1,0,1,1,0, -1,3,2,2,2,1,0,0,2,2,1,0,1,2,2,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,1,1, -0,0,1,1,0,1,1,0,0,1,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,0,2,3,1,2,2,2,2,2,2,1,1,0,0,0,1,0,1,0,2,1,1,1,0,0,0,0,1, -1,1,0,1,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -2,0,2,0,0,1,0,3,2,1,2,1,2,2,0,1,0,0,0,2,1,0,0,2,1,1,1,1,0,2,0,2, -2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1, -1,2,2,2,2,1,0,0,1,0,0,0,0,0,2,0,1,1,1,1,0,0,0,0,1,0,1,2,0,0,2,0, -1,0,1,1,1,2,1,0,1,0,1,1,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,0, -2,1,2,2,2,0,3,0,1,1,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,0,1,1,1,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0, -1,2,2,3,2,2,0,0,1,1,2,0,1,2,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1, -0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0, -2,2,1,1,2,1,2,2,2,2,2,1,2,2,0,1,0,0,0,1,2,2,2,1,2,1,1,1,1,1,2,1, -1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,0,1, -1,2,2,2,2,0,1,0,2,2,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0, -0,0,1,0,0,1,0,0,0,0,1,0,1,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,0,0,2,2,2,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1, -0,1,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,2,0,0,0,0,1,0,0,1,1,2,0,0,0,0,1,0,1,0,0,1,0,0,2,0,0,0,1, -0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0, -1,2,2,2,1,1,2,0,2,1,1,1,1,0,2,2,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,1, -0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -1,0,2,1,2,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0, -0,0,1,0,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, -1,0,0,0,0,2,0,1,2,1,0,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1, -0,0,0,0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1, -2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,1,1,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,1,0,1,1,0,1,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,1,1,0,1,0,0,0, -0,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, -) - -Koi8rModel = { - 'char_to_order_map': KOI8R_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "KOI8-R", - 'language': 'Russian', -} - -Win1251CyrillicModel = { - 'char_to_order_map': win1251_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "windows-1251", - 'language': 'Russian', -} - -Latin5CyrillicModel = { - 'char_to_order_map': latin5_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "ISO-8859-5", - 'language': 'Russian', -} - -MacCyrillicModel = { - 'char_to_order_map': macCyrillic_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "MacCyrillic", - 'language': 'Russian', -} - -Ibm866Model = { - 'char_to_order_map': IBM866_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "IBM866", - 'language': 'Russian', -} - -Ibm855Model = { - 'char_to_order_map': IBM855_char_to_order_map, - 'precedence_matrix': RussianLangModel, - 'typical_positive_ratio': 0.976601, - 'keep_english_letter': False, - 'charset_name': "IBM855", - 'language': 'Russian', -} diff --git a/env/lib/python3.6/site-packages/chardet/langgreekmodel.py b/env/lib/python3.6/site-packages/chardet/langgreekmodel.py deleted file mode 100644 index 5332221..0000000 --- a/env/lib/python3.6/site-packages/chardet/langgreekmodel.py +++ /dev/null @@ -1,225 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -Latin7_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40 - 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50 -253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60 - 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90 -253,233, 90,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0 -253,253,253,253,247,248, 61, 36, 46, 71, 73,253, 54,253,108,123, # b0 -110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0 - 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0 -124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0 - 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 -) - -win1253_char_to_order_map = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 82,100,104, 94, 98,101,116,102,111,187,117, 92, 88,113, 85, # 40 - 79,118,105, 83, 67,114,119, 95, 99,109,188,253,253,253,253,253, # 50 -253, 72, 70, 80, 81, 60, 96, 93, 89, 68,120, 97, 77, 86, 69, 55, # 60 - 78,115, 65, 66, 58, 76,106,103, 87,107,112,253,253,253,253,253, # 70 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 80 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 90 -253,233, 61,253,253,253,253,253,253,253,253,253,253, 74,253,253, # a0 -253,253,253,253,247,253,253, 36, 46, 71, 73,253, 54,253,108,123, # b0 -110, 31, 51, 43, 41, 34, 91, 40, 52, 47, 44, 53, 38, 49, 59, 39, # c0 - 35, 48,250, 37, 33, 45, 56, 50, 84, 57,120,121, 17, 18, 22, 15, # d0 -124, 1, 29, 20, 21, 3, 32, 13, 25, 5, 11, 16, 10, 6, 30, 4, # e0 - 9, 8, 14, 7, 2, 12, 28, 23, 42, 24, 64, 75, 19, 26, 27,253, # f0 -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 98.2851% -# first 1024 sequences:1.7001% -# rest sequences: 0.0359% -# negative sequences: 0.0148% -GreekLangModel = ( -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,2,2,3,3,3,3,3,3,3,3,1,3,3,3,0,2,2,3,3,0,3,0,3,2,0,3,3,3,0, -3,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,0,3,3,0,3,2,3,3,0,3,2,3,3,3,0,0,3,0,3,0,3,3,2,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -0,2,3,2,2,3,3,3,3,3,3,3,3,0,3,3,3,3,0,2,3,3,0,3,3,3,3,2,3,3,3,0, -2,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,1,3,3,3,3,2,3,3,2,3,3,2,0, -0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,3,0,3,2,3,3,0, -2,0,1,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,3,0,0,0,0,3,3,0,3,1,3,3,3,0,3,3,0,3,3,3,3,0,0,0,0, -2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,0,3,0,3,3,3,3,3,0,3,2,2,2,3,0,2,3,3,3,3,3,2,3,3,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,3,2,2,2,3,3,3,3,0,3,1,3,3,3,3,2,3,3,3,3,3,3,3,2,2,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,0,3,0,0,0,3,3,2,3,3,3,3,3,0,0,3,2,3,0,2,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,3,0,0,3,3,0,2,3,0,3,0,3,3,3,0,0,3,0,3,0,2,2,3,3,0,0, -0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,0,3,2,3,3,3,3,0,3,3,3,3,3,0,3,3,2,3,2,3,3,2,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,2,3,2,3,3,3,3,3,3,0,2,3,2,3,2,2,2,3,2,3,3,2,3,0,2,2,2,3,0, -2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,0,3,3,3,2,3,3,0,0,3,0,3,0,0,0,3,2,0,3,0,3,0,0,2,0,2,0, -0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,0,3,3,3,3,3,3,0,3,3,0,3,0,0,0,3,3,0,3,3,3,0,0,1,2,3,0, -3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,2,0,0,3,2,2,3,3,0,3,3,3,3,3,2,1,3,0,3,2,3,3,2,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,3,0,2,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,3,0,3,2,3,0,0,3,3,3,0, -3,0,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,0,3,3,3,3,3,3,0,0,3,0,3,0,0,0,3,2,0,3,2,3,0,0,3,2,3,0, -2,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,1,2,2,3,3,3,3,3,3,0,2,3,0,3,0,0,0,3,3,0,3,0,2,0,0,2,3,1,0, -2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,3,0,3,0,3,3,2,3,0,3,3,3,3,3,3,0,3,3,3,0,2,3,0,0,3,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,0,0,3,0,0,0,3,3,0,3,0,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,0,3,3,3,3,3,3,0,0,3,0,2,0,0,0,3,3,0,3,0,3,0,0,2,0,2,0, -0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,3,0,3,0,2,0,3,2,0,3,2,3,2,3,0,0,3,2,3,2,3,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,2,3,3,3,3,3,0,0,0,3,0,2,1,0,0,3,2,2,2,0,3,0,0,2,2,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,2,0,3,0,3,0,3,3,0,2,1,2,3,3,0,0,3,0,3,0,3,3,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,3,3,3,0,3,3,3,3,3,3,0,2,3,0,3,0,0,0,2,1,0,2,2,3,0,0,2,2,2,0, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,3,0,0,2,3,3,3,2,3,0,0,1,3,0,2,0,0,0,0,3,0,1,0,2,0,0,1,1,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,3,1,0,3,0,0,0,3,2,0,3,2,3,3,3,0,0,3,0,3,2,2,2,1,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,3,3,3,0,0,3,0,0,0,0,2,0,2,3,3,2,2,2,2,3,0,2,0,2,2,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,3,3,3,2,0,0,0,0,0,0,2,3,0,2,0,2,3,2,0,0,3,0,3,0,3,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,3,2,3,3,2,2,3,0,2,0,3,0,0,0,2,0,0,0,0,1,2,0,2,0,2,0, -0,2,0,2,0,2,2,0,0,1,0,2,2,2,0,2,2,2,0,2,2,2,0,0,2,0,0,1,0,0,0,0, -0,2,0,3,3,2,0,0,0,0,0,0,1,3,0,2,0,2,2,2,0,0,2,0,3,0,0,2,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,0,2,3,2,0,2,2,0,2,0,2,2,0,2,0,2,2,2,0,0,0,0,0,0,2,3,0,0,0,2, -0,1,2,0,0,0,0,2,2,0,0,0,2,1,0,2,2,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0, -0,0,2,1,0,2,3,2,2,3,2,3,2,0,0,3,3,3,0,0,3,2,0,0,0,1,1,0,2,0,2,2, -0,2,0,2,0,2,2,0,0,2,0,2,2,2,0,2,2,2,2,0,0,2,0,0,0,2,0,1,0,0,0,0, -0,3,0,3,3,2,2,0,3,0,0,0,2,2,0,2,2,2,1,2,0,0,1,2,2,0,0,3,0,0,0,2, -0,1,2,0,0,0,1,2,0,0,0,0,0,0,0,2,2,0,1,0,0,2,0,0,0,2,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,3,3,2,2,0,0,0,2,0,2,3,3,0,2,0,0,0,0,0,0,2,2,2,0,2,2,0,2,0,2, -0,2,2,0,0,2,2,2,2,1,0,0,2,2,0,2,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0, -0,2,0,3,2,3,0,0,0,3,0,0,2,2,0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,0,2, -0,0,2,2,0,0,2,2,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,2,0,0,3,2,0,2,2,2,2,2,0,0,0,2,0,0,0,0,2,0,1,0,0,2,0,1,0,0,0, -0,2,2,2,0,2,2,0,1,2,0,2,2,2,0,2,2,2,2,1,2,2,0,0,2,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,2,0,2,0,2,2,0,0,0,0,1,2,1,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,3,2,3,0,0,2,0,0,0,2,2,0,2,0,0,0,1,0,0,2,0,2,0,2,2,0,0,0,0, -0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0, -0,2,2,3,2,2,0,0,0,0,0,0,1,3,0,2,0,2,2,0,0,0,1,0,2,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,0,2,0,3,2,0,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -0,0,2,0,0,0,0,1,1,0,0,2,1,2,0,2,2,0,1,0,0,1,0,0,0,2,0,0,0,0,0,0, -0,3,0,2,2,2,0,0,2,0,0,0,2,0,0,0,2,3,0,2,0,0,0,0,0,0,2,2,0,0,0,2, -0,1,2,0,0,0,1,2,2,1,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,1,2,0,2,2,0,2,0,0,2,0,0,0,0,1,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0, -0,0,2,0,0,0,3,1,2,2,0,2,0,0,0,0,2,0,0,0,2,0,0,3,0,0,0,0,2,2,2,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,1,0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,2, -0,2,2,0,0,2,2,2,2,2,0,1,2,0,0,0,2,2,0,1,0,2,0,0,2,2,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,2, -0,1,2,0,0,0,0,2,2,1,0,1,0,1,0,2,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,2,0,1,2,0,0,0,0,0,0,0,0,0,0,2,0,0,2,2,0,0,0,0,1,0,0,0,0,0,0,2, -0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0, -0,2,2,2,2,0,0,0,3,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,1, -0,0,2,0,0,0,0,1,2,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,2,0,2,2,2,0,0,2,0,0,0,0,0,0,0,2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,2, -0,0,1,0,0,0,0,2,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -0,3,0,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,2, -0,0,2,0,0,0,0,2,2,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,2,0,2,2,1,0,0,0,0,0,0,2,0,0,2,0,2,2,2,0,0,0,0,0,0,2,0,0,0,0,2, -0,0,2,0,0,2,0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0, -0,0,3,0,0,0,2,2,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0, -0,2,2,2,2,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1, -0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,2,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,2,0,0,0,2,0,0,0,0,0,1,0,0,0,0,2,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,2,0,0,0, -0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,2,0,2,0,0,0, -0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,2,0,0,0,1,2,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -) - -Latin7GreekModel = { - 'char_to_order_map': Latin7_char_to_order_map, - 'precedence_matrix': GreekLangModel, - 'typical_positive_ratio': 0.982851, - 'keep_english_letter': False, - 'charset_name': "ISO-8859-7", - 'language': 'Greek', -} - -Win1253GreekModel = { - 'char_to_order_map': win1253_char_to_order_map, - 'precedence_matrix': GreekLangModel, - 'typical_positive_ratio': 0.982851, - 'keep_english_letter': False, - 'charset_name': "windows-1253", - 'language': 'Greek', -} diff --git a/env/lib/python3.6/site-packages/chardet/langhebrewmodel.py b/env/lib/python3.6/site-packages/chardet/langhebrewmodel.py deleted file mode 100644 index 58f4c87..0000000 --- a/env/lib/python3.6/site-packages/chardet/langhebrewmodel.py +++ /dev/null @@ -1,200 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Simon Montagu -# Portions created by the Initial Developer are Copyright (C) 2005 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Shoshannah Forbes - original C code (?) -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Windows-1255 language model -# Character Mapping Table: -WIN1255_CHAR_TO_ORDER_MAP = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 69, 91, 79, 80, 92, 89, 97, 90, 68,111,112, 82, 73, 95, 85, # 40 - 78,121, 86, 71, 67,102,107, 84,114,103,115,253,253,253,253,253, # 50 -253, 50, 74, 60, 61, 42, 76, 70, 64, 53,105, 93, 56, 65, 54, 49, # 60 - 66,110, 51, 43, 44, 63, 81, 77, 98, 75,108,253,253,253,253,253, # 70 -124,202,203,204,205, 40, 58,206,207,208,209,210,211,212,213,214, -215, 83, 52, 47, 46, 72, 32, 94,216,113,217,109,218,219,220,221, - 34,116,222,118,100,223,224,117,119,104,125,225,226, 87, 99,227, -106,122,123,228, 55,229,230,101,231,232,120,233, 48, 39, 57,234, - 30, 59, 41, 88, 33, 37, 36, 31, 29, 35,235, 62, 28,236,126,237, -238, 38, 45,239,240,241,242,243,127,244,245,246,247,248,249,250, - 9, 8, 20, 16, 3, 2, 24, 14, 22, 1, 25, 15, 4, 11, 6, 23, - 12, 19, 13, 26, 18, 27, 21, 17, 7, 10, 5,251,252,128, 96,253, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 98.4004% -# first 1024 sequences: 1.5981% -# rest sequences: 0.087% -# negative sequences: 0.0015% -HEBREW_LANG_MODEL = ( -0,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,3,2,1,2,0,1,0,0, -3,0,3,1,0,0,1,3,2,0,1,1,2,0,2,2,2,1,1,1,1,2,1,1,1,2,0,0,2,2,0,1, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2, -1,2,1,2,1,2,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2, -1,2,1,3,1,1,0,0,2,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,1,2,2,1,3, -1,2,1,1,2,2,0,0,2,2,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,2,2,2,3,2, -1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,2,3,2,2,3,2,2,2,1,2,2,2,2, -1,2,1,1,2,2,0,1,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,2,2,2,2, -0,2,0,2,2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,2,2,2, -0,2,1,2,2,2,0,0,2,1,0,0,0,0,1,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,2,3,2,2,2, -1,2,1,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,1,0,2,0,2, -0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,2,3,2,2,3,2,1,2,1,1,1, -0,1,1,1,1,1,3,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0,0,0, -0,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2, -0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,2,3,3,2,3,3,3,3,2,3,2,1,2,0,2,1,2, -0,2,0,2,2,2,0,0,1,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,2,3,2,3,2,2,3,1,2,2,0,2,2,2, -0,2,1,2,2,2,0,0,1,2,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,2,2,3,3,3,3,1,3,2,2,2, -0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,2,3,2,2,2,1,2,2,0,2,2,2,2, -0,2,0,2,2,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,1,3,2,3,3,2,3,3,2,2,1,2,2,2,2,2,2, -0,2,1,2,1,2,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,2,3,3,2,3,3,3,3,2,3,2,3,3,3,3,3,2,2,2,2,2,2,2,1, -0,2,0,1,2,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,2,1,2,3,3,3,3,3,3,3,2,3,2,3,2,1,2,3,0,2,1,2,2, -0,2,1,1,2,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0, -3,3,3,3,3,3,3,3,3,2,3,3,3,3,2,1,3,1,2,2,2,1,2,3,3,1,2,1,2,2,2,2, -0,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,0,2,3,3,3,1,3,3,3,1,2,2,2,2,1,1,2,2,2,2,2,2, -0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,3,3,2,2,3,3,3,2,1,2,3,2,3,2,2,2,2,1,2,1,1,1,2,2, -0,2,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0, -1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,2,3,3,2,3,1,2,2,2,2,3,2,3,1,1,2,2,1,2,2,1,1,0,2,2,2,2, -0,1,0,1,2,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0, -3,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,1,0,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -3,2,2,1,2,2,2,2,2,2,2,1,2,2,1,2,2,1,1,1,1,1,1,1,1,2,1,1,0,3,3,3, -0,3,0,2,2,2,2,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -2,2,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,1,2,2,2,1,1,1,2,0,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,0,2,2,0,0,0,0,0,0, -0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,0,2,1,0, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,3,1,1,2,2,2,2,2,1,2,2,2,1,1,2,2,2,2,2,2,2,1,2,2,1,0,1,1,1,1,0, -0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,2,1,1,1,1,2,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, -0,0,2,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,1,0,0, -2,1,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,1,2,1,2,1,1,1,1,0,0,0,0, -0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,2,1,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,1,2,1,1,1,2,1,2,1,2,0,1,0,1, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,3,1,2,2,2,1,2,2,2,2,2,2,2,2,1,2,1,1,1,1,1,1,2,1,2,1,1,0,1,0,1, -0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2, -0,2,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,0,1,1,1,0,1,0,0,0,1,1,0,1,1,0,0,0,0,0,1,1,0,0, -0,1,1,1,2,1,2,2,2,0,2,0,2,0,1,1,2,1,1,1,1,2,1,0,1,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,1,0,0,0,0,0,1,0,1,2,2,0,1,0,0,1,1,2,2,1,2,0,2,0,0,0,1,2,0,1, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,0,2,1,2,0,2,0,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,1,2,2,0,0,1,0,0,0,1,0,0,1, -1,1,2,1,0,1,1,1,0,1,0,1,1,1,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,2,2,1, -0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,1,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,1,1,1,1,1,1,1,2,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,1,1,0,1, -2,0,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,1,0,1,0,0,1,1,2,1,1,2,0,1,0,0,0,1,1,0,1, -1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,0,0,2,1,1,2,0,2,0,0,0,1,1,0,1, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,2,2,1,2,1,1,0,1,0,0,0,1,1,0,1, -2,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,0,1,1,0,1,0,0,1,0,0,0,0,1,0,1, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,2,2,0,0,0,0,2,1,1,1,0,2,1,1,0,0,0,2,1,0,1, -1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,0,2,1,1,0,1,0,0,0,1,1,0,1, -2,2,1,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,2,1,1,0,1,0,0,1,1,0,1,2,1,0,2,0,0,0,1,1,0,1, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0, -0,1,0,0,2,0,2,1,1,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,1,0,1,1,2,0,1,0,0,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1, -1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,1,0,1,1,0,0,1,0,0,2,1,1,1,1,1,0,1,0,0,0,0,1,0,1, -0,1,1,1,2,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,1,2,1,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,1,1,0,0, -) - -Win1255HebrewModel = { - 'char_to_order_map': WIN1255_CHAR_TO_ORDER_MAP, - 'precedence_matrix': HEBREW_LANG_MODEL, - 'typical_positive_ratio': 0.984004, - 'keep_english_letter': False, - 'charset_name': "windows-1255", - 'language': 'Hebrew', -} diff --git a/env/lib/python3.6/site-packages/chardet/langhungarianmodel.py b/env/lib/python3.6/site-packages/chardet/langhungarianmodel.py deleted file mode 100644 index bb7c095..0000000 --- a/env/lib/python3.6/site-packages/chardet/langhungarianmodel.py +++ /dev/null @@ -1,225 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -Latin2_HungarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47, - 46, 71, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253, -253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8, - 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253, -159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174, -175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190, -191,192,193,194,195,196,197, 75,198,199,200,201,202,203,204,205, - 79,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, -221, 51, 81,222, 78,223,224,225,226, 44,227,228,229, 61,230,231, -232,233,234, 58,235, 66, 59,236,237,238, 60, 69, 63,239,240,241, - 82, 14, 74,242, 70, 80,243, 72,244, 15, 83, 77, 84, 30, 76, 85, -245,246,247, 25, 73, 42, 24,248,249,250, 31, 56, 29,251,252,253, -) - -win1250HungarianCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253, 28, 40, 54, 45, 32, 50, 49, 38, 39, 53, 36, 41, 34, 35, 47, - 46, 72, 43, 33, 37, 57, 48, 64, 68, 55, 52,253,253,253,253,253, -253, 2, 18, 26, 17, 1, 27, 12, 20, 9, 22, 7, 6, 13, 4, 8, - 23, 67, 10, 5, 3, 21, 19, 65, 62, 16, 11,253,253,253,253,253, -161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176, -177,178,179,180, 78,181, 69,182,183,184,185,186,187,188,189,190, -191,192,193,194,195,196,197, 76,198,199,200,201,202,203,204,205, - 81,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, -221, 51, 83,222, 80,223,224,225,226, 44,227,228,229, 61,230,231, -232,233,234, 58,235, 66, 59,236,237,238, 60, 70, 63,239,240,241, - 84, 14, 75,242, 71, 82,243, 73,244, 15, 85, 79, 86, 30, 77, 87, -245,246,247, 25, 74, 42, 24,248,249,250, 31, 56, 29,251,252,253, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 94.7368% -# first 1024 sequences:5.2623% -# rest sequences: 0.8894% -# negative sequences: 0.0009% -HungarianLangModel = ( -0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, -3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,2,2,3,3,1,1,2,2,2,2,2,1,2, -3,2,2,3,3,3,3,3,2,3,3,3,3,3,3,1,2,3,3,3,3,2,3,3,1,1,3,3,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0, -3,2,1,3,3,3,3,3,2,3,3,3,3,3,1,1,2,3,3,3,3,3,3,3,1,1,3,2,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,1,1,2,3,3,3,1,3,3,3,3,3,1,3,3,2,2,0,3,2,3, -0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,3,3,2,3,3,2,2,3,2,3,2,0,3,2,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,3,3,3,3,2,3,3,3,1,2,3,2,2,3,1,2,3,3,2,2,0,3,3,3, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,0,2,3,2, -0,0,0,1,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,1,1,1,3,3,2,1,3,2,2,3,2,1,3,2,2,1,0,3,3,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,2,2,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,3,2,2,3,1,1,3,2,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,2,1,3,3,3,3,3,2,2,1,3,3,3,0,1,1,2, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,3,3,2,3,3,3,2,0,3,2,3, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0, -3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,1,3,2,2,2,3,1,1,3,3,1,1,0,3,3,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,2,3,3,3,2,3,2,3,3,3,2,3,3,3,3,3,1,2,3,2,2,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,2,2,2,3,1,3,3,2,2,1,3,3,3,1,1,3,1,2,3,2,3,2,2,2,1,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,2,1,3,3,3,2,2,3,2,1,0,3,2,0,1,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,3,3,3,3,3,1,2,3,3,3,3,1,1,0,3,3,3,3,0,2,3,0,0,2,1,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,2,2,3,3,2,2,2,2,3,3,0,1,2,3,2,3,2,2,3,2,1,2,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -3,3,3,3,3,3,1,2,3,3,3,2,1,2,3,3,2,2,2,3,2,3,3,1,3,3,1,1,0,2,3,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,1,2,2,2,2,3,3,3,1,1,1,3,3,1,1,3,1,1,3,2,1,2,3,1,1,0,2,2,2, -0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,2,1,2,1,1,3,3,1,1,1,1,3,3,1,1,2,2,1,2,1,1,2,2,1,1,0,2,2,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,1,1,2,1,1,3,3,1,0,1,1,3,3,2,0,1,1,2,3,1,0,2,2,1,0,0,1,3,2, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,2,1,3,3,3,3,3,1,2,3,2,3,3,2,1,1,3,2,3,2,1,2,2,0,1,2,1,0,0,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,3,3,2,2,2,2,3,1,2,2,1,1,3,3,0,3,2,1,2,3,2,1,3,3,1,1,0,2,1,3, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,3,3,2,2,2,3,2,3,3,3,2,1,1,3,3,1,1,1,2,2,3,2,3,2,2,2,1,0,2,2,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -1,0,0,3,3,3,3,3,0,0,3,3,2,3,0,0,0,2,3,3,1,0,1,2,0,0,1,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,2,3,3,3,3,3,1,2,3,3,2,2,1,1,0,3,3,2,2,1,2,2,1,0,2,2,0,1,1,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,2,1,3,1,2,3,3,2,2,1,1,2,2,1,1,1,1,3,2,1,1,1,1,2,1,0,1,2,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -2,3,3,1,1,1,1,1,3,3,3,0,1,1,3,3,1,1,1,1,1,2,2,0,3,1,1,2,0,2,1,1, -0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0, -3,1,0,1,2,1,2,2,0,1,2,3,1,2,0,0,0,2,1,1,1,1,1,2,0,0,1,1,0,0,0,0, -1,2,1,2,2,2,1,2,1,2,0,2,0,2,2,1,1,2,1,1,2,1,1,1,0,1,0,0,0,1,1,0, -1,1,1,2,3,2,3,3,0,1,2,2,3,1,0,1,0,2,1,2,2,0,1,1,0,0,1,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,3,3,2,2,1,0,0,3,2,3,2,0,0,0,1,1,3,0,0,1,1,0,0,2,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,2,2,3,3,1,0,1,3,2,3,1,1,1,0,1,1,1,1,1,3,1,0,0,2,2,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,1,1,2,2,2,1,0,1,2,3,3,2,0,0,0,2,1,1,1,2,1,1,1,0,1,1,1,0,0,0, -1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,2,1,1,1,1,1,1,0,1,1,1,0,0,1,1, -3,2,2,1,0,0,1,1,2,2,0,3,0,1,2,1,1,0,0,1,1,1,0,1,1,1,1,0,2,1,1,1, -2,2,1,1,1,2,1,2,1,1,1,1,1,1,1,2,1,1,1,2,3,1,1,1,1,1,1,1,1,1,0,1, -2,3,3,0,1,0,0,0,3,3,1,0,0,1,2,2,1,0,0,0,0,2,0,0,1,1,1,0,2,1,1,1, -2,1,1,1,1,1,1,2,1,1,0,1,1,0,1,1,1,0,1,2,1,1,0,1,1,1,1,1,1,1,0,1, -2,3,3,0,1,0,0,0,2,2,0,0,0,0,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,1,0, -2,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1, -3,2,2,0,1,0,1,0,2,3,2,0,0,1,2,2,1,0,0,1,1,1,0,0,2,1,0,1,2,2,1,1, -2,1,1,1,1,1,1,2,1,1,1,1,1,1,0,2,1,0,1,1,0,1,1,1,0,1,1,2,1,1,0,1, -2,2,2,0,0,1,0,0,2,2,1,1,0,0,2,1,1,0,0,0,1,2,0,0,2,1,0,0,2,1,1,1, -2,1,1,1,1,2,1,2,1,1,1,2,2,1,1,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,0,1, -1,2,3,0,0,0,1,0,3,2,1,0,0,1,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,2,1, -1,1,0,0,0,1,0,1,1,1,1,1,2,0,0,1,0,0,0,2,0,0,1,1,1,1,1,1,1,1,0,1, -3,0,0,2,1,2,2,1,0,0,2,1,2,2,0,0,0,2,1,1,1,0,1,1,0,0,1,1,2,0,0,0, -1,2,1,2,2,1,1,2,1,2,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,0,0,1, -1,3,2,0,0,0,1,0,2,2,2,0,0,0,2,2,1,0,0,0,0,3,1,1,1,1,0,0,2,1,1,1, -2,1,0,1,1,1,0,1,1,1,1,1,1,1,0,2,1,0,0,1,0,1,1,0,1,1,1,1,1,1,0,1, -2,3,2,0,0,0,1,0,2,2,0,0,0,0,2,1,1,0,0,0,0,2,1,0,1,1,0,0,2,1,1,0, -2,1,1,1,1,2,1,2,1,2,0,1,1,1,0,2,1,1,1,2,1,1,1,1,0,1,1,1,1,1,0,1, -3,1,1,2,2,2,3,2,1,1,2,2,1,1,0,1,0,2,2,1,1,1,1,1,0,0,1,1,0,1,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,0,0,0,0,0,2,2,0,0,0,0,2,2,1,0,0,0,1,1,0,0,1,2,0,0,2,1,1,1, -2,2,1,1,1,2,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,1,1,0,1,2,1,1,1,0,1, -1,0,0,1,2,3,2,1,0,0,2,0,1,1,0,0,0,1,1,1,1,0,1,1,0,0,1,0,0,0,0,0, -1,2,1,2,1,2,1,1,1,2,0,2,1,1,1,0,1,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0, -2,3,2,0,0,0,0,0,1,1,2,1,0,0,1,1,1,0,0,0,0,2,0,0,1,1,0,0,2,1,1,1, -2,1,1,1,1,1,1,2,1,0,1,1,1,1,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,1, -1,2,2,0,1,1,1,0,2,2,2,0,0,0,3,2,1,0,0,0,1,1,0,0,1,1,0,1,1,1,0,0, -1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,0,0,1,1,1,0,1,0,1, -2,1,0,2,1,1,2,2,1,1,2,1,1,1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0, -1,2,2,2,2,2,1,1,1,2,0,2,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,1,0, -1,2,3,0,0,0,1,0,2,2,0,0,0,0,2,2,0,0,0,0,0,1,0,0,1,0,0,0,2,0,1,0, -2,1,1,1,1,1,0,2,0,0,0,1,2,1,1,1,1,0,1,2,0,1,0,1,0,1,1,1,0,1,0,1, -2,2,2,0,0,0,1,0,2,1,2,0,0,0,1,1,2,0,0,0,0,1,0,0,1,1,0,0,2,1,0,1, -2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,0,1, -1,2,2,0,0,0,1,0,2,2,2,0,0,0,1,1,0,0,0,0,0,1,1,0,2,0,0,1,1,1,0,1, -1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,0,0,1, -1,0,0,1,0,1,2,1,0,0,1,1,1,2,0,0,0,1,1,0,1,0,1,1,0,0,1,0,0,0,0,0, -0,2,1,2,1,1,1,1,1,2,0,2,0,1,1,0,1,2,1,0,1,1,1,0,0,0,0,0,0,1,0,0, -2,1,1,0,1,2,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,2,1,0,1, -2,2,1,1,1,1,1,2,1,1,0,1,1,1,1,2,1,1,1,2,1,1,0,1,0,1,1,1,1,1,0,1, -1,2,2,0,0,0,0,0,1,1,0,0,0,0,2,1,0,0,0,0,0,2,0,0,2,2,0,0,2,0,0,1, -2,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1, -1,1,2,0,0,3,1,0,2,1,1,1,0,0,1,1,1,0,0,0,1,1,0,0,0,1,0,0,1,0,1,0, -1,2,1,0,1,1,1,2,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0, -2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,2,0,0,0, -2,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,2,1,1,0,0,1,1,1,1,1,0,1, -2,1,1,1,2,1,1,1,0,1,1,2,1,0,0,0,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,0,1,1,1,1,1,0,0,1,1,2,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,0,0,0, -1,2,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,0,0, -2,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0,0,1,1,1,2,0,0,1,0,0,1,0,1,0,0,0, -0,1,1,1,1,1,1,1,1,2,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,1,1,0,0,2,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0, -0,1,1,1,1,1,1,0,1,1,0,1,0,1,1,0,1,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,0,0,1,1,0,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, -0,0,0,1,0,0,0,0,0,0,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,1,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0, -2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,1,1,1,0,0,1,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,1,1,1,1,1,0,1,1,0,1,0,1,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0, -) - -Latin2HungarianModel = { - 'char_to_order_map': Latin2_HungarianCharToOrderMap, - 'precedence_matrix': HungarianLangModel, - 'typical_positive_ratio': 0.947368, - 'keep_english_letter': True, - 'charset_name': "ISO-8859-2", - 'language': 'Hungarian', -} - -Win1250HungarianModel = { - 'char_to_order_map': win1250HungarianCharToOrderMap, - 'precedence_matrix': HungarianLangModel, - 'typical_positive_ratio': 0.947368, - 'keep_english_letter': True, - 'charset_name': "windows-1250", - 'language': 'Hungarian', -} diff --git a/env/lib/python3.6/site-packages/chardet/langthaimodel.py b/env/lib/python3.6/site-packages/chardet/langthaimodel.py deleted file mode 100644 index 15f94c2..0000000 --- a/env/lib/python3.6/site-packages/chardet/langthaimodel.py +++ /dev/null @@ -1,199 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# The following result for thai was collected from a limited sample (1M). - -# Character Mapping Table: -TIS620CharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,254,255,255,254,255,255, # 00 -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, # 10 -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, # 20 -252,252,252,252,252,252,252,252,252,252,253,253,253,253,253,253, # 30 -253,182,106,107,100,183,184,185,101, 94,186,187,108,109,110,111, # 40 -188,189,190, 89, 95,112,113,191,192,193,194,253,253,253,253,253, # 50 -253, 64, 72, 73,114, 74,115,116,102, 81,201,117, 90,103, 78, 82, # 60 - 96,202, 91, 79, 84,104,105, 97, 98, 92,203,253,253,253,253,253, # 70 -209,210,211,212,213, 88,214,215,216,217,218,219,220,118,221,222, -223,224, 99, 85, 83,225,226,227,228,229,230,231,232,233,234,235, -236, 5, 30,237, 24,238, 75, 8, 26, 52, 34, 51,119, 47, 58, 57, - 49, 53, 55, 43, 20, 19, 44, 14, 48, 3, 17, 25, 39, 62, 31, 54, - 45, 9, 16, 2, 61, 15,239, 12, 42, 46, 18, 21, 76, 4, 66, 63, - 22, 10, 1, 36, 23, 13, 40, 27, 32, 35, 86,240,241,242,243,244, - 11, 28, 41, 29, 33,245, 50, 37, 6, 7, 67, 77, 38, 93,246,247, - 68, 56, 59, 65, 69, 60, 70, 80, 71, 87,248,249,250,251,252,253, -) - -# Model Table: -# total sequences: 100% -# first 512 sequences: 92.6386% -# first 1024 sequences:7.3177% -# rest sequences: 1.0230% -# negative sequences: 0.0436% -ThaiLangModel = ( -0,1,3,3,3,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,0,0,3,3,3,0,3,3,3,3, -0,3,3,0,0,0,1,3,0,3,3,2,3,3,0,1,2,3,3,3,3,0,2,0,2,0,0,3,2,1,2,2, -3,0,3,3,2,3,0,0,3,3,0,3,3,0,3,3,3,3,3,3,3,3,3,0,3,2,3,0,2,2,2,3, -0,2,3,0,0,0,0,1,0,1,2,3,1,1,3,2,2,0,1,1,0,0,1,0,0,0,0,0,0,0,1,1, -3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,3,3,2,3,2,3,3,2,2,2, -3,1,2,3,0,3,3,2,2,1,2,3,3,1,2,0,1,3,0,1,0,0,1,0,0,0,0,0,0,0,1,1, -3,3,2,2,3,3,3,3,1,2,3,3,3,3,3,2,2,2,2,3,3,2,2,3,3,2,2,3,2,3,2,2, -3,3,1,2,3,1,2,2,3,3,1,0,2,1,0,0,3,1,2,1,0,0,1,0,0,0,0,0,0,1,0,1, -3,3,3,3,3,3,2,2,3,3,3,3,2,3,2,2,3,3,2,2,3,2,2,2,2,1,1,3,1,2,1,1, -3,2,1,0,2,1,0,1,0,1,1,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0, -3,3,3,2,3,2,3,3,2,2,3,2,3,3,2,3,1,1,2,3,2,2,2,3,2,2,2,2,2,1,2,1, -2,2,1,1,3,3,2,1,0,1,2,2,0,1,3,0,0,0,1,1,0,0,0,0,0,2,3,0,0,2,1,1, -3,3,2,3,3,2,0,0,3,3,0,3,3,0,2,2,3,1,2,2,1,1,1,0,2,2,2,0,2,2,1,1, -0,2,1,0,2,0,0,2,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0, -3,3,2,3,3,2,0,0,3,3,0,2,3,0,2,1,2,2,2,2,1,2,0,0,2,2,2,0,2,2,1,1, -0,2,1,0,2,0,0,2,0,1,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0, -3,3,2,3,2,3,2,0,2,2,1,3,2,1,3,2,1,2,3,2,2,3,0,2,3,2,2,1,2,2,2,2, -1,2,2,0,0,0,0,2,0,1,2,0,1,1,1,0,1,0,3,1,1,0,0,0,0,0,0,0,0,0,1,0, -3,3,2,3,3,2,3,2,2,2,3,2,2,3,2,2,1,2,3,2,2,3,1,3,2,2,2,3,2,2,2,3, -3,2,1,3,0,1,1,1,0,2,1,1,1,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,2,0,0, -1,0,0,3,0,3,3,3,3,3,0,0,3,0,2,2,3,3,3,3,3,0,0,0,1,1,3,0,0,0,0,2, -0,0,1,0,0,0,0,0,0,0,2,3,0,0,0,3,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0, -2,0,3,3,3,3,0,0,2,3,0,0,3,0,3,3,2,3,3,3,3,3,0,0,3,3,3,0,0,0,3,3, -0,0,3,0,0,0,0,2,0,0,2,1,1,3,0,0,1,0,0,2,3,0,1,0,0,0,0,0,0,0,1,0, -3,3,3,3,2,3,3,3,3,3,3,3,1,2,1,3,3,2,2,1,2,2,2,3,1,1,2,0,2,1,2,1, -2,2,1,0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0, -3,0,2,1,2,3,3,3,0,2,0,2,2,0,2,1,3,2,2,1,2,1,0,0,2,2,1,0,2,1,2,2, -0,1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,1,3,3,1,1,3,0,2,3,1,1,3,2,1,1,2,0,2,2,3,2,1,1,1,1,1,2, -3,0,0,1,3,1,2,1,2,0,3,0,0,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0, -3,3,1,1,3,2,3,3,3,1,3,2,1,3,2,1,3,2,2,2,2,1,3,3,1,2,1,3,1,2,3,0, -2,1,1,3,2,2,2,1,2,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2, -3,3,2,3,2,3,3,2,3,2,3,2,3,3,2,1,0,3,2,2,2,1,2,2,2,1,2,2,1,2,1,1, -2,2,2,3,0,1,3,1,1,1,1,0,1,1,0,2,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,3,2,2,1,1,3,2,3,2,3,2,0,3,2,2,1,2,0,2,2,2,1,2,2,2,2,1, -3,2,1,2,2,1,0,2,0,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,1, -3,3,3,3,3,2,3,1,2,3,3,2,2,3,0,1,1,2,0,3,3,2,2,3,0,1,1,3,0,0,0,0, -3,1,0,3,3,0,2,0,2,1,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,3,2,3,3,0,1,3,1,1,2,1,2,1,1,3,1,1,0,2,3,1,1,1,1,1,1,1,1, -3,1,1,2,2,2,2,1,1,1,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,2,2,1,1,2,1,3,3,2,3,2,2,3,2,2,3,1,2,2,1,2,0,3,2,1,2,2,2,2,2,1, -3,2,1,2,2,2,1,1,1,1,0,0,1,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,1,3,3,0,2,1,0,3,2,0,0,3,1,0,1,1,0,1,0,0,0,0,0,1, -1,0,0,1,0,3,2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,2,2,2,3,0,0,1,3,0,3,2,0,3,2,2,3,3,3,3,3,1,0,2,2,2,0,2,2,1,2, -0,2,3,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -3,0,2,3,1,3,3,2,3,3,0,3,3,0,3,2,2,3,2,3,3,3,0,0,2,2,3,0,1,1,1,3, -0,0,3,0,0,0,2,2,0,1,3,0,1,2,2,2,3,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1, -3,2,3,3,2,0,3,3,2,2,3,1,3,2,1,3,2,0,1,2,2,0,2,3,2,1,0,3,0,0,0,0, -3,0,0,2,3,1,3,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,1,3,2,2,2,1,2,0,1,3,1,1,3,1,3,0,0,2,1,1,1,1,2,1,1,1,0,2,1,0,1, -1,2,0,0,0,3,1,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,3,1,0,0,0,1,0, -3,3,3,3,2,2,2,2,2,1,3,1,1,1,2,0,1,1,2,1,2,1,3,2,0,0,3,1,1,1,1,1, -3,1,0,2,3,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,2,3,0,3,3,0,2,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,2,3,1,3,0,0,1,2,0,0,2,0,3,3,2,3,3,3,2,3,0,0,2,2,2,0,0,0,2,2, -0,0,1,0,0,0,0,3,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -0,0,0,3,0,2,0,0,0,0,0,0,0,0,0,0,1,2,3,1,3,3,0,0,1,0,3,0,0,0,0,0, -0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,1,2,3,1,2,3,1,0,3,0,2,2,1,0,2,1,1,2,0,1,0,0,1,1,1,1,0,1,0,0, -1,0,0,0,0,1,1,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,2,1,0,1,1,1,3,1,2,2,2,2,2,2,1,1,1,1,0,3,1,0,1,3,1,1,1,1, -1,1,0,2,0,1,3,1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1, -3,0,2,2,1,3,3,2,3,3,0,1,1,0,2,2,1,2,1,3,3,1,0,0,3,2,0,0,0,0,2,1, -0,1,0,0,0,0,1,2,0,1,1,3,1,1,2,2,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0, -0,0,3,0,0,1,0,0,0,3,0,0,3,0,3,1,0,1,1,1,3,2,0,0,0,3,0,0,0,0,2,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, -3,3,1,3,2,1,3,3,1,2,2,0,1,2,1,0,1,2,0,0,0,0,0,3,0,0,0,3,0,0,0,0, -3,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,1,2,0,3,3,3,2,2,0,1,1,0,1,3,0,0,0,2,2,0,0,0,0,3,1,0,1,0,0,0, -0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,2,3,1,2,0,0,2,1,0,3,1,0,1,2,0,1,1,1,1,3,0,0,3,1,1,0,2,2,1,1, -0,2,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,3,1,2,0,0,2,2,0,1,2,0,1,0,1,3,1,2,1,0,0,0,2,0,3,0,0,0,1,0, -0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,1,1,2,2,0,0,0,2,0,2,1,0,1,1,0,1,1,1,2,1,0,0,1,1,1,0,2,1,1,1, -0,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1, -0,0,0,2,0,1,3,1,1,1,1,0,0,0,0,3,2,0,1,0,0,0,1,2,0,0,0,1,0,0,0,0, -0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,3,3,3,3,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,0,2,3,2,2,0,0,0,1,0,0,0,0,2,3,2,1,2,2,3,0,0,0,2,3,1,0,0,0,1,1, -0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0, -3,3,2,2,0,1,0,0,0,0,2,0,2,0,1,0,0,0,1,1,0,0,0,2,1,0,1,0,1,1,0,0, -0,1,0,2,0,0,1,0,3,0,1,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,1,0,0,1,0,0,0,0,0,1,1,2,0,0,0,0,1,0,0,1,3,1,0,0,0,0,1,1,0,0, -0,1,0,0,0,0,3,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0, -3,3,1,1,1,1,2,3,0,0,2,1,1,1,1,1,0,2,1,1,0,0,0,2,1,0,1,2,1,1,0,1, -2,1,0,3,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,3,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1, -0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,0,0,0,0,0,0,1,2,1,0,1,1,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,2,0,0,0,1,3,0,1,0,0,0,2,0,0,0,0,0,0,0,1,2,0,0,0,0,0, -3,3,0,0,1,1,2,0,0,1,2,1,0,1,1,1,0,1,1,0,0,2,1,1,0,1,0,0,1,1,1,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,1,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,3,0,0,1,1,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -1,1,0,1,2,0,1,2,0,0,1,1,0,2,0,1,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0, -1,0,0,1,0,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,2,1,3,0,0,0,0,1,1,0,0,0,0,0,0,0,3, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,1,0,1,0,0,2,0,0,2,0,0,1,1,2,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0, -1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0, -1,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,1,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,3,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0, -1,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,1,0,0,2,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -) - -TIS620ThaiModel = { - 'char_to_order_map': TIS620CharToOrderMap, - 'precedence_matrix': ThaiLangModel, - 'typical_positive_ratio': 0.926386, - 'keep_english_letter': False, - 'charset_name': "TIS-620", - 'language': 'Thai', -} diff --git a/env/lib/python3.6/site-packages/chardet/langturkishmodel.py b/env/lib/python3.6/site-packages/chardet/langturkishmodel.py deleted file mode 100644 index a427a45..0000000 --- a/env/lib/python3.6/site-packages/chardet/langturkishmodel.py +++ /dev/null @@ -1,193 +0,0 @@ -# -*- coding: utf-8 -*- -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Communicator client code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Özgür Baskın - Turkish Language Model -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -# 255: Control characters that usually does not exist in any text -# 254: Carriage/Return -# 253: symbol (punctuation) that does not belong to word -# 252: 0 - 9 - -# Character Mapping Table: -Latin5_TurkishCharToOrderMap = ( -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255, 23, 37, 47, 39, 29, 52, 36, 45, 53, 60, 16, 49, 20, 46, 42, - 48, 69, 44, 35, 31, 51, 38, 62, 65, 43, 56,255,255,255,255,255, -255, 1, 21, 28, 12, 2, 18, 27, 25, 3, 24, 10, 5, 13, 4, 15, - 26, 64, 7, 8, 9, 14, 32, 57, 58, 11, 22,255,255,255,255,255, -180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165, -164,163,162,161,160,159,101,158,157,156,155,154,153,152,151,106, -150,149,148,147,146,145,144,100,143,142,141,140,139,138,137,136, - 94, 80, 93,135,105,134,133, 63,132,131,130,129,128,127,126,125, -124,104, 73, 99, 79, 85,123, 54,122, 98, 92,121,120, 91,103,119, - 68,118,117, 97,116,115, 50, 90,114,113,112,111, 55, 41, 40, 86, - 89, 70, 59, 78, 71, 82, 88, 33, 77, 66, 84, 83,110, 75, 61, 96, - 30, 67,109, 74, 87,102, 34, 95, 81,108, 76, 72, 17, 6, 19,107, -) - -TurkishLangModel = ( -3,2,3,3,3,1,3,3,3,3,3,3,3,3,2,1,1,3,3,1,3,3,0,3,3,3,3,3,0,3,1,3, -3,2,1,0,0,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, -3,2,2,3,3,0,3,3,3,3,3,3,3,2,3,1,0,3,3,1,3,3,0,3,3,3,3,3,0,3,0,3, -3,1,1,0,1,0,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,2,2,0,0,0,1,0,1, -3,3,2,3,3,0,3,3,3,3,3,3,3,2,3,1,1,3,3,0,3,3,1,2,3,3,3,3,0,3,0,3, -3,1,1,0,0,0,1,0,0,0,0,1,1,0,1,2,1,0,0,0,1,0,0,0,0,2,0,0,0,0,0,1, -3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,1,3,3,2,0,3,2,1,2,2,1,3,3,0,0,0,2, -2,2,0,1,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1, -3,3,3,2,3,3,1,2,3,3,3,3,3,3,3,1,3,2,1,0,3,2,0,1,2,3,3,2,1,0,0,2, -2,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0, -1,0,1,3,3,1,3,3,3,3,3,3,3,1,2,0,0,2,3,0,2,3,0,0,2,2,2,3,0,3,0,1, -2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,0,3,2,0,2,3,2,3,3,1,0,0,2, -3,2,0,0,1,0,0,0,0,0,0,2,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,2,0,0,1, -3,3,3,2,3,3,2,3,3,3,3,2,3,3,3,0,3,3,0,0,2,1,0,0,2,3,2,2,0,0,0,2, -2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,1,0,2,0,0,1, -3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,0,1,3,2,1,1,3,2,3,2,1,0,0,2, -2,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, -3,3,3,2,3,3,3,3,3,3,3,2,3,3,3,0,3,2,2,0,2,3,0,0,2,2,2,2,0,0,0,2, -3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, -3,3,3,3,3,3,3,2,2,2,2,3,2,3,3,0,3,3,1,1,2,2,0,0,2,2,3,2,0,0,1,3, -0,3,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1, -3,3,3,2,3,3,3,2,1,2,2,3,2,3,3,0,3,2,0,0,1,1,0,1,1,2,1,2,0,0,0,1, -0,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,0, -3,3,3,2,3,3,2,3,2,2,2,3,3,3,3,1,3,1,1,0,3,2,1,1,3,3,2,3,1,0,0,1, -1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,1, -3,2,2,3,3,0,3,3,3,3,3,3,3,2,2,1,0,3,3,1,3,3,0,1,3,3,2,3,0,3,0,3, -2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -2,2,2,3,3,0,3,3,3,3,3,3,3,3,3,0,0,3,2,0,3,3,0,3,2,3,3,3,0,3,1,3, -2,0,0,0,0,0,0,0,0,0,0,1,0,1,2,0,1,0,0,0,0,0,0,0,2,2,0,0,1,0,0,1, -3,3,3,1,2,3,3,1,0,0,1,0,0,3,3,2,3,0,0,2,0,0,2,0,2,0,0,0,2,0,2,0, -0,3,1,0,1,0,0,0,2,2,1,0,1,1,2,1,2,2,2,0,2,1,1,0,0,0,2,0,0,0,0,0, -1,2,1,3,3,0,3,3,3,3,3,2,3,0,0,0,0,2,3,0,2,3,1,0,2,3,1,3,0,3,0,2, -3,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,1,3,3,2,2,3,2,2,0,1,2,3,0,1,2,1,0,1,0,0,0,1,0,2,2,0,0,0,1, -1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0, -3,3,3,1,3,3,1,1,3,3,1,1,3,3,1,0,2,1,2,0,2,1,0,0,1,1,2,1,0,0,0,2, -2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,1,0,2,1,3,0,0,2,0,0,3,3,0,3,0,0,1,0,1,2,0,0,1,1,2,2,0,1,0, -0,1,2,1,1,0,1,0,1,1,1,1,1,0,1,1,1,2,2,1,2,0,1,0,0,0,0,0,0,1,0,0, -3,3,3,2,3,2,3,3,0,2,2,2,3,3,3,0,3,0,0,0,2,2,0,1,2,1,1,1,0,0,0,1, -0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -3,3,3,3,3,3,2,1,2,2,3,3,3,3,2,0,2,0,0,0,2,2,0,0,2,1,3,3,0,0,1,1, -1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0, -1,1,2,3,3,0,3,3,3,3,3,3,2,2,0,2,0,2,3,2,3,2,2,2,2,2,2,2,1,3,2,3, -2,0,2,1,2,2,2,2,1,1,2,2,1,2,2,1,2,0,0,2,1,1,0,2,1,0,0,1,0,0,0,1, -2,3,3,1,1,1,0,1,1,1,2,3,2,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0, -0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,2,2,3,2,3,2,2,1,3,3,3,0,2,1,2,0,2,1,0,0,1,1,1,1,1,0,0,1, -2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,2,0,1,0,0,0, -3,3,3,2,3,3,3,3,3,2,3,1,2,3,3,1,2,0,0,0,0,0,0,0,3,2,1,1,0,0,0,0, -2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -3,3,3,2,2,3,3,2,1,1,1,1,1,3,3,0,3,1,0,0,1,1,0,0,3,1,2,1,0,0,0,0, -0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0, -3,3,3,2,2,3,2,2,2,3,2,1,1,3,3,0,3,0,0,0,0,1,0,0,3,1,1,2,0,0,0,1, -1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, -1,1,1,3,3,0,3,3,3,3,3,2,2,2,1,2,0,2,1,2,2,1,1,0,1,2,2,2,2,2,2,2, -0,0,2,1,2,1,2,1,0,1,1,3,1,2,1,1,2,0,0,2,0,1,0,1,0,1,0,0,0,1,0,1, -3,3,3,1,3,3,3,0,1,1,0,2,2,3,1,0,3,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,2,0,0,2,2,1,0,0,1,0,0,3,3,1,3,0,0,1,1,0,2,0,3,0,0,0,2,0,1,1, -0,1,2,0,1,2,2,0,2,2,2,2,1,0,2,1,1,0,2,0,2,1,2,0,0,0,0,0,0,0,0,0, -3,3,3,1,3,2,3,2,0,2,2,2,1,3,2,0,2,1,2,0,1,2,0,0,1,0,2,2,0,0,0,2, -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0, -3,3,3,0,3,3,1,1,2,3,1,0,3,2,3,0,3,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0, -1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,3,3,0,3,3,2,3,3,2,2,0,0,0,0,1,2,0,1,3,0,0,0,3,1,1,0,3,0,2, -2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,1,2,2,1,0,3,1,1,1,1,3,3,2,3,0,0,1,0,1,2,0,2,2,0,2,2,0,2,1, -0,2,2,1,1,1,1,0,2,1,1,0,1,1,1,1,2,1,2,1,2,0,1,0,1,0,0,0,0,0,0,0, -3,3,3,0,1,1,3,0,0,1,1,0,0,2,2,0,3,0,0,1,1,0,1,0,0,0,0,0,2,0,0,0, -0,3,1,0,1,0,1,0,2,0,0,1,0,1,0,1,1,1,2,1,1,0,2,0,0,0,0,0,0,0,0,0, -3,3,3,0,2,0,2,0,1,1,1,0,0,3,3,0,2,0,0,1,0,0,2,1,1,0,1,0,1,0,1,0, -0,2,0,1,2,0,2,0,2,1,1,0,1,0,2,1,1,0,2,1,1,0,1,0,0,0,1,1,0,0,0,0, -3,2,3,0,1,0,0,0,0,0,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,0,2,0,0,0, -0,0,1,1,0,0,1,0,1,0,0,1,0,0,0,2,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,0,0,2,3,0,0,1,0,1,0,2,3,2,3,0,0,1,3,0,2,1,0,0,0,0,2,0,1,0, -0,2,1,0,0,1,1,0,2,1,0,0,1,0,0,1,1,0,1,1,2,0,1,0,0,0,0,1,0,0,0,0, -3,2,2,0,0,1,1,0,0,0,0,0,0,3,1,1,1,0,0,0,0,0,1,0,0,0,0,0,2,0,1,0, -0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,3,3,0,2,3,2,2,1,2,2,1,1,2,0,1,3,2,2,2,0,0,2,2,0,0,0,1,2,1, -3,0,2,1,1,0,1,1,1,0,1,2,2,2,1,1,2,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0, -0,1,1,2,3,0,3,3,3,2,2,2,2,1,0,1,0,1,0,1,2,2,0,0,2,2,1,3,1,1,2,1, -0,0,1,1,2,0,1,1,0,0,1,2,0,2,1,1,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,0, -3,3,2,0,0,3,1,0,0,0,0,0,0,3,2,1,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, -0,2,1,1,0,0,1,0,1,2,0,0,1,1,0,0,2,1,1,1,1,0,2,0,0,0,0,0,0,0,0,0, -3,3,2,0,0,1,0,0,0,0,1,0,0,3,3,2,2,0,0,1,0,0,2,0,1,0,0,0,2,0,1,0, -0,0,1,1,0,0,2,0,2,1,0,0,1,1,2,1,2,0,2,1,2,1,1,1,0,0,1,1,0,0,0,0, -3,3,2,0,0,2,2,0,0,0,1,1,0,2,2,1,3,1,0,1,0,1,2,0,0,0,0,0,1,0,1,0, -0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,2,0,0,0,1,0,0,1,0,0,2,3,1,2,0,0,1,0,0,2,0,0,0,1,0,2,0,2,0, -0,1,1,2,2,1,2,0,2,1,1,0,0,1,1,0,1,1,1,1,2,1,1,0,0,0,0,0,0,0,0,0, -3,3,3,0,2,1,2,1,0,0,1,1,0,3,3,1,2,0,0,1,0,0,2,0,2,0,1,1,2,0,0,0, -0,0,1,1,1,1,2,0,1,1,0,1,1,1,1,0,0,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0, -3,3,3,0,2,2,3,2,0,0,1,0,0,2,3,1,0,0,0,0,0,0,2,0,2,0,0,0,2,0,0,0, -0,1,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0, -3,2,3,0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,0,1,0,0,2,0,0,0,0,0,2,0,1,0, -0,0,2,1,1,0,1,0,2,1,1,0,0,1,1,2,1,0,2,0,2,0,1,0,0,0,2,0,0,0,0,0, -0,0,0,2,2,0,2,1,1,1,1,2,2,0,0,1,0,1,0,0,1,3,0,0,0,0,1,0,0,2,1,0, -0,0,1,0,1,0,0,0,0,0,2,1,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0, -2,0,0,2,3,0,2,3,1,2,2,0,2,0,0,2,0,2,1,1,1,2,1,0,0,1,2,1,1,2,1,0, -1,0,2,0,1,0,1,1,0,0,2,2,1,2,1,1,2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0, -3,3,3,0,2,1,2,0,0,0,1,0,0,3,2,0,1,0,0,1,0,0,2,0,0,0,1,2,1,0,1,0, -0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,2,2,0,2,2,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,0,1,0,0,0,1,1,1,1, -0,0,2,1,0,1,1,1,0,1,1,2,1,2,1,1,2,0,1,1,2,1,0,2,0,0,0,0,0,0,0,0, -3,2,2,0,0,2,0,0,0,0,0,0,0,2,2,0,2,0,0,1,0,0,2,0,0,0,0,0,2,0,0,0, -0,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,3,2,0,2,2,0,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,0, -2,0,1,0,1,0,1,1,0,0,1,2,0,1,0,1,1,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0, -2,2,2,0,1,1,0,0,0,1,0,0,0,1,2,0,1,0,0,1,0,0,1,0,0,0,0,1,2,0,1,0, -0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,2,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,2,1,0,1,1,1,0,0,0,0,1,2,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0, -1,1,2,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,1, -0,0,1,2,2,0,2,1,2,1,1,2,2,0,0,0,0,1,0,0,1,1,0,0,2,0,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0, -2,2,2,0,0,0,1,0,0,0,0,0,0,2,2,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, -0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -2,2,2,0,1,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -) - -Latin5TurkishModel = { - 'char_to_order_map': Latin5_TurkishCharToOrderMap, - 'precedence_matrix': TurkishLangModel, - 'typical_positive_ratio': 0.970290, - 'keep_english_letter': True, - 'charset_name': "ISO-8859-9", - 'language': 'Turkish', -} diff --git a/env/lib/python3.6/site-packages/chardet/latin1prober.py b/env/lib/python3.6/site-packages/chardet/latin1prober.py deleted file mode 100644 index 7d1e8c2..0000000 --- a/env/lib/python3.6/site-packages/chardet/latin1prober.py +++ /dev/null @@ -1,145 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState - -FREQ_CAT_NUM = 4 - -UDF = 0 # undefined -OTH = 1 # other -ASC = 2 # ascii capital letter -ASS = 3 # ascii small letter -ACV = 4 # accent capital vowel -ACO = 5 # accent capital other -ASV = 6 # accent small vowel -ASO = 7 # accent small other -CLASS_NUM = 8 # total classes - -Latin1_CharToClass = ( - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 00 - 07 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 08 - 0F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 10 - 17 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 18 - 1F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 20 - 27 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 28 - 2F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 30 - 37 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 38 - 3F - OTH, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 40 - 47 - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 48 - 4F - ASC, ASC, ASC, ASC, ASC, ASC, ASC, ASC, # 50 - 57 - ASC, ASC, ASC, OTH, OTH, OTH, OTH, OTH, # 58 - 5F - OTH, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 60 - 67 - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 68 - 6F - ASS, ASS, ASS, ASS, ASS, ASS, ASS, ASS, # 70 - 77 - ASS, ASS, ASS, OTH, OTH, OTH, OTH, OTH, # 78 - 7F - OTH, UDF, OTH, ASO, OTH, OTH, OTH, OTH, # 80 - 87 - OTH, OTH, ACO, OTH, ACO, UDF, ACO, UDF, # 88 - 8F - UDF, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # 90 - 97 - OTH, OTH, ASO, OTH, ASO, UDF, ASO, ACO, # 98 - 9F - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A0 - A7 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # A8 - AF - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B0 - B7 - OTH, OTH, OTH, OTH, OTH, OTH, OTH, OTH, # B8 - BF - ACV, ACV, ACV, ACV, ACV, ACV, ACO, ACO, # C0 - C7 - ACV, ACV, ACV, ACV, ACV, ACV, ACV, ACV, # C8 - CF - ACO, ACO, ACV, ACV, ACV, ACV, ACV, OTH, # D0 - D7 - ACV, ACV, ACV, ACV, ACV, ACO, ACO, ACO, # D8 - DF - ASV, ASV, ASV, ASV, ASV, ASV, ASO, ASO, # E0 - E7 - ASV, ASV, ASV, ASV, ASV, ASV, ASV, ASV, # E8 - EF - ASO, ASO, ASV, ASV, ASV, ASV, ASV, OTH, # F0 - F7 - ASV, ASV, ASV, ASV, ASV, ASO, ASO, ASO, # F8 - FF -) - -# 0 : illegal -# 1 : very unlikely -# 2 : normal -# 3 : very likely -Latin1ClassModel = ( -# UDF OTH ASC ASS ACV ACO ASV ASO - 0, 0, 0, 0, 0, 0, 0, 0, # UDF - 0, 3, 3, 3, 3, 3, 3, 3, # OTH - 0, 3, 3, 3, 3, 3, 3, 3, # ASC - 0, 3, 3, 3, 1, 1, 3, 3, # ASS - 0, 3, 3, 3, 1, 2, 1, 2, # ACV - 0, 3, 3, 3, 3, 3, 3, 3, # ACO - 0, 3, 1, 3, 1, 1, 1, 3, # ASV - 0, 3, 1, 3, 1, 1, 3, 3, # ASO -) - - -class Latin1Prober(CharSetProber): - def __init__(self): - super(Latin1Prober, self).__init__() - self._last_char_class = None - self._freq_counter = None - self.reset() - - def reset(self): - self._last_char_class = OTH - self._freq_counter = [0] * FREQ_CAT_NUM - CharSetProber.reset(self) - - @property - def charset_name(self): - return "ISO-8859-1" - - @property - def language(self): - return "" - - def feed(self, byte_str): - byte_str = self.filter_with_english_letters(byte_str) - for c in byte_str: - char_class = Latin1_CharToClass[c] - freq = Latin1ClassModel[(self._last_char_class * CLASS_NUM) - + char_class] - if freq == 0: - self._state = ProbingState.NOT_ME - break - self._freq_counter[freq] += 1 - self._last_char_class = char_class - - return self.state - - def get_confidence(self): - if self.state == ProbingState.NOT_ME: - return 0.01 - - total = sum(self._freq_counter) - if total < 0.01: - confidence = 0.0 - else: - confidence = ((self._freq_counter[3] - self._freq_counter[1] * 20.0) - / total) - if confidence < 0.0: - confidence = 0.0 - # lower the confidence of latin1 so that other more accurate - # detector can take priority. - confidence = confidence * 0.73 - return confidence diff --git a/env/lib/python3.6/site-packages/chardet/mbcharsetprober.py b/env/lib/python3.6/site-packages/chardet/mbcharsetprober.py deleted file mode 100644 index 6256ecf..0000000 --- a/env/lib/python3.6/site-packages/chardet/mbcharsetprober.py +++ /dev/null @@ -1,91 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState, MachineState - - -class MultiByteCharSetProber(CharSetProber): - """ - MultiByteCharSetProber - """ - - def __init__(self, lang_filter=None): - super(MultiByteCharSetProber, self).__init__(lang_filter=lang_filter) - self.distribution_analyzer = None - self.coding_sm = None - self._last_char = [0, 0] - - def reset(self): - super(MultiByteCharSetProber, self).reset() - if self.coding_sm: - self.coding_sm.reset() - if self.distribution_analyzer: - self.distribution_analyzer.reset() - self._last_char = [0, 0] - - @property - def charset_name(self): - raise NotImplementedError - - @property - def language(self): - raise NotImplementedError - - def feed(self, byte_str): - for i in range(len(byte_str)): - coding_state = self.coding_sm.next_state(byte_str[i]) - if coding_state == MachineState.ERROR: - self.logger.debug('%s %s prober hit error at byte %s', - self.charset_name, self.language, i) - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte_str[0] - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.distribution_analyzer.feed(byte_str[i - 1:i + 1], - char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if (self.distribution_analyzer.got_enough_data() and - (self.get_confidence() > self.SHORTCUT_THRESHOLD)): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - return self.distribution_analyzer.get_confidence() diff --git a/env/lib/python3.6/site-packages/chardet/mbcsgroupprober.py b/env/lib/python3.6/site-packages/chardet/mbcsgroupprober.py deleted file mode 100644 index 530abe7..0000000 --- a/env/lib/python3.6/site-packages/chardet/mbcsgroupprober.py +++ /dev/null @@ -1,54 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# Proofpoint, Inc. -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetgroupprober import CharSetGroupProber -from .utf8prober import UTF8Prober -from .sjisprober import SJISProber -from .eucjpprober import EUCJPProber -from .gb2312prober import GB2312Prober -from .euckrprober import EUCKRProber -from .cp949prober import CP949Prober -from .big5prober import Big5Prober -from .euctwprober import EUCTWProber - - -class MBCSGroupProber(CharSetGroupProber): - def __init__(self, lang_filter=None): - super(MBCSGroupProber, self).__init__(lang_filter=lang_filter) - self.probers = [ - UTF8Prober(), - SJISProber(), - EUCJPProber(), - GB2312Prober(), - EUCKRProber(), - CP949Prober(), - Big5Prober(), - EUCTWProber() - ] - self.reset() diff --git a/env/lib/python3.6/site-packages/chardet/mbcssm.py b/env/lib/python3.6/site-packages/chardet/mbcssm.py deleted file mode 100644 index 8360d0f..0000000 --- a/env/lib/python3.6/site-packages/chardet/mbcssm.py +++ /dev/null @@ -1,572 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .enums import MachineState - -# BIG5 - -BIG5_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as legal value - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,1, # 78 - 7f - 4,4,4,4,4,4,4,4, # 80 - 87 - 4,4,4,4,4,4,4,4, # 88 - 8f - 4,4,4,4,4,4,4,4, # 90 - 97 - 4,4,4,4,4,4,4,4, # 98 - 9f - 4,3,3,3,3,3,3,3, # a0 - a7 - 3,3,3,3,3,3,3,3, # a8 - af - 3,3,3,3,3,3,3,3, # b0 - b7 - 3,3,3,3,3,3,3,3, # b8 - bf - 3,3,3,3,3,3,3,3, # c0 - c7 - 3,3,3,3,3,3,3,3, # c8 - cf - 3,3,3,3,3,3,3,3, # d0 - d7 - 3,3,3,3,3,3,3,3, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,3,3,3, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,3,3,0 # f8 - ff -) - -BIG5_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,#08-0f - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START#10-17 -) - -BIG5_CHAR_LEN_TABLE = (0, 1, 1, 2, 0) - -BIG5_SM_MODEL = {'class_table': BIG5_CLS, - 'class_factor': 5, - 'state_table': BIG5_ST, - 'char_len_table': BIG5_CHAR_LEN_TABLE, - 'name': 'Big5'} - -# CP949 - -CP949_CLS = ( - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,0,0, # 00 - 0f - 1,1,1,1,1,1,1,1, 1,1,1,0,1,1,1,1, # 10 - 1f - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 20 - 2f - 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, # 30 - 3f - 1,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4, # 40 - 4f - 4,4,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 50 - 5f - 1,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5, # 60 - 6f - 5,5,5,5,5,5,5,5, 5,5,5,1,1,1,1,1, # 70 - 7f - 0,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 80 - 8f - 6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6, # 90 - 9f - 6,7,7,7,7,7,7,7, 7,7,7,7,7,8,8,8, # a0 - af - 7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7, # b0 - bf - 7,7,7,7,7,7,9,2, 2,3,2,2,2,2,2,2, # c0 - cf - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # d0 - df - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2, # e0 - ef - 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,0, # f0 - ff -) - -CP949_ST = ( -#cls= 0 1 2 3 4 5 6 7 8 9 # previous state = - MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.START,MachineState.START, 4, 5,MachineState.ERROR, 6, # MachineState.START - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, # MachineState.ERROR - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME, # MachineState.ITS_ME - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 3 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 4 - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, # 5 - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START, # 6 -) - -CP949_CHAR_LEN_TABLE = (0, 1, 2, 0, 1, 1, 2, 2, 0, 2) - -CP949_SM_MODEL = {'class_table': CP949_CLS, - 'class_factor': 10, - 'state_table': CP949_ST, - 'char_len_table': CP949_CHAR_LEN_TABLE, - 'name': 'CP949'} - -# EUC-JP - -EUCJP_CLS = ( - 4,4,4,4,4,4,4,4, # 00 - 07 - 4,4,4,4,4,4,5,5, # 08 - 0f - 4,4,4,4,4,4,4,4, # 10 - 17 - 4,4,4,5,4,4,4,4, # 18 - 1f - 4,4,4,4,4,4,4,4, # 20 - 27 - 4,4,4,4,4,4,4,4, # 28 - 2f - 4,4,4,4,4,4,4,4, # 30 - 37 - 4,4,4,4,4,4,4,4, # 38 - 3f - 4,4,4,4,4,4,4,4, # 40 - 47 - 4,4,4,4,4,4,4,4, # 48 - 4f - 4,4,4,4,4,4,4,4, # 50 - 57 - 4,4,4,4,4,4,4,4, # 58 - 5f - 4,4,4,4,4,4,4,4, # 60 - 67 - 4,4,4,4,4,4,4,4, # 68 - 6f - 4,4,4,4,4,4,4,4, # 70 - 77 - 4,4,4,4,4,4,4,4, # 78 - 7f - 5,5,5,5,5,5,5,5, # 80 - 87 - 5,5,5,5,5,5,1,3, # 88 - 8f - 5,5,5,5,5,5,5,5, # 90 - 97 - 5,5,5,5,5,5,5,5, # 98 - 9f - 5,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,2,2,2, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,2,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,0,5 # f8 - ff -) - -EUCJP_ST = ( - 3, 4, 3, 5,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 3,MachineState.ERROR,#18-1f - 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START#20-27 -) - -EUCJP_CHAR_LEN_TABLE = (2, 2, 2, 3, 1, 0) - -EUCJP_SM_MODEL = {'class_table': EUCJP_CLS, - 'class_factor': 6, - 'state_table': EUCJP_ST, - 'char_len_table': EUCJP_CHAR_LEN_TABLE, - 'name': 'EUC-JP'} - -# EUC-KR - -EUCKR_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 1,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,1, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,3,3,3, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,3,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 2,2,2,2,2,2,2,2, # e0 - e7 - 2,2,2,2,2,2,2,2, # e8 - ef - 2,2,2,2,2,2,2,2, # f0 - f7 - 2,2,2,2,2,2,2,0 # f8 - ff -) - -EUCKR_ST = ( - MachineState.ERROR,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #08-0f -) - -EUCKR_CHAR_LEN_TABLE = (0, 1, 2, 0) - -EUCKR_SM_MODEL = {'class_table': EUCKR_CLS, - 'class_factor': 4, - 'state_table': EUCKR_ST, - 'char_len_table': EUCKR_CHAR_LEN_TABLE, - 'name': 'EUC-KR'} - -# EUC-TW - -EUCTW_CLS = ( - 2,2,2,2,2,2,2,2, # 00 - 07 - 2,2,2,2,2,2,0,0, # 08 - 0f - 2,2,2,2,2,2,2,2, # 10 - 17 - 2,2,2,0,2,2,2,2, # 18 - 1f - 2,2,2,2,2,2,2,2, # 20 - 27 - 2,2,2,2,2,2,2,2, # 28 - 2f - 2,2,2,2,2,2,2,2, # 30 - 37 - 2,2,2,2,2,2,2,2, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,2, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,6,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,3,4,4,4,4,4,4, # a0 - a7 - 5,5,1,1,1,1,1,1, # a8 - af - 1,1,1,1,1,1,1,1, # b0 - b7 - 1,1,1,1,1,1,1,1, # b8 - bf - 1,1,3,1,3,3,3,3, # c0 - c7 - 3,3,3,3,3,3,3,3, # c8 - cf - 3,3,3,3,3,3,3,3, # d0 - d7 - 3,3,3,3,3,3,3,3, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,3,3,3, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,3,3,0 # f8 - ff -) - -EUCTW_ST = ( - MachineState.ERROR,MachineState.ERROR,MachineState.START, 3, 3, 3, 4,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,MachineState.ERROR,#10-17 - MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,#20-27 - MachineState.START,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f -) - -EUCTW_CHAR_LEN_TABLE = (0, 0, 1, 2, 2, 2, 3) - -EUCTW_SM_MODEL = {'class_table': EUCTW_CLS, - 'class_factor': 7, - 'state_table': EUCTW_ST, - 'char_len_table': EUCTW_CHAR_LEN_TABLE, - 'name': 'x-euc-tw'} - -# GB2312 - -GB2312_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 3,3,3,3,3,3,3,3, # 30 - 37 - 3,3,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,4, # 78 - 7f - 5,6,6,6,6,6,6,6, # 80 - 87 - 6,6,6,6,6,6,6,6, # 88 - 8f - 6,6,6,6,6,6,6,6, # 90 - 97 - 6,6,6,6,6,6,6,6, # 98 - 9f - 6,6,6,6,6,6,6,6, # a0 - a7 - 6,6,6,6,6,6,6,6, # a8 - af - 6,6,6,6,6,6,6,6, # b0 - b7 - 6,6,6,6,6,6,6,6, # b8 - bf - 6,6,6,6,6,6,6,6, # c0 - c7 - 6,6,6,6,6,6,6,6, # c8 - cf - 6,6,6,6,6,6,6,6, # d0 - d7 - 6,6,6,6,6,6,6,6, # d8 - df - 6,6,6,6,6,6,6,6, # e0 - e7 - 6,6,6,6,6,6,6,6, # e8 - ef - 6,6,6,6,6,6,6,6, # f0 - f7 - 6,6,6,6,6,6,6,0 # f8 - ff -) - -GB2312_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START, 3,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,#10-17 - 4,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - MachineState.ERROR,MachineState.ERROR, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#20-27 - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START #28-2f -) - -# To be accurate, the length of class 6 can be either 2 or 4. -# But it is not necessary to discriminate between the two since -# it is used for frequency analysis only, and we are validating -# each code range there as well. So it is safe to set it to be -# 2 here. -GB2312_CHAR_LEN_TABLE = (0, 1, 1, 1, 1, 1, 2) - -GB2312_SM_MODEL = {'class_table': GB2312_CLS, - 'class_factor': 7, - 'state_table': GB2312_ST, - 'char_len_table': GB2312_CHAR_LEN_TABLE, - 'name': 'GB2312'} - -# Shift_JIS - -SJIS_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 2,2,2,2,2,2,2,2, # 40 - 47 - 2,2,2,2,2,2,2,2, # 48 - 4f - 2,2,2,2,2,2,2,2, # 50 - 57 - 2,2,2,2,2,2,2,2, # 58 - 5f - 2,2,2,2,2,2,2,2, # 60 - 67 - 2,2,2,2,2,2,2,2, # 68 - 6f - 2,2,2,2,2,2,2,2, # 70 - 77 - 2,2,2,2,2,2,2,1, # 78 - 7f - 3,3,3,3,3,2,2,3, # 80 - 87 - 3,3,3,3,3,3,3,3, # 88 - 8f - 3,3,3,3,3,3,3,3, # 90 - 97 - 3,3,3,3,3,3,3,3, # 98 - 9f - #0xa0 is illegal in sjis encoding, but some pages does - #contain such byte. We need to be more error forgiven. - 2,2,2,2,2,2,2,2, # a0 - a7 - 2,2,2,2,2,2,2,2, # a8 - af - 2,2,2,2,2,2,2,2, # b0 - b7 - 2,2,2,2,2,2,2,2, # b8 - bf - 2,2,2,2,2,2,2,2, # c0 - c7 - 2,2,2,2,2,2,2,2, # c8 - cf - 2,2,2,2,2,2,2,2, # d0 - d7 - 2,2,2,2,2,2,2,2, # d8 - df - 3,3,3,3,3,3,3,3, # e0 - e7 - 3,3,3,3,3,4,4,4, # e8 - ef - 3,3,3,3,3,3,3,3, # f0 - f7 - 3,3,3,3,3,0,0,0) # f8 - ff - - -SJIS_ST = ( - MachineState.ERROR,MachineState.START,MachineState.START, 3,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START #10-17 -) - -SJIS_CHAR_LEN_TABLE = (0, 1, 1, 2, 0, 0) - -SJIS_SM_MODEL = {'class_table': SJIS_CLS, - 'class_factor': 6, - 'state_table': SJIS_ST, - 'char_len_table': SJIS_CHAR_LEN_TABLE, - 'name': 'Shift_JIS'} - -# UCS2-BE - -UCS2BE_CLS = ( - 0,0,0,0,0,0,0,0, # 00 - 07 - 0,0,1,0,0,2,0,0, # 08 - 0f - 0,0,0,0,0,0,0,0, # 10 - 17 - 0,0,0,3,0,0,0,0, # 18 - 1f - 0,0,0,0,0,0,0,0, # 20 - 27 - 0,3,3,3,3,3,0,0, # 28 - 2f - 0,0,0,0,0,0,0,0, # 30 - 37 - 0,0,0,0,0,0,0,0, # 38 - 3f - 0,0,0,0,0,0,0,0, # 40 - 47 - 0,0,0,0,0,0,0,0, # 48 - 4f - 0,0,0,0,0,0,0,0, # 50 - 57 - 0,0,0,0,0,0,0,0, # 58 - 5f - 0,0,0,0,0,0,0,0, # 60 - 67 - 0,0,0,0,0,0,0,0, # 68 - 6f - 0,0,0,0,0,0,0,0, # 70 - 77 - 0,0,0,0,0,0,0,0, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,0,0,0,0,0,0,0, # a0 - a7 - 0,0,0,0,0,0,0,0, # a8 - af - 0,0,0,0,0,0,0,0, # b0 - b7 - 0,0,0,0,0,0,0,0, # b8 - bf - 0,0,0,0,0,0,0,0, # c0 - c7 - 0,0,0,0,0,0,0,0, # c8 - cf - 0,0,0,0,0,0,0,0, # d0 - d7 - 0,0,0,0,0,0,0,0, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,4,5 # f8 - ff -) - -UCS2BE_ST = ( - 5, 7, 7,MachineState.ERROR, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME, 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,#10-17 - 6, 6, 6, 6, 6,MachineState.ITS_ME, 6, 6,#18-1f - 6, 6, 6, 6, 5, 7, 7,MachineState.ERROR,#20-27 - 5, 8, 6, 6,MachineState.ERROR, 6, 6, 6,#28-2f - 6, 6, 6, 6,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START #30-37 -) - -UCS2BE_CHAR_LEN_TABLE = (2, 2, 2, 0, 2, 2) - -UCS2BE_SM_MODEL = {'class_table': UCS2BE_CLS, - 'class_factor': 6, - 'state_table': UCS2BE_ST, - 'char_len_table': UCS2BE_CHAR_LEN_TABLE, - 'name': 'UTF-16BE'} - -# UCS2-LE - -UCS2LE_CLS = ( - 0,0,0,0,0,0,0,0, # 00 - 07 - 0,0,1,0,0,2,0,0, # 08 - 0f - 0,0,0,0,0,0,0,0, # 10 - 17 - 0,0,0,3,0,0,0,0, # 18 - 1f - 0,0,0,0,0,0,0,0, # 20 - 27 - 0,3,3,3,3,3,0,0, # 28 - 2f - 0,0,0,0,0,0,0,0, # 30 - 37 - 0,0,0,0,0,0,0,0, # 38 - 3f - 0,0,0,0,0,0,0,0, # 40 - 47 - 0,0,0,0,0,0,0,0, # 48 - 4f - 0,0,0,0,0,0,0,0, # 50 - 57 - 0,0,0,0,0,0,0,0, # 58 - 5f - 0,0,0,0,0,0,0,0, # 60 - 67 - 0,0,0,0,0,0,0,0, # 68 - 6f - 0,0,0,0,0,0,0,0, # 70 - 77 - 0,0,0,0,0,0,0,0, # 78 - 7f - 0,0,0,0,0,0,0,0, # 80 - 87 - 0,0,0,0,0,0,0,0, # 88 - 8f - 0,0,0,0,0,0,0,0, # 90 - 97 - 0,0,0,0,0,0,0,0, # 98 - 9f - 0,0,0,0,0,0,0,0, # a0 - a7 - 0,0,0,0,0,0,0,0, # a8 - af - 0,0,0,0,0,0,0,0, # b0 - b7 - 0,0,0,0,0,0,0,0, # b8 - bf - 0,0,0,0,0,0,0,0, # c0 - c7 - 0,0,0,0,0,0,0,0, # c8 - cf - 0,0,0,0,0,0,0,0, # d0 - d7 - 0,0,0,0,0,0,0,0, # d8 - df - 0,0,0,0,0,0,0,0, # e0 - e7 - 0,0,0,0,0,0,0,0, # e8 - ef - 0,0,0,0,0,0,0,0, # f0 - f7 - 0,0,0,0,0,0,4,5 # f8 - ff -) - -UCS2LE_ST = ( - 6, 6, 7, 6, 4, 3,MachineState.ERROR,MachineState.ERROR,#00-07 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#08-0f - MachineState.ITS_ME,MachineState.ITS_ME, 5, 5, 5,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,#10-17 - 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR, 6, 6,#18-1f - 7, 6, 8, 8, 5, 5, 5,MachineState.ERROR,#20-27 - 5, 5, 5,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5,#28-2f - 5, 5, 5,MachineState.ERROR, 5,MachineState.ERROR,MachineState.START,MachineState.START #30-37 -) - -UCS2LE_CHAR_LEN_TABLE = (2, 2, 2, 2, 2, 2) - -UCS2LE_SM_MODEL = {'class_table': UCS2LE_CLS, - 'class_factor': 6, - 'state_table': UCS2LE_ST, - 'char_len_table': UCS2LE_CHAR_LEN_TABLE, - 'name': 'UTF-16LE'} - -# UTF-8 - -UTF8_CLS = ( - 1,1,1,1,1,1,1,1, # 00 - 07 #allow 0x00 as a legal value - 1,1,1,1,1,1,0,0, # 08 - 0f - 1,1,1,1,1,1,1,1, # 10 - 17 - 1,1,1,0,1,1,1,1, # 18 - 1f - 1,1,1,1,1,1,1,1, # 20 - 27 - 1,1,1,1,1,1,1,1, # 28 - 2f - 1,1,1,1,1,1,1,1, # 30 - 37 - 1,1,1,1,1,1,1,1, # 38 - 3f - 1,1,1,1,1,1,1,1, # 40 - 47 - 1,1,1,1,1,1,1,1, # 48 - 4f - 1,1,1,1,1,1,1,1, # 50 - 57 - 1,1,1,1,1,1,1,1, # 58 - 5f - 1,1,1,1,1,1,1,1, # 60 - 67 - 1,1,1,1,1,1,1,1, # 68 - 6f - 1,1,1,1,1,1,1,1, # 70 - 77 - 1,1,1,1,1,1,1,1, # 78 - 7f - 2,2,2,2,3,3,3,3, # 80 - 87 - 4,4,4,4,4,4,4,4, # 88 - 8f - 4,4,4,4,4,4,4,4, # 90 - 97 - 4,4,4,4,4,4,4,4, # 98 - 9f - 5,5,5,5,5,5,5,5, # a0 - a7 - 5,5,5,5,5,5,5,5, # a8 - af - 5,5,5,5,5,5,5,5, # b0 - b7 - 5,5,5,5,5,5,5,5, # b8 - bf - 0,0,6,6,6,6,6,6, # c0 - c7 - 6,6,6,6,6,6,6,6, # c8 - cf - 6,6,6,6,6,6,6,6, # d0 - d7 - 6,6,6,6,6,6,6,6, # d8 - df - 7,8,8,8,8,8,8,8, # e0 - e7 - 8,8,8,8,8,9,8,8, # e8 - ef - 10,11,11,11,11,11,11,11, # f0 - f7 - 12,13,13,13,14,15,0,0 # f8 - ff -) - -UTF8_ST = ( - MachineState.ERROR,MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12, 10,#00-07 - 9, 11, 8, 7, 6, 5, 4, 3,#08-0f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#10-17 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#18-1f - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#20-27 - MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,#28-2f - MachineState.ERROR,MachineState.ERROR, 5, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#30-37 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#38-3f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 5, 5, 5,MachineState.ERROR,MachineState.ERROR,#40-47 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#48-4f - MachineState.ERROR,MachineState.ERROR, 7, 7, 7, 7,MachineState.ERROR,MachineState.ERROR,#50-57 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#58-5f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 7, 7,MachineState.ERROR,MachineState.ERROR,#60-67 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#68-6f - MachineState.ERROR,MachineState.ERROR, 9, 9, 9, 9,MachineState.ERROR,MachineState.ERROR,#70-77 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#78-7f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 9,MachineState.ERROR,MachineState.ERROR,#80-87 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#88-8f - MachineState.ERROR,MachineState.ERROR, 12, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,#90-97 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#98-9f - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR, 12,MachineState.ERROR,MachineState.ERROR,#a0-a7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#a8-af - MachineState.ERROR,MachineState.ERROR, 12, 12, 12,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b0-b7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,#b8-bf - MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,#c0-c7 - MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR #c8-cf -) - -UTF8_CHAR_LEN_TABLE = (0, 1, 0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6) - -UTF8_SM_MODEL = {'class_table': UTF8_CLS, - 'class_factor': 16, - 'state_table': UTF8_ST, - 'char_len_table': UTF8_CHAR_LEN_TABLE, - 'name': 'UTF-8'} diff --git a/env/lib/python3.6/site-packages/chardet/sbcharsetprober.py b/env/lib/python3.6/site-packages/chardet/sbcharsetprober.py deleted file mode 100644 index 0adb51d..0000000 --- a/env/lib/python3.6/site-packages/chardet/sbcharsetprober.py +++ /dev/null @@ -1,132 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import CharacterCategory, ProbingState, SequenceLikelihood - - -class SingleByteCharSetProber(CharSetProber): - SAMPLE_SIZE = 64 - SB_ENOUGH_REL_THRESHOLD = 1024 # 0.25 * SAMPLE_SIZE^2 - POSITIVE_SHORTCUT_THRESHOLD = 0.95 - NEGATIVE_SHORTCUT_THRESHOLD = 0.05 - - def __init__(self, model, reversed=False, name_prober=None): - super(SingleByteCharSetProber, self).__init__() - self._model = model - # TRUE if we need to reverse every pair in the model lookup - self._reversed = reversed - # Optional auxiliary prober for name decision - self._name_prober = name_prober - self._last_order = None - self._seq_counters = None - self._total_seqs = None - self._total_char = None - self._freq_char = None - self.reset() - - def reset(self): - super(SingleByteCharSetProber, self).reset() - # char order of last character - self._last_order = 255 - self._seq_counters = [0] * SequenceLikelihood.get_num_categories() - self._total_seqs = 0 - self._total_char = 0 - # characters that fall in our sampling range - self._freq_char = 0 - - @property - def charset_name(self): - if self._name_prober: - return self._name_prober.charset_name - else: - return self._model['charset_name'] - - @property - def language(self): - if self._name_prober: - return self._name_prober.language - else: - return self._model.get('language') - - def feed(self, byte_str): - if not self._model['keep_english_letter']: - byte_str = self.filter_international_words(byte_str) - if not byte_str: - return self.state - char_to_order_map = self._model['char_to_order_map'] - for i, c in enumerate(byte_str): - # XXX: Order is in range 1-64, so one would think we want 0-63 here, - # but that leads to 27 more test failures than before. - order = char_to_order_map[c] - # XXX: This was SYMBOL_CAT_ORDER before, with a value of 250, but - # CharacterCategory.SYMBOL is actually 253, so we use CONTROL - # to make it closer to the original intent. The only difference - # is whether or not we count digits and control characters for - # _total_char purposes. - if order < CharacterCategory.CONTROL: - self._total_char += 1 - if order < self.SAMPLE_SIZE: - self._freq_char += 1 - if self._last_order < self.SAMPLE_SIZE: - self._total_seqs += 1 - if not self._reversed: - i = (self._last_order * self.SAMPLE_SIZE) + order - model = self._model['precedence_matrix'][i] - else: # reverse the order of the letters in the lookup - i = (order * self.SAMPLE_SIZE) + self._last_order - model = self._model['precedence_matrix'][i] - self._seq_counters[model] += 1 - self._last_order = order - - charset_name = self._model['charset_name'] - if self.state == ProbingState.DETECTING: - if self._total_seqs > self.SB_ENOUGH_REL_THRESHOLD: - confidence = self.get_confidence() - if confidence > self.POSITIVE_SHORTCUT_THRESHOLD: - self.logger.debug('%s confidence = %s, we have a winner', - charset_name, confidence) - self._state = ProbingState.FOUND_IT - elif confidence < self.NEGATIVE_SHORTCUT_THRESHOLD: - self.logger.debug('%s confidence = %s, below negative ' - 'shortcut threshhold %s', charset_name, - confidence, - self.NEGATIVE_SHORTCUT_THRESHOLD) - self._state = ProbingState.NOT_ME - - return self.state - - def get_confidence(self): - r = 0.01 - if self._total_seqs > 0: - r = ((1.0 * self._seq_counters[SequenceLikelihood.POSITIVE]) / - self._total_seqs / self._model['typical_positive_ratio']) - r = r * self._freq_char / self._total_char - if r >= 1.0: - r = 0.99 - return r diff --git a/env/lib/python3.6/site-packages/chardet/sbcsgroupprober.py b/env/lib/python3.6/site-packages/chardet/sbcsgroupprober.py deleted file mode 100644 index 98e95dc..0000000 --- a/env/lib/python3.6/site-packages/chardet/sbcsgroupprober.py +++ /dev/null @@ -1,73 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetgroupprober import CharSetGroupProber -from .sbcharsetprober import SingleByteCharSetProber -from .langcyrillicmodel import (Win1251CyrillicModel, Koi8rModel, - Latin5CyrillicModel, MacCyrillicModel, - Ibm866Model, Ibm855Model) -from .langgreekmodel import Latin7GreekModel, Win1253GreekModel -from .langbulgarianmodel import Latin5BulgarianModel, Win1251BulgarianModel -# from .langhungarianmodel import Latin2HungarianModel, Win1250HungarianModel -from .langthaimodel import TIS620ThaiModel -from .langhebrewmodel import Win1255HebrewModel -from .hebrewprober import HebrewProber -from .langturkishmodel import Latin5TurkishModel - - -class SBCSGroupProber(CharSetGroupProber): - def __init__(self): - super(SBCSGroupProber, self).__init__() - self.probers = [ - SingleByteCharSetProber(Win1251CyrillicModel), - SingleByteCharSetProber(Koi8rModel), - SingleByteCharSetProber(Latin5CyrillicModel), - SingleByteCharSetProber(MacCyrillicModel), - SingleByteCharSetProber(Ibm866Model), - SingleByteCharSetProber(Ibm855Model), - SingleByteCharSetProber(Latin7GreekModel), - SingleByteCharSetProber(Win1253GreekModel), - SingleByteCharSetProber(Latin5BulgarianModel), - SingleByteCharSetProber(Win1251BulgarianModel), - # TODO: Restore Hungarian encodings (iso-8859-2 and windows-1250) - # after we retrain model. - # SingleByteCharSetProber(Latin2HungarianModel), - # SingleByteCharSetProber(Win1250HungarianModel), - SingleByteCharSetProber(TIS620ThaiModel), - SingleByteCharSetProber(Latin5TurkishModel), - ] - hebrew_prober = HebrewProber() - logical_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, - False, hebrew_prober) - visual_hebrew_prober = SingleByteCharSetProber(Win1255HebrewModel, True, - hebrew_prober) - hebrew_prober.set_model_probers(logical_hebrew_prober, visual_hebrew_prober) - self.probers.extend([hebrew_prober, logical_hebrew_prober, - visual_hebrew_prober]) - - self.reset() diff --git a/env/lib/python3.6/site-packages/chardet/sjisprober.py b/env/lib/python3.6/site-packages/chardet/sjisprober.py deleted file mode 100644 index 9e29623..0000000 --- a/env/lib/python3.6/site-packages/chardet/sjisprober.py +++ /dev/null @@ -1,92 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .mbcharsetprober import MultiByteCharSetProber -from .codingstatemachine import CodingStateMachine -from .chardistribution import SJISDistributionAnalysis -from .jpcntx import SJISContextAnalysis -from .mbcssm import SJIS_SM_MODEL -from .enums import ProbingState, MachineState - - -class SJISProber(MultiByteCharSetProber): - def __init__(self): - super(SJISProber, self).__init__() - self.coding_sm = CodingStateMachine(SJIS_SM_MODEL) - self.distribution_analyzer = SJISDistributionAnalysis() - self.context_analyzer = SJISContextAnalysis() - self.reset() - - def reset(self): - super(SJISProber, self).reset() - self.context_analyzer.reset() - - @property - def charset_name(self): - return self.context_analyzer.charset_name - - @property - def language(self): - return "Japanese" - - def feed(self, byte_str): - for i in range(len(byte_str)): - coding_state = self.coding_sm.next_state(byte_str[i]) - if coding_state == MachineState.ERROR: - self.logger.debug('%s %s prober hit error at byte %s', - self.charset_name, self.language, i) - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - char_len = self.coding_sm.get_current_charlen() - if i == 0: - self._last_char[1] = byte_str[0] - self.context_analyzer.feed(self._last_char[2 - char_len:], - char_len) - self.distribution_analyzer.feed(self._last_char, char_len) - else: - self.context_analyzer.feed(byte_str[i + 1 - char_len:i + 3 - - char_len], char_len) - self.distribution_analyzer.feed(byte_str[i - 1:i + 1], - char_len) - - self._last_char[0] = byte_str[-1] - - if self.state == ProbingState.DETECTING: - if (self.context_analyzer.got_enough_data() and - (self.get_confidence() > self.SHORTCUT_THRESHOLD)): - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - context_conf = self.context_analyzer.get_confidence() - distrib_conf = self.distribution_analyzer.get_confidence() - return max(context_conf, distrib_conf) diff --git a/env/lib/python3.6/site-packages/chardet/universaldetector.py b/env/lib/python3.6/site-packages/chardet/universaldetector.py deleted file mode 100644 index 7b4e92d..0000000 --- a/env/lib/python3.6/site-packages/chardet/universaldetector.py +++ /dev/null @@ -1,286 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is Mozilla Universal charset detector code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 2001 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# Shy Shalom - original C code -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### -""" -Module containing the UniversalDetector detector class, which is the primary -class a user of ``chardet`` should use. - -:author: Mark Pilgrim (initial port to Python) -:author: Shy Shalom (original C code) -:author: Dan Blanchard (major refactoring for 3.0) -:author: Ian Cordasco -""" - - -import codecs -import logging -import re - -from .charsetgroupprober import CharSetGroupProber -from .enums import InputState, LanguageFilter, ProbingState -from .escprober import EscCharSetProber -from .latin1prober import Latin1Prober -from .mbcsgroupprober import MBCSGroupProber -from .sbcsgroupprober import SBCSGroupProber - - -class UniversalDetector(object): - """ - The ``UniversalDetector`` class underlies the ``chardet.detect`` function - and coordinates all of the different charset probers. - - To get a ``dict`` containing an encoding and its confidence, you can simply - run: - - .. code:: - - u = UniversalDetector() - u.feed(some_bytes) - u.close() - detected = u.result - - """ - - MINIMUM_THRESHOLD = 0.20 - HIGH_BYTE_DETECTOR = re.compile(b'[\x80-\xFF]') - ESC_DETECTOR = re.compile(b'(\033|~{)') - WIN_BYTE_DETECTOR = re.compile(b'[\x80-\x9F]') - ISO_WIN_MAP = {'iso-8859-1': 'Windows-1252', - 'iso-8859-2': 'Windows-1250', - 'iso-8859-5': 'Windows-1251', - 'iso-8859-6': 'Windows-1256', - 'iso-8859-7': 'Windows-1253', - 'iso-8859-8': 'Windows-1255', - 'iso-8859-9': 'Windows-1254', - 'iso-8859-13': 'Windows-1257'} - - def __init__(self, lang_filter=LanguageFilter.ALL): - self._esc_charset_prober = None - self._charset_probers = [] - self.result = None - self.done = None - self._got_data = None - self._input_state = None - self._last_char = None - self.lang_filter = lang_filter - self.logger = logging.getLogger(__name__) - self._has_win_bytes = None - self.reset() - - def reset(self): - """ - Reset the UniversalDetector and all of its probers back to their - initial states. This is called by ``__init__``, so you only need to - call this directly in between analyses of different documents. - """ - self.result = {'encoding': None, 'confidence': 0.0, 'language': None} - self.done = False - self._got_data = False - self._has_win_bytes = False - self._input_state = InputState.PURE_ASCII - self._last_char = b'' - if self._esc_charset_prober: - self._esc_charset_prober.reset() - for prober in self._charset_probers: - prober.reset() - - def feed(self, byte_str): - """ - Takes a chunk of a document and feeds it through all of the relevant - charset probers. - - After calling ``feed``, you can check the value of the ``done`` - attribute to see if you need to continue feeding the - ``UniversalDetector`` more data, or if it has made a prediction - (in the ``result`` attribute). - - .. note:: - You should always call ``close`` when you're done feeding in your - document if ``done`` is not already ``True``. - """ - if self.done: - return - - if not len(byte_str): - return - - if not isinstance(byte_str, bytearray): - byte_str = bytearray(byte_str) - - # First check for known BOMs, since these are guaranteed to be correct - if not self._got_data: - # If the data starts with BOM, we know it is UTF - if byte_str.startswith(codecs.BOM_UTF8): - # EF BB BF UTF-8 with BOM - self.result = {'encoding': "UTF-8-SIG", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith((codecs.BOM_UTF32_LE, - codecs.BOM_UTF32_BE)): - # FF FE 00 00 UTF-32, little-endian BOM - # 00 00 FE FF UTF-32, big-endian BOM - self.result = {'encoding': "UTF-32", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith(b'\xFE\xFF\x00\x00'): - # FE FF 00 00 UCS-4, unusual octet order BOM (3412) - self.result = {'encoding': "X-ISO-10646-UCS-4-3412", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith(b'\x00\x00\xFF\xFE'): - # 00 00 FF FE UCS-4, unusual octet order BOM (2143) - self.result = {'encoding': "X-ISO-10646-UCS-4-2143", - 'confidence': 1.0, - 'language': ''} - elif byte_str.startswith((codecs.BOM_LE, codecs.BOM_BE)): - # FF FE UTF-16, little endian BOM - # FE FF UTF-16, big endian BOM - self.result = {'encoding': "UTF-16", - 'confidence': 1.0, - 'language': ''} - - self._got_data = True - if self.result['encoding'] is not None: - self.done = True - return - - # If none of those matched and we've only see ASCII so far, check - # for high bytes and escape sequences - if self._input_state == InputState.PURE_ASCII: - if self.HIGH_BYTE_DETECTOR.search(byte_str): - self._input_state = InputState.HIGH_BYTE - elif self._input_state == InputState.PURE_ASCII and \ - self.ESC_DETECTOR.search(self._last_char + byte_str): - self._input_state = InputState.ESC_ASCII - - self._last_char = byte_str[-1:] - - # If we've seen escape sequences, use the EscCharSetProber, which - # uses a simple state machine to check for known escape sequences in - # HZ and ISO-2022 encodings, since those are the only encodings that - # use such sequences. - if self._input_state == InputState.ESC_ASCII: - if not self._esc_charset_prober: - self._esc_charset_prober = EscCharSetProber(self.lang_filter) - if self._esc_charset_prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = {'encoding': - self._esc_charset_prober.charset_name, - 'confidence': - self._esc_charset_prober.get_confidence(), - 'language': - self._esc_charset_prober.language} - self.done = True - # If we've seen high bytes (i.e., those with values greater than 127), - # we need to do more complicated checks using all our multi-byte and - # single-byte probers that are left. The single-byte probers - # use character bigram distributions to determine the encoding, whereas - # the multi-byte probers use a combination of character unigram and - # bigram distributions. - elif self._input_state == InputState.HIGH_BYTE: - if not self._charset_probers: - self._charset_probers = [MBCSGroupProber(self.lang_filter)] - # If we're checking non-CJK encodings, use single-byte prober - if self.lang_filter & LanguageFilter.NON_CJK: - self._charset_probers.append(SBCSGroupProber()) - self._charset_probers.append(Latin1Prober()) - for prober in self._charset_probers: - if prober.feed(byte_str) == ProbingState.FOUND_IT: - self.result = {'encoding': prober.charset_name, - 'confidence': prober.get_confidence(), - 'language': prober.language} - self.done = True - break - if self.WIN_BYTE_DETECTOR.search(byte_str): - self._has_win_bytes = True - - def close(self): - """ - Stop analyzing the current document and come up with a final - prediction. - - :returns: The ``result`` attribute, a ``dict`` with the keys - `encoding`, `confidence`, and `language`. - """ - # Don't bother with checks if we're already done - if self.done: - return self.result - self.done = True - - if not self._got_data: - self.logger.debug('no data received!') - - # Default to ASCII if it is all we've seen so far - elif self._input_state == InputState.PURE_ASCII: - self.result = {'encoding': 'ascii', - 'confidence': 1.0, - 'language': ''} - - # If we have seen non-ASCII, return the best that met MINIMUM_THRESHOLD - elif self._input_state == InputState.HIGH_BYTE: - prober_confidence = None - max_prober_confidence = 0.0 - max_prober = None - for prober in self._charset_probers: - if not prober: - continue - prober_confidence = prober.get_confidence() - if prober_confidence > max_prober_confidence: - max_prober_confidence = prober_confidence - max_prober = prober - if max_prober and (max_prober_confidence > self.MINIMUM_THRESHOLD): - charset_name = max_prober.charset_name - lower_charset_name = max_prober.charset_name.lower() - confidence = max_prober.get_confidence() - # Use Windows encoding name instead of ISO-8859 if we saw any - # extra Windows-specific bytes - if lower_charset_name.startswith('iso-8859'): - if self._has_win_bytes: - charset_name = self.ISO_WIN_MAP.get(lower_charset_name, - charset_name) - self.result = {'encoding': charset_name, - 'confidence': confidence, - 'language': max_prober.language} - - # Log all prober confidences if none met MINIMUM_THRESHOLD - if self.logger.getEffectiveLevel() == logging.DEBUG: - if self.result['encoding'] is None: - self.logger.debug('no probers hit minimum threshold') - for group_prober in self._charset_probers: - if not group_prober: - continue - if isinstance(group_prober, CharSetGroupProber): - for prober in group_prober.probers: - self.logger.debug('%s %s confidence = %s', - prober.charset_name, - prober.language, - prober.get_confidence()) - else: - self.logger.debug('%s %s confidence = %s', - prober.charset_name, - prober.language, - prober.get_confidence()) - return self.result diff --git a/env/lib/python3.6/site-packages/chardet/utf8prober.py b/env/lib/python3.6/site-packages/chardet/utf8prober.py deleted file mode 100644 index 6c3196c..0000000 --- a/env/lib/python3.6/site-packages/chardet/utf8prober.py +++ /dev/null @@ -1,82 +0,0 @@ -######################## BEGIN LICENSE BLOCK ######################## -# The Original Code is mozilla.org code. -# -# The Initial Developer of the Original Code is -# Netscape Communications Corporation. -# Portions created by the Initial Developer are Copyright (C) 1998 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Mark Pilgrim - port to Python -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -# 02110-1301 USA -######################### END LICENSE BLOCK ######################### - -from .charsetprober import CharSetProber -from .enums import ProbingState, MachineState -from .codingstatemachine import CodingStateMachine -from .mbcssm import UTF8_SM_MODEL - - - -class UTF8Prober(CharSetProber): - ONE_CHAR_PROB = 0.5 - - def __init__(self): - super(UTF8Prober, self).__init__() - self.coding_sm = CodingStateMachine(UTF8_SM_MODEL) - self._num_mb_chars = None - self.reset() - - def reset(self): - super(UTF8Prober, self).reset() - self.coding_sm.reset() - self._num_mb_chars = 0 - - @property - def charset_name(self): - return "utf-8" - - @property - def language(self): - return "" - - def feed(self, byte_str): - for c in byte_str: - coding_state = self.coding_sm.next_state(c) - if coding_state == MachineState.ERROR: - self._state = ProbingState.NOT_ME - break - elif coding_state == MachineState.ITS_ME: - self._state = ProbingState.FOUND_IT - break - elif coding_state == MachineState.START: - if self.coding_sm.get_current_charlen() >= 2: - self._num_mb_chars += 1 - - if self.state == ProbingState.DETECTING: - if self.get_confidence() > self.SHORTCUT_THRESHOLD: - self._state = ProbingState.FOUND_IT - - return self.state - - def get_confidence(self): - unlike = 0.99 - if self._num_mb_chars < 6: - unlike *= self.ONE_CHAR_PROB ** self._num_mb_chars - return 1.0 - unlike - else: - return unlike diff --git a/env/lib/python3.6/site-packages/chardet/version.py b/env/lib/python3.6/site-packages/chardet/version.py deleted file mode 100644 index bb2a34a..0000000 --- a/env/lib/python3.6/site-packages/chardet/version.py +++ /dev/null @@ -1,9 +0,0 @@ -""" -This module exists only to simplify retrieving the version number of chardet -from within setup.py and from chardet subpackages. - -:author: Dan Blanchard (dan.blanchard@gmail.com) -""" - -__version__ = "3.0.4" -VERSION = __version__.split('.') diff --git a/env/lib/python3.6/site-packages/easy_install.py b/env/lib/python3.6/site-packages/easy_install.py deleted file mode 100644 index d87e984..0000000 --- a/env/lib/python3.6/site-packages/easy_install.py +++ /dev/null @@ -1,5 +0,0 @@ -"""Run the EasyInstall command""" - -if __name__ == '__main__': - from setuptools.command.easy_install import main - main() diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/DESCRIPTION.rst b/env/lib/python3.6/site-packages/idna-2.6.dist-info/DESCRIPTION.rst deleted file mode 100644 index 878ecd2..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,213 +0,0 @@ -Internationalized Domain Names in Applications (IDNA) -===================================================== - -Support for the Internationalised Domain Names in Applications -(IDNA) protocol as specified in `RFC 5891 `_. -This is the latest version of the protocol and is sometimes referred to as -“IDNA 2008”. - -This library also provides support for Unicode Technical Standard 46, -`Unicode IDNA Compatibility Processing `_. - -This acts as a suitable replacement for the “encodings.idna” module that -comes with the Python standard library, but only supports the -old, deprecated IDNA specification (`RFC 3490 `_). - -Basic functions are simply executed: - -.. code-block:: pycon - - # Python 3 - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - - # Python 2 - >>> import idna - >>> idna.encode(u'ドメイン.テスト') - 'xn--eckwd4c7c.xn--zckzah' - >>> print idna.decode('xn--eckwd4c7c.xn--zckzah') - ドメイン.テスト - -Packages --------- - -The latest tagged release version is published in the PyPI repository: - -.. image:: https://badge.fury.io/py/idna.svg - :target: http://badge.fury.io/py/idna - - -Installation ------------- - -To install this library, you can use pip: - -.. code-block:: bash - - $ pip install idna - -Alternatively, you can install the package using the bundled setup script: - -.. code-block:: bash - - $ python setup.py install - -This library works with Python 2.6 or later, and Python 3.3 or later. - - -Usage ------ - -For typical usage, the ``encode`` and ``decode`` functions will take a domain -name argument and perform a conversion to A-labels or U-labels respectively. - -.. code-block:: pycon - - # Python 3 - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - -You may use the codec encoding and decoding methods using the -``idna.codec`` module: - -.. code-block:: pycon - - # Python 2 - >>> import idna.codec - >>> print u'домена.испытание'.encode('idna') - xn--80ahd1agd.xn--80akhbyknj4f - >>> print 'xn--80ahd1agd.xn--80akhbyknj4f'.decode('idna') - домена.испытание - -Conversions can be applied at a per-label basis using the ``ulabel`` or ``alabel`` -functions if necessary: - -.. code-block:: pycon - - # Python 2 - >>> idna.alabel(u'测试') - 'xn--0zwm56d' - -Compatibility Mapping (UTS #46) -+++++++++++++++++++++++++++++++ - -As described in `RFC 5895 `_, the IDNA -specification no longer normalizes input from different potential ways a user -may input a domain name. This functionality, known as a “mapping”, is now -considered by the specification to be a local user-interface issue distinct -from IDNA conversion functionality. - -This library provides one such mapping, that was developed by the Unicode -Consortium. Known as `Unicode IDNA Compatibility Processing `_, -it provides for both a regular mapping for typical applications, as well as -a transitional mapping to help migrate from older IDNA 2003 applications. - -For example, “Königsgäßchen” is not a permissible label as *LATIN CAPITAL -LETTER K* is not allowed (nor are capital letters in general). UTS 46 will -convert this into lower case prior to applying the IDNA conversion. - -.. code-block:: pycon - - # Python 3 - >>> import idna - >>> idna.encode(u'Königsgäßchen') - ... - idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed - >>> idna.encode('Königsgäßchen', uts46=True) - b'xn--knigsgchen-b4a3dun' - >>> print(idna.decode('xn--knigsgchen-b4a3dun')) - königsgäßchen - -Transitional processing provides conversions to help transition from the older -2003 standard to the current standard. For example, in the original IDNA -specification, the *LATIN SMALL LETTER SHARP S* (ß) was converted into two -*LATIN SMALL LETTER S* (ss), whereas in the current IDNA specification this -conversion is not performed. - -.. code-block:: pycon - - # Python 2 - >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True) - 'xn--knigsgsschen-lcb0w' - -Implementors should use transitional processing with caution, only in rare -cases where conversion from legacy labels to current labels must be performed -(i.e. IDNA implementations that pre-date 2008). For typical applications -that just need to convert labels, transitional processing is unlikely to be -beneficial and could produce unexpected incompatible results. - -``encodings.idna`` Compatibility -++++++++++++++++++++++++++++++++ - -Function calls from the Python built-in ``encodings.idna`` module are -mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. -Simply substitute the ``import`` clause in your code to refer to the -new module name. - -Exceptions ----------- - -All errors raised during the conversion following the specification should -raise an exception derived from the ``idna.IDNAError`` base class. - -More specific exceptions that may be generated as ``idna.IDNABidiError`` -when the error reflects an illegal combination of left-to-right and right-to-left -characters in a label; ``idna.InvalidCodepoint`` when a specific codepoint is -an illegal character in an IDN label (i.e. INVALID); and ``idna.InvalidCodepointContext`` -when the codepoint is illegal based on its positional context (i.e. it is CONTEXTO -or CONTEXTJ but the contextual requirements are not satisfied.) - -Building and Diagnostics ------------------------- - -The IDNA and UTS 46 functionality relies upon pre-calculated lookup tables for -performance. These tables are derived from computing against eligibility criteria -in the respective standards. These tables are computed using the command-line -script ``tools/idna-data``. - -This tool will fetch relevant tables from the Unicode Consortium and perform the -required calculations to identify eligibility. It has three main modes: - -* ``idna-data make-libdata``. Generates ``idnadata.py`` and ``uts46data.py``, - the pre-calculated lookup tables using for IDNA and UTS 46 conversions. Implementors - who wish to track this library against a different Unicode version may use this tool - to manually generate a different version of the ``idnadata.py`` and ``uts46data.py`` - files. - -* ``idna-data make-table``. Generate a table of the IDNA disposition - (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix B.1 of RFC - 5892 and the pre-computed tables published by `IANA `_. - -* ``idna-data U+0061``. Prints debugging output on the various properties - associated with an individual Unicode codepoint (in this case, U+0061), that are - used to assess the IDNA and UTS 46 status of a codepoint. This is helpful in debugging - or analysis. - -The tool accepts a number of arguments, described using ``idna-data -h``. Most notably, -the ``--version`` argument allows the specification of the version of Unicode to use -in computing the table data. For example, ``idna-data --version 9.0.0 make-libdata`` -will generate library data against Unicode 9.0.0. - -Note that this script requires Python 3, but all generated library data will work -in Python 2.6+. - - -Testing -------- - -The library has a test suite based on each rule of the IDNA specification, as -well as tests that are provided as part of the Unicode Technical Standard 46, -`Unicode IDNA Compatibility Processing `_. - -The tests are run automatically on each commit at Travis CI: - -.. image:: https://travis-ci.org/kjd/idna.svg?branch=master - :target: https://travis-ci.org/kjd/idna - - diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/INSTALLER b/env/lib/python3.6/site-packages/idna-2.6.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/METADATA b/env/lib/python3.6/site-packages/idna-2.6.dist-info/METADATA deleted file mode 100644 index 2ccb268..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/METADATA +++ /dev/null @@ -1,239 +0,0 @@ -Metadata-Version: 2.0 -Name: idna -Version: 2.6 -Summary: Internationalized Domain Names in Applications (IDNA) -Home-page: https://github.com/kjd/idna -Author: Kim Davies -Author-email: kim@cynosure.com.au -License: BSD-like -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Intended Audience :: System Administrators -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Topic :: Internet :: Name Service (DNS) -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Utilities - -Internationalized Domain Names in Applications (IDNA) -===================================================== - -Support for the Internationalised Domain Names in Applications -(IDNA) protocol as specified in `RFC 5891 `_. -This is the latest version of the protocol and is sometimes referred to as -“IDNA 2008”. - -This library also provides support for Unicode Technical Standard 46, -`Unicode IDNA Compatibility Processing `_. - -This acts as a suitable replacement for the “encodings.idna” module that -comes with the Python standard library, but only supports the -old, deprecated IDNA specification (`RFC 3490 `_). - -Basic functions are simply executed: - -.. code-block:: pycon - - # Python 3 - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - - # Python 2 - >>> import idna - >>> idna.encode(u'ドメイン.テスト') - 'xn--eckwd4c7c.xn--zckzah' - >>> print idna.decode('xn--eckwd4c7c.xn--zckzah') - ドメイン.テスト - -Packages --------- - -The latest tagged release version is published in the PyPI repository: - -.. image:: https://badge.fury.io/py/idna.svg - :target: http://badge.fury.io/py/idna - - -Installation ------------- - -To install this library, you can use pip: - -.. code-block:: bash - - $ pip install idna - -Alternatively, you can install the package using the bundled setup script: - -.. code-block:: bash - - $ python setup.py install - -This library works with Python 2.6 or later, and Python 3.3 or later. - - -Usage ------ - -For typical usage, the ``encode`` and ``decode`` functions will take a domain -name argument and perform a conversion to A-labels or U-labels respectively. - -.. code-block:: pycon - - # Python 3 - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - -You may use the codec encoding and decoding methods using the -``idna.codec`` module: - -.. code-block:: pycon - - # Python 2 - >>> import idna.codec - >>> print u'домена.испытание'.encode('idna') - xn--80ahd1agd.xn--80akhbyknj4f - >>> print 'xn--80ahd1agd.xn--80akhbyknj4f'.decode('idna') - домена.испытание - -Conversions can be applied at a per-label basis using the ``ulabel`` or ``alabel`` -functions if necessary: - -.. code-block:: pycon - - # Python 2 - >>> idna.alabel(u'测试') - 'xn--0zwm56d' - -Compatibility Mapping (UTS #46) -+++++++++++++++++++++++++++++++ - -As described in `RFC 5895 `_, the IDNA -specification no longer normalizes input from different potential ways a user -may input a domain name. This functionality, known as a “mapping”, is now -considered by the specification to be a local user-interface issue distinct -from IDNA conversion functionality. - -This library provides one such mapping, that was developed by the Unicode -Consortium. Known as `Unicode IDNA Compatibility Processing `_, -it provides for both a regular mapping for typical applications, as well as -a transitional mapping to help migrate from older IDNA 2003 applications. - -For example, “Königsgäßchen” is not a permissible label as *LATIN CAPITAL -LETTER K* is not allowed (nor are capital letters in general). UTS 46 will -convert this into lower case prior to applying the IDNA conversion. - -.. code-block:: pycon - - # Python 3 - >>> import idna - >>> idna.encode(u'Königsgäßchen') - ... - idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed - >>> idna.encode('Königsgäßchen', uts46=True) - b'xn--knigsgchen-b4a3dun' - >>> print(idna.decode('xn--knigsgchen-b4a3dun')) - königsgäßchen - -Transitional processing provides conversions to help transition from the older -2003 standard to the current standard. For example, in the original IDNA -specification, the *LATIN SMALL LETTER SHARP S* (ß) was converted into two -*LATIN SMALL LETTER S* (ss), whereas in the current IDNA specification this -conversion is not performed. - -.. code-block:: pycon - - # Python 2 - >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True) - 'xn--knigsgsschen-lcb0w' - -Implementors should use transitional processing with caution, only in rare -cases where conversion from legacy labels to current labels must be performed -(i.e. IDNA implementations that pre-date 2008). For typical applications -that just need to convert labels, transitional processing is unlikely to be -beneficial and could produce unexpected incompatible results. - -``encodings.idna`` Compatibility -++++++++++++++++++++++++++++++++ - -Function calls from the Python built-in ``encodings.idna`` module are -mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. -Simply substitute the ``import`` clause in your code to refer to the -new module name. - -Exceptions ----------- - -All errors raised during the conversion following the specification should -raise an exception derived from the ``idna.IDNAError`` base class. - -More specific exceptions that may be generated as ``idna.IDNABidiError`` -when the error reflects an illegal combination of left-to-right and right-to-left -characters in a label; ``idna.InvalidCodepoint`` when a specific codepoint is -an illegal character in an IDN label (i.e. INVALID); and ``idna.InvalidCodepointContext`` -when the codepoint is illegal based on its positional context (i.e. it is CONTEXTO -or CONTEXTJ but the contextual requirements are not satisfied.) - -Building and Diagnostics ------------------------- - -The IDNA and UTS 46 functionality relies upon pre-calculated lookup tables for -performance. These tables are derived from computing against eligibility criteria -in the respective standards. These tables are computed using the command-line -script ``tools/idna-data``. - -This tool will fetch relevant tables from the Unicode Consortium and perform the -required calculations to identify eligibility. It has three main modes: - -* ``idna-data make-libdata``. Generates ``idnadata.py`` and ``uts46data.py``, - the pre-calculated lookup tables using for IDNA and UTS 46 conversions. Implementors - who wish to track this library against a different Unicode version may use this tool - to manually generate a different version of the ``idnadata.py`` and ``uts46data.py`` - files. - -* ``idna-data make-table``. Generate a table of the IDNA disposition - (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix B.1 of RFC - 5892 and the pre-computed tables published by `IANA `_. - -* ``idna-data U+0061``. Prints debugging output on the various properties - associated with an individual Unicode codepoint (in this case, U+0061), that are - used to assess the IDNA and UTS 46 status of a codepoint. This is helpful in debugging - or analysis. - -The tool accepts a number of arguments, described using ``idna-data -h``. Most notably, -the ``--version`` argument allows the specification of the version of Unicode to use -in computing the table data. For example, ``idna-data --version 9.0.0 make-libdata`` -will generate library data against Unicode 9.0.0. - -Note that this script requires Python 3, but all generated library data will work -in Python 2.6+. - - -Testing -------- - -The library has a test suite based on each rule of the IDNA specification, as -well as tests that are provided as part of the Unicode Technical Standard 46, -`Unicode IDNA Compatibility Processing `_. - -The tests are run automatically on each commit at Travis CI: - -.. image:: https://travis-ci.org/kjd/idna.svg?branch=master - :target: https://travis-ci.org/kjd/idna - - diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/RECORD b/env/lib/python3.6/site-packages/idna-2.6.dist-info/RECORD deleted file mode 100644 index 37fc37c..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/RECORD +++ /dev/null @@ -1,23 +0,0 @@ -idna/__init__.py,sha256=9Nt7xpyet3DmOrPUGooDdAwmHZZu1qUAy2EaJ93kGiQ,58 -idna/codec.py,sha256=lvYb7yu7PhAqFaAIAdWcwgaWI2UmgseUua-1c0AsG0A,3299 -idna/compat.py,sha256=R-h29D-6mrnJzbXxymrWUW7iZUvy-26TQwZ0ij57i4U,232 -idna/core.py,sha256=GafiWdYQIK5TSjWdRzCYCho704ALtMCrV_dnXXn57U0,11390 -idna/idnadata.py,sha256=-Cg83lurKoA9p7lb0lMAsos0rFz1dnKrGeBE3o8UuCA,32999 -idna/intranges.py,sha256=TY1lpxZIQWEP6tNqjZkFA5hgoMWOj1OBmnUG8ihT87E,1749 -idna/package_data.py,sha256=KMSUTS_M7ZZ7Ugl_V_EOxV-D3o7v7yVkt45JK_bpW24,21 -idna/uts46data.py,sha256=YylQYBfljAx_WVqR2D7HgcGGyVCWwPm6uF38aERuhyw,184944 -idna-2.6.dist-info/DESCRIPTION.rst,sha256=XE7tSurJDfSB3AsHWf990INfSzTE5ysMEuqivWZobW8,7828 -idna-2.6.dist-info/METADATA,sha256=k-onXnwR756XWu_ISqwb-_NRl4Khz_Es9AmYkV0TM-o,8866 -idna-2.6.dist-info/RECORD,, -idna-2.6.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -idna-2.6.dist-info/metadata.json,sha256=f73f8l4pL23NliZdfccMvmdsd9l39J4YBcEDuTvZJY4,1097 -idna-2.6.dist-info/top_level.txt,sha256=jSag9sEDqvSPftxOQy-ABfGV_RSy7oFh4zZJpODV8k0,5 -idna-2.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -idna/__pycache__/__init__.cpython-36.pyc,, -idna/__pycache__/codec.cpython-36.pyc,, -idna/__pycache__/compat.cpython-36.pyc,, -idna/__pycache__/core.cpython-36.pyc,, -idna/__pycache__/idnadata.cpython-36.pyc,, -idna/__pycache__/intranges.cpython-36.pyc,, -idna/__pycache__/package_data.cpython-36.pyc,, -idna/__pycache__/uts46data.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/WHEEL b/env/lib/python3.6/site-packages/idna-2.6.dist-info/WHEEL deleted file mode 100644 index 8b6dd1b..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/metadata.json b/env/lib/python3.6/site-packages/idna-2.6.dist-info/metadata.json deleted file mode 100644 index 0e74f27..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: Name Service (DNS)", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities"], "extensions": {"python.details": {"contacts": [{"email": "kim@cynosure.com.au", "name": "Kim Davies", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://github.com/kjd/idna"}}}, "generator": "bdist_wheel (0.29.0)", "license": "BSD-like", "metadata_version": "2.0", "name": "idna", "summary": "Internationalized Domain Names in Applications (IDNA)", "version": "2.6"} \ No newline at end of file diff --git a/env/lib/python3.6/site-packages/idna-2.6.dist-info/top_level.txt b/env/lib/python3.6/site-packages/idna-2.6.dist-info/top_level.txt deleted file mode 100644 index c40472e..0000000 --- a/env/lib/python3.6/site-packages/idna-2.6.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -idna diff --git a/env/lib/python3.6/site-packages/idna/__init__.py b/env/lib/python3.6/site-packages/idna/__init__.py deleted file mode 100644 index 847bf93..0000000 --- a/env/lib/python3.6/site-packages/idna/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from .package_data import __version__ -from .core import * diff --git a/env/lib/python3.6/site-packages/idna/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/idna/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 433aa6fd4a266ad80bc5de84ad478b508ada4481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmX|5!A`wYvNx6{xt`Q~jppV;A6yrrFP_35 zNNWiDCSNQ+`S#JX-+y@a$IrLhsNPOG6xJbU4G^68lo4NpEx?u^Q(tGWQD#EPU=}Q* zBF$?scUxLnE~0kc#=m32FXn5Ivt5C-Hg@zS9=BcMkBja&L8Z691FdUAT{X)bd^!WSB=0HUE!kjnng`(N%$Bc`t8LTzC zo2!@3$D5beF0#w37lU&_r@fY+PgYkTb<^f2%|SFcyE%+vb~fP`!uu<0cbXAP!&2ax zw3i1D)G}~S87`D)4y|bhHMFg&vfy%givPa>XY97$hGGtuD)1l$Qse1j9?LZp3nh4aW@`p7H{@mXOo=NQR0n1yv#xkA!GCHwy<{hLXY-j|!Wam&nL2?A$^;u-%vp{fZW`j7&r4_lk@5ljWJOjdIdM(FZ5ptJatwsj;r*&}Hv}*x^`rX;pWCT36Bg z0-m*fJWt@+;dwhc@8kI$m~dug)2MqI8m>a#<{9g|c*e-Fjves!n8sYV;5AvjnF}5! zw?ve4(SoaGj~7i%F`dwZVY)cp#DTE>suO<9L%7*ra>6q(L2qV4tnZo-Z-r~vp#dT% zJ<4dVjY&^e65@7lPPA)>)v7gu>LO_xQ_V% diff --git a/env/lib/python3.6/site-packages/idna/__pycache__/compat.cpython-36.pyc b/env/lib/python3.6/site-packages/idna/__pycache__/compat.cpython-36.pyc deleted file mode 100644 index f13a4f59e90d2966d7ba02f677279c89526da5d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 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 AcmMzZ diff --git a/env/lib/python3.6/site-packages/idna/__pycache__/idnadata.cpython-36.pyc b/env/lib/python3.6/site-packages/idna/__pycache__/idnadata.cpython-36.pyc deleted file mode 100644 index bc715301feb3cccb207998e45e6dd69705b1be77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24498 zcmeI)e|**R|Nrq8*_j#_3lN{pzV-$Lm*o za9r6znQemO|I0sVS`)(mr0IA2m8ReM=l4_Gk$?VuV)&fyIG14m*vGm{cSrx-@9vuZ zyWjua$Nrxjx6kumukDYw!5_Z@cOCBQ`~4&T`4qSL-QAwQU)vu~{k`qde&7GQ;ymuS zU9Q`IJjI>kKl^>+AFj*&iE!7(CI8-({fYY5YqYOwyv{LE=lR#u|KC3H&wo$;CqCQp z{w?wEZm<7|Yxu91F-f<3`r0;S`!n0>9^eH1>ZM=3_3PNOcA4$;`*CM@2?@H>xagpv z{Rj6S*rYoWFJIJj@^huK-g32apXC+GE}i`|T&0Y$yiOTsdA)L= zbEtm_Cm!Q@rTKo&QRXl6^L&n4)+k$-`$xMUr%$iI&tsL@mgAI#mXnontNb&}PzEeB zl|joaWv=B+WxnNVWr5}6N^iA)3EP#sEbEmqm-t5;lrt=wmHC!GDtB1^rrdQ&lfFW) zcMp9P5p6twT-Ta39Tq-Yi$<;+?+wr?DdAJv5A?j~KzKxI z#JbT}qsWaEjlFI>ahfh*YWQPbKdz1bWwf;`U3`&7u!D`=8Z|lL@qVv^^g&(hlp!Z; z#2#+r*kp}!-MC02`v}j!Rd%RTyZiaIGH`^SKPqdE@W1+#FK*-I=Z3FggvMSsPSx1& z#%K+1QTS|QHKN>@suAPHt@;`xMuoqu4I25Q!=vrMc3woFlYPEzLfp!S+W3VV$(_wR z$@5yqgg?d`q)&5vc>Jajm=qo}2J4nc50AV{+IXd_!k^oEjaoO_=t@0ZX`h2K4;mku zJNNv|c4@O0XSPq9J0~=EMP_7LPH6W0*^6gqMoyZYKl^;umuKpNzf6T`Fb2{^!hYQV zIbM6w2HHY9h=52q1md6v^n~Lf9!`K>&>Iq<5A=l-ArbmPe;5D*;UpLYgCPlqz)(0D zlHn8>2E!o*M!-lo6#_5{M#C6Lg|RRW#zPuRfQhgemcRuNf~AlT%V0UIfR%6|Tm%!aBGKO5kR=1#X2>xD9TH zJD?2ig!OP2Y=FCABisY!a4&3v`=A2uht2Q+RKkPs5IhW9;1PHf9)l`)9G-wDVJkcZ z+u&)ahG*becn)gdd3XU{gj(1RFTu;O173kw;Wem(*WnF#6L!K|@HV^y@4`p$Eqn(D z;1_6x-=Iqe(G3oRXgD0Y!x0bzN5WBXG{nL&a4Z}LanJ*L!toFfCqOUg4GGW(`of8j z2>qZx41m*MGE9M~a5_wbGav)bgz0b=%z(2Y6V8DwI2UHZEXao0FbB>9-GO^Kb73CL zhXtTJb1!EhoDaHx^>TFYslQ;b1oGel2*Fawhh?xFR=`TQ5H5m?p#XIEr@v)z3A_rg zK^?pfZ@`wjwNHGdV!x%_~u`mwCLmEtgi7*M$;WU^GQ(!8b4%6Ta$bd6pI-CVFU;}J~d!QWd zg-viDRKWeP86JR2XdfdwKu72danJ*L!toFfCqOUg4GGW(`of8j2>qZx41j@f5)6XD zkOV_uD4Yz*a0(2A;gA9&U?iLh0T>0NVGN|gSQrQ6Aq^(LM3@BWa2ia8DKHgIhiPyI zWWbp)9nOLoa5iMZIgkbC!c3S2*)SXCzXLP!Xj7!aBGKO5kR=1#X2>xD9TH zJD?2ig!OP2Y=FCABisY!a4&3v`=A0gLsXpT1oL1%EPxycRESY98pc2>jD>M99@1a} zOoU004yVCnm;zJbbeINbKn9!%)8Qpe(cOt1P!nR90H{S5{dLR90IKQr21yRn}XcqHM4n zuH0uiLfLG2s&c=j9`<{Y2l=<;SY;PWJ^uG%EGH=AEcMvmOSGJ3$}-D^%5uwGWu@g} zWtC-~vf47FthLNn)>$rB)?2PrHdyk#*gnfu%4SP_;e%6Q8tWuj$gWs+qVWr}4tWvXSgGTpMfGQ%=P znPqvDGH4mA%(XmLnQs}VEU@gUEV7JO7F+gGmRKez%PjjU%PkX?m6rXLRh9#l)s};l zwU)z_b(SNP&6cB-t(Ieykq7&?S(-A|a-uTcGF_QyIa!%xxkZ^``GT^sqkjo+D`O7v z^Bd(B%kPw1EdzR*!He?GFh&_^PsdGB##rVl1C~7XQESN)dUcjOq1Rx^6M9XSH!1`6 z%-oyGEtb2KS@tB|Ze`H2L78j0N11QAS6N`m(|kpijml!n&y^*X`;=vtUn$Ei`Kl@{ zzg1RQHY=+wTaWBH0Q&hj;7g5~SVftEX!$(C;`Q!VS2>6Y&)Gc0#0vn+Qj zgO&}-T+2Pme9OJc0?SX7MV5`qV$08!C6@b?WtLwl%Po2Kw9@ihWtC;KvfA={Wvyk4 zvd;1+WxeHoWrO7bWus-QvdQvSWs9Y!XKY(7+bScX{Tnqx8D-gC8EqMc zGgN^XKLg4_%WP%Dk^WJhz}#wCuWYpBX|If<{WE;2EU;`=R#LFLt!zbV%q?;o9Uu+AIrXHZ#qf}eTHQp=Uf zTFXLZqh*mYqL+W(>y^=#H!4#s?^mWu2ZI1-mgrzd_-AcS*6@z zxlLJb`I55P@>ON*iT>rjp-i-VOBt|iR2Et`D@!dS4$-HR=zmxzWwd2iWr}4VWxC}_ z$_mRQnIZ~XDDY_29*VtdCF4Dkh0dYNEzARzl7_Q(UvzV zlPzyirdi&h3|ii)%(L8}Txof)ve@zggq zWl&jYnWrqZEK)`e@-N|fWwhmu%4Ey?m1&k$$_mSE%6iM~%4W+~lre+tCQ&9>zOT%% z{8+itvQb%R*{m$J{6Sf38PQ3fS(1NYos`j*U6sj}!vRYYZ`K+?V@@1uWvj1VPDHAN;Ri;?J zubg4ISD9_uqTFFQxU>FfB>R^zT)ES7iqbp9KbolwSYFO~hxtdZPQ&w4SQ|`2UR@r2^UFi+?KeLyWF_v#A z<1BY81D1Q0D=pg`st-%?KP*a_XnB+}+p@2+&~m7<-ZEL)U^z_LXgNl?-%>x?^}3Ak zFZVQMyyY}yvgKLIbjvJdwq=eo-*S<%!g8sy)^eG0r{$%}eU?`!BS-qzc9Sy3vQ#%iGDI+c4SH@X(JxteT*= zmW!1!bNw?c2Mm6et)oMEwlG&xq8=jTN70zX$PlPup+2A29qe^ySlOw@~c zynO%YKxMUMin7UaiZXebe}wRNDQhkBm35ZOmGzb@l?|2`DH|;dlueeal`WQq%2vzElo1#Cw{MX$%JNEOwB^;x zSj%gb@s`EPM9VeGB+IqR6w7tWRLc@&y5;T449oS(Jj)Hr0?UocBFl1RvE?RZiDiYd z%yP4`+_F+xY59<{%5sac+VW9lt!0(6&hiOmz2#PAgXK15qh+p z#Kr#2SF4P&d`TH?xkDLi`KmJBvQC+3`Gzvda;GxI@@-|RWxX=p@;zmS^wgYxWu#un*lNiOF9QYs?VF$szuGccSz||e4W_rsKf?mf zV0i&&uw1I#VYy7X({hD!m*s`Zy_Od%_gSt|Hd{WbtXb_}#goeLD>GkKhF_WajxunG ze}-Mk@QXA*RTkROeaf|#KP$s8(wx#m|HU~d{2IS2G`h48k6DSjM*ZlKr{KIf8bv3C z$9#b6sxLPCD zjcYaH-6+;bbYqQ1k{fF^QruXlk?KZ?M!FlfXk@ris*&Z!?HWNh$~1D_Sg(=q#s-Z7 zH#TY%xlyiB?8YXI5;rO|%G}tjQSL^iMx`4MX;itfMWfn{M>T5QsM4r&;|Yy=H@0dt zxUo&6(T!@2CO4kdXmO)Pqt%TUG$ICv|NYczM7i;jMzk9{G-BO&RU_VwI*mj(-q1*L zW2Z)n8*gi*x>2u@?#6o>8E)*-$Z})1M$nB0ja)bOXym)GSEImfGqnPk%d-!Z%2QMwuJ^HLBcLpi$$-ts1RE!XI;=M&Z!#cvxeD8&C2v zZak;4*NvAoypzKp^QK0e8}Dlb-1t}{+YPV3uE&jm8r8|+3*g1n|9E9}e~pSj_>>VE z&2HSG5gZ*pER9?@W@_ZSk*!hS#vF|zH-Z|)Zp_mtabtl-nHvi= z%H7D-sB|Mwqsood8av%6)M$0%GK~oRFv0FrHKN?OQX|@pt2JWXxK<NH`Zt* zxv^Fw#f^0uscw{Lq`Ps8Mur=u8d+|9u2JB|_Zl@vhdw%8fx9)ovtd)VVQKquz~VjRrS{X*9Z#qS55WNR1XZ0vfGu zjMj)a#{KElh;n0`MzkAg8nJFn)QEQ@T_e$r$r?#+Ow~wnW12>)8yOnuZcNw6aASr> zmK&KGK{v8Aa^0Azk?%&fMu8i1G>Y5^Y81OMPou<*1sY{;EYv7>BUhu+jl~*OZsciH zyK$jLts56>>~mw4Mzb4*8m(?zrV*i^joBY^jVL#+)QEQD8jV;tuGbjo#tjKxbZxv=m&syX&NcL!{cOLai*UK`ln20^a+nl zjer{~Gz#4)(Aek3i+oJq@W<@Y$UQMUn)w(ve%9FGMu!vi?DSc*x<(38s32L1$?Wq#f<|RHExujrLzqTpRJ4D*^{hSg!^A_%UWGB=LX>%&&MH}3RatF2C}tJg7w$DO=>sbhG&rBUd{aqV;>l_}n8ij7`)QCIOoh?G2b(iqitWnr4JlgXDskrbsSR>Ajp&AKp zoTAa-#t4mOH>PW}y3ze$U0Qtj(uQdiy0Mj0dWBD^(b(@s1h30V2%pkHBifB<^Ng9FhIAx(m+#z<#*d-b%;c9=z?0cYyhS;ycIb ztM+sk#Y+OV>Q_TsKbLEV-%ZIohZCR|^o9iJ1AXB{&^H-g zNDtt>kRGdhp#h*<#p`o$NDr#L&>$ELNiYP4!pV>fr-(igp<(oJNP!U?jSP*XPlW)C zg3&MrQemt};NA71Nz8OO4JN}Bm*d{_WEun^9NTv!B)VF~2H1rUOzkPpjXIjn${a3Nd-7efK8g4J*d6vCx& z8C(uUa0OfmSHabA4O|P?K`~qpYv2Z03pc_#xCu(&X1E1zg;KZ;ZihRd4DN*Wa2ITV zyI~{T1LbfpY=Zls0`7;+@Bmc8gYXbM3|rt4coZIkDtH{8fG1%qJO$g}X{d&0;8}PM zYT$Wz0bYb!*bXnj%di7pfmh)*sDszx4R{lF!dvh*yaV;{F1!ct!!Gy$cEg9z03X2~ z_!#!WU*Hq?6dK_(_#D1~eeflG1z$rGd;{OYchC%fh40}9Xn`N$C-@om!{6Wl`~t1; zclZ^41KqEBp*GMK+Cc>9DLmchK?jJ0gP|iF0#VQjI>VvR1-e2vI1HlUaOe(40B?f` z9SKLl(GUyAz_D-~#6b_}3C9E9_J>XYeS4>SJkUc}-Q$5CBkCRx5}_aThXJ7HAH9&C z9Mt_C=vf!t-+`V!(fu9hISt+40dIo{4TIs30=x+#G!l3ZL?{5GU^M7IF}kk<-U|^L z2jd|PCcs3P1nF=ZOok~i6;6j~a0X<+nJ^uAJQ|t-XG12O16gn`4B}tyOllTn!)%xX z=RpwW!aSG{3m^v;!ugO3i(oM5O~W*r~~Nx3Ec^T9=+>M5O_=;>IA%9 zBXlV606fHl=n!w#2ptBzS0i*d@US^_1n^Fc(2>9!H9|)N@6!k!1H4TmbR5J%59kRz z)DH0;jnE0eTQowwAp!b8UpNtXe@3Vu@b-+*02l}-0dLL-4F(>vhlapVI2rVRZlOCt z;GG+x;gABndm}UwPK5xBg3&MrQeiBNgYl3C6JR1t0^ZRPIt_S3M`#L6h0|dgoBVsE3LJw2$#ZTa5)sg6>ue71y{p0a4lR1#c(~Wfg4~g z+z9L7CMbcM;TE_RO5rxR9qxcKxD(dHU9bV}hK+C!l*7HS3GRamxF0sd15gPM!b9*d zY=KAMQFsih;Bj~Yo`kLN6l{a1p&FinXW==hf#=}`coAx0JG=xh!wz@_UWM174qk^h z;7!;GZ^7H}4%EZD@E*JmyWj)Z4Ie@Sd<1*oW7rFSfluI5XoSz;bNB-G!I$tA9L9ge zzowet8~7H!gJ$?Ed=EcB3;YN_!OyTC{ssr&7ifjQ!>{lgckKooR>&TuGnfv(UE4ufbo9J<315CccTQE)WG!ZC0x90zgG1A4;o5DzCnFX#;k z&jQmZ8pqCn3^)^}!&xu`&W21l2eRN? zm7z#fV*KM+ymusFKmMQpaSlP&F}zJ!h`S-JPcdl5qK0HgDQ9&o`5G|D?A0; z;AyCaXW&_Q4r<_ecmZC7TG$RR!OO4%UV&HPHK>Ev;SG2bcEVfmHoOD%@GiUu@53(m z0CvNN&;TF79{3pc!e8JM_!Ju9Gx!|7fPL^Kd<9=a6MO^T!gtUNe}(Vi2WWvG;V1YR z_QT)c0Q>^2@OStXegiK;w1KwJ4kF+nXb&AA5)Oura0o;}C+G}^LKo-?-QX~YhJO5= z?hgY*pEjYxb+k|WP{&0U(=^}Hp)xp_L2KkK~Q*-MwsU3$OnUAYuEFnd5=C};WX{J8^` z&khZkwTp#>5Zl~IsTETy}-HK-`P2qJi?g49MrtU!*}GrQ}?J9ft7 zTq>{nu<*uT;0N$`ka+PcPx%YHgmcE5q*RPG_jAr1f9E@AYjM&4eeTa6|7sEPH+icu zSU-bativEkj|eJQN_$i|!u^HxnD9gkW=G74Hq5TLC487Y!CsPJKDtE-@xMz>q~Z}z zlfv+9z!PQUQ0iihk0T*@nd9N=D9h!bOw;oKM2m5hrd*ZdzSMY|W@^ZFsR|!9ai$6x zmj=wfWh>6cd1)jlYnf|VNM$0EWD3>INb*6Z$NuVSVIpld*0@w+BUt0je$(zZ1K#O$ zf(}0zp}(p)g~w6#xRix8wQ?F2{EW}c`-!sGnNEg@ic;_GaP@QR zcMx>^3&4=<#{h|KfHlGX4fNtS7!0Y%luqc7Oqg&c&Y3pUu!>IM+ao{sCvN2m`Uz>y zj);C<(aK#WIO6#-L}!T{G5!4bKAbst*4+HcmdV7c*el1l6~qQ~JOP?0F=bOqL2lw4 z-~WLakeX76ofq8$M_*h)`9I;~fCWTK0y-*|2(ymVP!?bL9NG-&aNR;1u3uvvHsFVd zKEl1mi!vSokdgThn%2q{Rd}Q&muFFI(sPi?3JGDj(X&Af6TbTxj(0J(uz`T{B7-<2 z9p4&zVcly?sW=l-;4c)38m2cynlXa!?((foUZE{;QDp{YO_`^%=vZqP7)Oo6#U(WD zz$$3fts>J#irTYa)J`f@-HP%Y?9_`PAO-J+&7Eh>1+AWknGyEp8`ThZb*llh=cf_e zo$AEMnkK!)xYQb`-I(};=mmK8pME#j$w_2n_axHYL6!09rm}s+)VqAb{>jH z+YiHya1ig9&GGg+w4v%Abn_&C&@YozJQ&NZ=yZK&)J=qnW`i<~7oGgPz5}sncHuy0 zW9y|4j~5@qK-z8U!uKJ)O_wO6cj>3J&GdV46Jrg*hBJ1{cXYb~{yhQqeocUHZ2yA8 znf;%D)t(J$?Eq}{s2LVfq7B1m&VLV*u_L1ALz(=0q=sqI@EK1(Kejm;? zYNr@9Y;Lo>d~^B6nfX9#s^57U0x0B709Qcq%85I$zW&oWYjNhpYuI3B3p!;JX6P%( zXvi@(aWF%VT)l4`o2_gKGI&aVViOl~)vdrOhaAytukwzFav7mS?+fQ8sW6M7CO`!^ zX>_mkTBrvV-~{D_i@*E&@t!nNj}rwXAMis6V|d61P+tqIo*B>JVpb!Y_+kM&Y?g-| z%Ww^;{T=EDl3`7xtEQ*3rf% ilzHnVWS&MM)$QGJCdyPkL9Yw+)@5zh{;2J=-G2dbug{18 diff --git a/env/lib/python3.6/site-packages/idna/__pycache__/package_data.cpython-36.pyc b/env/lib/python3.6/site-packages/idna/__pycache__/package_data.cpython-36.pyc deleted file mode 100644 index d7920b765f77f354628de81a178049c7f2e5ca96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 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 bc#`^a_uHDOhW-Kl`whDBzuA8){m=Y2{&bJ> diff --git a/env/lib/python3.6/site-packages/idna/codec.py b/env/lib/python3.6/site-packages/idna/codec.py deleted file mode 100644 index 98c65ea..0000000 --- a/env/lib/python3.6/site-packages/idna/codec.py +++ /dev/null @@ -1,118 +0,0 @@ -from .core import encode, decode, alabel, ulabel, IDNAError -import codecs -import re - -_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]') - -class Codec(codecs.Codec): - - def encode(self, data, errors='strict'): - - if errors != 'strict': - raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) - - if not data: - return "", 0 - - return encode(data), len(data) - - def decode(self, data, errors='strict'): - - if errors != 'strict': - raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) - - if not data: - return u"", 0 - - return decode(data), len(data) - -class IncrementalEncoder(codecs.BufferedIncrementalEncoder): - def _buffer_encode(self, data, errors, final): - if errors != 'strict': - raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) - - if not data: - return ("", 0) - - labels = _unicode_dots_re.split(data) - trailing_dot = u'' - if labels: - if not labels[-1]: - trailing_dot = '.' - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = '.' - - result = [] - size = 0 - for label in labels: - result.append(alabel(label)) - if size: - size += 1 - size += len(label) - - # Join with U+002E - result = ".".join(result) + trailing_dot - size += len(trailing_dot) - return (result, size) - -class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - def _buffer_decode(self, data, errors, final): - if errors != 'strict': - raise IDNAError("Unsupported error handling \"{0}\"".format(errors)) - - if not data: - return (u"", 0) - - # IDNA allows decoding to operate on Unicode strings, too. - if isinstance(data, unicode): - labels = _unicode_dots_re.split(data) - else: - # Must be ASCII string - data = str(data) - unicode(data, "ascii") - labels = data.split(".") - - trailing_dot = u'' - if labels: - if not labels[-1]: - trailing_dot = u'.' - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = u'.' - - result = [] - size = 0 - for label in labels: - result.append(ulabel(label)) - if size: - size += 1 - size += len(label) - - result = u".".join(result) + trailing_dot - size += len(trailing_dot) - return (result, size) - - -class StreamWriter(Codec, codecs.StreamWriter): - pass - -class StreamReader(Codec, codecs.StreamReader): - pass - -def getregentry(): - return codecs.CodecInfo( - name='idna', - encode=Codec().encode, - decode=Codec().decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamwriter=StreamWriter, - streamreader=StreamReader, - ) diff --git a/env/lib/python3.6/site-packages/idna/compat.py b/env/lib/python3.6/site-packages/idna/compat.py deleted file mode 100644 index 4d47f33..0000000 --- a/env/lib/python3.6/site-packages/idna/compat.py +++ /dev/null @@ -1,12 +0,0 @@ -from .core import * -from .codec import * - -def ToASCII(label): - return encode(label) - -def ToUnicode(label): - return decode(label) - -def nameprep(s): - raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") - diff --git a/env/lib/python3.6/site-packages/idna/core.py b/env/lib/python3.6/site-packages/idna/core.py deleted file mode 100644 index b55b664..0000000 --- a/env/lib/python3.6/site-packages/idna/core.py +++ /dev/null @@ -1,387 +0,0 @@ -from . import idnadata -import bisect -import unicodedata -import re -import sys -from .intranges import intranges_contain - -_virama_combining_class = 9 -_alabel_prefix = b'xn--' -_unicode_dots_re = re.compile(u'[\u002e\u3002\uff0e\uff61]') - -if sys.version_info[0] == 3: - unicode = str - unichr = chr - -class IDNAError(UnicodeError): - """ Base exception for all IDNA-encoding related problems """ - pass - - -class IDNABidiError(IDNAError): - """ Exception when bidirectional requirements are not satisfied """ - pass - - -class InvalidCodepoint(IDNAError): - """ Exception when a disallowed or unallocated codepoint is used """ - pass - - -class InvalidCodepointContext(IDNAError): - """ Exception when the codepoint is not valid in the context it is used """ - pass - - -def _combining_class(cp): - return unicodedata.combining(unichr(cp)) - -def _is_script(cp, script): - return intranges_contain(ord(cp), idnadata.scripts[script]) - -def _punycode(s): - return s.encode('punycode') - -def _unot(s): - return 'U+{0:04X}'.format(s) - - -def valid_label_length(label): - - if len(label) > 63: - return False - return True - - -def valid_string_length(label, trailing_dot): - - if len(label) > (254 if trailing_dot else 253): - return False - return True - - -def check_bidi(label, check_ltr=False): - - # Bidi rules should only be applied if string contains RTL characters - bidi_label = False - for (idx, cp) in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - if direction == '': - # String likely comes from a newer version of Unicode - raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx)) - if direction in ['R', 'AL', 'AN']: - bidi_label = True - break - if not bidi_label and not check_ltr: - return True - - # Bidi rule 1 - direction = unicodedata.bidirectional(label[0]) - if direction in ['R', 'AL']: - rtl = True - elif direction == 'L': - rtl = False - else: - raise IDNABidiError('First codepoint in label {0} must be directionality L, R or AL'.format(repr(label))) - - valid_ending = False - number_type = False - for (idx, cp) in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - - if rtl: - # Bidi rule 2 - if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {0} in a right-to-left label'.format(idx)) - # Bidi rule 3 - if direction in ['R', 'AL', 'EN', 'AN']: - valid_ending = True - elif direction != 'NSM': - valid_ending = False - # Bidi rule 4 - if direction in ['AN', 'EN']: - if not number_type: - number_type = direction - else: - if number_type != direction: - raise IDNABidiError('Can not mix numeral types in a right-to-left label') - else: - # Bidi rule 5 - if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: - raise IDNABidiError('Invalid direction for codepoint at position {0} in a left-to-right label'.format(idx)) - # Bidi rule 6 - if direction in ['L', 'EN']: - valid_ending = True - elif direction != 'NSM': - valid_ending = False - - if not valid_ending: - raise IDNABidiError('Label ends with illegal codepoint directionality') - - return True - - -def check_initial_combiner(label): - - if unicodedata.category(label[0])[0] == 'M': - raise IDNAError('Label begins with an illegal combining character') - return True - - -def check_hyphen_ok(label): - - if label[2:4] == '--': - raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') - if label[0] == '-' or label[-1] == '-': - raise IDNAError('Label must not start or end with a hyphen') - return True - - -def check_nfc(label): - - if unicodedata.normalize('NFC', label) != label: - raise IDNAError('Label must be in Normalization Form C') - - -def valid_contextj(label, pos): - - cp_value = ord(label[pos]) - - if cp_value == 0x200c: - - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - - ok = False - for i in range(pos-1, -1, -1): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): - continue - if joining_type in [ord('L'), ord('D')]: - ok = True - break - - if not ok: - return False - - ok = False - for i in range(pos+1, len(label)): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord('T'): - continue - if joining_type in [ord('R'), ord('D')]: - ok = True - break - return ok - - if cp_value == 0x200d: - - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - return False - - else: - - return False - - -def valid_contexto(label, pos, exception=False): - - cp_value = ord(label[pos]) - - if cp_value == 0x00b7: - if 0 < pos < len(label)-1: - if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: - return True - return False - - elif cp_value == 0x0375: - if pos < len(label)-1 and len(label) > 1: - return _is_script(label[pos + 1], 'Greek') - return False - - elif cp_value == 0x05f3 or cp_value == 0x05f4: - if pos > 0: - return _is_script(label[pos - 1], 'Hebrew') - return False - - elif cp_value == 0x30fb: - for cp in label: - if cp == u'\u30fb': - continue - if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): - return True - return False - - elif 0x660 <= cp_value <= 0x669: - for cp in label: - if 0x6f0 <= ord(cp) <= 0x06f9: - return False - return True - - elif 0x6f0 <= cp_value <= 0x6f9: - for cp in label: - if 0x660 <= ord(cp) <= 0x0669: - return False - return True - - -def check_label(label): - - if isinstance(label, (bytes, bytearray)): - label = label.decode('utf-8') - if len(label) == 0: - raise IDNAError('Empty Label') - - check_nfc(label) - check_hyphen_ok(label) - check_initial_combiner(label) - - for (pos, cp) in enumerate(label): - cp_value = ord(cp) - if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): - continue - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): - if not valid_contextj(label, pos): - raise InvalidCodepointContext('Joiner {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label))) - elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): - if not valid_contexto(label, pos): - raise InvalidCodepointContext('Codepoint {0} not allowed at position {1} in {2}'.format(_unot(cp_value), pos+1, repr(label))) - else: - raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label))) - - check_bidi(label) - - -def alabel(label): - - try: - label = label.encode('ascii') - try: - ulabel(label) - except IDNAError: - raise IDNAError('The label {0} is not a valid A-label'.format(label)) - if not valid_label_length(label): - raise IDNAError('Label too long') - return label - except UnicodeEncodeError: - pass - - if not label: - raise IDNAError('No Input') - - label = unicode(label) - check_label(label) - label = _punycode(label) - label = _alabel_prefix + label - - if not valid_label_length(label): - raise IDNAError('Label too long') - - return label - - -def ulabel(label): - - if not isinstance(label, (bytes, bytearray)): - try: - label = label.encode('ascii') - except UnicodeEncodeError: - check_label(label) - return label - - label = label.lower() - if label.startswith(_alabel_prefix): - label = label[len(_alabel_prefix):] - else: - check_label(label) - return label.decode('ascii') - - label = label.decode('punycode') - check_label(label) - return label - - -def uts46_remap(domain, std3_rules=True, transitional=False): - """Re-map the characters in the string according to UTS46 processing.""" - from .uts46data import uts46data - output = u"" - try: - for pos, char in enumerate(domain): - code_point = ord(char) - uts46row = uts46data[code_point if code_point < 256 else - bisect.bisect_left(uts46data, (code_point, "Z")) - 1] - status = uts46row[1] - replacement = uts46row[2] if len(uts46row) == 3 else None - if (status == "V" or - (status == "D" and not transitional) or - (status == "3" and std3_rules and replacement is None)): - output += char - elif replacement is not None and (status == "M" or - (status == "3" and std3_rules) or - (status == "D" and transitional)): - output += replacement - elif status != "I": - raise IndexError() - return unicodedata.normalize("NFC", output) - except IndexError: - raise InvalidCodepoint( - "Codepoint {0} not allowed at position {1} in {2}".format( - _unot(code_point), pos + 1, repr(domain))) - - -def encode(s, strict=False, uts46=False, std3_rules=False, transitional=False): - - if isinstance(s, (bytes, bytearray)): - s = s.decode("ascii") - if uts46: - s = uts46_remap(s, std3_rules, transitional) - trailing_dot = False - result = [] - if strict: - labels = s.split('.') - else: - labels = _unicode_dots_re.split(s) - while labels and not labels[0]: - del labels[0] - if not labels: - raise IDNAError('Empty domain') - if labels[-1] == '': - del labels[-1] - trailing_dot = True - for label in labels: - result.append(alabel(label)) - if trailing_dot: - result.append(b'') - s = b'.'.join(result) - if not valid_string_length(s, trailing_dot): - raise IDNAError('Domain too long') - return s - - -def decode(s, strict=False, uts46=False, std3_rules=False): - - if isinstance(s, (bytes, bytearray)): - s = s.decode("ascii") - if uts46: - s = uts46_remap(s, std3_rules, False) - trailing_dot = False - result = [] - if not strict: - labels = _unicode_dots_re.split(s) - else: - labels = s.split(u'.') - while labels and not labels[0]: - del labels[0] - if not labels: - raise IDNAError('Empty domain') - if not labels[-1]: - del labels[-1] - trailing_dot = True - for label in labels: - result.append(ulabel(label)) - if trailing_dot: - result.append(u'') - return u'.'.join(result) diff --git a/env/lib/python3.6/site-packages/idna/idnadata.py b/env/lib/python3.6/site-packages/idna/idnadata.py deleted file mode 100644 index c48f1b5..0000000 --- a/env/lib/python3.6/site-packages/idna/idnadata.py +++ /dev/null @@ -1,1585 +0,0 @@ -# This file is automatically generated by tools/idna-data - -__version__ = "6.3.0" -scripts = { - 'Greek': ( - 0x37000000374, - 0x37500000378, - 0x37a0000037e, - 0x38400000385, - 0x38600000387, - 0x3880000038b, - 0x38c0000038d, - 0x38e000003a2, - 0x3a3000003e2, - 0x3f000000400, - 0x1d2600001d2b, - 0x1d5d00001d62, - 0x1d6600001d6b, - 0x1dbf00001dc0, - 0x1f0000001f16, - 0x1f1800001f1e, - 0x1f2000001f46, - 0x1f4800001f4e, - 0x1f5000001f58, - 0x1f5900001f5a, - 0x1f5b00001f5c, - 0x1f5d00001f5e, - 0x1f5f00001f7e, - 0x1f8000001fb5, - 0x1fb600001fc5, - 0x1fc600001fd4, - 0x1fd600001fdc, - 0x1fdd00001ff0, - 0x1ff200001ff5, - 0x1ff600001fff, - 0x212600002127, - 0x101400001018b, - 0x1d2000001d246, - ), - 'Han': ( - 0x2e8000002e9a, - 0x2e9b00002ef4, - 0x2f0000002fd6, - 0x300500003006, - 0x300700003008, - 0x30210000302a, - 0x30380000303c, - 0x340000004db6, - 0x4e0000009fcd, - 0xf9000000fa6e, - 0xfa700000fada, - 0x200000002a6d7, - 0x2a7000002b735, - 0x2b7400002b81e, - 0x2f8000002fa1e, - ), - 'Hebrew': ( - 0x591000005c8, - 0x5d0000005eb, - 0x5f0000005f5, - 0xfb1d0000fb37, - 0xfb380000fb3d, - 0xfb3e0000fb3f, - 0xfb400000fb42, - 0xfb430000fb45, - 0xfb460000fb50, - ), - 'Hiragana': ( - 0x304100003097, - 0x309d000030a0, - 0x1b0010001b002, - 0x1f2000001f201, - ), - 'Katakana': ( - 0x30a1000030fb, - 0x30fd00003100, - 0x31f000003200, - 0x32d0000032ff, - 0x330000003358, - 0xff660000ff70, - 0xff710000ff9e, - 0x1b0000001b001, - ), -} -joining_types = { - 0x600: 85, - 0x601: 85, - 0x602: 85, - 0x603: 85, - 0x604: 85, - 0x608: 85, - 0x60b: 85, - 0x620: 68, - 0x621: 85, - 0x622: 82, - 0x623: 82, - 0x624: 82, - 0x625: 82, - 0x626: 68, - 0x627: 82, - 0x628: 68, - 0x629: 82, - 0x62a: 68, - 0x62b: 68, - 0x62c: 68, - 0x62d: 68, - 0x62e: 68, - 0x62f: 82, - 0x630: 82, - 0x631: 82, - 0x632: 82, - 0x633: 68, - 0x634: 68, - 0x635: 68, - 0x636: 68, - 0x637: 68, - 0x638: 68, - 0x639: 68, - 0x63a: 68, - 0x63b: 68, - 0x63c: 68, - 0x63d: 68, - 0x63e: 68, - 0x63f: 68, - 0x640: 67, - 0x641: 68, - 0x642: 68, - 0x643: 68, - 0x644: 68, - 0x645: 68, - 0x646: 68, - 0x647: 68, - 0x648: 82, - 0x649: 68, - 0x64a: 68, - 0x66e: 68, - 0x66f: 68, - 0x671: 82, - 0x672: 82, - 0x673: 82, - 0x674: 85, - 0x675: 82, - 0x676: 82, - 0x677: 82, - 0x678: 68, - 0x679: 68, - 0x67a: 68, - 0x67b: 68, - 0x67c: 68, - 0x67d: 68, - 0x67e: 68, - 0x67f: 68, - 0x680: 68, - 0x681: 68, - 0x682: 68, - 0x683: 68, - 0x684: 68, - 0x685: 68, - 0x686: 68, - 0x687: 68, - 0x688: 82, - 0x689: 82, - 0x68a: 82, - 0x68b: 82, - 0x68c: 82, - 0x68d: 82, - 0x68e: 82, - 0x68f: 82, - 0x690: 82, - 0x691: 82, - 0x692: 82, - 0x693: 82, - 0x694: 82, - 0x695: 82, - 0x696: 82, - 0x697: 82, - 0x698: 82, - 0x699: 82, - 0x69a: 68, - 0x69b: 68, - 0x69c: 68, - 0x69d: 68, - 0x69e: 68, - 0x69f: 68, - 0x6a0: 68, - 0x6a1: 68, - 0x6a2: 68, - 0x6a3: 68, - 0x6a4: 68, - 0x6a5: 68, - 0x6a6: 68, - 0x6a7: 68, - 0x6a8: 68, - 0x6a9: 68, - 0x6aa: 68, - 0x6ab: 68, - 0x6ac: 68, - 0x6ad: 68, - 0x6ae: 68, - 0x6af: 68, - 0x6b0: 68, - 0x6b1: 68, - 0x6b2: 68, - 0x6b3: 68, - 0x6b4: 68, - 0x6b5: 68, - 0x6b6: 68, - 0x6b7: 68, - 0x6b8: 68, - 0x6b9: 68, - 0x6ba: 68, - 0x6bb: 68, - 0x6bc: 68, - 0x6bd: 68, - 0x6be: 68, - 0x6bf: 68, - 0x6c0: 82, - 0x6c1: 68, - 0x6c2: 68, - 0x6c3: 82, - 0x6c4: 82, - 0x6c5: 82, - 0x6c6: 82, - 0x6c7: 82, - 0x6c8: 82, - 0x6c9: 82, - 0x6ca: 82, - 0x6cb: 82, - 0x6cc: 68, - 0x6cd: 82, - 0x6ce: 68, - 0x6cf: 82, - 0x6d0: 68, - 0x6d1: 68, - 0x6d2: 82, - 0x6d3: 82, - 0x6d5: 82, - 0x6dd: 85, - 0x6ee: 82, - 0x6ef: 82, - 0x6fa: 68, - 0x6fb: 68, - 0x6fc: 68, - 0x6ff: 68, - 0x710: 82, - 0x712: 68, - 0x713: 68, - 0x714: 68, - 0x715: 82, - 0x716: 82, - 0x717: 82, - 0x718: 82, - 0x719: 82, - 0x71a: 68, - 0x71b: 68, - 0x71c: 68, - 0x71d: 68, - 0x71e: 82, - 0x71f: 68, - 0x720: 68, - 0x721: 68, - 0x722: 68, - 0x723: 68, - 0x724: 68, - 0x725: 68, - 0x726: 68, - 0x727: 68, - 0x728: 82, - 0x729: 68, - 0x72a: 82, - 0x72b: 68, - 0x72c: 82, - 0x72d: 68, - 0x72e: 68, - 0x72f: 82, - 0x74d: 82, - 0x74e: 68, - 0x74f: 68, - 0x750: 68, - 0x751: 68, - 0x752: 68, - 0x753: 68, - 0x754: 68, - 0x755: 68, - 0x756: 68, - 0x757: 68, - 0x758: 68, - 0x759: 82, - 0x75a: 82, - 0x75b: 82, - 0x75c: 68, - 0x75d: 68, - 0x75e: 68, - 0x75f: 68, - 0x760: 68, - 0x761: 68, - 0x762: 68, - 0x763: 68, - 0x764: 68, - 0x765: 68, - 0x766: 68, - 0x767: 68, - 0x768: 68, - 0x769: 68, - 0x76a: 68, - 0x76b: 82, - 0x76c: 82, - 0x76d: 68, - 0x76e: 68, - 0x76f: 68, - 0x770: 68, - 0x771: 82, - 0x772: 68, - 0x773: 82, - 0x774: 82, - 0x775: 68, - 0x776: 68, - 0x777: 68, - 0x778: 82, - 0x779: 82, - 0x77a: 68, - 0x77b: 68, - 0x77c: 68, - 0x77d: 68, - 0x77e: 68, - 0x77f: 68, - 0x7ca: 68, - 0x7cb: 68, - 0x7cc: 68, - 0x7cd: 68, - 0x7ce: 68, - 0x7cf: 68, - 0x7d0: 68, - 0x7d1: 68, - 0x7d2: 68, - 0x7d3: 68, - 0x7d4: 68, - 0x7d5: 68, - 0x7d6: 68, - 0x7d7: 68, - 0x7d8: 68, - 0x7d9: 68, - 0x7da: 68, - 0x7db: 68, - 0x7dc: 68, - 0x7dd: 68, - 0x7de: 68, - 0x7df: 68, - 0x7e0: 68, - 0x7e1: 68, - 0x7e2: 68, - 0x7e3: 68, - 0x7e4: 68, - 0x7e5: 68, - 0x7e6: 68, - 0x7e7: 68, - 0x7e8: 68, - 0x7e9: 68, - 0x7ea: 68, - 0x7fa: 67, - 0x840: 82, - 0x841: 68, - 0x842: 68, - 0x843: 68, - 0x844: 68, - 0x845: 68, - 0x846: 82, - 0x847: 68, - 0x848: 68, - 0x849: 82, - 0x84a: 68, - 0x84b: 68, - 0x84c: 68, - 0x84d: 68, - 0x84e: 68, - 0x84f: 82, - 0x850: 68, - 0x851: 68, - 0x852: 68, - 0x853: 68, - 0x854: 82, - 0x855: 68, - 0x856: 85, - 0x857: 85, - 0x858: 85, - 0x8a0: 68, - 0x8a2: 68, - 0x8a3: 68, - 0x8a4: 68, - 0x8a5: 68, - 0x8a6: 68, - 0x8a7: 68, - 0x8a8: 68, - 0x8a9: 68, - 0x8aa: 82, - 0x8ab: 82, - 0x8ac: 82, - 0x1806: 85, - 0x1807: 68, - 0x180a: 67, - 0x180e: 85, - 0x1820: 68, - 0x1821: 68, - 0x1822: 68, - 0x1823: 68, - 0x1824: 68, - 0x1825: 68, - 0x1826: 68, - 0x1827: 68, - 0x1828: 68, - 0x1829: 68, - 0x182a: 68, - 0x182b: 68, - 0x182c: 68, - 0x182d: 68, - 0x182e: 68, - 0x182f: 68, - 0x1830: 68, - 0x1831: 68, - 0x1832: 68, - 0x1833: 68, - 0x1834: 68, - 0x1835: 68, - 0x1836: 68, - 0x1837: 68, - 0x1838: 68, - 0x1839: 68, - 0x183a: 68, - 0x183b: 68, - 0x183c: 68, - 0x183d: 68, - 0x183e: 68, - 0x183f: 68, - 0x1840: 68, - 0x1841: 68, - 0x1842: 68, - 0x1843: 68, - 0x1844: 68, - 0x1845: 68, - 0x1846: 68, - 0x1847: 68, - 0x1848: 68, - 0x1849: 68, - 0x184a: 68, - 0x184b: 68, - 0x184c: 68, - 0x184d: 68, - 0x184e: 68, - 0x184f: 68, - 0x1850: 68, - 0x1851: 68, - 0x1852: 68, - 0x1853: 68, - 0x1854: 68, - 0x1855: 68, - 0x1856: 68, - 0x1857: 68, - 0x1858: 68, - 0x1859: 68, - 0x185a: 68, - 0x185b: 68, - 0x185c: 68, - 0x185d: 68, - 0x185e: 68, - 0x185f: 68, - 0x1860: 68, - 0x1861: 68, - 0x1862: 68, - 0x1863: 68, - 0x1864: 68, - 0x1865: 68, - 0x1866: 68, - 0x1867: 68, - 0x1868: 68, - 0x1869: 68, - 0x186a: 68, - 0x186b: 68, - 0x186c: 68, - 0x186d: 68, - 0x186e: 68, - 0x186f: 68, - 0x1870: 68, - 0x1871: 68, - 0x1872: 68, - 0x1873: 68, - 0x1874: 68, - 0x1875: 68, - 0x1876: 68, - 0x1877: 68, - 0x1880: 85, - 0x1881: 85, - 0x1882: 85, - 0x1883: 85, - 0x1884: 85, - 0x1885: 85, - 0x1886: 85, - 0x1887: 68, - 0x1888: 68, - 0x1889: 68, - 0x188a: 68, - 0x188b: 68, - 0x188c: 68, - 0x188d: 68, - 0x188e: 68, - 0x188f: 68, - 0x1890: 68, - 0x1891: 68, - 0x1892: 68, - 0x1893: 68, - 0x1894: 68, - 0x1895: 68, - 0x1896: 68, - 0x1897: 68, - 0x1898: 68, - 0x1899: 68, - 0x189a: 68, - 0x189b: 68, - 0x189c: 68, - 0x189d: 68, - 0x189e: 68, - 0x189f: 68, - 0x18a0: 68, - 0x18a1: 68, - 0x18a2: 68, - 0x18a3: 68, - 0x18a4: 68, - 0x18a5: 68, - 0x18a6: 68, - 0x18a7: 68, - 0x18a8: 68, - 0x18aa: 68, - 0x200c: 85, - 0x200d: 67, - 0x2066: 85, - 0x2067: 85, - 0x2068: 85, - 0x2069: 85, - 0xa840: 68, - 0xa841: 68, - 0xa842: 68, - 0xa843: 68, - 0xa844: 68, - 0xa845: 68, - 0xa846: 68, - 0xa847: 68, - 0xa848: 68, - 0xa849: 68, - 0xa84a: 68, - 0xa84b: 68, - 0xa84c: 68, - 0xa84d: 68, - 0xa84e: 68, - 0xa84f: 68, - 0xa850: 68, - 0xa851: 68, - 0xa852: 68, - 0xa853: 68, - 0xa854: 68, - 0xa855: 68, - 0xa856: 68, - 0xa857: 68, - 0xa858: 68, - 0xa859: 68, - 0xa85a: 68, - 0xa85b: 68, - 0xa85c: 68, - 0xa85d: 68, - 0xa85e: 68, - 0xa85f: 68, - 0xa860: 68, - 0xa861: 68, - 0xa862: 68, - 0xa863: 68, - 0xa864: 68, - 0xa865: 68, - 0xa866: 68, - 0xa867: 68, - 0xa868: 68, - 0xa869: 68, - 0xa86a: 68, - 0xa86b: 68, - 0xa86c: 68, - 0xa86d: 68, - 0xa86e: 68, - 0xa86f: 68, - 0xa870: 68, - 0xa871: 68, - 0xa872: 76, - 0xa873: 85, -} -codepoint_classes = { - 'PVALID': ( - 0x2d0000002e, - 0x300000003a, - 0x610000007b, - 0xdf000000f7, - 0xf800000100, - 0x10100000102, - 0x10300000104, - 0x10500000106, - 0x10700000108, - 0x1090000010a, - 0x10b0000010c, - 0x10d0000010e, - 0x10f00000110, - 0x11100000112, - 0x11300000114, - 0x11500000116, - 0x11700000118, - 0x1190000011a, - 0x11b0000011c, - 0x11d0000011e, - 0x11f00000120, - 0x12100000122, - 0x12300000124, - 0x12500000126, - 0x12700000128, - 0x1290000012a, - 0x12b0000012c, - 0x12d0000012e, - 0x12f00000130, - 0x13100000132, - 0x13500000136, - 0x13700000139, - 0x13a0000013b, - 0x13c0000013d, - 0x13e0000013f, - 0x14200000143, - 0x14400000145, - 0x14600000147, - 0x14800000149, - 0x14b0000014c, - 0x14d0000014e, - 0x14f00000150, - 0x15100000152, - 0x15300000154, - 0x15500000156, - 0x15700000158, - 0x1590000015a, - 0x15b0000015c, - 0x15d0000015e, - 0x15f00000160, - 0x16100000162, - 0x16300000164, - 0x16500000166, - 0x16700000168, - 0x1690000016a, - 0x16b0000016c, - 0x16d0000016e, - 0x16f00000170, - 0x17100000172, - 0x17300000174, - 0x17500000176, - 0x17700000178, - 0x17a0000017b, - 0x17c0000017d, - 0x17e0000017f, - 0x18000000181, - 0x18300000184, - 0x18500000186, - 0x18800000189, - 0x18c0000018e, - 0x19200000193, - 0x19500000196, - 0x1990000019c, - 0x19e0000019f, - 0x1a1000001a2, - 0x1a3000001a4, - 0x1a5000001a6, - 0x1a8000001a9, - 0x1aa000001ac, - 0x1ad000001ae, - 0x1b0000001b1, - 0x1b4000001b5, - 0x1b6000001b7, - 0x1b9000001bc, - 0x1bd000001c4, - 0x1ce000001cf, - 0x1d0000001d1, - 0x1d2000001d3, - 0x1d4000001d5, - 0x1d6000001d7, - 0x1d8000001d9, - 0x1da000001db, - 0x1dc000001de, - 0x1df000001e0, - 0x1e1000001e2, - 0x1e3000001e4, - 0x1e5000001e6, - 0x1e7000001e8, - 0x1e9000001ea, - 0x1eb000001ec, - 0x1ed000001ee, - 0x1ef000001f1, - 0x1f5000001f6, - 0x1f9000001fa, - 0x1fb000001fc, - 0x1fd000001fe, - 0x1ff00000200, - 0x20100000202, - 0x20300000204, - 0x20500000206, - 0x20700000208, - 0x2090000020a, - 0x20b0000020c, - 0x20d0000020e, - 0x20f00000210, - 0x21100000212, - 0x21300000214, - 0x21500000216, - 0x21700000218, - 0x2190000021a, - 0x21b0000021c, - 0x21d0000021e, - 0x21f00000220, - 0x22100000222, - 0x22300000224, - 0x22500000226, - 0x22700000228, - 0x2290000022a, - 0x22b0000022c, - 0x22d0000022e, - 0x22f00000230, - 0x23100000232, - 0x2330000023a, - 0x23c0000023d, - 0x23f00000241, - 0x24200000243, - 0x24700000248, - 0x2490000024a, - 0x24b0000024c, - 0x24d0000024e, - 0x24f000002b0, - 0x2b9000002c2, - 0x2c6000002d2, - 0x2ec000002ed, - 0x2ee000002ef, - 0x30000000340, - 0x34200000343, - 0x3460000034f, - 0x35000000370, - 0x37100000372, - 0x37300000374, - 0x37700000378, - 0x37b0000037e, - 0x39000000391, - 0x3ac000003cf, - 0x3d7000003d8, - 0x3d9000003da, - 0x3db000003dc, - 0x3dd000003de, - 0x3df000003e0, - 0x3e1000003e2, - 0x3e3000003e4, - 0x3e5000003e6, - 0x3e7000003e8, - 0x3e9000003ea, - 0x3eb000003ec, - 0x3ed000003ee, - 0x3ef000003f0, - 0x3f3000003f4, - 0x3f8000003f9, - 0x3fb000003fd, - 0x43000000460, - 0x46100000462, - 0x46300000464, - 0x46500000466, - 0x46700000468, - 0x4690000046a, - 0x46b0000046c, - 0x46d0000046e, - 0x46f00000470, - 0x47100000472, - 0x47300000474, - 0x47500000476, - 0x47700000478, - 0x4790000047a, - 0x47b0000047c, - 0x47d0000047e, - 0x47f00000480, - 0x48100000482, - 0x48300000488, - 0x48b0000048c, - 0x48d0000048e, - 0x48f00000490, - 0x49100000492, - 0x49300000494, - 0x49500000496, - 0x49700000498, - 0x4990000049a, - 0x49b0000049c, - 0x49d0000049e, - 0x49f000004a0, - 0x4a1000004a2, - 0x4a3000004a4, - 0x4a5000004a6, - 0x4a7000004a8, - 0x4a9000004aa, - 0x4ab000004ac, - 0x4ad000004ae, - 0x4af000004b0, - 0x4b1000004b2, - 0x4b3000004b4, - 0x4b5000004b6, - 0x4b7000004b8, - 0x4b9000004ba, - 0x4bb000004bc, - 0x4bd000004be, - 0x4bf000004c0, - 0x4c2000004c3, - 0x4c4000004c5, - 0x4c6000004c7, - 0x4c8000004c9, - 0x4ca000004cb, - 0x4cc000004cd, - 0x4ce000004d0, - 0x4d1000004d2, - 0x4d3000004d4, - 0x4d5000004d6, - 0x4d7000004d8, - 0x4d9000004da, - 0x4db000004dc, - 0x4dd000004de, - 0x4df000004e0, - 0x4e1000004e2, - 0x4e3000004e4, - 0x4e5000004e6, - 0x4e7000004e8, - 0x4e9000004ea, - 0x4eb000004ec, - 0x4ed000004ee, - 0x4ef000004f0, - 0x4f1000004f2, - 0x4f3000004f4, - 0x4f5000004f6, - 0x4f7000004f8, - 0x4f9000004fa, - 0x4fb000004fc, - 0x4fd000004fe, - 0x4ff00000500, - 0x50100000502, - 0x50300000504, - 0x50500000506, - 0x50700000508, - 0x5090000050a, - 0x50b0000050c, - 0x50d0000050e, - 0x50f00000510, - 0x51100000512, - 0x51300000514, - 0x51500000516, - 0x51700000518, - 0x5190000051a, - 0x51b0000051c, - 0x51d0000051e, - 0x51f00000520, - 0x52100000522, - 0x52300000524, - 0x52500000526, - 0x52700000528, - 0x5590000055a, - 0x56100000587, - 0x591000005be, - 0x5bf000005c0, - 0x5c1000005c3, - 0x5c4000005c6, - 0x5c7000005c8, - 0x5d0000005eb, - 0x5f0000005f3, - 0x6100000061b, - 0x62000000640, - 0x64100000660, - 0x66e00000675, - 0x679000006d4, - 0x6d5000006dd, - 0x6df000006e9, - 0x6ea000006f0, - 0x6fa00000700, - 0x7100000074b, - 0x74d000007b2, - 0x7c0000007f6, - 0x8000000082e, - 0x8400000085c, - 0x8a0000008a1, - 0x8a2000008ad, - 0x8e4000008ff, - 0x90000000958, - 0x96000000964, - 0x96600000970, - 0x97100000978, - 0x97900000980, - 0x98100000984, - 0x9850000098d, - 0x98f00000991, - 0x993000009a9, - 0x9aa000009b1, - 0x9b2000009b3, - 0x9b6000009ba, - 0x9bc000009c5, - 0x9c7000009c9, - 0x9cb000009cf, - 0x9d7000009d8, - 0x9e0000009e4, - 0x9e6000009f2, - 0xa0100000a04, - 0xa0500000a0b, - 0xa0f00000a11, - 0xa1300000a29, - 0xa2a00000a31, - 0xa3200000a33, - 0xa3500000a36, - 0xa3800000a3a, - 0xa3c00000a3d, - 0xa3e00000a43, - 0xa4700000a49, - 0xa4b00000a4e, - 0xa5100000a52, - 0xa5c00000a5d, - 0xa6600000a76, - 0xa8100000a84, - 0xa8500000a8e, - 0xa8f00000a92, - 0xa9300000aa9, - 0xaaa00000ab1, - 0xab200000ab4, - 0xab500000aba, - 0xabc00000ac6, - 0xac700000aca, - 0xacb00000ace, - 0xad000000ad1, - 0xae000000ae4, - 0xae600000af0, - 0xb0100000b04, - 0xb0500000b0d, - 0xb0f00000b11, - 0xb1300000b29, - 0xb2a00000b31, - 0xb3200000b34, - 0xb3500000b3a, - 0xb3c00000b45, - 0xb4700000b49, - 0xb4b00000b4e, - 0xb5600000b58, - 0xb5f00000b64, - 0xb6600000b70, - 0xb7100000b72, - 0xb8200000b84, - 0xb8500000b8b, - 0xb8e00000b91, - 0xb9200000b96, - 0xb9900000b9b, - 0xb9c00000b9d, - 0xb9e00000ba0, - 0xba300000ba5, - 0xba800000bab, - 0xbae00000bba, - 0xbbe00000bc3, - 0xbc600000bc9, - 0xbca00000bce, - 0xbd000000bd1, - 0xbd700000bd8, - 0xbe600000bf0, - 0xc0100000c04, - 0xc0500000c0d, - 0xc0e00000c11, - 0xc1200000c29, - 0xc2a00000c34, - 0xc3500000c3a, - 0xc3d00000c45, - 0xc4600000c49, - 0xc4a00000c4e, - 0xc5500000c57, - 0xc5800000c5a, - 0xc6000000c64, - 0xc6600000c70, - 0xc8200000c84, - 0xc8500000c8d, - 0xc8e00000c91, - 0xc9200000ca9, - 0xcaa00000cb4, - 0xcb500000cba, - 0xcbc00000cc5, - 0xcc600000cc9, - 0xcca00000cce, - 0xcd500000cd7, - 0xcde00000cdf, - 0xce000000ce4, - 0xce600000cf0, - 0xcf100000cf3, - 0xd0200000d04, - 0xd0500000d0d, - 0xd0e00000d11, - 0xd1200000d3b, - 0xd3d00000d45, - 0xd4600000d49, - 0xd4a00000d4f, - 0xd5700000d58, - 0xd6000000d64, - 0xd6600000d70, - 0xd7a00000d80, - 0xd8200000d84, - 0xd8500000d97, - 0xd9a00000db2, - 0xdb300000dbc, - 0xdbd00000dbe, - 0xdc000000dc7, - 0xdca00000dcb, - 0xdcf00000dd5, - 0xdd600000dd7, - 0xdd800000de0, - 0xdf200000df4, - 0xe0100000e33, - 0xe3400000e3b, - 0xe4000000e4f, - 0xe5000000e5a, - 0xe8100000e83, - 0xe8400000e85, - 0xe8700000e89, - 0xe8a00000e8b, - 0xe8d00000e8e, - 0xe9400000e98, - 0xe9900000ea0, - 0xea100000ea4, - 0xea500000ea6, - 0xea700000ea8, - 0xeaa00000eac, - 0xead00000eb3, - 0xeb400000eba, - 0xebb00000ebe, - 0xec000000ec5, - 0xec600000ec7, - 0xec800000ece, - 0xed000000eda, - 0xede00000ee0, - 0xf0000000f01, - 0xf0b00000f0c, - 0xf1800000f1a, - 0xf2000000f2a, - 0xf3500000f36, - 0xf3700000f38, - 0xf3900000f3a, - 0xf3e00000f43, - 0xf4400000f48, - 0xf4900000f4d, - 0xf4e00000f52, - 0xf5300000f57, - 0xf5800000f5c, - 0xf5d00000f69, - 0xf6a00000f6d, - 0xf7100000f73, - 0xf7400000f75, - 0xf7a00000f81, - 0xf8200000f85, - 0xf8600000f93, - 0xf9400000f98, - 0xf9900000f9d, - 0xf9e00000fa2, - 0xfa300000fa7, - 0xfa800000fac, - 0xfad00000fb9, - 0xfba00000fbd, - 0xfc600000fc7, - 0x10000000104a, - 0x10500000109e, - 0x10d0000010fb, - 0x10fd00001100, - 0x120000001249, - 0x124a0000124e, - 0x125000001257, - 0x125800001259, - 0x125a0000125e, - 0x126000001289, - 0x128a0000128e, - 0x1290000012b1, - 0x12b2000012b6, - 0x12b8000012bf, - 0x12c0000012c1, - 0x12c2000012c6, - 0x12c8000012d7, - 0x12d800001311, - 0x131200001316, - 0x13180000135b, - 0x135d00001360, - 0x138000001390, - 0x13a0000013f5, - 0x14010000166d, - 0x166f00001680, - 0x16810000169b, - 0x16a0000016eb, - 0x17000000170d, - 0x170e00001715, - 0x172000001735, - 0x174000001754, - 0x17600000176d, - 0x176e00001771, - 0x177200001774, - 0x1780000017b4, - 0x17b6000017d4, - 0x17d7000017d8, - 0x17dc000017de, - 0x17e0000017ea, - 0x18100000181a, - 0x182000001878, - 0x1880000018ab, - 0x18b0000018f6, - 0x19000000191d, - 0x19200000192c, - 0x19300000193c, - 0x19460000196e, - 0x197000001975, - 0x1980000019ac, - 0x19b0000019ca, - 0x19d0000019da, - 0x1a0000001a1c, - 0x1a2000001a5f, - 0x1a6000001a7d, - 0x1a7f00001a8a, - 0x1a9000001a9a, - 0x1aa700001aa8, - 0x1b0000001b4c, - 0x1b5000001b5a, - 0x1b6b00001b74, - 0x1b8000001bf4, - 0x1c0000001c38, - 0x1c4000001c4a, - 0x1c4d00001c7e, - 0x1cd000001cd3, - 0x1cd400001cf7, - 0x1d0000001d2c, - 0x1d2f00001d30, - 0x1d3b00001d3c, - 0x1d4e00001d4f, - 0x1d6b00001d78, - 0x1d7900001d9b, - 0x1dc000001de7, - 0x1dfc00001e00, - 0x1e0100001e02, - 0x1e0300001e04, - 0x1e0500001e06, - 0x1e0700001e08, - 0x1e0900001e0a, - 0x1e0b00001e0c, - 0x1e0d00001e0e, - 0x1e0f00001e10, - 0x1e1100001e12, - 0x1e1300001e14, - 0x1e1500001e16, - 0x1e1700001e18, - 0x1e1900001e1a, - 0x1e1b00001e1c, - 0x1e1d00001e1e, - 0x1e1f00001e20, - 0x1e2100001e22, - 0x1e2300001e24, - 0x1e2500001e26, - 0x1e2700001e28, - 0x1e2900001e2a, - 0x1e2b00001e2c, - 0x1e2d00001e2e, - 0x1e2f00001e30, - 0x1e3100001e32, - 0x1e3300001e34, - 0x1e3500001e36, - 0x1e3700001e38, - 0x1e3900001e3a, - 0x1e3b00001e3c, - 0x1e3d00001e3e, - 0x1e3f00001e40, - 0x1e4100001e42, - 0x1e4300001e44, - 0x1e4500001e46, - 0x1e4700001e48, - 0x1e4900001e4a, - 0x1e4b00001e4c, - 0x1e4d00001e4e, - 0x1e4f00001e50, - 0x1e5100001e52, - 0x1e5300001e54, - 0x1e5500001e56, - 0x1e5700001e58, - 0x1e5900001e5a, - 0x1e5b00001e5c, - 0x1e5d00001e5e, - 0x1e5f00001e60, - 0x1e6100001e62, - 0x1e6300001e64, - 0x1e6500001e66, - 0x1e6700001e68, - 0x1e6900001e6a, - 0x1e6b00001e6c, - 0x1e6d00001e6e, - 0x1e6f00001e70, - 0x1e7100001e72, - 0x1e7300001e74, - 0x1e7500001e76, - 0x1e7700001e78, - 0x1e7900001e7a, - 0x1e7b00001e7c, - 0x1e7d00001e7e, - 0x1e7f00001e80, - 0x1e8100001e82, - 0x1e8300001e84, - 0x1e8500001e86, - 0x1e8700001e88, - 0x1e8900001e8a, - 0x1e8b00001e8c, - 0x1e8d00001e8e, - 0x1e8f00001e90, - 0x1e9100001e92, - 0x1e9300001e94, - 0x1e9500001e9a, - 0x1e9c00001e9e, - 0x1e9f00001ea0, - 0x1ea100001ea2, - 0x1ea300001ea4, - 0x1ea500001ea6, - 0x1ea700001ea8, - 0x1ea900001eaa, - 0x1eab00001eac, - 0x1ead00001eae, - 0x1eaf00001eb0, - 0x1eb100001eb2, - 0x1eb300001eb4, - 0x1eb500001eb6, - 0x1eb700001eb8, - 0x1eb900001eba, - 0x1ebb00001ebc, - 0x1ebd00001ebe, - 0x1ebf00001ec0, - 0x1ec100001ec2, - 0x1ec300001ec4, - 0x1ec500001ec6, - 0x1ec700001ec8, - 0x1ec900001eca, - 0x1ecb00001ecc, - 0x1ecd00001ece, - 0x1ecf00001ed0, - 0x1ed100001ed2, - 0x1ed300001ed4, - 0x1ed500001ed6, - 0x1ed700001ed8, - 0x1ed900001eda, - 0x1edb00001edc, - 0x1edd00001ede, - 0x1edf00001ee0, - 0x1ee100001ee2, - 0x1ee300001ee4, - 0x1ee500001ee6, - 0x1ee700001ee8, - 0x1ee900001eea, - 0x1eeb00001eec, - 0x1eed00001eee, - 0x1eef00001ef0, - 0x1ef100001ef2, - 0x1ef300001ef4, - 0x1ef500001ef6, - 0x1ef700001ef8, - 0x1ef900001efa, - 0x1efb00001efc, - 0x1efd00001efe, - 0x1eff00001f08, - 0x1f1000001f16, - 0x1f2000001f28, - 0x1f3000001f38, - 0x1f4000001f46, - 0x1f5000001f58, - 0x1f6000001f68, - 0x1f7000001f71, - 0x1f7200001f73, - 0x1f7400001f75, - 0x1f7600001f77, - 0x1f7800001f79, - 0x1f7a00001f7b, - 0x1f7c00001f7d, - 0x1fb000001fb2, - 0x1fb600001fb7, - 0x1fc600001fc7, - 0x1fd000001fd3, - 0x1fd600001fd8, - 0x1fe000001fe3, - 0x1fe400001fe8, - 0x1ff600001ff7, - 0x214e0000214f, - 0x218400002185, - 0x2c3000002c5f, - 0x2c6100002c62, - 0x2c6500002c67, - 0x2c6800002c69, - 0x2c6a00002c6b, - 0x2c6c00002c6d, - 0x2c7100002c72, - 0x2c7300002c75, - 0x2c7600002c7c, - 0x2c8100002c82, - 0x2c8300002c84, - 0x2c8500002c86, - 0x2c8700002c88, - 0x2c8900002c8a, - 0x2c8b00002c8c, - 0x2c8d00002c8e, - 0x2c8f00002c90, - 0x2c9100002c92, - 0x2c9300002c94, - 0x2c9500002c96, - 0x2c9700002c98, - 0x2c9900002c9a, - 0x2c9b00002c9c, - 0x2c9d00002c9e, - 0x2c9f00002ca0, - 0x2ca100002ca2, - 0x2ca300002ca4, - 0x2ca500002ca6, - 0x2ca700002ca8, - 0x2ca900002caa, - 0x2cab00002cac, - 0x2cad00002cae, - 0x2caf00002cb0, - 0x2cb100002cb2, - 0x2cb300002cb4, - 0x2cb500002cb6, - 0x2cb700002cb8, - 0x2cb900002cba, - 0x2cbb00002cbc, - 0x2cbd00002cbe, - 0x2cbf00002cc0, - 0x2cc100002cc2, - 0x2cc300002cc4, - 0x2cc500002cc6, - 0x2cc700002cc8, - 0x2cc900002cca, - 0x2ccb00002ccc, - 0x2ccd00002cce, - 0x2ccf00002cd0, - 0x2cd100002cd2, - 0x2cd300002cd4, - 0x2cd500002cd6, - 0x2cd700002cd8, - 0x2cd900002cda, - 0x2cdb00002cdc, - 0x2cdd00002cde, - 0x2cdf00002ce0, - 0x2ce100002ce2, - 0x2ce300002ce5, - 0x2cec00002ced, - 0x2cee00002cf2, - 0x2cf300002cf4, - 0x2d0000002d26, - 0x2d2700002d28, - 0x2d2d00002d2e, - 0x2d3000002d68, - 0x2d7f00002d97, - 0x2da000002da7, - 0x2da800002daf, - 0x2db000002db7, - 0x2db800002dbf, - 0x2dc000002dc7, - 0x2dc800002dcf, - 0x2dd000002dd7, - 0x2dd800002ddf, - 0x2de000002e00, - 0x2e2f00002e30, - 0x300500003008, - 0x302a0000302e, - 0x303c0000303d, - 0x304100003097, - 0x30990000309b, - 0x309d0000309f, - 0x30a1000030fb, - 0x30fc000030ff, - 0x31050000312e, - 0x31a0000031bb, - 0x31f000003200, - 0x340000004db6, - 0x4e0000009fcd, - 0xa0000000a48d, - 0xa4d00000a4fe, - 0xa5000000a60d, - 0xa6100000a62c, - 0xa6410000a642, - 0xa6430000a644, - 0xa6450000a646, - 0xa6470000a648, - 0xa6490000a64a, - 0xa64b0000a64c, - 0xa64d0000a64e, - 0xa64f0000a650, - 0xa6510000a652, - 0xa6530000a654, - 0xa6550000a656, - 0xa6570000a658, - 0xa6590000a65a, - 0xa65b0000a65c, - 0xa65d0000a65e, - 0xa65f0000a660, - 0xa6610000a662, - 0xa6630000a664, - 0xa6650000a666, - 0xa6670000a668, - 0xa6690000a66a, - 0xa66b0000a66c, - 0xa66d0000a670, - 0xa6740000a67e, - 0xa67f0000a680, - 0xa6810000a682, - 0xa6830000a684, - 0xa6850000a686, - 0xa6870000a688, - 0xa6890000a68a, - 0xa68b0000a68c, - 0xa68d0000a68e, - 0xa68f0000a690, - 0xa6910000a692, - 0xa6930000a694, - 0xa6950000a696, - 0xa6970000a698, - 0xa69f0000a6e6, - 0xa6f00000a6f2, - 0xa7170000a720, - 0xa7230000a724, - 0xa7250000a726, - 0xa7270000a728, - 0xa7290000a72a, - 0xa72b0000a72c, - 0xa72d0000a72e, - 0xa72f0000a732, - 0xa7330000a734, - 0xa7350000a736, - 0xa7370000a738, - 0xa7390000a73a, - 0xa73b0000a73c, - 0xa73d0000a73e, - 0xa73f0000a740, - 0xa7410000a742, - 0xa7430000a744, - 0xa7450000a746, - 0xa7470000a748, - 0xa7490000a74a, - 0xa74b0000a74c, - 0xa74d0000a74e, - 0xa74f0000a750, - 0xa7510000a752, - 0xa7530000a754, - 0xa7550000a756, - 0xa7570000a758, - 0xa7590000a75a, - 0xa75b0000a75c, - 0xa75d0000a75e, - 0xa75f0000a760, - 0xa7610000a762, - 0xa7630000a764, - 0xa7650000a766, - 0xa7670000a768, - 0xa7690000a76a, - 0xa76b0000a76c, - 0xa76d0000a76e, - 0xa76f0000a770, - 0xa7710000a779, - 0xa77a0000a77b, - 0xa77c0000a77d, - 0xa77f0000a780, - 0xa7810000a782, - 0xa7830000a784, - 0xa7850000a786, - 0xa7870000a789, - 0xa78c0000a78d, - 0xa78e0000a78f, - 0xa7910000a792, - 0xa7930000a794, - 0xa7a10000a7a2, - 0xa7a30000a7a4, - 0xa7a50000a7a6, - 0xa7a70000a7a8, - 0xa7a90000a7aa, - 0xa7fa0000a828, - 0xa8400000a874, - 0xa8800000a8c5, - 0xa8d00000a8da, - 0xa8e00000a8f8, - 0xa8fb0000a8fc, - 0xa9000000a92e, - 0xa9300000a954, - 0xa9800000a9c1, - 0xa9cf0000a9da, - 0xaa000000aa37, - 0xaa400000aa4e, - 0xaa500000aa5a, - 0xaa600000aa77, - 0xaa7a0000aa7c, - 0xaa800000aac3, - 0xaadb0000aade, - 0xaae00000aaf0, - 0xaaf20000aaf7, - 0xab010000ab07, - 0xab090000ab0f, - 0xab110000ab17, - 0xab200000ab27, - 0xab280000ab2f, - 0xabc00000abeb, - 0xabec0000abee, - 0xabf00000abfa, - 0xac000000d7a4, - 0xfa0e0000fa10, - 0xfa110000fa12, - 0xfa130000fa15, - 0xfa1f0000fa20, - 0xfa210000fa22, - 0xfa230000fa25, - 0xfa270000fa2a, - 0xfb1e0000fb1f, - 0xfe200000fe27, - 0xfe730000fe74, - 0x100000001000c, - 0x1000d00010027, - 0x100280001003b, - 0x1003c0001003e, - 0x1003f0001004e, - 0x100500001005e, - 0x10080000100fb, - 0x101fd000101fe, - 0x102800001029d, - 0x102a0000102d1, - 0x103000001031f, - 0x1033000010341, - 0x103420001034a, - 0x103800001039e, - 0x103a0000103c4, - 0x103c8000103d0, - 0x104280001049e, - 0x104a0000104aa, - 0x1080000010806, - 0x1080800010809, - 0x1080a00010836, - 0x1083700010839, - 0x1083c0001083d, - 0x1083f00010856, - 0x1090000010916, - 0x109200001093a, - 0x10980000109b8, - 0x109be000109c0, - 0x10a0000010a04, - 0x10a0500010a07, - 0x10a0c00010a14, - 0x10a1500010a18, - 0x10a1900010a34, - 0x10a3800010a3b, - 0x10a3f00010a40, - 0x10a6000010a7d, - 0x10b0000010b36, - 0x10b4000010b56, - 0x10b6000010b73, - 0x10c0000010c49, - 0x1100000011047, - 0x1106600011070, - 0x11080000110bb, - 0x110d0000110e9, - 0x110f0000110fa, - 0x1110000011135, - 0x1113600011140, - 0x11180000111c5, - 0x111d0000111da, - 0x11680000116b8, - 0x116c0000116ca, - 0x120000001236f, - 0x130000001342f, - 0x1680000016a39, - 0x16f0000016f45, - 0x16f5000016f7f, - 0x16f8f00016fa0, - 0x1b0000001b002, - 0x200000002a6d7, - 0x2a7000002b735, - 0x2b7400002b81e, - ), - 'CONTEXTJ': ( - 0x200c0000200e, - ), - 'CONTEXTO': ( - 0xb7000000b8, - 0x37500000376, - 0x5f3000005f5, - 0x6600000066a, - 0x6f0000006fa, - 0x30fb000030fc, - ), -} diff --git a/env/lib/python3.6/site-packages/idna/intranges.py b/env/lib/python3.6/site-packages/idna/intranges.py deleted file mode 100644 index fa8a735..0000000 --- a/env/lib/python3.6/site-packages/idna/intranges.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -Given a list of integers, made up of (hopefully) a small number of long runs -of consecutive integers, compute a representation of the form -((start1, end1), (start2, end2) ...). Then answer the question "was x present -in the original list?" in time O(log(# runs)). -""" - -import bisect - -def intranges_from_list(list_): - """Represent a list of integers as a sequence of ranges: - ((start_0, end_0), (start_1, end_1), ...), such that the original - integers are exactly those x such that start_i <= x < end_i for some i. - - Ranges are encoded as single integers (start << 32 | end), not as tuples. - """ - - sorted_list = sorted(list_) - ranges = [] - last_write = -1 - for i in range(len(sorted_list)): - if i+1 < len(sorted_list): - if sorted_list[i] == sorted_list[i+1]-1: - continue - current_range = sorted_list[last_write+1:i+1] - ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) - last_write = i - - return tuple(ranges) - -def _encode_range(start, end): - return (start << 32) | end - -def _decode_range(r): - return (r >> 32), (r & ((1 << 32) - 1)) - - -def intranges_contain(int_, ranges): - """Determine if `int_` falls into one of the ranges in `ranges`.""" - tuple_ = _encode_range(int_, 0) - pos = bisect.bisect_left(ranges, tuple_) - # we could be immediately ahead of a tuple (start, end) - # with start < int_ <= end - if pos > 0: - left, right = _decode_range(ranges[pos-1]) - if left <= int_ < right: - return True - # or we could be immediately behind a tuple (int_, end) - if pos < len(ranges): - left, _ = _decode_range(ranges[pos]) - if left == int_: - return True - return False diff --git a/env/lib/python3.6/site-packages/idna/package_data.py b/env/lib/python3.6/site-packages/idna/package_data.py deleted file mode 100644 index fc33139..0000000 --- a/env/lib/python3.6/site-packages/idna/package_data.py +++ /dev/null @@ -1,2 +0,0 @@ -__version__ = '2.6' - diff --git a/env/lib/python3.6/site-packages/idna/uts46data.py b/env/lib/python3.6/site-packages/idna/uts46data.py deleted file mode 100644 index f9b3236..0000000 --- a/env/lib/python3.6/site-packages/idna/uts46data.py +++ /dev/null @@ -1,7634 +0,0 @@ -# This file is automatically generated by tools/idna-data -# vim: set fileencoding=utf-8 : - -"""IDNA Mapping Table from UTS46.""" - - -__version__ = "6.3.0" -def _seg_0(): - return [ - (0x0, '3'), - (0x1, '3'), - (0x2, '3'), - (0x3, '3'), - (0x4, '3'), - (0x5, '3'), - (0x6, '3'), - (0x7, '3'), - (0x8, '3'), - (0x9, '3'), - (0xA, '3'), - (0xB, '3'), - (0xC, '3'), - (0xD, '3'), - (0xE, '3'), - (0xF, '3'), - (0x10, '3'), - (0x11, '3'), - (0x12, '3'), - (0x13, '3'), - (0x14, '3'), - (0x15, '3'), - (0x16, '3'), - (0x17, '3'), - (0x18, '3'), - (0x19, '3'), - (0x1A, '3'), - (0x1B, '3'), - (0x1C, '3'), - (0x1D, '3'), - (0x1E, '3'), - (0x1F, '3'), - (0x20, '3'), - (0x21, '3'), - (0x22, '3'), - (0x23, '3'), - (0x24, '3'), - (0x25, '3'), - (0x26, '3'), - (0x27, '3'), - (0x28, '3'), - (0x29, '3'), - (0x2A, '3'), - (0x2B, '3'), - (0x2C, '3'), - (0x2D, 'V'), - (0x2E, 'V'), - (0x2F, '3'), - (0x30, 'V'), - (0x31, 'V'), - (0x32, 'V'), - (0x33, 'V'), - (0x34, 'V'), - (0x35, 'V'), - (0x36, 'V'), - (0x37, 'V'), - (0x38, 'V'), - (0x39, 'V'), - (0x3A, '3'), - (0x3B, '3'), - (0x3C, '3'), - (0x3D, '3'), - (0x3E, '3'), - (0x3F, '3'), - (0x40, '3'), - (0x41, 'M', u'a'), - (0x42, 'M', u'b'), - (0x43, 'M', u'c'), - (0x44, 'M', u'd'), - (0x45, 'M', u'e'), - (0x46, 'M', u'f'), - (0x47, 'M', u'g'), - (0x48, 'M', u'h'), - (0x49, 'M', u'i'), - (0x4A, 'M', u'j'), - (0x4B, 'M', u'k'), - (0x4C, 'M', u'l'), - (0x4D, 'M', u'm'), - (0x4E, 'M', u'n'), - (0x4F, 'M', u'o'), - (0x50, 'M', u'p'), - (0x51, 'M', u'q'), - (0x52, 'M', u'r'), - (0x53, 'M', u's'), - (0x54, 'M', u't'), - (0x55, 'M', u'u'), - (0x56, 'M', u'v'), - (0x57, 'M', u'w'), - (0x58, 'M', u'x'), - (0x59, 'M', u'y'), - (0x5A, 'M', u'z'), - (0x5B, '3'), - (0x5C, '3'), - (0x5D, '3'), - (0x5E, '3'), - (0x5F, '3'), - (0x60, '3'), - (0x61, 'V'), - (0x62, 'V'), - (0x63, 'V'), - ] - -def _seg_1(): - return [ - (0x64, 'V'), - (0x65, 'V'), - (0x66, 'V'), - (0x67, 'V'), - (0x68, 'V'), - (0x69, 'V'), - (0x6A, 'V'), - (0x6B, 'V'), - (0x6C, 'V'), - (0x6D, 'V'), - (0x6E, 'V'), - (0x6F, 'V'), - (0x70, 'V'), - (0x71, 'V'), - (0x72, 'V'), - (0x73, 'V'), - (0x74, 'V'), - (0x75, 'V'), - (0x76, 'V'), - (0x77, 'V'), - (0x78, 'V'), - (0x79, 'V'), - (0x7A, 'V'), - (0x7B, '3'), - (0x7C, '3'), - (0x7D, '3'), - (0x7E, '3'), - (0x7F, '3'), - (0x80, 'X'), - (0x81, 'X'), - (0x82, 'X'), - (0x83, 'X'), - (0x84, 'X'), - (0x85, 'X'), - (0x86, 'X'), - (0x87, 'X'), - (0x88, 'X'), - (0x89, 'X'), - (0x8A, 'X'), - (0x8B, 'X'), - (0x8C, 'X'), - (0x8D, 'X'), - (0x8E, 'X'), - (0x8F, 'X'), - (0x90, 'X'), - (0x91, 'X'), - (0x92, 'X'), - (0x93, 'X'), - (0x94, 'X'), - (0x95, 'X'), - (0x96, 'X'), - (0x97, 'X'), - (0x98, 'X'), - (0x99, 'X'), - (0x9A, 'X'), - (0x9B, 'X'), - (0x9C, 'X'), - (0x9D, 'X'), - (0x9E, 'X'), - (0x9F, 'X'), - (0xA0, '3', u' '), - (0xA1, 'V'), - (0xA2, 'V'), - (0xA3, 'V'), - (0xA4, 'V'), - (0xA5, 'V'), - (0xA6, 'V'), - (0xA7, 'V'), - (0xA8, '3', u' ̈'), - (0xA9, 'V'), - (0xAA, 'M', u'a'), - (0xAB, 'V'), - (0xAC, 'V'), - (0xAD, 'I'), - (0xAE, 'V'), - (0xAF, '3', u' ̄'), - (0xB0, 'V'), - (0xB1, 'V'), - (0xB2, 'M', u'2'), - (0xB3, 'M', u'3'), - (0xB4, '3', u' ́'), - (0xB5, 'M', u'μ'), - (0xB6, 'V'), - (0xB7, 'V'), - (0xB8, '3', u' ̧'), - (0xB9, 'M', u'1'), - (0xBA, 'M', u'o'), - (0xBB, 'V'), - (0xBC, 'M', u'1⁄4'), - (0xBD, 'M', u'1⁄2'), - (0xBE, 'M', u'3⁄4'), - (0xBF, 'V'), - (0xC0, 'M', u'à'), - (0xC1, 'M', u'á'), - (0xC2, 'M', u'â'), - (0xC3, 'M', u'ã'), - (0xC4, 'M', u'ä'), - (0xC5, 'M', u'å'), - (0xC6, 'M', u'æ'), - (0xC7, 'M', u'ç'), - ] - -def _seg_2(): - return [ - (0xC8, 'M', u'è'), - (0xC9, 'M', u'é'), - (0xCA, 'M', u'ê'), - (0xCB, 'M', u'ë'), - (0xCC, 'M', u'ì'), - (0xCD, 'M', u'í'), - (0xCE, 'M', u'î'), - (0xCF, 'M', u'ï'), - (0xD0, 'M', u'ð'), - (0xD1, 'M', u'ñ'), - (0xD2, 'M', u'ò'), - (0xD3, 'M', u'ó'), - (0xD4, 'M', u'ô'), - (0xD5, 'M', u'õ'), - (0xD6, 'M', u'ö'), - (0xD7, 'V'), - (0xD8, 'M', u'ø'), - (0xD9, 'M', u'ù'), - (0xDA, 'M', u'ú'), - (0xDB, 'M', u'û'), - (0xDC, 'M', u'ü'), - (0xDD, 'M', u'ý'), - (0xDE, 'M', u'þ'), - (0xDF, 'D', u'ss'), - (0xE0, 'V'), - (0xE1, 'V'), - (0xE2, 'V'), - (0xE3, 'V'), - (0xE4, 'V'), - (0xE5, 'V'), - (0xE6, 'V'), - (0xE7, 'V'), - (0xE8, 'V'), - (0xE9, 'V'), - (0xEA, 'V'), - (0xEB, 'V'), - (0xEC, 'V'), - (0xED, 'V'), - (0xEE, 'V'), - (0xEF, 'V'), - (0xF0, 'V'), - (0xF1, 'V'), - (0xF2, 'V'), - (0xF3, 'V'), - (0xF4, 'V'), - (0xF5, 'V'), - (0xF6, 'V'), - (0xF7, 'V'), - (0xF8, 'V'), - (0xF9, 'V'), - (0xFA, 'V'), - (0xFB, 'V'), - (0xFC, 'V'), - (0xFD, 'V'), - (0xFE, 'V'), - (0xFF, 'V'), - (0x100, 'M', u'ā'), - (0x101, 'V'), - (0x102, 'M', u'ă'), - (0x103, 'V'), - (0x104, 'M', u'ą'), - (0x105, 'V'), - (0x106, 'M', u'ć'), - (0x107, 'V'), - (0x108, 'M', u'ĉ'), - (0x109, 'V'), - (0x10A, 'M', u'ċ'), - (0x10B, 'V'), - (0x10C, 'M', u'č'), - (0x10D, 'V'), - (0x10E, 'M', u'ď'), - (0x10F, 'V'), - (0x110, 'M', u'đ'), - (0x111, 'V'), - (0x112, 'M', u'ē'), - (0x113, 'V'), - (0x114, 'M', u'ĕ'), - (0x115, 'V'), - (0x116, 'M', u'ė'), - (0x117, 'V'), - (0x118, 'M', u'ę'), - (0x119, 'V'), - (0x11A, 'M', u'ě'), - (0x11B, 'V'), - (0x11C, 'M', u'ĝ'), - (0x11D, 'V'), - (0x11E, 'M', u'ğ'), - (0x11F, 'V'), - (0x120, 'M', u'ġ'), - (0x121, 'V'), - (0x122, 'M', u'ģ'), - (0x123, 'V'), - (0x124, 'M', u'ĥ'), - (0x125, 'V'), - (0x126, 'M', u'ħ'), - (0x127, 'V'), - (0x128, 'M', u'ĩ'), - (0x129, 'V'), - (0x12A, 'M', u'ī'), - (0x12B, 'V'), - ] - -def _seg_3(): - return [ - (0x12C, 'M', u'ĭ'), - (0x12D, 'V'), - (0x12E, 'M', u'į'), - (0x12F, 'V'), - (0x130, 'M', u'i̇'), - (0x131, 'V'), - (0x132, 'M', u'ij'), - (0x134, 'M', u'ĵ'), - (0x135, 'V'), - (0x136, 'M', u'ķ'), - (0x137, 'V'), - (0x139, 'M', u'ĺ'), - (0x13A, 'V'), - (0x13B, 'M', u'ļ'), - (0x13C, 'V'), - (0x13D, 'M', u'ľ'), - (0x13E, 'V'), - (0x13F, 'M', u'l·'), - (0x141, 'M', u'ł'), - (0x142, 'V'), - (0x143, 'M', u'ń'), - (0x144, 'V'), - (0x145, 'M', u'ņ'), - (0x146, 'V'), - (0x147, 'M', u'ň'), - (0x148, 'V'), - (0x149, 'M', u'ʼn'), - (0x14A, 'M', u'ŋ'), - (0x14B, 'V'), - (0x14C, 'M', u'ō'), - (0x14D, 'V'), - (0x14E, 'M', u'ŏ'), - (0x14F, 'V'), - (0x150, 'M', u'ő'), - (0x151, 'V'), - (0x152, 'M', u'œ'), - (0x153, 'V'), - (0x154, 'M', u'ŕ'), - (0x155, 'V'), - (0x156, 'M', u'ŗ'), - (0x157, 'V'), - (0x158, 'M', u'ř'), - (0x159, 'V'), - (0x15A, 'M', u'ś'), - (0x15B, 'V'), - (0x15C, 'M', u'ŝ'), - (0x15D, 'V'), - (0x15E, 'M', u'ş'), - (0x15F, 'V'), - (0x160, 'M', u'š'), - (0x161, 'V'), - (0x162, 'M', u'ţ'), - (0x163, 'V'), - (0x164, 'M', u'ť'), - (0x165, 'V'), - (0x166, 'M', u'ŧ'), - (0x167, 'V'), - (0x168, 'M', u'ũ'), - (0x169, 'V'), - (0x16A, 'M', u'ū'), - (0x16B, 'V'), - (0x16C, 'M', u'ŭ'), - (0x16D, 'V'), - (0x16E, 'M', u'ů'), - (0x16F, 'V'), - (0x170, 'M', u'ű'), - (0x171, 'V'), - (0x172, 'M', u'ų'), - (0x173, 'V'), - (0x174, 'M', u'ŵ'), - (0x175, 'V'), - (0x176, 'M', u'ŷ'), - (0x177, 'V'), - (0x178, 'M', u'ÿ'), - (0x179, 'M', u'ź'), - (0x17A, 'V'), - (0x17B, 'M', u'ż'), - (0x17C, 'V'), - (0x17D, 'M', u'ž'), - (0x17E, 'V'), - (0x17F, 'M', u's'), - (0x180, 'V'), - (0x181, 'M', u'ɓ'), - (0x182, 'M', u'ƃ'), - (0x183, 'V'), - (0x184, 'M', u'ƅ'), - (0x185, 'V'), - (0x186, 'M', u'ɔ'), - (0x187, 'M', u'ƈ'), - (0x188, 'V'), - (0x189, 'M', u'ɖ'), - (0x18A, 'M', u'ɗ'), - (0x18B, 'M', u'ƌ'), - (0x18C, 'V'), - (0x18E, 'M', u'ǝ'), - (0x18F, 'M', u'ə'), - (0x190, 'M', u'ɛ'), - (0x191, 'M', u'ƒ'), - (0x192, 'V'), - (0x193, 'M', u'ɠ'), - ] - -def _seg_4(): - return [ - (0x194, 'M', u'ɣ'), - (0x195, 'V'), - (0x196, 'M', u'ɩ'), - (0x197, 'M', u'ɨ'), - (0x198, 'M', u'ƙ'), - (0x199, 'V'), - (0x19C, 'M', u'ɯ'), - (0x19D, 'M', u'ɲ'), - (0x19E, 'V'), - (0x19F, 'M', u'ɵ'), - (0x1A0, 'M', u'ơ'), - (0x1A1, 'V'), - (0x1A2, 'M', u'ƣ'), - (0x1A3, 'V'), - (0x1A4, 'M', u'ƥ'), - (0x1A5, 'V'), - (0x1A6, 'M', u'ʀ'), - (0x1A7, 'M', u'ƨ'), - (0x1A8, 'V'), - (0x1A9, 'M', u'ʃ'), - (0x1AA, 'V'), - (0x1AC, 'M', u'ƭ'), - (0x1AD, 'V'), - (0x1AE, 'M', u'ʈ'), - (0x1AF, 'M', u'ư'), - (0x1B0, 'V'), - (0x1B1, 'M', u'ʊ'), - (0x1B2, 'M', u'ʋ'), - (0x1B3, 'M', u'ƴ'), - (0x1B4, 'V'), - (0x1B5, 'M', u'ƶ'), - (0x1B6, 'V'), - (0x1B7, 'M', u'ʒ'), - (0x1B8, 'M', u'ƹ'), - (0x1B9, 'V'), - (0x1BC, 'M', u'ƽ'), - (0x1BD, 'V'), - (0x1C4, 'M', u'dž'), - (0x1C7, 'M', u'lj'), - (0x1CA, 'M', u'nj'), - (0x1CD, 'M', u'ǎ'), - (0x1CE, 'V'), - (0x1CF, 'M', u'ǐ'), - (0x1D0, 'V'), - (0x1D1, 'M', u'ǒ'), - (0x1D2, 'V'), - (0x1D3, 'M', u'ǔ'), - (0x1D4, 'V'), - (0x1D5, 'M', u'ǖ'), - (0x1D6, 'V'), - (0x1D7, 'M', u'ǘ'), - (0x1D8, 'V'), - (0x1D9, 'M', u'ǚ'), - (0x1DA, 'V'), - (0x1DB, 'M', u'ǜ'), - (0x1DC, 'V'), - (0x1DE, 'M', u'ǟ'), - (0x1DF, 'V'), - (0x1E0, 'M', u'ǡ'), - (0x1E1, 'V'), - (0x1E2, 'M', u'ǣ'), - (0x1E3, 'V'), - (0x1E4, 'M', u'ǥ'), - (0x1E5, 'V'), - (0x1E6, 'M', u'ǧ'), - (0x1E7, 'V'), - (0x1E8, 'M', u'ǩ'), - (0x1E9, 'V'), - (0x1EA, 'M', u'ǫ'), - (0x1EB, 'V'), - (0x1EC, 'M', u'ǭ'), - (0x1ED, 'V'), - (0x1EE, 'M', u'ǯ'), - (0x1EF, 'V'), - (0x1F1, 'M', u'dz'), - (0x1F4, 'M', u'ǵ'), - (0x1F5, 'V'), - (0x1F6, 'M', u'ƕ'), - (0x1F7, 'M', u'ƿ'), - (0x1F8, 'M', u'ǹ'), - (0x1F9, 'V'), - (0x1FA, 'M', u'ǻ'), - (0x1FB, 'V'), - (0x1FC, 'M', u'ǽ'), - (0x1FD, 'V'), - (0x1FE, 'M', u'ǿ'), - (0x1FF, 'V'), - (0x200, 'M', u'ȁ'), - (0x201, 'V'), - (0x202, 'M', u'ȃ'), - (0x203, 'V'), - (0x204, 'M', u'ȅ'), - (0x205, 'V'), - (0x206, 'M', u'ȇ'), - (0x207, 'V'), - (0x208, 'M', u'ȉ'), - (0x209, 'V'), - (0x20A, 'M', u'ȋ'), - (0x20B, 'V'), - (0x20C, 'M', u'ȍ'), - ] - -def _seg_5(): - return [ - (0x20D, 'V'), - (0x20E, 'M', u'ȏ'), - (0x20F, 'V'), - (0x210, 'M', u'ȑ'), - (0x211, 'V'), - (0x212, 'M', u'ȓ'), - (0x213, 'V'), - (0x214, 'M', u'ȕ'), - (0x215, 'V'), - (0x216, 'M', u'ȗ'), - (0x217, 'V'), - (0x218, 'M', u'ș'), - (0x219, 'V'), - (0x21A, 'M', u'ț'), - (0x21B, 'V'), - (0x21C, 'M', u'ȝ'), - (0x21D, 'V'), - (0x21E, 'M', u'ȟ'), - (0x21F, 'V'), - (0x220, 'M', u'ƞ'), - (0x221, 'V'), - (0x222, 'M', u'ȣ'), - (0x223, 'V'), - (0x224, 'M', u'ȥ'), - (0x225, 'V'), - (0x226, 'M', u'ȧ'), - (0x227, 'V'), - (0x228, 'M', u'ȩ'), - (0x229, 'V'), - (0x22A, 'M', u'ȫ'), - (0x22B, 'V'), - (0x22C, 'M', u'ȭ'), - (0x22D, 'V'), - (0x22E, 'M', u'ȯ'), - (0x22F, 'V'), - (0x230, 'M', u'ȱ'), - (0x231, 'V'), - (0x232, 'M', u'ȳ'), - (0x233, 'V'), - (0x23A, 'M', u'ⱥ'), - (0x23B, 'M', u'ȼ'), - (0x23C, 'V'), - (0x23D, 'M', u'ƚ'), - (0x23E, 'M', u'ⱦ'), - (0x23F, 'V'), - (0x241, 'M', u'ɂ'), - (0x242, 'V'), - (0x243, 'M', u'ƀ'), - (0x244, 'M', u'ʉ'), - (0x245, 'M', u'ʌ'), - (0x246, 'M', u'ɇ'), - (0x247, 'V'), - (0x248, 'M', u'ɉ'), - (0x249, 'V'), - (0x24A, 'M', u'ɋ'), - (0x24B, 'V'), - (0x24C, 'M', u'ɍ'), - (0x24D, 'V'), - (0x24E, 'M', u'ɏ'), - (0x24F, 'V'), - (0x2B0, 'M', u'h'), - (0x2B1, 'M', u'ɦ'), - (0x2B2, 'M', u'j'), - (0x2B3, 'M', u'r'), - (0x2B4, 'M', u'ɹ'), - (0x2B5, 'M', u'ɻ'), - (0x2B6, 'M', u'ʁ'), - (0x2B7, 'M', u'w'), - (0x2B8, 'M', u'y'), - (0x2B9, 'V'), - (0x2D8, '3', u' ̆'), - (0x2D9, '3', u' ̇'), - (0x2DA, '3', u' ̊'), - (0x2DB, '3', u' ̨'), - (0x2DC, '3', u' ̃'), - (0x2DD, '3', u' ̋'), - (0x2DE, 'V'), - (0x2E0, 'M', u'ɣ'), - (0x2E1, 'M', u'l'), - (0x2E2, 'M', u's'), - (0x2E3, 'M', u'x'), - (0x2E4, 'M', u'ʕ'), - (0x2E5, 'V'), - (0x340, 'M', u'̀'), - (0x341, 'M', u'́'), - (0x342, 'V'), - (0x343, 'M', u'̓'), - (0x344, 'M', u'̈́'), - (0x345, 'M', u'ι'), - (0x346, 'V'), - (0x34F, 'I'), - (0x350, 'V'), - (0x370, 'M', u'ͱ'), - (0x371, 'V'), - (0x372, 'M', u'ͳ'), - (0x373, 'V'), - (0x374, 'M', u'ʹ'), - (0x375, 'V'), - (0x376, 'M', u'ͷ'), - (0x377, 'V'), - ] - -def _seg_6(): - return [ - (0x378, 'X'), - (0x37A, '3', u' ι'), - (0x37B, 'V'), - (0x37E, '3', u';'), - (0x37F, 'X'), - (0x384, '3', u' ́'), - (0x385, '3', u' ̈́'), - (0x386, 'M', u'ά'), - (0x387, 'M', u'·'), - (0x388, 'M', u'έ'), - (0x389, 'M', u'ή'), - (0x38A, 'M', u'ί'), - (0x38B, 'X'), - (0x38C, 'M', u'ό'), - (0x38D, 'X'), - (0x38E, 'M', u'ύ'), - (0x38F, 'M', u'ώ'), - (0x390, 'V'), - (0x391, 'M', u'α'), - (0x392, 'M', u'β'), - (0x393, 'M', u'γ'), - (0x394, 'M', u'δ'), - (0x395, 'M', u'ε'), - (0x396, 'M', u'ζ'), - (0x397, 'M', u'η'), - (0x398, 'M', u'θ'), - (0x399, 'M', u'ι'), - (0x39A, 'M', u'κ'), - (0x39B, 'M', u'λ'), - (0x39C, 'M', u'μ'), - (0x39D, 'M', u'ν'), - (0x39E, 'M', u'ξ'), - (0x39F, 'M', u'ο'), - (0x3A0, 'M', u'π'), - (0x3A1, 'M', u'ρ'), - (0x3A2, 'X'), - (0x3A3, 'M', u'σ'), - (0x3A4, 'M', u'τ'), - (0x3A5, 'M', u'υ'), - (0x3A6, 'M', u'φ'), - (0x3A7, 'M', u'χ'), - (0x3A8, 'M', u'ψ'), - (0x3A9, 'M', u'ω'), - (0x3AA, 'M', u'ϊ'), - (0x3AB, 'M', u'ϋ'), - (0x3AC, 'V'), - (0x3C2, 'D', u'σ'), - (0x3C3, 'V'), - (0x3CF, 'M', u'ϗ'), - (0x3D0, 'M', u'β'), - (0x3D1, 'M', u'θ'), - (0x3D2, 'M', u'υ'), - (0x3D3, 'M', u'ύ'), - (0x3D4, 'M', u'ϋ'), - (0x3D5, 'M', u'φ'), - (0x3D6, 'M', u'π'), - (0x3D7, 'V'), - (0x3D8, 'M', u'ϙ'), - (0x3D9, 'V'), - (0x3DA, 'M', u'ϛ'), - (0x3DB, 'V'), - (0x3DC, 'M', u'ϝ'), - (0x3DD, 'V'), - (0x3DE, 'M', u'ϟ'), - (0x3DF, 'V'), - (0x3E0, 'M', u'ϡ'), - (0x3E1, 'V'), - (0x3E2, 'M', u'ϣ'), - (0x3E3, 'V'), - (0x3E4, 'M', u'ϥ'), - (0x3E5, 'V'), - (0x3E6, 'M', u'ϧ'), - (0x3E7, 'V'), - (0x3E8, 'M', u'ϩ'), - (0x3E9, 'V'), - (0x3EA, 'M', u'ϫ'), - (0x3EB, 'V'), - (0x3EC, 'M', u'ϭ'), - (0x3ED, 'V'), - (0x3EE, 'M', u'ϯ'), - (0x3EF, 'V'), - (0x3F0, 'M', u'κ'), - (0x3F1, 'M', u'ρ'), - (0x3F2, 'M', u'σ'), - (0x3F3, 'V'), - (0x3F4, 'M', u'θ'), - (0x3F5, 'M', u'ε'), - (0x3F6, 'V'), - (0x3F7, 'M', u'ϸ'), - (0x3F8, 'V'), - (0x3F9, 'M', u'σ'), - (0x3FA, 'M', u'ϻ'), - (0x3FB, 'V'), - (0x3FD, 'M', u'ͻ'), - (0x3FE, 'M', u'ͼ'), - (0x3FF, 'M', u'ͽ'), - (0x400, 'M', u'ѐ'), - (0x401, 'M', u'ё'), - (0x402, 'M', u'ђ'), - (0x403, 'M', u'ѓ'), - ] - -def _seg_7(): - return [ - (0x404, 'M', u'є'), - (0x405, 'M', u'ѕ'), - (0x406, 'M', u'і'), - (0x407, 'M', u'ї'), - (0x408, 'M', u'ј'), - (0x409, 'M', u'љ'), - (0x40A, 'M', u'њ'), - (0x40B, 'M', u'ћ'), - (0x40C, 'M', u'ќ'), - (0x40D, 'M', u'ѝ'), - (0x40E, 'M', u'ў'), - (0x40F, 'M', u'џ'), - (0x410, 'M', u'а'), - (0x411, 'M', u'б'), - (0x412, 'M', u'в'), - (0x413, 'M', u'г'), - (0x414, 'M', u'д'), - (0x415, 'M', u'е'), - (0x416, 'M', u'ж'), - (0x417, 'M', u'з'), - (0x418, 'M', u'и'), - (0x419, 'M', u'й'), - (0x41A, 'M', u'к'), - (0x41B, 'M', u'л'), - (0x41C, 'M', u'м'), - (0x41D, 'M', u'н'), - (0x41E, 'M', u'о'), - (0x41F, 'M', u'п'), - (0x420, 'M', u'р'), - (0x421, 'M', u'с'), - (0x422, 'M', u'т'), - (0x423, 'M', u'у'), - (0x424, 'M', u'ф'), - (0x425, 'M', u'х'), - (0x426, 'M', u'ц'), - (0x427, 'M', u'ч'), - (0x428, 'M', u'ш'), - (0x429, 'M', u'щ'), - (0x42A, 'M', u'ъ'), - (0x42B, 'M', u'ы'), - (0x42C, 'M', u'ь'), - (0x42D, 'M', u'э'), - (0x42E, 'M', u'ю'), - (0x42F, 'M', u'я'), - (0x430, 'V'), - (0x460, 'M', u'ѡ'), - (0x461, 'V'), - (0x462, 'M', u'ѣ'), - (0x463, 'V'), - (0x464, 'M', u'ѥ'), - (0x465, 'V'), - (0x466, 'M', u'ѧ'), - (0x467, 'V'), - (0x468, 'M', u'ѩ'), - (0x469, 'V'), - (0x46A, 'M', u'ѫ'), - (0x46B, 'V'), - (0x46C, 'M', u'ѭ'), - (0x46D, 'V'), - (0x46E, 'M', u'ѯ'), - (0x46F, 'V'), - (0x470, 'M', u'ѱ'), - (0x471, 'V'), - (0x472, 'M', u'ѳ'), - (0x473, 'V'), - (0x474, 'M', u'ѵ'), - (0x475, 'V'), - (0x476, 'M', u'ѷ'), - (0x477, 'V'), - (0x478, 'M', u'ѹ'), - (0x479, 'V'), - (0x47A, 'M', u'ѻ'), - (0x47B, 'V'), - (0x47C, 'M', u'ѽ'), - (0x47D, 'V'), - (0x47E, 'M', u'ѿ'), - (0x47F, 'V'), - (0x480, 'M', u'ҁ'), - (0x481, 'V'), - (0x48A, 'M', u'ҋ'), - (0x48B, 'V'), - (0x48C, 'M', u'ҍ'), - (0x48D, 'V'), - (0x48E, 'M', u'ҏ'), - (0x48F, 'V'), - (0x490, 'M', u'ґ'), - (0x491, 'V'), - (0x492, 'M', u'ғ'), - (0x493, 'V'), - (0x494, 'M', u'ҕ'), - (0x495, 'V'), - (0x496, 'M', u'җ'), - (0x497, 'V'), - (0x498, 'M', u'ҙ'), - (0x499, 'V'), - (0x49A, 'M', u'қ'), - (0x49B, 'V'), - (0x49C, 'M', u'ҝ'), - (0x49D, 'V'), - (0x49E, 'M', u'ҟ'), - ] - -def _seg_8(): - return [ - (0x49F, 'V'), - (0x4A0, 'M', u'ҡ'), - (0x4A1, 'V'), - (0x4A2, 'M', u'ң'), - (0x4A3, 'V'), - (0x4A4, 'M', u'ҥ'), - (0x4A5, 'V'), - (0x4A6, 'M', u'ҧ'), - (0x4A7, 'V'), - (0x4A8, 'M', u'ҩ'), - (0x4A9, 'V'), - (0x4AA, 'M', u'ҫ'), - (0x4AB, 'V'), - (0x4AC, 'M', u'ҭ'), - (0x4AD, 'V'), - (0x4AE, 'M', u'ү'), - (0x4AF, 'V'), - (0x4B0, 'M', u'ұ'), - (0x4B1, 'V'), - (0x4B2, 'M', u'ҳ'), - (0x4B3, 'V'), - (0x4B4, 'M', u'ҵ'), - (0x4B5, 'V'), - (0x4B6, 'M', u'ҷ'), - (0x4B7, 'V'), - (0x4B8, 'M', u'ҹ'), - (0x4B9, 'V'), - (0x4BA, 'M', u'һ'), - (0x4BB, 'V'), - (0x4BC, 'M', u'ҽ'), - (0x4BD, 'V'), - (0x4BE, 'M', u'ҿ'), - (0x4BF, 'V'), - (0x4C0, 'X'), - (0x4C1, 'M', u'ӂ'), - (0x4C2, 'V'), - (0x4C3, 'M', u'ӄ'), - (0x4C4, 'V'), - (0x4C5, 'M', u'ӆ'), - (0x4C6, 'V'), - (0x4C7, 'M', u'ӈ'), - (0x4C8, 'V'), - (0x4C9, 'M', u'ӊ'), - (0x4CA, 'V'), - (0x4CB, 'M', u'ӌ'), - (0x4CC, 'V'), - (0x4CD, 'M', u'ӎ'), - (0x4CE, 'V'), - (0x4D0, 'M', u'ӑ'), - (0x4D1, 'V'), - (0x4D2, 'M', u'ӓ'), - (0x4D3, 'V'), - (0x4D4, 'M', u'ӕ'), - (0x4D5, 'V'), - (0x4D6, 'M', u'ӗ'), - (0x4D7, 'V'), - (0x4D8, 'M', u'ә'), - (0x4D9, 'V'), - (0x4DA, 'M', u'ӛ'), - (0x4DB, 'V'), - (0x4DC, 'M', u'ӝ'), - (0x4DD, 'V'), - (0x4DE, 'M', u'ӟ'), - (0x4DF, 'V'), - (0x4E0, 'M', u'ӡ'), - (0x4E1, 'V'), - (0x4E2, 'M', u'ӣ'), - (0x4E3, 'V'), - (0x4E4, 'M', u'ӥ'), - (0x4E5, 'V'), - (0x4E6, 'M', u'ӧ'), - (0x4E7, 'V'), - (0x4E8, 'M', u'ө'), - (0x4E9, 'V'), - (0x4EA, 'M', u'ӫ'), - (0x4EB, 'V'), - (0x4EC, 'M', u'ӭ'), - (0x4ED, 'V'), - (0x4EE, 'M', u'ӯ'), - (0x4EF, 'V'), - (0x4F0, 'M', u'ӱ'), - (0x4F1, 'V'), - (0x4F2, 'M', u'ӳ'), - (0x4F3, 'V'), - (0x4F4, 'M', u'ӵ'), - (0x4F5, 'V'), - (0x4F6, 'M', u'ӷ'), - (0x4F7, 'V'), - (0x4F8, 'M', u'ӹ'), - (0x4F9, 'V'), - (0x4FA, 'M', u'ӻ'), - (0x4FB, 'V'), - (0x4FC, 'M', u'ӽ'), - (0x4FD, 'V'), - (0x4FE, 'M', u'ӿ'), - (0x4FF, 'V'), - (0x500, 'M', u'ԁ'), - (0x501, 'V'), - (0x502, 'M', u'ԃ'), - (0x503, 'V'), - ] - -def _seg_9(): - return [ - (0x504, 'M', u'ԅ'), - (0x505, 'V'), - (0x506, 'M', u'ԇ'), - (0x507, 'V'), - (0x508, 'M', u'ԉ'), - (0x509, 'V'), - (0x50A, 'M', u'ԋ'), - (0x50B, 'V'), - (0x50C, 'M', u'ԍ'), - (0x50D, 'V'), - (0x50E, 'M', u'ԏ'), - (0x50F, 'V'), - (0x510, 'M', u'ԑ'), - (0x511, 'V'), - (0x512, 'M', u'ԓ'), - (0x513, 'V'), - (0x514, 'M', u'ԕ'), - (0x515, 'V'), - (0x516, 'M', u'ԗ'), - (0x517, 'V'), - (0x518, 'M', u'ԙ'), - (0x519, 'V'), - (0x51A, 'M', u'ԛ'), - (0x51B, 'V'), - (0x51C, 'M', u'ԝ'), - (0x51D, 'V'), - (0x51E, 'M', u'ԟ'), - (0x51F, 'V'), - (0x520, 'M', u'ԡ'), - (0x521, 'V'), - (0x522, 'M', u'ԣ'), - (0x523, 'V'), - (0x524, 'M', u'ԥ'), - (0x525, 'V'), - (0x526, 'M', u'ԧ'), - (0x527, 'V'), - (0x528, 'X'), - (0x531, 'M', u'ա'), - (0x532, 'M', u'բ'), - (0x533, 'M', u'գ'), - (0x534, 'M', u'դ'), - (0x535, 'M', u'ե'), - (0x536, 'M', u'զ'), - (0x537, 'M', u'է'), - (0x538, 'M', u'ը'), - (0x539, 'M', u'թ'), - (0x53A, 'M', u'ժ'), - (0x53B, 'M', u'ի'), - (0x53C, 'M', u'լ'), - (0x53D, 'M', u'խ'), - (0x53E, 'M', u'ծ'), - (0x53F, 'M', u'կ'), - (0x540, 'M', u'հ'), - (0x541, 'M', u'ձ'), - (0x542, 'M', u'ղ'), - (0x543, 'M', u'ճ'), - (0x544, 'M', u'մ'), - (0x545, 'M', u'յ'), - (0x546, 'M', u'ն'), - (0x547, 'M', u'շ'), - (0x548, 'M', u'ո'), - (0x549, 'M', u'չ'), - (0x54A, 'M', u'պ'), - (0x54B, 'M', u'ջ'), - (0x54C, 'M', u'ռ'), - (0x54D, 'M', u'ս'), - (0x54E, 'M', u'վ'), - (0x54F, 'M', u'տ'), - (0x550, 'M', u'ր'), - (0x551, 'M', u'ց'), - (0x552, 'M', u'ւ'), - (0x553, 'M', u'փ'), - (0x554, 'M', u'ք'), - (0x555, 'M', u'օ'), - (0x556, 'M', u'ֆ'), - (0x557, 'X'), - (0x559, 'V'), - (0x560, 'X'), - (0x561, 'V'), - (0x587, 'M', u'եւ'), - (0x588, 'X'), - (0x589, 'V'), - (0x58B, 'X'), - (0x58F, 'V'), - (0x590, 'X'), - (0x591, 'V'), - (0x5C8, 'X'), - (0x5D0, 'V'), - (0x5EB, 'X'), - (0x5F0, 'V'), - (0x5F5, 'X'), - (0x606, 'V'), - (0x61C, 'X'), - (0x61E, 'V'), - (0x675, 'M', u'اٴ'), - (0x676, 'M', u'وٴ'), - (0x677, 'M', u'ۇٴ'), - (0x678, 'M', u'يٴ'), - (0x679, 'V'), - (0x6DD, 'X'), - ] - -def _seg_10(): - return [ - (0x6DE, 'V'), - (0x70E, 'X'), - (0x710, 'V'), - (0x74B, 'X'), - (0x74D, 'V'), - (0x7B2, 'X'), - (0x7C0, 'V'), - (0x7FB, 'X'), - (0x800, 'V'), - (0x82E, 'X'), - (0x830, 'V'), - (0x83F, 'X'), - (0x840, 'V'), - (0x85C, 'X'), - (0x85E, 'V'), - (0x85F, 'X'), - (0x8A0, 'V'), - (0x8A1, 'X'), - (0x8A2, 'V'), - (0x8AD, 'X'), - (0x8E4, 'V'), - (0x8FF, 'X'), - (0x900, 'V'), - (0x958, 'M', u'क़'), - (0x959, 'M', u'ख़'), - (0x95A, 'M', u'ग़'), - (0x95B, 'M', u'ज़'), - (0x95C, 'M', u'ड़'), - (0x95D, 'M', u'ढ़'), - (0x95E, 'M', u'फ़'), - (0x95F, 'M', u'य़'), - (0x960, 'V'), - (0x978, 'X'), - (0x979, 'V'), - (0x980, 'X'), - (0x981, 'V'), - (0x984, 'X'), - (0x985, 'V'), - (0x98D, 'X'), - (0x98F, 'V'), - (0x991, 'X'), - (0x993, 'V'), - (0x9A9, 'X'), - (0x9AA, 'V'), - (0x9B1, 'X'), - (0x9B2, 'V'), - (0x9B3, 'X'), - (0x9B6, 'V'), - (0x9BA, 'X'), - (0x9BC, 'V'), - (0x9C5, 'X'), - (0x9C7, 'V'), - (0x9C9, 'X'), - (0x9CB, 'V'), - (0x9CF, 'X'), - (0x9D7, 'V'), - (0x9D8, 'X'), - (0x9DC, 'M', u'ড়'), - (0x9DD, 'M', u'ঢ়'), - (0x9DE, 'X'), - (0x9DF, 'M', u'য়'), - (0x9E0, 'V'), - (0x9E4, 'X'), - (0x9E6, 'V'), - (0x9FC, 'X'), - (0xA01, 'V'), - (0xA04, 'X'), - (0xA05, 'V'), - (0xA0B, 'X'), - (0xA0F, 'V'), - (0xA11, 'X'), - (0xA13, 'V'), - (0xA29, 'X'), - (0xA2A, 'V'), - (0xA31, 'X'), - (0xA32, 'V'), - (0xA33, 'M', u'ਲ਼'), - (0xA34, 'X'), - (0xA35, 'V'), - (0xA36, 'M', u'ਸ਼'), - (0xA37, 'X'), - (0xA38, 'V'), - (0xA3A, 'X'), - (0xA3C, 'V'), - (0xA3D, 'X'), - (0xA3E, 'V'), - (0xA43, 'X'), - (0xA47, 'V'), - (0xA49, 'X'), - (0xA4B, 'V'), - (0xA4E, 'X'), - (0xA51, 'V'), - (0xA52, 'X'), - (0xA59, 'M', u'ਖ਼'), - (0xA5A, 'M', u'ਗ਼'), - (0xA5B, 'M', u'ਜ਼'), - (0xA5C, 'V'), - (0xA5D, 'X'), - (0xA5E, 'M', u'ਫ਼'), - (0xA5F, 'X'), - ] - -def _seg_11(): - return [ - (0xA66, 'V'), - (0xA76, 'X'), - (0xA81, 'V'), - (0xA84, 'X'), - (0xA85, 'V'), - (0xA8E, 'X'), - (0xA8F, 'V'), - (0xA92, 'X'), - (0xA93, 'V'), - (0xAA9, 'X'), - (0xAAA, 'V'), - (0xAB1, 'X'), - (0xAB2, 'V'), - (0xAB4, 'X'), - (0xAB5, 'V'), - (0xABA, 'X'), - (0xABC, 'V'), - (0xAC6, 'X'), - (0xAC7, 'V'), - (0xACA, 'X'), - (0xACB, 'V'), - (0xACE, 'X'), - (0xAD0, 'V'), - (0xAD1, 'X'), - (0xAE0, 'V'), - (0xAE4, 'X'), - (0xAE6, 'V'), - (0xAF2, 'X'), - (0xB01, 'V'), - (0xB04, 'X'), - (0xB05, 'V'), - (0xB0D, 'X'), - (0xB0F, 'V'), - (0xB11, 'X'), - (0xB13, 'V'), - (0xB29, 'X'), - (0xB2A, 'V'), - (0xB31, 'X'), - (0xB32, 'V'), - (0xB34, 'X'), - (0xB35, 'V'), - (0xB3A, 'X'), - (0xB3C, 'V'), - (0xB45, 'X'), - (0xB47, 'V'), - (0xB49, 'X'), - (0xB4B, 'V'), - (0xB4E, 'X'), - (0xB56, 'V'), - (0xB58, 'X'), - (0xB5C, 'M', u'ଡ଼'), - (0xB5D, 'M', u'ଢ଼'), - (0xB5E, 'X'), - (0xB5F, 'V'), - (0xB64, 'X'), - (0xB66, 'V'), - (0xB78, 'X'), - (0xB82, 'V'), - (0xB84, 'X'), - (0xB85, 'V'), - (0xB8B, 'X'), - (0xB8E, 'V'), - (0xB91, 'X'), - (0xB92, 'V'), - (0xB96, 'X'), - (0xB99, 'V'), - (0xB9B, 'X'), - (0xB9C, 'V'), - (0xB9D, 'X'), - (0xB9E, 'V'), - (0xBA0, 'X'), - (0xBA3, 'V'), - (0xBA5, 'X'), - (0xBA8, 'V'), - (0xBAB, 'X'), - (0xBAE, 'V'), - (0xBBA, 'X'), - (0xBBE, 'V'), - (0xBC3, 'X'), - (0xBC6, 'V'), - (0xBC9, 'X'), - (0xBCA, 'V'), - (0xBCE, 'X'), - (0xBD0, 'V'), - (0xBD1, 'X'), - (0xBD7, 'V'), - (0xBD8, 'X'), - (0xBE6, 'V'), - (0xBFB, 'X'), - (0xC01, 'V'), - (0xC04, 'X'), - (0xC05, 'V'), - (0xC0D, 'X'), - (0xC0E, 'V'), - (0xC11, 'X'), - (0xC12, 'V'), - (0xC29, 'X'), - (0xC2A, 'V'), - (0xC34, 'X'), - (0xC35, 'V'), - ] - -def _seg_12(): - return [ - (0xC3A, 'X'), - (0xC3D, 'V'), - (0xC45, 'X'), - (0xC46, 'V'), - (0xC49, 'X'), - (0xC4A, 'V'), - (0xC4E, 'X'), - (0xC55, 'V'), - (0xC57, 'X'), - (0xC58, 'V'), - (0xC5A, 'X'), - (0xC60, 'V'), - (0xC64, 'X'), - (0xC66, 'V'), - (0xC70, 'X'), - (0xC78, 'V'), - (0xC80, 'X'), - (0xC82, 'V'), - (0xC84, 'X'), - (0xC85, 'V'), - (0xC8D, 'X'), - (0xC8E, 'V'), - (0xC91, 'X'), - (0xC92, 'V'), - (0xCA9, 'X'), - (0xCAA, 'V'), - (0xCB4, 'X'), - (0xCB5, 'V'), - (0xCBA, 'X'), - (0xCBC, 'V'), - (0xCC5, 'X'), - (0xCC6, 'V'), - (0xCC9, 'X'), - (0xCCA, 'V'), - (0xCCE, 'X'), - (0xCD5, 'V'), - (0xCD7, 'X'), - (0xCDE, 'V'), - (0xCDF, 'X'), - (0xCE0, 'V'), - (0xCE4, 'X'), - (0xCE6, 'V'), - (0xCF0, 'X'), - (0xCF1, 'V'), - (0xCF3, 'X'), - (0xD02, 'V'), - (0xD04, 'X'), - (0xD05, 'V'), - (0xD0D, 'X'), - (0xD0E, 'V'), - (0xD11, 'X'), - (0xD12, 'V'), - (0xD3B, 'X'), - (0xD3D, 'V'), - (0xD45, 'X'), - (0xD46, 'V'), - (0xD49, 'X'), - (0xD4A, 'V'), - (0xD4F, 'X'), - (0xD57, 'V'), - (0xD58, 'X'), - (0xD60, 'V'), - (0xD64, 'X'), - (0xD66, 'V'), - (0xD76, 'X'), - (0xD79, 'V'), - (0xD80, 'X'), - (0xD82, 'V'), - (0xD84, 'X'), - (0xD85, 'V'), - (0xD97, 'X'), - (0xD9A, 'V'), - (0xDB2, 'X'), - (0xDB3, 'V'), - (0xDBC, 'X'), - (0xDBD, 'V'), - (0xDBE, 'X'), - (0xDC0, 'V'), - (0xDC7, 'X'), - (0xDCA, 'V'), - (0xDCB, 'X'), - (0xDCF, 'V'), - (0xDD5, 'X'), - (0xDD6, 'V'), - (0xDD7, 'X'), - (0xDD8, 'V'), - (0xDE0, 'X'), - (0xDF2, 'V'), - (0xDF5, 'X'), - (0xE01, 'V'), - (0xE33, 'M', u'ํา'), - (0xE34, 'V'), - (0xE3B, 'X'), - (0xE3F, 'V'), - (0xE5C, 'X'), - (0xE81, 'V'), - (0xE83, 'X'), - (0xE84, 'V'), - (0xE85, 'X'), - (0xE87, 'V'), - ] - -def _seg_13(): - return [ - (0xE89, 'X'), - (0xE8A, 'V'), - (0xE8B, 'X'), - (0xE8D, 'V'), - (0xE8E, 'X'), - (0xE94, 'V'), - (0xE98, 'X'), - (0xE99, 'V'), - (0xEA0, 'X'), - (0xEA1, 'V'), - (0xEA4, 'X'), - (0xEA5, 'V'), - (0xEA6, 'X'), - (0xEA7, 'V'), - (0xEA8, 'X'), - (0xEAA, 'V'), - (0xEAC, 'X'), - (0xEAD, 'V'), - (0xEB3, 'M', u'ໍາ'), - (0xEB4, 'V'), - (0xEBA, 'X'), - (0xEBB, 'V'), - (0xEBE, 'X'), - (0xEC0, 'V'), - (0xEC5, 'X'), - (0xEC6, 'V'), - (0xEC7, 'X'), - (0xEC8, 'V'), - (0xECE, 'X'), - (0xED0, 'V'), - (0xEDA, 'X'), - (0xEDC, 'M', u'ຫນ'), - (0xEDD, 'M', u'ຫມ'), - (0xEDE, 'V'), - (0xEE0, 'X'), - (0xF00, 'V'), - (0xF0C, 'M', u'་'), - (0xF0D, 'V'), - (0xF43, 'M', u'གྷ'), - (0xF44, 'V'), - (0xF48, 'X'), - (0xF49, 'V'), - (0xF4D, 'M', u'ཌྷ'), - (0xF4E, 'V'), - (0xF52, 'M', u'དྷ'), - (0xF53, 'V'), - (0xF57, 'M', u'བྷ'), - (0xF58, 'V'), - (0xF5C, 'M', u'ཛྷ'), - (0xF5D, 'V'), - (0xF69, 'M', u'ཀྵ'), - (0xF6A, 'V'), - (0xF6D, 'X'), - (0xF71, 'V'), - (0xF73, 'M', u'ཱི'), - (0xF74, 'V'), - (0xF75, 'M', u'ཱུ'), - (0xF76, 'M', u'ྲྀ'), - (0xF77, 'M', u'ྲཱྀ'), - (0xF78, 'M', u'ླྀ'), - (0xF79, 'M', u'ླཱྀ'), - (0xF7A, 'V'), - (0xF81, 'M', u'ཱྀ'), - (0xF82, 'V'), - (0xF93, 'M', u'ྒྷ'), - (0xF94, 'V'), - (0xF98, 'X'), - (0xF99, 'V'), - (0xF9D, 'M', u'ྜྷ'), - (0xF9E, 'V'), - (0xFA2, 'M', u'ྡྷ'), - (0xFA3, 'V'), - (0xFA7, 'M', u'ྦྷ'), - (0xFA8, 'V'), - (0xFAC, 'M', u'ྫྷ'), - (0xFAD, 'V'), - (0xFB9, 'M', u'ྐྵ'), - (0xFBA, 'V'), - (0xFBD, 'X'), - (0xFBE, 'V'), - (0xFCD, 'X'), - (0xFCE, 'V'), - (0xFDB, 'X'), - (0x1000, 'V'), - (0x10A0, 'X'), - (0x10C7, 'M', u'ⴧ'), - (0x10C8, 'X'), - (0x10CD, 'M', u'ⴭ'), - (0x10CE, 'X'), - (0x10D0, 'V'), - (0x10FC, 'M', u'ნ'), - (0x10FD, 'V'), - (0x115F, 'X'), - (0x1161, 'V'), - (0x1249, 'X'), - (0x124A, 'V'), - (0x124E, 'X'), - (0x1250, 'V'), - (0x1257, 'X'), - (0x1258, 'V'), - ] - -def _seg_14(): - return [ - (0x1259, 'X'), - (0x125A, 'V'), - (0x125E, 'X'), - (0x1260, 'V'), - (0x1289, 'X'), - (0x128A, 'V'), - (0x128E, 'X'), - (0x1290, 'V'), - (0x12B1, 'X'), - (0x12B2, 'V'), - (0x12B6, 'X'), - (0x12B8, 'V'), - (0x12BF, 'X'), - (0x12C0, 'V'), - (0x12C1, 'X'), - (0x12C2, 'V'), - (0x12C6, 'X'), - (0x12C8, 'V'), - (0x12D7, 'X'), - (0x12D8, 'V'), - (0x1311, 'X'), - (0x1312, 'V'), - (0x1316, 'X'), - (0x1318, 'V'), - (0x135B, 'X'), - (0x135D, 'V'), - (0x137D, 'X'), - (0x1380, 'V'), - (0x139A, 'X'), - (0x13A0, 'V'), - (0x13F5, 'X'), - (0x1400, 'V'), - (0x1680, 'X'), - (0x1681, 'V'), - (0x169D, 'X'), - (0x16A0, 'V'), - (0x16F1, 'X'), - (0x1700, 'V'), - (0x170D, 'X'), - (0x170E, 'V'), - (0x1715, 'X'), - (0x1720, 'V'), - (0x1737, 'X'), - (0x1740, 'V'), - (0x1754, 'X'), - (0x1760, 'V'), - (0x176D, 'X'), - (0x176E, 'V'), - (0x1771, 'X'), - (0x1772, 'V'), - (0x1774, 'X'), - (0x1780, 'V'), - (0x17B4, 'X'), - (0x17B6, 'V'), - (0x17DE, 'X'), - (0x17E0, 'V'), - (0x17EA, 'X'), - (0x17F0, 'V'), - (0x17FA, 'X'), - (0x1800, 'V'), - (0x1806, 'X'), - (0x1807, 'V'), - (0x180B, 'I'), - (0x180E, 'X'), - (0x1810, 'V'), - (0x181A, 'X'), - (0x1820, 'V'), - (0x1878, 'X'), - (0x1880, 'V'), - (0x18AB, 'X'), - (0x18B0, 'V'), - (0x18F6, 'X'), - (0x1900, 'V'), - (0x191D, 'X'), - (0x1920, 'V'), - (0x192C, 'X'), - (0x1930, 'V'), - (0x193C, 'X'), - (0x1940, 'V'), - (0x1941, 'X'), - (0x1944, 'V'), - (0x196E, 'X'), - (0x1970, 'V'), - (0x1975, 'X'), - (0x1980, 'V'), - (0x19AC, 'X'), - (0x19B0, 'V'), - (0x19CA, 'X'), - (0x19D0, 'V'), - (0x19DB, 'X'), - (0x19DE, 'V'), - (0x1A1C, 'X'), - (0x1A1E, 'V'), - (0x1A5F, 'X'), - (0x1A60, 'V'), - (0x1A7D, 'X'), - (0x1A7F, 'V'), - (0x1A8A, 'X'), - (0x1A90, 'V'), - (0x1A9A, 'X'), - ] - -def _seg_15(): - return [ - (0x1AA0, 'V'), - (0x1AAE, 'X'), - (0x1B00, 'V'), - (0x1B4C, 'X'), - (0x1B50, 'V'), - (0x1B7D, 'X'), - (0x1B80, 'V'), - (0x1BF4, 'X'), - (0x1BFC, 'V'), - (0x1C38, 'X'), - (0x1C3B, 'V'), - (0x1C4A, 'X'), - (0x1C4D, 'V'), - (0x1C80, 'X'), - (0x1CC0, 'V'), - (0x1CC8, 'X'), - (0x1CD0, 'V'), - (0x1CF7, 'X'), - (0x1D00, 'V'), - (0x1D2C, 'M', u'a'), - (0x1D2D, 'M', u'æ'), - (0x1D2E, 'M', u'b'), - (0x1D2F, 'V'), - (0x1D30, 'M', u'd'), - (0x1D31, 'M', u'e'), - (0x1D32, 'M', u'ǝ'), - (0x1D33, 'M', u'g'), - (0x1D34, 'M', u'h'), - (0x1D35, 'M', u'i'), - (0x1D36, 'M', u'j'), - (0x1D37, 'M', u'k'), - (0x1D38, 'M', u'l'), - (0x1D39, 'M', u'm'), - (0x1D3A, 'M', u'n'), - (0x1D3B, 'V'), - (0x1D3C, 'M', u'o'), - (0x1D3D, 'M', u'ȣ'), - (0x1D3E, 'M', u'p'), - (0x1D3F, 'M', u'r'), - (0x1D40, 'M', u't'), - (0x1D41, 'M', u'u'), - (0x1D42, 'M', u'w'), - (0x1D43, 'M', u'a'), - (0x1D44, 'M', u'ɐ'), - (0x1D45, 'M', u'ɑ'), - (0x1D46, 'M', u'ᴂ'), - (0x1D47, 'M', u'b'), - (0x1D48, 'M', u'd'), - (0x1D49, 'M', u'e'), - (0x1D4A, 'M', u'ə'), - (0x1D4B, 'M', u'ɛ'), - (0x1D4C, 'M', u'ɜ'), - (0x1D4D, 'M', u'g'), - (0x1D4E, 'V'), - (0x1D4F, 'M', u'k'), - (0x1D50, 'M', u'm'), - (0x1D51, 'M', u'ŋ'), - (0x1D52, 'M', u'o'), - (0x1D53, 'M', u'ɔ'), - (0x1D54, 'M', u'ᴖ'), - (0x1D55, 'M', u'ᴗ'), - (0x1D56, 'M', u'p'), - (0x1D57, 'M', u't'), - (0x1D58, 'M', u'u'), - (0x1D59, 'M', u'ᴝ'), - (0x1D5A, 'M', u'ɯ'), - (0x1D5B, 'M', u'v'), - (0x1D5C, 'M', u'ᴥ'), - (0x1D5D, 'M', u'β'), - (0x1D5E, 'M', u'γ'), - (0x1D5F, 'M', u'δ'), - (0x1D60, 'M', u'φ'), - (0x1D61, 'M', u'χ'), - (0x1D62, 'M', u'i'), - (0x1D63, 'M', u'r'), - (0x1D64, 'M', u'u'), - (0x1D65, 'M', u'v'), - (0x1D66, 'M', u'β'), - (0x1D67, 'M', u'γ'), - (0x1D68, 'M', u'ρ'), - (0x1D69, 'M', u'φ'), - (0x1D6A, 'M', u'χ'), - (0x1D6B, 'V'), - (0x1D78, 'M', u'н'), - (0x1D79, 'V'), - (0x1D9B, 'M', u'ɒ'), - (0x1D9C, 'M', u'c'), - (0x1D9D, 'M', u'ɕ'), - (0x1D9E, 'M', u'ð'), - (0x1D9F, 'M', u'ɜ'), - (0x1DA0, 'M', u'f'), - (0x1DA1, 'M', u'ɟ'), - (0x1DA2, 'M', u'ɡ'), - (0x1DA3, 'M', u'ɥ'), - (0x1DA4, 'M', u'ɨ'), - (0x1DA5, 'M', u'ɩ'), - (0x1DA6, 'M', u'ɪ'), - (0x1DA7, 'M', u'ᵻ'), - (0x1DA8, 'M', u'ʝ'), - (0x1DA9, 'M', u'ɭ'), - ] - -def _seg_16(): - return [ - (0x1DAA, 'M', u'ᶅ'), - (0x1DAB, 'M', u'ʟ'), - (0x1DAC, 'M', u'ɱ'), - (0x1DAD, 'M', u'ɰ'), - (0x1DAE, 'M', u'ɲ'), - (0x1DAF, 'M', u'ɳ'), - (0x1DB0, 'M', u'ɴ'), - (0x1DB1, 'M', u'ɵ'), - (0x1DB2, 'M', u'ɸ'), - (0x1DB3, 'M', u'ʂ'), - (0x1DB4, 'M', u'ʃ'), - (0x1DB5, 'M', u'ƫ'), - (0x1DB6, 'M', u'ʉ'), - (0x1DB7, 'M', u'ʊ'), - (0x1DB8, 'M', u'ᴜ'), - (0x1DB9, 'M', u'ʋ'), - (0x1DBA, 'M', u'ʌ'), - (0x1DBB, 'M', u'z'), - (0x1DBC, 'M', u'ʐ'), - (0x1DBD, 'M', u'ʑ'), - (0x1DBE, 'M', u'ʒ'), - (0x1DBF, 'M', u'θ'), - (0x1DC0, 'V'), - (0x1DE7, 'X'), - (0x1DFC, 'V'), - (0x1E00, 'M', u'ḁ'), - (0x1E01, 'V'), - (0x1E02, 'M', u'ḃ'), - (0x1E03, 'V'), - (0x1E04, 'M', u'ḅ'), - (0x1E05, 'V'), - (0x1E06, 'M', u'ḇ'), - (0x1E07, 'V'), - (0x1E08, 'M', u'ḉ'), - (0x1E09, 'V'), - (0x1E0A, 'M', u'ḋ'), - (0x1E0B, 'V'), - (0x1E0C, 'M', u'ḍ'), - (0x1E0D, 'V'), - (0x1E0E, 'M', u'ḏ'), - (0x1E0F, 'V'), - (0x1E10, 'M', u'ḑ'), - (0x1E11, 'V'), - (0x1E12, 'M', u'ḓ'), - (0x1E13, 'V'), - (0x1E14, 'M', u'ḕ'), - (0x1E15, 'V'), - (0x1E16, 'M', u'ḗ'), - (0x1E17, 'V'), - (0x1E18, 'M', u'ḙ'), - (0x1E19, 'V'), - (0x1E1A, 'M', u'ḛ'), - (0x1E1B, 'V'), - (0x1E1C, 'M', u'ḝ'), - (0x1E1D, 'V'), - (0x1E1E, 'M', u'ḟ'), - (0x1E1F, 'V'), - (0x1E20, 'M', u'ḡ'), - (0x1E21, 'V'), - (0x1E22, 'M', u'ḣ'), - (0x1E23, 'V'), - (0x1E24, 'M', u'ḥ'), - (0x1E25, 'V'), - (0x1E26, 'M', u'ḧ'), - (0x1E27, 'V'), - (0x1E28, 'M', u'ḩ'), - (0x1E29, 'V'), - (0x1E2A, 'M', u'ḫ'), - (0x1E2B, 'V'), - (0x1E2C, 'M', u'ḭ'), - (0x1E2D, 'V'), - (0x1E2E, 'M', u'ḯ'), - (0x1E2F, 'V'), - (0x1E30, 'M', u'ḱ'), - (0x1E31, 'V'), - (0x1E32, 'M', u'ḳ'), - (0x1E33, 'V'), - (0x1E34, 'M', u'ḵ'), - (0x1E35, 'V'), - (0x1E36, 'M', u'ḷ'), - (0x1E37, 'V'), - (0x1E38, 'M', u'ḹ'), - (0x1E39, 'V'), - (0x1E3A, 'M', u'ḻ'), - (0x1E3B, 'V'), - (0x1E3C, 'M', u'ḽ'), - (0x1E3D, 'V'), - (0x1E3E, 'M', u'ḿ'), - (0x1E3F, 'V'), - (0x1E40, 'M', u'ṁ'), - (0x1E41, 'V'), - (0x1E42, 'M', u'ṃ'), - (0x1E43, 'V'), - (0x1E44, 'M', u'ṅ'), - (0x1E45, 'V'), - (0x1E46, 'M', u'ṇ'), - (0x1E47, 'V'), - (0x1E48, 'M', u'ṉ'), - (0x1E49, 'V'), - (0x1E4A, 'M', u'ṋ'), - ] - -def _seg_17(): - return [ - (0x1E4B, 'V'), - (0x1E4C, 'M', u'ṍ'), - (0x1E4D, 'V'), - (0x1E4E, 'M', u'ṏ'), - (0x1E4F, 'V'), - (0x1E50, 'M', u'ṑ'), - (0x1E51, 'V'), - (0x1E52, 'M', u'ṓ'), - (0x1E53, 'V'), - (0x1E54, 'M', u'ṕ'), - (0x1E55, 'V'), - (0x1E56, 'M', u'ṗ'), - (0x1E57, 'V'), - (0x1E58, 'M', u'ṙ'), - (0x1E59, 'V'), - (0x1E5A, 'M', u'ṛ'), - (0x1E5B, 'V'), - (0x1E5C, 'M', u'ṝ'), - (0x1E5D, 'V'), - (0x1E5E, 'M', u'ṟ'), - (0x1E5F, 'V'), - (0x1E60, 'M', u'ṡ'), - (0x1E61, 'V'), - (0x1E62, 'M', u'ṣ'), - (0x1E63, 'V'), - (0x1E64, 'M', u'ṥ'), - (0x1E65, 'V'), - (0x1E66, 'M', u'ṧ'), - (0x1E67, 'V'), - (0x1E68, 'M', u'ṩ'), - (0x1E69, 'V'), - (0x1E6A, 'M', u'ṫ'), - (0x1E6B, 'V'), - (0x1E6C, 'M', u'ṭ'), - (0x1E6D, 'V'), - (0x1E6E, 'M', u'ṯ'), - (0x1E6F, 'V'), - (0x1E70, 'M', u'ṱ'), - (0x1E71, 'V'), - (0x1E72, 'M', u'ṳ'), - (0x1E73, 'V'), - (0x1E74, 'M', u'ṵ'), - (0x1E75, 'V'), - (0x1E76, 'M', u'ṷ'), - (0x1E77, 'V'), - (0x1E78, 'M', u'ṹ'), - (0x1E79, 'V'), - (0x1E7A, 'M', u'ṻ'), - (0x1E7B, 'V'), - (0x1E7C, 'M', u'ṽ'), - (0x1E7D, 'V'), - (0x1E7E, 'M', u'ṿ'), - (0x1E7F, 'V'), - (0x1E80, 'M', u'ẁ'), - (0x1E81, 'V'), - (0x1E82, 'M', u'ẃ'), - (0x1E83, 'V'), - (0x1E84, 'M', u'ẅ'), - (0x1E85, 'V'), - (0x1E86, 'M', u'ẇ'), - (0x1E87, 'V'), - (0x1E88, 'M', u'ẉ'), - (0x1E89, 'V'), - (0x1E8A, 'M', u'ẋ'), - (0x1E8B, 'V'), - (0x1E8C, 'M', u'ẍ'), - (0x1E8D, 'V'), - (0x1E8E, 'M', u'ẏ'), - (0x1E8F, 'V'), - (0x1E90, 'M', u'ẑ'), - (0x1E91, 'V'), - (0x1E92, 'M', u'ẓ'), - (0x1E93, 'V'), - (0x1E94, 'M', u'ẕ'), - (0x1E95, 'V'), - (0x1E9A, 'M', u'aʾ'), - (0x1E9B, 'M', u'ṡ'), - (0x1E9C, 'V'), - (0x1E9E, 'M', u'ss'), - (0x1E9F, 'V'), - (0x1EA0, 'M', u'ạ'), - (0x1EA1, 'V'), - (0x1EA2, 'M', u'ả'), - (0x1EA3, 'V'), - (0x1EA4, 'M', u'ấ'), - (0x1EA5, 'V'), - (0x1EA6, 'M', u'ầ'), - (0x1EA7, 'V'), - (0x1EA8, 'M', u'ẩ'), - (0x1EA9, 'V'), - (0x1EAA, 'M', u'ẫ'), - (0x1EAB, 'V'), - (0x1EAC, 'M', u'ậ'), - (0x1EAD, 'V'), - (0x1EAE, 'M', u'ắ'), - (0x1EAF, 'V'), - (0x1EB0, 'M', u'ằ'), - (0x1EB1, 'V'), - (0x1EB2, 'M', u'ẳ'), - (0x1EB3, 'V'), - ] - -def _seg_18(): - return [ - (0x1EB4, 'M', u'ẵ'), - (0x1EB5, 'V'), - (0x1EB6, 'M', u'ặ'), - (0x1EB7, 'V'), - (0x1EB8, 'M', u'ẹ'), - (0x1EB9, 'V'), - (0x1EBA, 'M', u'ẻ'), - (0x1EBB, 'V'), - (0x1EBC, 'M', u'ẽ'), - (0x1EBD, 'V'), - (0x1EBE, 'M', u'ế'), - (0x1EBF, 'V'), - (0x1EC0, 'M', u'ề'), - (0x1EC1, 'V'), - (0x1EC2, 'M', u'ể'), - (0x1EC3, 'V'), - (0x1EC4, 'M', u'ễ'), - (0x1EC5, 'V'), - (0x1EC6, 'M', u'ệ'), - (0x1EC7, 'V'), - (0x1EC8, 'M', u'ỉ'), - (0x1EC9, 'V'), - (0x1ECA, 'M', u'ị'), - (0x1ECB, 'V'), - (0x1ECC, 'M', u'ọ'), - (0x1ECD, 'V'), - (0x1ECE, 'M', u'ỏ'), - (0x1ECF, 'V'), - (0x1ED0, 'M', u'ố'), - (0x1ED1, 'V'), - (0x1ED2, 'M', u'ồ'), - (0x1ED3, 'V'), - (0x1ED4, 'M', u'ổ'), - (0x1ED5, 'V'), - (0x1ED6, 'M', u'ỗ'), - (0x1ED7, 'V'), - (0x1ED8, 'M', u'ộ'), - (0x1ED9, 'V'), - (0x1EDA, 'M', u'ớ'), - (0x1EDB, 'V'), - (0x1EDC, 'M', u'ờ'), - (0x1EDD, 'V'), - (0x1EDE, 'M', u'ở'), - (0x1EDF, 'V'), - (0x1EE0, 'M', u'ỡ'), - (0x1EE1, 'V'), - (0x1EE2, 'M', u'ợ'), - (0x1EE3, 'V'), - (0x1EE4, 'M', u'ụ'), - (0x1EE5, 'V'), - (0x1EE6, 'M', u'ủ'), - (0x1EE7, 'V'), - (0x1EE8, 'M', u'ứ'), - (0x1EE9, 'V'), - (0x1EEA, 'M', u'ừ'), - (0x1EEB, 'V'), - (0x1EEC, 'M', u'ử'), - (0x1EED, 'V'), - (0x1EEE, 'M', u'ữ'), - (0x1EEF, 'V'), - (0x1EF0, 'M', u'ự'), - (0x1EF1, 'V'), - (0x1EF2, 'M', u'ỳ'), - (0x1EF3, 'V'), - (0x1EF4, 'M', u'ỵ'), - (0x1EF5, 'V'), - (0x1EF6, 'M', u'ỷ'), - (0x1EF7, 'V'), - (0x1EF8, 'M', u'ỹ'), - (0x1EF9, 'V'), - (0x1EFA, 'M', u'ỻ'), - (0x1EFB, 'V'), - (0x1EFC, 'M', u'ỽ'), - (0x1EFD, 'V'), - (0x1EFE, 'M', u'ỿ'), - (0x1EFF, 'V'), - (0x1F08, 'M', u'ἀ'), - (0x1F09, 'M', u'ἁ'), - (0x1F0A, 'M', u'ἂ'), - (0x1F0B, 'M', u'ἃ'), - (0x1F0C, 'M', u'ἄ'), - (0x1F0D, 'M', u'ἅ'), - (0x1F0E, 'M', u'ἆ'), - (0x1F0F, 'M', u'ἇ'), - (0x1F10, 'V'), - (0x1F16, 'X'), - (0x1F18, 'M', u'ἐ'), - (0x1F19, 'M', u'ἑ'), - (0x1F1A, 'M', u'ἒ'), - (0x1F1B, 'M', u'ἓ'), - (0x1F1C, 'M', u'ἔ'), - (0x1F1D, 'M', u'ἕ'), - (0x1F1E, 'X'), - (0x1F20, 'V'), - (0x1F28, 'M', u'ἠ'), - (0x1F29, 'M', u'ἡ'), - (0x1F2A, 'M', u'ἢ'), - (0x1F2B, 'M', u'ἣ'), - (0x1F2C, 'M', u'ἤ'), - (0x1F2D, 'M', u'ἥ'), - ] - -def _seg_19(): - return [ - (0x1F2E, 'M', u'ἦ'), - (0x1F2F, 'M', u'ἧ'), - (0x1F30, 'V'), - (0x1F38, 'M', u'ἰ'), - (0x1F39, 'M', u'ἱ'), - (0x1F3A, 'M', u'ἲ'), - (0x1F3B, 'M', u'ἳ'), - (0x1F3C, 'M', u'ἴ'), - (0x1F3D, 'M', u'ἵ'), - (0x1F3E, 'M', u'ἶ'), - (0x1F3F, 'M', u'ἷ'), - (0x1F40, 'V'), - (0x1F46, 'X'), - (0x1F48, 'M', u'ὀ'), - (0x1F49, 'M', u'ὁ'), - (0x1F4A, 'M', u'ὂ'), - (0x1F4B, 'M', u'ὃ'), - (0x1F4C, 'M', u'ὄ'), - (0x1F4D, 'M', u'ὅ'), - (0x1F4E, 'X'), - (0x1F50, 'V'), - (0x1F58, 'X'), - (0x1F59, 'M', u'ὑ'), - (0x1F5A, 'X'), - (0x1F5B, 'M', u'ὓ'), - (0x1F5C, 'X'), - (0x1F5D, 'M', u'ὕ'), - (0x1F5E, 'X'), - (0x1F5F, 'M', u'ὗ'), - (0x1F60, 'V'), - (0x1F68, 'M', u'ὠ'), - (0x1F69, 'M', u'ὡ'), - (0x1F6A, 'M', u'ὢ'), - (0x1F6B, 'M', u'ὣ'), - (0x1F6C, 'M', u'ὤ'), - (0x1F6D, 'M', u'ὥ'), - (0x1F6E, 'M', u'ὦ'), - (0x1F6F, 'M', u'ὧ'), - (0x1F70, 'V'), - (0x1F71, 'M', u'ά'), - (0x1F72, 'V'), - (0x1F73, 'M', u'έ'), - (0x1F74, 'V'), - (0x1F75, 'M', u'ή'), - (0x1F76, 'V'), - (0x1F77, 'M', u'ί'), - (0x1F78, 'V'), - (0x1F79, 'M', u'ό'), - (0x1F7A, 'V'), - (0x1F7B, 'M', u'ύ'), - (0x1F7C, 'V'), - (0x1F7D, 'M', u'ώ'), - (0x1F7E, 'X'), - (0x1F80, 'M', u'ἀι'), - (0x1F81, 'M', u'ἁι'), - (0x1F82, 'M', u'ἂι'), - (0x1F83, 'M', u'ἃι'), - (0x1F84, 'M', u'ἄι'), - (0x1F85, 'M', u'ἅι'), - (0x1F86, 'M', u'ἆι'), - (0x1F87, 'M', u'ἇι'), - (0x1F88, 'M', u'ἀι'), - (0x1F89, 'M', u'ἁι'), - (0x1F8A, 'M', u'ἂι'), - (0x1F8B, 'M', u'ἃι'), - (0x1F8C, 'M', u'ἄι'), - (0x1F8D, 'M', u'ἅι'), - (0x1F8E, 'M', u'ἆι'), - (0x1F8F, 'M', u'ἇι'), - (0x1F90, 'M', u'ἠι'), - (0x1F91, 'M', u'ἡι'), - (0x1F92, 'M', u'ἢι'), - (0x1F93, 'M', u'ἣι'), - (0x1F94, 'M', u'ἤι'), - (0x1F95, 'M', u'ἥι'), - (0x1F96, 'M', u'ἦι'), - (0x1F97, 'M', u'ἧι'), - (0x1F98, 'M', u'ἠι'), - (0x1F99, 'M', u'ἡι'), - (0x1F9A, 'M', u'ἢι'), - (0x1F9B, 'M', u'ἣι'), - (0x1F9C, 'M', u'ἤι'), - (0x1F9D, 'M', u'ἥι'), - (0x1F9E, 'M', u'ἦι'), - (0x1F9F, 'M', u'ἧι'), - (0x1FA0, 'M', u'ὠι'), - (0x1FA1, 'M', u'ὡι'), - (0x1FA2, 'M', u'ὢι'), - (0x1FA3, 'M', u'ὣι'), - (0x1FA4, 'M', u'ὤι'), - (0x1FA5, 'M', u'ὥι'), - (0x1FA6, 'M', u'ὦι'), - (0x1FA7, 'M', u'ὧι'), - (0x1FA8, 'M', u'ὠι'), - (0x1FA9, 'M', u'ὡι'), - (0x1FAA, 'M', u'ὢι'), - (0x1FAB, 'M', u'ὣι'), - (0x1FAC, 'M', u'ὤι'), - (0x1FAD, 'M', u'ὥι'), - (0x1FAE, 'M', u'ὦι'), - ] - -def _seg_20(): - return [ - (0x1FAF, 'M', u'ὧι'), - (0x1FB0, 'V'), - (0x1FB2, 'M', u'ὰι'), - (0x1FB3, 'M', u'αι'), - (0x1FB4, 'M', u'άι'), - (0x1FB5, 'X'), - (0x1FB6, 'V'), - (0x1FB7, 'M', u'ᾶι'), - (0x1FB8, 'M', u'ᾰ'), - (0x1FB9, 'M', u'ᾱ'), - (0x1FBA, 'M', u'ὰ'), - (0x1FBB, 'M', u'ά'), - (0x1FBC, 'M', u'αι'), - (0x1FBD, '3', u' ̓'), - (0x1FBE, 'M', u'ι'), - (0x1FBF, '3', u' ̓'), - (0x1FC0, '3', u' ͂'), - (0x1FC1, '3', u' ̈͂'), - (0x1FC2, 'M', u'ὴι'), - (0x1FC3, 'M', u'ηι'), - (0x1FC4, 'M', u'ήι'), - (0x1FC5, 'X'), - (0x1FC6, 'V'), - (0x1FC7, 'M', u'ῆι'), - (0x1FC8, 'M', u'ὲ'), - (0x1FC9, 'M', u'έ'), - (0x1FCA, 'M', u'ὴ'), - (0x1FCB, 'M', u'ή'), - (0x1FCC, 'M', u'ηι'), - (0x1FCD, '3', u' ̓̀'), - (0x1FCE, '3', u' ̓́'), - (0x1FCF, '3', u' ̓͂'), - (0x1FD0, 'V'), - (0x1FD3, 'M', u'ΐ'), - (0x1FD4, 'X'), - (0x1FD6, 'V'), - (0x1FD8, 'M', u'ῐ'), - (0x1FD9, 'M', u'ῑ'), - (0x1FDA, 'M', u'ὶ'), - (0x1FDB, 'M', u'ί'), - (0x1FDC, 'X'), - (0x1FDD, '3', u' ̔̀'), - (0x1FDE, '3', u' ̔́'), - (0x1FDF, '3', u' ̔͂'), - (0x1FE0, 'V'), - (0x1FE3, 'M', u'ΰ'), - (0x1FE4, 'V'), - (0x1FE8, 'M', u'ῠ'), - (0x1FE9, 'M', u'ῡ'), - (0x1FEA, 'M', u'ὺ'), - (0x1FEB, 'M', u'ύ'), - (0x1FEC, 'M', u'ῥ'), - (0x1FED, '3', u' ̈̀'), - (0x1FEE, '3', u' ̈́'), - (0x1FEF, '3', u'`'), - (0x1FF0, 'X'), - (0x1FF2, 'M', u'ὼι'), - (0x1FF3, 'M', u'ωι'), - (0x1FF4, 'M', u'ώι'), - (0x1FF5, 'X'), - (0x1FF6, 'V'), - (0x1FF7, 'M', u'ῶι'), - (0x1FF8, 'M', u'ὸ'), - (0x1FF9, 'M', u'ό'), - (0x1FFA, 'M', u'ὼ'), - (0x1FFB, 'M', u'ώ'), - (0x1FFC, 'M', u'ωι'), - (0x1FFD, '3', u' ́'), - (0x1FFE, '3', u' ̔'), - (0x1FFF, 'X'), - (0x2000, '3', u' '), - (0x200B, 'I'), - (0x200C, 'D', u''), - (0x200E, 'X'), - (0x2010, 'V'), - (0x2011, 'M', u'‐'), - (0x2012, 'V'), - (0x2017, '3', u' ̳'), - (0x2018, 'V'), - (0x2024, 'X'), - (0x2027, 'V'), - (0x2028, 'X'), - (0x202F, '3', u' '), - (0x2030, 'V'), - (0x2033, 'M', u'′′'), - (0x2034, 'M', u'′′′'), - (0x2035, 'V'), - (0x2036, 'M', u'‵‵'), - (0x2037, 'M', u'‵‵‵'), - (0x2038, 'V'), - (0x203C, '3', u'!!'), - (0x203D, 'V'), - (0x203E, '3', u' ̅'), - (0x203F, 'V'), - (0x2047, '3', u'??'), - (0x2048, '3', u'?!'), - (0x2049, '3', u'!?'), - (0x204A, 'V'), - (0x2057, 'M', u'′′′′'), - (0x2058, 'V'), - ] - -def _seg_21(): - return [ - (0x205F, '3', u' '), - (0x2060, 'I'), - (0x2061, 'X'), - (0x2064, 'I'), - (0x2065, 'X'), - (0x2070, 'M', u'0'), - (0x2071, 'M', u'i'), - (0x2072, 'X'), - (0x2074, 'M', u'4'), - (0x2075, 'M', u'5'), - (0x2076, 'M', u'6'), - (0x2077, 'M', u'7'), - (0x2078, 'M', u'8'), - (0x2079, 'M', u'9'), - (0x207A, '3', u'+'), - (0x207B, 'M', u'−'), - (0x207C, '3', u'='), - (0x207D, '3', u'('), - (0x207E, '3', u')'), - (0x207F, 'M', u'n'), - (0x2080, 'M', u'0'), - (0x2081, 'M', u'1'), - (0x2082, 'M', u'2'), - (0x2083, 'M', u'3'), - (0x2084, 'M', u'4'), - (0x2085, 'M', u'5'), - (0x2086, 'M', u'6'), - (0x2087, 'M', u'7'), - (0x2088, 'M', u'8'), - (0x2089, 'M', u'9'), - (0x208A, '3', u'+'), - (0x208B, 'M', u'−'), - (0x208C, '3', u'='), - (0x208D, '3', u'('), - (0x208E, '3', u')'), - (0x208F, 'X'), - (0x2090, 'M', u'a'), - (0x2091, 'M', u'e'), - (0x2092, 'M', u'o'), - (0x2093, 'M', u'x'), - (0x2094, 'M', u'ə'), - (0x2095, 'M', u'h'), - (0x2096, 'M', u'k'), - (0x2097, 'M', u'l'), - (0x2098, 'M', u'm'), - (0x2099, 'M', u'n'), - (0x209A, 'M', u'p'), - (0x209B, 'M', u's'), - (0x209C, 'M', u't'), - (0x209D, 'X'), - (0x20A0, 'V'), - (0x20A8, 'M', u'rs'), - (0x20A9, 'V'), - (0x20BB, 'X'), - (0x20D0, 'V'), - (0x20F1, 'X'), - (0x2100, '3', u'a/c'), - (0x2101, '3', u'a/s'), - (0x2102, 'M', u'c'), - (0x2103, 'M', u'°c'), - (0x2104, 'V'), - (0x2105, '3', u'c/o'), - (0x2106, '3', u'c/u'), - (0x2107, 'M', u'ɛ'), - (0x2108, 'V'), - (0x2109, 'M', u'°f'), - (0x210A, 'M', u'g'), - (0x210B, 'M', u'h'), - (0x210F, 'M', u'ħ'), - (0x2110, 'M', u'i'), - (0x2112, 'M', u'l'), - (0x2114, 'V'), - (0x2115, 'M', u'n'), - (0x2116, 'M', u'no'), - (0x2117, 'V'), - (0x2119, 'M', u'p'), - (0x211A, 'M', u'q'), - (0x211B, 'M', u'r'), - (0x211E, 'V'), - (0x2120, 'M', u'sm'), - (0x2121, 'M', u'tel'), - (0x2122, 'M', u'tm'), - (0x2123, 'V'), - (0x2124, 'M', u'z'), - (0x2125, 'V'), - (0x2126, 'M', u'ω'), - (0x2127, 'V'), - (0x2128, 'M', u'z'), - (0x2129, 'V'), - (0x212A, 'M', u'k'), - (0x212B, 'M', u'å'), - (0x212C, 'M', u'b'), - (0x212D, 'M', u'c'), - (0x212E, 'V'), - (0x212F, 'M', u'e'), - (0x2131, 'M', u'f'), - (0x2132, 'X'), - (0x2133, 'M', u'm'), - (0x2134, 'M', u'o'), - (0x2135, 'M', u'א'), - ] - -def _seg_22(): - return [ - (0x2136, 'M', u'ב'), - (0x2137, 'M', u'ג'), - (0x2138, 'M', u'ד'), - (0x2139, 'M', u'i'), - (0x213A, 'V'), - (0x213B, 'M', u'fax'), - (0x213C, 'M', u'π'), - (0x213D, 'M', u'γ'), - (0x213F, 'M', u'π'), - (0x2140, 'M', u'∑'), - (0x2141, 'V'), - (0x2145, 'M', u'd'), - (0x2147, 'M', u'e'), - (0x2148, 'M', u'i'), - (0x2149, 'M', u'j'), - (0x214A, 'V'), - (0x2150, 'M', u'1⁄7'), - (0x2151, 'M', u'1⁄9'), - (0x2152, 'M', u'1⁄10'), - (0x2153, 'M', u'1⁄3'), - (0x2154, 'M', u'2⁄3'), - (0x2155, 'M', u'1⁄5'), - (0x2156, 'M', u'2⁄5'), - (0x2157, 'M', u'3⁄5'), - (0x2158, 'M', u'4⁄5'), - (0x2159, 'M', u'1⁄6'), - (0x215A, 'M', u'5⁄6'), - (0x215B, 'M', u'1⁄8'), - (0x215C, 'M', u'3⁄8'), - (0x215D, 'M', u'5⁄8'), - (0x215E, 'M', u'7⁄8'), - (0x215F, 'M', u'1⁄'), - (0x2160, 'M', u'i'), - (0x2161, 'M', u'ii'), - (0x2162, 'M', u'iii'), - (0x2163, 'M', u'iv'), - (0x2164, 'M', u'v'), - (0x2165, 'M', u'vi'), - (0x2166, 'M', u'vii'), - (0x2167, 'M', u'viii'), - (0x2168, 'M', u'ix'), - (0x2169, 'M', u'x'), - (0x216A, 'M', u'xi'), - (0x216B, 'M', u'xii'), - (0x216C, 'M', u'l'), - (0x216D, 'M', u'c'), - (0x216E, 'M', u'd'), - (0x216F, 'M', u'm'), - (0x2170, 'M', u'i'), - (0x2171, 'M', u'ii'), - (0x2172, 'M', u'iii'), - (0x2173, 'M', u'iv'), - (0x2174, 'M', u'v'), - (0x2175, 'M', u'vi'), - (0x2176, 'M', u'vii'), - (0x2177, 'M', u'viii'), - (0x2178, 'M', u'ix'), - (0x2179, 'M', u'x'), - (0x217A, 'M', u'xi'), - (0x217B, 'M', u'xii'), - (0x217C, 'M', u'l'), - (0x217D, 'M', u'c'), - (0x217E, 'M', u'd'), - (0x217F, 'M', u'm'), - (0x2180, 'V'), - (0x2183, 'X'), - (0x2184, 'V'), - (0x2189, 'M', u'0⁄3'), - (0x218A, 'X'), - (0x2190, 'V'), - (0x222C, 'M', u'∫∫'), - (0x222D, 'M', u'∫∫∫'), - (0x222E, 'V'), - (0x222F, 'M', u'∮∮'), - (0x2230, 'M', u'∮∮∮'), - (0x2231, 'V'), - (0x2260, '3'), - (0x2261, 'V'), - (0x226E, '3'), - (0x2270, 'V'), - (0x2329, 'M', u'〈'), - (0x232A, 'M', u'〉'), - (0x232B, 'V'), - (0x23F4, 'X'), - (0x2400, 'V'), - (0x2427, 'X'), - (0x2440, 'V'), - (0x244B, 'X'), - (0x2460, 'M', u'1'), - (0x2461, 'M', u'2'), - (0x2462, 'M', u'3'), - (0x2463, 'M', u'4'), - (0x2464, 'M', u'5'), - (0x2465, 'M', u'6'), - (0x2466, 'M', u'7'), - (0x2467, 'M', u'8'), - (0x2468, 'M', u'9'), - (0x2469, 'M', u'10'), - (0x246A, 'M', u'11'), - (0x246B, 'M', u'12'), - ] - -def _seg_23(): - return [ - (0x246C, 'M', u'13'), - (0x246D, 'M', u'14'), - (0x246E, 'M', u'15'), - (0x246F, 'M', u'16'), - (0x2470, 'M', u'17'), - (0x2471, 'M', u'18'), - (0x2472, 'M', u'19'), - (0x2473, 'M', u'20'), - (0x2474, '3', u'(1)'), - (0x2475, '3', u'(2)'), - (0x2476, '3', u'(3)'), - (0x2477, '3', u'(4)'), - (0x2478, '3', u'(5)'), - (0x2479, '3', u'(6)'), - (0x247A, '3', u'(7)'), - (0x247B, '3', u'(8)'), - (0x247C, '3', u'(9)'), - (0x247D, '3', u'(10)'), - (0x247E, '3', u'(11)'), - (0x247F, '3', u'(12)'), - (0x2480, '3', u'(13)'), - (0x2481, '3', u'(14)'), - (0x2482, '3', u'(15)'), - (0x2483, '3', u'(16)'), - (0x2484, '3', u'(17)'), - (0x2485, '3', u'(18)'), - (0x2486, '3', u'(19)'), - (0x2487, '3', u'(20)'), - (0x2488, 'X'), - (0x249C, '3', u'(a)'), - (0x249D, '3', u'(b)'), - (0x249E, '3', u'(c)'), - (0x249F, '3', u'(d)'), - (0x24A0, '3', u'(e)'), - (0x24A1, '3', u'(f)'), - (0x24A2, '3', u'(g)'), - (0x24A3, '3', u'(h)'), - (0x24A4, '3', u'(i)'), - (0x24A5, '3', u'(j)'), - (0x24A6, '3', u'(k)'), - (0x24A7, '3', u'(l)'), - (0x24A8, '3', u'(m)'), - (0x24A9, '3', u'(n)'), - (0x24AA, '3', u'(o)'), - (0x24AB, '3', u'(p)'), - (0x24AC, '3', u'(q)'), - (0x24AD, '3', u'(r)'), - (0x24AE, '3', u'(s)'), - (0x24AF, '3', u'(t)'), - (0x24B0, '3', u'(u)'), - (0x24B1, '3', u'(v)'), - (0x24B2, '3', u'(w)'), - (0x24B3, '3', u'(x)'), - (0x24B4, '3', u'(y)'), - (0x24B5, '3', u'(z)'), - (0x24B6, 'M', u'a'), - (0x24B7, 'M', u'b'), - (0x24B8, 'M', u'c'), - (0x24B9, 'M', u'd'), - (0x24BA, 'M', u'e'), - (0x24BB, 'M', u'f'), - (0x24BC, 'M', u'g'), - (0x24BD, 'M', u'h'), - (0x24BE, 'M', u'i'), - (0x24BF, 'M', u'j'), - (0x24C0, 'M', u'k'), - (0x24C1, 'M', u'l'), - (0x24C2, 'M', u'm'), - (0x24C3, 'M', u'n'), - (0x24C4, 'M', u'o'), - (0x24C5, 'M', u'p'), - (0x24C6, 'M', u'q'), - (0x24C7, 'M', u'r'), - (0x24C8, 'M', u's'), - (0x24C9, 'M', u't'), - (0x24CA, 'M', u'u'), - (0x24CB, 'M', u'v'), - (0x24CC, 'M', u'w'), - (0x24CD, 'M', u'x'), - (0x24CE, 'M', u'y'), - (0x24CF, 'M', u'z'), - (0x24D0, 'M', u'a'), - (0x24D1, 'M', u'b'), - (0x24D2, 'M', u'c'), - (0x24D3, 'M', u'd'), - (0x24D4, 'M', u'e'), - (0x24D5, 'M', u'f'), - (0x24D6, 'M', u'g'), - (0x24D7, 'M', u'h'), - (0x24D8, 'M', u'i'), - (0x24D9, 'M', u'j'), - (0x24DA, 'M', u'k'), - (0x24DB, 'M', u'l'), - (0x24DC, 'M', u'm'), - (0x24DD, 'M', u'n'), - (0x24DE, 'M', u'o'), - (0x24DF, 'M', u'p'), - (0x24E0, 'M', u'q'), - (0x24E1, 'M', u'r'), - (0x24E2, 'M', u's'), - ] - -def _seg_24(): - return [ - (0x24E3, 'M', u't'), - (0x24E4, 'M', u'u'), - (0x24E5, 'M', u'v'), - (0x24E6, 'M', u'w'), - (0x24E7, 'M', u'x'), - (0x24E8, 'M', u'y'), - (0x24E9, 'M', u'z'), - (0x24EA, 'M', u'0'), - (0x24EB, 'V'), - (0x2700, 'X'), - (0x2701, 'V'), - (0x2A0C, 'M', u'∫∫∫∫'), - (0x2A0D, 'V'), - (0x2A74, '3', u'::='), - (0x2A75, '3', u'=='), - (0x2A76, '3', u'==='), - (0x2A77, 'V'), - (0x2ADC, 'M', u'⫝̸'), - (0x2ADD, 'V'), - (0x2B4D, 'X'), - (0x2B50, 'V'), - (0x2B5A, 'X'), - (0x2C00, 'M', u'ⰰ'), - (0x2C01, 'M', u'ⰱ'), - (0x2C02, 'M', u'ⰲ'), - (0x2C03, 'M', u'ⰳ'), - (0x2C04, 'M', u'ⰴ'), - (0x2C05, 'M', u'ⰵ'), - (0x2C06, 'M', u'ⰶ'), - (0x2C07, 'M', u'ⰷ'), - (0x2C08, 'M', u'ⰸ'), - (0x2C09, 'M', u'ⰹ'), - (0x2C0A, 'M', u'ⰺ'), - (0x2C0B, 'M', u'ⰻ'), - (0x2C0C, 'M', u'ⰼ'), - (0x2C0D, 'M', u'ⰽ'), - (0x2C0E, 'M', u'ⰾ'), - (0x2C0F, 'M', u'ⰿ'), - (0x2C10, 'M', u'ⱀ'), - (0x2C11, 'M', u'ⱁ'), - (0x2C12, 'M', u'ⱂ'), - (0x2C13, 'M', u'ⱃ'), - (0x2C14, 'M', u'ⱄ'), - (0x2C15, 'M', u'ⱅ'), - (0x2C16, 'M', u'ⱆ'), - (0x2C17, 'M', u'ⱇ'), - (0x2C18, 'M', u'ⱈ'), - (0x2C19, 'M', u'ⱉ'), - (0x2C1A, 'M', u'ⱊ'), - (0x2C1B, 'M', u'ⱋ'), - (0x2C1C, 'M', u'ⱌ'), - (0x2C1D, 'M', u'ⱍ'), - (0x2C1E, 'M', u'ⱎ'), - (0x2C1F, 'M', u'ⱏ'), - (0x2C20, 'M', u'ⱐ'), - (0x2C21, 'M', u'ⱑ'), - (0x2C22, 'M', u'ⱒ'), - (0x2C23, 'M', u'ⱓ'), - (0x2C24, 'M', u'ⱔ'), - (0x2C25, 'M', u'ⱕ'), - (0x2C26, 'M', u'ⱖ'), - (0x2C27, 'M', u'ⱗ'), - (0x2C28, 'M', u'ⱘ'), - (0x2C29, 'M', u'ⱙ'), - (0x2C2A, 'M', u'ⱚ'), - (0x2C2B, 'M', u'ⱛ'), - (0x2C2C, 'M', u'ⱜ'), - (0x2C2D, 'M', u'ⱝ'), - (0x2C2E, 'M', u'ⱞ'), - (0x2C2F, 'X'), - (0x2C30, 'V'), - (0x2C5F, 'X'), - (0x2C60, 'M', u'ⱡ'), - (0x2C61, 'V'), - (0x2C62, 'M', u'ɫ'), - (0x2C63, 'M', u'ᵽ'), - (0x2C64, 'M', u'ɽ'), - (0x2C65, 'V'), - (0x2C67, 'M', u'ⱨ'), - (0x2C68, 'V'), - (0x2C69, 'M', u'ⱪ'), - (0x2C6A, 'V'), - (0x2C6B, 'M', u'ⱬ'), - (0x2C6C, 'V'), - (0x2C6D, 'M', u'ɑ'), - (0x2C6E, 'M', u'ɱ'), - (0x2C6F, 'M', u'ɐ'), - (0x2C70, 'M', u'ɒ'), - (0x2C71, 'V'), - (0x2C72, 'M', u'ⱳ'), - (0x2C73, 'V'), - (0x2C75, 'M', u'ⱶ'), - (0x2C76, 'V'), - (0x2C7C, 'M', u'j'), - (0x2C7D, 'M', u'v'), - (0x2C7E, 'M', u'ȿ'), - (0x2C7F, 'M', u'ɀ'), - (0x2C80, 'M', u'ⲁ'), - (0x2C81, 'V'), - (0x2C82, 'M', u'ⲃ'), - ] - -def _seg_25(): - return [ - (0x2C83, 'V'), - (0x2C84, 'M', u'ⲅ'), - (0x2C85, 'V'), - (0x2C86, 'M', u'ⲇ'), - (0x2C87, 'V'), - (0x2C88, 'M', u'ⲉ'), - (0x2C89, 'V'), - (0x2C8A, 'M', u'ⲋ'), - (0x2C8B, 'V'), - (0x2C8C, 'M', u'ⲍ'), - (0x2C8D, 'V'), - (0x2C8E, 'M', u'ⲏ'), - (0x2C8F, 'V'), - (0x2C90, 'M', u'ⲑ'), - (0x2C91, 'V'), - (0x2C92, 'M', u'ⲓ'), - (0x2C93, 'V'), - (0x2C94, 'M', u'ⲕ'), - (0x2C95, 'V'), - (0x2C96, 'M', u'ⲗ'), - (0x2C97, 'V'), - (0x2C98, 'M', u'ⲙ'), - (0x2C99, 'V'), - (0x2C9A, 'M', u'ⲛ'), - (0x2C9B, 'V'), - (0x2C9C, 'M', u'ⲝ'), - (0x2C9D, 'V'), - (0x2C9E, 'M', u'ⲟ'), - (0x2C9F, 'V'), - (0x2CA0, 'M', u'ⲡ'), - (0x2CA1, 'V'), - (0x2CA2, 'M', u'ⲣ'), - (0x2CA3, 'V'), - (0x2CA4, 'M', u'ⲥ'), - (0x2CA5, 'V'), - (0x2CA6, 'M', u'ⲧ'), - (0x2CA7, 'V'), - (0x2CA8, 'M', u'ⲩ'), - (0x2CA9, 'V'), - (0x2CAA, 'M', u'ⲫ'), - (0x2CAB, 'V'), - (0x2CAC, 'M', u'ⲭ'), - (0x2CAD, 'V'), - (0x2CAE, 'M', u'ⲯ'), - (0x2CAF, 'V'), - (0x2CB0, 'M', u'ⲱ'), - (0x2CB1, 'V'), - (0x2CB2, 'M', u'ⲳ'), - (0x2CB3, 'V'), - (0x2CB4, 'M', u'ⲵ'), - (0x2CB5, 'V'), - (0x2CB6, 'M', u'ⲷ'), - (0x2CB7, 'V'), - (0x2CB8, 'M', u'ⲹ'), - (0x2CB9, 'V'), - (0x2CBA, 'M', u'ⲻ'), - (0x2CBB, 'V'), - (0x2CBC, 'M', u'ⲽ'), - (0x2CBD, 'V'), - (0x2CBE, 'M', u'ⲿ'), - (0x2CBF, 'V'), - (0x2CC0, 'M', u'ⳁ'), - (0x2CC1, 'V'), - (0x2CC2, 'M', u'ⳃ'), - (0x2CC3, 'V'), - (0x2CC4, 'M', u'ⳅ'), - (0x2CC5, 'V'), - (0x2CC6, 'M', u'ⳇ'), - (0x2CC7, 'V'), - (0x2CC8, 'M', u'ⳉ'), - (0x2CC9, 'V'), - (0x2CCA, 'M', u'ⳋ'), - (0x2CCB, 'V'), - (0x2CCC, 'M', u'ⳍ'), - (0x2CCD, 'V'), - (0x2CCE, 'M', u'ⳏ'), - (0x2CCF, 'V'), - (0x2CD0, 'M', u'ⳑ'), - (0x2CD1, 'V'), - (0x2CD2, 'M', u'ⳓ'), - (0x2CD3, 'V'), - (0x2CD4, 'M', u'ⳕ'), - (0x2CD5, 'V'), - (0x2CD6, 'M', u'ⳗ'), - (0x2CD7, 'V'), - (0x2CD8, 'M', u'ⳙ'), - (0x2CD9, 'V'), - (0x2CDA, 'M', u'ⳛ'), - (0x2CDB, 'V'), - (0x2CDC, 'M', u'ⳝ'), - (0x2CDD, 'V'), - (0x2CDE, 'M', u'ⳟ'), - (0x2CDF, 'V'), - (0x2CE0, 'M', u'ⳡ'), - (0x2CE1, 'V'), - (0x2CE2, 'M', u'ⳣ'), - (0x2CE3, 'V'), - (0x2CEB, 'M', u'ⳬ'), - (0x2CEC, 'V'), - (0x2CED, 'M', u'ⳮ'), - ] - -def _seg_26(): - return [ - (0x2CEE, 'V'), - (0x2CF2, 'M', u'ⳳ'), - (0x2CF3, 'V'), - (0x2CF4, 'X'), - (0x2CF9, 'V'), - (0x2D26, 'X'), - (0x2D27, 'V'), - (0x2D28, 'X'), - (0x2D2D, 'V'), - (0x2D2E, 'X'), - (0x2D30, 'V'), - (0x2D68, 'X'), - (0x2D6F, 'M', u'ⵡ'), - (0x2D70, 'V'), - (0x2D71, 'X'), - (0x2D7F, 'V'), - (0x2D97, 'X'), - (0x2DA0, 'V'), - (0x2DA7, 'X'), - (0x2DA8, 'V'), - (0x2DAF, 'X'), - (0x2DB0, 'V'), - (0x2DB7, 'X'), - (0x2DB8, 'V'), - (0x2DBF, 'X'), - (0x2DC0, 'V'), - (0x2DC7, 'X'), - (0x2DC8, 'V'), - (0x2DCF, 'X'), - (0x2DD0, 'V'), - (0x2DD7, 'X'), - (0x2DD8, 'V'), - (0x2DDF, 'X'), - (0x2DE0, 'V'), - (0x2E3C, 'X'), - (0x2E80, 'V'), - (0x2E9A, 'X'), - (0x2E9B, 'V'), - (0x2E9F, 'M', u'母'), - (0x2EA0, 'V'), - (0x2EF3, 'M', u'龟'), - (0x2EF4, 'X'), - (0x2F00, 'M', u'一'), - (0x2F01, 'M', u'丨'), - (0x2F02, 'M', u'丶'), - (0x2F03, 'M', u'丿'), - (0x2F04, 'M', u'乙'), - (0x2F05, 'M', u'亅'), - (0x2F06, 'M', u'二'), - (0x2F07, 'M', u'亠'), - (0x2F08, 'M', u'人'), - (0x2F09, 'M', u'儿'), - (0x2F0A, 'M', u'入'), - (0x2F0B, 'M', u'八'), - (0x2F0C, 'M', u'冂'), - (0x2F0D, 'M', u'冖'), - (0x2F0E, 'M', u'冫'), - (0x2F0F, 'M', u'几'), - (0x2F10, 'M', u'凵'), - (0x2F11, 'M', u'刀'), - (0x2F12, 'M', u'力'), - (0x2F13, 'M', u'勹'), - (0x2F14, 'M', u'匕'), - (0x2F15, 'M', u'匚'), - (0x2F16, 'M', u'匸'), - (0x2F17, 'M', u'十'), - (0x2F18, 'M', u'卜'), - (0x2F19, 'M', u'卩'), - (0x2F1A, 'M', u'厂'), - (0x2F1B, 'M', u'厶'), - (0x2F1C, 'M', u'又'), - (0x2F1D, 'M', u'口'), - (0x2F1E, 'M', u'囗'), - (0x2F1F, 'M', u'土'), - (0x2F20, 'M', u'士'), - (0x2F21, 'M', u'夂'), - (0x2F22, 'M', u'夊'), - (0x2F23, 'M', u'夕'), - (0x2F24, 'M', u'大'), - (0x2F25, 'M', u'女'), - (0x2F26, 'M', u'子'), - (0x2F27, 'M', u'宀'), - (0x2F28, 'M', u'寸'), - (0x2F29, 'M', u'小'), - (0x2F2A, 'M', u'尢'), - (0x2F2B, 'M', u'尸'), - (0x2F2C, 'M', u'屮'), - (0x2F2D, 'M', u'山'), - (0x2F2E, 'M', u'巛'), - (0x2F2F, 'M', u'工'), - (0x2F30, 'M', u'己'), - (0x2F31, 'M', u'巾'), - (0x2F32, 'M', u'干'), - (0x2F33, 'M', u'幺'), - (0x2F34, 'M', u'广'), - (0x2F35, 'M', u'廴'), - (0x2F36, 'M', u'廾'), - (0x2F37, 'M', u'弋'), - (0x2F38, 'M', u'弓'), - (0x2F39, 'M', u'彐'), - ] - -def _seg_27(): - return [ - (0x2F3A, 'M', u'彡'), - (0x2F3B, 'M', u'彳'), - (0x2F3C, 'M', u'心'), - (0x2F3D, 'M', u'戈'), - (0x2F3E, 'M', u'戶'), - (0x2F3F, 'M', u'手'), - (0x2F40, 'M', u'支'), - (0x2F41, 'M', u'攴'), - (0x2F42, 'M', u'文'), - (0x2F43, 'M', u'斗'), - (0x2F44, 'M', u'斤'), - (0x2F45, 'M', u'方'), - (0x2F46, 'M', u'无'), - (0x2F47, 'M', u'日'), - (0x2F48, 'M', u'曰'), - (0x2F49, 'M', u'月'), - (0x2F4A, 'M', u'木'), - (0x2F4B, 'M', u'欠'), - (0x2F4C, 'M', u'止'), - (0x2F4D, 'M', u'歹'), - (0x2F4E, 'M', u'殳'), - (0x2F4F, 'M', u'毋'), - (0x2F50, 'M', u'比'), - (0x2F51, 'M', u'毛'), - (0x2F52, 'M', u'氏'), - (0x2F53, 'M', u'气'), - (0x2F54, 'M', u'水'), - (0x2F55, 'M', u'火'), - (0x2F56, 'M', u'爪'), - (0x2F57, 'M', u'父'), - (0x2F58, 'M', u'爻'), - (0x2F59, 'M', u'爿'), - (0x2F5A, 'M', u'片'), - (0x2F5B, 'M', u'牙'), - (0x2F5C, 'M', u'牛'), - (0x2F5D, 'M', u'犬'), - (0x2F5E, 'M', u'玄'), - (0x2F5F, 'M', u'玉'), - (0x2F60, 'M', u'瓜'), - (0x2F61, 'M', u'瓦'), - (0x2F62, 'M', u'甘'), - (0x2F63, 'M', u'生'), - (0x2F64, 'M', u'用'), - (0x2F65, 'M', u'田'), - (0x2F66, 'M', u'疋'), - (0x2F67, 'M', u'疒'), - (0x2F68, 'M', u'癶'), - (0x2F69, 'M', u'白'), - (0x2F6A, 'M', u'皮'), - (0x2F6B, 'M', u'皿'), - (0x2F6C, 'M', u'目'), - (0x2F6D, 'M', u'矛'), - (0x2F6E, 'M', u'矢'), - (0x2F6F, 'M', u'石'), - (0x2F70, 'M', u'示'), - (0x2F71, 'M', u'禸'), - (0x2F72, 'M', u'禾'), - (0x2F73, 'M', u'穴'), - (0x2F74, 'M', u'立'), - (0x2F75, 'M', u'竹'), - (0x2F76, 'M', u'米'), - (0x2F77, 'M', u'糸'), - (0x2F78, 'M', u'缶'), - (0x2F79, 'M', u'网'), - (0x2F7A, 'M', u'羊'), - (0x2F7B, 'M', u'羽'), - (0x2F7C, 'M', u'老'), - (0x2F7D, 'M', u'而'), - (0x2F7E, 'M', u'耒'), - (0x2F7F, 'M', u'耳'), - (0x2F80, 'M', u'聿'), - (0x2F81, 'M', u'肉'), - (0x2F82, 'M', u'臣'), - (0x2F83, 'M', u'自'), - (0x2F84, 'M', u'至'), - (0x2F85, 'M', u'臼'), - (0x2F86, 'M', u'舌'), - (0x2F87, 'M', u'舛'), - (0x2F88, 'M', u'舟'), - (0x2F89, 'M', u'艮'), - (0x2F8A, 'M', u'色'), - (0x2F8B, 'M', u'艸'), - (0x2F8C, 'M', u'虍'), - (0x2F8D, 'M', u'虫'), - (0x2F8E, 'M', u'血'), - (0x2F8F, 'M', u'行'), - (0x2F90, 'M', u'衣'), - (0x2F91, 'M', u'襾'), - (0x2F92, 'M', u'見'), - (0x2F93, 'M', u'角'), - (0x2F94, 'M', u'言'), - (0x2F95, 'M', u'谷'), - (0x2F96, 'M', u'豆'), - (0x2F97, 'M', u'豕'), - (0x2F98, 'M', u'豸'), - (0x2F99, 'M', u'貝'), - (0x2F9A, 'M', u'赤'), - (0x2F9B, 'M', u'走'), - (0x2F9C, 'M', u'足'), - (0x2F9D, 'M', u'身'), - ] - -def _seg_28(): - return [ - (0x2F9E, 'M', u'車'), - (0x2F9F, 'M', u'辛'), - (0x2FA0, 'M', u'辰'), - (0x2FA1, 'M', u'辵'), - (0x2FA2, 'M', u'邑'), - (0x2FA3, 'M', u'酉'), - (0x2FA4, 'M', u'釆'), - (0x2FA5, 'M', u'里'), - (0x2FA6, 'M', u'金'), - (0x2FA7, 'M', u'長'), - (0x2FA8, 'M', u'門'), - (0x2FA9, 'M', u'阜'), - (0x2FAA, 'M', u'隶'), - (0x2FAB, 'M', u'隹'), - (0x2FAC, 'M', u'雨'), - (0x2FAD, 'M', u'靑'), - (0x2FAE, 'M', u'非'), - (0x2FAF, 'M', u'面'), - (0x2FB0, 'M', u'革'), - (0x2FB1, 'M', u'韋'), - (0x2FB2, 'M', u'韭'), - (0x2FB3, 'M', u'音'), - (0x2FB4, 'M', u'頁'), - (0x2FB5, 'M', u'風'), - (0x2FB6, 'M', u'飛'), - (0x2FB7, 'M', u'食'), - (0x2FB8, 'M', u'首'), - (0x2FB9, 'M', u'香'), - (0x2FBA, 'M', u'馬'), - (0x2FBB, 'M', u'骨'), - (0x2FBC, 'M', u'高'), - (0x2FBD, 'M', u'髟'), - (0x2FBE, 'M', u'鬥'), - (0x2FBF, 'M', u'鬯'), - (0x2FC0, 'M', u'鬲'), - (0x2FC1, 'M', u'鬼'), - (0x2FC2, 'M', u'魚'), - (0x2FC3, 'M', u'鳥'), - (0x2FC4, 'M', u'鹵'), - (0x2FC5, 'M', u'鹿'), - (0x2FC6, 'M', u'麥'), - (0x2FC7, 'M', u'麻'), - (0x2FC8, 'M', u'黃'), - (0x2FC9, 'M', u'黍'), - (0x2FCA, 'M', u'黑'), - (0x2FCB, 'M', u'黹'), - (0x2FCC, 'M', u'黽'), - (0x2FCD, 'M', u'鼎'), - (0x2FCE, 'M', u'鼓'), - (0x2FCF, 'M', u'鼠'), - (0x2FD0, 'M', u'鼻'), - (0x2FD1, 'M', u'齊'), - (0x2FD2, 'M', u'齒'), - (0x2FD3, 'M', u'龍'), - (0x2FD4, 'M', u'龜'), - (0x2FD5, 'M', u'龠'), - (0x2FD6, 'X'), - (0x3000, '3', u' '), - (0x3001, 'V'), - (0x3002, 'M', u'.'), - (0x3003, 'V'), - (0x3036, 'M', u'〒'), - (0x3037, 'V'), - (0x3038, 'M', u'十'), - (0x3039, 'M', u'卄'), - (0x303A, 'M', u'卅'), - (0x303B, 'V'), - (0x3040, 'X'), - (0x3041, 'V'), - (0x3097, 'X'), - (0x3099, 'V'), - (0x309B, '3', u' ゙'), - (0x309C, '3', u' ゚'), - (0x309D, 'V'), - (0x309F, 'M', u'より'), - (0x30A0, 'V'), - (0x30FF, 'M', u'コト'), - (0x3100, 'X'), - (0x3105, 'V'), - (0x312E, 'X'), - (0x3131, 'M', u'ᄀ'), - (0x3132, 'M', u'ᄁ'), - (0x3133, 'M', u'ᆪ'), - (0x3134, 'M', u'ᄂ'), - (0x3135, 'M', u'ᆬ'), - (0x3136, 'M', u'ᆭ'), - (0x3137, 'M', u'ᄃ'), - (0x3138, 'M', u'ᄄ'), - (0x3139, 'M', u'ᄅ'), - (0x313A, 'M', u'ᆰ'), - (0x313B, 'M', u'ᆱ'), - (0x313C, 'M', u'ᆲ'), - (0x313D, 'M', u'ᆳ'), - (0x313E, 'M', u'ᆴ'), - (0x313F, 'M', u'ᆵ'), - (0x3140, 'M', u'ᄚ'), - (0x3141, 'M', u'ᄆ'), - (0x3142, 'M', u'ᄇ'), - (0x3143, 'M', u'ᄈ'), - (0x3144, 'M', u'ᄡ'), - ] - -def _seg_29(): - return [ - (0x3145, 'M', u'ᄉ'), - (0x3146, 'M', u'ᄊ'), - (0x3147, 'M', u'ᄋ'), - (0x3148, 'M', u'ᄌ'), - (0x3149, 'M', u'ᄍ'), - (0x314A, 'M', u'ᄎ'), - (0x314B, 'M', u'ᄏ'), - (0x314C, 'M', u'ᄐ'), - (0x314D, 'M', u'ᄑ'), - (0x314E, 'M', u'ᄒ'), - (0x314F, 'M', u'ᅡ'), - (0x3150, 'M', u'ᅢ'), - (0x3151, 'M', u'ᅣ'), - (0x3152, 'M', u'ᅤ'), - (0x3153, 'M', u'ᅥ'), - (0x3154, 'M', u'ᅦ'), - (0x3155, 'M', u'ᅧ'), - (0x3156, 'M', u'ᅨ'), - (0x3157, 'M', u'ᅩ'), - (0x3158, 'M', u'ᅪ'), - (0x3159, 'M', u'ᅫ'), - (0x315A, 'M', u'ᅬ'), - (0x315B, 'M', u'ᅭ'), - (0x315C, 'M', u'ᅮ'), - (0x315D, 'M', u'ᅯ'), - (0x315E, 'M', u'ᅰ'), - (0x315F, 'M', u'ᅱ'), - (0x3160, 'M', u'ᅲ'), - (0x3161, 'M', u'ᅳ'), - (0x3162, 'M', u'ᅴ'), - (0x3163, 'M', u'ᅵ'), - (0x3164, 'X'), - (0x3165, 'M', u'ᄔ'), - (0x3166, 'M', u'ᄕ'), - (0x3167, 'M', u'ᇇ'), - (0x3168, 'M', u'ᇈ'), - (0x3169, 'M', u'ᇌ'), - (0x316A, 'M', u'ᇎ'), - (0x316B, 'M', u'ᇓ'), - (0x316C, 'M', u'ᇗ'), - (0x316D, 'M', u'ᇙ'), - (0x316E, 'M', u'ᄜ'), - (0x316F, 'M', u'ᇝ'), - (0x3170, 'M', u'ᇟ'), - (0x3171, 'M', u'ᄝ'), - (0x3172, 'M', u'ᄞ'), - (0x3173, 'M', u'ᄠ'), - (0x3174, 'M', u'ᄢ'), - (0x3175, 'M', u'ᄣ'), - (0x3176, 'M', u'ᄧ'), - (0x3177, 'M', u'ᄩ'), - (0x3178, 'M', u'ᄫ'), - (0x3179, 'M', u'ᄬ'), - (0x317A, 'M', u'ᄭ'), - (0x317B, 'M', u'ᄮ'), - (0x317C, 'M', u'ᄯ'), - (0x317D, 'M', u'ᄲ'), - (0x317E, 'M', u'ᄶ'), - (0x317F, 'M', u'ᅀ'), - (0x3180, 'M', u'ᅇ'), - (0x3181, 'M', u'ᅌ'), - (0x3182, 'M', u'ᇱ'), - (0x3183, 'M', u'ᇲ'), - (0x3184, 'M', u'ᅗ'), - (0x3185, 'M', u'ᅘ'), - (0x3186, 'M', u'ᅙ'), - (0x3187, 'M', u'ᆄ'), - (0x3188, 'M', u'ᆅ'), - (0x3189, 'M', u'ᆈ'), - (0x318A, 'M', u'ᆑ'), - (0x318B, 'M', u'ᆒ'), - (0x318C, 'M', u'ᆔ'), - (0x318D, 'M', u'ᆞ'), - (0x318E, 'M', u'ᆡ'), - (0x318F, 'X'), - (0x3190, 'V'), - (0x3192, 'M', u'一'), - (0x3193, 'M', u'二'), - (0x3194, 'M', u'三'), - (0x3195, 'M', u'四'), - (0x3196, 'M', u'上'), - (0x3197, 'M', u'中'), - (0x3198, 'M', u'下'), - (0x3199, 'M', u'甲'), - (0x319A, 'M', u'乙'), - (0x319B, 'M', u'丙'), - (0x319C, 'M', u'丁'), - (0x319D, 'M', u'天'), - (0x319E, 'M', u'地'), - (0x319F, 'M', u'人'), - (0x31A0, 'V'), - (0x31BB, 'X'), - (0x31C0, 'V'), - (0x31E4, 'X'), - (0x31F0, 'V'), - (0x3200, '3', u'(ᄀ)'), - (0x3201, '3', u'(ᄂ)'), - (0x3202, '3', u'(ᄃ)'), - (0x3203, '3', u'(ᄅ)'), - (0x3204, '3', u'(ᄆ)'), - ] - -def _seg_30(): - return [ - (0x3205, '3', u'(ᄇ)'), - (0x3206, '3', u'(ᄉ)'), - (0x3207, '3', u'(ᄋ)'), - (0x3208, '3', u'(ᄌ)'), - (0x3209, '3', u'(ᄎ)'), - (0x320A, '3', u'(ᄏ)'), - (0x320B, '3', u'(ᄐ)'), - (0x320C, '3', u'(ᄑ)'), - (0x320D, '3', u'(ᄒ)'), - (0x320E, '3', u'(가)'), - (0x320F, '3', u'(나)'), - (0x3210, '3', u'(다)'), - (0x3211, '3', u'(라)'), - (0x3212, '3', u'(마)'), - (0x3213, '3', u'(바)'), - (0x3214, '3', u'(사)'), - (0x3215, '3', u'(아)'), - (0x3216, '3', u'(자)'), - (0x3217, '3', u'(차)'), - (0x3218, '3', u'(카)'), - (0x3219, '3', u'(타)'), - (0x321A, '3', u'(파)'), - (0x321B, '3', u'(하)'), - (0x321C, '3', u'(주)'), - (0x321D, '3', u'(오전)'), - (0x321E, '3', u'(오후)'), - (0x321F, 'X'), - (0x3220, '3', u'(一)'), - (0x3221, '3', u'(二)'), - (0x3222, '3', u'(三)'), - (0x3223, '3', u'(四)'), - (0x3224, '3', u'(五)'), - (0x3225, '3', u'(六)'), - (0x3226, '3', u'(七)'), - (0x3227, '3', u'(八)'), - (0x3228, '3', u'(九)'), - (0x3229, '3', u'(十)'), - (0x322A, '3', u'(月)'), - (0x322B, '3', u'(火)'), - (0x322C, '3', u'(水)'), - (0x322D, '3', u'(木)'), - (0x322E, '3', u'(金)'), - (0x322F, '3', u'(土)'), - (0x3230, '3', u'(日)'), - (0x3231, '3', u'(株)'), - (0x3232, '3', u'(有)'), - (0x3233, '3', u'(社)'), - (0x3234, '3', u'(名)'), - (0x3235, '3', u'(特)'), - (0x3236, '3', u'(財)'), - (0x3237, '3', u'(祝)'), - (0x3238, '3', u'(労)'), - (0x3239, '3', u'(代)'), - (0x323A, '3', u'(呼)'), - (0x323B, '3', u'(学)'), - (0x323C, '3', u'(監)'), - (0x323D, '3', u'(企)'), - (0x323E, '3', u'(資)'), - (0x323F, '3', u'(協)'), - (0x3240, '3', u'(祭)'), - (0x3241, '3', u'(休)'), - (0x3242, '3', u'(自)'), - (0x3243, '3', u'(至)'), - (0x3244, 'M', u'問'), - (0x3245, 'M', u'幼'), - (0x3246, 'M', u'文'), - (0x3247, 'M', u'箏'), - (0x3248, 'V'), - (0x3250, 'M', u'pte'), - (0x3251, 'M', u'21'), - (0x3252, 'M', u'22'), - (0x3253, 'M', u'23'), - (0x3254, 'M', u'24'), - (0x3255, 'M', u'25'), - (0x3256, 'M', u'26'), - (0x3257, 'M', u'27'), - (0x3258, 'M', u'28'), - (0x3259, 'M', u'29'), - (0x325A, 'M', u'30'), - (0x325B, 'M', u'31'), - (0x325C, 'M', u'32'), - (0x325D, 'M', u'33'), - (0x325E, 'M', u'34'), - (0x325F, 'M', u'35'), - (0x3260, 'M', u'ᄀ'), - (0x3261, 'M', u'ᄂ'), - (0x3262, 'M', u'ᄃ'), - (0x3263, 'M', u'ᄅ'), - (0x3264, 'M', u'ᄆ'), - (0x3265, 'M', u'ᄇ'), - (0x3266, 'M', u'ᄉ'), - (0x3267, 'M', u'ᄋ'), - (0x3268, 'M', u'ᄌ'), - (0x3269, 'M', u'ᄎ'), - (0x326A, 'M', u'ᄏ'), - (0x326B, 'M', u'ᄐ'), - (0x326C, 'M', u'ᄑ'), - (0x326D, 'M', u'ᄒ'), - (0x326E, 'M', u'가'), - (0x326F, 'M', u'나'), - ] - -def _seg_31(): - return [ - (0x3270, 'M', u'다'), - (0x3271, 'M', u'라'), - (0x3272, 'M', u'마'), - (0x3273, 'M', u'바'), - (0x3274, 'M', u'사'), - (0x3275, 'M', u'아'), - (0x3276, 'M', u'자'), - (0x3277, 'M', u'차'), - (0x3278, 'M', u'카'), - (0x3279, 'M', u'타'), - (0x327A, 'M', u'파'), - (0x327B, 'M', u'하'), - (0x327C, 'M', u'참고'), - (0x327D, 'M', u'주의'), - (0x327E, 'M', u'우'), - (0x327F, 'V'), - (0x3280, 'M', u'一'), - (0x3281, 'M', u'二'), - (0x3282, 'M', u'三'), - (0x3283, 'M', u'四'), - (0x3284, 'M', u'五'), - (0x3285, 'M', u'六'), - (0x3286, 'M', u'七'), - (0x3287, 'M', u'八'), - (0x3288, 'M', u'九'), - (0x3289, 'M', u'十'), - (0x328A, 'M', u'月'), - (0x328B, 'M', u'火'), - (0x328C, 'M', u'水'), - (0x328D, 'M', u'木'), - (0x328E, 'M', u'金'), - (0x328F, 'M', u'土'), - (0x3290, 'M', u'日'), - (0x3291, 'M', u'株'), - (0x3292, 'M', u'有'), - (0x3293, 'M', u'社'), - (0x3294, 'M', u'名'), - (0x3295, 'M', u'特'), - (0x3296, 'M', u'財'), - (0x3297, 'M', u'祝'), - (0x3298, 'M', u'労'), - (0x3299, 'M', u'秘'), - (0x329A, 'M', u'男'), - (0x329B, 'M', u'女'), - (0x329C, 'M', u'適'), - (0x329D, 'M', u'優'), - (0x329E, 'M', u'印'), - (0x329F, 'M', u'注'), - (0x32A0, 'M', u'項'), - (0x32A1, 'M', u'休'), - (0x32A2, 'M', u'写'), - (0x32A3, 'M', u'正'), - (0x32A4, 'M', u'上'), - (0x32A5, 'M', u'中'), - (0x32A6, 'M', u'下'), - (0x32A7, 'M', u'左'), - (0x32A8, 'M', u'右'), - (0x32A9, 'M', u'医'), - (0x32AA, 'M', u'宗'), - (0x32AB, 'M', u'学'), - (0x32AC, 'M', u'監'), - (0x32AD, 'M', u'企'), - (0x32AE, 'M', u'資'), - (0x32AF, 'M', u'協'), - (0x32B0, 'M', u'夜'), - (0x32B1, 'M', u'36'), - (0x32B2, 'M', u'37'), - (0x32B3, 'M', u'38'), - (0x32B4, 'M', u'39'), - (0x32B5, 'M', u'40'), - (0x32B6, 'M', u'41'), - (0x32B7, 'M', u'42'), - (0x32B8, 'M', u'43'), - (0x32B9, 'M', u'44'), - (0x32BA, 'M', u'45'), - (0x32BB, 'M', u'46'), - (0x32BC, 'M', u'47'), - (0x32BD, 'M', u'48'), - (0x32BE, 'M', u'49'), - (0x32BF, 'M', u'50'), - (0x32C0, 'M', u'1月'), - (0x32C1, 'M', u'2月'), - (0x32C2, 'M', u'3月'), - (0x32C3, 'M', u'4月'), - (0x32C4, 'M', u'5月'), - (0x32C5, 'M', u'6月'), - (0x32C6, 'M', u'7月'), - (0x32C7, 'M', u'8月'), - (0x32C8, 'M', u'9月'), - (0x32C9, 'M', u'10月'), - (0x32CA, 'M', u'11月'), - (0x32CB, 'M', u'12月'), - (0x32CC, 'M', u'hg'), - (0x32CD, 'M', u'erg'), - (0x32CE, 'M', u'ev'), - (0x32CF, 'M', u'ltd'), - (0x32D0, 'M', u'ア'), - (0x32D1, 'M', u'イ'), - (0x32D2, 'M', u'ウ'), - (0x32D3, 'M', u'エ'), - ] - -def _seg_32(): - return [ - (0x32D4, 'M', u'オ'), - (0x32D5, 'M', u'カ'), - (0x32D6, 'M', u'キ'), - (0x32D7, 'M', u'ク'), - (0x32D8, 'M', u'ケ'), - (0x32D9, 'M', u'コ'), - (0x32DA, 'M', u'サ'), - (0x32DB, 'M', u'シ'), - (0x32DC, 'M', u'ス'), - (0x32DD, 'M', u'セ'), - (0x32DE, 'M', u'ソ'), - (0x32DF, 'M', u'タ'), - (0x32E0, 'M', u'チ'), - (0x32E1, 'M', u'ツ'), - (0x32E2, 'M', u'テ'), - (0x32E3, 'M', u'ト'), - (0x32E4, 'M', u'ナ'), - (0x32E5, 'M', u'ニ'), - (0x32E6, 'M', u'ヌ'), - (0x32E7, 'M', u'ネ'), - (0x32E8, 'M', u'ノ'), - (0x32E9, 'M', u'ハ'), - (0x32EA, 'M', u'ヒ'), - (0x32EB, 'M', u'フ'), - (0x32EC, 'M', u'ヘ'), - (0x32ED, 'M', u'ホ'), - (0x32EE, 'M', u'マ'), - (0x32EF, 'M', u'ミ'), - (0x32F0, 'M', u'ム'), - (0x32F1, 'M', u'メ'), - (0x32F2, 'M', u'モ'), - (0x32F3, 'M', u'ヤ'), - (0x32F4, 'M', u'ユ'), - (0x32F5, 'M', u'ヨ'), - (0x32F6, 'M', u'ラ'), - (0x32F7, 'M', u'リ'), - (0x32F8, 'M', u'ル'), - (0x32F9, 'M', u'レ'), - (0x32FA, 'M', u'ロ'), - (0x32FB, 'M', u'ワ'), - (0x32FC, 'M', u'ヰ'), - (0x32FD, 'M', u'ヱ'), - (0x32FE, 'M', u'ヲ'), - (0x32FF, 'X'), - (0x3300, 'M', u'アパート'), - (0x3301, 'M', u'アルファ'), - (0x3302, 'M', u'アンペア'), - (0x3303, 'M', u'アール'), - (0x3304, 'M', u'イニング'), - (0x3305, 'M', u'インチ'), - (0x3306, 'M', u'ウォン'), - (0x3307, 'M', u'エスクード'), - (0x3308, 'M', u'エーカー'), - (0x3309, 'M', u'オンス'), - (0x330A, 'M', u'オーム'), - (0x330B, 'M', u'カイリ'), - (0x330C, 'M', u'カラット'), - (0x330D, 'M', u'カロリー'), - (0x330E, 'M', u'ガロン'), - (0x330F, 'M', u'ガンマ'), - (0x3310, 'M', u'ギガ'), - (0x3311, 'M', u'ギニー'), - (0x3312, 'M', u'キュリー'), - (0x3313, 'M', u'ギルダー'), - (0x3314, 'M', u'キロ'), - (0x3315, 'M', u'キログラム'), - (0x3316, 'M', u'キロメートル'), - (0x3317, 'M', u'キロワット'), - (0x3318, 'M', u'グラム'), - (0x3319, 'M', u'グラムトン'), - (0x331A, 'M', u'クルゼイロ'), - (0x331B, 'M', u'クローネ'), - (0x331C, 'M', u'ケース'), - (0x331D, 'M', u'コルナ'), - (0x331E, 'M', u'コーポ'), - (0x331F, 'M', u'サイクル'), - (0x3320, 'M', u'サンチーム'), - (0x3321, 'M', u'シリング'), - (0x3322, 'M', u'センチ'), - (0x3323, 'M', u'セント'), - (0x3324, 'M', u'ダース'), - (0x3325, 'M', u'デシ'), - (0x3326, 'M', u'ドル'), - (0x3327, 'M', u'トン'), - (0x3328, 'M', u'ナノ'), - (0x3329, 'M', u'ノット'), - (0x332A, 'M', u'ハイツ'), - (0x332B, 'M', u'パーセント'), - (0x332C, 'M', u'パーツ'), - (0x332D, 'M', u'バーレル'), - (0x332E, 'M', u'ピアストル'), - (0x332F, 'M', u'ピクル'), - (0x3330, 'M', u'ピコ'), - (0x3331, 'M', u'ビル'), - (0x3332, 'M', u'ファラッド'), - (0x3333, 'M', u'フィート'), - (0x3334, 'M', u'ブッシェル'), - (0x3335, 'M', u'フラン'), - (0x3336, 'M', u'ヘクタール'), - (0x3337, 'M', u'ペソ'), - ] - -def _seg_33(): - return [ - (0x3338, 'M', u'ペニヒ'), - (0x3339, 'M', u'ヘルツ'), - (0x333A, 'M', u'ペンス'), - (0x333B, 'M', u'ページ'), - (0x333C, 'M', u'ベータ'), - (0x333D, 'M', u'ポイント'), - (0x333E, 'M', u'ボルト'), - (0x333F, 'M', u'ホン'), - (0x3340, 'M', u'ポンド'), - (0x3341, 'M', u'ホール'), - (0x3342, 'M', u'ホーン'), - (0x3343, 'M', u'マイクロ'), - (0x3344, 'M', u'マイル'), - (0x3345, 'M', u'マッハ'), - (0x3346, 'M', u'マルク'), - (0x3347, 'M', u'マンション'), - (0x3348, 'M', u'ミクロン'), - (0x3349, 'M', u'ミリ'), - (0x334A, 'M', u'ミリバール'), - (0x334B, 'M', u'メガ'), - (0x334C, 'M', u'メガトン'), - (0x334D, 'M', u'メートル'), - (0x334E, 'M', u'ヤード'), - (0x334F, 'M', u'ヤール'), - (0x3350, 'M', u'ユアン'), - (0x3351, 'M', u'リットル'), - (0x3352, 'M', u'リラ'), - (0x3353, 'M', u'ルピー'), - (0x3354, 'M', u'ルーブル'), - (0x3355, 'M', u'レム'), - (0x3356, 'M', u'レントゲン'), - (0x3357, 'M', u'ワット'), - (0x3358, 'M', u'0点'), - (0x3359, 'M', u'1点'), - (0x335A, 'M', u'2点'), - (0x335B, 'M', u'3点'), - (0x335C, 'M', u'4点'), - (0x335D, 'M', u'5点'), - (0x335E, 'M', u'6点'), - (0x335F, 'M', u'7点'), - (0x3360, 'M', u'8点'), - (0x3361, 'M', u'9点'), - (0x3362, 'M', u'10点'), - (0x3363, 'M', u'11点'), - (0x3364, 'M', u'12点'), - (0x3365, 'M', u'13点'), - (0x3366, 'M', u'14点'), - (0x3367, 'M', u'15点'), - (0x3368, 'M', u'16点'), - (0x3369, 'M', u'17点'), - (0x336A, 'M', u'18点'), - (0x336B, 'M', u'19点'), - (0x336C, 'M', u'20点'), - (0x336D, 'M', u'21点'), - (0x336E, 'M', u'22点'), - (0x336F, 'M', u'23点'), - (0x3370, 'M', u'24点'), - (0x3371, 'M', u'hpa'), - (0x3372, 'M', u'da'), - (0x3373, 'M', u'au'), - (0x3374, 'M', u'bar'), - (0x3375, 'M', u'ov'), - (0x3376, 'M', u'pc'), - (0x3377, 'M', u'dm'), - (0x3378, 'M', u'dm2'), - (0x3379, 'M', u'dm3'), - (0x337A, 'M', u'iu'), - (0x337B, 'M', u'平成'), - (0x337C, 'M', u'昭和'), - (0x337D, 'M', u'大正'), - (0x337E, 'M', u'明治'), - (0x337F, 'M', u'株式会社'), - (0x3380, 'M', u'pa'), - (0x3381, 'M', u'na'), - (0x3382, 'M', u'μa'), - (0x3383, 'M', u'ma'), - (0x3384, 'M', u'ka'), - (0x3385, 'M', u'kb'), - (0x3386, 'M', u'mb'), - (0x3387, 'M', u'gb'), - (0x3388, 'M', u'cal'), - (0x3389, 'M', u'kcal'), - (0x338A, 'M', u'pf'), - (0x338B, 'M', u'nf'), - (0x338C, 'M', u'μf'), - (0x338D, 'M', u'μg'), - (0x338E, 'M', u'mg'), - (0x338F, 'M', u'kg'), - (0x3390, 'M', u'hz'), - (0x3391, 'M', u'khz'), - (0x3392, 'M', u'mhz'), - (0x3393, 'M', u'ghz'), - (0x3394, 'M', u'thz'), - (0x3395, 'M', u'μl'), - (0x3396, 'M', u'ml'), - (0x3397, 'M', u'dl'), - (0x3398, 'M', u'kl'), - (0x3399, 'M', u'fm'), - (0x339A, 'M', u'nm'), - (0x339B, 'M', u'μm'), - ] - -def _seg_34(): - return [ - (0x339C, 'M', u'mm'), - (0x339D, 'M', u'cm'), - (0x339E, 'M', u'km'), - (0x339F, 'M', u'mm2'), - (0x33A0, 'M', u'cm2'), - (0x33A1, 'M', u'm2'), - (0x33A2, 'M', u'km2'), - (0x33A3, 'M', u'mm3'), - (0x33A4, 'M', u'cm3'), - (0x33A5, 'M', u'm3'), - (0x33A6, 'M', u'km3'), - (0x33A7, 'M', u'm∕s'), - (0x33A8, 'M', u'm∕s2'), - (0x33A9, 'M', u'pa'), - (0x33AA, 'M', u'kpa'), - (0x33AB, 'M', u'mpa'), - (0x33AC, 'M', u'gpa'), - (0x33AD, 'M', u'rad'), - (0x33AE, 'M', u'rad∕s'), - (0x33AF, 'M', u'rad∕s2'), - (0x33B0, 'M', u'ps'), - (0x33B1, 'M', u'ns'), - (0x33B2, 'M', u'μs'), - (0x33B3, 'M', u'ms'), - (0x33B4, 'M', u'pv'), - (0x33B5, 'M', u'nv'), - (0x33B6, 'M', u'μv'), - (0x33B7, 'M', u'mv'), - (0x33B8, 'M', u'kv'), - (0x33B9, 'M', u'mv'), - (0x33BA, 'M', u'pw'), - (0x33BB, 'M', u'nw'), - (0x33BC, 'M', u'μw'), - (0x33BD, 'M', u'mw'), - (0x33BE, 'M', u'kw'), - (0x33BF, 'M', u'mw'), - (0x33C0, 'M', u'kω'), - (0x33C1, 'M', u'mω'), - (0x33C2, 'X'), - (0x33C3, 'M', u'bq'), - (0x33C4, 'M', u'cc'), - (0x33C5, 'M', u'cd'), - (0x33C6, 'M', u'c∕kg'), - (0x33C7, 'X'), - (0x33C8, 'M', u'db'), - (0x33C9, 'M', u'gy'), - (0x33CA, 'M', u'ha'), - (0x33CB, 'M', u'hp'), - (0x33CC, 'M', u'in'), - (0x33CD, 'M', u'kk'), - (0x33CE, 'M', u'km'), - (0x33CF, 'M', u'kt'), - (0x33D0, 'M', u'lm'), - (0x33D1, 'M', u'ln'), - (0x33D2, 'M', u'log'), - (0x33D3, 'M', u'lx'), - (0x33D4, 'M', u'mb'), - (0x33D5, 'M', u'mil'), - (0x33D6, 'M', u'mol'), - (0x33D7, 'M', u'ph'), - (0x33D8, 'X'), - (0x33D9, 'M', u'ppm'), - (0x33DA, 'M', u'pr'), - (0x33DB, 'M', u'sr'), - (0x33DC, 'M', u'sv'), - (0x33DD, 'M', u'wb'), - (0x33DE, 'M', u'v∕m'), - (0x33DF, 'M', u'a∕m'), - (0x33E0, 'M', u'1日'), - (0x33E1, 'M', u'2日'), - (0x33E2, 'M', u'3日'), - (0x33E3, 'M', u'4日'), - (0x33E4, 'M', u'5日'), - (0x33E5, 'M', u'6日'), - (0x33E6, 'M', u'7日'), - (0x33E7, 'M', u'8日'), - (0x33E8, 'M', u'9日'), - (0x33E9, 'M', u'10日'), - (0x33EA, 'M', u'11日'), - (0x33EB, 'M', u'12日'), - (0x33EC, 'M', u'13日'), - (0x33ED, 'M', u'14日'), - (0x33EE, 'M', u'15日'), - (0x33EF, 'M', u'16日'), - (0x33F0, 'M', u'17日'), - (0x33F1, 'M', u'18日'), - (0x33F2, 'M', u'19日'), - (0x33F3, 'M', u'20日'), - (0x33F4, 'M', u'21日'), - (0x33F5, 'M', u'22日'), - (0x33F6, 'M', u'23日'), - (0x33F7, 'M', u'24日'), - (0x33F8, 'M', u'25日'), - (0x33F9, 'M', u'26日'), - (0x33FA, 'M', u'27日'), - (0x33FB, 'M', u'28日'), - (0x33FC, 'M', u'29日'), - (0x33FD, 'M', u'30日'), - (0x33FE, 'M', u'31日'), - (0x33FF, 'M', u'gal'), - ] - -def _seg_35(): - return [ - (0x3400, 'V'), - (0x4DB6, 'X'), - (0x4DC0, 'V'), - (0x9FCD, 'X'), - (0xA000, 'V'), - (0xA48D, 'X'), - (0xA490, 'V'), - (0xA4C7, 'X'), - (0xA4D0, 'V'), - (0xA62C, 'X'), - (0xA640, 'M', u'ꙁ'), - (0xA641, 'V'), - (0xA642, 'M', u'ꙃ'), - (0xA643, 'V'), - (0xA644, 'M', u'ꙅ'), - (0xA645, 'V'), - (0xA646, 'M', u'ꙇ'), - (0xA647, 'V'), - (0xA648, 'M', u'ꙉ'), - (0xA649, 'V'), - (0xA64A, 'M', u'ꙋ'), - (0xA64B, 'V'), - (0xA64C, 'M', u'ꙍ'), - (0xA64D, 'V'), - (0xA64E, 'M', u'ꙏ'), - (0xA64F, 'V'), - (0xA650, 'M', u'ꙑ'), - (0xA651, 'V'), - (0xA652, 'M', u'ꙓ'), - (0xA653, 'V'), - (0xA654, 'M', u'ꙕ'), - (0xA655, 'V'), - (0xA656, 'M', u'ꙗ'), - (0xA657, 'V'), - (0xA658, 'M', u'ꙙ'), - (0xA659, 'V'), - (0xA65A, 'M', u'ꙛ'), - (0xA65B, 'V'), - (0xA65C, 'M', u'ꙝ'), - (0xA65D, 'V'), - (0xA65E, 'M', u'ꙟ'), - (0xA65F, 'V'), - (0xA660, 'M', u'ꙡ'), - (0xA661, 'V'), - (0xA662, 'M', u'ꙣ'), - (0xA663, 'V'), - (0xA664, 'M', u'ꙥ'), - (0xA665, 'V'), - (0xA666, 'M', u'ꙧ'), - (0xA667, 'V'), - (0xA668, 'M', u'ꙩ'), - (0xA669, 'V'), - (0xA66A, 'M', u'ꙫ'), - (0xA66B, 'V'), - (0xA66C, 'M', u'ꙭ'), - (0xA66D, 'V'), - (0xA680, 'M', u'ꚁ'), - (0xA681, 'V'), - (0xA682, 'M', u'ꚃ'), - (0xA683, 'V'), - (0xA684, 'M', u'ꚅ'), - (0xA685, 'V'), - (0xA686, 'M', u'ꚇ'), - (0xA687, 'V'), - (0xA688, 'M', u'ꚉ'), - (0xA689, 'V'), - (0xA68A, 'M', u'ꚋ'), - (0xA68B, 'V'), - (0xA68C, 'M', u'ꚍ'), - (0xA68D, 'V'), - (0xA68E, 'M', u'ꚏ'), - (0xA68F, 'V'), - (0xA690, 'M', u'ꚑ'), - (0xA691, 'V'), - (0xA692, 'M', u'ꚓ'), - (0xA693, 'V'), - (0xA694, 'M', u'ꚕ'), - (0xA695, 'V'), - (0xA696, 'M', u'ꚗ'), - (0xA697, 'V'), - (0xA698, 'X'), - (0xA69F, 'V'), - (0xA6F8, 'X'), - (0xA700, 'V'), - (0xA722, 'M', u'ꜣ'), - (0xA723, 'V'), - (0xA724, 'M', u'ꜥ'), - (0xA725, 'V'), - (0xA726, 'M', u'ꜧ'), - (0xA727, 'V'), - (0xA728, 'M', u'ꜩ'), - (0xA729, 'V'), - (0xA72A, 'M', u'ꜫ'), - (0xA72B, 'V'), - (0xA72C, 'M', u'ꜭ'), - (0xA72D, 'V'), - (0xA72E, 'M', u'ꜯ'), - (0xA72F, 'V'), - (0xA732, 'M', u'ꜳ'), - (0xA733, 'V'), - ] - -def _seg_36(): - return [ - (0xA734, 'M', u'ꜵ'), - (0xA735, 'V'), - (0xA736, 'M', u'ꜷ'), - (0xA737, 'V'), - (0xA738, 'M', u'ꜹ'), - (0xA739, 'V'), - (0xA73A, 'M', u'ꜻ'), - (0xA73B, 'V'), - (0xA73C, 'M', u'ꜽ'), - (0xA73D, 'V'), - (0xA73E, 'M', u'ꜿ'), - (0xA73F, 'V'), - (0xA740, 'M', u'ꝁ'), - (0xA741, 'V'), - (0xA742, 'M', u'ꝃ'), - (0xA743, 'V'), - (0xA744, 'M', u'ꝅ'), - (0xA745, 'V'), - (0xA746, 'M', u'ꝇ'), - (0xA747, 'V'), - (0xA748, 'M', u'ꝉ'), - (0xA749, 'V'), - (0xA74A, 'M', u'ꝋ'), - (0xA74B, 'V'), - (0xA74C, 'M', u'ꝍ'), - (0xA74D, 'V'), - (0xA74E, 'M', u'ꝏ'), - (0xA74F, 'V'), - (0xA750, 'M', u'ꝑ'), - (0xA751, 'V'), - (0xA752, 'M', u'ꝓ'), - (0xA753, 'V'), - (0xA754, 'M', u'ꝕ'), - (0xA755, 'V'), - (0xA756, 'M', u'ꝗ'), - (0xA757, 'V'), - (0xA758, 'M', u'ꝙ'), - (0xA759, 'V'), - (0xA75A, 'M', u'ꝛ'), - (0xA75B, 'V'), - (0xA75C, 'M', u'ꝝ'), - (0xA75D, 'V'), - (0xA75E, 'M', u'ꝟ'), - (0xA75F, 'V'), - (0xA760, 'M', u'ꝡ'), - (0xA761, 'V'), - (0xA762, 'M', u'ꝣ'), - (0xA763, 'V'), - (0xA764, 'M', u'ꝥ'), - (0xA765, 'V'), - (0xA766, 'M', u'ꝧ'), - (0xA767, 'V'), - (0xA768, 'M', u'ꝩ'), - (0xA769, 'V'), - (0xA76A, 'M', u'ꝫ'), - (0xA76B, 'V'), - (0xA76C, 'M', u'ꝭ'), - (0xA76D, 'V'), - (0xA76E, 'M', u'ꝯ'), - (0xA76F, 'V'), - (0xA770, 'M', u'ꝯ'), - (0xA771, 'V'), - (0xA779, 'M', u'ꝺ'), - (0xA77A, 'V'), - (0xA77B, 'M', u'ꝼ'), - (0xA77C, 'V'), - (0xA77D, 'M', u'ᵹ'), - (0xA77E, 'M', u'ꝿ'), - (0xA77F, 'V'), - (0xA780, 'M', u'ꞁ'), - (0xA781, 'V'), - (0xA782, 'M', u'ꞃ'), - (0xA783, 'V'), - (0xA784, 'M', u'ꞅ'), - (0xA785, 'V'), - (0xA786, 'M', u'ꞇ'), - (0xA787, 'V'), - (0xA78B, 'M', u'ꞌ'), - (0xA78C, 'V'), - (0xA78D, 'M', u'ɥ'), - (0xA78E, 'V'), - (0xA78F, 'X'), - (0xA790, 'M', u'ꞑ'), - (0xA791, 'V'), - (0xA792, 'M', u'ꞓ'), - (0xA793, 'V'), - (0xA794, 'X'), - (0xA7A0, 'M', u'ꞡ'), - (0xA7A1, 'V'), - (0xA7A2, 'M', u'ꞣ'), - (0xA7A3, 'V'), - (0xA7A4, 'M', u'ꞥ'), - (0xA7A5, 'V'), - (0xA7A6, 'M', u'ꞧ'), - (0xA7A7, 'V'), - (0xA7A8, 'M', u'ꞩ'), - (0xA7A9, 'V'), - (0xA7AA, 'M', u'ɦ'), - (0xA7AB, 'X'), - (0xA7F8, 'M', u'ħ'), - ] - -def _seg_37(): - return [ - (0xA7F9, 'M', u'œ'), - (0xA7FA, 'V'), - (0xA82C, 'X'), - (0xA830, 'V'), - (0xA83A, 'X'), - (0xA840, 'V'), - (0xA878, 'X'), - (0xA880, 'V'), - (0xA8C5, 'X'), - (0xA8CE, 'V'), - (0xA8DA, 'X'), - (0xA8E0, 'V'), - (0xA8FC, 'X'), - (0xA900, 'V'), - (0xA954, 'X'), - (0xA95F, 'V'), - (0xA97D, 'X'), - (0xA980, 'V'), - (0xA9CE, 'X'), - (0xA9CF, 'V'), - (0xA9DA, 'X'), - (0xA9DE, 'V'), - (0xA9E0, 'X'), - (0xAA00, 'V'), - (0xAA37, 'X'), - (0xAA40, 'V'), - (0xAA4E, 'X'), - (0xAA50, 'V'), - (0xAA5A, 'X'), - (0xAA5C, 'V'), - (0xAA7C, 'X'), - (0xAA80, 'V'), - (0xAAC3, 'X'), - (0xAADB, 'V'), - (0xAAF7, 'X'), - (0xAB01, 'V'), - (0xAB07, 'X'), - (0xAB09, 'V'), - (0xAB0F, 'X'), - (0xAB11, 'V'), - (0xAB17, 'X'), - (0xAB20, 'V'), - (0xAB27, 'X'), - (0xAB28, 'V'), - (0xAB2F, 'X'), - (0xABC0, 'V'), - (0xABEE, 'X'), - (0xABF0, 'V'), - (0xABFA, 'X'), - (0xAC00, 'V'), - (0xD7A4, 'X'), - (0xD7B0, 'V'), - (0xD7C7, 'X'), - (0xD7CB, 'V'), - (0xD7FC, 'X'), - (0xF900, 'M', u'豈'), - (0xF901, 'M', u'更'), - (0xF902, 'M', u'車'), - (0xF903, 'M', u'賈'), - (0xF904, 'M', u'滑'), - (0xF905, 'M', u'串'), - (0xF906, 'M', u'句'), - (0xF907, 'M', u'龜'), - (0xF909, 'M', u'契'), - (0xF90A, 'M', u'金'), - (0xF90B, 'M', u'喇'), - (0xF90C, 'M', u'奈'), - (0xF90D, 'M', u'懶'), - (0xF90E, 'M', u'癩'), - (0xF90F, 'M', u'羅'), - (0xF910, 'M', u'蘿'), - (0xF911, 'M', u'螺'), - (0xF912, 'M', u'裸'), - (0xF913, 'M', u'邏'), - (0xF914, 'M', u'樂'), - (0xF915, 'M', u'洛'), - (0xF916, 'M', u'烙'), - (0xF917, 'M', u'珞'), - (0xF918, 'M', u'落'), - (0xF919, 'M', u'酪'), - (0xF91A, 'M', u'駱'), - (0xF91B, 'M', u'亂'), - (0xF91C, 'M', u'卵'), - (0xF91D, 'M', u'欄'), - (0xF91E, 'M', u'爛'), - (0xF91F, 'M', u'蘭'), - (0xF920, 'M', u'鸞'), - (0xF921, 'M', u'嵐'), - (0xF922, 'M', u'濫'), - (0xF923, 'M', u'藍'), - (0xF924, 'M', u'襤'), - (0xF925, 'M', u'拉'), - (0xF926, 'M', u'臘'), - (0xF927, 'M', u'蠟'), - (0xF928, 'M', u'廊'), - (0xF929, 'M', u'朗'), - (0xF92A, 'M', u'浪'), - (0xF92B, 'M', u'狼'), - (0xF92C, 'M', u'郎'), - (0xF92D, 'M', u'來'), - ] - -def _seg_38(): - return [ - (0xF92E, 'M', u'冷'), - (0xF92F, 'M', u'勞'), - (0xF930, 'M', u'擄'), - (0xF931, 'M', u'櫓'), - (0xF932, 'M', u'爐'), - (0xF933, 'M', u'盧'), - (0xF934, 'M', u'老'), - (0xF935, 'M', u'蘆'), - (0xF936, 'M', u'虜'), - (0xF937, 'M', u'路'), - (0xF938, 'M', u'露'), - (0xF939, 'M', u'魯'), - (0xF93A, 'M', u'鷺'), - (0xF93B, 'M', u'碌'), - (0xF93C, 'M', u'祿'), - (0xF93D, 'M', u'綠'), - (0xF93E, 'M', u'菉'), - (0xF93F, 'M', u'錄'), - (0xF940, 'M', u'鹿'), - (0xF941, 'M', u'論'), - (0xF942, 'M', u'壟'), - (0xF943, 'M', u'弄'), - (0xF944, 'M', u'籠'), - (0xF945, 'M', u'聾'), - (0xF946, 'M', u'牢'), - (0xF947, 'M', u'磊'), - (0xF948, 'M', u'賂'), - (0xF949, 'M', u'雷'), - (0xF94A, 'M', u'壘'), - (0xF94B, 'M', u'屢'), - (0xF94C, 'M', u'樓'), - (0xF94D, 'M', u'淚'), - (0xF94E, 'M', u'漏'), - (0xF94F, 'M', u'累'), - (0xF950, 'M', u'縷'), - (0xF951, 'M', u'陋'), - (0xF952, 'M', u'勒'), - (0xF953, 'M', u'肋'), - (0xF954, 'M', u'凜'), - (0xF955, 'M', u'凌'), - (0xF956, 'M', u'稜'), - (0xF957, 'M', u'綾'), - (0xF958, 'M', u'菱'), - (0xF959, 'M', u'陵'), - (0xF95A, 'M', u'讀'), - (0xF95B, 'M', u'拏'), - (0xF95C, 'M', u'樂'), - (0xF95D, 'M', u'諾'), - (0xF95E, 'M', u'丹'), - (0xF95F, 'M', u'寧'), - (0xF960, 'M', u'怒'), - (0xF961, 'M', u'率'), - (0xF962, 'M', u'異'), - (0xF963, 'M', u'北'), - (0xF964, 'M', u'磻'), - (0xF965, 'M', u'便'), - (0xF966, 'M', u'復'), - (0xF967, 'M', u'不'), - (0xF968, 'M', u'泌'), - (0xF969, 'M', u'數'), - (0xF96A, 'M', u'索'), - (0xF96B, 'M', u'參'), - (0xF96C, 'M', u'塞'), - (0xF96D, 'M', u'省'), - (0xF96E, 'M', u'葉'), - (0xF96F, 'M', u'說'), - (0xF970, 'M', u'殺'), - (0xF971, 'M', u'辰'), - (0xF972, 'M', u'沈'), - (0xF973, 'M', u'拾'), - (0xF974, 'M', u'若'), - (0xF975, 'M', u'掠'), - (0xF976, 'M', u'略'), - (0xF977, 'M', u'亮'), - (0xF978, 'M', u'兩'), - (0xF979, 'M', u'凉'), - (0xF97A, 'M', u'梁'), - (0xF97B, 'M', u'糧'), - (0xF97C, 'M', u'良'), - (0xF97D, 'M', u'諒'), - (0xF97E, 'M', u'量'), - (0xF97F, 'M', u'勵'), - (0xF980, 'M', u'呂'), - (0xF981, 'M', u'女'), - (0xF982, 'M', u'廬'), - (0xF983, 'M', u'旅'), - (0xF984, 'M', u'濾'), - (0xF985, 'M', u'礪'), - (0xF986, 'M', u'閭'), - (0xF987, 'M', u'驪'), - (0xF988, 'M', u'麗'), - (0xF989, 'M', u'黎'), - (0xF98A, 'M', u'力'), - (0xF98B, 'M', u'曆'), - (0xF98C, 'M', u'歷'), - (0xF98D, 'M', u'轢'), - (0xF98E, 'M', u'年'), - (0xF98F, 'M', u'憐'), - (0xF990, 'M', u'戀'), - (0xF991, 'M', u'撚'), - ] - -def _seg_39(): - return [ - (0xF992, 'M', u'漣'), - (0xF993, 'M', u'煉'), - (0xF994, 'M', u'璉'), - (0xF995, 'M', u'秊'), - (0xF996, 'M', u'練'), - (0xF997, 'M', u'聯'), - (0xF998, 'M', u'輦'), - (0xF999, 'M', u'蓮'), - (0xF99A, 'M', u'連'), - (0xF99B, 'M', u'鍊'), - (0xF99C, 'M', u'列'), - (0xF99D, 'M', u'劣'), - (0xF99E, 'M', u'咽'), - (0xF99F, 'M', u'烈'), - (0xF9A0, 'M', u'裂'), - (0xF9A1, 'M', u'說'), - (0xF9A2, 'M', u'廉'), - (0xF9A3, 'M', u'念'), - (0xF9A4, 'M', u'捻'), - (0xF9A5, 'M', u'殮'), - (0xF9A6, 'M', u'簾'), - (0xF9A7, 'M', u'獵'), - (0xF9A8, 'M', u'令'), - (0xF9A9, 'M', u'囹'), - (0xF9AA, 'M', u'寧'), - (0xF9AB, 'M', u'嶺'), - (0xF9AC, 'M', u'怜'), - (0xF9AD, 'M', u'玲'), - (0xF9AE, 'M', u'瑩'), - (0xF9AF, 'M', u'羚'), - (0xF9B0, 'M', u'聆'), - (0xF9B1, 'M', u'鈴'), - (0xF9B2, 'M', u'零'), - (0xF9B3, 'M', u'靈'), - (0xF9B4, 'M', u'領'), - (0xF9B5, 'M', u'例'), - (0xF9B6, 'M', u'禮'), - (0xF9B7, 'M', u'醴'), - (0xF9B8, 'M', u'隸'), - (0xF9B9, 'M', u'惡'), - (0xF9BA, 'M', u'了'), - (0xF9BB, 'M', u'僚'), - (0xF9BC, 'M', u'寮'), - (0xF9BD, 'M', u'尿'), - (0xF9BE, 'M', u'料'), - (0xF9BF, 'M', u'樂'), - (0xF9C0, 'M', u'燎'), - (0xF9C1, 'M', u'療'), - (0xF9C2, 'M', u'蓼'), - (0xF9C3, 'M', u'遼'), - (0xF9C4, 'M', u'龍'), - (0xF9C5, 'M', u'暈'), - (0xF9C6, 'M', u'阮'), - (0xF9C7, 'M', u'劉'), - (0xF9C8, 'M', u'杻'), - (0xF9C9, 'M', u'柳'), - (0xF9CA, 'M', u'流'), - (0xF9CB, 'M', u'溜'), - (0xF9CC, 'M', u'琉'), - (0xF9CD, 'M', u'留'), - (0xF9CE, 'M', u'硫'), - (0xF9CF, 'M', u'紐'), - (0xF9D0, 'M', u'類'), - (0xF9D1, 'M', u'六'), - (0xF9D2, 'M', u'戮'), - (0xF9D3, 'M', u'陸'), - (0xF9D4, 'M', u'倫'), - (0xF9D5, 'M', u'崙'), - (0xF9D6, 'M', u'淪'), - (0xF9D7, 'M', u'輪'), - (0xF9D8, 'M', u'律'), - (0xF9D9, 'M', u'慄'), - (0xF9DA, 'M', u'栗'), - (0xF9DB, 'M', u'率'), - (0xF9DC, 'M', u'隆'), - (0xF9DD, 'M', u'利'), - (0xF9DE, 'M', u'吏'), - (0xF9DF, 'M', u'履'), - (0xF9E0, 'M', u'易'), - (0xF9E1, 'M', u'李'), - (0xF9E2, 'M', u'梨'), - (0xF9E3, 'M', u'泥'), - (0xF9E4, 'M', u'理'), - (0xF9E5, 'M', u'痢'), - (0xF9E6, 'M', u'罹'), - (0xF9E7, 'M', u'裏'), - (0xF9E8, 'M', u'裡'), - (0xF9E9, 'M', u'里'), - (0xF9EA, 'M', u'離'), - (0xF9EB, 'M', u'匿'), - (0xF9EC, 'M', u'溺'), - (0xF9ED, 'M', u'吝'), - (0xF9EE, 'M', u'燐'), - (0xF9EF, 'M', u'璘'), - (0xF9F0, 'M', u'藺'), - (0xF9F1, 'M', u'隣'), - (0xF9F2, 'M', u'鱗'), - (0xF9F3, 'M', u'麟'), - (0xF9F4, 'M', u'林'), - (0xF9F5, 'M', u'淋'), - ] - -def _seg_40(): - return [ - (0xF9F6, 'M', u'臨'), - (0xF9F7, 'M', u'立'), - (0xF9F8, 'M', u'笠'), - (0xF9F9, 'M', u'粒'), - (0xF9FA, 'M', u'狀'), - (0xF9FB, 'M', u'炙'), - (0xF9FC, 'M', u'識'), - (0xF9FD, 'M', u'什'), - (0xF9FE, 'M', u'茶'), - (0xF9FF, 'M', u'刺'), - (0xFA00, 'M', u'切'), - (0xFA01, 'M', u'度'), - (0xFA02, 'M', u'拓'), - (0xFA03, 'M', u'糖'), - (0xFA04, 'M', u'宅'), - (0xFA05, 'M', u'洞'), - (0xFA06, 'M', u'暴'), - (0xFA07, 'M', u'輻'), - (0xFA08, 'M', u'行'), - (0xFA09, 'M', u'降'), - (0xFA0A, 'M', u'見'), - (0xFA0B, 'M', u'廓'), - (0xFA0C, 'M', u'兀'), - (0xFA0D, 'M', u'嗀'), - (0xFA0E, 'V'), - (0xFA10, 'M', u'塚'), - (0xFA11, 'V'), - (0xFA12, 'M', u'晴'), - (0xFA13, 'V'), - (0xFA15, 'M', u'凞'), - (0xFA16, 'M', u'猪'), - (0xFA17, 'M', u'益'), - (0xFA18, 'M', u'礼'), - (0xFA19, 'M', u'神'), - (0xFA1A, 'M', u'祥'), - (0xFA1B, 'M', u'福'), - (0xFA1C, 'M', u'靖'), - (0xFA1D, 'M', u'精'), - (0xFA1E, 'M', u'羽'), - (0xFA1F, 'V'), - (0xFA20, 'M', u'蘒'), - (0xFA21, 'V'), - (0xFA22, 'M', u'諸'), - (0xFA23, 'V'), - (0xFA25, 'M', u'逸'), - (0xFA26, 'M', u'都'), - (0xFA27, 'V'), - (0xFA2A, 'M', u'飯'), - (0xFA2B, 'M', u'飼'), - (0xFA2C, 'M', u'館'), - (0xFA2D, 'M', u'鶴'), - (0xFA2E, 'M', u'郞'), - (0xFA2F, 'M', u'隷'), - (0xFA30, 'M', u'侮'), - (0xFA31, 'M', u'僧'), - (0xFA32, 'M', u'免'), - (0xFA33, 'M', u'勉'), - (0xFA34, 'M', u'勤'), - (0xFA35, 'M', u'卑'), - (0xFA36, 'M', u'喝'), - (0xFA37, 'M', u'嘆'), - (0xFA38, 'M', u'器'), - (0xFA39, 'M', u'塀'), - (0xFA3A, 'M', u'墨'), - (0xFA3B, 'M', u'層'), - (0xFA3C, 'M', u'屮'), - (0xFA3D, 'M', u'悔'), - (0xFA3E, 'M', u'慨'), - (0xFA3F, 'M', u'憎'), - (0xFA40, 'M', u'懲'), - (0xFA41, 'M', u'敏'), - (0xFA42, 'M', u'既'), - (0xFA43, 'M', u'暑'), - (0xFA44, 'M', u'梅'), - (0xFA45, 'M', u'海'), - (0xFA46, 'M', u'渚'), - (0xFA47, 'M', u'漢'), - (0xFA48, 'M', u'煮'), - (0xFA49, 'M', u'爫'), - (0xFA4A, 'M', u'琢'), - (0xFA4B, 'M', u'碑'), - (0xFA4C, 'M', u'社'), - (0xFA4D, 'M', u'祉'), - (0xFA4E, 'M', u'祈'), - (0xFA4F, 'M', u'祐'), - (0xFA50, 'M', u'祖'), - (0xFA51, 'M', u'祝'), - (0xFA52, 'M', u'禍'), - (0xFA53, 'M', u'禎'), - (0xFA54, 'M', u'穀'), - (0xFA55, 'M', u'突'), - (0xFA56, 'M', u'節'), - (0xFA57, 'M', u'練'), - (0xFA58, 'M', u'縉'), - (0xFA59, 'M', u'繁'), - (0xFA5A, 'M', u'署'), - (0xFA5B, 'M', u'者'), - (0xFA5C, 'M', u'臭'), - (0xFA5D, 'M', u'艹'), - (0xFA5F, 'M', u'著'), - ] - -def _seg_41(): - return [ - (0xFA60, 'M', u'褐'), - (0xFA61, 'M', u'視'), - (0xFA62, 'M', u'謁'), - (0xFA63, 'M', u'謹'), - (0xFA64, 'M', u'賓'), - (0xFA65, 'M', u'贈'), - (0xFA66, 'M', u'辶'), - (0xFA67, 'M', u'逸'), - (0xFA68, 'M', u'難'), - (0xFA69, 'M', u'響'), - (0xFA6A, 'M', u'頻'), - (0xFA6B, 'M', u'恵'), - (0xFA6C, 'M', u'𤋮'), - (0xFA6D, 'M', u'舘'), - (0xFA6E, 'X'), - (0xFA70, 'M', u'並'), - (0xFA71, 'M', u'况'), - (0xFA72, 'M', u'全'), - (0xFA73, 'M', u'侀'), - (0xFA74, 'M', u'充'), - (0xFA75, 'M', u'冀'), - (0xFA76, 'M', u'勇'), - (0xFA77, 'M', u'勺'), - (0xFA78, 'M', u'喝'), - (0xFA79, 'M', u'啕'), - (0xFA7A, 'M', u'喙'), - (0xFA7B, 'M', u'嗢'), - (0xFA7C, 'M', u'塚'), - (0xFA7D, 'M', u'墳'), - (0xFA7E, 'M', u'奄'), - (0xFA7F, 'M', u'奔'), - (0xFA80, 'M', u'婢'), - (0xFA81, 'M', u'嬨'), - (0xFA82, 'M', u'廒'), - (0xFA83, 'M', u'廙'), - (0xFA84, 'M', u'彩'), - (0xFA85, 'M', u'徭'), - (0xFA86, 'M', u'惘'), - (0xFA87, 'M', u'慎'), - (0xFA88, 'M', u'愈'), - (0xFA89, 'M', u'憎'), - (0xFA8A, 'M', u'慠'), - (0xFA8B, 'M', u'懲'), - (0xFA8C, 'M', u'戴'), - (0xFA8D, 'M', u'揄'), - (0xFA8E, 'M', u'搜'), - (0xFA8F, 'M', u'摒'), - (0xFA90, 'M', u'敖'), - (0xFA91, 'M', u'晴'), - (0xFA92, 'M', u'朗'), - (0xFA93, 'M', u'望'), - (0xFA94, 'M', u'杖'), - (0xFA95, 'M', u'歹'), - (0xFA96, 'M', u'殺'), - (0xFA97, 'M', u'流'), - (0xFA98, 'M', u'滛'), - (0xFA99, 'M', u'滋'), - (0xFA9A, 'M', u'漢'), - (0xFA9B, 'M', u'瀞'), - (0xFA9C, 'M', u'煮'), - (0xFA9D, 'M', u'瞧'), - (0xFA9E, 'M', u'爵'), - (0xFA9F, 'M', u'犯'), - (0xFAA0, 'M', u'猪'), - (0xFAA1, 'M', u'瑱'), - (0xFAA2, 'M', u'甆'), - (0xFAA3, 'M', u'画'), - (0xFAA4, 'M', u'瘝'), - (0xFAA5, 'M', u'瘟'), - (0xFAA6, 'M', u'益'), - (0xFAA7, 'M', u'盛'), - (0xFAA8, 'M', u'直'), - (0xFAA9, 'M', u'睊'), - (0xFAAA, 'M', u'着'), - (0xFAAB, 'M', u'磌'), - (0xFAAC, 'M', u'窱'), - (0xFAAD, 'M', u'節'), - (0xFAAE, 'M', u'类'), - (0xFAAF, 'M', u'絛'), - (0xFAB0, 'M', u'練'), - (0xFAB1, 'M', u'缾'), - (0xFAB2, 'M', u'者'), - (0xFAB3, 'M', u'荒'), - (0xFAB4, 'M', u'華'), - (0xFAB5, 'M', u'蝹'), - (0xFAB6, 'M', u'襁'), - (0xFAB7, 'M', u'覆'), - (0xFAB8, 'M', u'視'), - (0xFAB9, 'M', u'調'), - (0xFABA, 'M', u'諸'), - (0xFABB, 'M', u'請'), - (0xFABC, 'M', u'謁'), - (0xFABD, 'M', u'諾'), - (0xFABE, 'M', u'諭'), - (0xFABF, 'M', u'謹'), - (0xFAC0, 'M', u'變'), - (0xFAC1, 'M', u'贈'), - (0xFAC2, 'M', u'輸'), - (0xFAC3, 'M', u'遲'), - (0xFAC4, 'M', u'醙'), - ] - -def _seg_42(): - return [ - (0xFAC5, 'M', u'鉶'), - (0xFAC6, 'M', u'陼'), - (0xFAC7, 'M', u'難'), - (0xFAC8, 'M', u'靖'), - (0xFAC9, 'M', u'韛'), - (0xFACA, 'M', u'響'), - (0xFACB, 'M', u'頋'), - (0xFACC, 'M', u'頻'), - (0xFACD, 'M', u'鬒'), - (0xFACE, 'M', u'龜'), - (0xFACF, 'M', u'𢡊'), - (0xFAD0, 'M', u'𢡄'), - (0xFAD1, 'M', u'𣏕'), - (0xFAD2, 'M', u'㮝'), - (0xFAD3, 'M', u'䀘'), - (0xFAD4, 'M', u'䀹'), - (0xFAD5, 'M', u'𥉉'), - (0xFAD6, 'M', u'𥳐'), - (0xFAD7, 'M', u'𧻓'), - (0xFAD8, 'M', u'齃'), - (0xFAD9, 'M', u'龎'), - (0xFADA, 'X'), - (0xFB00, 'M', u'ff'), - (0xFB01, 'M', u'fi'), - (0xFB02, 'M', u'fl'), - (0xFB03, 'M', u'ffi'), - (0xFB04, 'M', u'ffl'), - (0xFB05, 'M', u'st'), - (0xFB07, 'X'), - (0xFB13, 'M', u'մն'), - (0xFB14, 'M', u'մե'), - (0xFB15, 'M', u'մի'), - (0xFB16, 'M', u'վն'), - (0xFB17, 'M', u'մխ'), - (0xFB18, 'X'), - (0xFB1D, 'M', u'יִ'), - (0xFB1E, 'V'), - (0xFB1F, 'M', u'ײַ'), - (0xFB20, 'M', u'ע'), - (0xFB21, 'M', u'א'), - (0xFB22, 'M', u'ד'), - (0xFB23, 'M', u'ה'), - (0xFB24, 'M', u'כ'), - (0xFB25, 'M', u'ל'), - (0xFB26, 'M', u'ם'), - (0xFB27, 'M', u'ר'), - (0xFB28, 'M', u'ת'), - (0xFB29, '3', u'+'), - (0xFB2A, 'M', u'שׁ'), - (0xFB2B, 'M', u'שׂ'), - (0xFB2C, 'M', u'שּׁ'), - (0xFB2D, 'M', u'שּׂ'), - (0xFB2E, 'M', u'אַ'), - (0xFB2F, 'M', u'אָ'), - (0xFB30, 'M', u'אּ'), - (0xFB31, 'M', u'בּ'), - (0xFB32, 'M', u'גּ'), - (0xFB33, 'M', u'דּ'), - (0xFB34, 'M', u'הּ'), - (0xFB35, 'M', u'וּ'), - (0xFB36, 'M', u'זּ'), - (0xFB37, 'X'), - (0xFB38, 'M', u'טּ'), - (0xFB39, 'M', u'יּ'), - (0xFB3A, 'M', u'ךּ'), - (0xFB3B, 'M', u'כּ'), - (0xFB3C, 'M', u'לּ'), - (0xFB3D, 'X'), - (0xFB3E, 'M', u'מּ'), - (0xFB3F, 'X'), - (0xFB40, 'M', u'נּ'), - (0xFB41, 'M', u'סּ'), - (0xFB42, 'X'), - (0xFB43, 'M', u'ףּ'), - (0xFB44, 'M', u'פּ'), - (0xFB45, 'X'), - (0xFB46, 'M', u'צּ'), - (0xFB47, 'M', u'קּ'), - (0xFB48, 'M', u'רּ'), - (0xFB49, 'M', u'שּ'), - (0xFB4A, 'M', u'תּ'), - (0xFB4B, 'M', u'וֹ'), - (0xFB4C, 'M', u'בֿ'), - (0xFB4D, 'M', u'כֿ'), - (0xFB4E, 'M', u'פֿ'), - (0xFB4F, 'M', u'אל'), - (0xFB50, 'M', u'ٱ'), - (0xFB52, 'M', u'ٻ'), - (0xFB56, 'M', u'پ'), - (0xFB5A, 'M', u'ڀ'), - (0xFB5E, 'M', u'ٺ'), - (0xFB62, 'M', u'ٿ'), - (0xFB66, 'M', u'ٹ'), - (0xFB6A, 'M', u'ڤ'), - (0xFB6E, 'M', u'ڦ'), - (0xFB72, 'M', u'ڄ'), - (0xFB76, 'M', u'ڃ'), - (0xFB7A, 'M', u'چ'), - (0xFB7E, 'M', u'ڇ'), - (0xFB82, 'M', u'ڍ'), - ] - -def _seg_43(): - return [ - (0xFB84, 'M', u'ڌ'), - (0xFB86, 'M', u'ڎ'), - (0xFB88, 'M', u'ڈ'), - (0xFB8A, 'M', u'ژ'), - (0xFB8C, 'M', u'ڑ'), - (0xFB8E, 'M', u'ک'), - (0xFB92, 'M', u'گ'), - (0xFB96, 'M', u'ڳ'), - (0xFB9A, 'M', u'ڱ'), - (0xFB9E, 'M', u'ں'), - (0xFBA0, 'M', u'ڻ'), - (0xFBA4, 'M', u'ۀ'), - (0xFBA6, 'M', u'ہ'), - (0xFBAA, 'M', u'ھ'), - (0xFBAE, 'M', u'ے'), - (0xFBB0, 'M', u'ۓ'), - (0xFBB2, 'V'), - (0xFBC2, 'X'), - (0xFBD3, 'M', u'ڭ'), - (0xFBD7, 'M', u'ۇ'), - (0xFBD9, 'M', u'ۆ'), - (0xFBDB, 'M', u'ۈ'), - (0xFBDD, 'M', u'ۇٴ'), - (0xFBDE, 'M', u'ۋ'), - (0xFBE0, 'M', u'ۅ'), - (0xFBE2, 'M', u'ۉ'), - (0xFBE4, 'M', u'ې'), - (0xFBE8, 'M', u'ى'), - (0xFBEA, 'M', u'ئا'), - (0xFBEC, 'M', u'ئە'), - (0xFBEE, 'M', u'ئو'), - (0xFBF0, 'M', u'ئۇ'), - (0xFBF2, 'M', u'ئۆ'), - (0xFBF4, 'M', u'ئۈ'), - (0xFBF6, 'M', u'ئې'), - (0xFBF9, 'M', u'ئى'), - (0xFBFC, 'M', u'ی'), - (0xFC00, 'M', u'ئج'), - (0xFC01, 'M', u'ئح'), - (0xFC02, 'M', u'ئم'), - (0xFC03, 'M', u'ئى'), - (0xFC04, 'M', u'ئي'), - (0xFC05, 'M', u'بج'), - (0xFC06, 'M', u'بح'), - (0xFC07, 'M', u'بخ'), - (0xFC08, 'M', u'بم'), - (0xFC09, 'M', u'بى'), - (0xFC0A, 'M', u'بي'), - (0xFC0B, 'M', u'تج'), - (0xFC0C, 'M', u'تح'), - (0xFC0D, 'M', u'تخ'), - (0xFC0E, 'M', u'تم'), - (0xFC0F, 'M', u'تى'), - (0xFC10, 'M', u'تي'), - (0xFC11, 'M', u'ثج'), - (0xFC12, 'M', u'ثم'), - (0xFC13, 'M', u'ثى'), - (0xFC14, 'M', u'ثي'), - (0xFC15, 'M', u'جح'), - (0xFC16, 'M', u'جم'), - (0xFC17, 'M', u'حج'), - (0xFC18, 'M', u'حم'), - (0xFC19, 'M', u'خج'), - (0xFC1A, 'M', u'خح'), - (0xFC1B, 'M', u'خم'), - (0xFC1C, 'M', u'سج'), - (0xFC1D, 'M', u'سح'), - (0xFC1E, 'M', u'سخ'), - (0xFC1F, 'M', u'سم'), - (0xFC20, 'M', u'صح'), - (0xFC21, 'M', u'صم'), - (0xFC22, 'M', u'ضج'), - (0xFC23, 'M', u'ضح'), - (0xFC24, 'M', u'ضخ'), - (0xFC25, 'M', u'ضم'), - (0xFC26, 'M', u'طح'), - (0xFC27, 'M', u'طم'), - (0xFC28, 'M', u'ظم'), - (0xFC29, 'M', u'عج'), - (0xFC2A, 'M', u'عم'), - (0xFC2B, 'M', u'غج'), - (0xFC2C, 'M', u'غم'), - (0xFC2D, 'M', u'فج'), - (0xFC2E, 'M', u'فح'), - (0xFC2F, 'M', u'فخ'), - (0xFC30, 'M', u'فم'), - (0xFC31, 'M', u'فى'), - (0xFC32, 'M', u'في'), - (0xFC33, 'M', u'قح'), - (0xFC34, 'M', u'قم'), - (0xFC35, 'M', u'قى'), - (0xFC36, 'M', u'قي'), - (0xFC37, 'M', u'كا'), - (0xFC38, 'M', u'كج'), - (0xFC39, 'M', u'كح'), - (0xFC3A, 'M', u'كخ'), - (0xFC3B, 'M', u'كل'), - (0xFC3C, 'M', u'كم'), - (0xFC3D, 'M', u'كى'), - (0xFC3E, 'M', u'كي'), - ] - -def _seg_44(): - return [ - (0xFC3F, 'M', u'لج'), - (0xFC40, 'M', u'لح'), - (0xFC41, 'M', u'لخ'), - (0xFC42, 'M', u'لم'), - (0xFC43, 'M', u'لى'), - (0xFC44, 'M', u'لي'), - (0xFC45, 'M', u'مج'), - (0xFC46, 'M', u'مح'), - (0xFC47, 'M', u'مخ'), - (0xFC48, 'M', u'مم'), - (0xFC49, 'M', u'مى'), - (0xFC4A, 'M', u'مي'), - (0xFC4B, 'M', u'نج'), - (0xFC4C, 'M', u'نح'), - (0xFC4D, 'M', u'نخ'), - (0xFC4E, 'M', u'نم'), - (0xFC4F, 'M', u'نى'), - (0xFC50, 'M', u'ني'), - (0xFC51, 'M', u'هج'), - (0xFC52, 'M', u'هم'), - (0xFC53, 'M', u'هى'), - (0xFC54, 'M', u'هي'), - (0xFC55, 'M', u'يج'), - (0xFC56, 'M', u'يح'), - (0xFC57, 'M', u'يخ'), - (0xFC58, 'M', u'يم'), - (0xFC59, 'M', u'يى'), - (0xFC5A, 'M', u'يي'), - (0xFC5B, 'M', u'ذٰ'), - (0xFC5C, 'M', u'رٰ'), - (0xFC5D, 'M', u'ىٰ'), - (0xFC5E, '3', u' ٌّ'), - (0xFC5F, '3', u' ٍّ'), - (0xFC60, '3', u' َّ'), - (0xFC61, '3', u' ُّ'), - (0xFC62, '3', u' ِّ'), - (0xFC63, '3', u' ّٰ'), - (0xFC64, 'M', u'ئر'), - (0xFC65, 'M', u'ئز'), - (0xFC66, 'M', u'ئم'), - (0xFC67, 'M', u'ئن'), - (0xFC68, 'M', u'ئى'), - (0xFC69, 'M', u'ئي'), - (0xFC6A, 'M', u'بر'), - (0xFC6B, 'M', u'بز'), - (0xFC6C, 'M', u'بم'), - (0xFC6D, 'M', u'بن'), - (0xFC6E, 'M', u'بى'), - (0xFC6F, 'M', u'بي'), - (0xFC70, 'M', u'تر'), - (0xFC71, 'M', u'تز'), - (0xFC72, 'M', u'تم'), - (0xFC73, 'M', u'تن'), - (0xFC74, 'M', u'تى'), - (0xFC75, 'M', u'تي'), - (0xFC76, 'M', u'ثر'), - (0xFC77, 'M', u'ثز'), - (0xFC78, 'M', u'ثم'), - (0xFC79, 'M', u'ثن'), - (0xFC7A, 'M', u'ثى'), - (0xFC7B, 'M', u'ثي'), - (0xFC7C, 'M', u'فى'), - (0xFC7D, 'M', u'في'), - (0xFC7E, 'M', u'قى'), - (0xFC7F, 'M', u'قي'), - (0xFC80, 'M', u'كا'), - (0xFC81, 'M', u'كل'), - (0xFC82, 'M', u'كم'), - (0xFC83, 'M', u'كى'), - (0xFC84, 'M', u'كي'), - (0xFC85, 'M', u'لم'), - (0xFC86, 'M', u'لى'), - (0xFC87, 'M', u'لي'), - (0xFC88, 'M', u'ما'), - (0xFC89, 'M', u'مم'), - (0xFC8A, 'M', u'نر'), - (0xFC8B, 'M', u'نز'), - (0xFC8C, 'M', u'نم'), - (0xFC8D, 'M', u'نن'), - (0xFC8E, 'M', u'نى'), - (0xFC8F, 'M', u'ني'), - (0xFC90, 'M', u'ىٰ'), - (0xFC91, 'M', u'ير'), - (0xFC92, 'M', u'يز'), - (0xFC93, 'M', u'يم'), - (0xFC94, 'M', u'ين'), - (0xFC95, 'M', u'يى'), - (0xFC96, 'M', u'يي'), - (0xFC97, 'M', u'ئج'), - (0xFC98, 'M', u'ئح'), - (0xFC99, 'M', u'ئخ'), - (0xFC9A, 'M', u'ئم'), - (0xFC9B, 'M', u'ئه'), - (0xFC9C, 'M', u'بج'), - (0xFC9D, 'M', u'بح'), - (0xFC9E, 'M', u'بخ'), - (0xFC9F, 'M', u'بم'), - (0xFCA0, 'M', u'به'), - (0xFCA1, 'M', u'تج'), - (0xFCA2, 'M', u'تح'), - ] - -def _seg_45(): - return [ - (0xFCA3, 'M', u'تخ'), - (0xFCA4, 'M', u'تم'), - (0xFCA5, 'M', u'ته'), - (0xFCA6, 'M', u'ثم'), - (0xFCA7, 'M', u'جح'), - (0xFCA8, 'M', u'جم'), - (0xFCA9, 'M', u'حج'), - (0xFCAA, 'M', u'حم'), - (0xFCAB, 'M', u'خج'), - (0xFCAC, 'M', u'خم'), - (0xFCAD, 'M', u'سج'), - (0xFCAE, 'M', u'سح'), - (0xFCAF, 'M', u'سخ'), - (0xFCB0, 'M', u'سم'), - (0xFCB1, 'M', u'صح'), - (0xFCB2, 'M', u'صخ'), - (0xFCB3, 'M', u'صم'), - (0xFCB4, 'M', u'ضج'), - (0xFCB5, 'M', u'ضح'), - (0xFCB6, 'M', u'ضخ'), - (0xFCB7, 'M', u'ضم'), - (0xFCB8, 'M', u'طح'), - (0xFCB9, 'M', u'ظم'), - (0xFCBA, 'M', u'عج'), - (0xFCBB, 'M', u'عم'), - (0xFCBC, 'M', u'غج'), - (0xFCBD, 'M', u'غم'), - (0xFCBE, 'M', u'فج'), - (0xFCBF, 'M', u'فح'), - (0xFCC0, 'M', u'فخ'), - (0xFCC1, 'M', u'فم'), - (0xFCC2, 'M', u'قح'), - (0xFCC3, 'M', u'قم'), - (0xFCC4, 'M', u'كج'), - (0xFCC5, 'M', u'كح'), - (0xFCC6, 'M', u'كخ'), - (0xFCC7, 'M', u'كل'), - (0xFCC8, 'M', u'كم'), - (0xFCC9, 'M', u'لج'), - (0xFCCA, 'M', u'لح'), - (0xFCCB, 'M', u'لخ'), - (0xFCCC, 'M', u'لم'), - (0xFCCD, 'M', u'له'), - (0xFCCE, 'M', u'مج'), - (0xFCCF, 'M', u'مح'), - (0xFCD0, 'M', u'مخ'), - (0xFCD1, 'M', u'مم'), - (0xFCD2, 'M', u'نج'), - (0xFCD3, 'M', u'نح'), - (0xFCD4, 'M', u'نخ'), - (0xFCD5, 'M', u'نم'), - (0xFCD6, 'M', u'نه'), - (0xFCD7, 'M', u'هج'), - (0xFCD8, 'M', u'هم'), - (0xFCD9, 'M', u'هٰ'), - (0xFCDA, 'M', u'يج'), - (0xFCDB, 'M', u'يح'), - (0xFCDC, 'M', u'يخ'), - (0xFCDD, 'M', u'يم'), - (0xFCDE, 'M', u'يه'), - (0xFCDF, 'M', u'ئم'), - (0xFCE0, 'M', u'ئه'), - (0xFCE1, 'M', u'بم'), - (0xFCE2, 'M', u'به'), - (0xFCE3, 'M', u'تم'), - (0xFCE4, 'M', u'ته'), - (0xFCE5, 'M', u'ثم'), - (0xFCE6, 'M', u'ثه'), - (0xFCE7, 'M', u'سم'), - (0xFCE8, 'M', u'سه'), - (0xFCE9, 'M', u'شم'), - (0xFCEA, 'M', u'شه'), - (0xFCEB, 'M', u'كل'), - (0xFCEC, 'M', u'كم'), - (0xFCED, 'M', u'لم'), - (0xFCEE, 'M', u'نم'), - (0xFCEF, 'M', u'نه'), - (0xFCF0, 'M', u'يم'), - (0xFCF1, 'M', u'يه'), - (0xFCF2, 'M', u'ـَّ'), - (0xFCF3, 'M', u'ـُّ'), - (0xFCF4, 'M', u'ـِّ'), - (0xFCF5, 'M', u'طى'), - (0xFCF6, 'M', u'طي'), - (0xFCF7, 'M', u'عى'), - (0xFCF8, 'M', u'عي'), - (0xFCF9, 'M', u'غى'), - (0xFCFA, 'M', u'غي'), - (0xFCFB, 'M', u'سى'), - (0xFCFC, 'M', u'سي'), - (0xFCFD, 'M', u'شى'), - (0xFCFE, 'M', u'شي'), - (0xFCFF, 'M', u'حى'), - (0xFD00, 'M', u'حي'), - (0xFD01, 'M', u'جى'), - (0xFD02, 'M', u'جي'), - (0xFD03, 'M', u'خى'), - (0xFD04, 'M', u'خي'), - (0xFD05, 'M', u'صى'), - (0xFD06, 'M', u'صي'), - ] - -def _seg_46(): - return [ - (0xFD07, 'M', u'ضى'), - (0xFD08, 'M', u'ضي'), - (0xFD09, 'M', u'شج'), - (0xFD0A, 'M', u'شح'), - (0xFD0B, 'M', u'شخ'), - (0xFD0C, 'M', u'شم'), - (0xFD0D, 'M', u'شر'), - (0xFD0E, 'M', u'سر'), - (0xFD0F, 'M', u'صر'), - (0xFD10, 'M', u'ضر'), - (0xFD11, 'M', u'طى'), - (0xFD12, 'M', u'طي'), - (0xFD13, 'M', u'عى'), - (0xFD14, 'M', u'عي'), - (0xFD15, 'M', u'غى'), - (0xFD16, 'M', u'غي'), - (0xFD17, 'M', u'سى'), - (0xFD18, 'M', u'سي'), - (0xFD19, 'M', u'شى'), - (0xFD1A, 'M', u'شي'), - (0xFD1B, 'M', u'حى'), - (0xFD1C, 'M', u'حي'), - (0xFD1D, 'M', u'جى'), - (0xFD1E, 'M', u'جي'), - (0xFD1F, 'M', u'خى'), - (0xFD20, 'M', u'خي'), - (0xFD21, 'M', u'صى'), - (0xFD22, 'M', u'صي'), - (0xFD23, 'M', u'ضى'), - (0xFD24, 'M', u'ضي'), - (0xFD25, 'M', u'شج'), - (0xFD26, 'M', u'شح'), - (0xFD27, 'M', u'شخ'), - (0xFD28, 'M', u'شم'), - (0xFD29, 'M', u'شر'), - (0xFD2A, 'M', u'سر'), - (0xFD2B, 'M', u'صر'), - (0xFD2C, 'M', u'ضر'), - (0xFD2D, 'M', u'شج'), - (0xFD2E, 'M', u'شح'), - (0xFD2F, 'M', u'شخ'), - (0xFD30, 'M', u'شم'), - (0xFD31, 'M', u'سه'), - (0xFD32, 'M', u'شه'), - (0xFD33, 'M', u'طم'), - (0xFD34, 'M', u'سج'), - (0xFD35, 'M', u'سح'), - (0xFD36, 'M', u'سخ'), - (0xFD37, 'M', u'شج'), - (0xFD38, 'M', u'شح'), - (0xFD39, 'M', u'شخ'), - (0xFD3A, 'M', u'طم'), - (0xFD3B, 'M', u'ظم'), - (0xFD3C, 'M', u'اً'), - (0xFD3E, 'V'), - (0xFD40, 'X'), - (0xFD50, 'M', u'تجم'), - (0xFD51, 'M', u'تحج'), - (0xFD53, 'M', u'تحم'), - (0xFD54, 'M', u'تخم'), - (0xFD55, 'M', u'تمج'), - (0xFD56, 'M', u'تمح'), - (0xFD57, 'M', u'تمخ'), - (0xFD58, 'M', u'جمح'), - (0xFD5A, 'M', u'حمي'), - (0xFD5B, 'M', u'حمى'), - (0xFD5C, 'M', u'سحج'), - (0xFD5D, 'M', u'سجح'), - (0xFD5E, 'M', u'سجى'), - (0xFD5F, 'M', u'سمح'), - (0xFD61, 'M', u'سمج'), - (0xFD62, 'M', u'سمم'), - (0xFD64, 'M', u'صحح'), - (0xFD66, 'M', u'صمم'), - (0xFD67, 'M', u'شحم'), - (0xFD69, 'M', u'شجي'), - (0xFD6A, 'M', u'شمخ'), - (0xFD6C, 'M', u'شمم'), - (0xFD6E, 'M', u'ضحى'), - (0xFD6F, 'M', u'ضخم'), - (0xFD71, 'M', u'طمح'), - (0xFD73, 'M', u'طمم'), - (0xFD74, 'M', u'طمي'), - (0xFD75, 'M', u'عجم'), - (0xFD76, 'M', u'عمم'), - (0xFD78, 'M', u'عمى'), - (0xFD79, 'M', u'غمم'), - (0xFD7A, 'M', u'غمي'), - (0xFD7B, 'M', u'غمى'), - (0xFD7C, 'M', u'فخم'), - (0xFD7E, 'M', u'قمح'), - (0xFD7F, 'M', u'قمم'), - (0xFD80, 'M', u'لحم'), - (0xFD81, 'M', u'لحي'), - (0xFD82, 'M', u'لحى'), - (0xFD83, 'M', u'لجج'), - (0xFD85, 'M', u'لخم'), - (0xFD87, 'M', u'لمح'), - (0xFD89, 'M', u'محج'), - (0xFD8A, 'M', u'محم'), - ] - -def _seg_47(): - return [ - (0xFD8B, 'M', u'محي'), - (0xFD8C, 'M', u'مجح'), - (0xFD8D, 'M', u'مجم'), - (0xFD8E, 'M', u'مخج'), - (0xFD8F, 'M', u'مخم'), - (0xFD90, 'X'), - (0xFD92, 'M', u'مجخ'), - (0xFD93, 'M', u'همج'), - (0xFD94, 'M', u'همم'), - (0xFD95, 'M', u'نحم'), - (0xFD96, 'M', u'نحى'), - (0xFD97, 'M', u'نجم'), - (0xFD99, 'M', u'نجى'), - (0xFD9A, 'M', u'نمي'), - (0xFD9B, 'M', u'نمى'), - (0xFD9C, 'M', u'يمم'), - (0xFD9E, 'M', u'بخي'), - (0xFD9F, 'M', u'تجي'), - (0xFDA0, 'M', u'تجى'), - (0xFDA1, 'M', u'تخي'), - (0xFDA2, 'M', u'تخى'), - (0xFDA3, 'M', u'تمي'), - (0xFDA4, 'M', u'تمى'), - (0xFDA5, 'M', u'جمي'), - (0xFDA6, 'M', u'جحى'), - (0xFDA7, 'M', u'جمى'), - (0xFDA8, 'M', u'سخى'), - (0xFDA9, 'M', u'صحي'), - (0xFDAA, 'M', u'شحي'), - (0xFDAB, 'M', u'ضحي'), - (0xFDAC, 'M', u'لجي'), - (0xFDAD, 'M', u'لمي'), - (0xFDAE, 'M', u'يحي'), - (0xFDAF, 'M', u'يجي'), - (0xFDB0, 'M', u'يمي'), - (0xFDB1, 'M', u'ممي'), - (0xFDB2, 'M', u'قمي'), - (0xFDB3, 'M', u'نحي'), - (0xFDB4, 'M', u'قمح'), - (0xFDB5, 'M', u'لحم'), - (0xFDB6, 'M', u'عمي'), - (0xFDB7, 'M', u'كمي'), - (0xFDB8, 'M', u'نجح'), - (0xFDB9, 'M', u'مخي'), - (0xFDBA, 'M', u'لجم'), - (0xFDBB, 'M', u'كمم'), - (0xFDBC, 'M', u'لجم'), - (0xFDBD, 'M', u'نجح'), - (0xFDBE, 'M', u'جحي'), - (0xFDBF, 'M', u'حجي'), - (0xFDC0, 'M', u'مجي'), - (0xFDC1, 'M', u'فمي'), - (0xFDC2, 'M', u'بحي'), - (0xFDC3, 'M', u'كمم'), - (0xFDC4, 'M', u'عجم'), - (0xFDC5, 'M', u'صمم'), - (0xFDC6, 'M', u'سخي'), - (0xFDC7, 'M', u'نجي'), - (0xFDC8, 'X'), - (0xFDF0, 'M', u'صلے'), - (0xFDF1, 'M', u'قلے'), - (0xFDF2, 'M', u'الله'), - (0xFDF3, 'M', u'اكبر'), - (0xFDF4, 'M', u'محمد'), - (0xFDF5, 'M', u'صلعم'), - (0xFDF6, 'M', u'رسول'), - (0xFDF7, 'M', u'عليه'), - (0xFDF8, 'M', u'وسلم'), - (0xFDF9, 'M', u'صلى'), - (0xFDFA, '3', u'صلى الله عليه وسلم'), - (0xFDFB, '3', u'جل جلاله'), - (0xFDFC, 'M', u'ریال'), - (0xFDFD, 'V'), - (0xFDFE, 'X'), - (0xFE00, 'I'), - (0xFE10, '3', u','), - (0xFE11, 'M', u'、'), - (0xFE12, 'X'), - (0xFE13, '3', u':'), - (0xFE14, '3', u';'), - (0xFE15, '3', u'!'), - (0xFE16, '3', u'?'), - (0xFE17, 'M', u'〖'), - (0xFE18, 'M', u'〗'), - (0xFE19, 'X'), - (0xFE20, 'V'), - (0xFE27, 'X'), - (0xFE31, 'M', u'—'), - (0xFE32, 'M', u'–'), - (0xFE33, '3', u'_'), - (0xFE35, '3', u'('), - (0xFE36, '3', u')'), - (0xFE37, '3', u'{'), - (0xFE38, '3', u'}'), - (0xFE39, 'M', u'〔'), - (0xFE3A, 'M', u'〕'), - (0xFE3B, 'M', u'【'), - (0xFE3C, 'M', u'】'), - (0xFE3D, 'M', u'《'), - (0xFE3E, 'M', u'》'), - ] - -def _seg_48(): - return [ - (0xFE3F, 'M', u'〈'), - (0xFE40, 'M', u'〉'), - (0xFE41, 'M', u'「'), - (0xFE42, 'M', u'」'), - (0xFE43, 'M', u'『'), - (0xFE44, 'M', u'』'), - (0xFE45, 'V'), - (0xFE47, '3', u'['), - (0xFE48, '3', u']'), - (0xFE49, '3', u' ̅'), - (0xFE4D, '3', u'_'), - (0xFE50, '3', u','), - (0xFE51, 'M', u'、'), - (0xFE52, 'X'), - (0xFE54, '3', u';'), - (0xFE55, '3', u':'), - (0xFE56, '3', u'?'), - (0xFE57, '3', u'!'), - (0xFE58, 'M', u'—'), - (0xFE59, '3', u'('), - (0xFE5A, '3', u')'), - (0xFE5B, '3', u'{'), - (0xFE5C, '3', u'}'), - (0xFE5D, 'M', u'〔'), - (0xFE5E, 'M', u'〕'), - (0xFE5F, '3', u'#'), - (0xFE60, '3', u'&'), - (0xFE61, '3', u'*'), - (0xFE62, '3', u'+'), - (0xFE63, 'M', u'-'), - (0xFE64, '3', u'<'), - (0xFE65, '3', u'>'), - (0xFE66, '3', u'='), - (0xFE67, 'X'), - (0xFE68, '3', u'\\'), - (0xFE69, '3', u'$'), - (0xFE6A, '3', u'%'), - (0xFE6B, '3', u'@'), - (0xFE6C, 'X'), - (0xFE70, '3', u' ً'), - (0xFE71, 'M', u'ـً'), - (0xFE72, '3', u' ٌ'), - (0xFE73, 'V'), - (0xFE74, '3', u' ٍ'), - (0xFE75, 'X'), - (0xFE76, '3', u' َ'), - (0xFE77, 'M', u'ـَ'), - (0xFE78, '3', u' ُ'), - (0xFE79, 'M', u'ـُ'), - (0xFE7A, '3', u' ِ'), - (0xFE7B, 'M', u'ـِ'), - (0xFE7C, '3', u' ّ'), - (0xFE7D, 'M', u'ـّ'), - (0xFE7E, '3', u' ْ'), - (0xFE7F, 'M', u'ـْ'), - (0xFE80, 'M', u'ء'), - (0xFE81, 'M', u'آ'), - (0xFE83, 'M', u'أ'), - (0xFE85, 'M', u'ؤ'), - (0xFE87, 'M', u'إ'), - (0xFE89, 'M', u'ئ'), - (0xFE8D, 'M', u'ا'), - (0xFE8F, 'M', u'ب'), - (0xFE93, 'M', u'ة'), - (0xFE95, 'M', u'ت'), - (0xFE99, 'M', u'ث'), - (0xFE9D, 'M', u'ج'), - (0xFEA1, 'M', u'ح'), - (0xFEA5, 'M', u'خ'), - (0xFEA9, 'M', u'د'), - (0xFEAB, 'M', u'ذ'), - (0xFEAD, 'M', u'ر'), - (0xFEAF, 'M', u'ز'), - (0xFEB1, 'M', u'س'), - (0xFEB5, 'M', u'ش'), - (0xFEB9, 'M', u'ص'), - (0xFEBD, 'M', u'ض'), - (0xFEC1, 'M', u'ط'), - (0xFEC5, 'M', u'ظ'), - (0xFEC9, 'M', u'ع'), - (0xFECD, 'M', u'غ'), - (0xFED1, 'M', u'ف'), - (0xFED5, 'M', u'ق'), - (0xFED9, 'M', u'ك'), - (0xFEDD, 'M', u'ل'), - (0xFEE1, 'M', u'م'), - (0xFEE5, 'M', u'ن'), - (0xFEE9, 'M', u'ه'), - (0xFEED, 'M', u'و'), - (0xFEEF, 'M', u'ى'), - (0xFEF1, 'M', u'ي'), - (0xFEF5, 'M', u'لآ'), - (0xFEF7, 'M', u'لأ'), - (0xFEF9, 'M', u'لإ'), - (0xFEFB, 'M', u'لا'), - (0xFEFD, 'X'), - (0xFEFF, 'I'), - (0xFF00, 'X'), - (0xFF01, '3', u'!'), - (0xFF02, '3', u'"'), - ] - -def _seg_49(): - return [ - (0xFF03, '3', u'#'), - (0xFF04, '3', u'$'), - (0xFF05, '3', u'%'), - (0xFF06, '3', u'&'), - (0xFF07, '3', u'\''), - (0xFF08, '3', u'('), - (0xFF09, '3', u')'), - (0xFF0A, '3', u'*'), - (0xFF0B, '3', u'+'), - (0xFF0C, '3', u','), - (0xFF0D, 'M', u'-'), - (0xFF0E, 'M', u'.'), - (0xFF0F, '3', u'/'), - (0xFF10, 'M', u'0'), - (0xFF11, 'M', u'1'), - (0xFF12, 'M', u'2'), - (0xFF13, 'M', u'3'), - (0xFF14, 'M', u'4'), - (0xFF15, 'M', u'5'), - (0xFF16, 'M', u'6'), - (0xFF17, 'M', u'7'), - (0xFF18, 'M', u'8'), - (0xFF19, 'M', u'9'), - (0xFF1A, '3', u':'), - (0xFF1B, '3', u';'), - (0xFF1C, '3', u'<'), - (0xFF1D, '3', u'='), - (0xFF1E, '3', u'>'), - (0xFF1F, '3', u'?'), - (0xFF20, '3', u'@'), - (0xFF21, 'M', u'a'), - (0xFF22, 'M', u'b'), - (0xFF23, 'M', u'c'), - (0xFF24, 'M', u'd'), - (0xFF25, 'M', u'e'), - (0xFF26, 'M', u'f'), - (0xFF27, 'M', u'g'), - (0xFF28, 'M', u'h'), - (0xFF29, 'M', u'i'), - (0xFF2A, 'M', u'j'), - (0xFF2B, 'M', u'k'), - (0xFF2C, 'M', u'l'), - (0xFF2D, 'M', u'm'), - (0xFF2E, 'M', u'n'), - (0xFF2F, 'M', u'o'), - (0xFF30, 'M', u'p'), - (0xFF31, 'M', u'q'), - (0xFF32, 'M', u'r'), - (0xFF33, 'M', u's'), - (0xFF34, 'M', u't'), - (0xFF35, 'M', u'u'), - (0xFF36, 'M', u'v'), - (0xFF37, 'M', u'w'), - (0xFF38, 'M', u'x'), - (0xFF39, 'M', u'y'), - (0xFF3A, 'M', u'z'), - (0xFF3B, '3', u'['), - (0xFF3C, '3', u'\\'), - (0xFF3D, '3', u']'), - (0xFF3E, '3', u'^'), - (0xFF3F, '3', u'_'), - (0xFF40, '3', u'`'), - (0xFF41, 'M', u'a'), - (0xFF42, 'M', u'b'), - (0xFF43, 'M', u'c'), - (0xFF44, 'M', u'd'), - (0xFF45, 'M', u'e'), - (0xFF46, 'M', u'f'), - (0xFF47, 'M', u'g'), - (0xFF48, 'M', u'h'), - (0xFF49, 'M', u'i'), - (0xFF4A, 'M', u'j'), - (0xFF4B, 'M', u'k'), - (0xFF4C, 'M', u'l'), - (0xFF4D, 'M', u'm'), - (0xFF4E, 'M', u'n'), - (0xFF4F, 'M', u'o'), - (0xFF50, 'M', u'p'), - (0xFF51, 'M', u'q'), - (0xFF52, 'M', u'r'), - (0xFF53, 'M', u's'), - (0xFF54, 'M', u't'), - (0xFF55, 'M', u'u'), - (0xFF56, 'M', u'v'), - (0xFF57, 'M', u'w'), - (0xFF58, 'M', u'x'), - (0xFF59, 'M', u'y'), - (0xFF5A, 'M', u'z'), - (0xFF5B, '3', u'{'), - (0xFF5C, '3', u'|'), - (0xFF5D, '3', u'}'), - (0xFF5E, '3', u'~'), - (0xFF5F, 'M', u'⦅'), - (0xFF60, 'M', u'⦆'), - (0xFF61, 'M', u'.'), - (0xFF62, 'M', u'「'), - (0xFF63, 'M', u'」'), - (0xFF64, 'M', u'、'), - (0xFF65, 'M', u'・'), - (0xFF66, 'M', u'ヲ'), - ] - -def _seg_50(): - return [ - (0xFF67, 'M', u'ァ'), - (0xFF68, 'M', u'ィ'), - (0xFF69, 'M', u'ゥ'), - (0xFF6A, 'M', u'ェ'), - (0xFF6B, 'M', u'ォ'), - (0xFF6C, 'M', u'ャ'), - (0xFF6D, 'M', u'ュ'), - (0xFF6E, 'M', u'ョ'), - (0xFF6F, 'M', u'ッ'), - (0xFF70, 'M', u'ー'), - (0xFF71, 'M', u'ア'), - (0xFF72, 'M', u'イ'), - (0xFF73, 'M', u'ウ'), - (0xFF74, 'M', u'エ'), - (0xFF75, 'M', u'オ'), - (0xFF76, 'M', u'カ'), - (0xFF77, 'M', u'キ'), - (0xFF78, 'M', u'ク'), - (0xFF79, 'M', u'ケ'), - (0xFF7A, 'M', u'コ'), - (0xFF7B, 'M', u'サ'), - (0xFF7C, 'M', u'シ'), - (0xFF7D, 'M', u'ス'), - (0xFF7E, 'M', u'セ'), - (0xFF7F, 'M', u'ソ'), - (0xFF80, 'M', u'タ'), - (0xFF81, 'M', u'チ'), - (0xFF82, 'M', u'ツ'), - (0xFF83, 'M', u'テ'), - (0xFF84, 'M', u'ト'), - (0xFF85, 'M', u'ナ'), - (0xFF86, 'M', u'ニ'), - (0xFF87, 'M', u'ヌ'), - (0xFF88, 'M', u'ネ'), - (0xFF89, 'M', u'ノ'), - (0xFF8A, 'M', u'ハ'), - (0xFF8B, 'M', u'ヒ'), - (0xFF8C, 'M', u'フ'), - (0xFF8D, 'M', u'ヘ'), - (0xFF8E, 'M', u'ホ'), - (0xFF8F, 'M', u'マ'), - (0xFF90, 'M', u'ミ'), - (0xFF91, 'M', u'ム'), - (0xFF92, 'M', u'メ'), - (0xFF93, 'M', u'モ'), - (0xFF94, 'M', u'ヤ'), - (0xFF95, 'M', u'ユ'), - (0xFF96, 'M', u'ヨ'), - (0xFF97, 'M', u'ラ'), - (0xFF98, 'M', u'リ'), - (0xFF99, 'M', u'ル'), - (0xFF9A, 'M', u'レ'), - (0xFF9B, 'M', u'ロ'), - (0xFF9C, 'M', u'ワ'), - (0xFF9D, 'M', u'ン'), - (0xFF9E, 'M', u'゙'), - (0xFF9F, 'M', u'゚'), - (0xFFA0, 'X'), - (0xFFA1, 'M', u'ᄀ'), - (0xFFA2, 'M', u'ᄁ'), - (0xFFA3, 'M', u'ᆪ'), - (0xFFA4, 'M', u'ᄂ'), - (0xFFA5, 'M', u'ᆬ'), - (0xFFA6, 'M', u'ᆭ'), - (0xFFA7, 'M', u'ᄃ'), - (0xFFA8, 'M', u'ᄄ'), - (0xFFA9, 'M', u'ᄅ'), - (0xFFAA, 'M', u'ᆰ'), - (0xFFAB, 'M', u'ᆱ'), - (0xFFAC, 'M', u'ᆲ'), - (0xFFAD, 'M', u'ᆳ'), - (0xFFAE, 'M', u'ᆴ'), - (0xFFAF, 'M', u'ᆵ'), - (0xFFB0, 'M', u'ᄚ'), - (0xFFB1, 'M', u'ᄆ'), - (0xFFB2, 'M', u'ᄇ'), - (0xFFB3, 'M', u'ᄈ'), - (0xFFB4, 'M', u'ᄡ'), - (0xFFB5, 'M', u'ᄉ'), - (0xFFB6, 'M', u'ᄊ'), - (0xFFB7, 'M', u'ᄋ'), - (0xFFB8, 'M', u'ᄌ'), - (0xFFB9, 'M', u'ᄍ'), - (0xFFBA, 'M', u'ᄎ'), - (0xFFBB, 'M', u'ᄏ'), - (0xFFBC, 'M', u'ᄐ'), - (0xFFBD, 'M', u'ᄑ'), - (0xFFBE, 'M', u'ᄒ'), - (0xFFBF, 'X'), - (0xFFC2, 'M', u'ᅡ'), - (0xFFC3, 'M', u'ᅢ'), - (0xFFC4, 'M', u'ᅣ'), - (0xFFC5, 'M', u'ᅤ'), - (0xFFC6, 'M', u'ᅥ'), - (0xFFC7, 'M', u'ᅦ'), - (0xFFC8, 'X'), - (0xFFCA, 'M', u'ᅧ'), - (0xFFCB, 'M', u'ᅨ'), - (0xFFCC, 'M', u'ᅩ'), - (0xFFCD, 'M', u'ᅪ'), - ] - -def _seg_51(): - return [ - (0xFFCE, 'M', u'ᅫ'), - (0xFFCF, 'M', u'ᅬ'), - (0xFFD0, 'X'), - (0xFFD2, 'M', u'ᅭ'), - (0xFFD3, 'M', u'ᅮ'), - (0xFFD4, 'M', u'ᅯ'), - (0xFFD5, 'M', u'ᅰ'), - (0xFFD6, 'M', u'ᅱ'), - (0xFFD7, 'M', u'ᅲ'), - (0xFFD8, 'X'), - (0xFFDA, 'M', u'ᅳ'), - (0xFFDB, 'M', u'ᅴ'), - (0xFFDC, 'M', u'ᅵ'), - (0xFFDD, 'X'), - (0xFFE0, 'M', u'¢'), - (0xFFE1, 'M', u'£'), - (0xFFE2, 'M', u'¬'), - (0xFFE3, '3', u' ̄'), - (0xFFE4, 'M', u'¦'), - (0xFFE5, 'M', u'¥'), - (0xFFE6, 'M', u'₩'), - (0xFFE7, 'X'), - (0xFFE8, 'M', u'│'), - (0xFFE9, 'M', u'←'), - (0xFFEA, 'M', u'↑'), - (0xFFEB, 'M', u'→'), - (0xFFEC, 'M', u'↓'), - (0xFFED, 'M', u'■'), - (0xFFEE, 'M', u'○'), - (0xFFEF, 'X'), - (0x10000, 'V'), - (0x1000C, 'X'), - (0x1000D, 'V'), - (0x10027, 'X'), - (0x10028, 'V'), - (0x1003B, 'X'), - (0x1003C, 'V'), - (0x1003E, 'X'), - (0x1003F, 'V'), - (0x1004E, 'X'), - (0x10050, 'V'), - (0x1005E, 'X'), - (0x10080, 'V'), - (0x100FB, 'X'), - (0x10100, 'V'), - (0x10103, 'X'), - (0x10107, 'V'), - (0x10134, 'X'), - (0x10137, 'V'), - (0x1018B, 'X'), - (0x10190, 'V'), - (0x1019C, 'X'), - (0x101D0, 'V'), - (0x101FE, 'X'), - (0x10280, 'V'), - (0x1029D, 'X'), - (0x102A0, 'V'), - (0x102D1, 'X'), - (0x10300, 'V'), - (0x1031F, 'X'), - (0x10320, 'V'), - (0x10324, 'X'), - (0x10330, 'V'), - (0x1034B, 'X'), - (0x10380, 'V'), - (0x1039E, 'X'), - (0x1039F, 'V'), - (0x103C4, 'X'), - (0x103C8, 'V'), - (0x103D6, 'X'), - (0x10400, 'M', u'𐐨'), - (0x10401, 'M', u'𐐩'), - (0x10402, 'M', u'𐐪'), - (0x10403, 'M', u'𐐫'), - (0x10404, 'M', u'𐐬'), - (0x10405, 'M', u'𐐭'), - (0x10406, 'M', u'𐐮'), - (0x10407, 'M', u'𐐯'), - (0x10408, 'M', u'𐐰'), - (0x10409, 'M', u'𐐱'), - (0x1040A, 'M', u'𐐲'), - (0x1040B, 'M', u'𐐳'), - (0x1040C, 'M', u'𐐴'), - (0x1040D, 'M', u'𐐵'), - (0x1040E, 'M', u'𐐶'), - (0x1040F, 'M', u'𐐷'), - (0x10410, 'M', u'𐐸'), - (0x10411, 'M', u'𐐹'), - (0x10412, 'M', u'𐐺'), - (0x10413, 'M', u'𐐻'), - (0x10414, 'M', u'𐐼'), - (0x10415, 'M', u'𐐽'), - (0x10416, 'M', u'𐐾'), - (0x10417, 'M', u'𐐿'), - (0x10418, 'M', u'𐑀'), - (0x10419, 'M', u'𐑁'), - (0x1041A, 'M', u'𐑂'), - (0x1041B, 'M', u'𐑃'), - (0x1041C, 'M', u'𐑄'), - (0x1041D, 'M', u'𐑅'), - ] - -def _seg_52(): - return [ - (0x1041E, 'M', u'𐑆'), - (0x1041F, 'M', u'𐑇'), - (0x10420, 'M', u'𐑈'), - (0x10421, 'M', u'𐑉'), - (0x10422, 'M', u'𐑊'), - (0x10423, 'M', u'𐑋'), - (0x10424, 'M', u'𐑌'), - (0x10425, 'M', u'𐑍'), - (0x10426, 'M', u'𐑎'), - (0x10427, 'M', u'𐑏'), - (0x10428, 'V'), - (0x1049E, 'X'), - (0x104A0, 'V'), - (0x104AA, 'X'), - (0x10800, 'V'), - (0x10806, 'X'), - (0x10808, 'V'), - (0x10809, 'X'), - (0x1080A, 'V'), - (0x10836, 'X'), - (0x10837, 'V'), - (0x10839, 'X'), - (0x1083C, 'V'), - (0x1083D, 'X'), - (0x1083F, 'V'), - (0x10856, 'X'), - (0x10857, 'V'), - (0x10860, 'X'), - (0x10900, 'V'), - (0x1091C, 'X'), - (0x1091F, 'V'), - (0x1093A, 'X'), - (0x1093F, 'V'), - (0x10940, 'X'), - (0x10980, 'V'), - (0x109B8, 'X'), - (0x109BE, 'V'), - (0x109C0, 'X'), - (0x10A00, 'V'), - (0x10A04, 'X'), - (0x10A05, 'V'), - (0x10A07, 'X'), - (0x10A0C, 'V'), - (0x10A14, 'X'), - (0x10A15, 'V'), - (0x10A18, 'X'), - (0x10A19, 'V'), - (0x10A34, 'X'), - (0x10A38, 'V'), - (0x10A3B, 'X'), - (0x10A3F, 'V'), - (0x10A48, 'X'), - (0x10A50, 'V'), - (0x10A59, 'X'), - (0x10A60, 'V'), - (0x10A80, 'X'), - (0x10B00, 'V'), - (0x10B36, 'X'), - (0x10B39, 'V'), - (0x10B56, 'X'), - (0x10B58, 'V'), - (0x10B73, 'X'), - (0x10B78, 'V'), - (0x10B80, 'X'), - (0x10C00, 'V'), - (0x10C49, 'X'), - (0x10E60, 'V'), - (0x10E7F, 'X'), - (0x11000, 'V'), - (0x1104E, 'X'), - (0x11052, 'V'), - (0x11070, 'X'), - (0x11080, 'V'), - (0x110BD, 'X'), - (0x110BE, 'V'), - (0x110C2, 'X'), - (0x110D0, 'V'), - (0x110E9, 'X'), - (0x110F0, 'V'), - (0x110FA, 'X'), - (0x11100, 'V'), - (0x11135, 'X'), - (0x11136, 'V'), - (0x11144, 'X'), - (0x11180, 'V'), - (0x111C9, 'X'), - (0x111D0, 'V'), - (0x111DA, 'X'), - (0x11680, 'V'), - (0x116B8, 'X'), - (0x116C0, 'V'), - (0x116CA, 'X'), - (0x12000, 'V'), - (0x1236F, 'X'), - (0x12400, 'V'), - (0x12463, 'X'), - (0x12470, 'V'), - (0x12474, 'X'), - (0x13000, 'V'), - (0x1342F, 'X'), - ] - -def _seg_53(): - return [ - (0x16800, 'V'), - (0x16A39, 'X'), - (0x16F00, 'V'), - (0x16F45, 'X'), - (0x16F50, 'V'), - (0x16F7F, 'X'), - (0x16F8F, 'V'), - (0x16FA0, 'X'), - (0x1B000, 'V'), - (0x1B002, 'X'), - (0x1D000, 'V'), - (0x1D0F6, 'X'), - (0x1D100, 'V'), - (0x1D127, 'X'), - (0x1D129, 'V'), - (0x1D15E, 'M', u'𝅗𝅥'), - (0x1D15F, 'M', u'𝅘𝅥'), - (0x1D160, 'M', u'𝅘𝅥𝅮'), - (0x1D161, 'M', u'𝅘𝅥𝅯'), - (0x1D162, 'M', u'𝅘𝅥𝅰'), - (0x1D163, 'M', u'𝅘𝅥𝅱'), - (0x1D164, 'M', u'𝅘𝅥𝅲'), - (0x1D165, 'V'), - (0x1D173, 'X'), - (0x1D17B, 'V'), - (0x1D1BB, 'M', u'𝆹𝅥'), - (0x1D1BC, 'M', u'𝆺𝅥'), - (0x1D1BD, 'M', u'𝆹𝅥𝅮'), - (0x1D1BE, 'M', u'𝆺𝅥𝅮'), - (0x1D1BF, 'M', u'𝆹𝅥𝅯'), - (0x1D1C0, 'M', u'𝆺𝅥𝅯'), - (0x1D1C1, 'V'), - (0x1D1DE, 'X'), - (0x1D200, 'V'), - (0x1D246, 'X'), - (0x1D300, 'V'), - (0x1D357, 'X'), - (0x1D360, 'V'), - (0x1D372, 'X'), - (0x1D400, 'M', u'a'), - (0x1D401, 'M', u'b'), - (0x1D402, 'M', u'c'), - (0x1D403, 'M', u'd'), - (0x1D404, 'M', u'e'), - (0x1D405, 'M', u'f'), - (0x1D406, 'M', u'g'), - (0x1D407, 'M', u'h'), - (0x1D408, 'M', u'i'), - (0x1D409, 'M', u'j'), - (0x1D40A, 'M', u'k'), - (0x1D40B, 'M', u'l'), - (0x1D40C, 'M', u'm'), - (0x1D40D, 'M', u'n'), - (0x1D40E, 'M', u'o'), - (0x1D40F, 'M', u'p'), - (0x1D410, 'M', u'q'), - (0x1D411, 'M', u'r'), - (0x1D412, 'M', u's'), - (0x1D413, 'M', u't'), - (0x1D414, 'M', u'u'), - (0x1D415, 'M', u'v'), - (0x1D416, 'M', u'w'), - (0x1D417, 'M', u'x'), - (0x1D418, 'M', u'y'), - (0x1D419, 'M', u'z'), - (0x1D41A, 'M', u'a'), - (0x1D41B, 'M', u'b'), - (0x1D41C, 'M', u'c'), - (0x1D41D, 'M', u'd'), - (0x1D41E, 'M', u'e'), - (0x1D41F, 'M', u'f'), - (0x1D420, 'M', u'g'), - (0x1D421, 'M', u'h'), - (0x1D422, 'M', u'i'), - (0x1D423, 'M', u'j'), - (0x1D424, 'M', u'k'), - (0x1D425, 'M', u'l'), - (0x1D426, 'M', u'm'), - (0x1D427, 'M', u'n'), - (0x1D428, 'M', u'o'), - (0x1D429, 'M', u'p'), - (0x1D42A, 'M', u'q'), - (0x1D42B, 'M', u'r'), - (0x1D42C, 'M', u's'), - (0x1D42D, 'M', u't'), - (0x1D42E, 'M', u'u'), - (0x1D42F, 'M', u'v'), - (0x1D430, 'M', u'w'), - (0x1D431, 'M', u'x'), - (0x1D432, 'M', u'y'), - (0x1D433, 'M', u'z'), - (0x1D434, 'M', u'a'), - (0x1D435, 'M', u'b'), - (0x1D436, 'M', u'c'), - (0x1D437, 'M', u'd'), - (0x1D438, 'M', u'e'), - (0x1D439, 'M', u'f'), - (0x1D43A, 'M', u'g'), - (0x1D43B, 'M', u'h'), - (0x1D43C, 'M', u'i'), - ] - -def _seg_54(): - return [ - (0x1D43D, 'M', u'j'), - (0x1D43E, 'M', u'k'), - (0x1D43F, 'M', u'l'), - (0x1D440, 'M', u'm'), - (0x1D441, 'M', u'n'), - (0x1D442, 'M', u'o'), - (0x1D443, 'M', u'p'), - (0x1D444, 'M', u'q'), - (0x1D445, 'M', u'r'), - (0x1D446, 'M', u's'), - (0x1D447, 'M', u't'), - (0x1D448, 'M', u'u'), - (0x1D449, 'M', u'v'), - (0x1D44A, 'M', u'w'), - (0x1D44B, 'M', u'x'), - (0x1D44C, 'M', u'y'), - (0x1D44D, 'M', u'z'), - (0x1D44E, 'M', u'a'), - (0x1D44F, 'M', u'b'), - (0x1D450, 'M', u'c'), - (0x1D451, 'M', u'd'), - (0x1D452, 'M', u'e'), - (0x1D453, 'M', u'f'), - (0x1D454, 'M', u'g'), - (0x1D455, 'X'), - (0x1D456, 'M', u'i'), - (0x1D457, 'M', u'j'), - (0x1D458, 'M', u'k'), - (0x1D459, 'M', u'l'), - (0x1D45A, 'M', u'm'), - (0x1D45B, 'M', u'n'), - (0x1D45C, 'M', u'o'), - (0x1D45D, 'M', u'p'), - (0x1D45E, 'M', u'q'), - (0x1D45F, 'M', u'r'), - (0x1D460, 'M', u's'), - (0x1D461, 'M', u't'), - (0x1D462, 'M', u'u'), - (0x1D463, 'M', u'v'), - (0x1D464, 'M', u'w'), - (0x1D465, 'M', u'x'), - (0x1D466, 'M', u'y'), - (0x1D467, 'M', u'z'), - (0x1D468, 'M', u'a'), - (0x1D469, 'M', u'b'), - (0x1D46A, 'M', u'c'), - (0x1D46B, 'M', u'd'), - (0x1D46C, 'M', u'e'), - (0x1D46D, 'M', u'f'), - (0x1D46E, 'M', u'g'), - (0x1D46F, 'M', u'h'), - (0x1D470, 'M', u'i'), - (0x1D471, 'M', u'j'), - (0x1D472, 'M', u'k'), - (0x1D473, 'M', u'l'), - (0x1D474, 'M', u'm'), - (0x1D475, 'M', u'n'), - (0x1D476, 'M', u'o'), - (0x1D477, 'M', u'p'), - (0x1D478, 'M', u'q'), - (0x1D479, 'M', u'r'), - (0x1D47A, 'M', u's'), - (0x1D47B, 'M', u't'), - (0x1D47C, 'M', u'u'), - (0x1D47D, 'M', u'v'), - (0x1D47E, 'M', u'w'), - (0x1D47F, 'M', u'x'), - (0x1D480, 'M', u'y'), - (0x1D481, 'M', u'z'), - (0x1D482, 'M', u'a'), - (0x1D483, 'M', u'b'), - (0x1D484, 'M', u'c'), - (0x1D485, 'M', u'd'), - (0x1D486, 'M', u'e'), - (0x1D487, 'M', u'f'), - (0x1D488, 'M', u'g'), - (0x1D489, 'M', u'h'), - (0x1D48A, 'M', u'i'), - (0x1D48B, 'M', u'j'), - (0x1D48C, 'M', u'k'), - (0x1D48D, 'M', u'l'), - (0x1D48E, 'M', u'm'), - (0x1D48F, 'M', u'n'), - (0x1D490, 'M', u'o'), - (0x1D491, 'M', u'p'), - (0x1D492, 'M', u'q'), - (0x1D493, 'M', u'r'), - (0x1D494, 'M', u's'), - (0x1D495, 'M', u't'), - (0x1D496, 'M', u'u'), - (0x1D497, 'M', u'v'), - (0x1D498, 'M', u'w'), - (0x1D499, 'M', u'x'), - (0x1D49A, 'M', u'y'), - (0x1D49B, 'M', u'z'), - (0x1D49C, 'M', u'a'), - (0x1D49D, 'X'), - (0x1D49E, 'M', u'c'), - (0x1D49F, 'M', u'd'), - (0x1D4A0, 'X'), - ] - -def _seg_55(): - return [ - (0x1D4A2, 'M', u'g'), - (0x1D4A3, 'X'), - (0x1D4A5, 'M', u'j'), - (0x1D4A6, 'M', u'k'), - (0x1D4A7, 'X'), - (0x1D4A9, 'M', u'n'), - (0x1D4AA, 'M', u'o'), - (0x1D4AB, 'M', u'p'), - (0x1D4AC, 'M', u'q'), - (0x1D4AD, 'X'), - (0x1D4AE, 'M', u's'), - (0x1D4AF, 'M', u't'), - (0x1D4B0, 'M', u'u'), - (0x1D4B1, 'M', u'v'), - (0x1D4B2, 'M', u'w'), - (0x1D4B3, 'M', u'x'), - (0x1D4B4, 'M', u'y'), - (0x1D4B5, 'M', u'z'), - (0x1D4B6, 'M', u'a'), - (0x1D4B7, 'M', u'b'), - (0x1D4B8, 'M', u'c'), - (0x1D4B9, 'M', u'd'), - (0x1D4BA, 'X'), - (0x1D4BB, 'M', u'f'), - (0x1D4BC, 'X'), - (0x1D4BD, 'M', u'h'), - (0x1D4BE, 'M', u'i'), - (0x1D4BF, 'M', u'j'), - (0x1D4C0, 'M', u'k'), - (0x1D4C1, 'M', u'l'), - (0x1D4C2, 'M', u'm'), - (0x1D4C3, 'M', u'n'), - (0x1D4C4, 'X'), - (0x1D4C5, 'M', u'p'), - (0x1D4C6, 'M', u'q'), - (0x1D4C7, 'M', u'r'), - (0x1D4C8, 'M', u's'), - (0x1D4C9, 'M', u't'), - (0x1D4CA, 'M', u'u'), - (0x1D4CB, 'M', u'v'), - (0x1D4CC, 'M', u'w'), - (0x1D4CD, 'M', u'x'), - (0x1D4CE, 'M', u'y'), - (0x1D4CF, 'M', u'z'), - (0x1D4D0, 'M', u'a'), - (0x1D4D1, 'M', u'b'), - (0x1D4D2, 'M', u'c'), - (0x1D4D3, 'M', u'd'), - (0x1D4D4, 'M', u'e'), - (0x1D4D5, 'M', u'f'), - (0x1D4D6, 'M', u'g'), - (0x1D4D7, 'M', u'h'), - (0x1D4D8, 'M', u'i'), - (0x1D4D9, 'M', u'j'), - (0x1D4DA, 'M', u'k'), - (0x1D4DB, 'M', u'l'), - (0x1D4DC, 'M', u'm'), - (0x1D4DD, 'M', u'n'), - (0x1D4DE, 'M', u'o'), - (0x1D4DF, 'M', u'p'), - (0x1D4E0, 'M', u'q'), - (0x1D4E1, 'M', u'r'), - (0x1D4E2, 'M', u's'), - (0x1D4E3, 'M', u't'), - (0x1D4E4, 'M', u'u'), - (0x1D4E5, 'M', u'v'), - (0x1D4E6, 'M', u'w'), - (0x1D4E7, 'M', u'x'), - (0x1D4E8, 'M', u'y'), - (0x1D4E9, 'M', u'z'), - (0x1D4EA, 'M', u'a'), - (0x1D4EB, 'M', u'b'), - (0x1D4EC, 'M', u'c'), - (0x1D4ED, 'M', u'd'), - (0x1D4EE, 'M', u'e'), - (0x1D4EF, 'M', u'f'), - (0x1D4F0, 'M', u'g'), - (0x1D4F1, 'M', u'h'), - (0x1D4F2, 'M', u'i'), - (0x1D4F3, 'M', u'j'), - (0x1D4F4, 'M', u'k'), - (0x1D4F5, 'M', u'l'), - (0x1D4F6, 'M', u'm'), - (0x1D4F7, 'M', u'n'), - (0x1D4F8, 'M', u'o'), - (0x1D4F9, 'M', u'p'), - (0x1D4FA, 'M', u'q'), - (0x1D4FB, 'M', u'r'), - (0x1D4FC, 'M', u's'), - (0x1D4FD, 'M', u't'), - (0x1D4FE, 'M', u'u'), - (0x1D4FF, 'M', u'v'), - (0x1D500, 'M', u'w'), - (0x1D501, 'M', u'x'), - (0x1D502, 'M', u'y'), - (0x1D503, 'M', u'z'), - (0x1D504, 'M', u'a'), - (0x1D505, 'M', u'b'), - (0x1D506, 'X'), - (0x1D507, 'M', u'd'), - ] - -def _seg_56(): - return [ - (0x1D508, 'M', u'e'), - (0x1D509, 'M', u'f'), - (0x1D50A, 'M', u'g'), - (0x1D50B, 'X'), - (0x1D50D, 'M', u'j'), - (0x1D50E, 'M', u'k'), - (0x1D50F, 'M', u'l'), - (0x1D510, 'M', u'm'), - (0x1D511, 'M', u'n'), - (0x1D512, 'M', u'o'), - (0x1D513, 'M', u'p'), - (0x1D514, 'M', u'q'), - (0x1D515, 'X'), - (0x1D516, 'M', u's'), - (0x1D517, 'M', u't'), - (0x1D518, 'M', u'u'), - (0x1D519, 'M', u'v'), - (0x1D51A, 'M', u'w'), - (0x1D51B, 'M', u'x'), - (0x1D51C, 'M', u'y'), - (0x1D51D, 'X'), - (0x1D51E, 'M', u'a'), - (0x1D51F, 'M', u'b'), - (0x1D520, 'M', u'c'), - (0x1D521, 'M', u'd'), - (0x1D522, 'M', u'e'), - (0x1D523, 'M', u'f'), - (0x1D524, 'M', u'g'), - (0x1D525, 'M', u'h'), - (0x1D526, 'M', u'i'), - (0x1D527, 'M', u'j'), - (0x1D528, 'M', u'k'), - (0x1D529, 'M', u'l'), - (0x1D52A, 'M', u'm'), - (0x1D52B, 'M', u'n'), - (0x1D52C, 'M', u'o'), - (0x1D52D, 'M', u'p'), - (0x1D52E, 'M', u'q'), - (0x1D52F, 'M', u'r'), - (0x1D530, 'M', u's'), - (0x1D531, 'M', u't'), - (0x1D532, 'M', u'u'), - (0x1D533, 'M', u'v'), - (0x1D534, 'M', u'w'), - (0x1D535, 'M', u'x'), - (0x1D536, 'M', u'y'), - (0x1D537, 'M', u'z'), - (0x1D538, 'M', u'a'), - (0x1D539, 'M', u'b'), - (0x1D53A, 'X'), - (0x1D53B, 'M', u'd'), - (0x1D53C, 'M', u'e'), - (0x1D53D, 'M', u'f'), - (0x1D53E, 'M', u'g'), - (0x1D53F, 'X'), - (0x1D540, 'M', u'i'), - (0x1D541, 'M', u'j'), - (0x1D542, 'M', u'k'), - (0x1D543, 'M', u'l'), - (0x1D544, 'M', u'm'), - (0x1D545, 'X'), - (0x1D546, 'M', u'o'), - (0x1D547, 'X'), - (0x1D54A, 'M', u's'), - (0x1D54B, 'M', u't'), - (0x1D54C, 'M', u'u'), - (0x1D54D, 'M', u'v'), - (0x1D54E, 'M', u'w'), - (0x1D54F, 'M', u'x'), - (0x1D550, 'M', u'y'), - (0x1D551, 'X'), - (0x1D552, 'M', u'a'), - (0x1D553, 'M', u'b'), - (0x1D554, 'M', u'c'), - (0x1D555, 'M', u'd'), - (0x1D556, 'M', u'e'), - (0x1D557, 'M', u'f'), - (0x1D558, 'M', u'g'), - (0x1D559, 'M', u'h'), - (0x1D55A, 'M', u'i'), - (0x1D55B, 'M', u'j'), - (0x1D55C, 'M', u'k'), - (0x1D55D, 'M', u'l'), - (0x1D55E, 'M', u'm'), - (0x1D55F, 'M', u'n'), - (0x1D560, 'M', u'o'), - (0x1D561, 'M', u'p'), - (0x1D562, 'M', u'q'), - (0x1D563, 'M', u'r'), - (0x1D564, 'M', u's'), - (0x1D565, 'M', u't'), - (0x1D566, 'M', u'u'), - (0x1D567, 'M', u'v'), - (0x1D568, 'M', u'w'), - (0x1D569, 'M', u'x'), - (0x1D56A, 'M', u'y'), - (0x1D56B, 'M', u'z'), - (0x1D56C, 'M', u'a'), - (0x1D56D, 'M', u'b'), - (0x1D56E, 'M', u'c'), - ] - -def _seg_57(): - return [ - (0x1D56F, 'M', u'd'), - (0x1D570, 'M', u'e'), - (0x1D571, 'M', u'f'), - (0x1D572, 'M', u'g'), - (0x1D573, 'M', u'h'), - (0x1D574, 'M', u'i'), - (0x1D575, 'M', u'j'), - (0x1D576, 'M', u'k'), - (0x1D577, 'M', u'l'), - (0x1D578, 'M', u'm'), - (0x1D579, 'M', u'n'), - (0x1D57A, 'M', u'o'), - (0x1D57B, 'M', u'p'), - (0x1D57C, 'M', u'q'), - (0x1D57D, 'M', u'r'), - (0x1D57E, 'M', u's'), - (0x1D57F, 'M', u't'), - (0x1D580, 'M', u'u'), - (0x1D581, 'M', u'v'), - (0x1D582, 'M', u'w'), - (0x1D583, 'M', u'x'), - (0x1D584, 'M', u'y'), - (0x1D585, 'M', u'z'), - (0x1D586, 'M', u'a'), - (0x1D587, 'M', u'b'), - (0x1D588, 'M', u'c'), - (0x1D589, 'M', u'd'), - (0x1D58A, 'M', u'e'), - (0x1D58B, 'M', u'f'), - (0x1D58C, 'M', u'g'), - (0x1D58D, 'M', u'h'), - (0x1D58E, 'M', u'i'), - (0x1D58F, 'M', u'j'), - (0x1D590, 'M', u'k'), - (0x1D591, 'M', u'l'), - (0x1D592, 'M', u'm'), - (0x1D593, 'M', u'n'), - (0x1D594, 'M', u'o'), - (0x1D595, 'M', u'p'), - (0x1D596, 'M', u'q'), - (0x1D597, 'M', u'r'), - (0x1D598, 'M', u's'), - (0x1D599, 'M', u't'), - (0x1D59A, 'M', u'u'), - (0x1D59B, 'M', u'v'), - (0x1D59C, 'M', u'w'), - (0x1D59D, 'M', u'x'), - (0x1D59E, 'M', u'y'), - (0x1D59F, 'M', u'z'), - (0x1D5A0, 'M', u'a'), - (0x1D5A1, 'M', u'b'), - (0x1D5A2, 'M', u'c'), - (0x1D5A3, 'M', u'd'), - (0x1D5A4, 'M', u'e'), - (0x1D5A5, 'M', u'f'), - (0x1D5A6, 'M', u'g'), - (0x1D5A7, 'M', u'h'), - (0x1D5A8, 'M', u'i'), - (0x1D5A9, 'M', u'j'), - (0x1D5AA, 'M', u'k'), - (0x1D5AB, 'M', u'l'), - (0x1D5AC, 'M', u'm'), - (0x1D5AD, 'M', u'n'), - (0x1D5AE, 'M', u'o'), - (0x1D5AF, 'M', u'p'), - (0x1D5B0, 'M', u'q'), - (0x1D5B1, 'M', u'r'), - (0x1D5B2, 'M', u's'), - (0x1D5B3, 'M', u't'), - (0x1D5B4, 'M', u'u'), - (0x1D5B5, 'M', u'v'), - (0x1D5B6, 'M', u'w'), - (0x1D5B7, 'M', u'x'), - (0x1D5B8, 'M', u'y'), - (0x1D5B9, 'M', u'z'), - (0x1D5BA, 'M', u'a'), - (0x1D5BB, 'M', u'b'), - (0x1D5BC, 'M', u'c'), - (0x1D5BD, 'M', u'd'), - (0x1D5BE, 'M', u'e'), - (0x1D5BF, 'M', u'f'), - (0x1D5C0, 'M', u'g'), - (0x1D5C1, 'M', u'h'), - (0x1D5C2, 'M', u'i'), - (0x1D5C3, 'M', u'j'), - (0x1D5C4, 'M', u'k'), - (0x1D5C5, 'M', u'l'), - (0x1D5C6, 'M', u'm'), - (0x1D5C7, 'M', u'n'), - (0x1D5C8, 'M', u'o'), - (0x1D5C9, 'M', u'p'), - (0x1D5CA, 'M', u'q'), - (0x1D5CB, 'M', u'r'), - (0x1D5CC, 'M', u's'), - (0x1D5CD, 'M', u't'), - (0x1D5CE, 'M', u'u'), - (0x1D5CF, 'M', u'v'), - (0x1D5D0, 'M', u'w'), - (0x1D5D1, 'M', u'x'), - (0x1D5D2, 'M', u'y'), - ] - -def _seg_58(): - return [ - (0x1D5D3, 'M', u'z'), - (0x1D5D4, 'M', u'a'), - (0x1D5D5, 'M', u'b'), - (0x1D5D6, 'M', u'c'), - (0x1D5D7, 'M', u'd'), - (0x1D5D8, 'M', u'e'), - (0x1D5D9, 'M', u'f'), - (0x1D5DA, 'M', u'g'), - (0x1D5DB, 'M', u'h'), - (0x1D5DC, 'M', u'i'), - (0x1D5DD, 'M', u'j'), - (0x1D5DE, 'M', u'k'), - (0x1D5DF, 'M', u'l'), - (0x1D5E0, 'M', u'm'), - (0x1D5E1, 'M', u'n'), - (0x1D5E2, 'M', u'o'), - (0x1D5E3, 'M', u'p'), - (0x1D5E4, 'M', u'q'), - (0x1D5E5, 'M', u'r'), - (0x1D5E6, 'M', u's'), - (0x1D5E7, 'M', u't'), - (0x1D5E8, 'M', u'u'), - (0x1D5E9, 'M', u'v'), - (0x1D5EA, 'M', u'w'), - (0x1D5EB, 'M', u'x'), - (0x1D5EC, 'M', u'y'), - (0x1D5ED, 'M', u'z'), - (0x1D5EE, 'M', u'a'), - (0x1D5EF, 'M', u'b'), - (0x1D5F0, 'M', u'c'), - (0x1D5F1, 'M', u'd'), - (0x1D5F2, 'M', u'e'), - (0x1D5F3, 'M', u'f'), - (0x1D5F4, 'M', u'g'), - (0x1D5F5, 'M', u'h'), - (0x1D5F6, 'M', u'i'), - (0x1D5F7, 'M', u'j'), - (0x1D5F8, 'M', u'k'), - (0x1D5F9, 'M', u'l'), - (0x1D5FA, 'M', u'm'), - (0x1D5FB, 'M', u'n'), - (0x1D5FC, 'M', u'o'), - (0x1D5FD, 'M', u'p'), - (0x1D5FE, 'M', u'q'), - (0x1D5FF, 'M', u'r'), - (0x1D600, 'M', u's'), - (0x1D601, 'M', u't'), - (0x1D602, 'M', u'u'), - (0x1D603, 'M', u'v'), - (0x1D604, 'M', u'w'), - (0x1D605, 'M', u'x'), - (0x1D606, 'M', u'y'), - (0x1D607, 'M', u'z'), - (0x1D608, 'M', u'a'), - (0x1D609, 'M', u'b'), - (0x1D60A, 'M', u'c'), - (0x1D60B, 'M', u'd'), - (0x1D60C, 'M', u'e'), - (0x1D60D, 'M', u'f'), - (0x1D60E, 'M', u'g'), - (0x1D60F, 'M', u'h'), - (0x1D610, 'M', u'i'), - (0x1D611, 'M', u'j'), - (0x1D612, 'M', u'k'), - (0x1D613, 'M', u'l'), - (0x1D614, 'M', u'm'), - (0x1D615, 'M', u'n'), - (0x1D616, 'M', u'o'), - (0x1D617, 'M', u'p'), - (0x1D618, 'M', u'q'), - (0x1D619, 'M', u'r'), - (0x1D61A, 'M', u's'), - (0x1D61B, 'M', u't'), - (0x1D61C, 'M', u'u'), - (0x1D61D, 'M', u'v'), - (0x1D61E, 'M', u'w'), - (0x1D61F, 'M', u'x'), - (0x1D620, 'M', u'y'), - (0x1D621, 'M', u'z'), - (0x1D622, 'M', u'a'), - (0x1D623, 'M', u'b'), - (0x1D624, 'M', u'c'), - (0x1D625, 'M', u'd'), - (0x1D626, 'M', u'e'), - (0x1D627, 'M', u'f'), - (0x1D628, 'M', u'g'), - (0x1D629, 'M', u'h'), - (0x1D62A, 'M', u'i'), - (0x1D62B, 'M', u'j'), - (0x1D62C, 'M', u'k'), - (0x1D62D, 'M', u'l'), - (0x1D62E, 'M', u'm'), - (0x1D62F, 'M', u'n'), - (0x1D630, 'M', u'o'), - (0x1D631, 'M', u'p'), - (0x1D632, 'M', u'q'), - (0x1D633, 'M', u'r'), - (0x1D634, 'M', u's'), - (0x1D635, 'M', u't'), - (0x1D636, 'M', u'u'), - ] - -def _seg_59(): - return [ - (0x1D637, 'M', u'v'), - (0x1D638, 'M', u'w'), - (0x1D639, 'M', u'x'), - (0x1D63A, 'M', u'y'), - (0x1D63B, 'M', u'z'), - (0x1D63C, 'M', u'a'), - (0x1D63D, 'M', u'b'), - (0x1D63E, 'M', u'c'), - (0x1D63F, 'M', u'd'), - (0x1D640, 'M', u'e'), - (0x1D641, 'M', u'f'), - (0x1D642, 'M', u'g'), - (0x1D643, 'M', u'h'), - (0x1D644, 'M', u'i'), - (0x1D645, 'M', u'j'), - (0x1D646, 'M', u'k'), - (0x1D647, 'M', u'l'), - (0x1D648, 'M', u'm'), - (0x1D649, 'M', u'n'), - (0x1D64A, 'M', u'o'), - (0x1D64B, 'M', u'p'), - (0x1D64C, 'M', u'q'), - (0x1D64D, 'M', u'r'), - (0x1D64E, 'M', u's'), - (0x1D64F, 'M', u't'), - (0x1D650, 'M', u'u'), - (0x1D651, 'M', u'v'), - (0x1D652, 'M', u'w'), - (0x1D653, 'M', u'x'), - (0x1D654, 'M', u'y'), - (0x1D655, 'M', u'z'), - (0x1D656, 'M', u'a'), - (0x1D657, 'M', u'b'), - (0x1D658, 'M', u'c'), - (0x1D659, 'M', u'd'), - (0x1D65A, 'M', u'e'), - (0x1D65B, 'M', u'f'), - (0x1D65C, 'M', u'g'), - (0x1D65D, 'M', u'h'), - (0x1D65E, 'M', u'i'), - (0x1D65F, 'M', u'j'), - (0x1D660, 'M', u'k'), - (0x1D661, 'M', u'l'), - (0x1D662, 'M', u'm'), - (0x1D663, 'M', u'n'), - (0x1D664, 'M', u'o'), - (0x1D665, 'M', u'p'), - (0x1D666, 'M', u'q'), - (0x1D667, 'M', u'r'), - (0x1D668, 'M', u's'), - (0x1D669, 'M', u't'), - (0x1D66A, 'M', u'u'), - (0x1D66B, 'M', u'v'), - (0x1D66C, 'M', u'w'), - (0x1D66D, 'M', u'x'), - (0x1D66E, 'M', u'y'), - (0x1D66F, 'M', u'z'), - (0x1D670, 'M', u'a'), - (0x1D671, 'M', u'b'), - (0x1D672, 'M', u'c'), - (0x1D673, 'M', u'd'), - (0x1D674, 'M', u'e'), - (0x1D675, 'M', u'f'), - (0x1D676, 'M', u'g'), - (0x1D677, 'M', u'h'), - (0x1D678, 'M', u'i'), - (0x1D679, 'M', u'j'), - (0x1D67A, 'M', u'k'), - (0x1D67B, 'M', u'l'), - (0x1D67C, 'M', u'm'), - (0x1D67D, 'M', u'n'), - (0x1D67E, 'M', u'o'), - (0x1D67F, 'M', u'p'), - (0x1D680, 'M', u'q'), - (0x1D681, 'M', u'r'), - (0x1D682, 'M', u's'), - (0x1D683, 'M', u't'), - (0x1D684, 'M', u'u'), - (0x1D685, 'M', u'v'), - (0x1D686, 'M', u'w'), - (0x1D687, 'M', u'x'), - (0x1D688, 'M', u'y'), - (0x1D689, 'M', u'z'), - (0x1D68A, 'M', u'a'), - (0x1D68B, 'M', u'b'), - (0x1D68C, 'M', u'c'), - (0x1D68D, 'M', u'd'), - (0x1D68E, 'M', u'e'), - (0x1D68F, 'M', u'f'), - (0x1D690, 'M', u'g'), - (0x1D691, 'M', u'h'), - (0x1D692, 'M', u'i'), - (0x1D693, 'M', u'j'), - (0x1D694, 'M', u'k'), - (0x1D695, 'M', u'l'), - (0x1D696, 'M', u'm'), - (0x1D697, 'M', u'n'), - (0x1D698, 'M', u'o'), - (0x1D699, 'M', u'p'), - (0x1D69A, 'M', u'q'), - ] - -def _seg_60(): - return [ - (0x1D69B, 'M', u'r'), - (0x1D69C, 'M', u's'), - (0x1D69D, 'M', u't'), - (0x1D69E, 'M', u'u'), - (0x1D69F, 'M', u'v'), - (0x1D6A0, 'M', u'w'), - (0x1D6A1, 'M', u'x'), - (0x1D6A2, 'M', u'y'), - (0x1D6A3, 'M', u'z'), - (0x1D6A4, 'M', u'ı'), - (0x1D6A5, 'M', u'ȷ'), - (0x1D6A6, 'X'), - (0x1D6A8, 'M', u'α'), - (0x1D6A9, 'M', u'β'), - (0x1D6AA, 'M', u'γ'), - (0x1D6AB, 'M', u'δ'), - (0x1D6AC, 'M', u'ε'), - (0x1D6AD, 'M', u'ζ'), - (0x1D6AE, 'M', u'η'), - (0x1D6AF, 'M', u'θ'), - (0x1D6B0, 'M', u'ι'), - (0x1D6B1, 'M', u'κ'), - (0x1D6B2, 'M', u'λ'), - (0x1D6B3, 'M', u'μ'), - (0x1D6B4, 'M', u'ν'), - (0x1D6B5, 'M', u'ξ'), - (0x1D6B6, 'M', u'ο'), - (0x1D6B7, 'M', u'π'), - (0x1D6B8, 'M', u'ρ'), - (0x1D6B9, 'M', u'θ'), - (0x1D6BA, 'M', u'σ'), - (0x1D6BB, 'M', u'τ'), - (0x1D6BC, 'M', u'υ'), - (0x1D6BD, 'M', u'φ'), - (0x1D6BE, 'M', u'χ'), - (0x1D6BF, 'M', u'ψ'), - (0x1D6C0, 'M', u'ω'), - (0x1D6C1, 'M', u'∇'), - (0x1D6C2, 'M', u'α'), - (0x1D6C3, 'M', u'β'), - (0x1D6C4, 'M', u'γ'), - (0x1D6C5, 'M', u'δ'), - (0x1D6C6, 'M', u'ε'), - (0x1D6C7, 'M', u'ζ'), - (0x1D6C8, 'M', u'η'), - (0x1D6C9, 'M', u'θ'), - (0x1D6CA, 'M', u'ι'), - (0x1D6CB, 'M', u'κ'), - (0x1D6CC, 'M', u'λ'), - (0x1D6CD, 'M', u'μ'), - (0x1D6CE, 'M', u'ν'), - (0x1D6CF, 'M', u'ξ'), - (0x1D6D0, 'M', u'ο'), - (0x1D6D1, 'M', u'π'), - (0x1D6D2, 'M', u'ρ'), - (0x1D6D3, 'M', u'σ'), - (0x1D6D5, 'M', u'τ'), - (0x1D6D6, 'M', u'υ'), - (0x1D6D7, 'M', u'φ'), - (0x1D6D8, 'M', u'χ'), - (0x1D6D9, 'M', u'ψ'), - (0x1D6DA, 'M', u'ω'), - (0x1D6DB, 'M', u'∂'), - (0x1D6DC, 'M', u'ε'), - (0x1D6DD, 'M', u'θ'), - (0x1D6DE, 'M', u'κ'), - (0x1D6DF, 'M', u'φ'), - (0x1D6E0, 'M', u'ρ'), - (0x1D6E1, 'M', u'π'), - (0x1D6E2, 'M', u'α'), - (0x1D6E3, 'M', u'β'), - (0x1D6E4, 'M', u'γ'), - (0x1D6E5, 'M', u'δ'), - (0x1D6E6, 'M', u'ε'), - (0x1D6E7, 'M', u'ζ'), - (0x1D6E8, 'M', u'η'), - (0x1D6E9, 'M', u'θ'), - (0x1D6EA, 'M', u'ι'), - (0x1D6EB, 'M', u'κ'), - (0x1D6EC, 'M', u'λ'), - (0x1D6ED, 'M', u'μ'), - (0x1D6EE, 'M', u'ν'), - (0x1D6EF, 'M', u'ξ'), - (0x1D6F0, 'M', u'ο'), - (0x1D6F1, 'M', u'π'), - (0x1D6F2, 'M', u'ρ'), - (0x1D6F3, 'M', u'θ'), - (0x1D6F4, 'M', u'σ'), - (0x1D6F5, 'M', u'τ'), - (0x1D6F6, 'M', u'υ'), - (0x1D6F7, 'M', u'φ'), - (0x1D6F8, 'M', u'χ'), - (0x1D6F9, 'M', u'ψ'), - (0x1D6FA, 'M', u'ω'), - (0x1D6FB, 'M', u'∇'), - (0x1D6FC, 'M', u'α'), - (0x1D6FD, 'M', u'β'), - (0x1D6FE, 'M', u'γ'), - (0x1D6FF, 'M', u'δ'), - (0x1D700, 'M', u'ε'), - ] - -def _seg_61(): - return [ - (0x1D701, 'M', u'ζ'), - (0x1D702, 'M', u'η'), - (0x1D703, 'M', u'θ'), - (0x1D704, 'M', u'ι'), - (0x1D705, 'M', u'κ'), - (0x1D706, 'M', u'λ'), - (0x1D707, 'M', u'μ'), - (0x1D708, 'M', u'ν'), - (0x1D709, 'M', u'ξ'), - (0x1D70A, 'M', u'ο'), - (0x1D70B, 'M', u'π'), - (0x1D70C, 'M', u'ρ'), - (0x1D70D, 'M', u'σ'), - (0x1D70F, 'M', u'τ'), - (0x1D710, 'M', u'υ'), - (0x1D711, 'M', u'φ'), - (0x1D712, 'M', u'χ'), - (0x1D713, 'M', u'ψ'), - (0x1D714, 'M', u'ω'), - (0x1D715, 'M', u'∂'), - (0x1D716, 'M', u'ε'), - (0x1D717, 'M', u'θ'), - (0x1D718, 'M', u'κ'), - (0x1D719, 'M', u'φ'), - (0x1D71A, 'M', u'ρ'), - (0x1D71B, 'M', u'π'), - (0x1D71C, 'M', u'α'), - (0x1D71D, 'M', u'β'), - (0x1D71E, 'M', u'γ'), - (0x1D71F, 'M', u'δ'), - (0x1D720, 'M', u'ε'), - (0x1D721, 'M', u'ζ'), - (0x1D722, 'M', u'η'), - (0x1D723, 'M', u'θ'), - (0x1D724, 'M', u'ι'), - (0x1D725, 'M', u'κ'), - (0x1D726, 'M', u'λ'), - (0x1D727, 'M', u'μ'), - (0x1D728, 'M', u'ν'), - (0x1D729, 'M', u'ξ'), - (0x1D72A, 'M', u'ο'), - (0x1D72B, 'M', u'π'), - (0x1D72C, 'M', u'ρ'), - (0x1D72D, 'M', u'θ'), - (0x1D72E, 'M', u'σ'), - (0x1D72F, 'M', u'τ'), - (0x1D730, 'M', u'υ'), - (0x1D731, 'M', u'φ'), - (0x1D732, 'M', u'χ'), - (0x1D733, 'M', u'ψ'), - (0x1D734, 'M', u'ω'), - (0x1D735, 'M', u'∇'), - (0x1D736, 'M', u'α'), - (0x1D737, 'M', u'β'), - (0x1D738, 'M', u'γ'), - (0x1D739, 'M', u'δ'), - (0x1D73A, 'M', u'ε'), - (0x1D73B, 'M', u'ζ'), - (0x1D73C, 'M', u'η'), - (0x1D73D, 'M', u'θ'), - (0x1D73E, 'M', u'ι'), - (0x1D73F, 'M', u'κ'), - (0x1D740, 'M', u'λ'), - (0x1D741, 'M', u'μ'), - (0x1D742, 'M', u'ν'), - (0x1D743, 'M', u'ξ'), - (0x1D744, 'M', u'ο'), - (0x1D745, 'M', u'π'), - (0x1D746, 'M', u'ρ'), - (0x1D747, 'M', u'σ'), - (0x1D749, 'M', u'τ'), - (0x1D74A, 'M', u'υ'), - (0x1D74B, 'M', u'φ'), - (0x1D74C, 'M', u'χ'), - (0x1D74D, 'M', u'ψ'), - (0x1D74E, 'M', u'ω'), - (0x1D74F, 'M', u'∂'), - (0x1D750, 'M', u'ε'), - (0x1D751, 'M', u'θ'), - (0x1D752, 'M', u'κ'), - (0x1D753, 'M', u'φ'), - (0x1D754, 'M', u'ρ'), - (0x1D755, 'M', u'π'), - (0x1D756, 'M', u'α'), - (0x1D757, 'M', u'β'), - (0x1D758, 'M', u'γ'), - (0x1D759, 'M', u'δ'), - (0x1D75A, 'M', u'ε'), - (0x1D75B, 'M', u'ζ'), - (0x1D75C, 'M', u'η'), - (0x1D75D, 'M', u'θ'), - (0x1D75E, 'M', u'ι'), - (0x1D75F, 'M', u'κ'), - (0x1D760, 'M', u'λ'), - (0x1D761, 'M', u'μ'), - (0x1D762, 'M', u'ν'), - (0x1D763, 'M', u'ξ'), - (0x1D764, 'M', u'ο'), - (0x1D765, 'M', u'π'), - (0x1D766, 'M', u'ρ'), - ] - -def _seg_62(): - return [ - (0x1D767, 'M', u'θ'), - (0x1D768, 'M', u'σ'), - (0x1D769, 'M', u'τ'), - (0x1D76A, 'M', u'υ'), - (0x1D76B, 'M', u'φ'), - (0x1D76C, 'M', u'χ'), - (0x1D76D, 'M', u'ψ'), - (0x1D76E, 'M', u'ω'), - (0x1D76F, 'M', u'∇'), - (0x1D770, 'M', u'α'), - (0x1D771, 'M', u'β'), - (0x1D772, 'M', u'γ'), - (0x1D773, 'M', u'δ'), - (0x1D774, 'M', u'ε'), - (0x1D775, 'M', u'ζ'), - (0x1D776, 'M', u'η'), - (0x1D777, 'M', u'θ'), - (0x1D778, 'M', u'ι'), - (0x1D779, 'M', u'κ'), - (0x1D77A, 'M', u'λ'), - (0x1D77B, 'M', u'μ'), - (0x1D77C, 'M', u'ν'), - (0x1D77D, 'M', u'ξ'), - (0x1D77E, 'M', u'ο'), - (0x1D77F, 'M', u'π'), - (0x1D780, 'M', u'ρ'), - (0x1D781, 'M', u'σ'), - (0x1D783, 'M', u'τ'), - (0x1D784, 'M', u'υ'), - (0x1D785, 'M', u'φ'), - (0x1D786, 'M', u'χ'), - (0x1D787, 'M', u'ψ'), - (0x1D788, 'M', u'ω'), - (0x1D789, 'M', u'∂'), - (0x1D78A, 'M', u'ε'), - (0x1D78B, 'M', u'θ'), - (0x1D78C, 'M', u'κ'), - (0x1D78D, 'M', u'φ'), - (0x1D78E, 'M', u'ρ'), - (0x1D78F, 'M', u'π'), - (0x1D790, 'M', u'α'), - (0x1D791, 'M', u'β'), - (0x1D792, 'M', u'γ'), - (0x1D793, 'M', u'δ'), - (0x1D794, 'M', u'ε'), - (0x1D795, 'M', u'ζ'), - (0x1D796, 'M', u'η'), - (0x1D797, 'M', u'θ'), - (0x1D798, 'M', u'ι'), - (0x1D799, 'M', u'κ'), - (0x1D79A, 'M', u'λ'), - (0x1D79B, 'M', u'μ'), - (0x1D79C, 'M', u'ν'), - (0x1D79D, 'M', u'ξ'), - (0x1D79E, 'M', u'ο'), - (0x1D79F, 'M', u'π'), - (0x1D7A0, 'M', u'ρ'), - (0x1D7A1, 'M', u'θ'), - (0x1D7A2, 'M', u'σ'), - (0x1D7A3, 'M', u'τ'), - (0x1D7A4, 'M', u'υ'), - (0x1D7A5, 'M', u'φ'), - (0x1D7A6, 'M', u'χ'), - (0x1D7A7, 'M', u'ψ'), - (0x1D7A8, 'M', u'ω'), - (0x1D7A9, 'M', u'∇'), - (0x1D7AA, 'M', u'α'), - (0x1D7AB, 'M', u'β'), - (0x1D7AC, 'M', u'γ'), - (0x1D7AD, 'M', u'δ'), - (0x1D7AE, 'M', u'ε'), - (0x1D7AF, 'M', u'ζ'), - (0x1D7B0, 'M', u'η'), - (0x1D7B1, 'M', u'θ'), - (0x1D7B2, 'M', u'ι'), - (0x1D7B3, 'M', u'κ'), - (0x1D7B4, 'M', u'λ'), - (0x1D7B5, 'M', u'μ'), - (0x1D7B6, 'M', u'ν'), - (0x1D7B7, 'M', u'ξ'), - (0x1D7B8, 'M', u'ο'), - (0x1D7B9, 'M', u'π'), - (0x1D7BA, 'M', u'ρ'), - (0x1D7BB, 'M', u'σ'), - (0x1D7BD, 'M', u'τ'), - (0x1D7BE, 'M', u'υ'), - (0x1D7BF, 'M', u'φ'), - (0x1D7C0, 'M', u'χ'), - (0x1D7C1, 'M', u'ψ'), - (0x1D7C2, 'M', u'ω'), - (0x1D7C3, 'M', u'∂'), - (0x1D7C4, 'M', u'ε'), - (0x1D7C5, 'M', u'θ'), - (0x1D7C6, 'M', u'κ'), - (0x1D7C7, 'M', u'φ'), - (0x1D7C8, 'M', u'ρ'), - (0x1D7C9, 'M', u'π'), - (0x1D7CA, 'M', u'ϝ'), - (0x1D7CC, 'X'), - (0x1D7CE, 'M', u'0'), - ] - -def _seg_63(): - return [ - (0x1D7CF, 'M', u'1'), - (0x1D7D0, 'M', u'2'), - (0x1D7D1, 'M', u'3'), - (0x1D7D2, 'M', u'4'), - (0x1D7D3, 'M', u'5'), - (0x1D7D4, 'M', u'6'), - (0x1D7D5, 'M', u'7'), - (0x1D7D6, 'M', u'8'), - (0x1D7D7, 'M', u'9'), - (0x1D7D8, 'M', u'0'), - (0x1D7D9, 'M', u'1'), - (0x1D7DA, 'M', u'2'), - (0x1D7DB, 'M', u'3'), - (0x1D7DC, 'M', u'4'), - (0x1D7DD, 'M', u'5'), - (0x1D7DE, 'M', u'6'), - (0x1D7DF, 'M', u'7'), - (0x1D7E0, 'M', u'8'), - (0x1D7E1, 'M', u'9'), - (0x1D7E2, 'M', u'0'), - (0x1D7E3, 'M', u'1'), - (0x1D7E4, 'M', u'2'), - (0x1D7E5, 'M', u'3'), - (0x1D7E6, 'M', u'4'), - (0x1D7E7, 'M', u'5'), - (0x1D7E8, 'M', u'6'), - (0x1D7E9, 'M', u'7'), - (0x1D7EA, 'M', u'8'), - (0x1D7EB, 'M', u'9'), - (0x1D7EC, 'M', u'0'), - (0x1D7ED, 'M', u'1'), - (0x1D7EE, 'M', u'2'), - (0x1D7EF, 'M', u'3'), - (0x1D7F0, 'M', u'4'), - (0x1D7F1, 'M', u'5'), - (0x1D7F2, 'M', u'6'), - (0x1D7F3, 'M', u'7'), - (0x1D7F4, 'M', u'8'), - (0x1D7F5, 'M', u'9'), - (0x1D7F6, 'M', u'0'), - (0x1D7F7, 'M', u'1'), - (0x1D7F8, 'M', u'2'), - (0x1D7F9, 'M', u'3'), - (0x1D7FA, 'M', u'4'), - (0x1D7FB, 'M', u'5'), - (0x1D7FC, 'M', u'6'), - (0x1D7FD, 'M', u'7'), - (0x1D7FE, 'M', u'8'), - (0x1D7FF, 'M', u'9'), - (0x1D800, 'X'), - (0x1EE00, 'M', u'ا'), - (0x1EE01, 'M', u'ب'), - (0x1EE02, 'M', u'ج'), - (0x1EE03, 'M', u'د'), - (0x1EE04, 'X'), - (0x1EE05, 'M', u'و'), - (0x1EE06, 'M', u'ز'), - (0x1EE07, 'M', u'ح'), - (0x1EE08, 'M', u'ط'), - (0x1EE09, 'M', u'ي'), - (0x1EE0A, 'M', u'ك'), - (0x1EE0B, 'M', u'ل'), - (0x1EE0C, 'M', u'م'), - (0x1EE0D, 'M', u'ن'), - (0x1EE0E, 'M', u'س'), - (0x1EE0F, 'M', u'ع'), - (0x1EE10, 'M', u'ف'), - (0x1EE11, 'M', u'ص'), - (0x1EE12, 'M', u'ق'), - (0x1EE13, 'M', u'ر'), - (0x1EE14, 'M', u'ش'), - (0x1EE15, 'M', u'ت'), - (0x1EE16, 'M', u'ث'), - (0x1EE17, 'M', u'خ'), - (0x1EE18, 'M', u'ذ'), - (0x1EE19, 'M', u'ض'), - (0x1EE1A, 'M', u'ظ'), - (0x1EE1B, 'M', u'غ'), - (0x1EE1C, 'M', u'ٮ'), - (0x1EE1D, 'M', u'ں'), - (0x1EE1E, 'M', u'ڡ'), - (0x1EE1F, 'M', u'ٯ'), - (0x1EE20, 'X'), - (0x1EE21, 'M', u'ب'), - (0x1EE22, 'M', u'ج'), - (0x1EE23, 'X'), - (0x1EE24, 'M', u'ه'), - (0x1EE25, 'X'), - (0x1EE27, 'M', u'ح'), - (0x1EE28, 'X'), - (0x1EE29, 'M', u'ي'), - (0x1EE2A, 'M', u'ك'), - (0x1EE2B, 'M', u'ل'), - (0x1EE2C, 'M', u'م'), - (0x1EE2D, 'M', u'ن'), - (0x1EE2E, 'M', u'س'), - (0x1EE2F, 'M', u'ع'), - (0x1EE30, 'M', u'ف'), - (0x1EE31, 'M', u'ص'), - (0x1EE32, 'M', u'ق'), - ] - -def _seg_64(): - return [ - (0x1EE33, 'X'), - (0x1EE34, 'M', u'ش'), - (0x1EE35, 'M', u'ت'), - (0x1EE36, 'M', u'ث'), - (0x1EE37, 'M', u'خ'), - (0x1EE38, 'X'), - (0x1EE39, 'M', u'ض'), - (0x1EE3A, 'X'), - (0x1EE3B, 'M', u'غ'), - (0x1EE3C, 'X'), - (0x1EE42, 'M', u'ج'), - (0x1EE43, 'X'), - (0x1EE47, 'M', u'ح'), - (0x1EE48, 'X'), - (0x1EE49, 'M', u'ي'), - (0x1EE4A, 'X'), - (0x1EE4B, 'M', u'ل'), - (0x1EE4C, 'X'), - (0x1EE4D, 'M', u'ن'), - (0x1EE4E, 'M', u'س'), - (0x1EE4F, 'M', u'ع'), - (0x1EE50, 'X'), - (0x1EE51, 'M', u'ص'), - (0x1EE52, 'M', u'ق'), - (0x1EE53, 'X'), - (0x1EE54, 'M', u'ش'), - (0x1EE55, 'X'), - (0x1EE57, 'M', u'خ'), - (0x1EE58, 'X'), - (0x1EE59, 'M', u'ض'), - (0x1EE5A, 'X'), - (0x1EE5B, 'M', u'غ'), - (0x1EE5C, 'X'), - (0x1EE5D, 'M', u'ں'), - (0x1EE5E, 'X'), - (0x1EE5F, 'M', u'ٯ'), - (0x1EE60, 'X'), - (0x1EE61, 'M', u'ب'), - (0x1EE62, 'M', u'ج'), - (0x1EE63, 'X'), - (0x1EE64, 'M', u'ه'), - (0x1EE65, 'X'), - (0x1EE67, 'M', u'ح'), - (0x1EE68, 'M', u'ط'), - (0x1EE69, 'M', u'ي'), - (0x1EE6A, 'M', u'ك'), - (0x1EE6B, 'X'), - (0x1EE6C, 'M', u'م'), - (0x1EE6D, 'M', u'ن'), - (0x1EE6E, 'M', u'س'), - (0x1EE6F, 'M', u'ع'), - (0x1EE70, 'M', u'ف'), - (0x1EE71, 'M', u'ص'), - (0x1EE72, 'M', u'ق'), - (0x1EE73, 'X'), - (0x1EE74, 'M', u'ش'), - (0x1EE75, 'M', u'ت'), - (0x1EE76, 'M', u'ث'), - (0x1EE77, 'M', u'خ'), - (0x1EE78, 'X'), - (0x1EE79, 'M', u'ض'), - (0x1EE7A, 'M', u'ظ'), - (0x1EE7B, 'M', u'غ'), - (0x1EE7C, 'M', u'ٮ'), - (0x1EE7D, 'X'), - (0x1EE7E, 'M', u'ڡ'), - (0x1EE7F, 'X'), - (0x1EE80, 'M', u'ا'), - (0x1EE81, 'M', u'ب'), - (0x1EE82, 'M', u'ج'), - (0x1EE83, 'M', u'د'), - (0x1EE84, 'M', u'ه'), - (0x1EE85, 'M', u'و'), - (0x1EE86, 'M', u'ز'), - (0x1EE87, 'M', u'ح'), - (0x1EE88, 'M', u'ط'), - (0x1EE89, 'M', u'ي'), - (0x1EE8A, 'X'), - (0x1EE8B, 'M', u'ل'), - (0x1EE8C, 'M', u'م'), - (0x1EE8D, 'M', u'ن'), - (0x1EE8E, 'M', u'س'), - (0x1EE8F, 'M', u'ع'), - (0x1EE90, 'M', u'ف'), - (0x1EE91, 'M', u'ص'), - (0x1EE92, 'M', u'ق'), - (0x1EE93, 'M', u'ر'), - (0x1EE94, 'M', u'ش'), - (0x1EE95, 'M', u'ت'), - (0x1EE96, 'M', u'ث'), - (0x1EE97, 'M', u'خ'), - (0x1EE98, 'M', u'ذ'), - (0x1EE99, 'M', u'ض'), - (0x1EE9A, 'M', u'ظ'), - (0x1EE9B, 'M', u'غ'), - (0x1EE9C, 'X'), - (0x1EEA1, 'M', u'ب'), - (0x1EEA2, 'M', u'ج'), - (0x1EEA3, 'M', u'د'), - (0x1EEA4, 'X'), - ] - -def _seg_65(): - return [ - (0x1EEA5, 'M', u'و'), - (0x1EEA6, 'M', u'ز'), - (0x1EEA7, 'M', u'ح'), - (0x1EEA8, 'M', u'ط'), - (0x1EEA9, 'M', u'ي'), - (0x1EEAA, 'X'), - (0x1EEAB, 'M', u'ل'), - (0x1EEAC, 'M', u'م'), - (0x1EEAD, 'M', u'ن'), - (0x1EEAE, 'M', u'س'), - (0x1EEAF, 'M', u'ع'), - (0x1EEB0, 'M', u'ف'), - (0x1EEB1, 'M', u'ص'), - (0x1EEB2, 'M', u'ق'), - (0x1EEB3, 'M', u'ر'), - (0x1EEB4, 'M', u'ش'), - (0x1EEB5, 'M', u'ت'), - (0x1EEB6, 'M', u'ث'), - (0x1EEB7, 'M', u'خ'), - (0x1EEB8, 'M', u'ذ'), - (0x1EEB9, 'M', u'ض'), - (0x1EEBA, 'M', u'ظ'), - (0x1EEBB, 'M', u'غ'), - (0x1EEBC, 'X'), - (0x1EEF0, 'V'), - (0x1EEF2, 'X'), - (0x1F000, 'V'), - (0x1F02C, 'X'), - (0x1F030, 'V'), - (0x1F094, 'X'), - (0x1F0A0, 'V'), - (0x1F0AF, 'X'), - (0x1F0B1, 'V'), - (0x1F0BF, 'X'), - (0x1F0C1, 'V'), - (0x1F0D0, 'X'), - (0x1F0D1, 'V'), - (0x1F0E0, 'X'), - (0x1F101, '3', u'0,'), - (0x1F102, '3', u'1,'), - (0x1F103, '3', u'2,'), - (0x1F104, '3', u'3,'), - (0x1F105, '3', u'4,'), - (0x1F106, '3', u'5,'), - (0x1F107, '3', u'6,'), - (0x1F108, '3', u'7,'), - (0x1F109, '3', u'8,'), - (0x1F10A, '3', u'9,'), - (0x1F10B, 'X'), - (0x1F110, '3', u'(a)'), - (0x1F111, '3', u'(b)'), - (0x1F112, '3', u'(c)'), - (0x1F113, '3', u'(d)'), - (0x1F114, '3', u'(e)'), - (0x1F115, '3', u'(f)'), - (0x1F116, '3', u'(g)'), - (0x1F117, '3', u'(h)'), - (0x1F118, '3', u'(i)'), - (0x1F119, '3', u'(j)'), - (0x1F11A, '3', u'(k)'), - (0x1F11B, '3', u'(l)'), - (0x1F11C, '3', u'(m)'), - (0x1F11D, '3', u'(n)'), - (0x1F11E, '3', u'(o)'), - (0x1F11F, '3', u'(p)'), - (0x1F120, '3', u'(q)'), - (0x1F121, '3', u'(r)'), - (0x1F122, '3', u'(s)'), - (0x1F123, '3', u'(t)'), - (0x1F124, '3', u'(u)'), - (0x1F125, '3', u'(v)'), - (0x1F126, '3', u'(w)'), - (0x1F127, '3', u'(x)'), - (0x1F128, '3', u'(y)'), - (0x1F129, '3', u'(z)'), - (0x1F12A, 'M', u'〔s〕'), - (0x1F12B, 'M', u'c'), - (0x1F12C, 'M', u'r'), - (0x1F12D, 'M', u'cd'), - (0x1F12E, 'M', u'wz'), - (0x1F12F, 'X'), - (0x1F130, 'M', u'a'), - (0x1F131, 'M', u'b'), - (0x1F132, 'M', u'c'), - (0x1F133, 'M', u'd'), - (0x1F134, 'M', u'e'), - (0x1F135, 'M', u'f'), - (0x1F136, 'M', u'g'), - (0x1F137, 'M', u'h'), - (0x1F138, 'M', u'i'), - (0x1F139, 'M', u'j'), - (0x1F13A, 'M', u'k'), - (0x1F13B, 'M', u'l'), - (0x1F13C, 'M', u'm'), - (0x1F13D, 'M', u'n'), - (0x1F13E, 'M', u'o'), - (0x1F13F, 'M', u'p'), - (0x1F140, 'M', u'q'), - (0x1F141, 'M', u'r'), - (0x1F142, 'M', u's'), - ] - -def _seg_66(): - return [ - (0x1F143, 'M', u't'), - (0x1F144, 'M', u'u'), - (0x1F145, 'M', u'v'), - (0x1F146, 'M', u'w'), - (0x1F147, 'M', u'x'), - (0x1F148, 'M', u'y'), - (0x1F149, 'M', u'z'), - (0x1F14A, 'M', u'hv'), - (0x1F14B, 'M', u'mv'), - (0x1F14C, 'M', u'sd'), - (0x1F14D, 'M', u'ss'), - (0x1F14E, 'M', u'ppv'), - (0x1F14F, 'M', u'wc'), - (0x1F150, 'V'), - (0x1F16A, 'M', u'mc'), - (0x1F16B, 'M', u'md'), - (0x1F16C, 'X'), - (0x1F170, 'V'), - (0x1F190, 'M', u'dj'), - (0x1F191, 'V'), - (0x1F19B, 'X'), - (0x1F1E6, 'V'), - (0x1F200, 'M', u'ほか'), - (0x1F201, 'M', u'ココ'), - (0x1F202, 'M', u'サ'), - (0x1F203, 'X'), - (0x1F210, 'M', u'手'), - (0x1F211, 'M', u'字'), - (0x1F212, 'M', u'双'), - (0x1F213, 'M', u'デ'), - (0x1F214, 'M', u'二'), - (0x1F215, 'M', u'多'), - (0x1F216, 'M', u'解'), - (0x1F217, 'M', u'天'), - (0x1F218, 'M', u'交'), - (0x1F219, 'M', u'映'), - (0x1F21A, 'M', u'無'), - (0x1F21B, 'M', u'料'), - (0x1F21C, 'M', u'前'), - (0x1F21D, 'M', u'後'), - (0x1F21E, 'M', u'再'), - (0x1F21F, 'M', u'新'), - (0x1F220, 'M', u'初'), - (0x1F221, 'M', u'終'), - (0x1F222, 'M', u'生'), - (0x1F223, 'M', u'販'), - (0x1F224, 'M', u'声'), - (0x1F225, 'M', u'吹'), - (0x1F226, 'M', u'演'), - (0x1F227, 'M', u'投'), - (0x1F228, 'M', u'捕'), - (0x1F229, 'M', u'一'), - (0x1F22A, 'M', u'三'), - (0x1F22B, 'M', u'遊'), - (0x1F22C, 'M', u'左'), - (0x1F22D, 'M', u'中'), - (0x1F22E, 'M', u'右'), - (0x1F22F, 'M', u'指'), - (0x1F230, 'M', u'走'), - (0x1F231, 'M', u'打'), - (0x1F232, 'M', u'禁'), - (0x1F233, 'M', u'空'), - (0x1F234, 'M', u'合'), - (0x1F235, 'M', u'満'), - (0x1F236, 'M', u'有'), - (0x1F237, 'M', u'月'), - (0x1F238, 'M', u'申'), - (0x1F239, 'M', u'割'), - (0x1F23A, 'M', u'営'), - (0x1F23B, 'X'), - (0x1F240, 'M', u'〔本〕'), - (0x1F241, 'M', u'〔三〕'), - (0x1F242, 'M', u'〔二〕'), - (0x1F243, 'M', u'〔安〕'), - (0x1F244, 'M', u'〔点〕'), - (0x1F245, 'M', u'〔打〕'), - (0x1F246, 'M', u'〔盗〕'), - (0x1F247, 'M', u'〔勝〕'), - (0x1F248, 'M', u'〔敗〕'), - (0x1F249, 'X'), - (0x1F250, 'M', u'得'), - (0x1F251, 'M', u'可'), - (0x1F252, 'X'), - (0x1F300, 'V'), - (0x1F321, 'X'), - (0x1F330, 'V'), - (0x1F336, 'X'), - (0x1F337, 'V'), - (0x1F37D, 'X'), - (0x1F380, 'V'), - (0x1F394, 'X'), - (0x1F3A0, 'V'), - (0x1F3C5, 'X'), - (0x1F3C6, 'V'), - (0x1F3CB, 'X'), - (0x1F3E0, 'V'), - (0x1F3F1, 'X'), - (0x1F400, 'V'), - (0x1F43F, 'X'), - (0x1F440, 'V'), - ] - -def _seg_67(): - return [ - (0x1F441, 'X'), - (0x1F442, 'V'), - (0x1F4F8, 'X'), - (0x1F4F9, 'V'), - (0x1F4FD, 'X'), - (0x1F500, 'V'), - (0x1F53E, 'X'), - (0x1F540, 'V'), - (0x1F544, 'X'), - (0x1F550, 'V'), - (0x1F568, 'X'), - (0x1F5FB, 'V'), - (0x1F641, 'X'), - (0x1F645, 'V'), - (0x1F650, 'X'), - (0x1F680, 'V'), - (0x1F6C6, 'X'), - (0x1F700, 'V'), - (0x1F774, 'X'), - (0x20000, 'V'), - (0x2A6D7, 'X'), - (0x2A700, 'V'), - (0x2B735, 'X'), - (0x2B740, 'V'), - (0x2B81E, 'X'), - (0x2F800, 'M', u'丽'), - (0x2F801, 'M', u'丸'), - (0x2F802, 'M', u'乁'), - (0x2F803, 'M', u'𠄢'), - (0x2F804, 'M', u'你'), - (0x2F805, 'M', u'侮'), - (0x2F806, 'M', u'侻'), - (0x2F807, 'M', u'倂'), - (0x2F808, 'M', u'偺'), - (0x2F809, 'M', u'備'), - (0x2F80A, 'M', u'僧'), - (0x2F80B, 'M', u'像'), - (0x2F80C, 'M', u'㒞'), - (0x2F80D, 'M', u'𠘺'), - (0x2F80E, 'M', u'免'), - (0x2F80F, 'M', u'兔'), - (0x2F810, 'M', u'兤'), - (0x2F811, 'M', u'具'), - (0x2F812, 'M', u'𠔜'), - (0x2F813, 'M', u'㒹'), - (0x2F814, 'M', u'內'), - (0x2F815, 'M', u'再'), - (0x2F816, 'M', u'𠕋'), - (0x2F817, 'M', u'冗'), - (0x2F818, 'M', u'冤'), - (0x2F819, 'M', u'仌'), - (0x2F81A, 'M', u'冬'), - (0x2F81B, 'M', u'况'), - (0x2F81C, 'M', u'𩇟'), - (0x2F81D, 'M', u'凵'), - (0x2F81E, 'M', u'刃'), - (0x2F81F, 'M', u'㓟'), - (0x2F820, 'M', u'刻'), - (0x2F821, 'M', u'剆'), - (0x2F822, 'M', u'割'), - (0x2F823, 'M', u'剷'), - (0x2F824, 'M', u'㔕'), - (0x2F825, 'M', u'勇'), - (0x2F826, 'M', u'勉'), - (0x2F827, 'M', u'勤'), - (0x2F828, 'M', u'勺'), - (0x2F829, 'M', u'包'), - (0x2F82A, 'M', u'匆'), - (0x2F82B, 'M', u'北'), - (0x2F82C, 'M', u'卉'), - (0x2F82D, 'M', u'卑'), - (0x2F82E, 'M', u'博'), - (0x2F82F, 'M', u'即'), - (0x2F830, 'M', u'卽'), - (0x2F831, 'M', u'卿'), - (0x2F834, 'M', u'𠨬'), - (0x2F835, 'M', u'灰'), - (0x2F836, 'M', u'及'), - (0x2F837, 'M', u'叟'), - (0x2F838, 'M', u'𠭣'), - (0x2F839, 'M', u'叫'), - (0x2F83A, 'M', u'叱'), - (0x2F83B, 'M', u'吆'), - (0x2F83C, 'M', u'咞'), - (0x2F83D, 'M', u'吸'), - (0x2F83E, 'M', u'呈'), - (0x2F83F, 'M', u'周'), - (0x2F840, 'M', u'咢'), - (0x2F841, 'M', u'哶'), - (0x2F842, 'M', u'唐'), - (0x2F843, 'M', u'啓'), - (0x2F844, 'M', u'啣'), - (0x2F845, 'M', u'善'), - (0x2F847, 'M', u'喙'), - (0x2F848, 'M', u'喫'), - (0x2F849, 'M', u'喳'), - (0x2F84A, 'M', u'嗂'), - (0x2F84B, 'M', u'圖'), - (0x2F84C, 'M', u'嘆'), - (0x2F84D, 'M', u'圗'), - ] - -def _seg_68(): - return [ - (0x2F84E, 'M', u'噑'), - (0x2F84F, 'M', u'噴'), - (0x2F850, 'M', u'切'), - (0x2F851, 'M', u'壮'), - (0x2F852, 'M', u'城'), - (0x2F853, 'M', u'埴'), - (0x2F854, 'M', u'堍'), - (0x2F855, 'M', u'型'), - (0x2F856, 'M', u'堲'), - (0x2F857, 'M', u'報'), - (0x2F858, 'M', u'墬'), - (0x2F859, 'M', u'𡓤'), - (0x2F85A, 'M', u'売'), - (0x2F85B, 'M', u'壷'), - (0x2F85C, 'M', u'夆'), - (0x2F85D, 'M', u'多'), - (0x2F85E, 'M', u'夢'), - (0x2F85F, 'M', u'奢'), - (0x2F860, 'M', u'𡚨'), - (0x2F861, 'M', u'𡛪'), - (0x2F862, 'M', u'姬'), - (0x2F863, 'M', u'娛'), - (0x2F864, 'M', u'娧'), - (0x2F865, 'M', u'姘'), - (0x2F866, 'M', u'婦'), - (0x2F867, 'M', u'㛮'), - (0x2F868, 'X'), - (0x2F869, 'M', u'嬈'), - (0x2F86A, 'M', u'嬾'), - (0x2F86C, 'M', u'𡧈'), - (0x2F86D, 'M', u'寃'), - (0x2F86E, 'M', u'寘'), - (0x2F86F, 'M', u'寧'), - (0x2F870, 'M', u'寳'), - (0x2F871, 'M', u'𡬘'), - (0x2F872, 'M', u'寿'), - (0x2F873, 'M', u'将'), - (0x2F874, 'X'), - (0x2F875, 'M', u'尢'), - (0x2F876, 'M', u'㞁'), - (0x2F877, 'M', u'屠'), - (0x2F878, 'M', u'屮'), - (0x2F879, 'M', u'峀'), - (0x2F87A, 'M', u'岍'), - (0x2F87B, 'M', u'𡷤'), - (0x2F87C, 'M', u'嵃'), - (0x2F87D, 'M', u'𡷦'), - (0x2F87E, 'M', u'嵮'), - (0x2F87F, 'M', u'嵫'), - (0x2F880, 'M', u'嵼'), - (0x2F881, 'M', u'巡'), - (0x2F882, 'M', u'巢'), - (0x2F883, 'M', u'㠯'), - (0x2F884, 'M', u'巽'), - (0x2F885, 'M', u'帨'), - (0x2F886, 'M', u'帽'), - (0x2F887, 'M', u'幩'), - (0x2F888, 'M', u'㡢'), - (0x2F889, 'M', u'𢆃'), - (0x2F88A, 'M', u'㡼'), - (0x2F88B, 'M', u'庰'), - (0x2F88C, 'M', u'庳'), - (0x2F88D, 'M', u'庶'), - (0x2F88E, 'M', u'廊'), - (0x2F88F, 'M', u'𪎒'), - (0x2F890, 'M', u'廾'), - (0x2F891, 'M', u'𢌱'), - (0x2F893, 'M', u'舁'), - (0x2F894, 'M', u'弢'), - (0x2F896, 'M', u'㣇'), - (0x2F897, 'M', u'𣊸'), - (0x2F898, 'M', u'𦇚'), - (0x2F899, 'M', u'形'), - (0x2F89A, 'M', u'彫'), - (0x2F89B, 'M', u'㣣'), - (0x2F89C, 'M', u'徚'), - (0x2F89D, 'M', u'忍'), - (0x2F89E, 'M', u'志'), - (0x2F89F, 'M', u'忹'), - (0x2F8A0, 'M', u'悁'), - (0x2F8A1, 'M', u'㤺'), - (0x2F8A2, 'M', u'㤜'), - (0x2F8A3, 'M', u'悔'), - (0x2F8A4, 'M', u'𢛔'), - (0x2F8A5, 'M', u'惇'), - (0x2F8A6, 'M', u'慈'), - (0x2F8A7, 'M', u'慌'), - (0x2F8A8, 'M', u'慎'), - (0x2F8A9, 'M', u'慌'), - (0x2F8AA, 'M', u'慺'), - (0x2F8AB, 'M', u'憎'), - (0x2F8AC, 'M', u'憲'), - (0x2F8AD, 'M', u'憤'), - (0x2F8AE, 'M', u'憯'), - (0x2F8AF, 'M', u'懞'), - (0x2F8B0, 'M', u'懲'), - (0x2F8B1, 'M', u'懶'), - (0x2F8B2, 'M', u'成'), - (0x2F8B3, 'M', u'戛'), - (0x2F8B4, 'M', u'扝'), - ] - -def _seg_69(): - return [ - (0x2F8B5, 'M', u'抱'), - (0x2F8B6, 'M', u'拔'), - (0x2F8B7, 'M', u'捐'), - (0x2F8B8, 'M', u'𢬌'), - (0x2F8B9, 'M', u'挽'), - (0x2F8BA, 'M', u'拼'), - (0x2F8BB, 'M', u'捨'), - (0x2F8BC, 'M', u'掃'), - (0x2F8BD, 'M', u'揤'), - (0x2F8BE, 'M', u'𢯱'), - (0x2F8BF, 'M', u'搢'), - (0x2F8C0, 'M', u'揅'), - (0x2F8C1, 'M', u'掩'), - (0x2F8C2, 'M', u'㨮'), - (0x2F8C3, 'M', u'摩'), - (0x2F8C4, 'M', u'摾'), - (0x2F8C5, 'M', u'撝'), - (0x2F8C6, 'M', u'摷'), - (0x2F8C7, 'M', u'㩬'), - (0x2F8C8, 'M', u'敏'), - (0x2F8C9, 'M', u'敬'), - (0x2F8CA, 'M', u'𣀊'), - (0x2F8CB, 'M', u'旣'), - (0x2F8CC, 'M', u'書'), - (0x2F8CD, 'M', u'晉'), - (0x2F8CE, 'M', u'㬙'), - (0x2F8CF, 'M', u'暑'), - (0x2F8D0, 'M', u'㬈'), - (0x2F8D1, 'M', u'㫤'), - (0x2F8D2, 'M', u'冒'), - (0x2F8D3, 'M', u'冕'), - (0x2F8D4, 'M', u'最'), - (0x2F8D5, 'M', u'暜'), - (0x2F8D6, 'M', u'肭'), - (0x2F8D7, 'M', u'䏙'), - (0x2F8D8, 'M', u'朗'), - (0x2F8D9, 'M', u'望'), - (0x2F8DA, 'M', u'朡'), - (0x2F8DB, 'M', u'杞'), - (0x2F8DC, 'M', u'杓'), - (0x2F8DD, 'M', u'𣏃'), - (0x2F8DE, 'M', u'㭉'), - (0x2F8DF, 'M', u'柺'), - (0x2F8E0, 'M', u'枅'), - (0x2F8E1, 'M', u'桒'), - (0x2F8E2, 'M', u'梅'), - (0x2F8E3, 'M', u'𣑭'), - (0x2F8E4, 'M', u'梎'), - (0x2F8E5, 'M', u'栟'), - (0x2F8E6, 'M', u'椔'), - (0x2F8E7, 'M', u'㮝'), - (0x2F8E8, 'M', u'楂'), - (0x2F8E9, 'M', u'榣'), - (0x2F8EA, 'M', u'槪'), - (0x2F8EB, 'M', u'檨'), - (0x2F8EC, 'M', u'𣚣'), - (0x2F8ED, 'M', u'櫛'), - (0x2F8EE, 'M', u'㰘'), - (0x2F8EF, 'M', u'次'), - (0x2F8F0, 'M', u'𣢧'), - (0x2F8F1, 'M', u'歔'), - (0x2F8F2, 'M', u'㱎'), - (0x2F8F3, 'M', u'歲'), - (0x2F8F4, 'M', u'殟'), - (0x2F8F5, 'M', u'殺'), - (0x2F8F6, 'M', u'殻'), - (0x2F8F7, 'M', u'𣪍'), - (0x2F8F8, 'M', u'𡴋'), - (0x2F8F9, 'M', u'𣫺'), - (0x2F8FA, 'M', u'汎'), - (0x2F8FB, 'M', u'𣲼'), - (0x2F8FC, 'M', u'沿'), - (0x2F8FD, 'M', u'泍'), - (0x2F8FE, 'M', u'汧'), - (0x2F8FF, 'M', u'洖'), - (0x2F900, 'M', u'派'), - (0x2F901, 'M', u'海'), - (0x2F902, 'M', u'流'), - (0x2F903, 'M', u'浩'), - (0x2F904, 'M', u'浸'), - (0x2F905, 'M', u'涅'), - (0x2F906, 'M', u'𣴞'), - (0x2F907, 'M', u'洴'), - (0x2F908, 'M', u'港'), - (0x2F909, 'M', u'湮'), - (0x2F90A, 'M', u'㴳'), - (0x2F90B, 'M', u'滋'), - (0x2F90C, 'M', u'滇'), - (0x2F90D, 'M', u'𣻑'), - (0x2F90E, 'M', u'淹'), - (0x2F90F, 'M', u'潮'), - (0x2F910, 'M', u'𣽞'), - (0x2F911, 'M', u'𣾎'), - (0x2F912, 'M', u'濆'), - (0x2F913, 'M', u'瀹'), - (0x2F914, 'M', u'瀞'), - (0x2F915, 'M', u'瀛'), - (0x2F916, 'M', u'㶖'), - (0x2F917, 'M', u'灊'), - (0x2F918, 'M', u'災'), - ] - -def _seg_70(): - return [ - (0x2F919, 'M', u'灷'), - (0x2F91A, 'M', u'炭'), - (0x2F91B, 'M', u'𠔥'), - (0x2F91C, 'M', u'煅'), - (0x2F91D, 'M', u'𤉣'), - (0x2F91E, 'M', u'熜'), - (0x2F91F, 'X'), - (0x2F920, 'M', u'爨'), - (0x2F921, 'M', u'爵'), - (0x2F922, 'M', u'牐'), - (0x2F923, 'M', u'𤘈'), - (0x2F924, 'M', u'犀'), - (0x2F925, 'M', u'犕'), - (0x2F926, 'M', u'𤜵'), - (0x2F927, 'M', u'𤠔'), - (0x2F928, 'M', u'獺'), - (0x2F929, 'M', u'王'), - (0x2F92A, 'M', u'㺬'), - (0x2F92B, 'M', u'玥'), - (0x2F92C, 'M', u'㺸'), - (0x2F92E, 'M', u'瑇'), - (0x2F92F, 'M', u'瑜'), - (0x2F930, 'M', u'瑱'), - (0x2F931, 'M', u'璅'), - (0x2F932, 'M', u'瓊'), - (0x2F933, 'M', u'㼛'), - (0x2F934, 'M', u'甤'), - (0x2F935, 'M', u'𤰶'), - (0x2F936, 'M', u'甾'), - (0x2F937, 'M', u'𤲒'), - (0x2F938, 'M', u'異'), - (0x2F939, 'M', u'𢆟'), - (0x2F93A, 'M', u'瘐'), - (0x2F93B, 'M', u'𤾡'), - (0x2F93C, 'M', u'𤾸'), - (0x2F93D, 'M', u'𥁄'), - (0x2F93E, 'M', u'㿼'), - (0x2F93F, 'M', u'䀈'), - (0x2F940, 'M', u'直'), - (0x2F941, 'M', u'𥃳'), - (0x2F942, 'M', u'𥃲'), - (0x2F943, 'M', u'𥄙'), - (0x2F944, 'M', u'𥄳'), - (0x2F945, 'M', u'眞'), - (0x2F946, 'M', u'真'), - (0x2F948, 'M', u'睊'), - (0x2F949, 'M', u'䀹'), - (0x2F94A, 'M', u'瞋'), - (0x2F94B, 'M', u'䁆'), - (0x2F94C, 'M', u'䂖'), - (0x2F94D, 'M', u'𥐝'), - (0x2F94E, 'M', u'硎'), - (0x2F94F, 'M', u'碌'), - (0x2F950, 'M', u'磌'), - (0x2F951, 'M', u'䃣'), - (0x2F952, 'M', u'𥘦'), - (0x2F953, 'M', u'祖'), - (0x2F954, 'M', u'𥚚'), - (0x2F955, 'M', u'𥛅'), - (0x2F956, 'M', u'福'), - (0x2F957, 'M', u'秫'), - (0x2F958, 'M', u'䄯'), - (0x2F959, 'M', u'穀'), - (0x2F95A, 'M', u'穊'), - (0x2F95B, 'M', u'穏'), - (0x2F95C, 'M', u'𥥼'), - (0x2F95D, 'M', u'𥪧'), - (0x2F95F, 'X'), - (0x2F960, 'M', u'䈂'), - (0x2F961, 'M', u'𥮫'), - (0x2F962, 'M', u'篆'), - (0x2F963, 'M', u'築'), - (0x2F964, 'M', u'䈧'), - (0x2F965, 'M', u'𥲀'), - (0x2F966, 'M', u'糒'), - (0x2F967, 'M', u'䊠'), - (0x2F968, 'M', u'糨'), - (0x2F969, 'M', u'糣'), - (0x2F96A, 'M', u'紀'), - (0x2F96B, 'M', u'𥾆'), - (0x2F96C, 'M', u'絣'), - (0x2F96D, 'M', u'䌁'), - (0x2F96E, 'M', u'緇'), - (0x2F96F, 'M', u'縂'), - (0x2F970, 'M', u'繅'), - (0x2F971, 'M', u'䌴'), - (0x2F972, 'M', u'𦈨'), - (0x2F973, 'M', u'𦉇'), - (0x2F974, 'M', u'䍙'), - (0x2F975, 'M', u'𦋙'), - (0x2F976, 'M', u'罺'), - (0x2F977, 'M', u'𦌾'), - (0x2F978, 'M', u'羕'), - (0x2F979, 'M', u'翺'), - (0x2F97A, 'M', u'者'), - (0x2F97B, 'M', u'𦓚'), - (0x2F97C, 'M', u'𦔣'), - (0x2F97D, 'M', u'聠'), - (0x2F97E, 'M', u'𦖨'), - (0x2F97F, 'M', u'聰'), - ] - -def _seg_71(): - return [ - (0x2F980, 'M', u'𣍟'), - (0x2F981, 'M', u'䏕'), - (0x2F982, 'M', u'育'), - (0x2F983, 'M', u'脃'), - (0x2F984, 'M', u'䐋'), - (0x2F985, 'M', u'脾'), - (0x2F986, 'M', u'媵'), - (0x2F987, 'M', u'𦞧'), - (0x2F988, 'M', u'𦞵'), - (0x2F989, 'M', u'𣎓'), - (0x2F98A, 'M', u'𣎜'), - (0x2F98B, 'M', u'舁'), - (0x2F98C, 'M', u'舄'), - (0x2F98D, 'M', u'辞'), - (0x2F98E, 'M', u'䑫'), - (0x2F98F, 'M', u'芑'), - (0x2F990, 'M', u'芋'), - (0x2F991, 'M', u'芝'), - (0x2F992, 'M', u'劳'), - (0x2F993, 'M', u'花'), - (0x2F994, 'M', u'芳'), - (0x2F995, 'M', u'芽'), - (0x2F996, 'M', u'苦'), - (0x2F997, 'M', u'𦬼'), - (0x2F998, 'M', u'若'), - (0x2F999, 'M', u'茝'), - (0x2F99A, 'M', u'荣'), - (0x2F99B, 'M', u'莭'), - (0x2F99C, 'M', u'茣'), - (0x2F99D, 'M', u'莽'), - (0x2F99E, 'M', u'菧'), - (0x2F99F, 'M', u'著'), - (0x2F9A0, 'M', u'荓'), - (0x2F9A1, 'M', u'菊'), - (0x2F9A2, 'M', u'菌'), - (0x2F9A3, 'M', u'菜'), - (0x2F9A4, 'M', u'𦰶'), - (0x2F9A5, 'M', u'𦵫'), - (0x2F9A6, 'M', u'𦳕'), - (0x2F9A7, 'M', u'䔫'), - (0x2F9A8, 'M', u'蓱'), - (0x2F9A9, 'M', u'蓳'), - (0x2F9AA, 'M', u'蔖'), - (0x2F9AB, 'M', u'𧏊'), - (0x2F9AC, 'M', u'蕤'), - (0x2F9AD, 'M', u'𦼬'), - (0x2F9AE, 'M', u'䕝'), - (0x2F9AF, 'M', u'䕡'), - (0x2F9B0, 'M', u'𦾱'), - (0x2F9B1, 'M', u'𧃒'), - (0x2F9B2, 'M', u'䕫'), - (0x2F9B3, 'M', u'虐'), - (0x2F9B4, 'M', u'虜'), - (0x2F9B5, 'M', u'虧'), - (0x2F9B6, 'M', u'虩'), - (0x2F9B7, 'M', u'蚩'), - (0x2F9B8, 'M', u'蚈'), - (0x2F9B9, 'M', u'蜎'), - (0x2F9BA, 'M', u'蛢'), - (0x2F9BB, 'M', u'蝹'), - (0x2F9BC, 'M', u'蜨'), - (0x2F9BD, 'M', u'蝫'), - (0x2F9BE, 'M', u'螆'), - (0x2F9BF, 'X'), - (0x2F9C0, 'M', u'蟡'), - (0x2F9C1, 'M', u'蠁'), - (0x2F9C2, 'M', u'䗹'), - (0x2F9C3, 'M', u'衠'), - (0x2F9C4, 'M', u'衣'), - (0x2F9C5, 'M', u'𧙧'), - (0x2F9C6, 'M', u'裗'), - (0x2F9C7, 'M', u'裞'), - (0x2F9C8, 'M', u'䘵'), - (0x2F9C9, 'M', u'裺'), - (0x2F9CA, 'M', u'㒻'), - (0x2F9CB, 'M', u'𧢮'), - (0x2F9CC, 'M', u'𧥦'), - (0x2F9CD, 'M', u'䚾'), - (0x2F9CE, 'M', u'䛇'), - (0x2F9CF, 'M', u'誠'), - (0x2F9D0, 'M', u'諭'), - (0x2F9D1, 'M', u'變'), - (0x2F9D2, 'M', u'豕'), - (0x2F9D3, 'M', u'𧲨'), - (0x2F9D4, 'M', u'貫'), - (0x2F9D5, 'M', u'賁'), - (0x2F9D6, 'M', u'贛'), - (0x2F9D7, 'M', u'起'), - (0x2F9D8, 'M', u'𧼯'), - (0x2F9D9, 'M', u'𠠄'), - (0x2F9DA, 'M', u'跋'), - (0x2F9DB, 'M', u'趼'), - (0x2F9DC, 'M', u'跰'), - (0x2F9DD, 'M', u'𠣞'), - (0x2F9DE, 'M', u'軔'), - (0x2F9DF, 'M', u'輸'), - (0x2F9E0, 'M', u'𨗒'), - (0x2F9E1, 'M', u'𨗭'), - (0x2F9E2, 'M', u'邔'), - (0x2F9E3, 'M', u'郱'), - ] - -def _seg_72(): - return [ - (0x2F9E4, 'M', u'鄑'), - (0x2F9E5, 'M', u'𨜮'), - (0x2F9E6, 'M', u'鄛'), - (0x2F9E7, 'M', u'鈸'), - (0x2F9E8, 'M', u'鋗'), - (0x2F9E9, 'M', u'鋘'), - (0x2F9EA, 'M', u'鉼'), - (0x2F9EB, 'M', u'鏹'), - (0x2F9EC, 'M', u'鐕'), - (0x2F9ED, 'M', u'𨯺'), - (0x2F9EE, 'M', u'開'), - (0x2F9EF, 'M', u'䦕'), - (0x2F9F0, 'M', u'閷'), - (0x2F9F1, 'M', u'𨵷'), - (0x2F9F2, 'M', u'䧦'), - (0x2F9F3, 'M', u'雃'), - (0x2F9F4, 'M', u'嶲'), - (0x2F9F5, 'M', u'霣'), - (0x2F9F6, 'M', u'𩅅'), - (0x2F9F7, 'M', u'𩈚'), - (0x2F9F8, 'M', u'䩮'), - (0x2F9F9, 'M', u'䩶'), - (0x2F9FA, 'M', u'韠'), - (0x2F9FB, 'M', u'𩐊'), - (0x2F9FC, 'M', u'䪲'), - (0x2F9FD, 'M', u'𩒖'), - (0x2F9FE, 'M', u'頋'), - (0x2FA00, 'M', u'頩'), - (0x2FA01, 'M', u'𩖶'), - (0x2FA02, 'M', u'飢'), - (0x2FA03, 'M', u'䬳'), - (0x2FA04, 'M', u'餩'), - (0x2FA05, 'M', u'馧'), - (0x2FA06, 'M', u'駂'), - (0x2FA07, 'M', u'駾'), - (0x2FA08, 'M', u'䯎'), - (0x2FA09, 'M', u'𩬰'), - (0x2FA0A, 'M', u'鬒'), - (0x2FA0B, 'M', u'鱀'), - (0x2FA0C, 'M', u'鳽'), - (0x2FA0D, 'M', u'䳎'), - (0x2FA0E, 'M', u'䳭'), - (0x2FA0F, 'M', u'鵧'), - (0x2FA10, 'M', u'𪃎'), - (0x2FA11, 'M', u'䳸'), - (0x2FA12, 'M', u'𪄅'), - (0x2FA13, 'M', u'𪈎'), - (0x2FA14, 'M', u'𪊑'), - (0x2FA15, 'M', u'麻'), - (0x2FA16, 'M', u'䵖'), - (0x2FA17, 'M', u'黹'), - (0x2FA18, 'M', u'黾'), - (0x2FA19, 'M', u'鼅'), - (0x2FA1A, 'M', u'鼏'), - (0x2FA1B, 'M', u'鼖'), - (0x2FA1C, 'M', u'鼻'), - (0x2FA1D, 'M', u'𪘀'), - (0x2FA1E, 'X'), - (0xE0100, 'I'), - (0xE01F0, 'X'), - ] - -uts46data = tuple( - _seg_0() - + _seg_1() - + _seg_2() - + _seg_3() - + _seg_4() - + _seg_5() - + _seg_6() - + _seg_7() - + _seg_8() - + _seg_9() - + _seg_10() - + _seg_11() - + _seg_12() - + _seg_13() - + _seg_14() - + _seg_15() - + _seg_16() - + _seg_17() - + _seg_18() - + _seg_19() - + _seg_20() - + _seg_21() - + _seg_22() - + _seg_23() - + _seg_24() - + _seg_25() - + _seg_26() - + _seg_27() - + _seg_28() - + _seg_29() - + _seg_30() - + _seg_31() - + _seg_32() - + _seg_33() - + _seg_34() - + _seg_35() - + _seg_36() - + _seg_37() - + _seg_38() - + _seg_39() - + _seg_40() - + _seg_41() - + _seg_42() - + _seg_43() - + _seg_44() - + _seg_45() - + _seg_46() - + _seg_47() - + _seg_48() - + _seg_49() - + _seg_50() - + _seg_51() - + _seg_52() - + _seg_53() - + _seg_54() - + _seg_55() - + _seg_56() - + _seg_57() - + _seg_58() - + _seg_59() - + _seg_60() - + _seg_61() - + _seg_62() - + _seg_63() - + _seg_64() - + _seg_65() - + _seg_66() - + _seg_67() - + _seg_68() - + _seg_69() - + _seg_70() - + _seg_71() - + _seg_72() -) diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst deleted file mode 100644 index 8ef94c4..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,39 +0,0 @@ -pip -=== - -The `PyPA recommended -`_ -tool for installing Python packages. - -* `Installation `_ -* `Documentation `_ -* `Changelog `_ -* `Github Page `_ -* `Issue Tracking `_ -* `User mailing list `_ -* `Dev mailing list `_ -* User IRC: #pypa on Freenode. -* Dev IRC: #pypa-dev on Freenode. - - -.. image:: https://img.shields.io/pypi/v/pip.svg - :target: https://pypi.python.org/pypi/pip - -.. image:: https://img.shields.io/travis/pypa/pip/master.svg - :target: http://travis-ci.org/pypa/pip - -.. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg - :target: https://ci.appveyor.com/project/pypa/pip/history - -.. image:: https://readthedocs.org/projects/pip/badge/?version=stable - :target: https://pip.pypa.io/en/stable - -Code of Conduct ---------------- - -Everyone interacting in the pip project's codebases, issue trackers, chat -rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. - -.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ - - diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER deleted file mode 100644 index a1b589e..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA deleted file mode 100644 index 600a905..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/METADATA +++ /dev/null @@ -1,69 +0,0 @@ -Metadata-Version: 2.0 -Name: pip -Version: 9.0.1 -Summary: The PyPA recommended tool for installing Python packages. -Home-page: https://pip.pypa.io/ -Author: The pip developers -Author-email: python-virtualenv@groups.google.com -License: MIT -Keywords: easy_install distutils setuptools egg virtualenv -Platform: UNKNOWN -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Topic :: Software Development :: Build Tools -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.6 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.3 -Classifier: Programming Language :: Python :: 3.4 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=2.6,!=3.0.*,!=3.1.*,!=3.2.* -Provides-Extra: testing -Requires-Dist: mock; extra == 'testing' -Requires-Dist: pretend; extra == 'testing' -Requires-Dist: pytest; extra == 'testing' -Requires-Dist: scripttest (>=1.3); extra == 'testing' -Requires-Dist: virtualenv (>=1.10); extra == 'testing' - -pip -=== - -The `PyPA recommended -`_ -tool for installing Python packages. - -* `Installation `_ -* `Documentation `_ -* `Changelog `_ -* `Github Page `_ -* `Issue Tracking `_ -* `User mailing list `_ -* `Dev mailing list `_ -* User IRC: #pypa on Freenode. -* Dev IRC: #pypa-dev on Freenode. - - -.. image:: https://img.shields.io/pypi/v/pip.svg - :target: https://pypi.python.org/pypi/pip - -.. image:: https://img.shields.io/travis/pypa/pip/master.svg - :target: http://travis-ci.org/pypa/pip - -.. image:: https://img.shields.io/appveyor/ci/pypa/pip.svg - :target: https://ci.appveyor.com/project/pypa/pip/history - -.. image:: https://readthedocs.org/projects/pip/badge/?version=stable - :target: https://pip.pypa.io/en/stable - -Code of Conduct ---------------- - -Everyone interacting in the pip project's codebases, issue trackers, chat -rooms, and mailing lists is expected to follow the `PyPA Code of Conduct`_. - -.. _PyPA Code of Conduct: https://www.pypa.io/en/latest/code-of-conduct/ - - diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD deleted file mode 100644 index 8366e44..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/RECORD +++ /dev/null @@ -1,501 +0,0 @@ -pip/__init__.py,sha256=00QWSreEBjb8Y8sPs8HeqgLXSB-3UrONJxo4J5APxEc,11348 -pip/__main__.py,sha256=V6Kh-IEDEFpt1cahRE6MajUF_14qJR_Qsvn4MjWZXzE,584 -pip/basecommand.py,sha256=TTlmZesQ4Vuxcto2KqwZGmgmN5ioHEl_DeFev9ie_SA,11910 -pip/baseparser.py,sha256=AKMOeF3fTrRroiv0DmTQbdiLW0DQux2KqGC_dJJB9d0,10465 -pip/cmdoptions.py,sha256=8JCcF2kKAF2cFnV77oW-3DsHJifr9jF2WuChzzwgcwg,16474 -pip/download.py,sha256=rA0wbmqC2n9ejX481YJSidmKgQqQDjdaxkHkHlAN68k,32171 -pip/exceptions.py,sha256=BvqH-Jw3tP2b-2IJ2kjrQemOAPMqKrQMLRIZHZQpJXk,8121 -pip/index.py,sha256=L6UhtAEZc2qw7BqfQrkPQcw2gCgEw3GukLRSA95BNyI,39950 -pip/locations.py,sha256=9rJRlgonC6QC2zGDIn_7mXaoZ9_tF_IHM2BQhWVRgbo,5626 -pip/pep425tags.py,sha256=q3kec4f6NHszuGYIhGIbVvs896D06uJAnKFgJ_wce44,10980 -pip/status_codes.py,sha256=F6uDG6Gj7RNKQJUDnd87QKqI16Us-t-B0wPF_4QMpWc,156 -pip/wheel.py,sha256=QSWmGs2ui-n4UMWm0JUY6aMCcwNKungVzbWsxI9KlJQ,32010 -pip/_vendor/__init__.py,sha256=WaaSJ3roSSJ_Uv4yKAxlGohKEH9YUA3aIh1Xg2IjfgU,4670 -pip/_vendor/appdirs.py,sha256=-9UOIZy62ahCQVY9-b7Nn6_5_4Y6ooHnv72tM8iHi9Y,22368 -pip/_vendor/distro.py,sha256=A4Douw9pcqdYxDTp5b-OR02fxVXnfWs-wC1wA89rhRk,38349 -pip/_vendor/ipaddress.py,sha256=wimbqcE7rwwETlucn8A_4Qd_-NKXPOBcNxJHarUoXng,80176 -pip/_vendor/ordereddict.py,sha256=4KsFuc6V8IgHROCHUu-4vCrr21ZPPea7Z0cvX9AjQ7w,4094 -pip/_vendor/pyparsing.py,sha256=7vAuUVbh6txUKQR2IzJ8_9DKmD5vtm5MDssWkI0ka8o,224171 -pip/_vendor/re-vendor.py,sha256=PcdZ40d0ohMsdJmA4t0AeAWbPXi1tFsvAwA5KE5FGeY,773 -pip/_vendor/retrying.py,sha256=k3fflf5_Mm0XcIJYhB7Tj34bqCCPhUDkYbx1NvW2FPE,9972 -pip/_vendor/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 -pip/_vendor/cachecontrol/__init__.py,sha256=UPyFlz0dIjxusu5ITig9UDFJdSY5LTwijhldn0AfyzU,302 -pip/_vendor/cachecontrol/_cmd.py,sha256=MPxZfZd2LKDzVrs55X3wA1rsI2YuP8evLZSwQj0dIk0,1320 -pip/_vendor/cachecontrol/adapter.py,sha256=RaGYyRA-RA1J0AnE67GzEYFPBu4YH4EQUvQqTKa57iM,4608 -pip/_vendor/cachecontrol/cache.py,sha256=xtl-V-pr9KSt9VvFDRCB9yrHPEvqvbk-5M1vAInZb5k,790 -pip/_vendor/cachecontrol/compat.py,sha256=uyovOpd1ehI3J1XeBqJvcsIp6fvkjBpoQmu_0J2st8c,416 -pip/_vendor/cachecontrol/controller.py,sha256=elDsLcaYA15ncodRmHnWQp6ekU_ocEGtDeGLbsnTjzo,13024 -pip/_vendor/cachecontrol/filewrapper.py,sha256=_K8cStmXqD33m15PfsQ8rlpo6FfXjVbKmjvLXyICRgI,2531 -pip/_vendor/cachecontrol/heuristics.py,sha256=WtJrVsyWjpP9WoUiDVdTZZRNBCz5ZVptaQpYnqofDQU,4141 -pip/_vendor/cachecontrol/serialize.py,sha256=XM6elG9DSNexwaOCgMjUtfrHHW5NAB6TSbIf3x235xs,6536 -pip/_vendor/cachecontrol/wrapper.py,sha256=Kqyu_3TW_54XDudha4-HF21vyEOAJ4ZnRXFysTiLmXA,498 -pip/_vendor/cachecontrol/caches/__init__.py,sha256=uWnUtyMvHY_LULaL_4_IR1F_xPgK5zHfJyRnBq4DnPE,369 -pip/_vendor/cachecontrol/caches/file_cache.py,sha256=FsDug3bwUAQ3okjjfGzxlDaBf2fwVSn1iBKMTL6SyGU,3532 -pip/_vendor/cachecontrol/caches/redis_cache.py,sha256=XywqxkS9MkCaflTOY_wjrE02neKdywB9YwlOBbP7Ywc,973 -pip/_vendor/colorama/__init__.py,sha256=9xByrTvk9upkL5NGV5It2Eje4-kzNLwa_1lGPWpXoNU,240 -pip/_vendor/colorama/ansi.py,sha256=Fi0un-QLqRm-v7o_nKiOqyC8PapBJK7DLV_q9LKtTO0,2524 -pip/_vendor/colorama/ansitowin32.py,sha256=gJZB35Lbdjatykd2zrUUnokMzkvcFgscyn_tNxxMFHA,9668 -pip/_vendor/colorama/initialise.py,sha256=cHqVJtb82OG7HUCxvQ2joG7N_CoxbIKbI_fgryZkj20,1917 -pip/_vendor/colorama/win32.py,sha256=_SCEoTK_GA2tU1nhbayKKac-v9Jn98lCPIFOeFMGCHQ,5365 -pip/_vendor/colorama/winterm.py,sha256=V7U7ojwG1q4n6PKripjEvW_htYQi5ueXSM3LUUoqqDY,6290 -pip/_vendor/distlib/__init__.py,sha256=-aUeNNCfiIG_1Tqf19BH0xLNuBKGX1I7lNhcLYgFUEA,581 -pip/_vendor/distlib/compat.py,sha256=FzKlP9dNUMH-j_1LCVnjgx6KgUbpnRjTjYkTkDYRPlI,40801 -pip/_vendor/distlib/database.py,sha256=jniJmYk0Mj2t6gZYbnn68TvQwnVZ0kXyeuf_3AxFclk,49672 -pip/_vendor/distlib/index.py,sha256=Cw8gxFq_7xXvdgExL3efjLAY3EAPDMSL3VA42RkbQBs,21085 -pip/_vendor/distlib/locators.py,sha256=hD_Hm3aSL9DklY9Cxyct2n_74gZ0xNFFGB5L7M6ds14,51013 -pip/_vendor/distlib/manifest.py,sha256=3qEuZhHlDbvyYZ1BZbdapDAivgMgUwWpZ00cmXqcn18,14810 -pip/_vendor/distlib/markers.py,sha256=iRrVWwpyVwjkKJSX8NEQ92_MRMwpROcfNGKCD-Ch1QM,6282 -pip/_vendor/distlib/metadata.py,sha256=hUsf7Qh2Ae4CCkL33qK8ppwC8ZTzT7ep6Hj9RKpijKU,38833 -pip/_vendor/distlib/resources.py,sha256=VFBVbFqLVqDBSQDXcFQHrX1KEcuoDxTK699Ydi_beyc,10766 -pip/_vendor/distlib/scripts.py,sha256=xpehNfISGPTNxQZu02K9Rw2QbNx_2Q4emePv3W5X0iw,15224 -pip/_vendor/distlib/t32.exe,sha256=cp0UAUDDr1tGAx8adlKxWbCHIa-oB3bxev5zYzgAr8E,89088 -pip/_vendor/distlib/t64.exe,sha256=FiljDPcX9qvoe9FYE_9pNEHqbqMnhcCOuI_oLJ4F9F8,97792 -pip/_vendor/distlib/util.py,sha256=E2wU-RZShPMFUMJr9kPmemTULinM4qDzosNPihCuKE0,52991 -pip/_vendor/distlib/version.py,sha256=CgghOUylxGD7dEA2S3MvWjx7mY_2bWsluF0Of3Yxl4Y,23711 -pip/_vendor/distlib/w32.exe,sha256=LItrBJesEqt2QTQuB-yha2YbMegURHmHmdSxhjBqmnc,85504 -pip/_vendor/distlib/w64.exe,sha256=n_PioBC7ltz7sAk1WLbLzZJgS4R2axSy_0HPf8ZCsEg,94208 -pip/_vendor/distlib/wheel.py,sha256=UP53cKxOM5r7bHSS-n5prF6hwJEVsMW9ZNJutOuC26c,39115 -pip/_vendor/distlib/_backport/__init__.py,sha256=bqS_dTOH6uW9iGgd0uzfpPjo6vZ4xpPZ7kyfZJ2vNaw,274 -pip/_vendor/distlib/_backport/misc.py,sha256=KWecINdbFNOxSOP1fGF680CJnaC6S4fBRgEtaYTw0ig,971 -pip/_vendor/distlib/_backport/shutil.py,sha256=VW1t3uYqUjWZH7jV-6QiimLhnldoV5uIpH4EuiT1jfw,25647 -pip/_vendor/distlib/_backport/sysconfig.cfg,sha256=swZKxq9RY5e9r3PXCrlvQPMsvOdiWZBTHLEbqS8LJLU,2617 -pip/_vendor/distlib/_backport/sysconfig.py,sha256=eSEyJg7jxF_eHlHG8IOtl93kb07UoMIRp1wYsPeGi9k,26955 -pip/_vendor/distlib/_backport/tarfile.py,sha256=Ihp7rXRcjbIKw8COm9wSePV9ARGXbSF9gGXAMn2Q-KU,92628 -pip/_vendor/html5lib/__init__.py,sha256=JsIwmFldk-9raBadPSTS74JrfmJvozc-3aekMi7Hr9s,780 -pip/_vendor/html5lib/_ihatexml.py,sha256=tzXygYmisUmiEUt2v7E1Ab50AKQsrD-SglPRnY75vME,16705 -pip/_vendor/html5lib/_inputstream.py,sha256=C4lX5gUBwebOWy41hYP2ZBpkPVNvxk_hZBm3OVyPZM4,32532 -pip/_vendor/html5lib/_tokenizer.py,sha256=YAaOEBD6qc5ISq9Xt9Nif1OFgcybTTfMdwqBkZhpAq4,76580 -pip/_vendor/html5lib/_utils.py,sha256=bS6THVlL8ZyTcI6CIxiM6xxuHsE8i1j5Ogd3Ha1G84U,4096 -pip/_vendor/html5lib/constants.py,sha256=Dfc1Fv3_9frktgWjg4tbj-CjMMp02Ko9qMe4il1BVdo,83387 -pip/_vendor/html5lib/html5parser.py,sha256=Dmlu9hlq5w_id6mBZyY_sE5LukIACgvG4kpgIsded8Q,117170 -pip/_vendor/html5lib/serializer.py,sha256=Urrsa0cPPLqNX-UbJWS2gUhs_06qVbNxZvUnrmGZK6E,14177 -pip/_vendor/html5lib/_trie/__init__.py,sha256=8VR1bcgD2OpeS2XExpu5yBhP_Q1K-lwKbBKICBPf1kU,289 -pip/_vendor/html5lib/_trie/_base.py,sha256=6P_AcIoGjtwB2qAlhV8H4VP-ztQxoXFGwt4NyMqG_Kw,979 -pip/_vendor/html5lib/_trie/datrie.py,sha256=EQpqSfkZRuTbE-DuhW7xMdVDxdZNZ0CfmnYfHA_3zxM,1178 -pip/_vendor/html5lib/_trie/py.py,sha256=wXmQLrZRf4MyWNyg0m3h81m9InhLR7GJ002mIIZh-8o,1775 -pip/_vendor/html5lib/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/html5lib/filters/alphabeticalattributes.py,sha256=DXv-P2vdQ5F3OTWM6QZ6KhyDlAWm90pbfrD1Bk9D_l0,621 -pip/_vendor/html5lib/filters/base.py,sha256=z-IU9ZAYjpsVsqmVt7kuWC63jR11hDMr6CVrvuao8W0,286 -pip/_vendor/html5lib/filters/inject_meta_charset.py,sha256=2Q_JnMscn_tNbV_qpgYN_5M3PnBGfmuvECMKDExHUcY,2742 -pip/_vendor/html5lib/filters/lint.py,sha256=qf5cLrT6xXd8V7GH1R_3lKxIjuJSfpbWTpSwaglYdDw,3365 -pip/_vendor/html5lib/filters/optionaltags.py,sha256=EHig4kM-QiLjuxVJ3FAAFNy-10k4aV6HJbQzHKZ_3u8,10534 -pip/_vendor/html5lib/filters/sanitizer.py,sha256=7PqJrhm6mo3JvaHk2IQW7i74Or7Qtd-FV8UftJIyDys,25112 -pip/_vendor/html5lib/filters/whitespace.py,sha256=KPt067nYTqqi8KLTClyynn4eVzNDC_-MApXNVHRXVX0,1139 -pip/_vendor/html5lib/treeadapters/__init__.py,sha256=l3LcqMSEyoh99Jh_eWjGexHnIvKhLAXoP-LDz88whuM,208 -pip/_vendor/html5lib/treeadapters/genshi.py,sha256=6VIuHDNoExv1JWv3ePj6V5CM-tcyiUSWe5_Hd2ejbwY,1555 -pip/_vendor/html5lib/treeadapters/sax.py,sha256=3of4vvaUYIAic7pngebwJV24hpOS7Zg9ggJa_WQegy4,1661 -pip/_vendor/html5lib/treebuilders/__init__.py,sha256=UlB4orkTgZhFIKQdXrtiWn9cpKSsuhnOQOIHeD0Fv4k,3406 -pip/_vendor/html5lib/treebuilders/base.py,sha256=4vdjm_Z2f_GTQBwKnWlrzVcctTb-K5sfN8pXDaWODiA,13942 -pip/_vendor/html5lib/treebuilders/dom.py,sha256=SY3MsijXyzdNPc8aK5IQsupBoM8J67y56DgNtGvsb9g,8835 -pip/_vendor/html5lib/treebuilders/etree.py,sha256=aqIBOGj_dFYqBURIcTegGNBhAIJOw5iFDHb4jrkYH-8,12764 -pip/_vendor/html5lib/treebuilders/etree_lxml.py,sha256=CEgwHMIQZvIDFAqct4kqPkVtyKIm9efHFq_VeExEPCA,14161 -pip/_vendor/html5lib/treewalkers/__init__.py,sha256=CFpUOCfLuhAgVJ8NYk9wviCu1khYnv7XRStvyzU1Fws,5544 -pip/_vendor/html5lib/treewalkers/base.py,sha256=ei-2cFbNFd0gRjyaFmxnxZGLNID4o0bHFCH9bMyZ5Bk,4939 -pip/_vendor/html5lib/treewalkers/dom.py,sha256=EHyFR8D8lYNnyDU9lx_IKigVJRyecUGua0mOi7HBukc,1413 -pip/_vendor/html5lib/treewalkers/etree.py,sha256=8jVLEY2FjgN4RFugwhAh44l9ScVYoDStQFCnlPwvafI,4684 -pip/_vendor/html5lib/treewalkers/etree_lxml.py,sha256=sY6wfRshWTllu6n48TPWpKsQRPp-0CQrT0hj_AdzHSU,6309 -pip/_vendor/html5lib/treewalkers/genshi.py,sha256=4D2PECZ5n3ZN3qu3jMl9yY7B81jnQApBQSVlfaIuYbA,2309 -pip/_vendor/lockfile/__init__.py,sha256=Tqpz90DwKYfhPsfzVOJl84TL87pdFE5ePNHdXAxs4Tk,9371 -pip/_vendor/lockfile/linklockfile.py,sha256=C7OH3H4GdK68u4FQgp8fkP2kO4fyUTSyj3X6blgfobc,2652 -pip/_vendor/lockfile/mkdirlockfile.py,sha256=e3qgIL-etZMLsS-3ft19iW_8IQ360HNkGOqE3yBKsUw,3096 -pip/_vendor/lockfile/pidlockfile.py,sha256=ukH9uk6NFuxyVmG5QiWw4iKq3fT7MjqUguX95avYPIY,6090 -pip/_vendor/lockfile/sqlitelockfile.py,sha256=o2TMkMRY0iwn-iL1XMRRIFStMUkS4i3ajceeYNntKFg,5506 -pip/_vendor/lockfile/symlinklockfile.py,sha256=ABwXXmvTHvCl5viPblShL3PG-gGsLiT1roAMfDRwhi8,2616 -pip/_vendor/packaging/__about__.py,sha256=zkcCPTN_6TcLW0Nrlg0176-R1QQ_WVPTm8sz1R4-HjM,720 -pip/_vendor/packaging/__init__.py,sha256=_vNac5TrzwsrzbOFIbF-5cHqc_Y2aPT2D7zrIR06BOo,513 -pip/_vendor/packaging/_compat.py,sha256=Vi_A0rAQeHbU-a9X0tt1yQm9RqkgQbDSxzRw8WlU9kA,860 -pip/_vendor/packaging/_structures.py,sha256=RImECJ4c_wTlaTYYwZYLHEiebDMaAJmK1oPARhw1T5o,1416 -pip/_vendor/packaging/markers.py,sha256=mtg2nphJE1oQO39g1DgsdPsMO-guBBClpR-AEYFrbMg,8230 -pip/_vendor/packaging/requirements.py,sha256=SD7dVJGjdPUqtoHb47qwK6wWJTQd-ZXWjxpJg83UcBA,4327 -pip/_vendor/packaging/specifiers.py,sha256=SAMRerzO3fK2IkFZCaZkuwZaL_EGqHNOz4pni4vhnN0,28025 -pip/_vendor/packaging/utils.py,sha256=3m6WvPm6NNxE8rkTGmn0r75B_GZSGg7ikafxHsBN1WA,421 -pip/_vendor/packaging/version.py,sha256=OwGnxYfr2ghNzYx59qWIBkrK3SnB6n-Zfd1XaLpnnM0,11556 -pip/_vendor/pkg_resources/__init__.py,sha256=CcwuHtCBZn9OTkmgF9cFpadIAMhlrnZTVKTOo4V2p58,103230 -pip/_vendor/progress/__init__.py,sha256=Wn1074LUDZovd4zfoVYojnPBgOc6ctHbQX7rp_p8lRA,3023 -pip/_vendor/progress/bar.py,sha256=YNPJeRrwYVKFO2nyaEwsQjYByamMWTgJMvQO1NpD-AY,2685 -pip/_vendor/progress/counter.py,sha256=kEqA8jWEdwrc6P_9VaRx7bjOHwk9gxl-Q9oVbQ08v5c,1502 -pip/_vendor/progress/helpers.py,sha256=FehfwZTv-5cCfsbcMlvlUkm3xZ0cRhsev6XVpmeTF4c,2854 -pip/_vendor/progress/spinner.py,sha256=iCVtUQbaJUFHTjn1ZLPQLPYeao4lC9aXAa_HxIeUK6k,1314 -pip/_vendor/requests/__init__.py,sha256=Cde-qxOWcslaEcPvKAJQPFbY8_va8PMbU7Rssr7vViI,2326 -pip/_vendor/requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740 -pip/_vendor/requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794 -pip/_vendor/requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175 -pip/_vendor/requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712 -pip/_vendor/requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625 -pip/_vendor/requests/compat.py,sha256=0cgWB43LEX5OrX1O4k-bPbFlIbWXgEd412DSDJtF1Y8,1687 -pip/_vendor/requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208 -pip/_vendor/requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860 -pip/_vendor/requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767 -pip/_vendor/requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532 -pip/_vendor/requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609 -pip/_vendor/requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316 -pip/_vendor/requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012 -pip/_vendor/requests/utils.py,sha256=9d3jqnA8avsF9N1QPmsk2pJgo2pxuExrN2hoIhtLggY,24163 -pip/_vendor/requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384 -pip/_vendor/requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295 -pip/_vendor/requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594 -pip/_vendor/requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684 -pip/_vendor/requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504 -pip/_vendor/requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226 -pip/_vendor/requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791 -pip/_vendor/requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902 -pip/_vendor/requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318 -pip/_vendor/requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157 -pip/_vendor/requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335 -pip/_vendor/requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782 -pip/_vendor/requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187 -pip/_vendor/requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839 -pip/_vendor/requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678 -pip/_vendor/requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978 -pip/_vendor/requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675 -pip/_vendor/requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872 -pip/_vendor/requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676 -pip/_vendor/requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011 -pip/_vendor/requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681 -pip/_vendor/requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359 -pip/_vendor/requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315 -pip/_vendor/requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348 -pip/_vendor/requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784 -pip/_vendor/requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725 -pip/_vendor/requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628 -pip/_vendor/requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318 -pip/_vendor/requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536 -pip/_vendor/requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275 -pip/_vendor/requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232 -pip/_vendor/requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268 -pip/_vendor/requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967 -pip/_vendor/requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590 -pip/_vendor/requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793 -pip/_vendor/requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291 -pip/_vendor/requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764 -pip/_vendor/requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840 -pip/_vendor/requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652 -pip/_vendor/requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852 -pip/_vendor/requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553 -pip/_vendor/requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617 -pip/_vendor/requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591 -pip/_vendor/requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599 -pip/_vendor/requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931 -pip/_vendor/requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320 -pip/_vendor/requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092 -pip/_vendor/requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988 -pip/_vendor/requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615 -pip/_vendor/requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/_vendor/requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937 -pip/_vendor/requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531 -pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778 -pip/_vendor/requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668 -pip/_vendor/requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109 -pip/_vendor/requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935 -pip/_vendor/requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098 -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460 -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778 -pip/_vendor/requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892 -pip/_vendor/requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744 -pip/_vendor/requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128 -pip/_vendor/requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165 -pip/_vendor/requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664 -pip/_vendor/requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622 -pip/_vendor/requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596 -pip/_vendor/requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879 -pip/_vendor/webencodings/__init__.py,sha256=t7rAQQxXwalY-ak9hTl73qHjhia9UH-sL-e00qQrBpo,10576 -pip/_vendor/webencodings/labels.py,sha256=4AO_KxTddqGtrL9ns7kAPjb0CcN6xsCIxbK37HY9r3E,8979 -pip/_vendor/webencodings/mklabels.py,sha256=GYIeywnpaLnP0GSic8LFWgd0UVvO_l1Nc6YoF-87R_4,1305 -pip/_vendor/webencodings/tests.py,sha256=7vTk7LgOJn_t1XtT_viofZlEJ7cJCzPe_hvVHOkcQl8,6562 -pip/_vendor/webencodings/x_user_defined.py,sha256=72cfPRhbfkRCGkkA8ZnvVV7UnoiLb5uPMhXwhrXiLPk,4306 -pip/commands/__init__.py,sha256=2Uq3HCdjchJD9FL1LB7rd5v6UySVAVizX0W3EX3hIoE,2244 -pip/commands/check.py,sha256=-A7GI1-WZBh9a4P6UoH_aR-J7I8Lz8ly7m3wnCjmevs,1382 -pip/commands/completion.py,sha256=kkPgVX7SUcJ_8Juw5GkgWaxHN9_45wmAr9mGs1zXEEs,2453 -pip/commands/download.py,sha256=8RuuPmSYgAq3iEDTqZY_1PDXRqREdUULHNjWJeAv7Mo,7810 -pip/commands/freeze.py,sha256=h6-yFMpjCjbNj8-gOm5UuoF6cg14N5rPV4TCi3_CeuI,2835 -pip/commands/hash.py,sha256=MCt4jEFyfoce0lVeNEz1x49uaTY-VDkKiBvvxrVcHkw,1597 -pip/commands/help.py,sha256=84HWkEdnGP_AEBHnn8gJP2Te0XTXRKFoXqXopbOZTNo,982 -pip/commands/install.py,sha256=ovG9p9n1X2NPqMgFVtSuT9kMbLAdx1r3YSSiXSvgOKI,17412 -pip/commands/list.py,sha256=93bCiFyt2Qut_YHkYHJMZHpXladmxsjS-yOtZeb3uqI,11369 -pip/commands/search.py,sha256=oTs9QNdefnrmCV_JeftG0PGiMuYVmiEDF1OUaYsmDao,4502 -pip/commands/show.py,sha256=ZYM57_7U8KP9MQIIyHKQdZxmiEZByy-DRzB697VFoTY,5891 -pip/commands/uninstall.py,sha256=tz8cXz4WdpUdnt3RvpdQwH6_SNMB50egBIZWa1dwfcc,2884 -pip/commands/wheel.py,sha256=z5SEhws2YRMb0Ml1IEkg6jFZMLRpLl86bHCrQbYt5zo,7729 -pip/compat/__init__.py,sha256=2Xs_IpsmdRgHbQgQO0c8_lPvHJnQXHyGWxPbLbYJL4c,4672 -pip/compat/dictconfig.py,sha256=dRrelPDWrceDSzFT51RTEVY2GuM7UDyc5Igh_tn4Fvk,23096 -pip/models/__init__.py,sha256=0Rs7_RA4DxeOkWT5Cq4CQzDrSEhvYcN3TH2cazr72PE,71 -pip/models/index.py,sha256=pUfbO__v3mD9j-2n_ClwPS8pVyx4l2wIwyvWt8GMCRA,487 -pip/operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -pip/operations/check.py,sha256=uwUN9cs1sPo7c0Sj6pRrSv7b22Pk29SXUImTelVchMQ,1590 -pip/operations/freeze.py,sha256=k-7w7LsM-RpPv7ERBzHiPpYkH-GuYfHLyR-Cp_1VPL0,5194 -pip/req/__init__.py,sha256=vFwZY8_Vc1WU1zFAespg1My_r_AT3n7cN0W9eX0EFqk,276 -pip/req/req_file.py,sha256=fG9MDsXUNPhmGwxUiwrIXEynyD8Q7s3L47-hLZPDXq0,11926 -pip/req/req_install.py,sha256=gYrH-lwQMmt55VVbav_EtRIPu94cQbHFHm_Kq6AeHbg,46487 -pip/req/req_set.py,sha256=jHspXqcA2FxcF05dgUIAZ5huYPv6bn0wRUX0Z7PKmaA,34462 -pip/req/req_uninstall.py,sha256=fdH2VgCjEC8NRYDS7fRu3ZJaBBUEy-N5muwxDX5MBNM,6897 -pip/utils/__init__.py,sha256=HX_wYS15oiYOz-H3qG1Kbi1CY7AGWCNK5jloiD0fauc,27187 -pip/utils/appdirs.py,sha256=kj2LK-I2fC5QnEh_A_v-ev_IQMcXaWWF5DE39sNvCLQ,8811 -pip/utils/build.py,sha256=4smLRrfSCmXmjEnVnMFh2tBEpNcSLRe6J0ejZJ-wWJE,1312 -pip/utils/deprecation.py,sha256=X_FMjtDbMJqfqEkdRrki-mYyIdPB6I6DHUTCA_ChY6M,2232 -pip/utils/encoding.py,sha256=NQxGiFS5GbeAveLZTnx92t5r0PYqvt0iRnP2u9SGG1w,971 -pip/utils/filesystem.py,sha256=ZEVBuYM3fqr2_lgOESh4Y7fPFszGD474zVm_M3Mb5Tk,899 -pip/utils/glibc.py,sha256=jcQYjt_oJLPKVZB28Kauy4Sw70zS-wawxoU1HHX36_0,2939 -pip/utils/hashes.py,sha256=oMk7cd3PbJgzpSQyXq1MytMud5f6H5Oa2YY5hYuCq6I,2866 -pip/utils/logging.py,sha256=7yWu4gZw-Qclj7X80QVdpGWkdTWGKT4LiUVKcE04pro,3327 -pip/utils/outdated.py,sha256=fNwOCL5r2EftPGhgCYGMKu032HC8cV-JAr9lp0HmToM,5455 -pip/utils/packaging.py,sha256=qhmli14odw6DIhWJgQYS2Q0RrSbr8nXNcG48f5yTRms,2080 -pip/utils/setuptools_build.py,sha256=0blfscmNJW_iZ5DcswJeDB_PbtTEjfK9RL1R1WEDW2E,278 -pip/utils/ui.py,sha256=pbDkSAeumZ6jdZcOJ2yAbx8iBgeP2zfpqNnLJK1gskQ,11597 -pip/vcs/__init__.py,sha256=WafFliUTHMmsSISV8PHp1M5EXDNSWyJr78zKaQmPLdY,12374 -pip/vcs/bazaar.py,sha256=tYTwc4b4off8mr0O2o8SiGejqBDJxcbDBMSMd9-ISYc,3803 -pip/vcs/git.py,sha256=5LfWryi78A-2ULjEZJvCTarJ_3l8venwXASlwm8hiug,11197 -pip/vcs/mercurial.py,sha256=xG6rDiwHCRytJEs23SIHBXl_SwQo2jkkdD_6rVVP5h4,3472 -pip/vcs/subversion.py,sha256=GAuX2Sk7IZvJyEzENKcVld_wGBrQ3fpXDlXjapZEYdI,9350 -pip-9.0.1.dist-info/DESCRIPTION.rst,sha256=Va8Wj1XBpTbVQ2Z41mZRJdALEeziiS_ZewWn1H2ecY4,1287 -pip-9.0.1.dist-info/METADATA,sha256=mvs_tLoKAbECXY_6QHiVWQsagSL-1UjolQTpScT8JSk,2529 -pip-9.0.1.dist-info/RECORD,, -pip-9.0.1.dist-info/WHEEL,sha256=o2k-Qa-RMNIJmUdIc7KU6VWR_ErNRbWNlxDIpl7lm34,110 -pip-9.0.1.dist-info/entry_points.txt,sha256=GWc-Wb9WUKZ1EuVWNz-G0l3BeIpbNJLx0OJbZ61AAV0,68 -pip-9.0.1.dist-info/metadata.json,sha256=aqvkETDy4mHUBob-2Fn5WWlXORi_M2OSfQ2HQCUU_Fk,1565 -pip-9.0.1.dist-info/top_level.txt,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -../../../bin/pip,sha256=6CamIUQvMFlgs8ksmd0Az-HCib980wRJ5oKsIRAo5tc,260 -../../../bin/pip3,sha256=6CamIUQvMFlgs8ksmd0Az-HCib980wRJ5oKsIRAo5tc,260 -../../../bin/pip3.6,sha256=6CamIUQvMFlgs8ksmd0Az-HCib980wRJ5oKsIRAo5tc,260 -pip-9.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -pip/__pycache__/__init__.cpython-36.pyc,, -pip/__pycache__/__main__.cpython-36.pyc,, -pip/__pycache__/basecommand.cpython-36.pyc,, -pip/__pycache__/baseparser.cpython-36.pyc,, -pip/__pycache__/cmdoptions.cpython-36.pyc,, -pip/__pycache__/download.cpython-36.pyc,, -pip/__pycache__/exceptions.cpython-36.pyc,, -pip/__pycache__/index.cpython-36.pyc,, -pip/__pycache__/locations.cpython-36.pyc,, -pip/__pycache__/pep425tags.cpython-36.pyc,, -pip/__pycache__/status_codes.cpython-36.pyc,, -pip/__pycache__/wheel.cpython-36.pyc,, -pip/_vendor/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/__pycache__/appdirs.cpython-36.pyc,, -pip/_vendor/__pycache__/distro.cpython-36.pyc,, -pip/_vendor/__pycache__/ipaddress.cpython-36.pyc,, -pip/_vendor/__pycache__/ordereddict.cpython-36.pyc,, -pip/_vendor/__pycache__/pyparsing.cpython-36.pyc,, -pip/_vendor/__pycache__/re-vendor.cpython-36.pyc,, -pip/_vendor/__pycache__/retrying.cpython-36.pyc,, -pip/_vendor/__pycache__/six.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/cache.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/controller.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc,, -pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc,, -pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/initialise.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc,, -pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/database.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/index.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/locators.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/manifest.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/util.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/version.cpython-36.pyc,, -pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/sysconfig.cpython-36.pyc,, -pip/_vendor/distlib/_backport/__pycache__/tarfile.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_ihatexml.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_inputstream.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/_utils.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc,, -pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/_base.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/datrie.cpython-36.pyc,, -pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/inject_meta_charset.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/lint.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/sanitizer.cpython-36.pyc,, -pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc,, -pip/_vendor/html5lib/treeadapters/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/treeadapters/__pycache__/genshi.cpython-36.pyc,, -pip/_vendor/html5lib/treeadapters/__pycache__/sax.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/base.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/dom.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/etree.cpython-36.pyc,, -pip/_vendor/html5lib/treebuilders/__pycache__/etree_lxml.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/base.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/dom.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/etree.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/etree_lxml.cpython-36.pyc,, -pip/_vendor/html5lib/treewalkers/__pycache__/genshi.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/linklockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/pidlockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/sqlitelockfile.cpython-36.pyc,, -pip/_vendor/lockfile/__pycache__/symlinklockfile.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/__about__.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/_compat.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/_structures.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/markers.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/requirements.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/specifiers.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/utils.cpython-36.pyc,, -pip/_vendor/packaging/__pycache__/version.cpython-36.pyc,, -pip/_vendor/pkg_resources/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/bar.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/counter.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/helpers.cpython-36.pyc,, -pip/_vendor/progress/__pycache__/spinner.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/adapters.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/api.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/auth.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/certs.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/cookies.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/exceptions.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/hooks.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/models.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/sessions.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/status_codes.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/structures.cpython-36.pyc,, -pip/_vendor/requests/__pycache__/utils.cpython-36.pyc,, -pip/_vendor/requests/packages/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/big5freq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/big5prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/chardetect.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/chardistribution.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/charsetgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/charsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/codingstatemachine.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/compat.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/constants.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/cp949prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/escprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/escsm.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/eucjpprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euckrfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euckrprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euctwfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/euctwprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/gb2312freq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/gb2312prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/hebrewprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/jisfreq.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/jpcntx.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langbulgarianmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langcyrillicmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langgreekmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langhebrewmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langhungarianmodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/langthaimodel.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/latin1prober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcharsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcsgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/mbcssm.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sbcharsetprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sbcsgroupprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/sjisprober.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/universaldetector.cpython-36.pyc,, -pip/_vendor/requests/packages/chardet/__pycache__/utf8prober.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/_collections.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/connection.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/connectionpool.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/exceptions.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/fields.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/filepost.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/poolmanager.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/request.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/__pycache__/response.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/appengine.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/ntlmpool.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/pyopenssl.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/contrib/__pycache__/socks.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/__pycache__/six.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/packages/ssl_match_hostname/__pycache__/_implementation.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/connection.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/request.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/response.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/retry.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/ssl_.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/timeout.cpython-36.pyc,, -pip/_vendor/requests/packages/urllib3/util/__pycache__/url.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/__init__.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/labels.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/mklabels.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/tests.cpython-36.pyc,, -pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-36.pyc,, -pip/commands/__pycache__/__init__.cpython-36.pyc,, -pip/commands/__pycache__/check.cpython-36.pyc,, -pip/commands/__pycache__/completion.cpython-36.pyc,, -pip/commands/__pycache__/download.cpython-36.pyc,, -pip/commands/__pycache__/freeze.cpython-36.pyc,, -pip/commands/__pycache__/hash.cpython-36.pyc,, -pip/commands/__pycache__/help.cpython-36.pyc,, -pip/commands/__pycache__/install.cpython-36.pyc,, -pip/commands/__pycache__/list.cpython-36.pyc,, -pip/commands/__pycache__/search.cpython-36.pyc,, -pip/commands/__pycache__/show.cpython-36.pyc,, -pip/commands/__pycache__/uninstall.cpython-36.pyc,, -pip/commands/__pycache__/wheel.cpython-36.pyc,, -pip/compat/__pycache__/__init__.cpython-36.pyc,, -pip/compat/__pycache__/dictconfig.cpython-36.pyc,, -pip/models/__pycache__/__init__.cpython-36.pyc,, -pip/models/__pycache__/index.cpython-36.pyc,, -pip/operations/__pycache__/__init__.cpython-36.pyc,, -pip/operations/__pycache__/check.cpython-36.pyc,, -pip/operations/__pycache__/freeze.cpython-36.pyc,, -pip/req/__pycache__/__init__.cpython-36.pyc,, -pip/req/__pycache__/req_file.cpython-36.pyc,, -pip/req/__pycache__/req_install.cpython-36.pyc,, -pip/req/__pycache__/req_set.cpython-36.pyc,, -pip/req/__pycache__/req_uninstall.cpython-36.pyc,, -pip/utils/__pycache__/__init__.cpython-36.pyc,, -pip/utils/__pycache__/appdirs.cpython-36.pyc,, -pip/utils/__pycache__/build.cpython-36.pyc,, -pip/utils/__pycache__/deprecation.cpython-36.pyc,, -pip/utils/__pycache__/encoding.cpython-36.pyc,, -pip/utils/__pycache__/filesystem.cpython-36.pyc,, -pip/utils/__pycache__/glibc.cpython-36.pyc,, -pip/utils/__pycache__/hashes.cpython-36.pyc,, -pip/utils/__pycache__/logging.cpython-36.pyc,, -pip/utils/__pycache__/outdated.cpython-36.pyc,, -pip/utils/__pycache__/packaging.cpython-36.pyc,, -pip/utils/__pycache__/setuptools_build.cpython-36.pyc,, -pip/utils/__pycache__/ui.cpython-36.pyc,, -pip/vcs/__pycache__/__init__.cpython-36.pyc,, -pip/vcs/__pycache__/bazaar.cpython-36.pyc,, -pip/vcs/__pycache__/git.cpython-36.pyc,, -pip/vcs/__pycache__/mercurial.cpython-36.pyc,, -pip/vcs/__pycache__/subversion.cpython-36.pyc,, diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL deleted file mode 100644 index 8b6dd1b..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/WHEEL +++ /dev/null @@ -1,6 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.29.0) -Root-Is-Purelib: true -Tag: py2-none-any -Tag: py3-none-any - diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt deleted file mode 100644 index c02a8d5..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/entry_points.txt +++ /dev/null @@ -1,5 +0,0 @@ -[console_scripts] -pip = pip:main -pip3 = pip:main -pip3.5 = pip:main - diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json deleted file mode 100644 index 9eae02c..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Build Tools", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.commands": {"wrap_console": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}, "python.details": {"contacts": [{"email": "python-virtualenv@groups.google.com", "name": "The pip developers", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "https://pip.pypa.io/"}}, "python.exports": {"console_scripts": {"pip": "pip:main", "pip3": "pip:main", "pip3.5": "pip:main"}}}, "extras": ["testing"], "generator": "bdist_wheel (0.29.0)", "keywords": ["easy_install", "distutils", "setuptools", "egg", "virtualenv"], "license": "MIT", "metadata_version": "2.0", "name": "pip", "requires_python": ">=2.6,!=3.0.*,!=3.1.*,!=3.2.*", "run_requires": [{"extra": "testing", "requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "summary": "The PyPA recommended tool for installing Python packages.", "test_requires": [{"requires": ["mock", "pretend", "pytest", "scripttest (>=1.3)", "virtualenv (>=1.10)"]}], "version": "9.0.1"} \ No newline at end of file diff --git a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt b/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt deleted file mode 100644 index a1b589e..0000000 --- a/env/lib/python3.6/site-packages/pip-9.0.1.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/env/lib/python3.6/site-packages/pip/__init__.py b/env/lib/python3.6/site-packages/pip/__init__.py deleted file mode 100644 index 9c1d8f9..0000000 --- a/env/lib/python3.6/site-packages/pip/__init__.py +++ /dev/null @@ -1,331 +0,0 @@ -#!/usr/bin/env python -from __future__ import absolute_import - -import locale -import logging -import os -import optparse -import warnings - -import sys -import re - -# 2016-06-17 barry@debian.org: urllib3 1.14 added optional support for socks, -# but if invoked (i.e. imported), it will issue a warning to stderr if socks -# isn't available. requests unconditionally imports urllib3's socks contrib -# module, triggering this warning. The warning breaks DEP-8 tests (because of -# the stderr output) and is just plain annoying in normal usage. I don't want -# to add socks as yet another dependency for pip, nor do I want to allow-stder -# in the DEP-8 tests, so just suppress the warning. pdb tells me this has to -# be done before the import of pip.vcs. -from pip._vendor.requests.packages.urllib3.exceptions import DependencyWarning -warnings.filterwarnings("ignore", category=DependencyWarning) # noqa - - -from pip.exceptions import InstallationError, CommandError, PipError -from pip.utils import get_installed_distributions, get_prog -from pip.utils import deprecation, dist_is_editable -from pip.vcs import git, mercurial, subversion, bazaar # noqa -from pip.baseparser import ConfigOptionParser, UpdatingDefaultsHelpFormatter -from pip.commands import get_summaries, get_similar_commands -from pip.commands import commands_dict -from pip._vendor.requests.packages.urllib3.exceptions import ( - InsecureRequestWarning, -) - - -# assignment for flake8 to be happy - -# This fixes a peculiarity when importing via __import__ - as we are -# initialising the pip module, "from pip import cmdoptions" is recursive -# and appears not to work properly in that situation. -import pip.cmdoptions -cmdoptions = pip.cmdoptions - -# The version as used in the setup.py and the docs conf.py -__version__ = "9.0.1" - - -logger = logging.getLogger(__name__) - -# Hide the InsecureRequestWarning from urllib3 -warnings.filterwarnings("ignore", category=InsecureRequestWarning) - - -def autocomplete(): - """Command and option completion for the main option parser (and options) - and its subcommands (and options). - - Enable by sourcing one of the completion shell scripts (bash, zsh or fish). - """ - # Don't complete if user hasn't sourced bash_completion file. - if 'PIP_AUTO_COMPLETE' not in os.environ: - return - cwords = os.environ['COMP_WORDS'].split()[1:] - cword = int(os.environ['COMP_CWORD']) - try: - current = cwords[cword - 1] - except IndexError: - current = '' - - subcommands = [cmd for cmd, summary in get_summaries()] - options = [] - # subcommand - try: - subcommand_name = [w for w in cwords if w in subcommands][0] - except IndexError: - subcommand_name = None - - parser = create_main_parser() - # subcommand options - if subcommand_name: - # special case: 'help' subcommand has no options - if subcommand_name == 'help': - sys.exit(1) - # special case: list locally installed dists for uninstall command - if subcommand_name == 'uninstall' and not current.startswith('-'): - installed = [] - lc = current.lower() - for dist in get_installed_distributions(local_only=True): - if dist.key.startswith(lc) and dist.key not in cwords[1:]: - installed.append(dist.key) - # if there are no dists installed, fall back to option completion - if installed: - for dist in installed: - print(dist) - sys.exit(1) - - subcommand = commands_dict[subcommand_name]() - options += [(opt.get_opt_string(), opt.nargs) - for opt in subcommand.parser.option_list_all - if opt.help != optparse.SUPPRESS_HELP] - - # filter out previously specified options from available options - prev_opts = [x.split('=')[0] for x in cwords[1:cword - 1]] - options = [(x, v) for (x, v) in options if x not in prev_opts] - # filter options by current input - options = [(k, v) for k, v in options if k.startswith(current)] - for option in options: - opt_label = option[0] - # append '=' to options which require args - if option[1]: - opt_label += '=' - print(opt_label) - else: - # show main parser options only when necessary - if current.startswith('-') or current.startswith('--'): - opts = [i.option_list for i in parser.option_groups] - opts.append(parser.option_list) - opts = (o for it in opts for o in it) - - subcommands += [i.get_opt_string() for i in opts - if i.help != optparse.SUPPRESS_HELP] - - print(' '.join([x for x in subcommands if x.startswith(current)])) - sys.exit(1) - - -def create_main_parser(): - parser_kw = { - 'usage': '\n%prog [options]', - 'add_help_option': False, - 'formatter': UpdatingDefaultsHelpFormatter(), - 'name': 'global', - 'prog': get_prog(), - } - - parser = ConfigOptionParser(**parser_kw) - parser.disable_interspersed_args() - - pip_pkg_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - parser.version = 'pip %s from %s (python %s)' % ( - __version__, pip_pkg_dir, sys.version[:3]) - - # add the general options - gen_opts = cmdoptions.make_option_group(cmdoptions.general_group, parser) - parser.add_option_group(gen_opts) - - parser.main = True # so the help formatter knows - - # create command listing for description - command_summaries = get_summaries() - description = [''] + ['%-27s %s' % (i, j) for i, j in command_summaries] - parser.description = '\n'.join(description) - - return parser - - -def parseopts(args): - parser = create_main_parser() - - # Note: parser calls disable_interspersed_args(), so the result of this - # call is to split the initial args into the general options before the - # subcommand and everything else. - # For example: - # args: ['--timeout=5', 'install', '--user', 'INITools'] - # general_options: ['--timeout==5'] - # args_else: ['install', '--user', 'INITools'] - general_options, args_else = parser.parse_args(args) - - # --version - if general_options.version: - sys.stdout.write(parser.version) - sys.stdout.write(os.linesep) - sys.exit() - - # pip || pip help -> print_help() - if not args_else or (args_else[0] == 'help' and len(args_else) == 1): - parser.print_help() - sys.exit() - - # the subcommand name - cmd_name = args_else[0] - - if cmd_name not in commands_dict: - guess = get_similar_commands(cmd_name) - - msg = ['unknown command "%s"' % cmd_name] - if guess: - msg.append('maybe you meant "%s"' % guess) - - raise CommandError(' - '.join(msg)) - - # all the args without the subcommand - cmd_args = args[:] - cmd_args.remove(cmd_name) - - return cmd_name, cmd_args - - -def check_isolated(args): - isolated = False - - if "--isolated" in args: - isolated = True - - return isolated - - -def main(args=None): - if args is None: - args = sys.argv[1:] - - # Configure our deprecation warnings to be sent through loggers - deprecation.install_warning_logger() - - autocomplete() - - try: - cmd_name, cmd_args = parseopts(args) - except PipError as exc: - sys.stderr.write("ERROR: %s" % exc) - sys.stderr.write(os.linesep) - sys.exit(1) - - # Needed for locale.getpreferredencoding(False) to work - # in pip.utils.encoding.auto_decode - try: - locale.setlocale(locale.LC_ALL, '') - except locale.Error as e: - # setlocale can apparently crash if locale are uninitialized - logger.debug("Ignoring error %s when setting locale", e) - command = commands_dict[cmd_name](isolated=check_isolated(cmd_args)) - return command.main(cmd_args) - - -# ########################################################### -# # Writing freeze files - -class FrozenRequirement(object): - - def __init__(self, name, req, editable, comments=()): - self.name = name - self.req = req - self.editable = editable - self.comments = comments - - _rev_re = re.compile(r'-r(\d+)$') - _date_re = re.compile(r'-(20\d\d\d\d\d\d)$') - - @classmethod - def from_dist(cls, dist, dependency_links): - location = os.path.normcase(os.path.abspath(dist.location)) - comments = [] - from pip.vcs import vcs, get_src_requirement - if dist_is_editable(dist) and vcs.get_backend_name(location): - editable = True - try: - req = get_src_requirement(dist, location) - except InstallationError as exc: - logger.warning( - "Error when trying to get requirement for VCS system %s, " - "falling back to uneditable format", exc - ) - req = None - if req is None: - logger.warning( - 'Could not determine repository location of %s', location - ) - comments.append( - '## !! Could not determine repository location' - ) - req = dist.as_requirement() - editable = False - else: - editable = False - req = dist.as_requirement() - specs = req.specs - assert len(specs) == 1 and specs[0][0] in ["==", "==="], \ - 'Expected 1 spec with == or ===; specs = %r; dist = %r' % \ - (specs, dist) - version = specs[0][1] - ver_match = cls._rev_re.search(version) - date_match = cls._date_re.search(version) - if ver_match or date_match: - svn_backend = vcs.get_backend('svn') - if svn_backend: - svn_location = svn_backend().get_location( - dist, - dependency_links, - ) - if not svn_location: - logger.warning( - 'Warning: cannot find svn location for %s', req) - comments.append( - '## FIXME: could not find svn URL in dependency_links ' - 'for this package:' - ) - else: - comments.append( - '# Installing as editable to satisfy requirement %s:' % - req - ) - if ver_match: - rev = ver_match.group(1) - else: - rev = '{%s}' % date_match.group(1) - editable = True - req = '%s@%s#egg=%s' % ( - svn_location, - rev, - cls.egg_name(dist) - ) - return cls(dist.project_name, req, editable, comments) - - @staticmethod - def egg_name(dist): - name = dist.egg_name() - match = re.search(r'-py\d\.\d$', name) - if match: - name = name[:match.start()] - return name - - def __str__(self): - req = self.req - if self.editable: - req = '-e %s' % req - return '\n'.join(list(self.comments) + [str(req)]) + '\n' - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/env/lib/python3.6/site-packages/pip/__main__.py b/env/lib/python3.6/site-packages/pip/__main__.py deleted file mode 100644 index 5556539..0000000 --- a/env/lib/python3.6/site-packages/pip/__main__.py +++ /dev/null @@ -1,19 +0,0 @@ -from __future__ import absolute_import - -import os -import sys - -# If we are running from a wheel, add the wheel to sys.path -# This allows the usage python pip-*.whl/pip install pip-*.whl -if __package__ == '': - # __file__ is pip-*.whl/pip/__main__.py - # first dirname call strips of '/__main__.py', second strips off '/pip' - # Resulting path is the name of the wheel itself - # Add that to sys.path so we can import pip - path = os.path.dirname(os.path.dirname(__file__)) - sys.path.insert(0, path) - -import pip # noqa - -if __name__ == '__main__': - sys.exit(pip.main()) diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 0c5ef70a1e89fa8a76c8e1c273f257900b1c2567..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8427 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 diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/__main__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/__main__.cpython-36.pyc deleted file mode 100644 index 0a70479751c4fc99ef4ee61f302eae31642fb0e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmYjMyH3L}6t$hCOCPCnD`_5&(H{oqj(MGU4 UXfxHBg&_)I=!d}tJVBx5zj|DDx&QzG diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/basecommand.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/basecommand.cpython-36.pyc deleted file mode 100644 index 4b3446aa0fcbd5a83ff34adcfb5240288de41151..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7262 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 T!{1rJL$poXESk07(!BoxgxbQ; diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/baseparser.cpython-36.pyc deleted file mode 100644 index 85b705147d2af1d3cc93c7f6daefe47a1ec101f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9323 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 diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/download.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/download.cpython-36.pyc deleted file mode 100644 index d55180a92a05c380d051c37fb7354bf472a129b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20362 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%0D>@BWkJbh+%m^- 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 diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/index.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/index.cpython-36.pyc deleted file mode 100644 index acbb562aadbf607a115ef93319bba14788df14bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30285 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 diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/locations.cpython-36.pyc deleted file mode 100644 index f03661adcf02bbc6e05c4932c0bece9dedaa2521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3921 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 SOzXHcZT(zhxz8bK{eJ-PKSP25 diff --git a/env/lib/python3.6/site-packages/pip/__pycache__/status_codes.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/__pycache__/status_codes.cpython-36.pyc deleted file mode 100644 index f64cdfb70b1728e911f283f6ff9ad10a5204500c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 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 Jes1FB{|iGCC5iw5 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/__init__.py deleted file mode 100644 index bee5f5e..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/__init__.py +++ /dev/null @@ -1,107 +0,0 @@ -""" -pip._vendor is for vendoring dependencies of pip to prevent needing pip to -depend on something external. - -Files inside of pip._vendor should be considered immutable and should only be -updated to versions from upstream. -""" -from __future__ import absolute_import - -import glob -import os.path -import sys - -# Downstream redistributors which have debundled our dependencies should also -# patch this value to be true. This will trigger the additional patching -# to cause things like "six" to be available as pip. -DEBUNDLED = False - -# By default, look in this directory for a bunch of .whl files which we will -# add to the beginning of sys.path before attempting to import anything. This -# is done to support downstream re-distributors like Debian and Fedora who -# wish to create their own Wheels for our dependencies to aid in debundling. -WHEEL_DIR = os.path.abspath(os.path.dirname(__file__)) - - -# Define a small helper function to alias our vendored modules to the real ones -# if the vendored ones do not exist. This idea of this was taken from -# https://github.com/kennethreitz/requests/pull/2567. -def vendored(modulename): - vendored_name = "{0}.{1}".format(__name__, modulename) - - try: - __import__(vendored_name, globals(), locals(), level=0) - except ImportError: - try: - __import__(modulename, globals(), locals(), level=0) - except ImportError: - # We can just silently allow import failures to pass here. If we - # got to this point it means that ``import pip._vendor.whatever`` - # failed and so did ``import whatever``. Since we're importing this - # upfront in an attempt to alias imports, not erroring here will - # just mean we get a regular import error whenever pip *actually* - # tries to import one of these modules to use it, which actually - # gives us a better error message than we would have otherwise - # gotten. - pass - else: - sys.modules[vendored_name] = sys.modules[modulename] - base, head = vendored_name.rsplit(".", 1) - setattr(sys.modules[base], head, sys.modules[modulename]) - - -# If we're operating in a debundled setup, then we want to go ahead and trigger -# the aliasing of our vendored libraries as well as looking for wheels to add -# to our sys.path. This will cause all of this code to be a no-op typically -# however downstream redistributors can enable it in a consistent way across -# all platforms. -if DEBUNDLED: - # Actually look inside of WHEEL_DIR to find .whl files and add them to the - # front of our sys.path. - sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path - - # Actually alias all of our vendored dependencies. - vendored("cachecontrol") - vendored("colorama") - vendored("distlib") - vendored("distro") - vendored("html5lib") - vendored("lockfile") - vendored("six") - vendored("six.moves") - vendored("six.moves.urllib") - vendored("packaging") - vendored("packaging.version") - vendored("packaging.specifiers") - vendored("pkg_resources") - vendored("progress") - vendored("retrying") - vendored("requests") - vendored("requests.packages") - vendored("requests.packages.urllib3") - vendored("requests.packages.urllib3._collections") - vendored("requests.packages.urllib3.connection") - vendored("requests.packages.urllib3.connectionpool") - vendored("requests.packages.urllib3.contrib") - vendored("requests.packages.urllib3.contrib.ntlmpool") - vendored("requests.packages.urllib3.contrib.pyopenssl") - vendored("requests.packages.urllib3.exceptions") - vendored("requests.packages.urllib3.fields") - vendored("requests.packages.urllib3.filepost") - vendored("requests.packages.urllib3.packages") - vendored("requests.packages.urllib3.packages.ordered_dict") - vendored("requests.packages.urllib3.packages.six") - vendored("requests.packages.urllib3.packages.ssl_match_hostname") - vendored("requests.packages.urllib3.packages.ssl_match_hostname." - "_implementation") - vendored("requests.packages.urllib3.poolmanager") - vendored("requests.packages.urllib3.request") - vendored("requests.packages.urllib3.response") - vendored("requests.packages.urllib3.util") - vendored("requests.packages.urllib3.util.connection") - vendored("requests.packages.urllib3.util.request") - vendored("requests.packages.urllib3.util.response") - vendored("requests.packages.urllib3.util.retry") - vendored("requests.packages.urllib3.util.ssl_") - vendored("requests.packages.urllib3.util.timeout") - vendored("requests.packages.urllib3.util.url") diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 5f0a681fd3f9d8f97321019b15015f3aea876db4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2793 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%0AEtC%U>6Ytfsl5E`MyuZRM=PH! z%zt+A+QQ|z`5XR`%C(!78<(zJx^VMS5is?f}_gJ6%R}LPC1yQi%Ls`2oV8=2xV7u~d zIUBHaH!}ES@yYGv;8Lc$rcS`HGMwQtmZEb$AvU|e-Ph}61fqoVJDAB!u7j{0((s0F2-H{0y#@N_ju8qQVhKeiu`9Cb^ly29;JPxZe+7 z&a+baB!q7^o6j2R-(dKv2L`XVnLr=#5=H^f6ubob4tNy@wrSaBc2cVuuEOd5_Yj;K z+yrqD*X}u$0_nIj8Q258MWSI-BBsLEj_I6U@ZP9FuNvdK(d7M7A}{m{a>C|-{DCjY zA+KKU8Dy&XDV{-W^uN}u$LFQ2tXPt@m{Qa&H5N!I3Wi9l2{g(3PHbX`7gNKBjJ(l( zwT}u1%rN8v`g{Cb#K&F4hOhGbBDGB}NbyB}+v%;eV{RE+X-`&45ocCbpFbz(Gh9K1 z^V#tJ>vBHF^A@=$-*q%P#THh&7b{_Pj-Vf#v1-VOw%7x_lBOpb_}52?H#tXgI_I_n z3gldO(%Ya+ay;IW#g$;0g|7|MH!7tJUN^=C+5QkH8?Q;Q{S1U8UX3%XIj(N`Iavpt zK#M<&6uf$K&wV0C{A&oO?(u%q)UERQMyrN*TfJKjpAri2$D|t;`=Ndv%Xp~;N_j~X z_~Q%LZd|=^Wq#?>9HsvJoCJvdgOSr$ZhpY?3>5lDBIoDkZ!X@rhD)W4BCNBx!#TrE zTnNZ0SPSbi`tPvto)b8c4jMsC(_o?v#G7jvndj5d(|ocjlZUnViL9HNCuqGk^GC{as z?v-|_?2?$`h2JEmm_)zeUTG`ua=hLm+cJ|Jv-%mAPxPMIUKg9cSE#v%z*RH4T{N(%8CcoIq;*;9Q z@1&exSVJ2_Th!M$0#9eRvLJ#&_g6!#M2JAwaXfMH6V!+FNWm}ab6{Y~5eerx-vev~ z=gxWT`9`@rjCU8Blb@f0&MqX#z<-g&J+7U!ni!r$kji<3P2_5D@;uQO&J0dKPV~rz z#VCG355yI+@{PMm8X{f&E@_AcLTadB@L$$AgwHc+=>1&LctN_L@&6Ps^udO!k2P@ybQA99+2mJ1k%Xvq;6%lbKCjtp{?9jzWuJ1 z*&1rkSs5A&77?85{@yo1u&iYw8R$`mZRu63``0`Hnt>|MjmQFB$=-c-@|Ja?bgTTH ze7_g&DAvy?YM>ZUCvpl)X~*`5XwcAb&mp^CTle#8POH;)K_`M?LGDP%ex|5RiA|@M+?1o zP_j*h@*N=kC||#p?*1eMbc8EqcmXDMSvL`?M64X%KXQ`QbD^L{LX8$M#~7GdgDSVU zTIZh=E}U5^KL`@BE*=3AUkro?R-RKr$Pi5gz=)tp7>8U6@t-2V7+_qmrNKa$z{3;@ z0t6F#5Dfqa_tI)lrH#7oAod6Rc8XsWCBV4p=Oebn5EoVe8;tI?tF~f5Fh7P3}27?FNp&h(i{7X7p zneNY$P}^6zeZspA+ju;gOTRq=R5%;Igy}gSb3;ZdLGB<2Wifag~s5WYQlMq+4T0o-md4Ttl1^dIR;Vx&=CFeLuA3vlUdKOF+M z(4FW9ZnEutK=;3d)A{zGD}ag@EyQBtQHl+R^LWrzU4;SEe(IgtoqAbw`*H-puk{0X zK=UzM22aPeIiki?VT>Q8yZ<1ZTnOuLP^ud?rfYekP>e-DAB*o1MKM$fcS^uydM>a5$*_>JZwu{$FnN(Xu>~u4b9FG`eG9gjUfPufYEpRW$mEMW2n&h zFk{Gqgny5nI#Lrr1k5l7@4rlM!(Z4+R}3$Wm~iGOqCyBEz7OQ2H*#Kn2m9RH7-CQo z_vO5TM3^%7|B{3jf4YsT*sbjCyt9CK(=aP!cha}gj5(o=ytMGETX{T>UoqOwZ{=Z= z=QfHvsq-m>B!|(L?~QDXTE#8&g(%gK^G91l8wYk$+}{}EFB<7R{GyTCQ`ev_4xCTj z@vSkvw{T~HK}{%-r>b+H!4StN|I)QW4ZMs=Y6<%@?hzuv{RrwZ)f}tDkcVgS12lN| zFn>tGTSpjaZC%JxHLO?3CUW^biV2DC5?@osXYfM`SbvS`kSY?`k_^}D(^aYBCySS7 z&f&eU^m;73GQf-0Wa!q^l99;ppCpYV$nNLxGTHilhg|Jk#iom2s%g!fJNM?>GpD{b z-fdZNRNWZB(E}iPC#G>ZT`4UmMdA_wXq{=dL#p zV;jdxR?n7qN>to7etO8y-~|N!Xb_eo-}~q|s1Edp@$)hkivkdqBVb%VkKY6WoP4~D z!1d5BTX9Zt)N|PQc~y(#=Op@v>v#=ByHt>0#9?d?g%fRjVK7Ko<-OKzylxlSDSrFL zZHN4$2A*KkU&e*&WK&AG)L7OSGxEd7jIngVC?W)HU$11@BVJcy!#OR z5#u2+S9Cq*x5O3Qv1pew)kS7HT`XsBfXX}zCX#&Hj-&ZPnCGis1FjZ?g}ws4q`u;B zZ+t~;enoUbCv4)&X{vp4n$wExx4A#!7kf26e(t*Hne6rX>zDiyzP*k@1ogSjk8rbJ zbmSFf!W2be2N6^LF->EUNmPPd$Y<>K2YmWae+5x#NCH`YrnZS(jIK0tHu%VGK9ZHL z5N=m_l?0<4$1Oi4qtKE|4Y3d+jem@gj~dS)tiW^$n8V1T0EPd?88aV{@f}z}6S421sG^LAN^OLQa>$xp zzEj-FfQ_Ip>p?Y<&3exto_CX>j2uL?VvyZKa z2DGmF{l8fk1vk!eeohjWSQun|(RdC-I+|uYY{KYH?<&tD zhz@uyMzNuZ_WS695i*!v2xD>&W{((WQcK07w3h=7f>tGYe;z`6h;&Tx52Fe~8>U>r z8^(2{0cmO(sr$FKvY`J((z!PRV{P@$XR%g3qxrWn>J6h^7;n-y48Cmx2}1+-e+Dt1 zs-Q$5+1H)VzAx6gPA2~KM-kjTi+zB96ybv>Y0)Ucp<5zF1}F-Y^0-haCfp}6%zIXT zfp7I^%HKCDx(p;)FIc&LVR7-&jRog2`>0~$578pA>W=dYkFqX)cCY{W`43TI(knZ> z>6o}#XQ5H}AQeAqx%n5kAgwPA2g7mw0!PZq#w5*_aQ7dOW~Z@}8p^}&C>UeNMblEr zri)o6bkm?^o}qP;$9KW#P7R=D7C9zBMAIw`OQ55HJ|E~49v^54{@ysKPy+F&3p; zPEbbln>?FdZ6`6fgY*BH7!*fvWYj2Tjyz1(B=AE>gtCVC3AN+j#sQNftV?r_04Jgk zw^JTWMH~S;777cj;UB{-q%43YO`~e$XVif-A?0e3S5ZKeqwK+Xn2k;|*poX(^c_R` z4toE8L++q{We=nJj>7p=b9^g>tJ1q}l`+8s)#v*4X;t}966}8zG70>!DS3XDziFV} z?xq%$3?Mi2>Mnj-NUTAdNIO@}e!ngL+A-ezB0|Za|Ar(9erOaZl{-b2TYrR}bU%t$*@IQ}V zX4x~vcctPND;2dA6Z@l;${nnR&{u{k75orfrQ%RxI&|x#OjIS)1g@hzH^$9wX*GE_ zjl5Jv-uxl2sYs+k9R_&(QTd6~np(Z*(3x~-C_6MY9LjEIhnx4g=>b&sC=MI}W*ShP z#Zh5An}N1BitiW3i(`dni-(J^6vvAN{=?r$@o-^S4u<`hkW91soz%c}0XH<#O#t0Ws z(_*#?UuJPNy)gGt33mUqUVzspbc~VvTy^ICtPn$S5P_ z9aQ^L;6xcRhVT!pbzC`w7E$Hq{JxxhY74cq__1il5yuzA|I(StK>Sl}VPPUx{25Y2 z*3Hk%Y~W`nyXl#Y?km^ir49%;1}|8{N>crU&ME*2M~q7&D}0MPDq6Gf{@Q*XD-=*y z^A)YRMV!s!6?&*J^M|SOD}1R}x3B>6n>AnKyNH={?T&n^-X6_!-O-DPV2}*uj>CQd z3z~)UVMDam@LSJo{xDSV73{;i{4G517x0r_SFi@R;pgTqeelVLei1*Y^AXl=A{gl( zxancsoBGfZ?~eYOKXyT{loloH_@j8J60Dx~i;CNDjO7vpijcFPvpSn?R~2Up3s9=S zMER?1G0y=qbRy3>ewI(;N5?5mb#Nnihcp(fN6*r0@&27i&p%P4%vtl|8e&w|hSbfxkTX>h{%8E#cE+&S(Ec>WgmKIP`G zadQV7zYvtV6YH!`V?De-GQY`RP?qH@QZp#_oioA5&T;cLH{?s_5;uR5n;&!Y=eeO8 ze$q0<&$m`K@C(|)&hkQZ0f$gZ1iYd6@C)aa5PX-_8m@&+7J;kCzYL7?@okKzN=B8wM73U>4W`ip#?T8Q6YyXNDb? z-I>fV+28Lym+w+lvYd39@GP?H)T!?~-}%mY&wJkUp7(a92L}t^*!PEDhl95q~ryz!Jf zi#N`C`_Y1D@cXoT2EWgE&*1l4@%yYhhu?GZ`#65T%{_x?+MO;~wI!=41y_wRK zn|@DX?3Lyx7o62{y>Z-GuUxy{xZ^Q(uDpDE<|L9?=VrND+1Ok!H!8I%iY)tO|DIE+ zIxpXAT(4Ef3x%uKEA`+;-Px>ruG6SFE5285cqcb%Yu-s)i6=EX<*LiftW$Pf->cWX zdV!a!UgJ*9U#p|m*Eu`JlI`KmYGtM7dZqPB!}H7Q^~Gjxa(rTZ^7LOOS!6|0Wcba` z1$^omB&`Ixmt6c&){jzay6gG%lcm{{*Oq5aPpvPX zojv8AojFySEUm80Hl}XQOyKWY_2ku)8bGquG8R(nwEuU3xNv42i*O=+DK( z{UrL7UbID7EQ`;3@TotJz;hhC!EGo z?OeU#Z>}`jxy|ZEd1Vb(QsWctGse9u+JxQ zU-JE$-!4?@m1@0FuC93P-KK+;YNOP+x8c>tGE03JNe*ATAH!WKSAo6lG;nw+wR}6) ztzh(7!Kz=o8I1lhyuMyUl1LVlnPee3lpId_d+>WD&8zt1H-ROc|5jug7~BSiv_8~G zNf!xRA59{cb^BV0`v3%hm`CYv(4{|u z?_DT;LrNEH=>c3Xz8&v$2j>&_K`a`%`vg1Z)$pP}h!(vrbBgHnI*06a2T5}jz4fkn zzEj(5IJH&BFITU5&T7qfj$Jv%@0;a@!#Sff%!x`ALOvEGk69e>HOKA$i3cQe_=gy_)DdV&KP&W83Qi?zm;n;Yxi zO%MHX1wF>nOF1+V;4FzwxmTSOncZMj-K!J2^6aDMUucc7n6C6b-{k` zP5Gn+?ZR@UQBt+q2_B(pY-1~NBXM6*Hq0dlS3us9m3RwAObdcK-;T0|-f*tjcW~qg zF~PH^k-6)TeB9^60x4+$U)~NH1dJ)PK!0u(-VYXqw*@Da#iGAGwEYSOn7Tj{$8Tj^GEE#W`Y zO1}?8AHPzkasAdvtYt|V+p$bLiy7@V+G$MLcBbC&HdOPXEo%=Npb5slz}FX$m>HT& z`eXRTX4yZsa~_{M6ECrZ*|C&bO$f6Fnhj_SK31ek_1e2CcPmv(4f!%cN(PF^AXLyI1DQzB@J!uXUu|b=jqAYX zSPyfhl6R|AdOu2PRA?UT^2Tvh%)U5{@_f0xn9B^Y5Q|H4E7eLhl52T?Zv&XoN)>fu zQvL~)Y7a%H&{*1kD=z!Tc`xhT+AObkX<*eWm6lMV&K@Q(Px7FTy_(6wwwXJEPtb%e z?_O_|N+037SyiIvTUpG$H3A$?pEz*p`w1BTFs`QvGy)2Pom>PwCQ;rWXF`BQ0F+tB z($cMs>@o^l_zVF?z2LJRhL4$8GK{mRBHmIxjJlm$X{@Lm+~aC+H>O%?Gr%1!&xGJQ z#r~XR(usc80J;iWPsYZK?)GEMN4i6MXQ*gl90sp1jqK7s0L*9mc7lD^PBZnU~d;oC8D^#(_bpp*K3VBs^?JqToTmqPct{e#deI*BiPYuSl0eU0EPtZqI0p zW2-0hVUkM+__kBoqM%Sc_;VSW%L`{MrRb` z9qhTCsWJQj7gKi0UY8xcMb?A=_U6RHzIk!1uRRcgp3G05=r5NI6oqGQXQfT;LI5>z zpnbaUp?O8Zh3(WvN#FVye#;&;F`UAhK9bC(%y%J~N~TizR3_;^hf-H9wdXQyCtVdk z?iD!cxUY>&yTjp0g)*3S9c3X*R?7tT9B@&*>N=Wpj_NSbcy8a(UF*_>@dRD6M(5$?SQr%a=tGM&V ztc1b(r?`{yHO&6MTl03X=3Rk&!e1?~cxLv6F1%^;Ppx{`@P${_tHMFtetXcMm36MC zb*$#~6~Ceu!v)2KIuJ0IG4&yhTY~gHRN*I!FR3t0PZ( zBh^R?S30hiz6PWbc?f z)o?~3M?Ikgpku%~@M{m?FRO+J#Fj$8%nq30heEuj!ln);kN8AjQMzc_shcRx-FZ7- z*@g$aqLvZ!BB(d2-ZixLwoEX{xg208M4E=1vj`@P@C+DF(>M(j|51#O2uzz#8)WZZ zC8eaqDIk{!1w}6DKZeKKgD>3%;;q;2$j(fW`R*t+e0zo{MQwuu&R-BmWJ5cYg4l6S z(tjteywRxC{HtDgG&%cbBGPQ<06Zijp}jlDB!B-y4(@E{;QH@i9rH+fP>JE&v(X{V zVA`r7E$AVA5l`D8CF7jNN2mj(2Wqbhr4Xfd*sW3!1)V|0f4Y%&!7i(vC*`|indZU^ z-uecn7!bUU9UL~0n0J`^+)=9yCufhNQ90NMkO8ZDp6j_^NS^d5?`}T+QWZ41R`r}? zCyzO(^k$_&fdXjBQ6G}o0V8t-=Laz@-_}k;2rjhLurV3V^*G_&SCZ1D+6J{Z<#lp2 zY~UUXnG|L1#iaiV8e$?Z(Ocmu_=S;ytU~;m&A=)z2>v$fX*hm zxgv5E%=M=<7`G#!SW{6MRcWj!^pM{3QDe&e{0A!Dx*OWrE;tRmOE%Swa-|BHfehtp z#YatC4zU_j*=y((7G?|#N82>qP_Uzb6a<#-3`PCzOx3%KaVk|dun6{ZbVP~UPGR)2 zQhPhYs&Qc>K5mbcRskEcD=dku{c(=jFkX=;Gj-{Lb`T~^_3X3;yE(5ax#ir+DH_n{__zrg27tJ?h z6RtxEMAz}C%HtReyPl0(>d(67um`(axw(1MQ6>2zc?T8ZY=o}0D?th#c~IL}t;|Vj zju|5WG2wHdpan?ZtW-tSLOrjlxSe53;=@4=HQH5@-m~*1zP!Yu6C4%7J25~RykA1j zjs=$!&Lx>ge})X_5w(-G5j7IfQ$F6nydlQ{K{GTqH`16vXK)SDtyXe1rD+cGphGVh z?u2FC3`X_UMs_Pz-7mkh_VZP#SE4M$fngTuSYxSua4Gn4Td;+>8%zKt? zrEV1Q=GR_M+b>`&sWVly7%1uw4oSr&1_F+Z+qOwf^|C~${H4>qYn~jnNr6GDUg299)1ydDh zGHGGI{qxfGjv2lHk^$OTZh*zp)7Or&Si_9Yv}VUFHYrK2A?(7g26%E60$pJPgG(H8 z&A7%8PuJv>v2CI(GEDA+&hGqqSstM7aKMk&vGfLY1e`$Eb_o=+Hy^dgurP~ zB+QDX?Lm#9R_V7H*y&E{t)s3^q_VSmb~PtsfVjCySx{J}?bVMW}eR@bVvJ0ii?y%BP~I5wz6tHsiD<+`Vl zvfXb-x!q@q&!Zln%b$M{NqeY-<)(!F)N17}nWp#h&WD(gRtx=a_m>u4e6jS>;-&YD z<^5NA`2$R-Vr}$fpX)9IoUb=FK6;d?C3P3w;jvhm!spp0P|C?V&(r)#CEsB4e1e3fQx|FSe5Y zt04I>QJ{|UMhf2}_$O5S>V_p)CryDOaIx{EM|dLO1(I}drmO%H;Nc3*vS85Pxi>N$PtUD|o?F5ZN; zDe4g@c}dyYk8d~ncSsY+ttSqUjm(i62yKAcAGBZyYM+s0K3#+o2qrdnP%c6TtdQ#r z>baKKO5&5kCw=$xEt)9(!Bz&;Aw$;FzuKY^9Bls%(1rn9H_ZAMu)!s}mvS=)!0u_L zGi7PO2+Dy)ypaQ=_Zd9@ag@x4p8vRgJ{LTHZy5A~o5McRk@qKV{aXm!@=ySOT8Y~9 z-G1Kv0Pen;xHZyB`=4*6-M&!WpVxJ#-F#3t=#8OIFlcHNz`}w_RmL`-NczX`KHVtt z3i^KVL#eGS*xBTb!3L>Z?mn(36Q4+uvNd+KU=vBUSJ>8H1NbiJISQ^dKu|X}06(EVh~o!rxsV6v_j3FisP~4@!OqM56aBj`CljhQuav3?4gSP5=7IuG z=2G|!CHJJ%uc34?ode;4_2ozLoFzG^DUh6v;)mJS`XktDg4Ga7L!yDbrGErhGIAx0 zDV8ixffZ2bf(f?f-Gc>0rBPmn0ETj15@HhfWx&b99#O+fF`Ra}F^iFAY{NQ>I3v#r zrS`x&;%#K2sUVR_xVl+&!M0XmQ3xTNTUlMjVglYn=}{c-E+z3~;nm8;DHhr!1^Y4V z4V`nnSrM$zssfrja8qK#(1T?2!QF6Xoi?JLP-hoIdHsb);?Dr30XH2Os%O!B1M5+gLbHj?E&=?H zJKp%U@u-A>f-_4e#sPgjK}HWxPMwC33=Ttw$HsO2C0%!fQ8`AhA{0aMO7#REA20hG zA0HQ3kF?jQnaT?YO#6fD4+v+k9kwAS(L1A zcq^4vm(ahc0Rd6F!GO}fa1w#k?sr(Z8_#gM@KIK28}N70?GZUXD?Nmu!)mpZ@o%JR z&8_f}7+b?juq?I@hf0D75oxKATA|OJeOVk~AK{XT#w#~DRqU;VB!Q6_XdaG3u(P;@ zUq7DUd=NCHG?Zw{ISkbgkrLj4`zblZ_uC;kgy9){1>GdBK@I=~QX0}llyXxC6I(f| z${`I*-%oG#xtXmzY)kX4J}pI{2W__e7?v`<`bHq;(B)6YC^j4+0CkRs>R9JsV7nmt zcPMCqreHEW*ABCCstZQ>0R!}a(T#0VIk+LozR@yNsvGd{lSLZ3#%r+b7L_W#o~FLP zZWkxnsrsZm+5`qHuJiC(EZhVw*cOs}lg>V%XK}k=E*Mgul_W}xX<&-6f`cmy**E|5w=#>Sw=H+$R zhif#z#G-vR=$U|HKwl=;*|kgiz#eRXJH;H6dW^NiyV)&HmP874>go6_>;6!rBLjF= zIznL~9S4<{Q++Sy5at-=Q7}!zl0XR-;s+dpq$~?b8B_)Q7nIUwX_%E6a2IRI+WT-X zx0bACQYcqn4N8jtRI1#+?Yx6x7W+BBvZ7h_V0LuQIZKuZzd3GKjXwmaDP_#HDp(6F z3_&Gt_!QH#qW4Tw97YTef>{P&Bw)wiCpx6}&9rxwE?&BD1$x=i#VgNWx%wWuHj9Xu z5}EHqVMtu64Syav!&3+<4Mu<=^C?cO4@TyPMs&5`c^~m<1a&5M6)`zzn?%p%gXA>E z;@B0QB9U4m2uABSL9lN^=H3v{Kye)gnUX-J;})63vdMJ^n4EL z{Ax!;+fs{>i(@(XvnuMT$e@CYV!nuh{(sM8o{4Y?nwXKcqp1JAyb)t;_eM}p6$GKL z5$(7WNx;H!h$xp$0p*60xipcGx#rRB(9hOnH#wY7B-Da>h6|&C5w|(3+JiF%^=e6M ziQ)OS-5wgZVfVEHzrgQgQ}LmHX?zbIlv*5nB<5kK{MOFmxptmnB+#RK{khBM+Wj8%U>Tvz<;bj51fc^*h^GBHcLnZ;3B}Xpb|2UHW7hn+o0C2MS zSIpwyKrx%|&kqy_iwE%QK=H7YV46Z;(B|h} zSjdo#Ylv?%af+=m?a8z=kmg-)r>}c=1&Ow61)##hrP8m2nh}SJDiLW1;U_pw@`4uN zW0u{dOttO=)c+WY|61r(Z;1{7RU$^R1AR#MS8}(iUJ1!xu-Yp$=uNz3E&cV-yZ1%k zZJB_@v0XivcmE&b>A z`Ca)e{-xDFAzmveVE>4V^Z3+X#o`rSx%H}z@N-o7VD(n3c22L_eR|c->s7m7ui6E@ zY7Z#o4pwhb>|pg4rOwijw@WE?MAfrP1$sk%H?B*VH{?fzX$ol z?o*O~6!|0WQOWN`{%QA^JPg3Nv_tr>ra88@?3gevED@P=mfXB?gjgoZA8yl( z2hm`19wKrLtp(Ym^^*`+r~DQ>|4Af0=np68ABSG9C~g3QD8*&>Ip;VD>lEoI`VV1= z=v250z~u2T#Ewv1?1ReUehP*^!w_G>_5c>{Nm{PoIs$Vi2yWZ-UZijZt>f z2erI4Ff)1&vc|T6ws_5|WkXL>QsngJLi8I*L08k zpXL3ZWAgJ%*aVf3$&#rgu>W_qGvK>u(W1Et(-|{Hb|M>Wx`1lx>qsm%QMM>N1qI(w zf@NVK3t0&;Dh-9#1P#%&rv^;r4CjcFX?R0WnBNScoF9c|Dd6vULa89%7~4I|QxJT(aCn0e+*jYR8MnSdgauVah4d z8h{a&YKP>PtQlw{X6=nEeH}&2{v5-l!1z76h9@X$*Rwgb$jz?oX}K>EjwRF$a=|{S z+cvnv7+6NoQYt-eA)Ufr7Y+fL%znziXu1>hF(@CIqwK4|dlVVf&$ZkJ!haHRBnNRv zE1`23jkO&2PR(bodh6?SOl4R+DpMF>0M>B&HBh2Kp(YkX<7RDtP^a=WET}Z;A7h7P ztwCq_FGikCIlJ7j6Bco}*s~+XDHp^x0l$SaxCY04r0`LYZw%FQKqru4VN2ZPIm{c` zpep$1{GUcuevJu9XfR0aypc(pLF%&HNF@{Du_5u4sB(uQV`CRzvr0$$g$mRFok6Bc zzh=VyLO#nW(ydRQ!}G9->((ck*&-^|0+w#w;qzzN9T7_b)$;H&=@=UW7~2OiB7(7 zsV}D`GJ@UVGAQpbz`qh|%E3;sm}1@AvLDbl?2Tb=;OGfPg>$3%^rCh3Wj)rj**M@R zABS*!3yg zL0(&9(60+LrT$_gi;xC*!itW$9KfO2%`o`!jhstCG8r+%&gZiXa(koyegfVUbpBr^ z0}K}J56Je)H*3b??*BvW0hS6%-)f;A*@*eS(o%r|(&4*}f=hQ})MPBkZnY#}03Fx= zt*WnjMBbEwcLz3j+|X4=I-g_f$NI`Y2T;A@-Nf2L12e;Ei>V1b2g>l@!4{03WuZ;i zWo*kl<7{lVVpLb~dAgZF{{`~EU3$pu`{dM_ke8V$PG7Tb#V5rVH&Q#DOh)AuCUt(J20fO^u7 zQ*o)zt{4gY8ZM7iDJ71G>JNK}B0j_5SLwi11m{X4U3f^UG@VJoPZIwivBm&F7|InouY$Q*=CJ`3EfS*;W1|jdSgow3 zu_2Z>i_jF~O58FVN-QLjH0TfMqjnp<>6Jy_564=Rv$c>rR6$zMUWzx-7!!gPMPWS1 zEnZCXz!50}en+RBkj(Syb5r=kgb`N z;KZcePM=fMBkGIcINmk*Gxm=9fnIjKYurF1Z<95ARuj|FW1%Gt!j$|CsNr% zfnkVj5apzczV@W*QT?F2Ye%Q5L=599PJ{Kc|r$EaNuuAS56hAU^Kug zk|Z*~ zUm-D2#jXvO&D^6=q)Md_;)J{dJ3Q=Hu`Et7ypn1DHs zib+Caah%wKs74GLzYND@VRQ6NGOZ{818fi}+ZR<&)w`nsLcSLVOd<9nBUXps5|mLk z>IkBXs3-IZxD#~)(yuj9i2_zb)uyEckWw)g-e~jr-YWeilG#wM@t!%( zORv~=5@xZANS%Vg5Sv1YI?Rzpy}_+WC5`|>y&mA!;J45=GfZQd8J1WT`YFZBT7eJf zE@d~`51%bwY#s=qg~0@RH+#M;Y0XivrNl@!dfWcV;@3Q++oc`NI9Y7itMkr8bE3=r zqdYhP6GB{0WPYQeBAnuut6v0&z6c&FT?nAv z9t`qmrvEgb6QbC%ERV0N~E8~4Y6P@)~9IPJm$P|r4k8JKuR#RqL2d!;NH(-c_j^Bn-*s&tFA!PqUlSTt9nGk&AyD zYzLXJn>dmOv5Zj=o)Hh64v5WPgKK8>xO3It1gE5SYN5Kzp$hfoD3-p*^PE>MUvQ?T zPft5j{<(?IpzCm!xhTsIud^6zW|2AO|a3ZqLe*lcy z17?;%TKvJDu!>rwg&ujRx%pE)=BCKA#q+ZlQIguP&E$)y-)Ojo@tX16*!fzoseUU zzkKM~ios(D`I?zJI~l6h0A>(9;(JT--t9p1I{?k51x+6GDr$icspz4A^VYG+qzHE5l;!e?%Es-P6B09~yne#>u0b}0gUHbkb9c7m zZWjQ<2O7I9IC`wbSlTn&^X$D%f54{GTSTH1thEl|g0Hh*V_Al+QXxd3k< zM7g{Bib6H%6H+~lW%>c7YwNY;^7^+Clp==fkF6E9NOw5);7oobfG3O~u%Y9rf8vC82BdWlEZaqRZ*%u(956&R0P)Sv(Mi4Z_keot1_CPjf=JgQz8LDzS)N2Ev z-y1=_sGUx)m(AUwhH_&u2KEA|)j#f<#RGM9g6 zej;BeoGOeJi}|7aP_YP~Z}~`#E2zx=(a3ThpZbp@3HysNRG^!JpIF+pwgLIy}^ zFW@7V$ux{KUYp5nd{_N%!4tpCsl&%%dVWOICGVRV-!8hL~ z`t-3;t`ZSxN}#(!K@&d4S||{MIv#OG8OhK&JT-Ipp`Op_&jMe8|N4 zQT}@&C-5J{AV~-z6$Ij0{`?*!P;GuUzS`-se@&4miYP+VMLd)Saqz&JXDa_y;*I#= z^wSC+2fHFT-%y(2b|D&7K7hoe@G}wA;W{rUdl#8jvW}zd^uaMn#^EBWz~&R*qEj2k zUBnYoR-gAq8shE_w82Ij59A;(NMr-6DGY(V1UO9&AFNMcwPB;22^SpLs6;U+bOsZ}e6U|bCD1MDy6oA? z>PG0&>18G+LbgwSsm7DGzcB35D+R@&@v!q#=nRFaXPG|z6UfV zN>a7!=1{`NZv=pM^AP>}Zhy2i$`nxMn}DtZEgf#MMFoDbTm*Hypn_0=xIheEfzD1r zJC2v3vFjAj3mm)QqESZG=pXZ7Nggp$>Ut<_jG-avp{hh-BIg;8a0vBK$n^&&#!25k z9O_x~z$N0Kew_Op?5x$%a?Ph+qRQF8$gNz%0Vlz2g^aIrsGCO?5axx}U(?RY^|D_E z^7@@c$>F@-heVdzc5=X*>*5m*{Gd}3QSnq`fw-asEyzSJ@gD7hLD)jhv zBvh9ctPSWo9Gf51CjZaTcgtoGAXx%~p9v(b#D_=eux*(gIBeg@xF8}}ladFp#*j#e zO5{&u?dr5(K{=3HB#MK%d-IY=pnie~z(^5XJrc3A9FP z%%q#+mUB}JS2$Y8_&Jd*)z6RHM}xyj8Hks59};a5?tp@R-wW@3Lu)#*lm?)p*&Bu5 zJdCiF0fdd~W}?7zA@7Qs=yH5%-@rM@u$lsmHkCgJK^MAmt$}QUSk+HKBEcG>D&6=OQ!y>J8nJFEQ^lX)g2dZ2f2WuEK5|20V3 zS&$}uexYfT@S??1=(SU9m$0G*YUv*b1DXR5!1EuVs0heh=#j{*ChRWYQ-2zX+B_-$ zOyDNC%a7q?nJsuDDQ3XUh_6|$`HhO^2#2qOW=DdUOOSI)O}XR=qt!{a#89Y0BYG-w zlo(3wIkA?h!?ML!6~d;;iRn|$^!TYb7Az{mj=@L-a|LJ>K}bRSFVQuOFu~g%GBLho zS&5$x>3FqM+^4(okaP7g!S!ORA1WTlX9YmzW z&R$4c!R{}VXn9vdui0hrSQ|($j_vO%6FQ43#Rd_<3toQT%!`*6pTGKoL@>lTYJRQB zLoXU?4gbGclzsL;&xD(7|Hqj88IvDk!ev@0s{j8mM~Ex&5qJD5q92hmM*Br_@e{aF zKa86Y?W8hL2xB!*A53N79f0$c_7@*39xV>%AIQ&bEZQcc{$ZVggH4C@<)kp?AZ&dA|d(ti3ADuy4=7q~8&vSYdOPhvh;X>sTJp$S2-fQU{*GfW-g0~k@-y0{); zMRMJWIske79_(1`#!#FNuvb%u3LS@qZR|mkAq~vHH4cYv8dG+2Z+dEKa%$?-*)ylG z5UO{Yw1&f5Zq^_VlaPxrBD@zX5Pk=kzwXDE;+^yZ?6i0fKWz^?Md<(p-OOinyTf}8 z*s<8dAt2$Wk4I$JTUNW|5IJ28xFY{uz@O%x_ma_);P7&iwQ%@w8XCq;e>am)Fd<6% z!oYnObFypTYNXh^Ip#R&&EmFzd^^2-n=z`<2I1<1$)02JpFvV0k>X;W*e&uE4n72}?tzxbw916w($1v~0nvf{5+ec2(sHF*hDObzT*#*;&;v3?!aMP}bhJBJ zZRb>2`}>x%rkf+-#;My8>TR1w)&ics;8b7-tpYgwM3{5aBSkgMgH_#5*PVdVgVPFC zt(DzatfTmBb!qHQRLvd29k9^_M!l#v;2nem_pGYh*#38in~3*6Zh_X{+!qEK_!aZ^ z2;>Z<6ZB{#go_3r{aPN}9=H^{DN8qhI)Gy^o&+T3?N^&#Hv~=FTjB_5`ZPWgI}?2E z&=$B_hX2qzE9IH47+cN4-azpPz-3nbdtCkR46HMW=2#5YT1VVvyM!~)(>Qd>r+6M? zs|%W;t%qM_^76*tMfvYCZ%jZB+Wn2TyX2zmv>*ww)1t37f(epRx@DZnu9~u|v?1za z(~@m8v!Xfrdu$7_Cjogt^U+vql-{;`W4g@Ie;nXeLbvS0!U0 zHa&TIQeNA|I4q?=HWHYI8K{{dixJ`90+@avGG0bQD=Qbl$lM#|UKm~j1v}`Ma_#QMV|e^G zJ>U_UZf~UhQcxEKsbax2eHJHWb)w3M*e{8Y=>bsr9YE!CA*dXPAxdBewFrm{WA&f# z$aaBK$t$V76ZNJ_UrxHKROOt+A$>XDAKFyOj2BAH&BzDXFzRJh*z^1m3411$g#a;p5*i*SVd}pD1%Humn^*6qu7QfLCrMRfV zMLj)$JXGS6FCs6>aO|%JkvHmaD8oTX_V~}^g;vDIX0Rt0@Tvb161DMZq+sr!@~0@2 zWFQsU-ej?g&>N=F6*AcL6rssT;X0r1ujWw~ zKBazIu(G?~&g~NG?Yl9E96rdwy0|nX@4(TtqSRCE5fQ0wQ~c?E*4nF{v8+0XOXMDx zL6I(@%jP^&VZ((r7v-iP2jQY{>1Ua9nKY5Kv!Wgj#O?lPdFyjbUO|FYR-{p6*!_1i z5qy!vvg!XTk!BP(6OcMFBpw|3#i75L9LBNdbmLc6+r!M`j$#6?V6*41mRG#)Y&(Zk zhI2nMK};$F9;Vvx<1oRhvnoJoMhO#S!bm4SiRXF{YlbTQH*7UKlAt0$7=dt$AlwXX ztl5|We564ak>PD{_j9+NV5ClD%@JqP0n@y0}0%2S8@n|EsZw$Oz-=GGO5cO!#KgX@Tkp>C36%2zk zNL!1%LCyJG@8z&8fWOP;3+$-}g9KGC8l=jU1}|0fzlkR2zK#JIW# zwS`IvLzR=ZC?+Y3`-vOFEf`Yrjp{yH#~1)vn2~$|cfg1RtwU*e`-j`pVr03CjjU-` z&?ey`aBPa)54EaSS%Dmn%F4U&LS19MckydC;5WiHL*6}t0lA`tUvkhj^{980(n}*_ zXTX{-Uo7r?@M$xRU?*Y_RDE07u>@n;=4RNAE_(2<d%G#gxl z5^>p!Gn@{MLO5r~o%d93R^a3ad3~?8OvY=rU6?!>nJ1lX2$jUFi@iWK5TON3WDaQ| zSSff!z(}&exB(3LK|guK0D?kcRh_Pg-?6H21l4VX264*T3r!U0cPi*TU38(efht0W z5#cI?a#8}$Lx_zR+Bm8qf`pzj3#EnUIfaPT<&;;!7|ZpO1Re{NwQ;7L8mkQSVz&5> zG3Ee&D4r@ek27>VyCm&$mFk(ndTy2^VVuOUBS7!{%cEVyECfmh?kI!^WuA%`+e z5c`kj9+-q;dk{oPV+abLoH`D@yN@qXdWBSLvXhq$0(T@zckVJr-dH(U=dtjIcJK4N z!Hv7pvHt>dpFsjY*kB)jiC6zM6A>5n+SX5yrF{;?5=V<^ZsK7~lH$g`m@K3josUua zMsRfqI(V3wKqI#Yn}b3smmI-|v8VA1&y2tTCB(HoV7vb`UWla?CS^2{TFccA;#bQ2 zDkf@2@H;J9fK>Bm1BoC;M2{{92h<>}-1#c;Fbg3@a}Z(A#%E`Exc$k=31~)Tj4yCl z>P#rW>#_g&J>2>jM+YA`ZS$Z}CBV?MVjNmCrO80F;;RTCGK*sVX(nfwyp4(A)u)-0 z?T2hISaE1GA$tqHLzw(0`9|935zhRM2a#<@dVO7Nx`im4_*>!LDB(9i;@mXIwa{XNr&$z zuMI8bQ5wHRzPKCTIEV>++9PlcATGkFSm`O7LzA;-vHa+Pm~9Rq0xSmw!*ZrMFf}DN z@M9)6V$FUjB*hAoL4I)Z^wjv|tQyy;W>M`0Sl!fFyi9fm6XTPoClI^W+{JDI0Xx*) z$=NgN*;%~s?3wXN{qt0F7k{3b94F$a@>3JjC_6ccl+O=L&6sw~G)F>9DwkI*Ud=vz zdvUB7#|c5aK2nn$lMItI6Ig^Kd`eXm#$=i6w&@(ejqf6gP!fnur}_s%(d%C!olp6E zDuP0+dLEzp-$PF2h(4_g{#Ndz5K+^QO3v%TJ^E4YcMnJn``leXrpL^w!?S@e)ohf@zltU5 zfxcAc8Sxl+XkV(208p}uh%{IZ9B=Op9I6(cyKwQ+^2p0|Pd&*=Hynx|{IV-}xj-JRQq_7?-Aij~$QrB;}MPTwpizgMhkEiEG&X zNG;2s=X>9Yw zrIJYZRNKL`n~!6aIHcRssTV^=s@BV$$GVgfcIw-TZL8uwN>3+ zswQh7mvZ+=x$kKWNV$R50Lp!jI~*%VAx5D!u#X`Vi>)HOXA+-C`7`crT}~ii`pVI$ z-q3Br9T8~!g*y_I4WO=DnyN#s7JFyPeH3j=)sMtmqiWv5NyJ+N_!RFokPhBG-so>( zAx4-*2ap_e3-3&94Ynx!DJZz!PrigJpGe)h2>9WCtGFk@GIuBNi*LUPXkKS2nZ4!nR6l&CIlIbvgu zpkmt8Pt5$p!d{tH2i|PW)X}>>)hd-Q!bYO`q;VyJYtKpzVfH%wh~z!uZNwld$L8ja z#hsGW?r7pguk6y_@EA%+^i1p8M9~Es$UV4JAkAw|UiGzAj0r)p>wf2_b`9cqP08aoQ}rr~G*o9~)BcDL>5T|BBBSN(lANg76Xe z4qnJJWC;EJ{QpDWFW*)7+lBg?xD?^!IsZv1E6P)A zp8W%^L*Imqac+GI|$c z4a!E*3z|hu zE;yPx)SS?mX@h3%-AJAP4Aw+(!?pM5-3YU3P?&7_X)v(XLs8QiHC}7=dWCSk8&KG$DjrR5vVx16>S#+z;-<) zXg5ajQXdeSMt+H5#`jX*g2o2}XoYEE=b~k#`%#=sny^)z7H)P69y43m&2AwK#8&q1 zJ7`!Ui{*Kovy($y;yyUdru>(|?j&)@B(xxIAAX;2;R(bqrbF$ktt=R9IMv=d$U49( zWo{kBV#tV>8UOpS$TA8tVj7cK=ShM7M~RZxSf6}@olmv$A4{DB69vPSl>hy_E76vb z0&)AxpBKcv2^~|t&L|BMcA6Acfy#txpcL)`oR~U_DTg;4rvYW(dU?e-`b(r$tSK-A zZs2?m_=;N8s6*h6qmLw#*5Qf6Mz&2iDJAPYjOf^mRS8il)&cRh){_YB3xsXN%4I}C zs#aMH-bJA0yyoFqw4YhkIEd(1uH!fEBRHFSJ!rXY&dd&q3atljVq#Hq1gn4VIzV1v$ zyr$3tYFCKCPWb;0NjniNP(cp1+x;GVq2&Z!<%iaSqC7(PN!SJ(Uy#8*YHr@rN8Hps4C_DS6N`a}_8b65PVUoF{onlvDsg9Z-T< zjj75gd||SLP|x8>N3pMsY~9QrotU1wYmGm!;Z0C>`3OGZ<0$^2hd?c{S*0yKM|NN0 zW6&tm3uj(ap61IwqaxvLn^W}XUIX?=Bcn-oEM!fwcuo(c4B-ResDrGU|;F)#hwxJ zc}R$o)kAWX4rc0bTZnmaHO~^vp`3O#1K$OZ>nWq0q5J5H2g#oJ*Fz@3`Z1Bjpy8vG z@ZIQF4rezC%C5;=;o{c(G4T0HaifCYGI&`SS3>l$lR&F&R@XgW7xb2p$g#L5(OH9C z7249f1>JC!NF=!WI5L8(dz8-y@HC7GYFUe z1vJ|~z?{q6=b8K%lRsl3h|g_?BGsh9$}O5O-ihNgL*e{1$U^-H9?*`@z<%&HP`$zh zdZbt>9xP74M)p8{zqmg0i4_#Ke`)0A@u{;}Vcm-R#GB{(3^!<_QQ3vO(Wnd~f6#qQ zv@5%jf82eG(`Tk;Pt8sQmXoT6otU}US7;*_`#W@i+BP;W-HSi8s1}w) zdQiH_YW1xU3$iG@rNj;UN_$=V{~0Ln|1}fN1eJiQC@X;9BVjyY)G1T~T!QJwWwa096|M zAGNslH|fY}K?Q4(?v9*>RzBFt`fq1k_6QHiMPV8r;VgINW39G-%CbsklT4(4k4p9# zSi{HqnHa2%w_=F3HsP$mswK%Hi1+D;^?WxTg}uG3{}tXjWZnrcYx>ZK$Je~m_84zT z*m+vS59?;FTu;CHLd9z&r-@1rB>x?B3iOu&N)zlg(-cqF02whQ!mZ%z7Q7>^F!|tzSGdc{Uu6 zx`)v5L8qEn5LxHhQn-{kOg49RCt1+YLMxnPrx;%^7Ix=n-Kmvt9IvfUt>0S-5hOmv{Uw-aKjE zq2on#d57&F2^l}aaNs$z8|M6huefz+qx)$-jBOdleLLmI$nNaihV4!m5V!7gAsEql zH4LNeqF9h8Qxc9fDlk*czcq&nh)5K;Lh+|TnHUe-#;xZ=fT3Gp7%&eE!q5SozkO#1 zh`wigF#SHj^hyX!ac-e&Uco#kOT}on8Lo*MITr(+nFZQg<3ncgMZFuz%$771~7o0C6E=scj;fNoXolA?_ZT@?^yCZoN?+>=nP*X567-wc{!{)=?ZfD zECG+RYH`>Z0-deEqoLXuV+9l}2;j77faV|~KzD1NGEc%_m!Ze0@#NRCX@!2m88yX3 zhbY?LNG&2wn1ji3DCpVi9|2q{p!Uw9&pqnH4Np$N;RZ(rAIOe5GBBKHj4n$fRH4YQ z5D8>hjv({kVUc0@^*HX&Hfl4$kZ34`u&(=fU>F34`Sb}ppazB*1gfMlII(ewK+=>p z0OurB<3bI68JuF-c~I+Kr=e0MR4Ld$DN|S+{JdXxNiS z;)d#PLj(M?On!!m_$^QppiT|pMo66%LTzf-14B;m#z`hqOoAmua>9hrGU&G`SvZ7@ z4ux`5he9b7ha?yZ1ELHTcZpzf1;y-N8o7CV>K{cCNLjy#hehb3wd)w$gsN) z=(yj10S&PNP&Ut!nm@u1B>??f94aLUv=RhOu_0G>7%GJ$t`O=Xb3*JT7KF>6O(ro{ ztIzV<=a|sn3Oo0}!K#->)wdA;M^QQyD1{zU5aT0I3Y1qiP>Rk=pp;qbc-LLr#sR&6 zPkldW46(!P^hmDFN5ZZ>( zU&3oXYhS3MqJ&=fW<^E$B{o5(hKY(2Y6R_r-|VO;zZz+fY<~jkAq~?0vfWu6D%Il@ zWZS4Qq<`J{VL9>ZHzLhpRFpV;Owf%;dx%9s(MFI_EZ179HjErXdtyaPspwarxdEN# z)~`oPc{x+^uT>#?}i-Zd&3Rk=Bh_ScN zVxFx~>7+)@Ks}+f^r4xCS#~BKi6yv=X*e<0E7|_hxp=KR2|zPD?!=?KL^jG!DCP@I zzaJ*bORS<$%ol(lw9Qu_TKF;A~aYQ2tjs=^2^m&J;CuyFiCdgz#Ik#>8OayOlb7GSwaIBAj7GL{cd(>J)&?) zrGVla5FW)^9YyDKtZiyIoI6k&ZWAAcx4)tRQi3R_vR4o@(?0`0p^WcjbKd07*sgt^ z*Ir@rLrlJ`04e{5JkxWiCgIosDH8cq2SJfdd?Y|hYTE!QW^Q+G^SQ;~X9b`7JQ8D7 z!?U-rlEQ;vD|Pp2I<3))9X>xu#l?0QenbfbzlA}z#EKt%KV;QVGgfNCDtKy5eoXS*(Fz zR7wo&i+OZxF?rACGUnikSKvK~7b2?s3cXOZq%!mxQDrP5Nav@}Wo1cRXKswir;!+| zVUg7Q9IyU76M`ya+4LFwJO@WDCHL*4kOc?&>?Rwj$&bYTt4H=A;7ZjVghuiJA@&|M z2$c|emg^RL)u4+gmm}X}U&Z?`aDX}R zi6V}zmz|Xv+=#V+M8qk?H&-H57D7U_Qi4FDjS?@*`vatsoCuaKqR1bT3Q%u|usAq? zsPIz0C>tBjRr^OIn#ZU9i%85~2?1*0ycZ9QgR6+LfHWKwXZt`nsO4Hg0_toN5(hOR z3=Yx}Ngt7PkED-Ex>wSDlJ1xEfTRae`z{I7^B7v2cOM7-zeR=7nGM3|^sjnnCg$c4 z%BY!NT?K15hwwRlb90kq<(fI(!S^6`M%=uB^E-KVwwcF%2X|&?n*CbiGc}DUHWL$* zb5poJg9n0jnE`By@^g|8p|aah>fVM=O5(H5|cG1cbI&X$u~3kIFmAy`%L~m6N!NJJaZSA4Dgk- zyz`692{m|uKV`%Om|aGvoj-RIZldend5ln^{u&Y(t5zZsa!Re6FW`0w?Pe*mQ zTOsgK3X2fJw)E!*5fD9{&lU2+V{l$f4`+rm`6GoR`KR)G^20c&p6TiQWPUb(VEF43 nPYgecl>f^3erDwM@GB$!u#-#6)h9;2K5=UJeIs8x{N(=!`GOX( diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/ordereddict.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/ordereddict.cpython-36.pyc deleted file mode 100644 index a7d1def0e4b828d710587bb44f7f2c6a720455e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3617 zcmb_eU2hx56`h$~lFJn>>&vobD=L%5MQGTft;%){2u7MZZGa$3fT(p%IM`5}Ax&xd zq1mA-5mbSe2CAn3`5ArhFUjM)_Q`)C4?)kJB`Jzg9}09Ab9Z)TcITdZ&%JkkeeGKK zx7-h}e!9-szuDB4LH}d4Uw>S2vHbsC-=2<$5QERg!Y_q}Hs0)>+8~OW?WT#M zJ7izlp78=-;DU#I9(R9b3fSg&@x(g<>xp{5Lrd;MH1IlL5j*1pP!Kle4eu%5nl#Fd zIPeDW)X3_5x8&;_zM8dPtJ<|bsi^aqEeTBwupSUN3#9@f#oYXd=p+FIb4q7Gd1v;|BoPGjMurqJqNxsI;e2n@7ui*iWFU1a_!psga2bgwPii9{c z^d=nA^y7DAlMybxh`wHeuyawADAP2m6-A}Y2+*NAwVC5;+*5j)7WuWF*0T_AVCEiL z5<)N@@GM%9_is*voceo>6rhW=A=u72Tj&^4p27zq0wClJgwkv8jGqaDK0w9*L;7_W?qzu|HAF0}jm{Exf!8hC;o>9rH?Fsx_Hk z-y%UVa6vE^AV%pZdW!Lp3&;T>?wcf1uTcBeW#(Kg z-n+ydGPmQ-4mtyt6b$MVrP%@38wN}o@&hr1f!hV+!a99}V|;`K2cy8Gxw{lf-$r*tEbGVB#5j8Cn;4#TR1O>@ zPJW8HQ6lr3?}aL!%;=ovppen8`OaVE~$ zx9ES1e0EMo@L&XheT}yW;}IWt`YWtO7OA6O_r9ht-J3Iqw>#OGY)mPM_?Hm>8nE;? z3zR<35vgmeA-)$!I00P1EeR_&A6kA03cHANjHPV&W4IGH6I1K7y3fC&AJX5mtbcDB zI*~*6YAT90cj8X18Yj=u8GnY<PHGi2?=dZyL2 z`DQyYk;~Ym%~&&1%7zy^x+1=SL58R=z&i!p@DT5>UajK9PQ?ESA1T+P?8Efn7K#W5 zHvnL~>r4du$g;^ReB#W(czq8}D%)kTI;Sd(NSSZb4*(wi>2r0c{Y zR2oRHDVsPAuHI6AgyjclS6YPJy?b@NEV^xo?I$Y({(^l|K&3>G5Bwc=RCtLR=^Wy? zis1HYabg1s{6ndxU7QD=sajp z;`FY8tA>bCDsqRO-jJZn$vsL{bQTwsZrDETH~BSmM74jtPd=U*{3X2Q&F zG+p9*6l8bwL#(4{ZgpfY#)L(oIqFs85yeS+cOKJpV$oFR^?M{XNc@t-0}^Etq_quk zB9f|J?ZrkDgI&6}S$7~xoGnxK5HDbL@F<-^x5HhHyx=T(=ZuU zQ}LPt?o8m!POc**lTC;~1ozVGssh7ALK#TLhWF6TFZOLg#iIUTyHlMCliF cP$fXl^C=}REIrxK20N+co>Td91}}*J0PfB8%m4rY diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/pyparsing.cpython-36.pyc deleted file mode 100644 index 38c3dccb86eed46079bb0ae0dd61768dc39cbdfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201108 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

=l9EC#__aD5Kggm5$< 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 z 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Ⓢ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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/re-vendor.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/re-vendor.cpython-36.pyc deleted file mode 100644 index 3e7f514450a84cf374556508e511341e48f2dc35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1105 zcmYjP&2AGh5VpPEpZvBG1yQMoh!a5yOG_G5gb)&(BP2i-LDgzgJDc5Zc7yFiY1AH2 z5KqC00}`*p(N|7=1x}0|n$|1NjAy*#`M#N_jYjp0|NEosAoK^_T5v|MV9TE%7-Bd_ zgSEy3Y|msstab*D)pS5P%G}Je(&xbnukfJ42y?!oL6uSFg03--`Jn5(!Gbd)e()y8 z+13iP%9$gkyt+ad84s)OBId%4Z@gxF#oos2gZDeHTd%kNgW-3mUAux>QUBD)>qWqL z4O`v=p#aAUW2A6K7%>(@@SoFPKKLNxggwgaa%B&>Q#$ zx`|l$Z^2mf6w0sy;BU~$!%Lteb26&P1zM3yY)|e55G3l#%Y0*D^tpa)?giI(fxsK$ zNPp?cbOBtoE1Hy2`*|uAONFLmF1V)CSdBH!%CyjKDowzX2?ZcHKp70w&g%5>m*LI=-rmTWMcpEoy9XE;Cfzt-D>5yrKMce}es>Td6qF@La zOP#DqP7N*t0G*p;b7Wa*?uhhZPemsflakGH{?afjTOa}$Gy9Pp63`$B+yGkP!8SS|{{Tpe`8ogq diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/retrying.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/retrying.cpython-36.pyc deleted file mode 100644 index 7df4304e4b0c32a6e54b775f66126b9d05af8538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8094 zcmcgxON=8|6|JA`vfKTgo_`3H4+)MY-80E#Lc(O2$!Aak=|EMQ%7V`(gM`F_RX_^o-d8T$J?@_oPid-vYD@4@Nm(l-i!dih`XXxiVjk;lUOd6ck;N@zlFYOB;5O}%BT8oGj+ zt0wnZs}{Gp)toR_^THCj>)LAJ^P0$u!gWm)e7kS17V+N}Mf@-F{}TR}#1#Hd`BUgG z3;mK-Dc{77+Db)F%&@*)|KNiUK363OJ%p8sGK&&Ejw;e_XnkGin}$3Q={JDiQT&%D zgek1++O82B1K1_)4ebrRW{8}~U$=M7*t`V1u%F%geaXS|q+e}IFKSDt)(xsry&X8w zh8H>YAdI{qs(XITAo_xOJNw4MHCp@_xKI(MZVVzd+nhpTn zmLEi+)A7R47f#gv&=u|zn_G`MoBqyLTZ)OZ_ru|)4u(jos#MWqpb*avpoGUzMOp(~ z>g#W4HE>NB*X_Q(tH;E5b0uRlO(QmclBO;4v_4O)>9O`BBi7%h3HnOKNbCVO607Pp zn}Arvg2dR|f&}&2&$aj0mpih44eVRK=E>z+yD5AbF1u%z*Vj%z{6KT{xW+9ql7yDb zp#nL1dN0tsndDeo6B8Pzs3Hm_k;Vis<7L3adnORHKlfyrHW=X@-e+i8I=5piw1|cG z(?*JS$E@Cg30sk-nN2@PY*I3Bt?5^+;fiva)}Et^Wi+xGQuRj*4SwXV~)H#*$jOSY5#0^iWIZkV;sF zUdAxDo3@0Z42;-}HCKyacmcUx7=T!S=y8rACxr<}4iF>GGvsk$0g?yAj0+68%wr0G zSh3BJ8jrC7$;Cy6Z1c)RK=N^kA#aHs)+qr}h^H9xgUAMC3Xozv&yaU`oq0e?>)M+N z@1p$U4XuGujdEYt73M|x=M*;0uvyG5%74bQm^l;N6NCMm_P2FeVuMA_gm9Y)$`MAy zdf%Xba4K*z>-w9D_9DigxuNq;bG$0i4`}!d(@p&^rv3BWPqb5igK4JzYia)i_Y>XJ z{}$6r{ohOb4{-mS>X$!@=YY>5@HPM;ynhRqqeDp)-is;T2IIXLm(x*y1y2rQ=Aj@T zm#K}X)1LpJ=P)2g&@)YKJcIhE&|rT{D>vy--xR3o??Fe{_DfQhD%mi4sHKy|4nSFo z)D5!nzhOKHXV6d0|6Z^0ASQ-1Db`+{BQHTlrfDpBg$Sxo~afz{Xl5GgN1TTvG zRwoK!VEm@H!$bHWzF$1M?g##MN1pR&ZG~O$%<}^y?z;7$9=Yz&w47~vtu^7D8-Wa# zpa{VWc3@i$V=+mH0#pj4cE=?bPS!i?QHH=CEXUhpg4Vn1V{Bffk@OJ4#3dJnEf$|! zV?}X3H9llwll zJiMPMkKfvnaV1fmqZ}C#%>M26WB7F!BRfVjI$vrGHs;t2u=supC}@RdN7Du zjuW#e=1z^(z#2XZQ20D5ZFWJw09qC`Ix4WT}DzJ0zF(;Gk z_z_-023~lm5EE@9f$`AGKda@nd8##QuftiC~*;(^zZRtC#sxSvjBfd)Ue_zZJJ7_EW z^4$^ih8i>Ios1T_LEB2hN8XIcevIG4q!wN)PqkP!C6gg0U}-NgG}M$c-MtCchfl=uk%1 zScH=8Lj0I@>xYavqc@~% zY-mOqrJE>G@f^*4A62A9dSn1^(74E7Y`f60-Q4!OJBK1r1j@{}>Fd|*o4ffdTHxrA zwys51BiGk<3m8*CuSLBtYk~0+S%!R^@9W`4oNpil&_E*a(u93t>xj0CZ|+7Bxdgj! z$aiRLS(87(yb{-izV^C)_3zOXt@pYfoW+Q;8oi6WL1S9J8_hIk`n2aX&PypSMzbOp zm-+^5QW12`;k!G39CRTokQ2tk+HUUZu`5V1Lq3HS^=(Tsx_Ft7&^lfzyyn!X54G4MOY2Ydk`UD-IIm-QK=gkKrZ8TuK$>Fk7X?sa};^tp&XmD$90-N0-4 zuA7uxx78NiCcT$k_iEQ`svh|ac9j%ANs2|}vs95|mE?mY89hn%N0KR!bWE9J+$1g*ws5h)YqhJ@ zu9UbH5M4=ql-u{W{c4v!yOwxJmAFX{wPePhKndwfp5k$20AcHp^`mUyASnY&bs7DV zxF|`-2aa+aIwCu=HmnBk;U%QdO@o@{_1;{{w57qv$i>V`5iaB%8K3ib!THwYnOK*L z5ilcLaP=%sH+f1+=trp^Rx52yT-2DlhP)P_xQZb^nd|+5Nu~$_s!i-AhKzBVV#bYn zm&uBC!c(ULoC zD+Yn}nook`t;KLV6=j>?iu^LF6}Wm5grv-ox?w0tpC_@X5Y?~)zDV7BT>n=A`v;2h zBKbV5L&><)=uHho1D(xo70C6H_*f{kBn#ypfvW+$!5ubCate6Q3lag6e-!r$D~p5k z{GUv3Zl!lL-2-=8ubtdI;V|WomR>uxn<&C=8Sx_dON>6XTPZNfNgl?xSj_@y)Nt|X(!@-X2duT$cjn7BVG637?bIzV~pyj8i0$#i`cn_agrQ` zq;y+Sa9z=^Vi7iV#8KI%YPikNdXdri3knB|cFr>FTxo_)37x0xA@x6x5;~|RS|xQ0 z3d=-pj3wWDf%W@>x&c&bG-i!R-J4z*-KyTQzP=F+bZ)(Vjg+q2NlgUdLJzf6So(CP zm5E4mwaCGhY4O2F^g!vZV&DiTGFwo9G7X}>1MF%T|2qgAd e<%-YIjTm3CB7cKu9zV-6?c3+RuH83x$A1Ad^rUqF diff --git a/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/six.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/__pycache__/six.cpython-36.pyc deleted file mode 100644 index bcf57c530c1376e9dc27ae5a133c04e97d53ff0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24483 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 Kpqp@S!v4Q{%=B*n diff --git a/env/lib/python3.6/site-packages/pip/_vendor/appdirs.py b/env/lib/python3.6/site-packages/pip/_vendor/appdirs.py deleted file mode 100644 index 4b5c38b..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/appdirs.py +++ /dev/null @@ -1,552 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (c) 2005-2010 ActiveState Software Inc. -# Copyright (c) 2013 Eddy Petrișor - -"""Utilities for determining application-specific dirs. - -See for details and usage. -""" -# Dev Notes: -# - MSDN on where to store app data files: -# http://support.microsoft.com/default.aspx?scid=kb;en-us;310294#XSLTH3194121123120121120120 -# - macOS: http://developer.apple.com/documentation/MacOSX/Conceptual/BPFileSystem/index.html -# - XDG spec for Un*x: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - -__version_info__ = (1, 4, 0) -__version__ = '.'.join(map(str, __version_info__)) - - -import sys -import os - -PY3 = sys.version_info[0] == 3 - -if PY3: - unicode = str - -if sys.platform.startswith('java'): - import platform - os_name = platform.java_ver()[3][0] - if os_name.startswith('Windows'): # "Windows XP", "Windows 7", etc. - system = 'win32' - elif os_name.startswith('Mac'): # "macOS", etc. - system = 'darwin' - else: # "Linux", "SunOS", "FreeBSD", etc. - # Setting this to "linux2" is not ideal, but only Windows or Mac - # are actually checked for and the rest of the module expects - # *sys.platform* style strings. - system = 'linux2' -else: - system = sys.platform - - - -def user_data_dir(appname=None, appauthor=None, version=None, roaming=False): - r"""Return full path to the user-specific data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be ".". - Only applied when appname is present. - "roaming" (boolean, default False) can be set True to use the Windows - roaming appdata directory. That means that for users on a Windows - network setup for roaming profiles, this user data will be - sync'd on login. See - - for a discussion of issues. - - Typical user data directories are: - macOS: ~/Library/Application Support/ - Unix: ~/.local/share/ # or in $XDG_DATA_HOME, if defined - Win XP (not roaming): C:\Documents and Settings\\Application Data\\ - Win XP (roaming): C:\Documents and Settings\\Local Settings\Application Data\\ - Win 7 (not roaming): C:\Users\\AppData\Local\\ - Win 7 (roaming): C:\Users\\AppData\Roaming\\ - - For Unix, we follow the XDG spec and support $XDG_DATA_HOME. - That means, by default "~/.local/share/". - """ - if system == "win32": - if appauthor is None: - appauthor = appname - const = roaming and "CSIDL_APPDATA" or "CSIDL_LOCAL_APPDATA" - path = os.path.normpath(_get_win_folder(const)) - if appname: - if appauthor is not False: - path = os.path.join(path, appauthor, appname) - else: - path = os.path.join(path, appname) - elif system == 'darwin': - path = os.path.expanduser('~/Library/Application Support/') - if appname: - path = os.path.join(path, appname) - else: - path = os.getenv('XDG_DATA_HOME', os.path.expanduser("~/.local/share")) - if appname: - path = os.path.join(path, appname) - if appname and version: - path = os.path.join(path, version) - return path - - -def site_data_dir(appname=None, appauthor=None, version=None, multipath=False): - """Return full path to the user-shared data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be ".". - Only applied when appname is present. - "multipath" is an optional parameter only applicable to *nix - which indicates that the entire list of data dirs should be - returned. By default, the first item from XDG_DATA_DIRS is - returned, or '/usr/local/share/', - if XDG_DATA_DIRS is not set - - Typical user data directories are: - macOS: /Library/Application Support/ - Unix: /usr/local/share/ or /usr/share/ - Win XP: C:\Documents and Settings\All Users\Application Data\\ - Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) - Win 7: C:\ProgramData\\ # Hidden, but writeable on Win 7. - - For Unix, this is using the $XDG_DATA_DIRS[0] default. - - WARNING: Do not use this on Windows. See the Vista-Fail note above for why. - """ - if system == "win32": - if appauthor is None: - appauthor = appname - path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) - if appname: - if appauthor is not False: - path = os.path.join(path, appauthor, appname) - else: - path = os.path.join(path, appname) - elif system == 'darwin': - path = os.path.expanduser('/Library/Application Support') - if appname: - path = os.path.join(path, appname) - else: - # XDG default for $XDG_DATA_DIRS - # only first, if multipath is False - path = os.getenv('XDG_DATA_DIRS', - os.pathsep.join(['/usr/local/share', '/usr/share'])) - pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] - if appname: - if version: - appname = os.path.join(appname, version) - pathlist = [os.sep.join([x, appname]) for x in pathlist] - - if multipath: - path = os.pathsep.join(pathlist) - else: - path = pathlist[0] - return path - - if appname and version: - path = os.path.join(path, version) - return path - - -def user_config_dir(appname=None, appauthor=None, version=None, roaming=False): - r"""Return full path to the user-specific config dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be ".". - Only applied when appname is present. - "roaming" (boolean, default False) can be set True to use the Windows - roaming appdata directory. That means that for users on a Windows - network setup for roaming profiles, this user data will be - sync'd on login. See - - for a discussion of issues. - - Typical user data directories are: - macOS: same as user_data_dir - Unix: ~/.config/ # or in $XDG_CONFIG_HOME, if defined - Win *: same as user_data_dir - - For Unix, we follow the XDG spec and support $XDG_CONFIG_HOME. - That means, by deafult "~/.config/". - """ - if system in ["win32", "darwin"]: - path = user_data_dir(appname, appauthor, None, roaming) - else: - path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser("~/.config")) - if appname: - path = os.path.join(path, appname) - if appname and version: - path = os.path.join(path, version) - return path - - -def site_config_dir(appname=None, appauthor=None, version=None, multipath=False): - """Return full path to the user-shared data dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be ".". - Only applied when appname is present. - "multipath" is an optional parameter only applicable to *nix - which indicates that the entire list of config dirs should be - returned. By default, the first item from XDG_CONFIG_DIRS is - returned, or '/etc/xdg/', if XDG_CONFIG_DIRS is not set - - Typical user data directories are: - macOS: same as site_data_dir - Unix: /etc/xdg/ or $XDG_CONFIG_DIRS[i]/ for each value in - $XDG_CONFIG_DIRS - Win *: same as site_data_dir - Vista: (Fail! "C:\ProgramData" is a hidden *system* directory on Vista.) - - For Unix, this is using the $XDG_CONFIG_DIRS[0] default, if multipath=False - - WARNING: Do not use this on Windows. See the Vista-Fail note above for why. - """ - if system in ["win32", "darwin"]: - path = site_data_dir(appname, appauthor) - if appname and version: - path = os.path.join(path, version) - else: - # XDG default for $XDG_CONFIG_DIRS - # only first, if multipath is False - path = os.getenv('XDG_CONFIG_DIRS', '/etc/xdg') - pathlist = [os.path.expanduser(x.rstrip(os.sep)) for x in path.split(os.pathsep)] - if appname: - if version: - appname = os.path.join(appname, version) - pathlist = [os.sep.join([x, appname]) for x in pathlist] - - if multipath: - path = os.pathsep.join(pathlist) - else: - path = pathlist[0] - return path - - -def user_cache_dir(appname=None, appauthor=None, version=None, opinion=True): - r"""Return full path to the user-specific cache dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be ".". - Only applied when appname is present. - "opinion" (boolean) can be False to disable the appending of - "Cache" to the base app data dir for Windows. See - discussion below. - - Typical user cache directories are: - macOS: ~/Library/Caches/ - Unix: ~/.cache/ (XDG default) - Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Cache - Vista: C:\Users\\AppData\Local\\\Cache - - On Windows the only suggestion in the MSDN docs is that local settings go in - the `CSIDL_LOCAL_APPDATA` directory. This is identical to the non-roaming - app data dir (the default returned by `user_data_dir` above). Apps typically - put cache data somewhere *under* the given dir here. Some examples: - ...\Mozilla\Firefox\Profiles\\Cache - ...\Acme\SuperApp\Cache\1.0 - OPINION: This function appends "Cache" to the `CSIDL_LOCAL_APPDATA` value. - This can be disabled with the `opinion=False` option. - """ - if system == "win32": - if appauthor is None: - appauthor = appname - path = os.path.normpath(_get_win_folder("CSIDL_LOCAL_APPDATA")) - if appname: - if appauthor is not False: - path = os.path.join(path, appauthor, appname) - else: - path = os.path.join(path, appname) - if opinion: - path = os.path.join(path, "Cache") - elif system == 'darwin': - path = os.path.expanduser('~/Library/Caches') - if appname: - path = os.path.join(path, appname) - else: - path = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) - if appname: - path = os.path.join(path, appname) - if appname and version: - path = os.path.join(path, version) - return path - - -def user_log_dir(appname=None, appauthor=None, version=None, opinion=True): - r"""Return full path to the user-specific log dir for this application. - - "appname" is the name of application. - If None, just the system directory is returned. - "appauthor" (only used on Windows) is the name of the - appauthor or distributing body for this application. Typically - it is the owning company name. This falls back to appname. You may - pass False to disable it. - "version" is an optional version path element to append to the - path. You might want to use this if you want multiple versions - of your app to be able to run independently. If used, this - would typically be ".". - Only applied when appname is present. - "opinion" (boolean) can be False to disable the appending of - "Logs" to the base app data dir for Windows, and "log" to the - base cache dir for Unix. See discussion below. - - Typical user cache directories are: - macOS: ~/Library/Logs/ - Unix: ~/.cache//log # or under $XDG_CACHE_HOME if defined - Win XP: C:\Documents and Settings\\Local Settings\Application Data\\\Logs - Vista: C:\Users\\AppData\Local\\\Logs - - On Windows the only suggestion in the MSDN docs is that local settings - go in the `CSIDL_LOCAL_APPDATA` directory. (Note: I'm interested in - examples of what some windows apps use for a logs dir.) - - OPINION: This function appends "Logs" to the `CSIDL_LOCAL_APPDATA` - value for Windows and appends "log" to the user cache dir for Unix. - This can be disabled with the `opinion=False` option. - """ - if system == "darwin": - path = os.path.join( - os.path.expanduser('~/Library/Logs'), - appname) - elif system == "win32": - path = user_data_dir(appname, appauthor, version) - version = False - if opinion: - path = os.path.join(path, "Logs") - else: - path = user_cache_dir(appname, appauthor, version) - version = False - if opinion: - path = os.path.join(path, "log") - if appname and version: - path = os.path.join(path, version) - return path - - -class AppDirs(object): - """Convenience wrapper for getting application dirs.""" - def __init__(self, appname, appauthor=None, version=None, roaming=False, - multipath=False): - self.appname = appname - self.appauthor = appauthor - self.version = version - self.roaming = roaming - self.multipath = multipath - - @property - def user_data_dir(self): - return user_data_dir(self.appname, self.appauthor, - version=self.version, roaming=self.roaming) - - @property - def site_data_dir(self): - return site_data_dir(self.appname, self.appauthor, - version=self.version, multipath=self.multipath) - - @property - def user_config_dir(self): - return user_config_dir(self.appname, self.appauthor, - version=self.version, roaming=self.roaming) - - @property - def site_config_dir(self): - return site_config_dir(self.appname, self.appauthor, - version=self.version, multipath=self.multipath) - - @property - def user_cache_dir(self): - return user_cache_dir(self.appname, self.appauthor, - version=self.version) - - @property - def user_log_dir(self): - return user_log_dir(self.appname, self.appauthor, - version=self.version) - - -#---- internal support stuff - -def _get_win_folder_from_registry(csidl_name): - """This is a fallback technique at best. I'm not sure if using the - registry for this guarantees us the correct answer for all CSIDL_* - names. - """ - import _winreg - - shell_folder_name = { - "CSIDL_APPDATA": "AppData", - "CSIDL_COMMON_APPDATA": "Common AppData", - "CSIDL_LOCAL_APPDATA": "Local AppData", - }[csidl_name] - - key = _winreg.OpenKey( - _winreg.HKEY_CURRENT_USER, - r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" - ) - dir, type = _winreg.QueryValueEx(key, shell_folder_name) - return dir - - -def _get_win_folder_with_pywin32(csidl_name): - from win32com.shell import shellcon, shell - dir = shell.SHGetFolderPath(0, getattr(shellcon, csidl_name), 0, 0) - # Try to make this a unicode path because SHGetFolderPath does - # not return unicode strings when there is unicode data in the - # path. - try: - dir = unicode(dir) - - # Downgrade to short path name if have highbit chars. See - # . - has_high_char = False - for c in dir: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - try: - import win32api - dir = win32api.GetShortPathName(dir) - except ImportError: - pass - except UnicodeError: - pass - return dir - - -def _get_win_folder_with_ctypes(csidl_name): - import ctypes - - csidl_const = { - "CSIDL_APPDATA": 26, - "CSIDL_COMMON_APPDATA": 35, - "CSIDL_LOCAL_APPDATA": 28, - }[csidl_name] - - buf = ctypes.create_unicode_buffer(1024) - ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) - - # Downgrade to short path name if have highbit chars. See - # . - has_high_char = False - for c in buf: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - buf2 = ctypes.create_unicode_buffer(1024) - if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): - buf = buf2 - - return buf.value - -def _get_win_folder_with_jna(csidl_name): - import array - from com.sun import jna - from com.sun.jna.platform import win32 - - buf_size = win32.WinDef.MAX_PATH * 2 - buf = array.zeros('c', buf_size) - shell = win32.Shell32.INSTANCE - shell.SHGetFolderPath(None, getattr(win32.ShlObj, csidl_name), None, win32.ShlObj.SHGFP_TYPE_CURRENT, buf) - dir = jna.Native.toString(buf.tostring()).rstrip("\0") - - # Downgrade to short path name if have highbit chars. See - # . - has_high_char = False - for c in dir: - if ord(c) > 255: - has_high_char = True - break - if has_high_char: - buf = array.zeros('c', buf_size) - kernel = win32.Kernel32.INSTANCE - if kernal.GetShortPathName(dir, buf, buf_size): - dir = jna.Native.toString(buf.tostring()).rstrip("\0") - - return dir - -if system == "win32": - try: - import win32com.shell - _get_win_folder = _get_win_folder_with_pywin32 - except ImportError: - try: - from ctypes import windll - _get_win_folder = _get_win_folder_with_ctypes - except ImportError: - try: - import com.sun.jna - _get_win_folder = _get_win_folder_with_jna - except ImportError: - _get_win_folder = _get_win_folder_from_registry - - -#---- self test code - -if __name__ == "__main__": - appname = "MyApp" - appauthor = "MyCompany" - - props = ("user_data_dir", "site_data_dir", - "user_config_dir", "site_config_dir", - "user_cache_dir", "user_log_dir") - - print("-- app dirs (with optional 'version')") - dirs = AppDirs(appname, appauthor, version="1.0") - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) - - print("\n-- app dirs (without optional 'version')") - dirs = AppDirs(appname, appauthor) - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) - - print("\n-- app dirs (without optional 'appauthor')") - dirs = AppDirs(appname) - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) - - print("\n-- app dirs (with disabled 'appauthor')") - dirs = AppDirs(appname, appauthor=False) - for prop in props: - print("%s: %s" % (prop, getattr(dirs, prop))) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__init__.py deleted file mode 100644 index ec9da2e..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -"""CacheControl import Interface. - -Make it easy to import from cachecontrol without long namespaces. -""" -__author__ = 'Eric Larson' -__email__ = 'eric@ionrock.org' -__version__ = '0.11.7' - -from .wrapper import CacheControl -from .adapter import CacheControlAdapter -from .controller import CacheController diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 36432b99d9efd5fe09399da7333b24e20369eb51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmYjNy>8nu5SIKWTXE0=eF3f>BF3rWG(b?K2r?9CyR=KS5VT0iMEHjj?I7OzIC-6n zT07+xGUeo^fR4E1_Z@i0@9yLAar!5D`klp5^f&6+0P!_?^9h59ib%voEC$6u42z){ ziLoA;aWRe~#1lO+Ns%0IqNiq7%n(n1MvK{geZ$L*ym2;w(?l8XAds&%NT_%zvo!tA z?<7%yNZve<;Ql|Uz!_3@wdGswy$Tz*4MaOz6U&WkJa%ZZbboXUswCeyG|ukdOC;CI zS#afD=AhnBPP64QyLiSCqea}#`-+f%=<_dvd(?*Mcm1@M@MDp-31h;QjI}9ae2a1b z@r*HPxY7uZ7~4r`@N*=|J#g^;r}|ruw&`lP}mnnn0Sm}j@Kc)1nNQUc#w3* zfmTin>`B>**6aM@Os_9j=i)LyXG>OTL5N{0>WRS@8?3xYtz-qe!u2*YUN>b$sr*_2qCF{vQ1K(}73GU*uYI0Dl9$ z`3(j^1kFi|PnOey#f&0$a;I=(*J3yK3P1KO_VS?MF}K*ydqo(BfCItbkhm{;B82Ba z^u++4L$NQ0V)TZ_Be^H`er8I`(T>1=dO{{2{0(0xvk5g^$zRs8(GB36$LV}2kE>Fv zDt{)@T1y4t-t%m(?GjA7<%(L44SN{W-Dh$ zDS@ZEBbONSwge-B03SM=_zI*VhBs2blov8L0e&ef7sh-3-M6p4H^URHWLmsPOOZ=u z!c>S31Fc}$hW{XH2*>QZ1v4R7K}iE~ILrghCqB> zCmrblUfzd+&;jLC?E$({2-U$gtI$&bnrOO%%s}qJ32$A{2lXPCbW2yRa6l<=hQ)4& zQ9qjaTg;|6JDoVDZ)qh`r;EmfkdZ9SvkfTKTgtV{8lBBI!BXq`Nfd23f(FneP!2Fq zE)Gb{1Shg-vZ^#*QLRgD!tSOh`hNS3|05G-g0yvtaT|Ei%HIwnJgvWwI>7}v@dgB% zTQCsHs0*D@&Nv7(fKhz}@hgeYL`ca>^a%h>&^BAJ63E1a^A-gmE4D-XxHIFdRld1> zx|HKrKfWC6YOK}kF?eEZ8G}RIrOfMzqfmG=0P`ei=U)@n=wO^<75H|h-n|INi{O?! za6p$@pN^>d4CZs>iw(8JZh4;qXnA9LZ88~fhC;Yx8p^qgv8!@%W}Dy`O(^bchO|0faPW%210%6I|Ije zZa5p&?r}|D#`~g-nubcgKH?vOecu7nNA&@+mr@L8&<#Ft9e5 Od*E=N?{Po8#p%C3&WGCo diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-36.pyc deleted file mode 100644 index 8544af5293eb6bbbde178f6467d832627607bce5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2888 zcmai0-EJGl72erDE>{$#$f{#INxN|i1T{t=2ALU4<-%o^4IY{byEGkflg9A!K9S)!Vo+k?}}{o0x^?s5OC_Q*4JGBOzXe8;pxzJ-yNsdxA`MuM*`*BZ59{4N==F|aYda-M!Z zto)CkeD-Ac6Omn zj`lBtGAON?TiT_|*-Hl_EpEXA`>1DETVpaJ7CJdmRj7nalPo>QZ3UI5mbenx!fsU% z$7!DGIF@8Z<(XAgdn%SPRXQC@Lc0pbo7-+zt`gZqb}=AB8r|KD#^WqeN^a2@9jS5? ziT&-<7uDV?vnI({7xIjdi|ZwE{2%LkHCV{>d7{POc_IgsBI81;L41F3a(wXH_p;*; z?|;BQJoq5K7f;6b^?UP!ck!L%gW+J2F76&L(~RFen4IVXKD|d>ro_)h&I>s(Cu?jN zBsHb_i!-?mGwCd97sB%QScmy`z-;ECoWFSmmi@~+8{4!5AKe`lI=A{GM9F4wj8j`a z1VRj0vK6~?g}bb+jU z{;x1|@h;kt~sj4UC{k5jb`Q*uP2sFcqEatIM&Gg8?$fr1WAY06 z0u*v(2SvFEP^Htc=%a^*@jj2tou)E z6V5I?y))ZINWuP?)zz=*Jwv-|jZGlr3}I)sf9lKcOMmtYNV54l`d`OcT4>#v-7H%~ z+R`cg_*Ust{67Epnj4SED-BN@E*+mm^W-$mPd4O@3K=aGbrI_fdi`*%VK_}y^dil& zh#0?IU_zGBWP-wwQ3}13d989$Xpw6KyXcTqc&mPFK+_2^j*LX#7zuna0z|dp@_lA4}I_u!=A$MkHm9KQ7m#X&T>z7uNZ;(50d@SKrM~X}&%G_bz`22c~Btzvp z5LJ7!%#i|$OjWH#A_=dmWezU5yhAfQeYOzDTz@bzWQfMb`Q=+QV?WKGBc~x)0QtC% zHApqZY1KA>$4i-24unZnmCs=so)NdOwilSIm$ykzaCrtZB!7)QV}kq*)qY3Q>(GI} z9(9@EK_n4tz86-juU!5!biYdzrzCCcS5%7QX+AIj?F^M@$HV=wL=!Td#sBU zzI}fC=P~;M3n|u6QEx(kb>JPbPTLw!03;35G8|+_J-0r*XBfA+!8P}O924m@e)xFPg&y<@<-#7$V6!hm&&mp_oYHR{?Q4~65o9>}PBB)rsl z@%F&!MbhyHaUcdFO#QH*-$)t`-sYm`4ujP36UTMZLn&NtCvHzTez-9ZgGin^-1kyH z3SD{DuzvwMQm2{mCi0FwTuhq=lRfCkBM^dgC^(^^6BneT=kPm54jTb;3-(Q30pNC4 zdFdu%A8~uA1{;nP`abl;29c6;@(q;23$zUgR@zZ|F!f6Cx|SJ<2zr@*EY7|YS%z1B zpEP6XpSr1Np1QKxivliW(quc$ez)~>E9ma-Z1dgLHrr%9ZztUvv>rq2hs}@8*pD~5 zLqFgftzJKE@xx8rQk|WOkVmqq;_O9XDx)A@G~%;N?~4@SCdv^ys?J<%z=@~B5jGsJ zb59~4>bfk!AWaZi>C_E|Liv>o3wQNIq*a*w#T=accQkWzT48R{j>$zJQc;^TRVzHp z4?T1U8;&#Q(2+^jl+rrQtzd%Y94UE0l!%+KIdx^V(67$g^>Su07PGYVRTI66(48Xl;*m` ziqMg3MO4TJ2YL~WIb4f%g8Wgq@I!`yxV#Iv zC?Y#H<^3tbf1}gmD84RMNY4j|3hNtlWYbZth*w@z_^~TX%!yn@ffXokp;+K~QBMWM zZ@|6V&?gkP4WPIoakpJJvod2m@}Pby`F9_F4LRM+{O6%+LEWB<=S+EKJT9PA8}YmnBN=mtLq78{4VK$hTlZ ztb85DtW11`o9-p45F?KK{LB0O@r#s;+06gy{kr`@3HeR_S&tFF!fn1|X^uGIRFIM; zl#&mmdO9NDY<+!7N%!=uJFvH;az2tKz@8&U$r#m7_Uh!X+7aVqJSb7;ii6Tiygp|n zCgn7lQquU~=QKG)|1tUlyzSfIhgsL(yPfxBG5&)yk_BzOT8mGzsICzQZ&s_DcVLvP z40P{>NpqDlAr0`wybVw*iglp@mmDKjN)>5|<(#0;b5bZJ@ZOM70% zr?@s%w2E-DlXYDPeiG*!8}qxfuGR1TS4J#jcfe$2wG>OsN8`7? zqx0L?G4R#{vuEvCD$yE2saM`9BX0^TsPya|oAae$rdQpms*0y}Yu@Zw-I?>W?z|`? zcScl%{X*GU_>LlGMD>Lts@~bLzOyK_$4b4HylZcFJf{=KgTUXt=D0ySlz!alMb03U zu_v5XD4k*CInPk*Nbjqm7sb)K{SsSHw(4qD9k?>`gd2N}I6?XBrW<)5_am<#`LVz6 z-S?aEOBKXut59LnZFW2q?8lz;-M~*gncVtvW#x-6Z*RQ+=8wKrzg>TSWn%+nD!x-k z>5DHpxAK&-Mctb#>(thyq3NgLvG8o-iLM}tm9Cm9W3{V|m64i)$rlx*8mBs^2B+pl zrDcK{R`QciX)lrEI-foI7`yiSZ6^kMq}TSIJ8kTy@A!S^-eBPMh5y|7&^1Eaffk-_<6AE4BWW0>VSO`g_d;NJ+B|vo%hgyIU7Uiui&Zk z7?MuPOPvzV(Y{`mk<|4}$I>#h=f=%WX0>HF97J_3)6rMfK=C(&CYmR~xP7&G=gH#ufb9{f+I7fj?N=9r}S- zyU}XLH$>+uRq@jR14Jk{nk2$z*pFoxY!vUnlk0ZhW<;zn2XX2$Z*F(zAP%7F9}=B;7FH6Rn+jVh*>d* zw=K?zd2t3kXT*Xyi<&AQ@}+E!&)jCdU@SDbb&muYd$Q#=Jtq#G$nzY(H96l-)Cq@y zaCo1>!42q#@j8oUYrDyN!lLO-r*0EZw2UNG2jy59E2+{@Qw^z>>Vwx}oofuC;EbtT zbyJ$4%}gFVo8ec(i`{l4NzR!aP47kB$c)GfTJkI!@@h=tH56jMS9dLhquSnr&^Y4xXgOsFZ5LIIpBSp3-?` zR8Gs_hMC;h3T2O#0AIAv9z7&!G^K}=>$pzjwmfIgJ76tDH<7uOtbD&8960W76b3`k z;YQ%jN^}T<@R=vp9oz=otjp1%x^bw!pXj$YHtGhS!L0Jp^QJe5{ji^zL@hI;8~Xiv zCDWThBxk{c%*yX?R+--4%%J<5nS6h<^5p(zGlfQ^`~l1hHy zFz#)TM0^mmAbTB`0@5*B5or#j~!rD_Tl+f{@< zR!0V3XeBl7ksYHGB>Yy(lhD1$Ne^B2J(#nJ=1yun(ONN4Qrn~( zv{qc9Lv{5PdqXUFj3>H*qzzI0XmtcLovPS4Zqc4D4cr(_=-4jo5KOo-)`$sX_2=4G z2HgNw^@r+vuZ&A<=5a4f#+@e%)`f2As$(VZ%YudKH=|hk1NjY*qNJ@~$<*g3gnnq> z3H&H-hP}bvhoEDrTT1dF@9vm>$dxy~7^mj4ig(cYEGxTlo}}IagI|o8U)g(1EO%?~S=8(xvsU0Ma58O1c9 zRLZIW^)jnjYFWplRn_Fp--FH58&AfCR2AR&pF&gQx&{oyU5&LaaB8ZJHI?d#u_o$C z8|csmx49j+9|#o(U6@?^G}Q&*maz6T`IIS26AFxBbzvqjhLIYgyjPZg!W5Nb6yy2S(rCYXNVKsvtxxy@nT*EU6p$;q*dzOzc0>WebnRcc*e6d z}5B9=&gKhxy>gLxidiPtfAtd}O&r@iL#Ua6hVy{i=bIA8Fin%a8? zM(XlDFHE_7F-6N*&*ha%1yp~@RIi<5`on zN4bAg*e9psM$Yo2b$K;ko3nc`a3i=(50X;PeZJr3jyMdQn-8@z;ya}ju$woRYPLA_lLS079YV-TekA<1A7?sTvdn%$xa}h; zLs_3MjAy~ue2H4Knc2L*29A`Q8MH}^6t#Jgncfed$v>jeX9_mc16I+@chWI znScQ%O#XLMlcOt!(C@(LbKO(a!OX#+TX&EWyx)>{Fi&QDv<*#A`?$5X752TgPbi>~ z)B-n(*Lop9y6=gk_K=F7Op0efJSnU__WMn*Ugk3)3Hao$@rRUScljRW=qU2Bs9SuN zz9o z7<6l|B0HkQJnw+#B|r;vtjG?e#HFzsmr}qn_#_?b4Vjh!*{Hw8c>-@GHVquQ6V=JA*M)`D^Zh;3UJv zDgYL0IX@fzx0s`q19+@36$38rI|opubmzNga0&q|#hJg>85aFB@j@7T8v1`A5|ziQI0v9YHMG~I)5kxyrrYBD zbPiLTzevC?@5>C1xZ8!7djw`){v(dt%YQ=Ruj0JrM*qTN*4*%~g@>>Sg}VsjT#mMqS@Hv6@z$3sW?$iQJ;=%>mVq-=S=>fx{CVyCZjI{C|tYH#FqI0&1A;u%^aZ=h?2lgfh1sludpQnBq?SlYJ`Xj@KC_Q`hvU<_RIGv`GAtCmXhD2 z;vXZ)bnrVjy{xTR!?8+Z<@OQLkqXN6Xljndu!mrN2!HgOR%STZo#s(1=X3>6Mf$DHFj>gm?m+SeiRv? zhsx1D65K|L$&f3nBY)h^K}*8U!3mAtp@5W7+v;CH50iTumw%$P@`z3u8p!Ha#!4Q~ zA?*O0XEbb#WG2^-EF8l{vcr}h>hQ(J9<1eo^v%1sEFwaIu`z#j3eobMZNZa zAP)k}nUxPJX{VX#$6hbW@BWWbAzdVh08)S`$0fUzw4l1QoMc_wMXLaBc+d=^7l1V9mqn^C=`)$6iZ*Ain-&Vaw-xw(N)o5gPqXB?6 zgbrzB)kfp1p&Jw}rA9-9%|=6>$Mito0CQ2#!xu2YQR$pv>`i=5+xUW#HYFh?N5G47 zv`M*udU=tj?Jg_d$r*WfdS-+<7h zLlx;TMd7To)bW+CYL}!_Q+3sVv91EO0b@hmQk$xINjrhsQrobyp+dNAr?~xArfFA3 zr|*(fe=u@1(ng+9LP8GhcmP^HDVMo4*?6e9)p$z}|srwGK59<_Xf zTZ_A*BA7yeZ;IV&RXi#lRBM)gZ+V5E>ohJH>Z3C$kiMOXmzc%Z^M9bS+lw2yvqADyM`f8jJ6iXBx1l@P~4sO#oBp znNn<`W^;8`h_7HF#|MFIg!JN@YOD*(LPSu8uHkqax`X=@Or}i)+=uc%4UUOVEISPi zrv!f=$&md{rh(hxt+YR`YZZ0$-a+OdLx;QAe!Z-jpN+{(Q7?QKYoqsD(^X%LmK7|O6auD=41|Ur@~qQS?0fI zFar!awg|v|XEGh@|G`}^0Y8Pki@d4RoyNtzN{o)%(Y3T$fqT3F*N2kC!~uA$@68y( zgSkH^<`ImwImBd!=>&yZckV8Hd>l)-wTVfrE*@4_;kt_qCeJe6JUOt1ucVbX;$rT= zt{;#b7AS#GG$9NDyV$KFh&Za*9l~Ki4=!J@ql%s~!)Hvfay&-;O~$XTG4_r=qq}kx zTj7#@C~_HVvGRfW8q@~gxOIx=E-u_dflRIn%G`%fR|(rNL54e?&lW5nRI$9e4`UGG z7j?@)Lx39_x>3LdMMDMhaUIXo^z7(3o7&vC z+%LDv{YtBXve)wY1zzIiuk6+wuWt5v;c@i|`o%HmZqf8w@kD9`g6$~93#c>(1G zzKHUoDKDb@0$)OT$&_E<_G7EQe2P6;+jTdqc2n68H4nAO<_4iu!o1ds*FcZzPUcgs zj{4|CITx`GN3X7iSJ^6Ot8KRWIa|GdYxUu+)yM4K!<~*p^W#TPN_Uae3bL_1sA_A^ zKCzDNu|2k4v9KL`yY9#mS~E9E53yXyERcD$>K`mwMbm!{ngbafprUyY%4Ro>xsa+E z+-UB$x8B)|+c$4q=Qp>m2OB}Rb3O7-W zv*oD^0-Xju5#soOoTZGZZFvFj9i-w%^>>ie_mK&UFxPUp%^je~G5a0NXIirqthD@IpLeAtg^}PQ=x}4VIeyRSJ+-4}^gjcQT5gMLz|L7FJRBE<$WJ&3sAOs6Re<2XH> zE~Qu;?F+WCajh8K(|T~L*+kb^H6o$Aja2S7d%7PtWw-Or=C!RWN_2FTChON5*Be{x zuqUKohk_+S@M0RBG5{ftI+2c#m!l8YhttY4Uf6!L^WiPF(}M#Z-+%Pv!3Qw?VR)oilyu@D7fhvn!9JVy zxlRj1#3u4!?{F1PmQrmfr_yAej92a$xcomD1Q1Y3~Pv&!UPSvlW@ddyvj#AIx9jE14}v7@ ziy+9VLC{b6FsAof5PUHV(|@A&inoT=-eSo{hW zyNIf1ECvR1xN8{9gUL$S{G&vC5FXtn9v?k4{x|Ql5Cd#-tPuNz3EgN=yJ8!R15Hsv zz0KI}5M(BD92Kr6g`&M0SAU9^$T|k2!o}8pMQ&^J#+_He_Q$Svv|-t=ZS9e}dFfYZ z`NrbqubpF0m&V?SJ;vzU7O&vx-?qjMPBI7QPj)5eu*50xE(8Hmc%)8g^}1~uvhrZq z1|5wSI&|jsiFnn^k}M?&l185-jWObCB%)q=2AaGlts=iinQ_fC{}A%tMN%X)mhCxJ zdlArB0YH3v^x7GNH)ij~HWs;rA@VY1uOrJULBP{a5af_}w$QWH-axk-NJd?K&$A`f zJRb``M9cHBz)QdcA|_tJv&?<6Xjc0$ck}zC;G=iXfMab9>an&4D*s|AlvWJU5DOtu z-6$b>fikm!kWo6}^Fr(imSp0eA{qN=tBc$F4I-KVLW^ZhOk-^CqYvU6x~rM9e|XN! zbep0i(n0Wm<}&ndk6t>v<;Ju}fkaxG(p?%t{?br0lA7N0N)4x#mSIYi|EV>HMM(dRQhO*yM_B+ac zPuahb6&H@MS%}p?P#~Eya^>uo|V4^ zoa6G?rI|^pWygo2uOQWsmXMaA>-6-Y@{3S;YKP8WI!i6*guVb9F*_O4usa!HB7uf} zC)y`}g!BxM{+@n0TJQJ|7bCw+Ej<+QzrPe>EJny|(2y_x^a ofoXLU`DXrYcok9edt@{7w}@~1&Wf|-cy6`idrNOEU07QAFFhnvPyhe` diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-36.pyc deleted file mode 100644 index 1cbe43822b98ab350164c190b6e93a8ea4832772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4475 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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-36.pyc deleted file mode 100644 index 443638f74f7f0141cb0e3bd44df0ba3db396580b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmYjOJ#X7E5G5(emK}RZ|3d){37b@Lkf10UxU-jdsTV;OXGcDIx#JI}4G2L)RY>1QE0%HJwrFIICD4 z%mUk&drRcy!u*;7MX+OjriLqUIs`=}*%Ot3b3V3c?sym2fZPLjYL6|Qh5O}^B&uO*au zRqiC%-b!wu)TS(U-IX!wn)6-kh(?wK5MW_o2sWyl&Dta#8)~VwjeJIMa)4_YT)(!P zzYg_>z!9EbG*?h=b0hgS2fk=3AwlzO#Fz8*^1PZ~jV{DhdXb%Fi(+KX>+}=aa?Ph) zmFi@^DJyZ3E|w-0t1}n!o^9n?G{Aia#jBY79&)85oT{I8;H5mM?0VD32&B`e?66`s ypaTX&jG{i%$s~!Oj|V>~^c?epy9<7hcQC-1jla~5*i`bX`?1eOZBsT)0wIn*aOq(S8(GmNgeIXO?E(@^g60yX@oQ_%v4i6T3MaH1 z|AfE8F;`Ce3!HdPw~1%@+3)%LK7W><@9acBhQH^ZDItHzfAJ9aXE>U5 z?%9uS*=oz)qIvLvOoumkGnvvZ%4`YC3SJNL?tFvZF4DsAFw&1id@~bn6RuBIjcl<+H;uO z-k;tnY)zoE=sj>z_tvISH?r{6eldAvJT%@#?y{_KzK!o1lZ&#_#-1CaO&2O{MFCw< z8KG<%7^jp@`sJ1sAn6w|6I}ZA_j`=sHn$MBxrvur;_K@;o5ia|^5RG?PG-maBstCw zvt==}M`iL1W2NHD7+n+a diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-36.pyc deleted file mode 100644 index c01b5ae03ade55d88d263acd8e55977924324d66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2806 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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py deleted file mode 100644 index b77728f..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +++ /dev/null @@ -1,116 +0,0 @@ -import hashlib -import os - -from pip._vendor.lockfile import LockFile -from pip._vendor.lockfile.mkdirlockfile import MkdirLockFile - -from ..cache import BaseCache -from ..controller import CacheController - - -def _secure_open_write(filename, fmode): - # We only want to write to this file, so open it in write only mode - flags = os.O_WRONLY - - # os.O_CREAT | os.O_EXCL will fail if the file already exists, so we only - # will open *new* files. - # We specify this because we want to ensure that the mode we pass is the - # mode of the file. - flags |= os.O_CREAT | os.O_EXCL - - # Do not follow symlinks to prevent someone from making a symlink that - # we follow and insecurely open a cache file. - if hasattr(os, "O_NOFOLLOW"): - flags |= os.O_NOFOLLOW - - # On Windows we'll mark this file as binary - if hasattr(os, "O_BINARY"): - flags |= os.O_BINARY - - # Before we open our file, we want to delete any existing file that is - # there - try: - os.remove(filename) - except (IOError, OSError): - # The file must not exist already, so we can just skip ahead to opening - pass - - # Open our file, the use of os.O_CREAT | os.O_EXCL will ensure that if a - # race condition happens between the os.remove and this line, that an - # error will be raised. Because we utilize a lockfile this should only - # happen if someone is attempting to attack us. - fd = os.open(filename, flags, fmode) - try: - return os.fdopen(fd, "wb") - except: - # An error occurred wrapping our FD in a file object - os.close(fd) - raise - - -class FileCache(BaseCache): - def __init__(self, directory, forever=False, filemode=0o0600, - dirmode=0o0700, use_dir_lock=None, lock_class=None): - - if use_dir_lock is not None and lock_class is not None: - raise ValueError("Cannot use use_dir_lock and lock_class together") - - if use_dir_lock: - lock_class = MkdirLockFile - - if lock_class is None: - lock_class = LockFile - - self.directory = directory - self.forever = forever - self.filemode = filemode - self.dirmode = dirmode - self.lock_class = lock_class - - - @staticmethod - def encode(x): - return hashlib.sha224(x.encode()).hexdigest() - - def _fn(self, name): - # NOTE: This method should not change as some may depend on it. - # See: https://github.com/ionrock/cachecontrol/issues/63 - hashed = self.encode(name) - parts = list(hashed[:5]) + [hashed] - return os.path.join(self.directory, *parts) - - def get(self, key): - name = self._fn(key) - if not os.path.exists(name): - return None - - with open(name, 'rb') as fh: - return fh.read() - - def set(self, key, value): - name = self._fn(key) - - # Make sure the directory exists - try: - os.makedirs(os.path.dirname(name), self.dirmode) - except (IOError, OSError): - pass - - with self.lock_class(name) as lock: - # Write our actual file - with _secure_open_write(lock.path, self.filemode) as fh: - fh.write(value) - - def delete(self, key): - name = self._fn(key) - if not self.forever: - os.remove(name) - - -def url_to_file_path(url, filecache): - """Return the file cache path based on the URL. - - This does not ensure the file exists! - """ - key = CacheController.cache_url(url) - return filecache._fn(key) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py deleted file mode 100644 index 9f5d55f..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +++ /dev/null @@ -1,41 +0,0 @@ -from __future__ import division - -from datetime import datetime - - -def total_seconds(td): - """Python 2.6 compatability""" - if hasattr(td, 'total_seconds'): - return td.total_seconds() - - ms = td.microseconds - secs = (td.seconds + td.days * 24 * 3600) - return (ms + secs * 10**6) / 10**6 - - -class RedisCache(object): - - def __init__(self, conn): - self.conn = conn - - def get(self, key): - return self.conn.get(key) - - def set(self, key, value, expires=None): - if not expires: - self.conn.set(key, value) - else: - expires = expires - datetime.now() - self.conn.setex(key, total_seconds(expires), value) - - def delete(self, key): - self.conn.delete(key) - - def clear(self): - """Helper for clearing all the keys in a database. Use with - caution!""" - for key in self.conn.keys(): - self.conn.delete(key) - - def close(self): - self.conn.disconnect() diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/compat.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/compat.py deleted file mode 100644 index 018e6ac..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/compat.py +++ /dev/null @@ -1,20 +0,0 @@ -try: - from urllib.parse import urljoin -except ImportError: - from urlparse import urljoin - - -try: - import cPickle as pickle -except ImportError: - import pickle - - -from pip._vendor.requests.packages.urllib3.response import HTTPResponse -from pip._vendor.requests.packages.urllib3.util import is_fp_closed - -# Replicate some six behaviour -try: - text_type = (unicode,) -except NameError: - text_type = (str,) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/controller.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/controller.py deleted file mode 100644 index 5eb961f..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/controller.py +++ /dev/null @@ -1,353 +0,0 @@ -""" -The httplib2 algorithms ported for use with requests. -""" -import logging -import re -import calendar -import time -from email.utils import parsedate_tz - -from pip._vendor.requests.structures import CaseInsensitiveDict - -from .cache import DictCache -from .serialize import Serializer - - -logger = logging.getLogger(__name__) - -URI = re.compile(r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?") - - -def parse_uri(uri): - """Parses a URI using the regex given in Appendix B of RFC 3986. - - (scheme, authority, path, query, fragment) = parse_uri(uri) - """ - groups = URI.match(uri).groups() - return (groups[1], groups[3], groups[4], groups[6], groups[8]) - - -class CacheController(object): - """An interface to see if request should cached or not. - """ - def __init__(self, cache=None, cache_etags=True, serializer=None): - self.cache = cache or DictCache() - self.cache_etags = cache_etags - self.serializer = serializer or Serializer() - - @classmethod - def _urlnorm(cls, uri): - """Normalize the URL to create a safe key for the cache""" - (scheme, authority, path, query, fragment) = parse_uri(uri) - if not scheme or not authority: - raise Exception("Only absolute URIs are allowed. uri = %s" % uri) - - scheme = scheme.lower() - authority = authority.lower() - - if not path: - path = "/" - - # Could do syntax based normalization of the URI before - # computing the digest. See Section 6.2.2 of Std 66. - request_uri = query and "?".join([path, query]) or path - defrag_uri = scheme + "://" + authority + request_uri - - return defrag_uri - - @classmethod - def cache_url(cls, uri): - return cls._urlnorm(uri) - - def parse_cache_control(self, headers): - """ - Parse the cache control headers returning a dictionary with values - for the different directives. - """ - retval = {} - - cc_header = 'cache-control' - if 'Cache-Control' in headers: - cc_header = 'Cache-Control' - - if cc_header in headers: - parts = headers[cc_header].split(',') - parts_with_args = [ - tuple([x.strip().lower() for x in part.split("=", 1)]) - for part in parts if -1 != part.find("=") - ] - parts_wo_args = [ - (name.strip().lower(), 1) - for name in parts if -1 == name.find("=") - ] - retval = dict(parts_with_args + parts_wo_args) - return retval - - def cached_request(self, request): - """ - Return a cached response if it exists in the cache, otherwise - return False. - """ - cache_url = self.cache_url(request.url) - logger.debug('Looking up "%s" in the cache', cache_url) - cc = self.parse_cache_control(request.headers) - - # Bail out if the request insists on fresh data - if 'no-cache' in cc: - logger.debug('Request header has "no-cache", cache bypassed') - return False - - if 'max-age' in cc and cc['max-age'] == 0: - logger.debug('Request header has "max_age" as 0, cache bypassed') - return False - - # Request allows serving from the cache, let's see if we find something - cache_data = self.cache.get(cache_url) - if cache_data is None: - logger.debug('No cache entry available') - return False - - # Check whether it can be deserialized - resp = self.serializer.loads(request, cache_data) - if not resp: - logger.warning('Cache entry deserialization failed, entry ignored') - return False - - # If we have a cached 301, return it immediately. We don't - # need to test our response for other headers b/c it is - # intrinsically "cacheable" as it is Permanent. - # See: - # https://tools.ietf.org/html/rfc7231#section-6.4.2 - # - # Client can try to refresh the value by repeating the request - # with cache busting headers as usual (ie no-cache). - if resp.status == 301: - msg = ('Returning cached "301 Moved Permanently" response ' - '(ignoring date and etag information)') - logger.debug(msg) - return resp - - headers = CaseInsensitiveDict(resp.headers) - if not headers or 'date' not in headers: - if 'etag' not in headers: - # Without date or etag, the cached response can never be used - # and should be deleted. - logger.debug('Purging cached response: no date or etag') - self.cache.delete(cache_url) - logger.debug('Ignoring cached response: no date') - return False - - now = time.time() - date = calendar.timegm( - parsedate_tz(headers['date']) - ) - current_age = max(0, now - date) - logger.debug('Current age based on date: %i', current_age) - - # TODO: There is an assumption that the result will be a - # urllib3 response object. This may not be best since we - # could probably avoid instantiating or constructing the - # response until we know we need it. - resp_cc = self.parse_cache_control(headers) - - # determine freshness - freshness_lifetime = 0 - - # Check the max-age pragma in the cache control header - if 'max-age' in resp_cc and resp_cc['max-age'].isdigit(): - freshness_lifetime = int(resp_cc['max-age']) - logger.debug('Freshness lifetime from max-age: %i', - freshness_lifetime) - - # If there isn't a max-age, check for an expires header - elif 'expires' in headers: - expires = parsedate_tz(headers['expires']) - if expires is not None: - expire_time = calendar.timegm(expires) - date - freshness_lifetime = max(0, expire_time) - logger.debug("Freshness lifetime from expires: %i", - freshness_lifetime) - - # Determine if we are setting freshness limit in the - # request. Note, this overrides what was in the response. - if 'max-age' in cc: - try: - freshness_lifetime = int(cc['max-age']) - logger.debug('Freshness lifetime from request max-age: %i', - freshness_lifetime) - except ValueError: - freshness_lifetime = 0 - - if 'min-fresh' in cc: - try: - min_fresh = int(cc['min-fresh']) - except ValueError: - min_fresh = 0 - # adjust our current age by our min fresh - current_age += min_fresh - logger.debug('Adjusted current age from min-fresh: %i', - current_age) - - # Return entry if it is fresh enough - if freshness_lifetime > current_age: - logger.debug('The response is "fresh", returning cached response') - logger.debug('%i > %i', freshness_lifetime, current_age) - return resp - - # we're not fresh. If we don't have an Etag, clear it out - if 'etag' not in headers: - logger.debug( - 'The cached response is "stale" with no etag, purging' - ) - self.cache.delete(cache_url) - - # return the original handler - return False - - def conditional_headers(self, request): - cache_url = self.cache_url(request.url) - resp = self.serializer.loads(request, self.cache.get(cache_url)) - new_headers = {} - - if resp: - headers = CaseInsensitiveDict(resp.headers) - - if 'etag' in headers: - new_headers['If-None-Match'] = headers['ETag'] - - if 'last-modified' in headers: - new_headers['If-Modified-Since'] = headers['Last-Modified'] - - return new_headers - - def cache_response(self, request, response, body=None): - """ - Algorithm for caching requests. - - This assumes a requests Response object. - """ - # From httplib2: Don't cache 206's since we aren't going to - # handle byte range requests - cacheable_status_codes = [200, 203, 300, 301] - if response.status not in cacheable_status_codes: - logger.debug( - 'Status code %s not in %s', - response.status, - cacheable_status_codes - ) - return - - response_headers = CaseInsensitiveDict(response.headers) - - # If we've been given a body, our response has a Content-Length, that - # Content-Length is valid then we can check to see if the body we've - # been given matches the expected size, and if it doesn't we'll just - # skip trying to cache it. - if (body is not None and - "content-length" in response_headers and - response_headers["content-length"].isdigit() and - int(response_headers["content-length"]) != len(body)): - return - - cc_req = self.parse_cache_control(request.headers) - cc = self.parse_cache_control(response_headers) - - cache_url = self.cache_url(request.url) - logger.debug('Updating cache with response from "%s"', cache_url) - - # Delete it from the cache if we happen to have it stored there - no_store = False - if cc.get('no-store'): - no_store = True - logger.debug('Response header has "no-store"') - if cc_req.get('no-store'): - no_store = True - logger.debug('Request header has "no-store"') - if no_store and self.cache.get(cache_url): - logger.debug('Purging existing cache entry to honor "no-store"') - self.cache.delete(cache_url) - - # If we've been given an etag, then keep the response - if self.cache_etags and 'etag' in response_headers: - logger.debug('Caching due to etag') - self.cache.set( - cache_url, - self.serializer.dumps(request, response, body=body), - ) - - # Add to the cache any 301s. We do this before looking that - # the Date headers. - elif response.status == 301: - logger.debug('Caching permanant redirect') - self.cache.set( - cache_url, - self.serializer.dumps(request, response) - ) - - # Add to the cache if the response headers demand it. If there - # is no date header then we can't do anything about expiring - # the cache. - elif 'date' in response_headers: - # cache when there is a max-age > 0 - if cc and cc.get('max-age'): - if cc['max-age'].isdigit() and int(cc['max-age']) > 0: - logger.debug('Caching b/c date exists and max-age > 0') - self.cache.set( - cache_url, - self.serializer.dumps(request, response, body=body), - ) - - # If the request can expire, it means we should cache it - # in the meantime. - elif 'expires' in response_headers: - if response_headers['expires']: - logger.debug('Caching b/c of expires header') - self.cache.set( - cache_url, - self.serializer.dumps(request, response, body=body), - ) - - def update_cached_response(self, request, response): - """On a 304 we will get a new set of headers that we want to - update our cached value with, assuming we have one. - - This should only ever be called when we've sent an ETag and - gotten a 304 as the response. - """ - cache_url = self.cache_url(request.url) - - cached_response = self.serializer.loads( - request, - self.cache.get(cache_url) - ) - - if not cached_response: - # we didn't have a cached response - return response - - # Lets update our headers with the headers from the new request: - # http://tools.ietf.org/html/draft-ietf-httpbis-p4-conditional-26#section-4.1 - # - # The server isn't supposed to send headers that would make - # the cached body invalid. But... just in case, we'll be sure - # to strip out ones we know that might be problmatic due to - # typical assumptions. - excluded_headers = [ - "content-length", - ] - - cached_response.headers.update( - dict((k, v) for k, v in response.headers.items() - if k.lower() not in excluded_headers) - ) - - # we want a 200 b/c we have content via the cache - cached_response.status = 200 - - # update our cache - self.cache.set( - cache_url, - self.serializer.dumps(request, cached_response), - ) - - return cached_response diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/filewrapper.py deleted file mode 100644 index f1e1ce0..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/filewrapper.py +++ /dev/null @@ -1,78 +0,0 @@ -from io import BytesIO - - -class CallbackFileWrapper(object): - """ - Small wrapper around a fp object which will tee everything read into a - buffer, and when that file is closed it will execute a callback with the - contents of that buffer. - - All attributes are proxied to the underlying file object. - - This class uses members with a double underscore (__) leading prefix so as - not to accidentally shadow an attribute. - """ - - def __init__(self, fp, callback): - self.__buf = BytesIO() - self.__fp = fp - self.__callback = callback - - def __getattr__(self, name): - # The vaguaries of garbage collection means that self.__fp is - # not always set. By using __getattribute__ and the private - # name[0] allows looking up the attribute value and raising an - # AttributeError when it doesn't exist. This stop thigns from - # infinitely recursing calls to getattr in the case where - # self.__fp hasn't been set. - # - # [0] https://docs.python.org/2/reference/expressions.html#atom-identifiers - fp = self.__getattribute__('_CallbackFileWrapper__fp') - return getattr(fp, name) - - def __is_fp_closed(self): - try: - return self.__fp.fp is None - except AttributeError: - pass - - try: - return self.__fp.closed - except AttributeError: - pass - - # We just don't cache it then. - # TODO: Add some logging here... - return False - - def _close(self): - if self.__callback: - self.__callback(self.__buf.getvalue()) - - # We assign this to None here, because otherwise we can get into - # really tricky problems where the CPython interpreter dead locks - # because the callback is holding a reference to something which - # has a __del__ method. Setting this to None breaks the cycle - # and allows the garbage collector to do it's thing normally. - self.__callback = None - - def read(self, amt=None): - data = self.__fp.read(amt) - self.__buf.write(data) - if self.__is_fp_closed(): - self._close() - - return data - - def _safe_read(self, amt): - data = self.__fp._safe_read(amt) - if amt == 2 and data == b'\r\n': - # urllib executes this read to toss the CRLF at the end - # of the chunk. - return data - - self.__buf.write(data) - if self.__is_fp_closed(): - self._close() - - return data diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/heuristics.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/heuristics.py deleted file mode 100644 index 94715a4..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/heuristics.py +++ /dev/null @@ -1,138 +0,0 @@ -import calendar -import time - -from email.utils import formatdate, parsedate, parsedate_tz - -from datetime import datetime, timedelta - -TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT" - - -def expire_after(delta, date=None): - date = date or datetime.now() - return date + delta - - -def datetime_to_header(dt): - return formatdate(calendar.timegm(dt.timetuple())) - - -class BaseHeuristic(object): - - def warning(self, response): - """ - Return a valid 1xx warning header value describing the cache - adjustments. - - The response is provided too allow warnings like 113 - http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need - to explicitly say response is over 24 hours old. - """ - return '110 - "Response is Stale"' - - def update_headers(self, response): - """Update the response headers with any new headers. - - NOTE: This SHOULD always include some Warning header to - signify that the response was cached by the client, not - by way of the provided headers. - """ - return {} - - def apply(self, response): - updated_headers = self.update_headers(response) - - if updated_headers: - response.headers.update(updated_headers) - warning_header_value = self.warning(response) - if warning_header_value is not None: - response.headers.update({'Warning': warning_header_value}) - - return response - - -class OneDayCache(BaseHeuristic): - """ - Cache the response by providing an expires 1 day in the - future. - """ - def update_headers(self, response): - headers = {} - - if 'expires' not in response.headers: - date = parsedate(response.headers['date']) - expires = expire_after(timedelta(days=1), - date=datetime(*date[:6])) - headers['expires'] = datetime_to_header(expires) - headers['cache-control'] = 'public' - return headers - - -class ExpiresAfter(BaseHeuristic): - """ - Cache **all** requests for a defined time period. - """ - - def __init__(self, **kw): - self.delta = timedelta(**kw) - - def update_headers(self, response): - expires = expire_after(self.delta) - return { - 'expires': datetime_to_header(expires), - 'cache-control': 'public', - } - - def warning(self, response): - tmpl = '110 - Automatically cached for %s. Response might be stale' - return tmpl % self.delta - - -class LastModified(BaseHeuristic): - """ - If there is no Expires header already, fall back on Last-Modified - using the heuristic from - http://tools.ietf.org/html/rfc7234#section-4.2.2 - to calculate a reasonable value. - - Firefox also does something like this per - https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ - http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397 - Unlike mozilla we limit this to 24-hr. - """ - cacheable_by_default_statuses = set([ - 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501 - ]) - - def update_headers(self, resp): - headers = resp.headers - - if 'expires' in headers: - return {} - - if 'cache-control' in headers and headers['cache-control'] != 'public': - return {} - - if resp.status not in self.cacheable_by_default_statuses: - return {} - - if 'date' not in headers or 'last-modified' not in headers: - return {} - - date = calendar.timegm(parsedate_tz(headers['date'])) - last_modified = parsedate(headers['last-modified']) - if date is None or last_modified is None: - return {} - - now = time.time() - current_age = max(0, now - date) - delta = date - calendar.timegm(last_modified) - freshness_lifetime = max(0, min(delta / 10, 24 * 3600)) - if freshness_lifetime <= current_age: - return {} - - expires = date + freshness_lifetime - return {'expires': time.strftime(TIME_FMT, time.gmtime(expires))} - - def warning(self, resp): - return None diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/serialize.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/serialize.py deleted file mode 100644 index 8f9c589..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/serialize.py +++ /dev/null @@ -1,196 +0,0 @@ -import base64 -import io -import json -import zlib - -from pip._vendor.requests.structures import CaseInsensitiveDict - -from .compat import HTTPResponse, pickle, text_type - - -def _b64_encode_bytes(b): - return base64.b64encode(b).decode("ascii") - - -def _b64_encode_str(s): - return _b64_encode_bytes(s.encode("utf8")) - - -def _b64_encode(s): - if isinstance(s, text_type): - return _b64_encode_str(s) - return _b64_encode_bytes(s) - - -def _b64_decode_bytes(b): - return base64.b64decode(b.encode("ascii")) - - -def _b64_decode_str(s): - return _b64_decode_bytes(s).decode("utf8") - - -class Serializer(object): - - def dumps(self, request, response, body=None): - response_headers = CaseInsensitiveDict(response.headers) - - if body is None: - body = response.read(decode_content=False) - - # NOTE: 99% sure this is dead code. I'm only leaving it - # here b/c I don't have a test yet to prove - # it. Basically, before using - # `cachecontrol.filewrapper.CallbackFileWrapper`, - # this made an effort to reset the file handle. The - # `CallbackFileWrapper` short circuits this code by - # setting the body as the content is consumed, the - # result being a `body` argument is *always* passed - # into cache_response, and in turn, - # `Serializer.dump`. - response._fp = io.BytesIO(body) - - data = { - "response": { - "body": _b64_encode_bytes(body), - "headers": dict( - (_b64_encode(k), _b64_encode(v)) - for k, v in response.headers.items() - ), - "status": response.status, - "version": response.version, - "reason": _b64_encode_str(response.reason), - "strict": response.strict, - "decode_content": response.decode_content, - }, - } - - # Construct our vary headers - data["vary"] = {} - if "vary" in response_headers: - varied_headers = response_headers['vary'].split(',') - for header in varied_headers: - header = header.strip() - data["vary"][header] = request.headers.get(header, None) - - # Encode our Vary headers to ensure they can be serialized as JSON - data["vary"] = dict( - (_b64_encode(k), _b64_encode(v) if v is not None else v) - for k, v in data["vary"].items() - ) - - return b",".join([ - b"cc=2", - zlib.compress( - json.dumps( - data, separators=(",", ":"), sort_keys=True, - ).encode("utf8"), - ), - ]) - - def loads(self, request, data): - # Short circuit if we've been given an empty set of data - if not data: - return - - # Determine what version of the serializer the data was serialized - # with - try: - ver, data = data.split(b",", 1) - except ValueError: - ver = b"cc=0" - - # Make sure that our "ver" is actually a version and isn't a false - # positive from a , being in the data stream. - if ver[:3] != b"cc=": - data = ver + data - ver = b"cc=0" - - # Get the version number out of the cc=N - ver = ver.split(b"=", 1)[-1].decode("ascii") - - # Dispatch to the actual load method for the given version - try: - return getattr(self, "_loads_v{0}".format(ver))(request, data) - except AttributeError: - # This is a version we don't have a loads function for, so we'll - # just treat it as a miss and return None - return - - def prepare_response(self, request, cached): - """Verify our vary headers match and construct a real urllib3 - HTTPResponse object. - """ - # Special case the '*' Vary value as it means we cannot actually - # determine if the cached response is suitable for this request. - if "*" in cached.get("vary", {}): - return - - # Ensure that the Vary headers for the cached response match our - # request - for header, value in cached.get("vary", {}).items(): - if request.headers.get(header, None) != value: - return - - body_raw = cached["response"].pop("body") - - headers = CaseInsensitiveDict(data=cached['response']['headers']) - if headers.get('transfer-encoding', '') == 'chunked': - headers.pop('transfer-encoding') - - cached['response']['headers'] = headers - - try: - body = io.BytesIO(body_raw) - except TypeError: - # This can happen if cachecontrol serialized to v1 format (pickle) - # using Python 2. A Python 2 str(byte string) will be unpickled as - # a Python 3 str (unicode string), which will cause the above to - # fail with: - # - # TypeError: 'str' does not support the buffer interface - body = io.BytesIO(body_raw.encode('utf8')) - - return HTTPResponse( - body=body, - preload_content=False, - **cached["response"] - ) - - def _loads_v0(self, request, data): - # The original legacy cache data. This doesn't contain enough - # information to construct everything we need, so we'll treat this as - # a miss. - return - - def _loads_v1(self, request, data): - try: - cached = pickle.loads(data) - except ValueError: - return - - return self.prepare_response(request, cached) - - def _loads_v2(self, request, data): - try: - cached = json.loads(zlib.decompress(data).decode("utf8")) - except ValueError: - return - - # We need to decode the items that we've base64 encoded - cached["response"]["body"] = _b64_decode_bytes( - cached["response"]["body"] - ) - cached["response"]["headers"] = dict( - (_b64_decode_str(k), _b64_decode_str(v)) - for k, v in cached["response"]["headers"].items() - ) - cached["response"]["reason"] = _b64_decode_str( - cached["response"]["reason"], - ) - cached["vary"] = dict( - (_b64_decode_str(k), _b64_decode_str(v) if v is not None else v) - for k, v in cached["vary"].items() - ) - - return self.prepare_response(request, cached) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/wrapper.py b/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/wrapper.py deleted file mode 100644 index ea421aa..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/wrapper.py +++ /dev/null @@ -1,21 +0,0 @@ -from .adapter import CacheControlAdapter -from .cache import DictCache - - -def CacheControl(sess, - cache=None, - cache_etags=True, - serializer=None, - heuristic=None): - - cache = cache or DictCache() - adapter = CacheControlAdapter( - cache, - cache_etags=cache_etags, - serializer=serializer, - heuristic=heuristic, - ) - sess.mount('http://', adapter) - sess.mount('https://', adapter) - - return sess diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/colorama/__init__.py deleted file mode 100644 index 670e6b3..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# 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.3.7' - diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index b6f8ba183d1555d857afd88b0a5089c733d3af26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmX|-J5R$f5XbXwnlxhVSIE%1kF*sMLcGMt(n<&~R$8aU!j2;+EtHLq!`ET-%EZRZ zgs&A?y5F7ucRu?(PLk-Y_3`j+S=Ohq|K*tI!dQJ{KrL!>OW4>J4t9i#UEyKR2HoMl z2yh@;xFtdyiZ*T^beBgW#<7V#+@b#5N`o)kv`Rhgv63}9pvBRvqfb_nOO=b9G{s8; zWw%ll+PlhEPuib1dtT_^daG)wQd`HDWz81yo|WU#t3T+E`?I?=(Gj#{IcIgDU;^a= zJb-VYz1$pA0qk3V5YUE944FngLqioE6hd}|s+lYadAHOFlmdP#R4KO0n*!}}h1QZ& zQ-;VCZI;<=#FwYj2|djwWJuPlX)_Ypz^qM)7N}xXZ@Fch_OkV+$>`${q=T8eN-7ol e`vpV@%tA=N+UxL4NV?_4Im}eU^SgG}?l`}>uXzLj diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-36.pyc deleted file mode 100644 index fdc53a985d860e9e45421a339c45a3de71ebf0e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3344 zcmcguTXWM!6xPi*#daJgB!%AG(hF{j4K&aJIt;dBl7Qo+b}}iVR8_o+BXI1nQUYYc zOgrI+^tFGdk2`(qll}rvJ>NPPJET+cQfc;+&K~KUJ(q8#Z&NArx7eQ#|4Jyz-^##Y z(EVK+{_g}#u@t6SD$^{D>6Xq67J02$28*&7T_fy0mSE;<)rzw7Y=kB0E;g&M6idHW zSlW&6>sEr~QI;V&BW081F_tAc>n2D)Lh?A9AbCQ{Ns`a8Ns=d}oN`C@6)Wu~2}j)& zVa7EH$JkU;$zRz0)m+~2{M=@bZFk&U+wHpC30yx{syF9ztqq4et-$5ER*%tS(93Oc zuN!#XHqCT;TuzaG)9X4NzhE|9_f~Er2)1q&i*C2@+D)tD#EVq`YmV6 zwPDoU)!u(Z0{FIB?ZzRA~4afJ!M~=qI6Cvv~aC1)Xlsm^h$GH=zhTS zsxV;h4~0kRg*Tldt#pS%DegGDxZdk9m-|KgMzOs%{oS?B+RYo++0E(e_EmembtAa8 zIemqWcDJ}(-14?AuWfrBc6oZe9Za*0tC*6*-f_FE$BQy{XVWP0&K z2Da3Ul6dG3zC-vJa{AxNyr0)Np5ka=B$GPgEtknw$91^vx47$ev-IGhSJdc?4j&9V zMep7(*YG@U!74NUwWnPsZUg%#Ee&blzV&Za9OJ5Fc&t#rq2 z+v|FPZC}6w(MgJtR!us0vq#Ys4j-yhkn{%Z*|sokyU%I5PuljgZKu=M@DIq$K%$WV zj)vmn1m|hUqQ+Gz52YFTx{C+y5FDjB#b|G%ol9qFxxcBjzm3WrPNf|#!{RIYyzWc2r z^ISMkpV9ryySg{ZrOJb^2Ye644P6U$#epkEg@%uglsi0;s$XN;?fdoCA2R zIybZq{h;J8g!=Mi0raKC=4F_cJ*DoZ2l7v;`~E;j(-IB81Nb3 z3&177SAZfw^5_^OqjIFc3%*GZS52*da?H1A93ANYyEObIf+J>uQyQ^JCmtE}j}Rg5 zM6EcBSqT=mOqQ@lm}w>1h?QbVE6q~YC`(%zHcDUjjFn|$);P-&*TzL0@!#ulH$)^M zA_;QIUoHuw@~~7Fk=42R<*JA@s?F-MNY&nrmbWP%^CA>oMU8Uh8NpaOUdFsP6 z9MAv%r7b(Hry&|L1oK05We6UI-vGdbumC`(h6pEQ02iJb!xXvBCU1 ztB4`d{_jCEcuD_R-~>+*gp&Xol!n;J4v&@_Xi}li%rA&&eX+4ns)>Z`U%OPRof;AH z4HC(3`C&70%wk7^%fm}n#B7`OTDIN)D@%}$n}9d~e|bCuz`u})_ST-btw4UU<>n&W zkRu_|x-h_fVji`Lh{z~Kv?4zVr>#@OzwiG$+=-9{KSy9_vd{H6ou+OYnUPE?Gf8JO Hs^a_yY*U9v diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-36.pyc deleted file mode 100644 index 769f728821ea434745413be0fe91ccb7a17de72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7076 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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-36.pyc deleted file mode 100644 index 51111179244b079f7690c5245ff458aaaa67a158..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3637 zcmai0&2tmU6`!6jjbz!#V2o|NAYft9F4()^h1!HrYi#pTrL`$bTP$;#8mn9Oh>^zW zY1s=UA5tdQB-i{2`Db#-ajrRW-@W8Qey>N?8iSLO`gQkvZ@ORq`hCpZ@$u513jccf z>y%;q+c@@2VEjE=`cGyU{GxC0d7r&r;3l_X(>KxEvDvkJiy6WaX2(8cz5}iUuIszZ zcwzJwY(o@;*EV03BxeTwxCJej7v36vk$bu?y)^#DdhMSKyj{fGWBypT?3cUa{&;u7 zpTPQV=Zs%@V(=0ldu#A9Q9iW%N#S(PcFy@zke=UWVk(%%=mPo~Et&P_^n5~09W^trs~&uh8c`3%zep>%#Iz2slk(h6jkhqB8& zsCm`DrZut0N4nRBy4QxfpZnLLa|0*2K9pRC#1K=$IAj9n6YP*hrvC*m^Kqb85=NWx z34Z1+^JjU5PijOz5<=-uR8+;SATldtR?$XzIwtI`s#ocK4_EtZN z`R%3lwp!vl-w;c;U{CaTA{SdpoXD^nF2caOcNTVEXWoN2>~8V!AvtY|X2>GQ|2142 zTVt|7Z;Y&$-q8YQFwo1@?9ADEEk!#kHk9nQR9}kBZ3V5JP-cba8_(98Yn!9(@RmWV zeUFwt1QCYMxPhQyzQs*pw-H2|+Hh4DGY5SEy-VC}$46jr57$-XMIc?~w1-)}^3L{{PZD}9+J@_CX* zDoT3U*#5FoGTQ1Zk!D^hUqk?PKRd_we+Yk$y8Uj>ptoCe;q*{X&a#4*J_X@yV04U5 zPECw0J+?YDw$X4bO$(ZOnifGzTCdbG+hfz@Jm&hFt2eLnTmSQ4tBpyzij2L?*iW*8 zp`0XgmY7yE+0E>_Xe-}+lqi*SeP=V;-cj-##PCcz6>V>n5!4siYl3tp`qS2B<^d9xwZ6Tla+KDV-gUsGalDKANZvK8|x6-XBE2RBaOQh+s zF- zvu2AdqKB3k;kkzitYd!xo&(lloV{Y{JVwY>ub8Y-h9@~B<_z^H{4++5wB*WCDEl4f zz#dpOr31U;-ZxAmV0vz1UeI$>AqC*h990}R14|=dtxGcL9VM4qNm3w6e1sU1d|VQs z@+uJmP)-xMK!ol!n>~ivhxx7M=Ae1IM+wgjd8ePMY%=c!4@M$0m7j!l<~LYBT%C$R zN=5=#bBfvaG{UgNDy(7x=Oyr41T8&OQ>bYtc!a^w32Zn4U_3-sr%*(;gzLhMG2#eG zK;#S%oNyFNxdR7o?Hr)*6m+)Kkk!20yD4pDu0YO5dDVHvS*661%?FR8I35Phfh3OQP~E@W;jdfRFza}bqMX=JjoUcVdc%Sb8F`*fh3zSW;$ zpH5cfg=JPkqB7Z8CjS8br*Zn-2RNacAU9{=m>8LX-TJ*zb8VuC@T_E7iRf@m?vU=?)0_)3iZ5*!3_bk23jtIJIbOI zWt5+^J5mxRcRb4bESo$QP|Zli;spw)qiA%}jx)anht~W%7E5*NV{#Sa=-2n}-$%cI z)L66jr4C|UPS!Rz@y(<^DJ4aT@8VNqwO-F$lmi~exeHH>?rTlTL}p{py1R)~dZII# zt_~VaNnf#&qCk%8^@6;_>Qq7%G4oyt*%R^IJAN7YyrKA0UEch0Drlo=etBLfx3zJ; z`*eAIwZ4`WBmUC*(QyH9F#ACf)?{mKal zmn9_#->pAiX*4%;*P5j9@lEKPY+^XWTB8{>Ekv*770LzAE}ivCUg^IpbVK_9 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-36.pyc deleted file mode 100644 index c2a77518881b16e8c0f747ae4711421786140b32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4569 zcmc&&%W@mX6`h_J1_O`;DOzO7lFe9t!HGpnq9i+UY(7NNiYd?`sn|rNY6?UTC_qDi z=^02CYfzOGwMxoajT(6tls9W5u+uW)bxLtR6 zpPqL^c6Xx}^uz`BYJ!fs(1{pCNQMiGh)tvbQmdAv<9Xf2iSK#R^}LfF z?+4T_d*1K*jUb(|)_2x6zLw_t&XY}PZSQSv)}*;{xK@+K-sVGDc)Yf~Svy#h_TlEv z&hEF;#FE3mYvL;2p~#QDIK{v;j(vs`S@t%!JXjfv-|h>XDj!- z+g_`AKe}_W@(G^f?()I%Y5Vl!qkcQ!AFs5IqZR)2HVvubJ@>o3CzhKebK|7340T4n zIJtHDQjo|bXIKGom^t!Ovy;^h%l{X(L&cU-@qY9&@P$&RgVh(m2dPzUQ9>=sM5aKb zUEAGzytX6l^}R>iUmeKVr1sXK%I&?~C$)z|{Uogg+Di<~qJ+eK!nhh6VV9&^rA2=R z8KQ*iuQVXV;3jI|klUy&zQi3~e8qs9pYRedqgCMV@F_lxmcwuI8D2rF$lv9&d=4#_ zU*YrES>o^UH~3YIl==I7fiI#p#XsQJ_?u`=^AGuTegmx;{uX~5>npqfB~@hsI6QzI znuI`ls3st8poCw5L|TWT=;y3s#F}TuTE{{$&*4(2ZHyIAJE)7OUDPGcK+9aiEA*OD ze|1XGsq)&kA8quyVK4Cao5J_I>-|>C7mvEFp0xK59_~Ilkfj%EQ6$<&{m2i2dG5Cw z{UDOX(2u+ZWq229!dDaW=0lP)kQK*3nk# zxggY6P4O-&@jj6ciF`z(O#GDExo--^TJbnj1nmh)uNpg>%{aWXJ+J#Pek ze~fi;6DvMIQ68f)mrY+{JhyLcGUsn$W2Vd$eWXgr@&mA#qK!he0!h_SZxioemn_lQ z%>;KDhs9nO&_Hk#V_eFj@D(pXK#@J9@S(xoO31)RhNw`tx? z)Nd*Wu@uDB#xWVi3KoBY5>A6?0JY6*-DGq696Kv#P@+Tr4-yhW5?2^Xr~o!1A$hmB zM@vaDig(9~i*c5?aQ<05xMHX6Jh99jsQh z1o^*;#bOC96?8ZE_T<8T9+(gO@1r~dr+^alLM4N=pEkN2S#>lj2@;ubpTIY0r%HB)d?;f>;#e#M>aU!e4Ck zMc5PH^ul)3?sX;mPO?M90~JhvPHUXgbZ$%vS*GZjO&(xrYMQb!O|fb|6Xo)<$rd76 zQVXd}NOCFbT&HXb>p-$`>zG5sh);>n#i3P3Wy;J#89IR$$u%y`6&3cBGIF7Qi*=ce z46={1(VLlI6L#bgfZ{*hN;l|;br2;JFeWNWCb}CKF>VF}E4F|=9qG>_sN%J?TbN*UySi84|HLm6gl zc1);&s6DSiIa$9zee?<)Ye5^>fD3!3i|=S;P>8MAUepE-MsNY+!nw(aGZ#?PI;C?h8%y{819N4pwelcgCl@yLNg_zVAK4O8 zCb^j+=}k^W4+YZ1>ummFzkTK>W>N;D=qs&_-QB&1^4eBA2-17sZa+HhM;lKYqS3@B zz=XLx_$0w<6$e#|X*D<(-OMyI#fV9Jv$nN4RBFbeSQA+{hSJe8N2<4#EjRob5 zp+UuC>V8Ay*F;8>jC2!~2JNo@CrpQQCCsg&EK&ij;9^PCfkn>dGG88U&65u$4Js<2 z(M5=CLCI&BFm)xPoEZkq`(2wm$0-F*bzEmTrYV(1!m>8>I6i0l*j4UwUSRg1nb z1gVvJA>HjA-6=bUW4WeV!q0Xc$8lZPac{U+)k=I&%j8NS?cPzxZ$|2)J-M0EQIp;w VozIhhFuouIsPBQYSt(Vl{{RuNr^5gM diff --git a/env/lib/python3.6/site-packages/pip/_vendor/colorama/ansi.py b/env/lib/python3.6/site-packages/pip/_vendor/colorama/ansi.py deleted file mode 100644 index 7877658..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/colorama/ansi.py +++ /dev/null @@ -1,102 +0,0 @@ -# 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 = '\007' - - -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/env/lib/python3.6/site-packages/pip/_vendor/colorama/ansitowin32.py b/env/lib/python3.6/site-packages/pip/_vendor/colorama/ansitowin32.py deleted file mode 100644 index b7ff6f2..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/colorama/ansitowin32.py +++ /dev/null @@ -1,236 +0,0 @@ -# Copyright Jonathan Hartley 2013. BSD 3-Clause license, see LICENSE file. -import re -import sys -import os - -from .ansi import AnsiFore, AnsiBack, AnsiStyle, Style -from .winterm import WinTerm, WinColor, WinStyle -from .win32 import windll, winapi_test - - -winterm = None -if windll is not None: - winterm = WinTerm() - - -def is_stream_closed(stream): - return not hasattr(stream, 'closed') or stream.closed - - -def is_a_tty(stream): - return hasattr(stream, 'isatty') and stream.isatty() - - -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 write(self, text): - self.__convertor.write(text) - - -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\]((?:.|;)*?)(\x07)\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 is_stream_closed(wrapped) and not is_a_tty(wrapped)) - self.strip = strip - - # should we should convert ANSI sequences into win32 calls? - if convert is None: - convert = conversion_supported and not is_stream_closed(wrapped) and is_a_tty(wrapped) - 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 is_stream_closed(self.wrapped): - 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 in '\x07': # \x07 = BEL - 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/env/lib/python3.6/site-packages/pip/_vendor/colorama/initialise.py b/env/lib/python3.6/site-packages/pip/_vendor/colorama/initialise.py deleted file mode 100644 index 834962a..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/colorama/initialise.py +++ /dev/null @@ -1,82 +0,0 @@ -# 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/env/lib/python3.6/site-packages/pip/_vendor/colorama/win32.py b/env/lib/python3.6/site-packages/pip/_vendor/colorama/win32.py deleted file mode 100644 index 3d1d2f2..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/colorama/win32.py +++ /dev/null @@ -1,154 +0,0 @@ -# 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.SetConsoleTitleA - _SetConsoleTitleW.argtypes = [ - wintypes.LPCSTR - ] - _SetConsoleTitleW.restype = wintypes.BOOL - - handles = { - STDOUT: _GetStdHandle(STDOUT), - STDERR: _GetStdHandle(STDERR), - } - - def winapi_test(): - handle = handles[STDOUT] - csbi = CONSOLE_SCREEN_BUFFER_INFO() - success = _GetConsoleScreenBufferInfo( - handle, byref(csbi)) - return bool(success) - - def GetConsoleScreenBufferInfo(stream_id=STDOUT): - handle = handles[stream_id] - csbi = CONSOLE_SCREEN_BUFFER_INFO() - success = _GetConsoleScreenBufferInfo( - handle, byref(csbi)) - return csbi - - def SetConsoleTextAttribute(stream_id, attrs): - handle = handles[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 = handles[stream_id] - return _SetConsoleCursorPosition(handle, adjusted_position) - - def FillConsoleOutputCharacter(stream_id, char, length, start): - handle = handles[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 = handles[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/env/lib/python3.6/site-packages/pip/_vendor/colorama/winterm.py b/env/lib/python3.6/site-packages/pip/_vendor/colorama/winterm.py deleted file mode 100644 index 60309d3..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/colorama/winterm.py +++ /dev/null @@ -1,162 +0,0 @@ -# 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) - - 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 - if 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 - # 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 - if 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 - # 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/env/lib/python3.6/site-packages/pip/_vendor/distlib/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__init__.py deleted file mode 100644 index d186b0a..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2016 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -import logging - -__version__ = '0.2.4' - -class DistlibException(Exception): - pass - -try: - from logging import NullHandler -except ImportError: # pragma: no cover - class NullHandler(logging.Handler): - def handle(self, record): pass - def emit(self, record): pass - def createLock(self): self.lock = None - -logger = logging.getLogger(__name__) -logger.addHandler(NullHandler()) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 22fcb1f3b5bbf576fdb826d701f4e301f8c1d41b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1044 zcma)5&2G~`5T5maoEC+G5D$Qmd}!R3w5Sq7m7oHoDhEJ<`m##A8`tf|4r`~P6&IAg z46nm+ubg-VPR!VC6A%Y>wd2{HZ+`aM@ssuS@T>p*_|O9Q0V|`6`T?%0Kp{Xd1qlc% zVXr{g!np$BNNZsy_C*h^u7atPI1D~O@z??Bo`w1?1Dc5UgpYV%!l{QI&M_3$N5Gvg zg9S@EvU3_rX8{YwFwZ-Pf}fZZhL`SEf2Ti4X>&6eDhIf#H53vOCLpmIC(HC+=2flo z@!{uG&g#4@hLLRo&Wq7ha&AJ-r=^%H($_fuG#{zf@(r|y(HilqjAuGOAJsBGAL)2f zDj{_h^SwA551#I*@&4Yf*dOfjZ9Yl&>YeFe3rAMO@8elM+Z@kxB{m0>tR9GyZ8~Ze zKbM6lbu8KfW6tv;uQ~6}E;JGkM0Q0=z?yx;Om{d}>h-7)O6ortAlL!nAE8(>Agn7$ z?DlCAN4Ubny(@g8QwIo5$&m(qiN+VWDhGuC1hHXr|Hv{P~)96 zC2f!|F1XxSsk7f2|2LEFU;rJGxaGgi;>c-U-$O&2qqmxaOexh*gT8d1<}MUTz!%^* zH$oa6RiAsoHN?jjnU25ZB_k`(W vvOdBXQa6Pej{-_|Ni^Ed2(y!An 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 N-`fkPbNh08|2KBjs-FM= diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-36.pyc deleted file mode 100644 index 58ed19573a5a8c0fbc665b033718b69048c87281..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17377 zcmeHPTaX;rS)T6c>ACFeMbcXGJ?+G@HHmg*E4JfoOv;Wd+cNf|$Z~8C4zs;;dS+*L zZa&>3X{Tm^WX&ZHP69=RTMBrfQsIRMNKrgcMNz!)LKOv1bior8RNkoKEf2u={inNU zW>->Dl^al*)totf`rOZd|No zr}E0_R(cEd1-#9xLbuvmtS|PK>Px-l`f_ijzS28UKhZl`KPm6s?y25teYJN_{hr?G z`e`c{Si5I}dk?MpeX3Z$UzO?)yqr^IRe3+BD#3$?`T9f3dLvg`_%>FP+pJl!dwoX- zzWTO>XFRUF*a@Rh!+VbDj5Y8dHGzuk!The24&$IDH>xf7_y zP@{s5_T%EXGi<1iju+kt^o>AY)q`96;|F)5Xc%r>xG>xwcGidc(axa1KG1D>jvbaZ zxtjD-K<0UT!#_h3SOApI)#>1bzZHidyrdHYwEN*gWQr@SNE$2kXu#{s)ta2MO{!2 zs}G^%gnB}G>Jj8lswdTl)kly!r5;shQEOE_rXI)dJ?f%5r)qd}TIF#*ACIe7{pOzE z4zBc7aBJMGc=%l3>4aXhi>>x_Fw{X9^rO)8y`ibTGud?`9|3@viP) zy>i}*b^_$MchXhTyC>bROHsIv{aVXD*LSXj4g8B<32-I?6b%`mu{{`VD*xI$jYl_| zHrnvBfbS`MFX0>h9g>MPbferP*RUqJUHcHg9_5j<4y||H1N$I<;2abV+=Jqz5I#3? z@h#$OtA)Lyel>EG)IFU$w7zI52fY*|btNrIT9ULJRicI6swy1XU%7Try7j86zL@*` zXAa8y=c2{krAb+p+V-S0!6AQ;Kd4M9siFGG7IBN15bL!DTF%Vtgjs(aH2sXiK$#O`N$e0k z;({Q__;ja#1M^aZk3rap26}(PI~#7s*3CHI9=2l#$;EMbZ4KxZ620x%4I?!eMe-YH zt%VZUdIg85Pavt;nkTDQnO}()U%dR%3va%5y>Vsp#mjHUd8{!$NfOd%4*IQ5d!zw; zgT5}Yje{g!879P`v6Ik_Y8ZAKm;qO=rT4gmi8Xcxy&x{@VUslB)_&}ea>Vu^jEgF` z(I0iYaU~pW<7G1l!?*(S(cEh^eUuk}=8el*4|HuIcEX_B()V&`H$)Zm>Gp%DJ7|Jh z_|Z=6%ISo00R&8Al$Q3}btmlf_hKuIZQcB%oL)oo?{qH=b?1g31s87k`a)~aRoJx) zjb|>jx1ajN#qRbepLtq+@~NjAPc~Z3XQGR}r=Gy4-M?`C!mu-36XLh_RI435rFNcV zk$kc6z8dHY2~u4!05RN;OAR1cCu%ev#n|CFB)MY6Dp{wkRcpy|v%jT$#j>p`-jt+l z$r|4?OD)#ZewsW=es~PTRKd>2kWm)cQm$tmSYRWT%6IKv{=l|?wTHQb{KTH*56LE+ z@e~AK4kCeHPJ0w}x}ZdZUJnN<0Nd$Df%cmb==+rFpvDYDgj1m1&_OiP{SE0b>1O)Y zK%f;@$%}Mn8>0bGt$2}??AoPEX4sk&FJ*ICZw_>zpTNrEmDxfLub)J5&C%RdsUiij zrR0oFLedwXYP5r>L4Kl}0A^X-XYe8ZbCS0u?@As5!J$oRB~JyRp?tQKixVo2|2-oT*MNix zoxgg;^P9wx`6KZB&y4Z3MFUR_q)(jf$nSdK@q6or z5e)~!Q5U!odRtqdNxJX%f~~FdcuMgdPg!?cTc8o$-qscG0kI+(Brc@`#0BY8FJW`z%9Q49)=K(mlnD{gpXA$WLuiyaUC_cH($BEQCzw2o zq?Q*5iLGXwZ?@V;fJ5JhDzD)ia;#jDxK{!|RDqe}56yvuj57!M8AK2VGl(EO8i)Yi zkuwr9tX-V#F1a60ow$iJw#R>)ZQ~pMjo|KQyzad-77{oQ2`Ou@6t41&n9~nNwgQHJ(Ta$@Rs{KEw~)y-Hl!Q;;Ury@7biSRbG{B_pb{u7 z@w_Z2n;#FeUAaVFhMo40AJ-g8nN!^kf6;Dj1#d%y`;D#FliFLEZ0V_>1>peQ0zSHd5A60mQrv7-sd$+E zlFlYlp4T7swlQIfmYf#Jel~5;`0cxNqm$Ln3Y{7Mrff^~5AtR>9P}X%>!2BQZeYbi z&xMJM@CIyWyVnURawdZCv59M=PfkHKc11+o9~U<$Sq%CR=h#bBa|MLrlE}JXL9rVR zRHqrmOF_RmPyuMY(M=1TDCmXIJRx$Wg|&hq^rdv?^;3YRxR|ynrE56?wlQ9qgAY+Z zJc%S%F?^t8tyq-QR*p(yX^ST53O@u~=7qkzip(u&Jt7r26DM4`nwvPJGKb&;0AFX4 z2iQ7?kkTS&x1c~(CQi$yUS#Fov){_0txIqhrP1*zIc5856njsP`cS^*=*gJ~LZInj zxX?%BjC`I=B2ok101m#lJ!-WAeH>T`aYm!*4%!{C2Z6y>Z+x1{F;Aq`_%nfq%9l;fBw;wbq+@L2yIux7X z2x^v@8J0Y|+G8_9ZLB<5AaI1e_(SL*My`^nnazs^)5hb%C~B=eJ9f{8qHNWQ1QlPg zX6&kf5E;7~bLb3X*Yp>=+#4803M$whwc|pwI|zdmG#&0U6*BH;-8IwF9|O1?g~_6b zHG%#WybGza<;pey(Sd@n1ds$tU7aJTN%bb-kROV+{0cn&4l?9c)DBd>4Gn$bD2E&m zr683PN3Tx`yS74k8ypa17SicnS-&KuFsMM=22rK1Pf~l}MulA$Jkb0K?^ES7B*4)7 z(GN^6stWSEI4Mr7c2QcEcPli#pcQy3WuQr6Qf%2E!z=!mAV6jCeNA)-InYkz)7&wu zkc6GKA(vjO)4h#q&eAC~Q!V6E3O0PpJozCynxlP2wU=UTKm`;YG7NRu3=`NWdonZd zl1~c#sFLwe(+@f7a7X(fqba2}!#qA!!_r>ne-ky;+Y9!M2*&ow7EA#(85xyC$Vvx= zjfij#t^ndqlYw`0r_JUM~3k8wbDBJq^!SN&*-|3UzU>}-d0l0&W@Dq)~wU&yli{sMTT7R$>Mf;mHu+Wx)9UT|f*0%kqxiel~TbmxRGU zgTUX|4Q@psSaAuQZ%D|Ci@iO?2mK+u*N?N3vpeYY1Kp$OViPsMhm>UP*VN}g7z9!tXnH-8(QhZGZY%S$5mIiOQyoF(gi z(5ofuq&0qMj$$3{p_ylEe9HKej9tPv{1%c3M2cT!eVq~>q&ko$k0l^e`R5?{9XR+F zPy$BULg|++kSI~MU`%u&5jri{+&>_BDjLR`ymj#w1Sxq7bE0{hjPX^xE$x;kh9ojy z5gF9oU69}6ZdHCu$*;S+IC0n;6?p&OW|{W2Q6IpX5;9;E9(G_urz9!*{CQY=Ax43z zb|3=w_rbBr;3!*8jfuw@H_phQd)hTH0FuEJniJX}y*1d|22GT6=1J;+R4YLgAtCHX zz%;Nl%p@Tc$R0UT_QB zK}HLO$l&^*b$l|0cV`lY5VqM~wziBdlx7Ty&);uXFm7(mPz)%s_W(}yX(XF*0b_Og zQbH?i3?Z%^N{!l*egqX`=jxTKm*awvA59B_ev1ivVjsSaq`Ia?6&G%5h`jnb z^Uh7b6X~C07Pb)@+_*utveBd!%IlTsdB^VFO&L3zVr&h8*H7Ym@hDy|0CrLn8Qm-) ziAJvKSQTj76^I`|>-=dTHNUizu$+J6d*_gQrkhM8si3C}uV2IiMG^?UFiJuccHXt= zIG{iR!5|MI0>bj4{cirCcu+bhPl~|$yna3c#!rgIfiR(=%<-?y3J-69nBjO0XU+g6 zL4uU_O&R1*WP|TtHXs`S_TE7($TZ!%$vWScSm1AmgYF1aD--q-I>O_I$P>WeMU{c` z1Xst??Hn*7In78OiSREr>+xf3n^EtUkB*fwhl3J8A|w8RWy3_$0$l3|3HY_3rPx_u zcp)O`EhavbZ6-}7#Miil0UDgIKF_iYRgdClnG=zU|A=}sKWFw)JSDaLPfLRS!V-b?K89C#Mdl58!4u1e#|p#@11cI=7hr(dKkvmk5_ zmN4i7C1nFW^SX|9#qiY#3{#1&&|g7G#h~}3c<3CIqXjTl*gwCrM2{Vr=D`BIaklZs ziC=F48uBvAt9V+Oq)&@r%qJ9FyC4njq&itt#jm^6DpW~kd6Ki7EVS}%>j1vNuUdKu zW0jALwLBebvb1|jm6Nt*v|Vl){bqId9w|LNL8)j$x!p4u{ocdeWC{8W*L2@xMZ72# z|69(C-ty+KJAjJoL(`=p2eLll4~&t(XPiM(8*4(5Qd7l`(nyp}3+x^Y7*oED7Q{NY z(V}J%%W(WV_CUA`{%`70Ts&hL44Yssl}u#owgbv4*}{#}1TqwkIb%3e>B!_Ve@sS1 zj4B4{PmP*XO=urx_vgJ}y*(9|j&=k|hJ8VM0@>Nx+U7$8G%kSGW!fr%uHk-SCp0Tb zjfOZy6ETqJgM`l%X7Nkc&m9-y0if5tmr|MssdFwSfr6{)n|^O>%FV&3J9SGOU5!VX z6H5|`MB!|Jx#*iTdPD4!wyeP&LA8&sU%bsCQ+;L1)PG=FFJbt{$=QBr7TED3V-#A0 zQ6Jg^!U)E-{vcDY0h4V8Irulg=fwW9W(a;F>c71`6+At^(TTj;9%#>SSLGx(P z97r4h&B8|IBo@Wx3?So5Pd$zBlQsj57Q-F?;?vKhk435-P$cS$v=#6SglpIC7vu1Z zvI~tE&>tF4#$~WC{Sp%iYM|m97a{oa0QF6lKg=SBNOvzJy`Fce8UDHD)!5)@(PnHNNOhxr>6<{D7&Aq?0|_d zep;vX4J5JEs+VO)sY>aeXZbI%yuiY+F2aGl`f0vm1cOP$yS-qJL4<<;z^jm6nA{oT z#H46Wq20BrHid*L#DpdM(TxtZCN&6G zg%=ziHYoA(-a6cT@5xI#0sM?`9gjBM+FHS7OZ%cSz_-tjSHL-IA}}v7PO?L8lNJaoUx#STIw;BYsBNNbE5NvRDUP)XjQoF=1laPK##bXa9{n4 zc!I&;EBMi0Wq#=>T`P3J5+nS}J-Mp{lpe-d$sePVNGe|M7;X9T3I`(t7q zS-}r{Ob!P*lzkr?@P{a3$u|GE9ShU5POYdv3fF>u8-RWX=K_2JW>WJ$0bNHEc*#Y? zAp&X!#7wRHViZiBjVCh*%77(aoP(XI0ph4oagx?~GlSF|c$r8qp2!&s{|fE;^I=lQ zTV`lZlS3vnP-G&Shf9$-#$i|x`@IAyB8(VM;v$CyFbODD1q2a4kJ_-YC*lHJ=X-P^ zy8bh>sQo#*tLRhCwm|sFPcZraH74s3)J7AGJw5lEKxF}BiNy}OP%U3VR2n?TDXkqp zVcr|>rZ?(O6`$>(>BC3oK@piP7o(ug1Axcp43cDO{he)t_Ouo3go44u1x@F?SPT;v zo&GHr(4RJgo_Dtju9!(ob*0Y}S0#{T$+Z|L=ZYsz%!Bh@xT7sIYdtZYX2?tUhC}oR zCd?qYdzB@gHiQz;Jl20Eg8e?qM-a&mZT-X~4?Dhlknbb@ieUl~JZy&yd7*cXm@9%l zjEe|+mEitAfln^CTZ+mIphMhNY5eOjx53YL073r%Ap-{ss&r7rcTtrme%v-rzSJApUso>qxWGVb}1m3`u2-BVQ2^baO{X?mk^$Pl* z5UQ}8Ji(xd_we57Z_f7i-Z$mCfQ3F+sFu9V%LA4%S57dmy#h>)Pr)F$u$N;lI-wT$ zWI}mB(fGcLaZX}A%kXn7@8walg?d#OGU@qPZaIdQ$^I-tB}&6Xm;L)^&5LqL1Qr!~ z5&H-=@4&tsB*B|P-PGV_pXR)&%#y?b^?6NU3h$c(-DAj2YN25q4&-)298D9-@FL{0 z&S2C=%)m%%s7l@a3~gXBkT^a%?|U#JCK5ZI&UMy<^|ZexE>fWPbaD_e7@U;#0)vrQ z=n+Mfm0ic^FpMH7m3{BhHQDX#8O>s&HR?Av7-bC4m+k~N0;mcoVi*~wJSSZ7_J;Dc zLhEhqYb@A=PoffxZFIACyMvn{v=y2mh{Eu=X3F48+Q zqGslsQa1ihiP?>gkKs*N-^-V;!{jHibjRbj6n2B-9Z?ylo|Ksx$h>e$GPP{AvlEa! zBXeh*E6GC5#(x)w^f}sU;1@BwRlCy|;!HlDxO+?!LJ!Zx@3sfQM-Oa$d zwe>hmLXU54)#QM;w&aYUk0yN`J-c+J$%+`Nt^v7&J+pZsV~@ar7`Age&^-dNX>T*X zM}c?-kH@Dr5yo$TH*@IgUjo4%ufBMsm}b7%zPa7Wd0;Gg)G?l|rNr2_277-y+8Hlh zGRC*H*Ua;i37R1yumgWq4<7pnfYF9p%-}!otYRo0?c>NXb|4(DpUqGTk)Z~a3B`RZ~r$wwNq2cHm-CK9Kp?K2C>7SpSU1L9v2~S^16Y3 zpNpcAPYiLI(cZDs>9+=P9?_5bkk5H6Q}hpi!ui!d?bK2coWMwHK9*coHSOwANZQi{OcxF9)1 z4$2jbqayfXie)0b-ylc-9447NO^aUDMiiipUu(&!=9i#!8#^CueN@T$#ukS?FBH*n z&oEZUTD4d6t77@9+K>$74eO5YpHtT7hR%YsDXu`uHX^|WG6=fitp)@>AYPT?J6JN} z`XI*Zb4iH^2?(~azs&nbh#n-Hhrn))|2f0tHyDQrS^WsP&Z4HT8A7#1A|rvv4B;?= z51`^xUqu?99Ne7T=e5>u|2YvJj=Z|=}$W1%xUEn89T zx`c1|uSjraa&zIpx%KwM!kx;iCh#J%5Y1^vd5Ur2`H2fps(b6=#6^vdLPW#K!2|4^ zfwz{*7h;xSyM;JcG`W__3Jr z%K+@Mc;ew+qpeHmI@y+?%D7G`u}6T2lsO_O547kw6q)u0kdnRF@Hhy zQ%F=BB;36<8Vx=r5#c}e;j`g~lhBC&M7!Mh+3&g8r(_nKrSu}>E>=QP?B1vwb+Gmb zcQLc^a2=WA+x}1CqEs~lPnoy&a9e>E)-bki#Chn?;?;=@QW!hi1GOL9%}9Tf z&F5V+VwC*{;_gMfWE7Pv&KDQ180JZ!ZA4P7Bu^ycRr@sFmTXv2?ePP1_&t9GBE#@J zx+Y~74F5DTxSef92%XX=fw5KxcR@*!RSwGA`6TQSQQ#l&t|6(n4J#=ur^5|KO8|EY zn_?+u)EPdd=W#)^7gBx9+4*3;(M@`meCLsc&)AeI#k2y(zgfyl+b= zYc%3YqtSzd9kAcPMZv~!H<^h3{=3ZmF%#P0jWwRDn_02I#yZQEk0?J=5aO{%!XHB&mk-eEDIqVAV7c+SeEBh`UwTet4xzyJHc^;my@?yEEZ`UBT~)iD0li2My8e-VdsF>V-^ zVa4i3k-zbJtPwB9WBOX6n2>wPVp4un#gzP}i)s1I6f+wI$z_Y#SB>W3q+$21ruA*?6ekhZ{$WMKd}`nzQ@kgp0x7Fy;pJtq%&Lb;!|?g zkL%~Hf#TEFNo&v=dNWqM@T_4CTO)58)`)#@D^Yv~=X>Kv8TZVnjI%Yj$9e*osO<0p}C5q46&)42pe4q5{1bX!X zo_o}q!gEv7ju)-i%f{sN=LuS~lQA!IdBe4x8!vr6h6^|!x>|MIdUfI2dc|IKtF7kb zpqE)w^;)ai^s>mTmX%|BIpo%wI$uEk>}uIvZk8LiR|s-vaoJ1VS+mz{{dpuvV>GrPiw5w3WB#xw*NUw`{Ab?27wbxoOpLvCp;FT`BHm zZrP~SalJkkyrxu3dD&NPy&$>CgjZk}RCQsE&DR|Y&TgWWUSFfUVwWrwLVvR_+HTn@ zyXDC~Z?ICXEZbITRiP!y-SCE`gQbeHExYMf%XKu>ZaQnqE;;qGv+NBxtM#f|TCCP> z>HN@=?eg&&T3%wUK@|#3Mt>Tp#v9YM@_`b1SGsE}hb_&&Y%An%s@D33H_&XUM!8;X z+a(s9jC(oO?Vy1eKR<>O$RakGwH) z``)9IPfvWXd~)&h$@jkg=w$ogQ@5QHm1WMSi`>&VCZ>=5$Lf$$5pa#6O@aBZ=b*4#z~& z0peQ8s)B258g2|{aVzmwd^6UG)#6(Q05jSC)|`pITeiEVnr69PH#t$k{FxjJ$6RT) z?lsMY4YS-dt4+&ZpO%MaFtFu@3Amdv=ay{~Fk!Y9O&8f{DJ6B!n3v2ts%8nkM%TIX zWxDFwCA1!Y*^68=Zna^z)?C0^|J7^PFTL`@Tgq{ZFDK6}F1hEd=XOkTv{97SRq#h7Ij<5mph z1~d4kQB2y&q)|-aNEb6!5;K|d27A_U`x)u^l}Xl{A{bzdjrp90FZ$B4Zhw>GdO4>Z7-WDD%VMMG6!(yrg10ts?h-<1O%S80BtVLwql#vPPP`a5-V}F>c#HU3 zCuJqK;%d2*s-YHMjTy~sC(Sy~8*aLm=@^|@C*DbPPtc*LCG-kf)8Qy@h zSL@}9U0SxwnCHp3nnrWgDI}9w#r}9{y|Pt`Ck4*c;uJ0Dgxs0Lc z8Ch?D%dun=6_y@5eHOSZ>Dcu}F9E#c#TQq-WTj=Rhiady}enplUXlY5|}HM zyj-c&XjyA@8~H-1bZ4zx7nE4?GNqE$s+3Cd?w-D#={bL_=lng9_H&^r>BLFo&f#!4 z*4acdogG!YwhhL4?;;N8Cy{J}@l#-@PJ@*?12(Eq%-Bim>^`HIwH~tutU)jfeb$gQ zj8%}cMyx&f&0C|^Ui=oUF>4=w`>p-f0sIcwgLc0?0JdYuI%pljm0|0!^#FcHtRvQg z_}ycf)PW7_mRxwcfWPQdKAA0taD&lrqPCjRsqoWxR-fB zFZ%Yg{%TtQy!cCQv8BuaCzvOJ7(s%u5SPoYzHDzpw*Gp1Co}Dq)$~&PovdUQ+GpQM zGKaKXU1c8kkS;K_mzJ2W+eq&%*O9JTi?d$FvKPy1b+YMo2)CF|T1-=1YFL&=DJ%R-y!-}ejC7FH;zqMd>Rd%fg(5g^xmmF_y5N1EFz6*V zV_vo^62w=iUedMd>8AB{55UcA}S;K5K7}eX6l#m z7G5_vmliYxx~Ja52jo#%iQ#f25~yOzN+qs8hYuUsbS#}HB-63> zkPpDqVWEJXNT6IEhrrBh$SfI~vGv)GQ8Q|>EyKCBaZvIgOhD^`$~*C`Sj>Q=b1(_$ zLAfNPovT{fxtG>*j$BV|LH@au27w@d9B)4vj%vV)G&fA$GxOeZwX$q3m+#tUt0L27 zb%*WxWLmw7ws|SLu?ikC0bK5-!9-yez0@_i*5{U;72vq0J(-YE^3uw7uspn&9l>8j zU7GFFFTRU&X9S6nB$bZi7>JDk2?OjOZxhM1BRC+{9u1ltEwFo| z33@V3m}WGaoMLPi5cV>zdntMTK5x(K$_0%7Uik7@d(ZZl%l+NoO|rmu>vw|t^O^Ab zy|Ba?(2MmOcY9&v{_fb2>p}2f*wL7>aLr#)Ug~bSzP1BS@+GkG{(HZ9*Y|es@BUsw zh6|Y3ihU$z#nIhF`ROQ@y$%FfHkYbkGEHB`nKIE?T(qhc$_Hh&VKxBj#4hE#-iudIBOOkGQrVOeA^2@R1vf zW(5o`N-U~Y1Ffo)6511!z~~|{PMKtirhTMk-m8M`N8K0~Hmw|16civuAV!V|Z!8FA ztm-UoOqng*RQE`As%}`@ELL?F8??=v!n<}mz~-~kpbHej_sq838{HmWBOe#cc9Kj{ zFH$H75c!kvZQ*R^x@#(0U>jVAM0e+Ox1SG(AV7K;AvSiWSmet~7!Gg|PC!b(#Ez?F zg7xlbV~oov`d%%od?M^@vVA02!@Cy^p*(?ScwFJLFCgJ^7D03jIS8Mm7R|F76l7j_8tjD!lFK^h29Dv(e?M~q=h!YX4sxc`e@u`)n^1>TTdT@Q7GvR~f zr*PjHLSkfcpj0>@B;@el#l4Zz;balrQV5dCx`_;=G?^e5I)Y9d(phXXVZ}C+okT5Z zfxK^~Iw|#p3l_11dzhLGWVa+rW+Br-b%|Wx3MDo?v6#YyrP^!ZggpyvMxGIJ5XQr) zw3O|W_X@58Ie^&`{;smzYGI+TDti&s71y9#=(2Id6g{XhkXpOrIoB4J*h`7-q&?W9 zI+@IANw9CVs(+y zupvT?Cs-)vs+JV)s)W2OG(_@j?}zpLY^MnZ7bgnXc%`0p=Bb&%Kt+4kpsZbS?l*L&*Tf8jGL`r5qGUoUbTu3E`ov zup;jIB?L`l^aBbes-kVrnG>wZUM~}QPldJk0+V^ynKmIJO-6{+T!h09*P_;&NPkZmO0>F1DHP1>RczYInc?d4|g)w-UEh}fgX+dgf;dxagb2x;ed&=Td}ue>gJWpiZxJ9!5h#y>iz7oyRU<@yy5rTsO^W&ki8h~jJ_RnzC*@#NWZuFd}s7_Vsr22*yg@YykOw| zPZ9xk_F_b0>Q6d*J7b-ZUHUrw@g%6*J}I-Wle9+88#nRvo%cg@O}-sh@lHX~e%#yB zDU2ClQ>c&KS00I?%$IF&tyud+GA0-}G6Oz(6zm9|9y<1Vt1OhxzZAgy1TiBX4A%-Y zlqO6$FcZ}48z7s&9Zp5T&=c_DP4l_A7hf<}p%IT_L$K^vSXCgWZ88Mfqm}e{UeF3O zl#V&hV%_cH*7bDa~!n zsna-Z$EVCt3Se8PHjrNmY+5mJbnM?`S>1F)MS6_w3C^9$g z0d0Od>ECG|tTrJbS1mvrC=v;@&^3&W(*__wLWR;wuKVzO%72n2CX<@G{V1!y|2z7Q zIS@`@-oXgW&VK%H@u#R>m^`4FxKzD$4_3<@1Y6~5mTjFiZXogU&s}=?xofvd{P9xK z951~DGsvo=?y%IuOoYW#%n7^QZ4l>9eGL*XwYq_(dwrp?*2~;0t0oAtw=V!Gir^&} z^I*3m8=#teTA0BEjFy@r?eDUR>chPM)l7uJKg*oMWEF{*789Ezc3rjMB?)+5tl=fg z^`(}V)-IBZYaST$^I5%?W11|_=XsTVob;h)BFIjCBA+_3{>MF$Ph@z3?TDlCnkm}aLJwI z0b?<~8TXA<#5(Er?}vEySzp^izzeh-5#0+cqEuyz`o%Q`Y5Mk0tb#^Z%W+PY55C7E zyr~xYNej-Nbl1SqniDKJ1(sJJodjc%#=0rfu7k}KRfl;+>#OTs6*=4BK%4|A;Ocw% zxl3mse?rvgP4mU8k9TqJEX-cZW!!{i%6hyVT~z8HV!YJ%Frkcz6+t6qLl%mL#ZUzO5u8AT#N1KvlpH0OVAiJe zoKXm^#WvH;F_;i(3^ZzBD&9&2*KrO(luSe?RZ4*=0=os~C<_K5W~B}ooh-<78qAhl zhZOX2JOP6vu4K33opdRUa_IvG7?Y&i2ir)zmct$BwqbxwmGWST06XWwegR^#?f(+a z^((8Ccrc|}!HlU4HFZM87pu*3J-8`yLsXYAsmX6wLWn%hsVxU4jY>e0C}vPQ-sJ|C zVcT{j1w{=0Oi$y@A1!;-ko6%t4 zh;ZS|P8PhxYHQWYHhixSHHPWc<-eD???M8s4LJMgy=z3M19{C9L|rRZeXH>=4=Sbq6;%!ko`_<3}pW! zu)q<50q2Bkl&GZyc43c$Ssb=FE73{2FobW#YJFP}6i_;cQt+?Z%(w-z%T{tF2`2SP z*l19$*1y@e{$?iw#<@e0!|Dgd`}#ZWjpuQ1fFg$TNvRhwuSJjMR44BIM5mAUYJ&ws z{Q}JNLp*~{U`WblJ2^a^=lfqZ?zF+^55v0i*V?*+5+hb$P}>J^|1})18fYEXjg^zu zjk$XuMx<(^RvvCBa0FnBrEZpjc+kmO16ZedtkXPxp`$>FPok%L@jJ`kPNK9Ig20%S zs&ZA1b@J{$u1{RwUo|!{7Pyz@z0LmhN1(LYk1;q5k!hfVF+eRJ>hyQ;j!vO7aGs3( zhrq}~1S%a6%O_|AR`g)`K`>w8!nqE27SYQ_?Um7W;V(k1$fkwY)_VJ}hKNc#LI8X_ zY2+roWFn`5I}O*ed3>?eGAGVVpPoE!V#&f~YPr1H)rm!nq+wP+a^YzcPfeNU&9nS@ zh^LQD9uFJmHv_VJ;Q29QLQUE!kd-u0PF$#^ItXkNw z%$G1MqQ0N{(yO9AsVN!|`YA=NVKZ99;K0p@jbdj0YQ*R<4@{`79k3rL^oc}t9#rjwMzoaamI_9iYwLxc>;bu)>Fu+$I5R;>3twkT?1o|KmM}U(_soR5&xU7le zm2lhf?)x?Wd{8~W29a%24>1v3{t9wlKGGxA<))MLAygMxw$4P5@3$gX?DwIfB=exY z3D?9gt_xV|gM8v+O#VLargi(Iv0j=SYS~dm-u^Ui_XkWhNrNM!HaVz~|Bv#1zFV`S z6Pe{a#tIVw6e=Wz zzKal~zMH4t%j6$3`DaW{Y){Bus%Mdi=sb-Kr4IQ|C*#?8Zcla~o5?2lpNnS;*>rXo zSH|#rJv)@$C(p8t;a|efIj50{`W$_ou?TVu-?}V(kD!r*uTRQKTN(VOzYbDGQ5ZdM zfU4hHH?R0p*ZyX~24XywSptjVcY4KqBHfBz(TUBrF^>%uPs}F7!OaV4*a`u5wxDaX1`US6o0r zGvkZku)i?|YD-_A1l;aK1@RVmkW$Jb{Y$pLJw$W&bM^@f?B)iFe$#D+ETumbUDnYr zzXH*D3A&Y=a83kMiYG`m;Wc9`?XZY`!Fat^0n68Ym~e(a`h}`v$jnZrvAX$?`V3A5 zK(!r5*vSWZZ4yafN)s+Mt=|nxa36eP=p6~?H-SBYI0E@MbLrExVq~~n+xxap{7z>X zl*m8Nl#XA?c?l892q0oKGxHV zFJQ@JwclsW=` z(LS(=ebh`#ZT)z|K&KCNWJ}O@BOL<68K=pXhkQ5YQoxB73w};WVE2s9?rI+^+WulqJ%5!qevQemGZ|&_ zDJFt%DRikHX7Ynf1d@ITxygbCBI$)lS3k}BU(bXsg>=QY{s7Pa5tC0a;fm7ImaL%e zGOFRmCkTARwFc;(c&;KP4Wx;hxxlNHS^_GPc7SrnYBYpX^0F_T>2BG?%yoT`l~q7ZP?TwH5vpur1JLT(6O3CM#^ zcFh5gxC?n8iOAz{Oe8zWgNv0*3qPDfL4oN3mQufjlIk~^2rF=qxz8er;#c*{yx@;= z7asV)FLJ0!l?-q}?fpHY@&&Le(b0B?sV^r^Z9gd7eCS3c%9*IM4XqK&XaaujhiiYC z-SctnBfXvb0?2jbQVZ3y{hCEoc#tACP?3N4+rq;SLdMrZnUZ zQ_}#{OT;x9sTF`?=k+z9**VcVXc<0R+fy55D@AXym#7uGg|SWoI=DFN zsO{tP?tVeNy(KjQM%g<*_o}h}(|AKao;a{&;4PnmNi+|cANqn?VTFdg8A$ZwkzV)X zPQKF*jUCehdVtt7XakJS0D3Thmgmv#+nqvBn+JAj^FU9V^IxdNXv^xW)G>^|N}t$^ z(3l*AX*8~eU>Y5SX>=U3bEtOMeV{W);|~nLM`{mR12_vzrSM7I9Q@FrHkAtL8QeyC z+L>d{shWehF`onpP7dji>Y)Tea0Fw25@6g1(>@*0j7 z9ACvPXcgC7#nmE$sn-Xo#Sfnw>ZM`qE!*m>s^8!PKg)z#W=+FnL}buDifhFb6{k)y z(Q3eZxFwnZv7rbW>*BH+%6^WEU8F70fNBTf6@@$uK6nLua8FCf4$)IM|85;(5laLyqS zIS;s&KKUgQbkR10a)3PtHiVW{orb0~MVkvtXm8~9ip+zFzujd(t#YE&_DZu#Bq06< zfjo-2^0lTkE}&G`U{#@$7wKzPt`oHtggL!NKZ`~SW9g+z>^2ld@M*6sdnqy7!e}fM z_&0)L>K`x{g1Tny$ZrgTjygGHj1;vo16X(Megav@YP1i1@Qw1xHexi7KJw_)shOvq ze&*uz!^cXuZ+A|<9@_9TtO17%>1UAfy?o%V0D>D|r}>EflA^>1DfuV|6`nmlX{M~R zT7=>srYHFY*_B^J%E@om|D`ko&q)%+RfS&=Q2B)n0%A^i3i6W3QjnHN;Bh5e>$Cc; z0eIuc9hl4@FLhFjFn=M$0uqZ$DQ1u*7&iqY8T>l2+(z1e5>Bu-MT!KD*%B>d;LuvH zHpRM#rAK!X2T#JIN*QWWH=oIgzYI&30O85+Xg~X;K`=V zS5V4IgrW|zOZ9+aokAKXGg=f9 zc`UTxD|(BoZ)fryOt!NzB;zoG6N@f4fL{9clDR~06SM8qv17;1u8XM3 zh*}7+>ffO-h{!HW&C8yzmm3RK`NCuD3CbCuUtDE9eF%zeYYiUJvqBM!5z7bIhWMB0RE{#JlH!7yH*AQGBa zBOFeF<@=x!!bn2`hwX7~K{F*kjysrO!8-pQd2JG>hFkav27cD{^!HA%jKC4LlCqMK z$)?j_7AWNMpG?3=Y$O3;DAygZS!lU0vhGVvE;AwG@#1JxhCV*v&%D?TFZQw*drkcj z@BdpSB9i?nbNiY6M<(6&NKUB#@8d>{O`@KP;hD+g7+f&2`GL6Ny$X)-kJN;J&UYZ$ z$pb)TYJk2oO?^CpfXySKO3hk*Z}uTHIcMdeLd|M-K?H6xfD?h6cD`1yhLHAy6By7t zKNJV`jt>adl${gG!A)0ltaM3sbkn_ZnRZk*=Ilj z?fFDJWjGJCmRf6Q8MZ@!e~~ZLb5Zk;zX=?K7V*|~v9Kk&6B^#PVzs0M{l^&tlc5V= zYoUg~@#GSmroHU5NU!6f0%Z7X@^2xBvay8-7zqS%>0KiP;n!#%*>&iFx-?SQw%XZ5 zX&&LK!<8PJmD;h${|c9Od(-vcP4J6jWNRI^8TFr0*h@A+Ic7hfL%tFKD(N%_A&*0x zm9}X%l2m+mH5(8Bq4btu*tDC`A+K&t&W$E zj0(0@5i|k(ob&`Y&stY6^1AqdHefvY{e8KX}%&LJv5i_iF= zH2DT7cH;C^7X=TUrZn$4@~YvRlYTy27IQwHln4=Wdw@p6M{gXX1m{}9QoA)^oOOIOQw zgSruMP8AcluPyar)!i5yZwO;xqq%nQ9vbx=awi73hapj>1z)%8&(15+F))}iu9a}-Ri^2W?xPJ6iA1wSx=5Aou9F*)~44gkY z9Q1J3%n5i)LWZ|E#%1OZ6mQq*Jh5g=3`{t$_sW=3nhr6E4Ie`|t?u%jh5YxoXukUI zOn!&S*C6pDICmY<{t_zfOfC25hovAY7UB6to0oUqu`-{Okwu^>w(8!jIB8bUAlh?}cnA25g^^ocTR1%zS* z`qM&ffMu|>cxRCL*N~f!@yb^iw|GYJF1cM#n1G(JotG^GI0NuU8B+fnE!UjvhnXYc zjHvql8&4OQ{56v_z^Lm6(lhodgS&xP-nAczrcv-!7irZ{*(N982r@JaQ4OYfV&)lT zPxlI%i`wJ&nUn~cXrI5mFaaieZT;j#^|tlo6P@)ZpC~ML{%*W0`DL? zkq`>m7)%K{y_5c?6O}Na7S!@a{5V-dG8tgFB!57zdGU zhGBQ=J_EJugJGu=c$UjRIz5LBJIyYuA&VipP?K{AkkZNvFeVUFLf%Rcz|~FMNqy6( zfG9N)5`80}8H)g7qI@jM7X^_pB1Q{O45NS5mC*G-+LzUjG1YNe5s$fU0E@Dh;L?N9 zk7yvs0Fm?F#rGCd6Hdc6O{y7cD+10Y^sNPD0aK1ABMpF!h`c_O6#7N7ZI<9LbftM5 zjD5w$&N`qt;>Mwa0#P2kJC&CUtrmsLuqpCn1hcgdqR$l@4hg|fi2K;d3tX^S)yFj` zjx!&|Y(-Y%-|$rYXx>0>n=$SaytRD|dc!2L+g|e>1STrfjU1Q=#Pm^BmW71cK7Jq2 z>a8K;N@fL~KPu;sz?juX zrSn!i@Eahf59idl`e7*njoW6{rEppRoHITwyOjcbXMqF;eQzJ~qgQ4%LX9hB^lDH8W?&nvFNV86PpqBswh;vK1#WD@~U&~hxKc)85DL63>_79qyu~n zHQ2>fo?urXhEFJLN@+;dYJeB|wHE9S-lcw?$vNGD_(vE&fcAyum`%BUO{4hb9fN!K2s6yU& z6o>XSAeT)4y)^yyBuItCr+q&zAX;xI&JxJUc?+NuiLd_-01hY9=_Q>13M$Yw@qHIP|Lafvq$5s`@5Ff;=%IPHk`4G?5b}yb>rE`dY*tEVsnD4B8r!hca48 zMNJgv?ul?k0qjEqC){Nb)9Ph~-@qEvDm7t@eh4>Ij*DS0lMt9SKT4iZwk6U=%GYta zZG!;pFM!%c_@qGjZZ<}+e#Wm8h9AMxMuuLdbbZuJ(hz=yQ37O-f`@%10h?mHefU1e zT4pJv`&9eV?NHLhm39YBpvf{0fJhMtj~ACMEzFU=if5L_@X zAj(ZV5U2p~B(SClo^QvRe+^rR7y*HIVfon1SQ%I@u$Nygk0;-j^1#z@F3{ya3m>nT z1)r`eVvQLn@OG^I$&Ejea=7C&#r^Q~V%+ec)sHfLa(BSL+eaOZ#99w?gIRDdd3U6? zr<0fH;Ws;dh&E=hKwoVye)|!VJ!}n&W558M2*y$C7=r{h2N5+*hk<@;WOKmXhX`ZT zAW_mWb+I#4J7CexVqgQo1+{~n0hWZJ-^B7eBr(uU9UQ^C7Gjk*`}G!B?qLKW6llkR zrG`rz&J%d<=kVME^4w?r*lDvfTsvZot}qPZC(y$Ot-TnhVUCk5VUDDZr2a6THO09A zP$hBKXSbKfdmj2G+{16aHcm$l;nXskQ|qaX2;^a@?Xq9n==R!r%47RtAPP`*=}qiB zg%Iw}I97fDP#i8#VvZ0aa4Bm(8UX<<$Enh3NxW`wwc0${fYhuu%nCP&jc{PEz4n?p z_tMpu5Dw>pX1UxBN6L_wY*P2%<-ue#D#jj&{}lW@*BVrYfqe^`#OBbg4Va7U8&yj)K$^9;s-c4l6LB8|&8A#9nreva3@r9$mi+s?@~3>IoAT+trJC+Fz- zf0~aB1(&Y*wYF1h?&8TO+Zl*Kn7cF8Z$UHLqf!f$)##x(l!#NwQ5~}zZ#g>1HC1)6 z`LLq-N6VlGnG>P2i&n9dfT8{eZ&2_SKNR&Zm^;Sg6HEkG50l!IuDmomcWrjAH1`2) zSWGhw0)Dv-ZCz2N4OU5Z`&}lS05zKxms}8oZ*`b0 zBOAyak+QG^b8*lW?mR;=oF$JSr4P#^_&tiS-uvkl14`K*J6|?IX&0Y{YsKp)F2GCS zJbV<+hs+aID51XbCQihXE@~*?5a^;PD9VUl>F3li83J{ItC=@9%vPSR^ z#xtV4ItL$J&9Zzs_tzSFr70pRRu^#u7GeU8Ml9l|@uN8En$2aOu)iujhqz?{%!ulb zS>iXC2&9M|)%Rc!fY`@}38X#zti(dlT=`P2e%eezOXwC~7Nw>A; zMtDl?h$Pq>>YwNcYug+y`45}$Ves|JA;ZNc^2oE9vq-@IgRdqFMJ*vMbZ|z9*OEbG z1~-BMSOcJ;a%Wz|Sm&xMjFnytU<8a3*eWzWRi+PfNYlPZ(-U_L&~_TJJ^7*Q+dD#P zqJ3|=6zl&YfaAW_9qqVBGC31Ap8|H|?*#NY*!9!l)?p_ZxW}+W2E%}G>s@XqvD4t% zLeOyR_evAM{i-wl>OkAzVBG?5uxMU~p$5JwVuxV8*q7~O9jpX*L-(ik{?&o)&?979 z-EMk)VWa2T+;7mN9oer7R8Y-M=GFHD64V42$uBW?oVnMSJILHBa$csq;BcPQAzl*X zBD<7fk*h$>!-DT(A$lB;r;P_Wjmt&fec)=)8Xww2kEqa(j1Y^3sl^1*iN>HFq5!tZ`aZDg-4pK_#XuDZGtjUi)f5yCoh(@s~z!HfW2{xRO zZ4J63>6`OOJZYfH=G5-)l=*dkbKu=nrwox!@04y~+c zHogU;5RCR$Aus!KP<0!kG;ukD?N0^*+sa4~-F1#UN6<*OAKWqC+slTyq7TJ+T*2Xd z8k7C6%woJ;%Rf!~r z2!}lrtOQ-0ppY|a*eZ(R6XUY6LmYJqRDS`T-t&0?z~yfpvmxU1y46WyHf~G!6P?I_<<(J?<>p>-XkZW+g(^?tK z5B_B~C`Q4F5AK6;%uGfd1(O3Gce)V@ivv3xN)((?%*UwD?xen)!4Tc)oRt7y==na4 zj%&nplC$>3POPvzGO=0B91F{Xy}_^_Ka)&+lmb8IIfA-&wQJlJMK zgwn{C!2V|AdaJ>zR=pAb!M7G@5`;f=Q*uF5wOy*RK|4yTE}wOw>WoYe_(VUDKX9nh zmHDCKpu4i4V`%$w5YP(RPD<_9O6m+sz(Ci)4b-+CBD#l9i1f2jU0UYGspTbT3W>U5 zZ1JCPun&R8&f((3=xira|9?jatrK1d4=~z|N2YmtcR&rP0^Lk`5Kf&xMAD@ST6rg4 z+}`?UAPNDqFnR|#=*MKYkp#90Os*uHqcD!Z0oh7pznjZGvS<5N;WMISAST zdz~NsaU}c^IFJ-YM_5wtuPgWg=03%Qwcr~R5lC0>0eH%81KnU25ds5W(vZq&`S260 zMnWrpgt-vy2zMcb?L&kgQ3!*mQCuGZHjF1p+mxhy9=&)eaZyLdt;ctf#KY~xU8EzSJ zX=w=tWvZ?M$I*Eo&&XOuKiDZAc^vl%r>9q;i@0ZStf`M^*N?RCD5J3?g_`@xX3{nm z@TDtuObckcZ*0PG>TYhbo0v8WAp0e>Ry|1|q+H?Us)z*DdP}vJ7X~gN_#Q^cR#OyR zP>lJn4Y=K>`0OvEXh8Y8u)rEWjv>*W>uKtT+WUK^uq#vq<46%Ei{lCo=Oz-M8}TyG z8Xx&ukQpMk1h*yPKGZOG;TIzeA$bV`2rL84l&E(ci&HI)2*_I>~v16(C^Y1q0ByMw?Avtty9-64(e zJ7t)ai+G}U-HF`CO5cs+;7opdFys=goRitD;JNS*_vKGEgTCMLlcmUgF0$QyF6@jA z%S|n3Gd!!$*O26W7w&>A)PC?M1#e{Ma%tb_u2roo!TN076RJ+&#COkVeQR2$fQPZc zJ_1Q-F^7s8+=tK9_^zoTX=g`x4C0U_hY62pO+^0z0N}O)(4C|L-HCQNEdLh9DqK`w z?5Yb|qSYe3?b~gY{hcdA^x%miMAR0&nh-55D~v35H=;EH$S)iRBA9J|T5}PYT{buy ztRNT%+Elc2rC3q4?xm~c*j5!!_^kH6fkju`AmA1lRz{ysX}-lqqiT(z-=%c`p@4>!pMhH!WL4yM3zEYNXrkla*JbE5zq#-?~jPtwKEeU*mlU?Z1W^^XNxXwjM38eyVY2BYTQmhrgGAZXLs+2}=m`Nb`xlY%6)fj4 za)i$loAHeyLMT5C@)DeDuoKGwEYu0OxICdP?AUN{02>Yhe#Q3l<=t&3sg)lx8!Kp@ z-UdQ{N=n=GWUzZU1eW|;4x(@fV!eq&^F&Xi_T(-@v%3U1IdFe=p~ALs*{NS-@+=dY z9br;NW!hjP?fo3@gv|?(%cHzXbot{!E4jT^VW^PGrm&swl-z4S7{j@PrWqG;$cJR2+zh_`hb?{aB|dO5RvKEAlny6H2pYs#+IFnGRlsjnN5_Jr z*(2W#j3FSMt8Ek(pFmdI&@or-(?W}0p#7&uXF>Tf$~5}S%4~?jND_ElVPh#Mc4Dh( zhE~$PLqO*Ko;U-_!pr0B#gOdn&YVo?ZCiw-1|PDs0$LhA3)V`=D_RR?D)`h>B*+KE z#vAPMKG5jCk}-G724RW7b;G~EMqf{tMvQCs-MA@sj%$Aa}?$IEd?qzP!8LbZ6(Ez z1>7p4b>YDY_Ak%te#|p0z<%7xr^11{WWfxvZIH;#X=aJxc8nbXMmDt0AbL z@M5c4LJARxs3W`~w0N7X`4Pg&5S}p7bh5;zh@b}yuxLND17>=k4VMw&CWM_1PIiGE zft;r)Ifiiaw1E#3YPh-jh2f^dFJ(}@)z^iZPRcor8WFqnv_UsYAA)`~grHmSN8;Cu zwgZvBO%N?qUjU54iX!0Td!PTmfDyiOjb=q4X}?^dj-wZrOuq}#=G_4**8@=MIWitM zn0yqIp`K@s@T1;`9KWN;w+FtBA}xzf>xJM6FV_2sTW^nkXdCQ2PS~MRO~Veqv8Z8( z4k$_N1iu4?dz`qP_L(@0RSi!r2Ko?NVF9Hbo0Y%8^(T42O4lRm@P}Y6Lb!eb&ae0zpXwLS1JQWWlnerdP zjld536}%;4hRpaId`5~B9fU+g?dHGa4GMq!ize6M+(9_M}S}{M7oCNMJ|BEDocD$blK|M~OiAm@`I6(3jvK zn`1x8Hy~vqvXznszHSH4-bIljEy#(@tEipvO@I*n9#EWdssEtVFOepEFI7=~t#?r? z&Faus;w!2N8rA_-$?``N5!F=WyI1=AUT`#phkP(!4Apik?ORJk;{cyhmZ88BXVNWkj1GD&OtE;G#a41rn`A@?}$hS|m{H zaSIf%w3HRVAsh$hg1?%~)bV%G>qX~}vl+|@HM%l`K2GwXh~Gx)PUMa@iAgtFC47bO z;aU1$`;#0Q;ehyw*B89MFsnqj!CZFRBEePBTJ>jBc8;>BO}lR><|Bh}eGZ<0DUvxy zqej7$f*OVYA!_vcu$0=|-PKh$i5`Ct7uAc%1xWK{S4$EK8L-<4Dq?cjUyh2JU6APZx~_*< zbU*3~v1l5INq-n#Qs~woutKXwu@!3e_^JuRGT0*E$T)On&w;)IUkXl)yNC^?M7{*Z z2|5~L&=~g5h^ysJ4Bv8tIawk!z;)B5s7c)pf}DYC6IS}IxGn)ha0cI{d)qBoaCr1T zjlpOVy2#)u3m?5G^~1)-C==-TX!*ehFyLe(ImC&q|8*yW4Hkb4+dd*pn%ctJAb0%5 z+u{hYqDFB@>js54Tlhc*4BL#cpe7Hy0P{l^jIqGeBRKY4<|iqVwb9Ljyc=fl zPF6l9v9NyD8WRoG0F2=S_`DD!Mld$0>s+Vb-HRR#^7>XBW73bUAnBc)?-VW@oqp6h zgce`u3|&Q(%->K$DLUju_0VR-*J!QHLS-AU&GtOvBGIh!x?$OSnUw%iEZv% zpYH6#J0IcfqkV8iC>_S^9Y#IBCaoLAnY0e|Kocw1_G$?0?8Ba4WcT-#zY*&#L>|Ka z^@x7NeWYMfMvN|qzOxHI$+VMJMKI(JNx+Xl*5nF8LbPJ&0K&%XK&ZGtCP_YVQQr2^ zZ*3~a?n7OC=hHj-3UQkfd~$)3MPTdVWjYk$G7U)hl&b@t6dT9POqnwaYt=g9IMDHT zZHv>At_RHwsWf~+x%-i=>EsvleGzIt7T(2`7q1A+Q}7KIgv$?v;}cpE&7<#;iUx0f z*LJTp;an*GrW>UDnmZ{o2t53{dSpUxF`$GIg+A>IM6Ihp@_{0*YoXVXj6vbB83Cn_ z)H~NR^IZ#EBq~^@M(8Mr%!avKhGqh}u-+MNxi>TKLz^|<-GWb=i(w6hpB~jx2R@+J zeLhrc%m;Olrh^Mx4Y%u`pC`;sOv)ExG#haLh6v=87)BLtd{EhVw^l{wBJ32oIYf%N zCw>19{T*K`%H;ZNPEV_QMmHGr$an^9k~l3p^aBY@p_)?)+b}PmD^6toS12+^>S=y{N>nA z%~g38af_jF@ee5EnIIFr*^MtaS8Nv?D+C9~xvP;EOo zgAZV~^Z5RvUn4#~gO5652(?fLzZ!g@PTZ?d+3*$p84KOp4fwei^O50dAA~lOV~aMT zlm0Y{BFJe!jEi8Cu}K24%t;Bk3+EP=X?)*qx;;dgOJS9t5w7y&iQ9KZFYx5QuPHAbLog}8iz1V|qY9{Y-sur1%t%ra!~R1pbw z;a}tafHJ^Nv0pH0csig#JvjF=&~R`usyRMS{!uh(#UTj~0`LSMA`>>!OUsrJPI2$9 zD`wLFbmWhsnqoeJ!exfF&i42Cir4Tm%x24K75ldhvv!humEA}q0swq&G41%jKmg=> zMK8eEvSJ@lAUleSKPBhkv@2n8V@>^a0MYizfcLPlh;3|I-%iH$8}PhwP)q&%E+m-M z_y|~6X!`Kw$RHGr_i10`b><3SYoP%|`QQ$jT<)8w1Nxy|#@>lK7@A+AW{#UNlR?%& zZH3r=S}fy7a5t!zy2bY1UG)sK&c|o3BRJzC+PkZhj=+KN{URI4v=S^-g-Le+Bquhu z>$q`%gFxjt9ffn*>|k~TpQzcNolv~X*UsuK?c&vz-huC5p)fysw*)`fCGC0LWSjns z$veE6ztNz3qITUHwD5Te$O{tQ&L_C*ig@Jfu#q%_yUPA{m*n`hA3lAt6jdoI$0W~$ zx;NF&gr-YH{~Pr<6SiN+Uyd-x5J;HU5IxIHdi9#3TbcgK-w!ai4+%a7=vM1`Ps#(l zc#z2SUK>w*AJZgoV}R~F!XHOZY{ zrxJ*{jOPHb1XjRFe(1rWuQI;McxveM(6yl%IAvsNuQ!W9F9P<6u57M$c zNPtM_>gwvMzpMWLukU{p-=CQ&{$Bo{K8?O3N&hBI{b{IwjLZKE6ilj1OlFEB*JW{6 z>Wa9lbyeK8x+dvfUP3+Jk?Un!>CM=cBe_0n zYrQ#UpqxKa>Zin0fu3-k{=S5^Gj^``8dF&DXUci0zVHKym0126=-6kE)cQH5Y)aMg zXjr`ESiWy^d%$hqc7v|lF@s&(bh>_EdTq1ab!^}4x~63^H1Te87<4_iRxGYR8Frsq z4#t>)Ctl)>pIpAK?vHO0l_%#?LZG0`Gtjf{cZS;1!&Gmzp zJs{#}Gul40TOPAfFSk7Rsm+7NzzTLF`)4v_kz@KZ39`sD19zPjSP}O;yTr|;@^o||0_F1G6$w>9>L8L>!p^K4WIgVf|H3v~n)T>IQ`L@&MGvL8rN&F0M&%Mw3Uq&HmXOtqeNc<~Q7V%tBsm+k*8U-TQlSjB03h_BOrq65i%^0D7)F_RZZZg3h&h#Dwh3MW zhc19G28UFrG{$1A2E^$4W(&~Lv|+s*E9gG8Q-Y*36KQW$3sDh#<$=H74R-k~Rv`o? zLJ_H;&P%9O6(Ouhqe;a46`Up}^D2rhTs{H1q?f_QQ8{BGNMsBoe5Fh5 z&x@!WEQB)lRAsDyT~ers-JoM9#0dK3F-E;;h!dUvW{&wUvP>9*glDkv|68WXVv$uf z=0c9R;B$heW4r*QGSn@VH3DdsXN2M3jJO!jvcv2?}$d z$DFU`gw*QBzU7kr@gp71{Ll&b`xqF>ZNV?hkc1fvSb*3X9y_>vqA%qtMp4$tI>-yK z3-CH-kIgXS6`4<3g}^i#Oj{KGg-n8NU<(Le@WL&}wxGu_>MhT4;MS%4tVaBstc+}G zRi4tkjCE12MKs3f5Ce;1$fHU&E%7qjn4~oXDq>b&Vvgy?+}3E@jWzf^nA@Jh?;N}x zssNKq@PS~;LLG6E`iBaD5(bTFp)Nqhd@Ow>yK5Me!x;DAf*5m3j6t7x%sBsKOY}Q~ zemeU7`Af9(f_5lq8wu_3vE=?MMiemO9}a$fjItO3%724izeKO%p7NE%|NG!?ML#p0 zb*QltX8kKcxg6@DcBDc_e}z$BV$=*q$^7kukr;I*op(HHoc~IGQbx~h^sI=U8^jAX z8|H}WSF-^eY2;Plw6^0QU<}gC?A@oUZ~8_n#IdSL*$slh_0?78wR{8!!7k!%k9S1yAY$!R-y8Cl zO~FKMH|RTW;=6tL%6>MhDBpEk&XCz#2&8pHV7ne4U2wg`-U+|h#4=jD6h&U)QQkff z{YRCK<25a3B^iHb^!}?yA;LS{rvNiHpp!H~MkS>>4~Y-C51FTgvGK_v8?Af;`8XPg zMMI(C6+W6Gl+ccH9d5OQjgbjTY2PlC;pIi<27Kt+qig7hu<$8G&dy;vAw=;>40__= z(R|lM+M~-%3%ZMd{R*$@(HxQ!+_%Ya$107MgmaX(pqQMmVwq8X-{LNKjrYmCv-f0u zVB5*Bhzb)zdi~OZiaffIVe(5K%J4alZ&73<@L3~# zMkoQ-P6=f4f(0@!17(n}Vz2GxIqGnyfXswHar;R@|n|s~7X$segV&Yh#ma}BhGR4s#yG)v&s^bJhIGK78GV_nA z_I(u3kHJIsoGA74sr{MkgXyNE7bjKVq=Xxsv}5$v6;4SXY$4xVOEmi38(HTu#10PAtWm+3Q(&oD@cEwqi0bo z%jbY&alN9JmC^ZEihZj^Iz)djc$y>z2Be6+O$tNdhiS2o#*{sSzl}G_5vFpmL>`v# zJ1Og?BHJeO8hKN_9Mvh~Kh8a=A(+hp88qu>(C$r}JZF<^s@w6+CCbwe`&QFA6gFIB zhpMLVkrpY3De~|BBDVCDb0RFfxtQ#z#bwhnf8urzR{Y>lxF`;5S)7?mWb>;jE=>7K z57V?VB1V|kz(npJFh%J%AK56=!Vy6qfmt8%q{vQ-SBq^|e0VVfIOMB_4${4gR~JP- zd-0=1Gj=~f)m`zi^N}+)Tf0aNBV6GAGF(IQD=sImE@z~W{TU$ZLtfYlvndIOZ(lck z9B1rO9-Y?rT?#xrcR6mws*y%)BEOb)%81>5u(|peX)|x%|E}mI#u1tOR?B>_ImL>* zZF4d9qZUofA>c#XTp~s=yKN!nstPo91p^X(Co4qnzQ-qd%2=dg)|aoszq<@y5wTJ% ztIKWA6K!;eLL8@t)uzR%v4-?|JDdFUblM2OZJfM#a5{nXm=_X06SBwF5$D9kI{YDy z61p}^X79Pv`UUMn_KZA4;ms~42pF)s7FR6+bbkwoRAIs_##3Ac>igblI%(7m>XEg+=D$9A`pC*LJ=z?l{7Vbw2xO- z$UP0XKw8^0g&3))&CYHa_#X(y3jTj~HBE<>8 zJxn&vB4OeaY?vCBLtYa@I^pir2B}}Tf1?x zg7Tw@FU#+v&Tmpdj(%jM!r>eANNF8%k0CJr7IhNAzbHhK;ttw?ok^17q9)I&MfjeS zhAJaXF^$*99PX3hn&_Pb*9XgR}+mYINjzT;G0(wkqix9jr-Z=o|iD*0p27Tc&GtkU*~N zEnNOzf=;OMi{y_6$O`jwlu{wzbQ3L`QlPQ&p2n|3!|)@3Be|zjxeX^^Ob2r^@6j9T zKQ_>J27TSo=;i5fjx*E@(n{YA3SY>s#x(R&dc~mBEB9tFvcj|@=<~RMU?sO#Kr*Ne zDwRE%|GoGkvghNX_yWGla=|PP_vDg9q0+eI-bmk!OJOPb=C4tUzxmJf&9HY>DJ&L!h9i@9-`N=l32+ZC3_GZII8GM=t6BP`$`nPysIh0r)FwK3PT(%5j{35|@d zag46PiU^$wVJR%*C^6sG7ih$XA${RbL48h8f0j@ORlL2x=-?9Hh^ew1t+0(CQSeI* z@eR0J^VaJS*H(he6odJ@w&Scg-92GKV;3nk=|EH~!)Jo+p<_)B3n@nU8b3Sdf$f;P)HW&uD6W@)t8FmkB2`qF*M@%O+9!mi7Zm>uRw%8a{GfIF9 zVOQdqFf}9QQf%Mg!^Oj<4OVr6BK#-NX%VOK52!{55*yFu?UAy*{apThq|~mCDp&mY zzjl@GBRzgX6p#)6KiB7@Vi%DMd=UJA0LS(Lj}&f4`DF3YY~$glTR(iT(fDNj(dOL; z8&Ro2erzM~U{j(3@H4YKVZxCCuOvPPe2*S=+izI|dy-wBIuHDWR!J~Woryz} z7cH4U6LDgTForl1sdN-9kcD8NK4bR>!C?x_^+N16k)b1^$AO37?0W<}6kkgP4WLt0 zG{sOB6sjBY1w1XFjgmAM5VV|=FN%PM-r@jKxkz`M?;=^FTu?@@PXd{j%yyQOp@@b; zXaQGrfI&wx0&o<9sGBQOi~ga~L~{_$>@Y9n3>U zko@Vy&3-xLn1mQhaax-Ep)Ax8{oCEv^uB0-ZzF9Rf1~{NyFdN>ivQW@)Y8&NYj13C zSC^>0dbPS;g9nvQBBH2}O)%Cxp%5+5fqoC0$$?JnISGBD_sGo(U41EYK?kVhiNq!= zU(7=XR1F$akw<4HS}@rZRUBZ+cdF{v#&j`9zd)gQveAf&4f@prVl~vujmDFqC4P2* zr+lMs64^mM$qg3C8i z7^P9`;2;z}L(IyAi-&%EVyaRP zov;Ew<{(v%G|HWelmjgW$5U8U0lyf!CyrD3fap@LmNV)t->=U%Zauhn@8-kJ^~S@S zTU+aoHX?bmK8x1-_t!VJ)^9iN-Q8G^%J`8QK|T_{aLjBPtb4-i7eD(tY0;6f7PI+A a5#9ZZC`fL}Kb&0rtGZHDk(|v}l>Y&yI*jW8 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-36.pyc deleted file mode 100644 index beefc33349bc4545b1015443656bfb0018921fb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6039 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 CK6s`8 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc deleted file mode 100644 index 2797f8d66b413f76d2b48dcb632fe5f2c463af59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27082 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 WT7oz8FNvD7gTo(<@h^iC&i@1Y9ql0i diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-36.pyc deleted file mode 100644 index 69f01dce5ac8bda86c31411ead4620cc8894f6bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10911 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 AmH+?% diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-36.pyc deleted file mode 100644 index db6a684b8fa8a240c2886de7e07dc6f36a937db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10078 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 D#>*$I diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-36.pyc deleted file mode 100644 index f7018b4f974911a0eb948f8211bbd90c4b3f6903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44505 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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-36.pyc deleted file mode 100644 index d5bde0211b6697f77b0e8489b95675f69777fb96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25042 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 Bn$rLP diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/misc.cpython-36.pyc deleted file mode 100644 index bff366774628894aa59bd817cc40e4cf244eac51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1092 zcmZ8fORv*95cW7po2ES#=ZePy77-HYR=SXTpd5sR5D&3n(+x;KHdbOgB_%J}?h!>r z0uDb0HvAEGEWKrQ|H54{P7mVYXeQ%%`kR^SdwbEl;n(M1JVL&aU(R`y?;`2X$OK7= z06{BAq5spA3QzbVSbC|qIfc4G<<~(P0C`H9*e7!EGExg5?vuj;#87x2APt_AhCU;k zP=;xUo`0j~2tD8KJTXsLMfErx0}&(Pe;{di5)nyQP0|U*T)>z;jQMyH6Nv!*CObbt zACuYmb#g!BFS}M59T%;N%SMz(rC4WG%&SamspG5>aj|Z=DceS0{SQHsh27^Fe<4|+ z+M4Nht+=!y&#EfRE0hW?8{P^z14YrDJLV3yjyU-Nl0J=W3n~=QMS{MeTe79+2tLYN zSl|}gPbj9tZo`TalLkWO>!tPNE2D-O+Oz-HNvF!A%*f;@Q%TWQLMolG!(^GyZ(ghN zTZcEqt@#ahzzTk7uGRB@@hqFx^Onz?v!;8Z=aBiV>nC8E@(D)WTp zCp}8)QuC|brbo5!K={ZAOkf5!d~kxFgHz&he+RjT8=+vxmKZp8orlGY+NjiJqfORu zsm5r>EMA+he&SOuO1T_v%XHsI_$|MCK%f6M3P19z=@uK=-{>(_m$zi)8GjWVlVd>r zK!6!;QC@{-k-rDw+D;d*&&yYxBo-gJ!2ry+zi@+h2wDf|^s2=PCm JQ=hu$!*}g(3E=<$ diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/__pycache__/shutil.cpython-36.pyc deleted file mode 100644 index 2b8d0396c41c4e966eb598bbedab346bb9fda6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21439 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 ignored_names - - Since copytree() is called recursively, the callable will be - called once for each directory that is copied. It returns a - list of names relative to the `src` directory that should - not be copied. - - The optional copy_function argument is a callable that will be used - to copy each file. It will be called with the source path and the - destination path as arguments. By default, copy2() is used, but any - function that supports the same signature (like copy()) can be used. - - """ - names = os.listdir(src) - if ignore is not None: - ignored_names = ignore(src, names) - else: - ignored_names = set() - - os.makedirs(dst) - errors = [] - for name in names: - if name in ignored_names: - continue - srcname = os.path.join(src, name) - dstname = os.path.join(dst, name) - try: - if os.path.islink(srcname): - linkto = os.readlink(srcname) - if symlinks: - os.symlink(linkto, dstname) - else: - # ignore dangling symlink if the flag is on - if not os.path.exists(linkto) and ignore_dangling_symlinks: - continue - # otherwise let the copy occurs. copy2 will raise an error - copy_function(srcname, dstname) - elif os.path.isdir(srcname): - copytree(srcname, dstname, symlinks, ignore, copy_function) - else: - # Will raise a SpecialFileError for unsupported file types - copy_function(srcname, dstname) - # catch the Error from the recursive copytree so that we can - # continue with other files - except Error as err: - errors.extend(err.args[0]) - except EnvironmentError as why: - errors.append((srcname, dstname, str(why))) - try: - copystat(src, dst) - except OSError as why: - if WindowsError is not None and isinstance(why, WindowsError): - # Copying file access times may fail on Windows - pass - else: - errors.extend((src, dst, str(why))) - if errors: - raise Error(errors) - -def rmtree(path, ignore_errors=False, onerror=None): - """Recursively delete a directory tree. - - If ignore_errors is set, errors are ignored; otherwise, if onerror - is set, it is called to handle the error with arguments (func, - path, exc_info) where func is os.listdir, os.remove, or os.rmdir; - path is the argument to that function that caused it to fail; and - exc_info is a tuple returned by sys.exc_info(). If ignore_errors - is false and onerror is None, an exception is raised. - - """ - if ignore_errors: - def onerror(*args): - pass - elif onerror is None: - def onerror(*args): - raise - try: - if os.path.islink(path): - # symlinks to directories are forbidden, see bug #1669 - raise OSError("Cannot call rmtree on a symbolic link") - except OSError: - onerror(os.path.islink, path, sys.exc_info()) - # can't continue even if onerror hook returns - return - names = [] - try: - names = os.listdir(path) - except os.error: - onerror(os.listdir, path, sys.exc_info()) - for name in names: - fullname = os.path.join(path, name) - try: - mode = os.lstat(fullname).st_mode - except os.error: - mode = 0 - if stat.S_ISDIR(mode): - rmtree(fullname, ignore_errors, onerror) - else: - try: - os.remove(fullname) - except os.error: - onerror(os.remove, fullname, sys.exc_info()) - try: - os.rmdir(path) - except os.error: - onerror(os.rmdir, path, sys.exc_info()) - - -def _basename(path): - # A basename() variant which first strips the trailing slash, if present. - # Thus we always get the last component of the path, even for directories. - return os.path.basename(path.rstrip(os.path.sep)) - -def move(src, dst): - """Recursively move a file or directory to another location. This is - similar to the Unix "mv" command. - - If the destination is a directory or a symlink to a directory, the source - is moved inside the directory. The destination path must not already - exist. - - If the destination already exists but is not a directory, it may be - overwritten depending on os.rename() semantics. - - If the destination is on our current filesystem, then rename() is used. - Otherwise, src is copied to the destination and then removed. - A lot more could be done here... A look at a mv.c shows a lot of - the issues this implementation glosses over. - - """ - real_dst = dst - if os.path.isdir(dst): - if _samefile(src, dst): - # We might be on a case insensitive filesystem, - # perform the rename anyway. - os.rename(src, dst) - return - - real_dst = os.path.join(dst, _basename(src)) - if os.path.exists(real_dst): - raise Error("Destination path '%s' already exists" % real_dst) - try: - os.rename(src, real_dst) - except OSError: - if os.path.isdir(src): - if _destinsrc(src, dst): - raise Error("Cannot move a directory '%s' into itself '%s'." % (src, dst)) - copytree(src, real_dst, symlinks=True) - rmtree(src) - else: - copy2(src, real_dst) - os.unlink(src) - -def _destinsrc(src, dst): - src = abspath(src) - dst = abspath(dst) - if not src.endswith(os.path.sep): - src += os.path.sep - if not dst.endswith(os.path.sep): - dst += os.path.sep - return dst.startswith(src) - -def _get_gid(name): - """Returns a gid, given a group name.""" - if getgrnam is None or name is None: - return None - try: - result = getgrnam(name) - except KeyError: - result = None - if result is not None: - return result[2] - return None - -def _get_uid(name): - """Returns an uid, given a user name.""" - if getpwnam is None or name is None: - return None - try: - result = getpwnam(name) - except KeyError: - result = None - if result is not None: - return result[2] - return None - -def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, - owner=None, group=None, logger=None): - """Create a (possibly compressed) tar file from all the files under - 'base_dir'. - - 'compress' must be "gzip" (the default), "bzip2", or None. - - 'owner' and 'group' can be used to define an owner and a group for the - archive that is being built. If not provided, the current owner and group - will be used. - - The output tar file will be named 'base_name' + ".tar", possibly plus - the appropriate compression extension (".gz", or ".bz2"). - - Returns the output filename. - """ - tar_compression = {'gzip': 'gz', None: ''} - compress_ext = {'gzip': '.gz'} - - if _BZ2_SUPPORTED: - tar_compression['bzip2'] = 'bz2' - compress_ext['bzip2'] = '.bz2' - - # flags for compression program, each element of list will be an argument - if compress is not None and compress not in compress_ext: - raise ValueError("bad value for 'compress', or compression format not " - "supported : {0}".format(compress)) - - archive_name = base_name + '.tar' + compress_ext.get(compress, '') - archive_dir = os.path.dirname(archive_name) - - if not os.path.exists(archive_dir): - if logger is not None: - logger.info("creating %s", archive_dir) - if not dry_run: - os.makedirs(archive_dir) - - # creating the tarball - if logger is not None: - logger.info('Creating tar archive') - - uid = _get_uid(owner) - gid = _get_gid(group) - - def _set_uid_gid(tarinfo): - if gid is not None: - tarinfo.gid = gid - tarinfo.gname = group - if uid is not None: - tarinfo.uid = uid - tarinfo.uname = owner - return tarinfo - - if not dry_run: - tar = tarfile.open(archive_name, 'w|%s' % tar_compression[compress]) - try: - tar.add(base_dir, filter=_set_uid_gid) - finally: - tar.close() - - return archive_name - -def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False): - # XXX see if we want to keep an external call here - if verbose: - zipoptions = "-r" - else: - zipoptions = "-rq" - from distutils.errors import DistutilsExecError - from distutils.spawn import spawn - try: - spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run) - except DistutilsExecError: - # XXX really should distinguish between "couldn't find - # external 'zip' command" and "zip failed". - raise ExecError("unable to create zip file '%s': " - "could neither import the 'zipfile' module nor " - "find a standalone zip utility") % zip_filename - -def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): - """Create a zip file from all the files under 'base_dir'. - - The output zip file will be named 'base_name' + ".zip". Uses either the - "zipfile" Python module (if available) or the InfoZIP "zip" utility - (if installed and found on the default search path). If neither tool is - available, raises ExecError. Returns the name of the output zip - file. - """ - zip_filename = base_name + ".zip" - archive_dir = os.path.dirname(base_name) - - if not os.path.exists(archive_dir): - if logger is not None: - logger.info("creating %s", archive_dir) - if not dry_run: - os.makedirs(archive_dir) - - # If zipfile module is not available, try spawning an external 'zip' - # command. - try: - import zipfile - except ImportError: - zipfile = None - - if zipfile is None: - _call_external_zip(base_dir, zip_filename, verbose, dry_run) - else: - if logger is not None: - logger.info("creating '%s' and adding '%s' to it", - zip_filename, base_dir) - - if not dry_run: - zip = zipfile.ZipFile(zip_filename, "w", - compression=zipfile.ZIP_DEFLATED) - - for dirpath, dirnames, filenames in os.walk(base_dir): - for name in filenames: - path = os.path.normpath(os.path.join(dirpath, name)) - if os.path.isfile(path): - zip.write(path, path) - if logger is not None: - logger.info("adding '%s'", path) - zip.close() - - return zip_filename - -_ARCHIVE_FORMATS = { - 'gztar': (_make_tarball, [('compress', 'gzip')], "gzip'ed tar-file"), - 'bztar': (_make_tarball, [('compress', 'bzip2')], "bzip2'ed tar-file"), - 'tar': (_make_tarball, [('compress', None)], "uncompressed tar file"), - 'zip': (_make_zipfile, [], "ZIP file"), - } - -if _BZ2_SUPPORTED: - _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bzip2')], - "bzip2'ed tar-file") - -def get_archive_formats(): - """Returns a list of supported formats for archiving and unarchiving. - - Each element of the returned sequence is a tuple (name, description) - """ - formats = [(name, registry[2]) for name, registry in - _ARCHIVE_FORMATS.items()] - formats.sort() - return formats - -def register_archive_format(name, function, extra_args=None, description=''): - """Registers an archive format. - - name is the name of the format. function is the callable that will be - used to create archives. If provided, extra_args is a sequence of - (name, value) tuples that will be passed as arguments to the callable. - description can be provided to describe the format, and will be returned - by the get_archive_formats() function. - """ - if extra_args is None: - extra_args = [] - if not isinstance(function, collections.Callable): - raise TypeError('The %s object is not callable' % function) - if not isinstance(extra_args, (tuple, list)): - raise TypeError('extra_args needs to be a sequence') - for element in extra_args: - if not isinstance(element, (tuple, list)) or len(element) !=2: - raise TypeError('extra_args elements are : (arg_name, value)') - - _ARCHIVE_FORMATS[name] = (function, extra_args, description) - -def unregister_archive_format(name): - del _ARCHIVE_FORMATS[name] - -def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, - dry_run=0, owner=None, group=None, logger=None): - """Create an archive file (eg. zip or tar). - - 'base_name' is the name of the file to create, minus any format-specific - extension; 'format' is the archive format: one of "zip", "tar", "bztar" - or "gztar". - - 'root_dir' is a directory that will be the root directory of the - archive; ie. we typically chdir into 'root_dir' before creating the - archive. 'base_dir' is the directory where we start archiving from; - ie. 'base_dir' will be the common prefix of all files and - directories in the archive. 'root_dir' and 'base_dir' both default - to the current directory. Returns the name of the archive file. - - 'owner' and 'group' are used when creating a tar archive. By default, - uses the current owner and group. - """ - save_cwd = os.getcwd() - if root_dir is not None: - if logger is not None: - logger.debug("changing into '%s'", root_dir) - base_name = os.path.abspath(base_name) - if not dry_run: - os.chdir(root_dir) - - if base_dir is None: - base_dir = os.curdir - - kwargs = {'dry_run': dry_run, 'logger': logger} - - try: - format_info = _ARCHIVE_FORMATS[format] - except KeyError: - raise ValueError("unknown archive format '%s'" % format) - - func = format_info[0] - for arg, val in format_info[1]: - kwargs[arg] = val - - if format != 'zip': - kwargs['owner'] = owner - kwargs['group'] = group - - try: - filename = func(base_name, base_dir, **kwargs) - finally: - if root_dir is not None: - if logger is not None: - logger.debug("changing back to '%s'", save_cwd) - os.chdir(save_cwd) - - return filename - - -def get_unpack_formats(): - """Returns a list of supported formats for unpacking. - - Each element of the returned sequence is a tuple - (name, extensions, description) - """ - formats = [(name, info[0], info[3]) for name, info in - _UNPACK_FORMATS.items()] - formats.sort() - return formats - -def _check_unpack_options(extensions, function, extra_args): - """Checks what gets registered as an unpacker.""" - # first make sure no other unpacker is registered for this extension - existing_extensions = {} - for name, info in _UNPACK_FORMATS.items(): - for ext in info[0]: - existing_extensions[ext] = name - - for extension in extensions: - if extension in existing_extensions: - msg = '%s is already registered for "%s"' - raise RegistryError(msg % (extension, - existing_extensions[extension])) - - if not isinstance(function, collections.Callable): - raise TypeError('The registered function must be a callable') - - -def register_unpack_format(name, extensions, function, extra_args=None, - description=''): - """Registers an unpack format. - - `name` is the name of the format. `extensions` is a list of extensions - corresponding to the format. - - `function` is the callable that will be - used to unpack archives. The callable will receive archives to unpack. - If it's unable to handle an archive, it needs to raise a ReadError - exception. - - If provided, `extra_args` is a sequence of - (name, value) tuples that will be passed as arguments to the callable. - description can be provided to describe the format, and will be returned - by the get_unpack_formats() function. - """ - if extra_args is None: - extra_args = [] - _check_unpack_options(extensions, function, extra_args) - _UNPACK_FORMATS[name] = extensions, function, extra_args, description - -def unregister_unpack_format(name): - """Removes the pack format from the registry.""" - del _UNPACK_FORMATS[name] - -def _ensure_directory(path): - """Ensure that the parent directory of `path` exists""" - dirname = os.path.dirname(path) - if not os.path.isdir(dirname): - os.makedirs(dirname) - -def _unpack_zipfile(filename, extract_dir): - """Unpack zip `filename` to `extract_dir` - """ - try: - import zipfile - except ImportError: - raise ReadError('zlib not supported, cannot unpack this archive.') - - if not zipfile.is_zipfile(filename): - raise ReadError("%s is not a zip file" % filename) - - zip = zipfile.ZipFile(filename) - try: - for info in zip.infolist(): - name = info.filename - - # don't extract absolute paths or ones with .. in them - if name.startswith('/') or '..' in name: - continue - - target = os.path.join(extract_dir, *name.split('/')) - if not target: - continue - - _ensure_directory(target) - if not name.endswith('/'): - # file - data = zip.read(info.filename) - f = open(target, 'wb') - try: - f.write(data) - finally: - f.close() - del data - finally: - zip.close() - -def _unpack_tarfile(filename, extract_dir): - """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir` - """ - try: - tarobj = tarfile.open(filename) - except tarfile.TarError: - raise ReadError( - "%s is not a compressed or uncompressed tar file" % filename) - try: - tarobj.extractall(extract_dir) - finally: - tarobj.close() - -_UNPACK_FORMATS = { - 'gztar': (['.tar.gz', '.tgz'], _unpack_tarfile, [], "gzip'ed tar-file"), - 'tar': (['.tar'], _unpack_tarfile, [], "uncompressed tar file"), - 'zip': (['.zip'], _unpack_zipfile, [], "ZIP file") - } - -if _BZ2_SUPPORTED: - _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], - "bzip2'ed tar-file") - -def _find_unpack_format(filename): - for name, info in _UNPACK_FORMATS.items(): - for extension in info[0]: - if filename.endswith(extension): - return name - return None - -def unpack_archive(filename, extract_dir=None, format=None): - """Unpack an archive. - - `filename` is the name of the archive. - - `extract_dir` is the name of the target directory, where the archive - is unpacked. If not provided, the current working directory is used. - - `format` is the archive format: one of "zip", "tar", or "gztar". Or any - other registered format. If not provided, unpack_archive will use the - filename extension and see if an unpacker was registered for that - extension. - - In case none is found, a ValueError is raised. - """ - if extract_dir is None: - extract_dir = os.getcwd() - - if format is not None: - try: - format_info = _UNPACK_FORMATS[format] - except KeyError: - raise ValueError("Unknown unpack format '{0}'".format(format)) - - func = format_info[1] - func(filename, extract_dir, **dict(format_info[2])) - else: - # we need to look at the registered unpackers supported extensions - format = _find_unpack_format(filename) - if format is None: - raise ReadError("Unknown archive format '{0}'".format(filename)) - - func = _UNPACK_FORMATS[format][1] - kwargs = dict(_UNPACK_FORMATS[format][2]) - func(filename, extract_dir, **kwargs) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg b/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg deleted file mode 100644 index 1746bd0..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +++ /dev/null @@ -1,84 +0,0 @@ -[posix_prefix] -# Configuration directories. Some of these come straight out of the -# configure script. They are for implementing the other variables, not to -# be used directly in [resource_locations]. -confdir = /etc -datadir = /usr/share -libdir = /usr/lib -statedir = /var -# User resource directory -local = ~/.local/{distribution.name} - -stdlib = {base}/lib/python{py_version_short} -platstdlib = {platbase}/lib/python{py_version_short} -purelib = {base}/lib/python{py_version_short}/site-packages -platlib = {platbase}/lib/python{py_version_short}/site-packages -include = {base}/include/python{py_version_short}{abiflags} -platinclude = {platbase}/include/python{py_version_short}{abiflags} -data = {base} - -[posix_home] -stdlib = {base}/lib/python -platstdlib = {base}/lib/python -purelib = {base}/lib/python -platlib = {base}/lib/python -include = {base}/include/python -platinclude = {base}/include/python -scripts = {base}/bin -data = {base} - -[nt] -stdlib = {base}/Lib -platstdlib = {base}/Lib -purelib = {base}/Lib/site-packages -platlib = {base}/Lib/site-packages -include = {base}/Include -platinclude = {base}/Include -scripts = {base}/Scripts -data = {base} - -[os2] -stdlib = {base}/Lib -platstdlib = {base}/Lib -purelib = {base}/Lib/site-packages -platlib = {base}/Lib/site-packages -include = {base}/Include -platinclude = {base}/Include -scripts = {base}/Scripts -data = {base} - -[os2_home] -stdlib = {userbase}/lib/python{py_version_short} -platstdlib = {userbase}/lib/python{py_version_short} -purelib = {userbase}/lib/python{py_version_short}/site-packages -platlib = {userbase}/lib/python{py_version_short}/site-packages -include = {userbase}/include/python{py_version_short} -scripts = {userbase}/bin -data = {userbase} - -[nt_user] -stdlib = {userbase}/Python{py_version_nodot} -platstdlib = {userbase}/Python{py_version_nodot} -purelib = {userbase}/Python{py_version_nodot}/site-packages -platlib = {userbase}/Python{py_version_nodot}/site-packages -include = {userbase}/Python{py_version_nodot}/Include -scripts = {userbase}/Scripts -data = {userbase} - -[posix_user] -stdlib = {userbase}/lib/python{py_version_short} -platstdlib = {userbase}/lib/python{py_version_short} -purelib = {userbase}/lib/python{py_version_short}/site-packages -platlib = {userbase}/lib/python{py_version_short}/site-packages -include = {userbase}/include/python{py_version_short} -scripts = {userbase}/bin -data = {userbase} - -[osx_framework_user] -stdlib = {userbase}/lib/python -platstdlib = {userbase}/lib/python -purelib = {userbase}/lib/python/site-packages -platlib = {userbase}/lib/python/site-packages -include = {userbase}/include -scripts = {userbase}/bin -data = {userbase} diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.py deleted file mode 100644 index ec28480..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +++ /dev/null @@ -1,788 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -"""Access to Python's configuration information.""" - -import codecs -import os -import re -import sys -from os.path import pardir, realpath -try: - import configparser -except ImportError: - import ConfigParser as configparser - - -__all__ = [ - 'get_config_h_filename', - 'get_config_var', - 'get_config_vars', - 'get_makefile_filename', - 'get_path', - 'get_path_names', - 'get_paths', - 'get_platform', - 'get_python_version', - 'get_scheme_names', - 'parse_config_h', -] - - -def _safe_realpath(path): - try: - return realpath(path) - except OSError: - return path - - -if sys.executable: - _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable)) -else: - # sys.executable can be empty if argv[0] has been changed and Python is - # unable to retrieve the real program name - _PROJECT_BASE = _safe_realpath(os.getcwd()) - -if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) -# PC/VS7.1 -if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) -# PC/AMD64 -if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): - _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) - - -def is_python_build(): - for fn in ("Setup.dist", "Setup.local"): - if os.path.isfile(os.path.join(_PROJECT_BASE, "Modules", fn)): - return True - return False - -_PYTHON_BUILD = is_python_build() - -_cfg_read = False - -def _ensure_cfg_read(): - global _cfg_read - if not _cfg_read: - from ..resources import finder - backport_package = __name__.rsplit('.', 1)[0] - _finder = finder(backport_package) - _cfgfile = _finder.find('sysconfig.cfg') - assert _cfgfile, 'sysconfig.cfg exists' - with _cfgfile.as_stream() as s: - _SCHEMES.readfp(s) - if _PYTHON_BUILD: - for scheme in ('posix_prefix', 'posix_home'): - _SCHEMES.set(scheme, 'include', '{srcdir}/Include') - _SCHEMES.set(scheme, 'platinclude', '{projectbase}/.') - - _cfg_read = True - - -_SCHEMES = configparser.RawConfigParser() -_VAR_REPL = re.compile(r'\{([^{]*?)\}') - -def _expand_globals(config): - _ensure_cfg_read() - if config.has_section('globals'): - globals = config.items('globals') - else: - globals = tuple() - - sections = config.sections() - for section in sections: - if section == 'globals': - continue - for option, value in globals: - if config.has_option(section, option): - continue - config.set(section, option, value) - config.remove_section('globals') - - # now expanding local variables defined in the cfg file - # - for section in config.sections(): - variables = dict(config.items(section)) - - def _replacer(matchobj): - name = matchobj.group(1) - if name in variables: - return variables[name] - return matchobj.group(0) - - for option, value in config.items(section): - config.set(section, option, _VAR_REPL.sub(_replacer, value)) - -#_expand_globals(_SCHEMES) - - # FIXME don't rely on sys.version here, its format is an implementation detail - # of CPython, use sys.version_info or sys.hexversion -_PY_VERSION = sys.version.split()[0] -_PY_VERSION_SHORT = sys.version[:3] -_PY_VERSION_SHORT_NO_DOT = _PY_VERSION[0] + _PY_VERSION[2] -_PREFIX = os.path.normpath(sys.prefix) -_EXEC_PREFIX = os.path.normpath(sys.exec_prefix) -_CONFIG_VARS = None -_USER_BASE = None - - -def _subst_vars(path, local_vars): - """In the string `path`, replace tokens like {some.thing} with the - corresponding value from the map `local_vars`. - - If there is no corresponding value, leave the token unchanged. - """ - def _replacer(matchobj): - name = matchobj.group(1) - if name in local_vars: - return local_vars[name] - elif name in os.environ: - return os.environ[name] - return matchobj.group(0) - return _VAR_REPL.sub(_replacer, path) - - -def _extend_dict(target_dict, other_dict): - target_keys = target_dict.keys() - for key, value in other_dict.items(): - if key in target_keys: - continue - target_dict[key] = value - - -def _expand_vars(scheme, vars): - res = {} - if vars is None: - vars = {} - _extend_dict(vars, get_config_vars()) - - for key, value in _SCHEMES.items(scheme): - if os.name in ('posix', 'nt'): - value = os.path.expanduser(value) - res[key] = os.path.normpath(_subst_vars(value, vars)) - return res - - -def format_value(value, vars): - def _replacer(matchobj): - name = matchobj.group(1) - if name in vars: - return vars[name] - return matchobj.group(0) - return _VAR_REPL.sub(_replacer, value) - - -def _get_default_scheme(): - if os.name == 'posix': - # the default scheme for posix is posix_prefix - return 'posix_prefix' - return os.name - - -def _getuserbase(): - env_base = os.environ.get("PYTHONUSERBASE", None) - - def joinuser(*args): - return os.path.expanduser(os.path.join(*args)) - - # what about 'os2emx', 'riscos' ? - if os.name == "nt": - base = os.environ.get("APPDATA") or "~" - if env_base: - return env_base - else: - return joinuser(base, "Python") - - if sys.platform == "darwin": - framework = get_config_var("PYTHONFRAMEWORK") - if framework: - if env_base: - return env_base - else: - return joinuser("~", "Library", framework, "%d.%d" % - sys.version_info[:2]) - - if env_base: - return env_base - else: - return joinuser("~", ".local") - - -def _parse_makefile(filename, vars=None): - """Parse a Makefile-style file. - - A dictionary containing name/value pairs is returned. If an - optional dictionary is passed in as the second argument, it is - used instead of a new dictionary. - """ - # Regexes needed for parsing Makefile (and similar syntaxes, - # like old-style Setup files). - _variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)") - _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)") - _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}") - - if vars is None: - vars = {} - done = {} - notdone = {} - - with codecs.open(filename, encoding='utf-8', errors="surrogateescape") as f: - lines = f.readlines() - - for line in lines: - if line.startswith('#') or line.strip() == '': - continue - m = _variable_rx.match(line) - if m: - n, v = m.group(1, 2) - v = v.strip() - # `$$' is a literal `$' in make - tmpv = v.replace('$$', '') - - if "$" in tmpv: - notdone[n] = v - else: - try: - v = int(v) - except ValueError: - # insert literal `$' - done[n] = v.replace('$$', '$') - else: - done[n] = v - - # do variable interpolation here - variables = list(notdone.keys()) - - # Variables with a 'PY_' prefix in the makefile. These need to - # be made available without that prefix through sysconfig. - # Special care is needed to ensure that variable expansion works, even - # if the expansion uses the name without a prefix. - renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') - - while len(variables) > 0: - for name in tuple(variables): - value = notdone[name] - m = _findvar1_rx.search(value) or _findvar2_rx.search(value) - if m is not None: - n = m.group(1) - found = True - if n in done: - item = str(done[n]) - elif n in notdone: - # get it on a subsequent round - found = False - elif n in os.environ: - # do it like make: fall back to environment - item = os.environ[n] - - elif n in renamed_variables: - if (name.startswith('PY_') and - name[3:] in renamed_variables): - item = "" - - elif 'PY_' + n in notdone: - found = False - - else: - item = str(done['PY_' + n]) - - else: - done[n] = item = "" - - if found: - after = value[m.end():] - value = value[:m.start()] + item + after - if "$" in after: - notdone[name] = value - else: - try: - value = int(value) - except ValueError: - done[name] = value.strip() - else: - done[name] = value - variables.remove(name) - - if (name.startswith('PY_') and - name[3:] in renamed_variables): - - name = name[3:] - if name not in done: - done[name] = value - - else: - # bogus variable reference (e.g. "prefix=$/opt/python"); - # just drop it since we can't deal - done[name] = value - variables.remove(name) - - # strip spurious spaces - for k, v in done.items(): - if isinstance(v, str): - done[k] = v.strip() - - # save the results in the global dictionary - vars.update(done) - return vars - - -def get_makefile_filename(): - """Return the path of the Makefile.""" - if _PYTHON_BUILD: - return os.path.join(_PROJECT_BASE, "Makefile") - if hasattr(sys, 'abiflags'): - config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags) - else: - config_dir_name = 'config' - return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile') - - -def _init_posix(vars): - """Initialize the module as appropriate for POSIX systems.""" - # load the installed Makefile: - makefile = get_makefile_filename() - try: - _parse_makefile(makefile, vars) - except IOError as e: - msg = "invalid Python installation: unable to open %s" % makefile - if hasattr(e, "strerror"): - msg = msg + " (%s)" % e.strerror - raise IOError(msg) - # load the installed pyconfig.h: - config_h = get_config_h_filename() - try: - with open(config_h) as f: - parse_config_h(f, vars) - except IOError as e: - msg = "invalid Python installation: unable to open %s" % config_h - if hasattr(e, "strerror"): - msg = msg + " (%s)" % e.strerror - raise IOError(msg) - # On AIX, there are wrong paths to the linker scripts in the Makefile - # -- these paths are relative to the Python source, but when installed - # the scripts are in another directory. - if _PYTHON_BUILD: - vars['LDSHARED'] = vars['BLDSHARED'] - - -def _init_non_posix(vars): - """Initialize the module as appropriate for NT""" - # set basic install directories - vars['LIBDEST'] = get_path('stdlib') - vars['BINLIBDEST'] = get_path('platstdlib') - vars['INCLUDEPY'] = get_path('include') - vars['SO'] = '.pyd' - vars['EXE'] = '.exe' - vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT - vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) - -# -# public APIs -# - - -def parse_config_h(fp, vars=None): - """Parse a config.h-style file. - - A dictionary containing name/value pairs is returned. If an - optional dictionary is passed in as the second argument, it is - used instead of a new dictionary. - """ - if vars is None: - vars = {} - define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") - undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") - - while True: - line = fp.readline() - if not line: - break - m = define_rx.match(line) - if m: - n, v = m.group(1, 2) - try: - v = int(v) - except ValueError: - pass - vars[n] = v - else: - m = undef_rx.match(line) - if m: - vars[m.group(1)] = 0 - return vars - - -def get_config_h_filename(): - """Return the path of pyconfig.h.""" - if _PYTHON_BUILD: - if os.name == "nt": - inc_dir = os.path.join(_PROJECT_BASE, "PC") - else: - inc_dir = _PROJECT_BASE - else: - inc_dir = get_path('platinclude') - return os.path.join(inc_dir, 'pyconfig.h') - - -def get_scheme_names(): - """Return a tuple containing the schemes names.""" - return tuple(sorted(_SCHEMES.sections())) - - -def get_path_names(): - """Return a tuple containing the paths names.""" - # xxx see if we want a static list - return _SCHEMES.options('posix_prefix') - - -def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): - """Return a mapping containing an install scheme. - - ``scheme`` is the install scheme name. If not provided, it will - return the default scheme for the current platform. - """ - _ensure_cfg_read() - if expand: - return _expand_vars(scheme, vars) - else: - return dict(_SCHEMES.items(scheme)) - - -def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True): - """Return a path corresponding to the scheme. - - ``scheme`` is the install scheme name. - """ - return get_paths(scheme, vars, expand)[name] - - -def get_config_vars(*args): - """With no arguments, return a dictionary of all configuration - variables relevant for the current platform. - - On Unix, this means every variable defined in Python's installed Makefile; - On Windows and Mac OS it's a much smaller set. - - With arguments, return a list of values that result from looking up - each argument in the configuration variable dictionary. - """ - global _CONFIG_VARS - if _CONFIG_VARS is None: - _CONFIG_VARS = {} - # Normalized versions of prefix and exec_prefix are handy to have; - # in fact, these are the standard versions used most places in the - # distutils2 module. - _CONFIG_VARS['prefix'] = _PREFIX - _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX - _CONFIG_VARS['py_version'] = _PY_VERSION - _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT - _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2] - _CONFIG_VARS['base'] = _PREFIX - _CONFIG_VARS['platbase'] = _EXEC_PREFIX - _CONFIG_VARS['projectbase'] = _PROJECT_BASE - try: - _CONFIG_VARS['abiflags'] = sys.abiflags - except AttributeError: - # sys.abiflags may not be defined on all platforms. - _CONFIG_VARS['abiflags'] = '' - - if os.name in ('nt', 'os2'): - _init_non_posix(_CONFIG_VARS) - if os.name == 'posix': - _init_posix(_CONFIG_VARS) - # Setting 'userbase' is done below the call to the - # init function to enable using 'get_config_var' in - # the init-function. - if sys.version >= '2.6': - _CONFIG_VARS['userbase'] = _getuserbase() - - if 'srcdir' not in _CONFIG_VARS: - _CONFIG_VARS['srcdir'] = _PROJECT_BASE - else: - _CONFIG_VARS['srcdir'] = _safe_realpath(_CONFIG_VARS['srcdir']) - - # Convert srcdir into an absolute path if it appears necessary. - # Normally it is relative to the build directory. However, during - # testing, for example, we might be running a non-installed python - # from a different directory. - if _PYTHON_BUILD and os.name == "posix": - base = _PROJECT_BASE - try: - cwd = os.getcwd() - except OSError: - cwd = None - if (not os.path.isabs(_CONFIG_VARS['srcdir']) and - base != cwd): - # srcdir is relative and we are not in the same directory - # as the executable. Assume executable is in the build - # directory and make srcdir absolute. - srcdir = os.path.join(base, _CONFIG_VARS['srcdir']) - _CONFIG_VARS['srcdir'] = os.path.normpath(srcdir) - - if sys.platform == 'darwin': - kernel_version = os.uname()[2] # Kernel version (8.4.3) - major_version = int(kernel_version.split('.')[0]) - - if major_version < 8: - # On macOS before 10.4, check if -arch and -isysroot - # are in CFLAGS or LDFLAGS and remove them if they are. - # This is needed when building extensions on a 10.3 system - # using a universal build of python. - for key in ('LDFLAGS', 'BASECFLAGS', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - flags = _CONFIG_VARS[key] - flags = re.sub('-arch\s+\w+\s', ' ', flags) - flags = re.sub('-isysroot [^ \t]*', ' ', flags) - _CONFIG_VARS[key] = flags - else: - # Allow the user to override the architecture flags using - # an environment variable. - # NOTE: This name was introduced by Apple in OSX 10.5 and - # is used by several scripting languages distributed with - # that OS release. - if 'ARCHFLAGS' in os.environ: - arch = os.environ['ARCHFLAGS'] - for key in ('LDFLAGS', 'BASECFLAGS', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - - flags = _CONFIG_VARS[key] - flags = re.sub('-arch\s+\w+\s', ' ', flags) - flags = flags + ' ' + arch - _CONFIG_VARS[key] = flags - - # If we're on OSX 10.5 or later and the user tries to - # compiles an extension using an SDK that is not present - # on the current machine it is better to not use an SDK - # than to fail. - # - # The major usecase for this is users using a Python.org - # binary installer on OSX 10.6: that installer uses - # the 10.4u SDK, but that SDK is not installed by default - # when you install Xcode. - # - CFLAGS = _CONFIG_VARS.get('CFLAGS', '') - m = re.search('-isysroot\s+(\S+)', CFLAGS) - if m is not None: - sdk = m.group(1) - if not os.path.exists(sdk): - for key in ('LDFLAGS', 'BASECFLAGS', - # a number of derived variables. These need to be - # patched up as well. - 'CFLAGS', 'PY_CFLAGS', 'BLDSHARED'): - - flags = _CONFIG_VARS[key] - flags = re.sub('-isysroot\s+\S+(\s|$)', ' ', flags) - _CONFIG_VARS[key] = flags - - if args: - vals = [] - for name in args: - vals.append(_CONFIG_VARS.get(name)) - return vals - else: - return _CONFIG_VARS - - -def get_config_var(name): - """Return the value of a single variable using the dictionary returned by - 'get_config_vars()'. - - Equivalent to get_config_vars().get(name) - """ - return get_config_vars().get(name) - - -def get_platform(): - """Return a string that identifies the current platform. - - This is used mainly to distinguish platform-specific build directories and - platform-specific built distributions. Typically includes the OS name - and version and the architecture (as supplied by 'os.uname()'), - although the exact information included depends on the OS; eg. for IRIX - the architecture isn't particularly important (IRIX only runs on SGI - hardware), but for Linux the kernel version isn't particularly - important. - - Examples of returned values: - linux-i586 - linux-alpha (?) - solaris-2.6-sun4u - irix-5.3 - irix64-6.2 - - Windows will return one of: - win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc) - win-ia64 (64bit Windows on Itanium) - win32 (all others - specifically, sys.platform is returned) - - For other non-POSIX platforms, currently just returns 'sys.platform'. - """ - if os.name == 'nt': - # sniff sys.version for architecture. - prefix = " bit (" - i = sys.version.find(prefix) - if i == -1: - return sys.platform - j = sys.version.find(")", i) - look = sys.version[i+len(prefix):j].lower() - if look == 'amd64': - return 'win-amd64' - if look == 'itanium': - return 'win-ia64' - return sys.platform - - if os.name != "posix" or not hasattr(os, 'uname'): - # XXX what about the architecture? NT is Intel or Alpha, - # Mac OS is M68k or PPC, etc. - return sys.platform - - # Try to distinguish various flavours of Unix - osname, host, release, version, machine = os.uname() - - # Convert the OS name to lowercase, remove '/' characters - # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh") - osname = osname.lower().replace('/', '') - machine = machine.replace(' ', '_') - machine = machine.replace('/', '-') - - if osname[:5] == "linux": - # At least on Linux/Intel, 'machine' is the processor -- - # i386, etc. - # XXX what about Alpha, SPARC, etc? - return "%s-%s" % (osname, machine) - elif osname[:5] == "sunos": - if release[0] >= "5": # SunOS 5 == Solaris 2 - osname = "solaris" - release = "%d.%s" % (int(release[0]) - 3, release[2:]) - # fall through to standard osname-release-machine representation - elif osname[:4] == "irix": # could be "irix64"! - return "%s-%s" % (osname, release) - elif osname[:3] == "aix": - return "%s-%s.%s" % (osname, version, release) - elif osname[:6] == "cygwin": - osname = "cygwin" - rel_re = re.compile(r'[\d.]+') - m = rel_re.match(release) - if m: - release = m.group() - elif osname[:6] == "darwin": - # - # For our purposes, we'll assume that the system version from - # distutils' perspective is what MACOSX_DEPLOYMENT_TARGET is set - # to. This makes the compatibility story a bit more sane because the - # machine is going to compile and link as if it were - # MACOSX_DEPLOYMENT_TARGET. - cfgvars = get_config_vars() - macver = cfgvars.get('MACOSX_DEPLOYMENT_TARGET') - - if True: - # Always calculate the release of the running machine, - # needed to determine if we can build fat binaries or not. - - macrelease = macver - # Get the system version. Reading this plist is a documented - # way to get the system version (see the documentation for - # the Gestalt Manager) - try: - f = open('/System/Library/CoreServices/SystemVersion.plist') - except IOError: - # We're on a plain darwin box, fall back to the default - # behaviour. - pass - else: - try: - m = re.search(r'ProductUserVisibleVersion\s*' - r'(.*?)', f.read()) - finally: - f.close() - if m is not None: - macrelease = '.'.join(m.group(1).split('.')[:2]) - # else: fall back to the default behaviour - - if not macver: - macver = macrelease - - if macver: - release = macver - osname = "macosx" - - if ((macrelease + '.') >= '10.4.' and - '-arch' in get_config_vars().get('CFLAGS', '').strip()): - # The universal build will build fat binaries, but not on - # systems before 10.4 - # - # Try to detect 4-way universal builds, those have machine-type - # 'universal' instead of 'fat'. - - machine = 'fat' - cflags = get_config_vars().get('CFLAGS') - - archs = re.findall('-arch\s+(\S+)', cflags) - archs = tuple(sorted(set(archs))) - - if len(archs) == 1: - machine = archs[0] - elif archs == ('i386', 'ppc'): - machine = 'fat' - elif archs == ('i386', 'x86_64'): - machine = 'intel' - elif archs == ('i386', 'ppc', 'x86_64'): - machine = 'fat3' - elif archs == ('ppc64', 'x86_64'): - machine = 'fat64' - elif archs == ('i386', 'ppc', 'ppc64', 'x86_64'): - machine = 'universal' - else: - raise ValueError( - "Don't know machine value for archs=%r" % (archs,)) - - elif machine == 'i386': - # On OSX the machine type returned by uname is always the - # 32-bit variant, even if the executable architecture is - # the 64-bit variant - if sys.maxsize >= 2**32: - machine = 'x86_64' - - elif machine in ('PowerPC', 'Power_Macintosh'): - # Pick a sane name for the PPC architecture. - # See 'i386' case - if sys.maxsize >= 2**32: - machine = 'ppc64' - else: - machine = 'ppc' - - return "%s-%s-%s" % (osname, release, machine) - - -def get_python_version(): - return _PY_VERSION_SHORT - - -def _print_dict(title, data): - for index, (key, value) in enumerate(sorted(data.items())): - if index == 0: - print('%s: ' % (title)) - print('\t%s = "%s"' % (key, value)) - - -def _main(): - """Display all information sysconfig detains.""" - print('Platform: "%s"' % get_platform()) - print('Python version: "%s"' % get_python_version()) - print('Current installation scheme: "%s"' % _get_default_scheme()) - print() - _print_dict('Paths', get_paths()) - print() - _print_dict('Variables', get_config_vars()) - - -if __name__ == '__main__': - _main() diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/tarfile.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/tarfile.py deleted file mode 100644 index d66d856..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/_backport/tarfile.py +++ /dev/null @@ -1,2607 +0,0 @@ -#------------------------------------------------------------------- -# tarfile.py -#------------------------------------------------------------------- -# Copyright (C) 2002 Lars Gustaebel -# All rights reserved. -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. -# -from __future__ import print_function - -"""Read from and write to tar format archives. -""" - -__version__ = "$Revision$" - -version = "0.9.0" -__author__ = "Lars Gust\u00e4bel (lars@gustaebel.de)" -__date__ = "$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $" -__cvsid__ = "$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $" -__credits__ = "Gustavo Niemeyer, Niels Gust\u00e4bel, Richard Townsend." - -#--------- -# Imports -#--------- -import sys -import os -import stat -import errno -import time -import struct -import copy -import re - -try: - import grp, pwd -except ImportError: - grp = pwd = None - -# os.symlink on Windows prior to 6.0 raises NotImplementedError -symlink_exception = (AttributeError, NotImplementedError) -try: - # WindowsError (1314) will be raised if the caller does not hold the - # SeCreateSymbolicLinkPrivilege privilege - symlink_exception += (WindowsError,) -except NameError: - pass - -# from tarfile import * -__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"] - -if sys.version_info[0] < 3: - import __builtin__ as builtins -else: - import builtins - -_open = builtins.open # Since 'open' is TarFile.open - -#--------------------------------------------------------- -# tar constants -#--------------------------------------------------------- -NUL = b"\0" # the null character -BLOCKSIZE = 512 # length of processing blocks -RECORDSIZE = BLOCKSIZE * 20 # length of records -GNU_MAGIC = b"ustar \0" # magic gnu tar string -POSIX_MAGIC = b"ustar\x0000" # magic posix tar string - -LENGTH_NAME = 100 # maximum length of a filename -LENGTH_LINK = 100 # maximum length of a linkname -LENGTH_PREFIX = 155 # maximum length of the prefix field - -REGTYPE = b"0" # regular file -AREGTYPE = b"\0" # regular file -LNKTYPE = b"1" # link (inside tarfile) -SYMTYPE = b"2" # symbolic link -CHRTYPE = b"3" # character special device -BLKTYPE = b"4" # block special device -DIRTYPE = b"5" # directory -FIFOTYPE = b"6" # fifo special device -CONTTYPE = b"7" # contiguous file - -GNUTYPE_LONGNAME = b"L" # GNU tar longname -GNUTYPE_LONGLINK = b"K" # GNU tar longlink -GNUTYPE_SPARSE = b"S" # GNU tar sparse file - -XHDTYPE = b"x" # POSIX.1-2001 extended header -XGLTYPE = b"g" # POSIX.1-2001 global header -SOLARIS_XHDTYPE = b"X" # Solaris extended header - -USTAR_FORMAT = 0 # POSIX.1-1988 (ustar) format -GNU_FORMAT = 1 # GNU tar format -PAX_FORMAT = 2 # POSIX.1-2001 (pax) format -DEFAULT_FORMAT = GNU_FORMAT - -#--------------------------------------------------------- -# tarfile constants -#--------------------------------------------------------- -# File types that tarfile supports: -SUPPORTED_TYPES = (REGTYPE, AREGTYPE, LNKTYPE, - SYMTYPE, DIRTYPE, FIFOTYPE, - CONTTYPE, CHRTYPE, BLKTYPE, - GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, - GNUTYPE_SPARSE) - -# File types that will be treated as a regular file. -REGULAR_TYPES = (REGTYPE, AREGTYPE, - CONTTYPE, GNUTYPE_SPARSE) - -# File types that are part of the GNU tar format. -GNU_TYPES = (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK, - GNUTYPE_SPARSE) - -# Fields from a pax header that override a TarInfo attribute. -PAX_FIELDS = ("path", "linkpath", "size", "mtime", - "uid", "gid", "uname", "gname") - -# Fields from a pax header that are affected by hdrcharset. -PAX_NAME_FIELDS = set(("path", "linkpath", "uname", "gname")) - -# Fields in a pax header that are numbers, all other fields -# are treated as strings. -PAX_NUMBER_FIELDS = { - "atime": float, - "ctime": float, - "mtime": float, - "uid": int, - "gid": int, - "size": int -} - -#--------------------------------------------------------- -# Bits used in the mode field, values in octal. -#--------------------------------------------------------- -S_IFLNK = 0o120000 # symbolic link -S_IFREG = 0o100000 # regular file -S_IFBLK = 0o060000 # block device -S_IFDIR = 0o040000 # directory -S_IFCHR = 0o020000 # character device -S_IFIFO = 0o010000 # fifo - -TSUID = 0o4000 # set UID on execution -TSGID = 0o2000 # set GID on execution -TSVTX = 0o1000 # reserved - -TUREAD = 0o400 # read by owner -TUWRITE = 0o200 # write by owner -TUEXEC = 0o100 # execute/search by owner -TGREAD = 0o040 # read by group -TGWRITE = 0o020 # write by group -TGEXEC = 0o010 # execute/search by group -TOREAD = 0o004 # read by other -TOWRITE = 0o002 # write by other -TOEXEC = 0o001 # execute/search by other - -#--------------------------------------------------------- -# initialization -#--------------------------------------------------------- -if os.name in ("nt", "ce"): - ENCODING = "utf-8" -else: - ENCODING = sys.getfilesystemencoding() - -#--------------------------------------------------------- -# Some useful functions -#--------------------------------------------------------- - -def stn(s, length, encoding, errors): - """Convert a string to a null-terminated bytes object. - """ - s = s.encode(encoding, errors) - return s[:length] + (length - len(s)) * NUL - -def nts(s, encoding, errors): - """Convert a null-terminated bytes object to a string. - """ - p = s.find(b"\0") - if p != -1: - s = s[:p] - return s.decode(encoding, errors) - -def nti(s): - """Convert a number field to a python number. - """ - # There are two possible encodings for a number field, see - # itn() below. - if s[0] != chr(0o200): - try: - n = int(nts(s, "ascii", "strict") or "0", 8) - except ValueError: - raise InvalidHeaderError("invalid header") - else: - n = 0 - for i in range(len(s) - 1): - n <<= 8 - n += ord(s[i + 1]) - return n - -def itn(n, digits=8, format=DEFAULT_FORMAT): - """Convert a python number to a number field. - """ - # POSIX 1003.1-1988 requires numbers to be encoded as a string of - # octal digits followed by a null-byte, this allows values up to - # (8**(digits-1))-1. GNU tar allows storing numbers greater than - # that if necessary. A leading 0o200 byte indicates this particular - # encoding, the following digits-1 bytes are a big-endian - # representation. This allows values up to (256**(digits-1))-1. - if 0 <= n < 8 ** (digits - 1): - s = ("%0*o" % (digits - 1, n)).encode("ascii") + NUL - else: - if format != GNU_FORMAT or n >= 256 ** (digits - 1): - raise ValueError("overflow in number field") - - if n < 0: - # XXX We mimic GNU tar's behaviour with negative numbers, - # this could raise OverflowError. - n = struct.unpack("L", struct.pack("l", n))[0] - - s = bytearray() - for i in range(digits - 1): - s.insert(0, n & 0o377) - n >>= 8 - s.insert(0, 0o200) - return s - -def calc_chksums(buf): - """Calculate the checksum for a member's header by summing up all - characters except for the chksum field which is treated as if - it was filled with spaces. According to the GNU tar sources, - some tars (Sun and NeXT) calculate chksum with signed char, - which will be different if there are chars in the buffer with - the high bit set. So we calculate two checksums, unsigned and - signed. - """ - unsigned_chksum = 256 + sum(struct.unpack("148B", buf[:148]) + struct.unpack("356B", buf[156:512])) - signed_chksum = 256 + sum(struct.unpack("148b", buf[:148]) + struct.unpack("356b", buf[156:512])) - return unsigned_chksum, signed_chksum - -def copyfileobj(src, dst, length=None): - """Copy length bytes from fileobj src to fileobj dst. - If length is None, copy the entire content. - """ - if length == 0: - return - if length is None: - while True: - buf = src.read(16*1024) - if not buf: - break - dst.write(buf) - return - - BUFSIZE = 16 * 1024 - blocks, remainder = divmod(length, BUFSIZE) - for b in range(blocks): - buf = src.read(BUFSIZE) - if len(buf) < BUFSIZE: - raise IOError("end of file reached") - dst.write(buf) - - if remainder != 0: - buf = src.read(remainder) - if len(buf) < remainder: - raise IOError("end of file reached") - dst.write(buf) - return - -filemode_table = ( - ((S_IFLNK, "l"), - (S_IFREG, "-"), - (S_IFBLK, "b"), - (S_IFDIR, "d"), - (S_IFCHR, "c"), - (S_IFIFO, "p")), - - ((TUREAD, "r"),), - ((TUWRITE, "w"),), - ((TUEXEC|TSUID, "s"), - (TSUID, "S"), - (TUEXEC, "x")), - - ((TGREAD, "r"),), - ((TGWRITE, "w"),), - ((TGEXEC|TSGID, "s"), - (TSGID, "S"), - (TGEXEC, "x")), - - ((TOREAD, "r"),), - ((TOWRITE, "w"),), - ((TOEXEC|TSVTX, "t"), - (TSVTX, "T"), - (TOEXEC, "x")) -) - -def filemode(mode): - """Convert a file's mode to a string of the form - -rwxrwxrwx. - Used by TarFile.list() - """ - perm = [] - for table in filemode_table: - for bit, char in table: - if mode & bit == bit: - perm.append(char) - break - else: - perm.append("-") - return "".join(perm) - -class TarError(Exception): - """Base exception.""" - pass -class ExtractError(TarError): - """General exception for extract errors.""" - pass -class ReadError(TarError): - """Exception for unreadable tar archives.""" - pass -class CompressionError(TarError): - """Exception for unavailable compression methods.""" - pass -class StreamError(TarError): - """Exception for unsupported operations on stream-like TarFiles.""" - pass -class HeaderError(TarError): - """Base exception for header errors.""" - pass -class EmptyHeaderError(HeaderError): - """Exception for empty headers.""" - pass -class TruncatedHeaderError(HeaderError): - """Exception for truncated headers.""" - pass -class EOFHeaderError(HeaderError): - """Exception for end of file headers.""" - pass -class InvalidHeaderError(HeaderError): - """Exception for invalid headers.""" - pass -class SubsequentHeaderError(HeaderError): - """Exception for missing and invalid extended headers.""" - pass - -#--------------------------- -# internal stream interface -#--------------------------- -class _LowLevelFile(object): - """Low-level file object. Supports reading and writing. - It is used instead of a regular file object for streaming - access. - """ - - def __init__(self, name, mode): - mode = { - "r": os.O_RDONLY, - "w": os.O_WRONLY | os.O_CREAT | os.O_TRUNC, - }[mode] - if hasattr(os, "O_BINARY"): - mode |= os.O_BINARY - self.fd = os.open(name, mode, 0o666) - - def close(self): - os.close(self.fd) - - def read(self, size): - return os.read(self.fd, size) - - def write(self, s): - os.write(self.fd, s) - -class _Stream(object): - """Class that serves as an adapter between TarFile and - a stream-like object. The stream-like object only - needs to have a read() or write() method and is accessed - blockwise. Use of gzip or bzip2 compression is possible. - A stream-like object could be for example: sys.stdin, - sys.stdout, a socket, a tape device etc. - - _Stream is intended to be used only internally. - """ - - def __init__(self, name, mode, comptype, fileobj, bufsize): - """Construct a _Stream object. - """ - self._extfileobj = True - if fileobj is None: - fileobj = _LowLevelFile(name, mode) - self._extfileobj = False - - if comptype == '*': - # Enable transparent compression detection for the - # stream interface - fileobj = _StreamProxy(fileobj) - comptype = fileobj.getcomptype() - - self.name = name or "" - self.mode = mode - self.comptype = comptype - self.fileobj = fileobj - self.bufsize = bufsize - self.buf = b"" - self.pos = 0 - self.closed = False - - try: - if comptype == "gz": - try: - import zlib - except ImportError: - raise CompressionError("zlib module is not available") - self.zlib = zlib - self.crc = zlib.crc32(b"") - if mode == "r": - self._init_read_gz() - else: - self._init_write_gz() - - if comptype == "bz2": - try: - import bz2 - except ImportError: - raise CompressionError("bz2 module is not available") - if mode == "r": - self.dbuf = b"" - self.cmp = bz2.BZ2Decompressor() - else: - self.cmp = bz2.BZ2Compressor() - except: - if not self._extfileobj: - self.fileobj.close() - self.closed = True - raise - - def __del__(self): - if hasattr(self, "closed") and not self.closed: - self.close() - - def _init_write_gz(self): - """Initialize for writing with gzip compression. - """ - self.cmp = self.zlib.compressobj(9, self.zlib.DEFLATED, - -self.zlib.MAX_WBITS, - self.zlib.DEF_MEM_LEVEL, - 0) - timestamp = struct.pack(" self.bufsize: - self.fileobj.write(self.buf[:self.bufsize]) - self.buf = self.buf[self.bufsize:] - - def close(self): - """Close the _Stream object. No operation should be - done on it afterwards. - """ - if self.closed: - return - - if self.mode == "w" and self.comptype != "tar": - self.buf += self.cmp.flush() - - if self.mode == "w" and self.buf: - self.fileobj.write(self.buf) - self.buf = b"" - if self.comptype == "gz": - # The native zlib crc is an unsigned 32-bit integer, but - # the Python wrapper implicitly casts that to a signed C - # long. So, on a 32-bit box self.crc may "look negative", - # while the same crc on a 64-bit box may "look positive". - # To avoid irksome warnings from the `struct` module, force - # it to look positive on all boxes. - self.fileobj.write(struct.pack("= 0: - blocks, remainder = divmod(pos - self.pos, self.bufsize) - for i in range(blocks): - self.read(self.bufsize) - self.read(remainder) - else: - raise StreamError("seeking backwards is not allowed") - return self.pos - - def read(self, size=None): - """Return the next size number of bytes from the stream. - If size is not defined, return all bytes of the stream - up to EOF. - """ - if size is None: - t = [] - while True: - buf = self._read(self.bufsize) - if not buf: - break - t.append(buf) - buf = "".join(t) - else: - buf = self._read(size) - self.pos += len(buf) - return buf - - def _read(self, size): - """Return size bytes from the stream. - """ - if self.comptype == "tar": - return self.__read(size) - - c = len(self.dbuf) - while c < size: - buf = self.__read(self.bufsize) - if not buf: - break - try: - buf = self.cmp.decompress(buf) - except IOError: - raise ReadError("invalid compressed data") - self.dbuf += buf - c += len(buf) - buf = self.dbuf[:size] - self.dbuf = self.dbuf[size:] - return buf - - def __read(self, size): - """Return size bytes from stream. If internal buffer is empty, - read another block from the stream. - """ - c = len(self.buf) - while c < size: - buf = self.fileobj.read(self.bufsize) - if not buf: - break - self.buf += buf - c += len(buf) - buf = self.buf[:size] - self.buf = self.buf[size:] - return buf -# class _Stream - -class _StreamProxy(object): - """Small proxy class that enables transparent compression - detection for the Stream interface (mode 'r|*'). - """ - - def __init__(self, fileobj): - self.fileobj = fileobj - self.buf = self.fileobj.read(BLOCKSIZE) - - def read(self, size): - self.read = self.fileobj.read - return self.buf - - def getcomptype(self): - if self.buf.startswith(b"\037\213\010"): - return "gz" - if self.buf.startswith(b"BZh91"): - return "bz2" - return "tar" - - def close(self): - self.fileobj.close() -# class StreamProxy - -class _BZ2Proxy(object): - """Small proxy class that enables external file object - support for "r:bz2" and "w:bz2" modes. This is actually - a workaround for a limitation in bz2 module's BZ2File - class which (unlike gzip.GzipFile) has no support for - a file object argument. - """ - - blocksize = 16 * 1024 - - def __init__(self, fileobj, mode): - self.fileobj = fileobj - self.mode = mode - self.name = getattr(self.fileobj, "name", None) - self.init() - - def init(self): - import bz2 - self.pos = 0 - if self.mode == "r": - self.bz2obj = bz2.BZ2Decompressor() - self.fileobj.seek(0) - self.buf = b"" - else: - self.bz2obj = bz2.BZ2Compressor() - - def read(self, size): - x = len(self.buf) - while x < size: - raw = self.fileobj.read(self.blocksize) - if not raw: - break - data = self.bz2obj.decompress(raw) - self.buf += data - x += len(data) - - buf = self.buf[:size] - self.buf = self.buf[size:] - self.pos += len(buf) - return buf - - def seek(self, pos): - if pos < self.pos: - self.init() - self.read(pos - self.pos) - - def tell(self): - return self.pos - - def write(self, data): - self.pos += len(data) - raw = self.bz2obj.compress(data) - self.fileobj.write(raw) - - def close(self): - if self.mode == "w": - raw = self.bz2obj.flush() - self.fileobj.write(raw) -# class _BZ2Proxy - -#------------------------ -# Extraction file object -#------------------------ -class _FileInFile(object): - """A thin wrapper around an existing file object that - provides a part of its data as an individual file - object. - """ - - def __init__(self, fileobj, offset, size, blockinfo=None): - self.fileobj = fileobj - self.offset = offset - self.size = size - self.position = 0 - - if blockinfo is None: - blockinfo = [(0, size)] - - # Construct a map with data and zero blocks. - self.map_index = 0 - self.map = [] - lastpos = 0 - realpos = self.offset - for offset, size in blockinfo: - if offset > lastpos: - self.map.append((False, lastpos, offset, None)) - self.map.append((True, offset, offset + size, realpos)) - realpos += size - lastpos = offset + size - if lastpos < self.size: - self.map.append((False, lastpos, self.size, None)) - - def seekable(self): - if not hasattr(self.fileobj, "seekable"): - # XXX gzip.GzipFile and bz2.BZ2File - return True - return self.fileobj.seekable() - - def tell(self): - """Return the current file position. - """ - return self.position - - def seek(self, position): - """Seek to a position in the file. - """ - self.position = position - - def read(self, size=None): - """Read data from the file. - """ - if size is None: - size = self.size - self.position - else: - size = min(size, self.size - self.position) - - buf = b"" - while size > 0: - while True: - data, start, stop, offset = self.map[self.map_index] - if start <= self.position < stop: - break - else: - self.map_index += 1 - if self.map_index == len(self.map): - self.map_index = 0 - length = min(size, stop - self.position) - if data: - self.fileobj.seek(offset + (self.position - start)) - buf += self.fileobj.read(length) - else: - buf += NUL * length - size -= length - self.position += length - return buf -#class _FileInFile - - -class ExFileObject(object): - """File-like object for reading an archive member. - Is returned by TarFile.extractfile(). - """ - blocksize = 1024 - - def __init__(self, tarfile, tarinfo): - self.fileobj = _FileInFile(tarfile.fileobj, - tarinfo.offset_data, - tarinfo.size, - tarinfo.sparse) - self.name = tarinfo.name - self.mode = "r" - self.closed = False - self.size = tarinfo.size - - self.position = 0 - self.buffer = b"" - - def readable(self): - return True - - def writable(self): - return False - - def seekable(self): - return self.fileobj.seekable() - - def read(self, size=None): - """Read at most size bytes from the file. If size is not - present or None, read all data until EOF is reached. - """ - if self.closed: - raise ValueError("I/O operation on closed file") - - buf = b"" - if self.buffer: - if size is None: - buf = self.buffer - self.buffer = b"" - else: - buf = self.buffer[:size] - self.buffer = self.buffer[size:] - - if size is None: - buf += self.fileobj.read() - else: - buf += self.fileobj.read(size - len(buf)) - - self.position += len(buf) - return buf - - # XXX TextIOWrapper uses the read1() method. - read1 = read - - def readline(self, size=-1): - """Read one entire line from the file. If size is present - and non-negative, return a string with at most that - size, which may be an incomplete line. - """ - if self.closed: - raise ValueError("I/O operation on closed file") - - pos = self.buffer.find(b"\n") + 1 - if pos == 0: - # no newline found. - while True: - buf = self.fileobj.read(self.blocksize) - self.buffer += buf - if not buf or b"\n" in buf: - pos = self.buffer.find(b"\n") + 1 - if pos == 0: - # no newline found. - pos = len(self.buffer) - break - - if size != -1: - pos = min(size, pos) - - buf = self.buffer[:pos] - self.buffer = self.buffer[pos:] - self.position += len(buf) - return buf - - def readlines(self): - """Return a list with all remaining lines. - """ - result = [] - while True: - line = self.readline() - if not line: break - result.append(line) - return result - - def tell(self): - """Return the current file position. - """ - if self.closed: - raise ValueError("I/O operation on closed file") - - return self.position - - def seek(self, pos, whence=os.SEEK_SET): - """Seek to a position in the file. - """ - if self.closed: - raise ValueError("I/O operation on closed file") - - if whence == os.SEEK_SET: - self.position = min(max(pos, 0), self.size) - elif whence == os.SEEK_CUR: - if pos < 0: - self.position = max(self.position + pos, 0) - else: - self.position = min(self.position + pos, self.size) - elif whence == os.SEEK_END: - self.position = max(min(self.size + pos, self.size), 0) - else: - raise ValueError("Invalid argument") - - self.buffer = b"" - self.fileobj.seek(self.position) - - def close(self): - """Close the file object. - """ - self.closed = True - - def __iter__(self): - """Get an iterator over the file's lines. - """ - while True: - line = self.readline() - if not line: - break - yield line -#class ExFileObject - -#------------------ -# Exported Classes -#------------------ -class TarInfo(object): - """Informational class which holds the details about an - archive member given by a tar header block. - TarInfo objects are returned by TarFile.getmember(), - TarFile.getmembers() and TarFile.gettarinfo() and are - usually created internally. - """ - - __slots__ = ("name", "mode", "uid", "gid", "size", "mtime", - "chksum", "type", "linkname", "uname", "gname", - "devmajor", "devminor", - "offset", "offset_data", "pax_headers", "sparse", - "tarfile", "_sparse_structs", "_link_target") - - def __init__(self, name=""): - """Construct a TarInfo object. name is the optional name - of the member. - """ - self.name = name # member name - self.mode = 0o644 # file permissions - self.uid = 0 # user id - self.gid = 0 # group id - self.size = 0 # file size - self.mtime = 0 # modification time - self.chksum = 0 # header checksum - self.type = REGTYPE # member type - self.linkname = "" # link name - self.uname = "" # user name - self.gname = "" # group name - self.devmajor = 0 # device major number - self.devminor = 0 # device minor number - - self.offset = 0 # the tar header starts here - self.offset_data = 0 # the file's data starts here - - self.sparse = None # sparse member information - self.pax_headers = {} # pax header information - - # In pax headers the "name" and "linkname" field are called - # "path" and "linkpath". - def _getpath(self): - return self.name - def _setpath(self, name): - self.name = name - path = property(_getpath, _setpath) - - def _getlinkpath(self): - return self.linkname - def _setlinkpath(self, linkname): - self.linkname = linkname - linkpath = property(_getlinkpath, _setlinkpath) - - def __repr__(self): - return "<%s %r at %#x>" % (self.__class__.__name__,self.name,id(self)) - - def get_info(self): - """Return the TarInfo's attributes as a dictionary. - """ - info = { - "name": self.name, - "mode": self.mode & 0o7777, - "uid": self.uid, - "gid": self.gid, - "size": self.size, - "mtime": self.mtime, - "chksum": self.chksum, - "type": self.type, - "linkname": self.linkname, - "uname": self.uname, - "gname": self.gname, - "devmajor": self.devmajor, - "devminor": self.devminor - } - - if info["type"] == DIRTYPE and not info["name"].endswith("/"): - info["name"] += "/" - - return info - - def tobuf(self, format=DEFAULT_FORMAT, encoding=ENCODING, errors="surrogateescape"): - """Return a tar header as a string of 512 byte blocks. - """ - info = self.get_info() - - if format == USTAR_FORMAT: - return self.create_ustar_header(info, encoding, errors) - elif format == GNU_FORMAT: - return self.create_gnu_header(info, encoding, errors) - elif format == PAX_FORMAT: - return self.create_pax_header(info, encoding) - else: - raise ValueError("invalid format") - - def create_ustar_header(self, info, encoding, errors): - """Return the object as a ustar header block. - """ - info["magic"] = POSIX_MAGIC - - if len(info["linkname"]) > LENGTH_LINK: - raise ValueError("linkname is too long") - - if len(info["name"]) > LENGTH_NAME: - info["prefix"], info["name"] = self._posix_split_name(info["name"]) - - return self._create_header(info, USTAR_FORMAT, encoding, errors) - - def create_gnu_header(self, info, encoding, errors): - """Return the object as a GNU header block sequence. - """ - info["magic"] = GNU_MAGIC - - buf = b"" - if len(info["linkname"]) > LENGTH_LINK: - buf += self._create_gnu_long_header(info["linkname"], GNUTYPE_LONGLINK, encoding, errors) - - if len(info["name"]) > LENGTH_NAME: - buf += self._create_gnu_long_header(info["name"], GNUTYPE_LONGNAME, encoding, errors) - - return buf + self._create_header(info, GNU_FORMAT, encoding, errors) - - def create_pax_header(self, info, encoding): - """Return the object as a ustar header block. If it cannot be - represented this way, prepend a pax extended header sequence - with supplement information. - """ - info["magic"] = POSIX_MAGIC - pax_headers = self.pax_headers.copy() - - # Test string fields for values that exceed the field length or cannot - # be represented in ASCII encoding. - for name, hname, length in ( - ("name", "path", LENGTH_NAME), ("linkname", "linkpath", LENGTH_LINK), - ("uname", "uname", 32), ("gname", "gname", 32)): - - if hname in pax_headers: - # The pax header has priority. - continue - - # Try to encode the string as ASCII. - try: - info[name].encode("ascii", "strict") - except UnicodeEncodeError: - pax_headers[hname] = info[name] - continue - - if len(info[name]) > length: - pax_headers[hname] = info[name] - - # Test number fields for values that exceed the field limit or values - # that like to be stored as float. - for name, digits in (("uid", 8), ("gid", 8), ("size", 12), ("mtime", 12)): - if name in pax_headers: - # The pax header has priority. Avoid overflow. - info[name] = 0 - continue - - val = info[name] - if not 0 <= val < 8 ** (digits - 1) or isinstance(val, float): - pax_headers[name] = str(val) - info[name] = 0 - - # Create a pax extended header if necessary. - if pax_headers: - buf = self._create_pax_generic_header(pax_headers, XHDTYPE, encoding) - else: - buf = b"" - - return buf + self._create_header(info, USTAR_FORMAT, "ascii", "replace") - - @classmethod - def create_pax_global_header(cls, pax_headers): - """Return the object as a pax global header block sequence. - """ - return cls._create_pax_generic_header(pax_headers, XGLTYPE, "utf8") - - def _posix_split_name(self, name): - """Split a name longer than 100 chars into a prefix - and a name part. - """ - prefix = name[:LENGTH_PREFIX + 1] - while prefix and prefix[-1] != "/": - prefix = prefix[:-1] - - name = name[len(prefix):] - prefix = prefix[:-1] - - if not prefix or len(name) > LENGTH_NAME: - raise ValueError("name is too long") - return prefix, name - - @staticmethod - def _create_header(info, format, encoding, errors): - """Return a header block. info is a dictionary with file - information, format must be one of the *_FORMAT constants. - """ - parts = [ - stn(info.get("name", ""), 100, encoding, errors), - itn(info.get("mode", 0) & 0o7777, 8, format), - itn(info.get("uid", 0), 8, format), - itn(info.get("gid", 0), 8, format), - itn(info.get("size", 0), 12, format), - itn(info.get("mtime", 0), 12, format), - b" ", # checksum field - info.get("type", REGTYPE), - stn(info.get("linkname", ""), 100, encoding, errors), - info.get("magic", POSIX_MAGIC), - stn(info.get("uname", ""), 32, encoding, errors), - stn(info.get("gname", ""), 32, encoding, errors), - itn(info.get("devmajor", 0), 8, format), - itn(info.get("devminor", 0), 8, format), - stn(info.get("prefix", ""), 155, encoding, errors) - ] - - buf = struct.pack("%ds" % BLOCKSIZE, b"".join(parts)) - chksum = calc_chksums(buf[-BLOCKSIZE:])[0] - buf = buf[:-364] + ("%06o\0" % chksum).encode("ascii") + buf[-357:] - return buf - - @staticmethod - def _create_payload(payload): - """Return the string payload filled with zero bytes - up to the next 512 byte border. - """ - blocks, remainder = divmod(len(payload), BLOCKSIZE) - if remainder > 0: - payload += (BLOCKSIZE - remainder) * NUL - return payload - - @classmethod - def _create_gnu_long_header(cls, name, type, encoding, errors): - """Return a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence - for name. - """ - name = name.encode(encoding, errors) + NUL - - info = {} - info["name"] = "././@LongLink" - info["type"] = type - info["size"] = len(name) - info["magic"] = GNU_MAGIC - - # create extended header + name blocks. - return cls._create_header(info, USTAR_FORMAT, encoding, errors) + \ - cls._create_payload(name) - - @classmethod - def _create_pax_generic_header(cls, pax_headers, type, encoding): - """Return a POSIX.1-2008 extended or global header sequence - that contains a list of keyword, value pairs. The values - must be strings. - """ - # Check if one of the fields contains surrogate characters and thereby - # forces hdrcharset=BINARY, see _proc_pax() for more information. - binary = False - for keyword, value in pax_headers.items(): - try: - value.encode("utf8", "strict") - except UnicodeEncodeError: - binary = True - break - - records = b"" - if binary: - # Put the hdrcharset field at the beginning of the header. - records += b"21 hdrcharset=BINARY\n" - - for keyword, value in pax_headers.items(): - keyword = keyword.encode("utf8") - if binary: - # Try to restore the original byte representation of `value'. - # Needless to say, that the encoding must match the string. - value = value.encode(encoding, "surrogateescape") - else: - value = value.encode("utf8") - - l = len(keyword) + len(value) + 3 # ' ' + '=' + '\n' - n = p = 0 - while True: - n = l + len(str(p)) - if n == p: - break - p = n - records += bytes(str(p), "ascii") + b" " + keyword + b"=" + value + b"\n" - - # We use a hardcoded "././@PaxHeader" name like star does - # instead of the one that POSIX recommends. - info = {} - info["name"] = "././@PaxHeader" - info["type"] = type - info["size"] = len(records) - info["magic"] = POSIX_MAGIC - - # Create pax header + record blocks. - return cls._create_header(info, USTAR_FORMAT, "ascii", "replace") + \ - cls._create_payload(records) - - @classmethod - def frombuf(cls, buf, encoding, errors): - """Construct a TarInfo object from a 512 byte bytes object. - """ - if len(buf) == 0: - raise EmptyHeaderError("empty header") - if len(buf) != BLOCKSIZE: - raise TruncatedHeaderError("truncated header") - if buf.count(NUL) == BLOCKSIZE: - raise EOFHeaderError("end of file header") - - chksum = nti(buf[148:156]) - if chksum not in calc_chksums(buf): - raise InvalidHeaderError("bad checksum") - - obj = cls() - obj.name = nts(buf[0:100], encoding, errors) - obj.mode = nti(buf[100:108]) - obj.uid = nti(buf[108:116]) - obj.gid = nti(buf[116:124]) - obj.size = nti(buf[124:136]) - obj.mtime = nti(buf[136:148]) - obj.chksum = chksum - obj.type = buf[156:157] - obj.linkname = nts(buf[157:257], encoding, errors) - obj.uname = nts(buf[265:297], encoding, errors) - obj.gname = nts(buf[297:329], encoding, errors) - obj.devmajor = nti(buf[329:337]) - obj.devminor = nti(buf[337:345]) - prefix = nts(buf[345:500], encoding, errors) - - # Old V7 tar format represents a directory as a regular - # file with a trailing slash. - if obj.type == AREGTYPE and obj.name.endswith("/"): - obj.type = DIRTYPE - - # The old GNU sparse format occupies some of the unused - # space in the buffer for up to 4 sparse structures. - # Save the them for later processing in _proc_sparse(). - if obj.type == GNUTYPE_SPARSE: - pos = 386 - structs = [] - for i in range(4): - try: - offset = nti(buf[pos:pos + 12]) - numbytes = nti(buf[pos + 12:pos + 24]) - except ValueError: - break - structs.append((offset, numbytes)) - pos += 24 - isextended = bool(buf[482]) - origsize = nti(buf[483:495]) - obj._sparse_structs = (structs, isextended, origsize) - - # Remove redundant slashes from directories. - if obj.isdir(): - obj.name = obj.name.rstrip("/") - - # Reconstruct a ustar longname. - if prefix and obj.type not in GNU_TYPES: - obj.name = prefix + "/" + obj.name - return obj - - @classmethod - def fromtarfile(cls, tarfile): - """Return the next TarInfo object from TarFile object - tarfile. - """ - buf = tarfile.fileobj.read(BLOCKSIZE) - obj = cls.frombuf(buf, tarfile.encoding, tarfile.errors) - obj.offset = tarfile.fileobj.tell() - BLOCKSIZE - return obj._proc_member(tarfile) - - #-------------------------------------------------------------------------- - # The following are methods that are called depending on the type of a - # member. The entry point is _proc_member() which can be overridden in a - # subclass to add custom _proc_*() methods. A _proc_*() method MUST - # implement the following - # operations: - # 1. Set self.offset_data to the position where the data blocks begin, - # if there is data that follows. - # 2. Set tarfile.offset to the position where the next member's header will - # begin. - # 3. Return self or another valid TarInfo object. - def _proc_member(self, tarfile): - """Choose the right processing method depending on - the type and call it. - """ - if self.type in (GNUTYPE_LONGNAME, GNUTYPE_LONGLINK): - return self._proc_gnulong(tarfile) - elif self.type == GNUTYPE_SPARSE: - return self._proc_sparse(tarfile) - elif self.type in (XHDTYPE, XGLTYPE, SOLARIS_XHDTYPE): - return self._proc_pax(tarfile) - else: - return self._proc_builtin(tarfile) - - def _proc_builtin(self, tarfile): - """Process a builtin type or an unknown type which - will be treated as a regular file. - """ - self.offset_data = tarfile.fileobj.tell() - offset = self.offset_data - if self.isreg() or self.type not in SUPPORTED_TYPES: - # Skip the following data blocks. - offset += self._block(self.size) - tarfile.offset = offset - - # Patch the TarInfo object with saved global - # header information. - self._apply_pax_info(tarfile.pax_headers, tarfile.encoding, tarfile.errors) - - return self - - def _proc_gnulong(self, tarfile): - """Process the blocks that hold a GNU longname - or longlink member. - """ - buf = tarfile.fileobj.read(self._block(self.size)) - - # Fetch the next header and process it. - try: - next = self.fromtarfile(tarfile) - except HeaderError: - raise SubsequentHeaderError("missing or bad subsequent header") - - # Patch the TarInfo object from the next header with - # the longname information. - next.offset = self.offset - if self.type == GNUTYPE_LONGNAME: - next.name = nts(buf, tarfile.encoding, tarfile.errors) - elif self.type == GNUTYPE_LONGLINK: - next.linkname = nts(buf, tarfile.encoding, tarfile.errors) - - return next - - def _proc_sparse(self, tarfile): - """Process a GNU sparse header plus extra headers. - """ - # We already collected some sparse structures in frombuf(). - structs, isextended, origsize = self._sparse_structs - del self._sparse_structs - - # Collect sparse structures from extended header blocks. - while isextended: - buf = tarfile.fileobj.read(BLOCKSIZE) - pos = 0 - for i in range(21): - try: - offset = nti(buf[pos:pos + 12]) - numbytes = nti(buf[pos + 12:pos + 24]) - except ValueError: - break - if offset and numbytes: - structs.append((offset, numbytes)) - pos += 24 - isextended = bool(buf[504]) - self.sparse = structs - - self.offset_data = tarfile.fileobj.tell() - tarfile.offset = self.offset_data + self._block(self.size) - self.size = origsize - return self - - def _proc_pax(self, tarfile): - """Process an extended or global header as described in - POSIX.1-2008. - """ - # Read the header information. - buf = tarfile.fileobj.read(self._block(self.size)) - - # A pax header stores supplemental information for either - # the following file (extended) or all following files - # (global). - if self.type == XGLTYPE: - pax_headers = tarfile.pax_headers - else: - pax_headers = tarfile.pax_headers.copy() - - # Check if the pax header contains a hdrcharset field. This tells us - # the encoding of the path, linkpath, uname and gname fields. Normally, - # these fields are UTF-8 encoded but since POSIX.1-2008 tar - # implementations are allowed to store them as raw binary strings if - # the translation to UTF-8 fails. - match = re.search(br"\d+ hdrcharset=([^\n]+)\n", buf) - if match is not None: - pax_headers["hdrcharset"] = match.group(1).decode("utf8") - - # For the time being, we don't care about anything other than "BINARY". - # The only other value that is currently allowed by the standard is - # "ISO-IR 10646 2000 UTF-8" in other words UTF-8. - hdrcharset = pax_headers.get("hdrcharset") - if hdrcharset == "BINARY": - encoding = tarfile.encoding - else: - encoding = "utf8" - - # Parse pax header information. A record looks like that: - # "%d %s=%s\n" % (length, keyword, value). length is the size - # of the complete record including the length field itself and - # the newline. keyword and value are both UTF-8 encoded strings. - regex = re.compile(br"(\d+) ([^=]+)=") - pos = 0 - while True: - match = regex.match(buf, pos) - if not match: - break - - length, keyword = match.groups() - length = int(length) - value = buf[match.end(2) + 1:match.start(1) + length - 1] - - # Normally, we could just use "utf8" as the encoding and "strict" - # as the error handler, but we better not take the risk. For - # example, GNU tar <= 1.23 is known to store filenames it cannot - # translate to UTF-8 as raw strings (unfortunately without a - # hdrcharset=BINARY header). - # We first try the strict standard encoding, and if that fails we - # fall back on the user's encoding and error handler. - keyword = self._decode_pax_field(keyword, "utf8", "utf8", - tarfile.errors) - if keyword in PAX_NAME_FIELDS: - value = self._decode_pax_field(value, encoding, tarfile.encoding, - tarfile.errors) - else: - value = self._decode_pax_field(value, "utf8", "utf8", - tarfile.errors) - - pax_headers[keyword] = value - pos += length - - # Fetch the next header. - try: - next = self.fromtarfile(tarfile) - except HeaderError: - raise SubsequentHeaderError("missing or bad subsequent header") - - # Process GNU sparse information. - if "GNU.sparse.map" in pax_headers: - # GNU extended sparse format version 0.1. - self._proc_gnusparse_01(next, pax_headers) - - elif "GNU.sparse.size" in pax_headers: - # GNU extended sparse format version 0.0. - self._proc_gnusparse_00(next, pax_headers, buf) - - elif pax_headers.get("GNU.sparse.major") == "1" and pax_headers.get("GNU.sparse.minor") == "0": - # GNU extended sparse format version 1.0. - self._proc_gnusparse_10(next, pax_headers, tarfile) - - if self.type in (XHDTYPE, SOLARIS_XHDTYPE): - # Patch the TarInfo object with the extended header info. - next._apply_pax_info(pax_headers, tarfile.encoding, tarfile.errors) - next.offset = self.offset - - if "size" in pax_headers: - # If the extended header replaces the size field, - # we need to recalculate the offset where the next - # header starts. - offset = next.offset_data - if next.isreg() or next.type not in SUPPORTED_TYPES: - offset += next._block(next.size) - tarfile.offset = offset - - return next - - def _proc_gnusparse_00(self, next, pax_headers, buf): - """Process a GNU tar extended sparse header, version 0.0. - """ - offsets = [] - for match in re.finditer(br"\d+ GNU.sparse.offset=(\d+)\n", buf): - offsets.append(int(match.group(1))) - numbytes = [] - for match in re.finditer(br"\d+ GNU.sparse.numbytes=(\d+)\n", buf): - numbytes.append(int(match.group(1))) - next.sparse = list(zip(offsets, numbytes)) - - def _proc_gnusparse_01(self, next, pax_headers): - """Process a GNU tar extended sparse header, version 0.1. - """ - sparse = [int(x) for x in pax_headers["GNU.sparse.map"].split(",")] - next.sparse = list(zip(sparse[::2], sparse[1::2])) - - def _proc_gnusparse_10(self, next, pax_headers, tarfile): - """Process a GNU tar extended sparse header, version 1.0. - """ - fields = None - sparse = [] - buf = tarfile.fileobj.read(BLOCKSIZE) - fields, buf = buf.split(b"\n", 1) - fields = int(fields) - while len(sparse) < fields * 2: - if b"\n" not in buf: - buf += tarfile.fileobj.read(BLOCKSIZE) - number, buf = buf.split(b"\n", 1) - sparse.append(int(number)) - next.offset_data = tarfile.fileobj.tell() - next.sparse = list(zip(sparse[::2], sparse[1::2])) - - def _apply_pax_info(self, pax_headers, encoding, errors): - """Replace fields with supplemental information from a previous - pax extended or global header. - """ - for keyword, value in pax_headers.items(): - if keyword == "GNU.sparse.name": - setattr(self, "path", value) - elif keyword == "GNU.sparse.size": - setattr(self, "size", int(value)) - elif keyword == "GNU.sparse.realsize": - setattr(self, "size", int(value)) - elif keyword in PAX_FIELDS: - if keyword in PAX_NUMBER_FIELDS: - try: - value = PAX_NUMBER_FIELDS[keyword](value) - except ValueError: - value = 0 - if keyword == "path": - value = value.rstrip("/") - setattr(self, keyword, value) - - self.pax_headers = pax_headers.copy() - - def _decode_pax_field(self, value, encoding, fallback_encoding, fallback_errors): - """Decode a single field from a pax record. - """ - try: - return value.decode(encoding, "strict") - except UnicodeDecodeError: - return value.decode(fallback_encoding, fallback_errors) - - def _block(self, count): - """Round up a byte count by BLOCKSIZE and return it, - e.g. _block(834) => 1024. - """ - blocks, remainder = divmod(count, BLOCKSIZE) - if remainder: - blocks += 1 - return blocks * BLOCKSIZE - - def isreg(self): - return self.type in REGULAR_TYPES - def isfile(self): - return self.isreg() - def isdir(self): - return self.type == DIRTYPE - def issym(self): - return self.type == SYMTYPE - def islnk(self): - return self.type == LNKTYPE - def ischr(self): - return self.type == CHRTYPE - def isblk(self): - return self.type == BLKTYPE - def isfifo(self): - return self.type == FIFOTYPE - def issparse(self): - return self.sparse is not None - def isdev(self): - return self.type in (CHRTYPE, BLKTYPE, FIFOTYPE) -# class TarInfo - -class TarFile(object): - """The TarFile Class provides an interface to tar archives. - """ - - debug = 0 # May be set from 0 (no msgs) to 3 (all msgs) - - dereference = False # If true, add content of linked file to the - # tar file, else the link. - - ignore_zeros = False # If true, skips empty or invalid blocks and - # continues processing. - - errorlevel = 1 # If 0, fatal errors only appear in debug - # messages (if debug >= 0). If > 0, errors - # are passed to the caller as exceptions. - - format = DEFAULT_FORMAT # The format to use when creating an archive. - - encoding = ENCODING # Encoding for 8-bit character strings. - - errors = None # Error handler for unicode conversion. - - tarinfo = TarInfo # The default TarInfo class to use. - - fileobject = ExFileObject # The default ExFileObject class to use. - - def __init__(self, name=None, mode="r", fileobj=None, format=None, - tarinfo=None, dereference=None, ignore_zeros=None, encoding=None, - errors="surrogateescape", pax_headers=None, debug=None, errorlevel=None): - """Open an (uncompressed) tar archive `name'. `mode' is either 'r' to - read from an existing archive, 'a' to append data to an existing - file or 'w' to create a new file overwriting an existing one. `mode' - defaults to 'r'. - If `fileobj' is given, it is used for reading or writing data. If it - can be determined, `mode' is overridden by `fileobj's mode. - `fileobj' is not closed, when TarFile is closed. - """ - if len(mode) > 1 or mode not in "raw": - raise ValueError("mode must be 'r', 'a' or 'w'") - self.mode = mode - self._mode = {"r": "rb", "a": "r+b", "w": "wb"}[mode] - - if not fileobj: - if self.mode == "a" and not os.path.exists(name): - # Create nonexistent files in append mode. - self.mode = "w" - self._mode = "wb" - fileobj = bltn_open(name, self._mode) - self._extfileobj = False - else: - if name is None and hasattr(fileobj, "name"): - name = fileobj.name - if hasattr(fileobj, "mode"): - self._mode = fileobj.mode - self._extfileobj = True - self.name = os.path.abspath(name) if name else None - self.fileobj = fileobj - - # Init attributes. - if format is not None: - self.format = format - if tarinfo is not None: - self.tarinfo = tarinfo - if dereference is not None: - self.dereference = dereference - if ignore_zeros is not None: - self.ignore_zeros = ignore_zeros - if encoding is not None: - self.encoding = encoding - self.errors = errors - - if pax_headers is not None and self.format == PAX_FORMAT: - self.pax_headers = pax_headers - else: - self.pax_headers = {} - - if debug is not None: - self.debug = debug - if errorlevel is not None: - self.errorlevel = errorlevel - - # Init datastructures. - self.closed = False - self.members = [] # list of members as TarInfo objects - self._loaded = False # flag if all members have been read - self.offset = self.fileobj.tell() - # current position in the archive file - self.inodes = {} # dictionary caching the inodes of - # archive members already added - - try: - if self.mode == "r": - self.firstmember = None - self.firstmember = self.next() - - if self.mode == "a": - # Move to the end of the archive, - # before the first empty block. - while True: - self.fileobj.seek(self.offset) - try: - tarinfo = self.tarinfo.fromtarfile(self) - self.members.append(tarinfo) - except EOFHeaderError: - self.fileobj.seek(self.offset) - break - except HeaderError as e: - raise ReadError(str(e)) - - if self.mode in "aw": - self._loaded = True - - if self.pax_headers: - buf = self.tarinfo.create_pax_global_header(self.pax_headers.copy()) - self.fileobj.write(buf) - self.offset += len(buf) - except: - if not self._extfileobj: - self.fileobj.close() - self.closed = True - raise - - #-------------------------------------------------------------------------- - # Below are the classmethods which act as alternate constructors to the - # TarFile class. The open() method is the only one that is needed for - # public use; it is the "super"-constructor and is able to select an - # adequate "sub"-constructor for a particular compression using the mapping - # from OPEN_METH. - # - # This concept allows one to subclass TarFile without losing the comfort of - # the super-constructor. A sub-constructor is registered and made available - # by adding it to the mapping in OPEN_METH. - - @classmethod - def open(cls, name=None, mode="r", fileobj=None, bufsize=RECORDSIZE, **kwargs): - """Open a tar archive for reading, writing or appending. Return - an appropriate TarFile class. - - mode: - 'r' or 'r:*' open for reading with transparent compression - 'r:' open for reading exclusively uncompressed - 'r:gz' open for reading with gzip compression - 'r:bz2' open for reading with bzip2 compression - 'a' or 'a:' open for appending, creating the file if necessary - 'w' or 'w:' open for writing without compression - 'w:gz' open for writing with gzip compression - 'w:bz2' open for writing with bzip2 compression - - 'r|*' open a stream of tar blocks with transparent compression - 'r|' open an uncompressed stream of tar blocks for reading - 'r|gz' open a gzip compressed stream of tar blocks - 'r|bz2' open a bzip2 compressed stream of tar blocks - 'w|' open an uncompressed stream for writing - 'w|gz' open a gzip compressed stream for writing - 'w|bz2' open a bzip2 compressed stream for writing - """ - - if not name and not fileobj: - raise ValueError("nothing to open") - - if mode in ("r", "r:*"): - # Find out which *open() is appropriate for opening the file. - for comptype in cls.OPEN_METH: - func = getattr(cls, cls.OPEN_METH[comptype]) - if fileobj is not None: - saved_pos = fileobj.tell() - try: - return func(name, "r", fileobj, **kwargs) - except (ReadError, CompressionError) as e: - if fileobj is not None: - fileobj.seek(saved_pos) - continue - raise ReadError("file could not be opened successfully") - - elif ":" in mode: - filemode, comptype = mode.split(":", 1) - filemode = filemode or "r" - comptype = comptype or "tar" - - # Select the *open() function according to - # given compression. - if comptype in cls.OPEN_METH: - func = getattr(cls, cls.OPEN_METH[comptype]) - else: - raise CompressionError("unknown compression type %r" % comptype) - return func(name, filemode, fileobj, **kwargs) - - elif "|" in mode: - filemode, comptype = mode.split("|", 1) - filemode = filemode or "r" - comptype = comptype or "tar" - - if filemode not in "rw": - raise ValueError("mode must be 'r' or 'w'") - - stream = _Stream(name, filemode, comptype, fileobj, bufsize) - try: - t = cls(name, filemode, stream, **kwargs) - except: - stream.close() - raise - t._extfileobj = False - return t - - elif mode in "aw": - return cls.taropen(name, mode, fileobj, **kwargs) - - raise ValueError("undiscernible mode") - - @classmethod - def taropen(cls, name, mode="r", fileobj=None, **kwargs): - """Open uncompressed tar archive name for reading or writing. - """ - if len(mode) > 1 or mode not in "raw": - raise ValueError("mode must be 'r', 'a' or 'w'") - return cls(name, mode, fileobj, **kwargs) - - @classmethod - def gzopen(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): - """Open gzip compressed tar archive name for reading or writing. - Appending is not allowed. - """ - if len(mode) > 1 or mode not in "rw": - raise ValueError("mode must be 'r' or 'w'") - - try: - import gzip - gzip.GzipFile - except (ImportError, AttributeError): - raise CompressionError("gzip module is not available") - - extfileobj = fileobj is not None - try: - fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj) - t = cls.taropen(name, mode, fileobj, **kwargs) - except IOError: - if not extfileobj and fileobj is not None: - fileobj.close() - if fileobj is None: - raise - raise ReadError("not a gzip file") - except: - if not extfileobj and fileobj is not None: - fileobj.close() - raise - t._extfileobj = extfileobj - return t - - @classmethod - def bz2open(cls, name, mode="r", fileobj=None, compresslevel=9, **kwargs): - """Open bzip2 compressed tar archive name for reading or writing. - Appending is not allowed. - """ - if len(mode) > 1 or mode not in "rw": - raise ValueError("mode must be 'r' or 'w'.") - - try: - import bz2 - except ImportError: - raise CompressionError("bz2 module is not available") - - if fileobj is not None: - fileobj = _BZ2Proxy(fileobj, mode) - else: - fileobj = bz2.BZ2File(name, mode, compresslevel=compresslevel) - - try: - t = cls.taropen(name, mode, fileobj, **kwargs) - except (IOError, EOFError): - fileobj.close() - raise ReadError("not a bzip2 file") - t._extfileobj = False - return t - - # All *open() methods are registered here. - OPEN_METH = { - "tar": "taropen", # uncompressed tar - "gz": "gzopen", # gzip compressed tar - "bz2": "bz2open" # bzip2 compressed tar - } - - #-------------------------------------------------------------------------- - # The public methods which TarFile provides: - - def close(self): - """Close the TarFile. In write-mode, two finishing zero blocks are - appended to the archive. - """ - if self.closed: - return - - if self.mode in "aw": - self.fileobj.write(NUL * (BLOCKSIZE * 2)) - self.offset += (BLOCKSIZE * 2) - # fill up the end with zero-blocks - # (like option -b20 for tar does) - blocks, remainder = divmod(self.offset, RECORDSIZE) - if remainder > 0: - self.fileobj.write(NUL * (RECORDSIZE - remainder)) - - if not self._extfileobj: - self.fileobj.close() - self.closed = True - - def getmember(self, name): - """Return a TarInfo object for member `name'. If `name' can not be - found in the archive, KeyError is raised. If a member occurs more - than once in the archive, its last occurrence is assumed to be the - most up-to-date version. - """ - tarinfo = self._getmember(name) - if tarinfo is None: - raise KeyError("filename %r not found" % name) - return tarinfo - - def getmembers(self): - """Return the members of the archive as a list of TarInfo objects. The - list has the same order as the members in the archive. - """ - self._check() - if not self._loaded: # if we want to obtain a list of - self._load() # all members, we first have to - # scan the whole archive. - return self.members - - def getnames(self): - """Return the members of the archive as a list of their names. It has - the same order as the list returned by getmembers(). - """ - return [tarinfo.name for tarinfo in self.getmembers()] - - def gettarinfo(self, name=None, arcname=None, fileobj=None): - """Create a TarInfo object for either the file `name' or the file - object `fileobj' (using os.fstat on its file descriptor). You can - modify some of the TarInfo's attributes before you add it using - addfile(). If given, `arcname' specifies an alternative name for the - file in the archive. - """ - self._check("aw") - - # When fileobj is given, replace name by - # fileobj's real name. - if fileobj is not None: - name = fileobj.name - - # Building the name of the member in the archive. - # Backward slashes are converted to forward slashes, - # Absolute paths are turned to relative paths. - if arcname is None: - arcname = name - drv, arcname = os.path.splitdrive(arcname) - arcname = arcname.replace(os.sep, "/") - arcname = arcname.lstrip("/") - - # Now, fill the TarInfo object with - # information specific for the file. - tarinfo = self.tarinfo() - tarinfo.tarfile = self - - # Use os.stat or os.lstat, depending on platform - # and if symlinks shall be resolved. - if fileobj is None: - if hasattr(os, "lstat") and not self.dereference: - statres = os.lstat(name) - else: - statres = os.stat(name) - else: - statres = os.fstat(fileobj.fileno()) - linkname = "" - - stmd = statres.st_mode - if stat.S_ISREG(stmd): - inode = (statres.st_ino, statres.st_dev) - if not self.dereference and statres.st_nlink > 1 and \ - inode in self.inodes and arcname != self.inodes[inode]: - # Is it a hardlink to an already - # archived file? - type = LNKTYPE - linkname = self.inodes[inode] - else: - # The inode is added only if its valid. - # For win32 it is always 0. - type = REGTYPE - if inode[0]: - self.inodes[inode] = arcname - elif stat.S_ISDIR(stmd): - type = DIRTYPE - elif stat.S_ISFIFO(stmd): - type = FIFOTYPE - elif stat.S_ISLNK(stmd): - type = SYMTYPE - linkname = os.readlink(name) - elif stat.S_ISCHR(stmd): - type = CHRTYPE - elif stat.S_ISBLK(stmd): - type = BLKTYPE - else: - return None - - # Fill the TarInfo object with all - # information we can get. - tarinfo.name = arcname - tarinfo.mode = stmd - tarinfo.uid = statres.st_uid - tarinfo.gid = statres.st_gid - if type == REGTYPE: - tarinfo.size = statres.st_size - else: - tarinfo.size = 0 - tarinfo.mtime = statres.st_mtime - tarinfo.type = type - tarinfo.linkname = linkname - if pwd: - try: - tarinfo.uname = pwd.getpwuid(tarinfo.uid)[0] - except KeyError: - pass - if grp: - try: - tarinfo.gname = grp.getgrgid(tarinfo.gid)[0] - except KeyError: - pass - - if type in (CHRTYPE, BLKTYPE): - if hasattr(os, "major") and hasattr(os, "minor"): - tarinfo.devmajor = os.major(statres.st_rdev) - tarinfo.devminor = os.minor(statres.st_rdev) - return tarinfo - - def list(self, verbose=True): - """Print a table of contents to sys.stdout. If `verbose' is False, only - the names of the members are printed. If it is True, an `ls -l'-like - output is produced. - """ - self._check() - - for tarinfo in self: - if verbose: - print(filemode(tarinfo.mode), end=' ') - print("%s/%s" % (tarinfo.uname or tarinfo.uid, - tarinfo.gname or tarinfo.gid), end=' ') - if tarinfo.ischr() or tarinfo.isblk(): - print("%10s" % ("%d,%d" \ - % (tarinfo.devmajor, tarinfo.devminor)), end=' ') - else: - print("%10d" % tarinfo.size, end=' ') - print("%d-%02d-%02d %02d:%02d:%02d" \ - % time.localtime(tarinfo.mtime)[:6], end=' ') - - print(tarinfo.name + ("/" if tarinfo.isdir() else ""), end=' ') - - if verbose: - if tarinfo.issym(): - print("->", tarinfo.linkname, end=' ') - if tarinfo.islnk(): - print("link to", tarinfo.linkname, end=' ') - print() - - def add(self, name, arcname=None, recursive=True, exclude=None, filter=None): - """Add the file `name' to the archive. `name' may be any type of file - (directory, fifo, symbolic link, etc.). If given, `arcname' - specifies an alternative name for the file in the archive. - Directories are added recursively by default. This can be avoided by - setting `recursive' to False. `exclude' is a function that should - return True for each filename to be excluded. `filter' is a function - that expects a TarInfo object argument and returns the changed - TarInfo object, if it returns None the TarInfo object will be - excluded from the archive. - """ - self._check("aw") - - if arcname is None: - arcname = name - - # Exclude pathnames. - if exclude is not None: - import warnings - warnings.warn("use the filter argument instead", - DeprecationWarning, 2) - if exclude(name): - self._dbg(2, "tarfile: Excluded %r" % name) - return - - # Skip if somebody tries to archive the archive... - if self.name is not None and os.path.abspath(name) == self.name: - self._dbg(2, "tarfile: Skipped %r" % name) - return - - self._dbg(1, name) - - # Create a TarInfo object from the file. - tarinfo = self.gettarinfo(name, arcname) - - if tarinfo is None: - self._dbg(1, "tarfile: Unsupported type %r" % name) - return - - # Change or exclude the TarInfo object. - if filter is not None: - tarinfo = filter(tarinfo) - if tarinfo is None: - self._dbg(2, "tarfile: Excluded %r" % name) - return - - # Append the tar header and data to the archive. - if tarinfo.isreg(): - f = bltn_open(name, "rb") - self.addfile(tarinfo, f) - f.close() - - elif tarinfo.isdir(): - self.addfile(tarinfo) - if recursive: - for f in os.listdir(name): - self.add(os.path.join(name, f), os.path.join(arcname, f), - recursive, exclude, filter=filter) - - else: - self.addfile(tarinfo) - - def addfile(self, tarinfo, fileobj=None): - """Add the TarInfo object `tarinfo' to the archive. If `fileobj' is - given, tarinfo.size bytes are read from it and added to the archive. - You can create TarInfo objects using gettarinfo(). - On Windows platforms, `fileobj' should always be opened with mode - 'rb' to avoid irritation about the file size. - """ - self._check("aw") - - tarinfo = copy.copy(tarinfo) - - buf = tarinfo.tobuf(self.format, self.encoding, self.errors) - self.fileobj.write(buf) - self.offset += len(buf) - - # If there's data to follow, append it. - if fileobj is not None: - copyfileobj(fileobj, self.fileobj, tarinfo.size) - blocks, remainder = divmod(tarinfo.size, BLOCKSIZE) - if remainder > 0: - self.fileobj.write(NUL * (BLOCKSIZE - remainder)) - blocks += 1 - self.offset += blocks * BLOCKSIZE - - self.members.append(tarinfo) - - def extractall(self, path=".", members=None): - """Extract all members from the archive to the current working - directory and set owner, modification time and permissions on - directories afterwards. `path' specifies a different directory - to extract to. `members' is optional and must be a subset of the - list returned by getmembers(). - """ - directories = [] - - if members is None: - members = self - - for tarinfo in members: - if tarinfo.isdir(): - # Extract directories with a safe mode. - directories.append(tarinfo) - tarinfo = copy.copy(tarinfo) - tarinfo.mode = 0o700 - # Do not set_attrs directories, as we will do that further down - self.extract(tarinfo, path, set_attrs=not tarinfo.isdir()) - - # Reverse sort directories. - directories.sort(key=lambda a: a.name) - directories.reverse() - - # Set correct owner, mtime and filemode on directories. - for tarinfo in directories: - dirpath = os.path.join(path, tarinfo.name) - try: - self.chown(tarinfo, dirpath) - self.utime(tarinfo, dirpath) - self.chmod(tarinfo, dirpath) - except ExtractError as e: - if self.errorlevel > 1: - raise - else: - self._dbg(1, "tarfile: %s" % e) - - def extract(self, member, path="", set_attrs=True): - """Extract a member from the archive to the current working directory, - using its full name. Its file information is extracted as accurately - as possible. `member' may be a filename or a TarInfo object. You can - specify a different directory using `path'. File attributes (owner, - mtime, mode) are set unless `set_attrs' is False. - """ - self._check("r") - - if isinstance(member, str): - tarinfo = self.getmember(member) - else: - tarinfo = member - - # Prepare the link target for makelink(). - if tarinfo.islnk(): - tarinfo._link_target = os.path.join(path, tarinfo.linkname) - - try: - self._extract_member(tarinfo, os.path.join(path, tarinfo.name), - set_attrs=set_attrs) - except EnvironmentError as e: - if self.errorlevel > 0: - raise - else: - if e.filename is None: - self._dbg(1, "tarfile: %s" % e.strerror) - else: - self._dbg(1, "tarfile: %s %r" % (e.strerror, e.filename)) - except ExtractError as e: - if self.errorlevel > 1: - raise - else: - self._dbg(1, "tarfile: %s" % e) - - def extractfile(self, member): - """Extract a member from the archive as a file object. `member' may be - a filename or a TarInfo object. If `member' is a regular file, a - file-like object is returned. If `member' is a link, a file-like - object is constructed from the link's target. If `member' is none of - the above, None is returned. - The file-like object is read-only and provides the following - methods: read(), readline(), readlines(), seek() and tell() - """ - self._check("r") - - if isinstance(member, str): - tarinfo = self.getmember(member) - else: - tarinfo = member - - if tarinfo.isreg(): - return self.fileobject(self, tarinfo) - - elif tarinfo.type not in SUPPORTED_TYPES: - # If a member's type is unknown, it is treated as a - # regular file. - return self.fileobject(self, tarinfo) - - elif tarinfo.islnk() or tarinfo.issym(): - if isinstance(self.fileobj, _Stream): - # A small but ugly workaround for the case that someone tries - # to extract a (sym)link as a file-object from a non-seekable - # stream of tar blocks. - raise StreamError("cannot extract (sym)link as file object") - else: - # A (sym)link's file object is its target's file object. - return self.extractfile(self._find_link_target(tarinfo)) - else: - # If there's no data associated with the member (directory, chrdev, - # blkdev, etc.), return None instead of a file object. - return None - - def _extract_member(self, tarinfo, targetpath, set_attrs=True): - """Extract the TarInfo object tarinfo to a physical - file called targetpath. - """ - # Fetch the TarInfo object for the given name - # and build the destination pathname, replacing - # forward slashes to platform specific separators. - targetpath = targetpath.rstrip("/") - targetpath = targetpath.replace("/", os.sep) - - # Create all upper directories. - upperdirs = os.path.dirname(targetpath) - if upperdirs and not os.path.exists(upperdirs): - # Create directories that are not part of the archive with - # default permissions. - os.makedirs(upperdirs) - - if tarinfo.islnk() or tarinfo.issym(): - self._dbg(1, "%s -> %s" % (tarinfo.name, tarinfo.linkname)) - else: - self._dbg(1, tarinfo.name) - - if tarinfo.isreg(): - self.makefile(tarinfo, targetpath) - elif tarinfo.isdir(): - self.makedir(tarinfo, targetpath) - elif tarinfo.isfifo(): - self.makefifo(tarinfo, targetpath) - elif tarinfo.ischr() or tarinfo.isblk(): - self.makedev(tarinfo, targetpath) - elif tarinfo.islnk() or tarinfo.issym(): - self.makelink(tarinfo, targetpath) - elif tarinfo.type not in SUPPORTED_TYPES: - self.makeunknown(tarinfo, targetpath) - else: - self.makefile(tarinfo, targetpath) - - if set_attrs: - self.chown(tarinfo, targetpath) - if not tarinfo.issym(): - self.chmod(tarinfo, targetpath) - self.utime(tarinfo, targetpath) - - #-------------------------------------------------------------------------- - # Below are the different file methods. They are called via - # _extract_member() when extract() is called. They can be replaced in a - # subclass to implement other functionality. - - def makedir(self, tarinfo, targetpath): - """Make a directory called targetpath. - """ - try: - # Use a safe mode for the directory, the real mode is set - # later in _extract_member(). - os.mkdir(targetpath, 0o700) - except EnvironmentError as e: - if e.errno != errno.EEXIST: - raise - - def makefile(self, tarinfo, targetpath): - """Make a file called targetpath. - """ - source = self.fileobj - source.seek(tarinfo.offset_data) - target = bltn_open(targetpath, "wb") - if tarinfo.sparse is not None: - for offset, size in tarinfo.sparse: - target.seek(offset) - copyfileobj(source, target, size) - else: - copyfileobj(source, target, tarinfo.size) - target.seek(tarinfo.size) - target.truncate() - target.close() - - def makeunknown(self, tarinfo, targetpath): - """Make a file from a TarInfo object with an unknown type - at targetpath. - """ - self.makefile(tarinfo, targetpath) - self._dbg(1, "tarfile: Unknown file type %r, " \ - "extracted as regular file." % tarinfo.type) - - def makefifo(self, tarinfo, targetpath): - """Make a fifo called targetpath. - """ - if hasattr(os, "mkfifo"): - os.mkfifo(targetpath) - else: - raise ExtractError("fifo not supported by system") - - def makedev(self, tarinfo, targetpath): - """Make a character or block device called targetpath. - """ - if not hasattr(os, "mknod") or not hasattr(os, "makedev"): - raise ExtractError("special devices not supported by system") - - mode = tarinfo.mode - if tarinfo.isblk(): - mode |= stat.S_IFBLK - else: - mode |= stat.S_IFCHR - - os.mknod(targetpath, mode, - os.makedev(tarinfo.devmajor, tarinfo.devminor)) - - def makelink(self, tarinfo, targetpath): - """Make a (symbolic) link called targetpath. If it cannot be created - (platform limitation), we try to make a copy of the referenced file - instead of a link. - """ - try: - # For systems that support symbolic and hard links. - if tarinfo.issym(): - os.symlink(tarinfo.linkname, targetpath) - else: - # See extract(). - if os.path.exists(tarinfo._link_target): - os.link(tarinfo._link_target, targetpath) - else: - self._extract_member(self._find_link_target(tarinfo), - targetpath) - except symlink_exception: - if tarinfo.issym(): - linkpath = os.path.join(os.path.dirname(tarinfo.name), - tarinfo.linkname) - else: - linkpath = tarinfo.linkname - else: - try: - self._extract_member(self._find_link_target(tarinfo), - targetpath) - except KeyError: - raise ExtractError("unable to resolve link inside archive") - - def chown(self, tarinfo, targetpath): - """Set owner of targetpath according to tarinfo. - """ - if pwd and hasattr(os, "geteuid") and os.geteuid() == 0: - # We have to be root to do so. - try: - g = grp.getgrnam(tarinfo.gname)[2] - except KeyError: - g = tarinfo.gid - try: - u = pwd.getpwnam(tarinfo.uname)[2] - except KeyError: - u = tarinfo.uid - try: - if tarinfo.issym() and hasattr(os, "lchown"): - os.lchown(targetpath, u, g) - else: - if sys.platform != "os2emx": - os.chown(targetpath, u, g) - except EnvironmentError as e: - raise ExtractError("could not change owner") - - def chmod(self, tarinfo, targetpath): - """Set file permissions of targetpath according to tarinfo. - """ - if hasattr(os, 'chmod'): - try: - os.chmod(targetpath, tarinfo.mode) - except EnvironmentError as e: - raise ExtractError("could not change mode") - - def utime(self, tarinfo, targetpath): - """Set modification time of targetpath according to tarinfo. - """ - if not hasattr(os, 'utime'): - return - try: - os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime)) - except EnvironmentError as e: - raise ExtractError("could not change modification time") - - #-------------------------------------------------------------------------- - def next(self): - """Return the next member of the archive as a TarInfo object, when - TarFile is opened for reading. Return None if there is no more - available. - """ - self._check("ra") - if self.firstmember is not None: - m = self.firstmember - self.firstmember = None - return m - - # Read the next block. - self.fileobj.seek(self.offset) - tarinfo = None - while True: - try: - tarinfo = self.tarinfo.fromtarfile(self) - except EOFHeaderError as e: - if self.ignore_zeros: - self._dbg(2, "0x%X: %s" % (self.offset, e)) - self.offset += BLOCKSIZE - continue - except InvalidHeaderError as e: - if self.ignore_zeros: - self._dbg(2, "0x%X: %s" % (self.offset, e)) - self.offset += BLOCKSIZE - continue - elif self.offset == 0: - raise ReadError(str(e)) - except EmptyHeaderError: - if self.offset == 0: - raise ReadError("empty file") - except TruncatedHeaderError as e: - if self.offset == 0: - raise ReadError(str(e)) - except SubsequentHeaderError as e: - raise ReadError(str(e)) - break - - if tarinfo is not None: - self.members.append(tarinfo) - else: - self._loaded = True - - return tarinfo - - #-------------------------------------------------------------------------- - # Little helper methods: - - def _getmember(self, name, tarinfo=None, normalize=False): - """Find an archive member by name from bottom to top. - If tarinfo is given, it is used as the starting point. - """ - # Ensure that all members have been loaded. - members = self.getmembers() - - # Limit the member search list up to tarinfo. - if tarinfo is not None: - members = members[:members.index(tarinfo)] - - if normalize: - name = os.path.normpath(name) - - for member in reversed(members): - if normalize: - member_name = os.path.normpath(member.name) - else: - member_name = member.name - - if name == member_name: - return member - - def _load(self): - """Read through the entire archive file and look for readable - members. - """ - while True: - tarinfo = self.next() - if tarinfo is None: - break - self._loaded = True - - def _check(self, mode=None): - """Check if TarFile is still open, and if the operation's mode - corresponds to TarFile's mode. - """ - if self.closed: - raise IOError("%s is closed" % self.__class__.__name__) - if mode is not None and self.mode not in mode: - raise IOError("bad operation for mode %r" % self.mode) - - def _find_link_target(self, tarinfo): - """Find the target member of a symlink or hardlink member in the - archive. - """ - if tarinfo.issym(): - # Always search the entire archive. - linkname = os.path.dirname(tarinfo.name) + "/" + tarinfo.linkname - limit = None - else: - # Search the archive before the link, because a hard link is - # just a reference to an already archived file. - linkname = tarinfo.linkname - limit = tarinfo - - member = self._getmember(linkname, tarinfo=limit, normalize=True) - if member is None: - raise KeyError("linkname %r not found" % linkname) - return member - - def __iter__(self): - """Provide an iterator object. - """ - if self._loaded: - return iter(self.members) - else: - return TarIter(self) - - def _dbg(self, level, msg): - """Write debugging output to sys.stderr. - """ - if level <= self.debug: - print(msg, file=sys.stderr) - - def __enter__(self): - self._check() - return self - - def __exit__(self, type, value, traceback): - if type is None: - self.close() - else: - # An exception occurred. We must not call close() because - # it would try to write end-of-archive blocks and padding. - if not self._extfileobj: - self.fileobj.close() - self.closed = True -# class TarFile - -class TarIter(object): - """Iterator Class. - - for tarinfo in TarFile(...): - suite... - """ - - def __init__(self, tarfile): - """Construct a TarIter object. - """ - self.tarfile = tarfile - self.index = 0 - def __iter__(self): - """Return iterator object. - """ - return self - - def __next__(self): - """Return the next item using TarFile's next() method. - When all members have been read, set TarFile as _loaded. - """ - # Fix for SF #1100429: Under rare circumstances it can - # happen that getmembers() is called during iteration, - # which will cause TarIter to stop prematurely. - if not self.tarfile._loaded: - tarinfo = self.tarfile.next() - if not tarinfo: - self.tarfile._loaded = True - raise StopIteration - else: - try: - tarinfo = self.tarfile.members[self.index] - except IndexError: - raise StopIteration - self.index += 1 - return tarinfo - - next = __next__ # for Python 2.x - -#-------------------- -# exported functions -#-------------------- -def is_tarfile(name): - """Return True if name points to a tar archive that we - are able to handle, else return False. - """ - try: - t = open(name) - t.close() - return True - except TarError: - return False - -bltn_open = open -open = TarFile.open diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/compat.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/compat.py deleted file mode 100644 index 2b198dd..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/compat.py +++ /dev/null @@ -1,1111 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2016 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from __future__ import absolute_import - -import os -import re -import sys - -try: - import ssl -except ImportError: - ssl = None - -if sys.version_info[0] < 3: # pragma: no cover - from StringIO import StringIO - string_types = basestring, - text_type = unicode - from types import FileType as file_type - import __builtin__ as builtins - import ConfigParser as configparser - from ._backport import shutil - from urlparse import urlparse, urlunparse, urljoin, urlsplit, urlunsplit - from urllib import (urlretrieve, quote as _quote, unquote, url2pathname, - pathname2url, ContentTooShortError, splittype) - - def quote(s): - if isinstance(s, unicode): - s = s.encode('utf-8') - return _quote(s) - - import urllib2 - from urllib2 import (Request, urlopen, URLError, HTTPError, - HTTPBasicAuthHandler, HTTPPasswordMgr, - HTTPHandler, HTTPRedirectHandler, - build_opener) - if ssl: - from urllib2 import HTTPSHandler - import httplib - import xmlrpclib - import Queue as queue - from HTMLParser import HTMLParser - import htmlentitydefs - raw_input = raw_input - from itertools import ifilter as filter - from itertools import ifilterfalse as filterfalse - - _userprog = None - def splituser(host): - """splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.""" - global _userprog - if _userprog is None: - import re - _userprog = re.compile('^(.*)@(.*)$') - - match = _userprog.match(host) - if match: return match.group(1, 2) - return None, host - -else: # pragma: no cover - from io import StringIO - string_types = str, - text_type = str - from io import TextIOWrapper as file_type - import builtins - import configparser - import shutil - from urllib.parse import (urlparse, urlunparse, urljoin, splituser, quote, - unquote, urlsplit, urlunsplit, splittype) - from urllib.request import (urlopen, urlretrieve, Request, url2pathname, - pathname2url, - HTTPBasicAuthHandler, HTTPPasswordMgr, - HTTPHandler, HTTPRedirectHandler, - build_opener) - if ssl: - from urllib.request import HTTPSHandler - from urllib.error import HTTPError, URLError, ContentTooShortError - import http.client as httplib - import urllib.request as urllib2 - import xmlrpc.client as xmlrpclib - import queue - from html.parser import HTMLParser - import html.entities as htmlentitydefs - raw_input = input - from itertools import filterfalse - filter = filter - -try: - from ssl import match_hostname, CertificateError -except ImportError: # pragma: no cover - class CertificateError(ValueError): - pass - - - def _dnsname_match(dn, hostname, max_wildcards=1): - """Matching according to RFC 6125, section 6.4.3 - - http://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - parts = dn.split('.') - leftmost, remainder = parts[0], parts[1:] - - wildcards = leftmost.count('*') - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn)) - - # speed up common case w/o wildcards - if not wildcards: - return dn.lower() == hostname.lower() - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a presented identifier in which - # the wildcard character comprises a label other than the left-most label. - if leftmost == '*': - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append('[^.]+') - elif leftmost.startswith('xn--') or hostname.startswith('xn--'): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r'\*', '[^.]*')) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r'\A' + r'\.'.join(pats) + r'\Z', re.IGNORECASE) - return pat.match(hostname) - - - def match_hostname(cert, hostname): - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError("empty or no certificate, match_hostname needs a " - "SSL socket or SSL context with either " - "CERT_OPTIONAL or CERT_REQUIRED") - dnsnames = [] - san = cert.get('subjectAltName', ()) - for key, value in san: - if key == 'DNS': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if not dnsnames: - # The subject is only checked when there is no dNSName entry - # in subjectAltName - for sub in cert.get('subject', ()): - for key, value in sub: - # XXX according to RFC 2818, the most specific Common Name - # must be used. - if key == 'commonName': - if _dnsname_match(value, hostname): - return - dnsnames.append(value) - if len(dnsnames) > 1: - raise CertificateError("hostname %r " - "doesn't match either of %s" - % (hostname, ', '.join(map(repr, dnsnames)))) - elif len(dnsnames) == 1: - raise CertificateError("hostname %r " - "doesn't match %r" - % (hostname, dnsnames[0])) - else: - raise CertificateError("no appropriate commonName or " - "subjectAltName fields were found") - - -try: - from types import SimpleNamespace as Container -except ImportError: # pragma: no cover - class Container(object): - """ - A generic container for when multiple values need to be returned - """ - def __init__(self, **kwargs): - self.__dict__.update(kwargs) - - -try: - from shutil import which -except ImportError: # pragma: no cover - # Implementation from Python 3.3 - def which(cmd, mode=os.F_OK | os.X_OK, path=None): - """Given a command, mode, and a PATH string, return the path which - conforms to the given mode on the PATH, or None if there is no such - file. - - `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result - of os.environ.get("PATH"), or can be overridden with a custom search - path. - - """ - # Check that a given file can be accessed with the correct mode. - # Additionally check that `file` is not a directory, as on Windows - # directories pass the os.access check. - def _access_check(fn, mode): - return (os.path.exists(fn) and os.access(fn, mode) - and not os.path.isdir(fn)) - - # If we're given a path with a directory part, look it up directly rather - # than referring to PATH directories. This includes checking relative to the - # current directory, e.g. ./script - if os.path.dirname(cmd): - if _access_check(cmd, mode): - return cmd - return None - - if path is None: - path = os.environ.get("PATH", os.defpath) - if not path: - return None - path = path.split(os.pathsep) - - if sys.platform == "win32": - # The current directory takes precedence on Windows. - if not os.curdir in path: - path.insert(0, os.curdir) - - # PATHEXT is necessary to check on Windows. - pathext = os.environ.get("PATHEXT", "").split(os.pathsep) - # See if the given file matches any of the expected path extensions. - # This will allow us to short circuit when given "python.exe". - # If it does match, only test that one, otherwise we have to try - # others. - if any(cmd.lower().endswith(ext.lower()) for ext in pathext): - files = [cmd] - else: - files = [cmd + ext for ext in pathext] - else: - # On other platforms you don't have things like PATHEXT to tell you - # what file suffixes are executable, so just pass on cmd as-is. - files = [cmd] - - seen = set() - for dir in path: - normdir = os.path.normcase(dir) - if not normdir in seen: - seen.add(normdir) - for thefile in files: - name = os.path.join(dir, thefile) - if _access_check(name, mode): - return name - return None - - -# ZipFile is a context manager in 2.7, but not in 2.6 - -from zipfile import ZipFile as BaseZipFile - -if hasattr(BaseZipFile, '__enter__'): # pragma: no cover - ZipFile = BaseZipFile -else: - from zipfile import ZipExtFile as BaseZipExtFile - - class ZipExtFile(BaseZipExtFile): - def __init__(self, base): - self.__dict__.update(base.__dict__) - - def __enter__(self): - return self - - def __exit__(self, *exc_info): - self.close() - # return None, so if an exception occurred, it will propagate - - class ZipFile(BaseZipFile): - def __enter__(self): - return self - - def __exit__(self, *exc_info): - self.close() - # return None, so if an exception occurred, it will propagate - - def open(self, *args, **kwargs): - base = BaseZipFile.open(self, *args, **kwargs) - return ZipExtFile(base) - -try: - from platform import python_implementation -except ImportError: # pragma: no cover - def python_implementation(): - """Return a string identifying the Python implementation.""" - if 'PyPy' in sys.version: - return 'PyPy' - if os.name == 'java': - return 'Jython' - if sys.version.startswith('IronPython'): - return 'IronPython' - return 'CPython' - -try: - import sysconfig -except ImportError: # pragma: no cover - from ._backport import sysconfig - -try: - callable = callable -except NameError: # pragma: no cover - from collections import Callable - - def callable(obj): - return isinstance(obj, Callable) - - -try: - fsencode = os.fsencode - fsdecode = os.fsdecode -except AttributeError: # pragma: no cover - _fsencoding = sys.getfilesystemencoding() - if _fsencoding == 'mbcs': - _fserrors = 'strict' - else: - _fserrors = 'surrogateescape' - - def fsencode(filename): - if isinstance(filename, bytes): - return filename - elif isinstance(filename, text_type): - return filename.encode(_fsencoding, _fserrors) - else: - raise TypeError("expect bytes or str, not %s" % - type(filename).__name__) - - def fsdecode(filename): - if isinstance(filename, text_type): - return filename - elif isinstance(filename, bytes): - return filename.decode(_fsencoding, _fserrors) - else: - raise TypeError("expect bytes or str, not %s" % - type(filename).__name__) - -try: - from tokenize import detect_encoding -except ImportError: # pragma: no cover - from codecs import BOM_UTF8, lookup - import re - - cookie_re = re.compile("coding[:=]\s*([-\w.]+)") - - def _get_normal_name(orig_enc): - """Imitates get_normal_name in tokenizer.c.""" - # Only care about the first 12 characters. - enc = orig_enc[:12].lower().replace("_", "-") - if enc == "utf-8" or enc.startswith("utf-8-"): - return "utf-8" - if enc in ("latin-1", "iso-8859-1", "iso-latin-1") or \ - enc.startswith(("latin-1-", "iso-8859-1-", "iso-latin-1-")): - return "iso-8859-1" - return orig_enc - - def detect_encoding(readline): - """ - The detect_encoding() function is used to detect the encoding that should - be used to decode a Python source file. It requires one argument, readline, - in the same way as the tokenize() generator. - - It will call readline a maximum of twice, and return the encoding used - (as a string) and a list of any lines (left as bytes) it has read in. - - It detects the encoding from the presence of a utf-8 bom or an encoding - cookie as specified in pep-0263. If both a bom and a cookie are present, - but disagree, a SyntaxError will be raised. If the encoding cookie is an - invalid charset, raise a SyntaxError. Note that if a utf-8 bom is found, - 'utf-8-sig' is returned. - - If no encoding is specified, then the default of 'utf-8' will be returned. - """ - try: - filename = readline.__self__.name - except AttributeError: - filename = None - bom_found = False - encoding = None - default = 'utf-8' - def read_or_stop(): - try: - return readline() - except StopIteration: - return b'' - - def find_cookie(line): - try: - # Decode as UTF-8. Either the line is an encoding declaration, - # in which case it should be pure ASCII, or it must be UTF-8 - # per default encoding. - line_string = line.decode('utf-8') - except UnicodeDecodeError: - msg = "invalid or missing encoding declaration" - if filename is not None: - msg = '{} for {!r}'.format(msg, filename) - raise SyntaxError(msg) - - matches = cookie_re.findall(line_string) - if not matches: - return None - encoding = _get_normal_name(matches[0]) - try: - codec = lookup(encoding) - except LookupError: - # This behaviour mimics the Python interpreter - if filename is None: - msg = "unknown encoding: " + encoding - else: - msg = "unknown encoding for {!r}: {}".format(filename, - encoding) - raise SyntaxError(msg) - - if bom_found: - if codec.name != 'utf-8': - # This behaviour mimics the Python interpreter - if filename is None: - msg = 'encoding problem: utf-8' - else: - msg = 'encoding problem for {!r}: utf-8'.format(filename) - raise SyntaxError(msg) - encoding += '-sig' - return encoding - - first = read_or_stop() - if first.startswith(BOM_UTF8): - bom_found = True - first = first[3:] - default = 'utf-8-sig' - if not first: - return default, [] - - encoding = find_cookie(first) - if encoding: - return encoding, [first] - - second = read_or_stop() - if not second: - return default, [first] - - encoding = find_cookie(second) - if encoding: - return encoding, [first, second] - - return default, [first, second] - -# For converting & <-> & etc. -try: - from html import escape -except ImportError: - from cgi import escape -if sys.version_info[:2] < (3, 4): - unescape = HTMLParser().unescape -else: - from html import unescape - -try: - from collections import ChainMap -except ImportError: # pragma: no cover - from collections import MutableMapping - - try: - from reprlib import recursive_repr as _recursive_repr - except ImportError: - def _recursive_repr(fillvalue='...'): - ''' - Decorator to make a repr function return fillvalue for a recursive - call - ''' - - def decorating_function(user_function): - repr_running = set() - - def wrapper(self): - key = id(self), get_ident() - if key in repr_running: - return fillvalue - repr_running.add(key) - try: - result = user_function(self) - finally: - repr_running.discard(key) - return result - - # Can't use functools.wraps() here because of bootstrap issues - wrapper.__module__ = getattr(user_function, '__module__') - wrapper.__doc__ = getattr(user_function, '__doc__') - wrapper.__name__ = getattr(user_function, '__name__') - wrapper.__annotations__ = getattr(user_function, '__annotations__', {}) - return wrapper - - return decorating_function - - class ChainMap(MutableMapping): - ''' A ChainMap groups multiple dicts (or other mappings) together - to create a single, updateable view. - - The underlying mappings are stored in a list. That list is public and can - accessed or updated using the *maps* attribute. There is no other state. - - Lookups search the underlying mappings successively until a key is found. - In contrast, writes, updates, and deletions only operate on the first - mapping. - - ''' - - def __init__(self, *maps): - '''Initialize a ChainMap by setting *maps* to the given mappings. - If no mappings are provided, a single empty dictionary is used. - - ''' - self.maps = list(maps) or [{}] # always at least one map - - def __missing__(self, key): - raise KeyError(key) - - def __getitem__(self, key): - for mapping in self.maps: - try: - return mapping[key] # can't use 'key in mapping' with defaultdict - except KeyError: - pass - return self.__missing__(key) # support subclasses that define __missing__ - - def get(self, key, default=None): - return self[key] if key in self else default - - def __len__(self): - return len(set().union(*self.maps)) # reuses stored hash values if possible - - def __iter__(self): - return iter(set().union(*self.maps)) - - def __contains__(self, key): - return any(key in m for m in self.maps) - - def __bool__(self): - return any(self.maps) - - @_recursive_repr() - def __repr__(self): - return '{0.__class__.__name__}({1})'.format( - self, ', '.join(map(repr, self.maps))) - - @classmethod - def fromkeys(cls, iterable, *args): - 'Create a ChainMap with a single dict created from the iterable.' - return cls(dict.fromkeys(iterable, *args)) - - def copy(self): - 'New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]' - return self.__class__(self.maps[0].copy(), *self.maps[1:]) - - __copy__ = copy - - def new_child(self): # like Django's Context.push() - 'New ChainMap with a new dict followed by all previous maps.' - return self.__class__({}, *self.maps) - - @property - def parents(self): # like Django's Context.pop() - 'New ChainMap from maps[1:].' - return self.__class__(*self.maps[1:]) - - def __setitem__(self, key, value): - self.maps[0][key] = value - - def __delitem__(self, key): - try: - del self.maps[0][key] - except KeyError: - raise KeyError('Key not found in the first mapping: {!r}'.format(key)) - - def popitem(self): - 'Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.' - try: - return self.maps[0].popitem() - except KeyError: - raise KeyError('No keys found in the first mapping.') - - def pop(self, key, *args): - 'Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].' - try: - return self.maps[0].pop(key, *args) - except KeyError: - raise KeyError('Key not found in the first mapping: {!r}'.format(key)) - - def clear(self): - 'Clear maps[0], leaving maps[1:] intact.' - self.maps[0].clear() - -try: - from imp import cache_from_source -except ImportError: # pragma: no cover - def cache_from_source(path, debug_override=None): - assert path.endswith('.py') - if debug_override is None: - debug_override = __debug__ - if debug_override: - suffix = 'c' - else: - suffix = 'o' - return path + suffix - -try: - from collections import OrderedDict -except ImportError: # pragma: no cover -## {{{ http://code.activestate.com/recipes/576693/ (r9) -# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy. -# Passes Python2.7's test suite and incorporates all the latest updates. - try: - from thread import get_ident as _get_ident - except ImportError: - from dummy_thread import get_ident as _get_ident - - try: - from _abcoll import KeysView, ValuesView, ItemsView - except ImportError: - pass - - - class OrderedDict(dict): - 'Dictionary that remembers insertion order' - # An inherited dict maps keys to values. - # The inherited dict provides __getitem__, __len__, __contains__, and get. - # The remaining methods are order-aware. - # Big-O running times for all methods are the same as for regular dictionaries. - - # The internal self.__map dictionary maps keys to links in a doubly linked list. - # The circular doubly linked list starts and ends with a sentinel element. - # The sentinel element never gets deleted (this simplifies the algorithm). - # Each link is stored as a list of length three: [PREV, NEXT, KEY]. - - def __init__(self, *args, **kwds): - '''Initialize an ordered dictionary. Signature is the same as for - regular dictionaries, but keyword arguments are not recommended - because their insertion order is arbitrary. - - ''' - if len(args) > 1: - raise TypeError('expected at most 1 arguments, got %d' % len(args)) - try: - self.__root - except AttributeError: - self.__root = root = [] # sentinel node - root[:] = [root, root, None] - self.__map = {} - self.__update(*args, **kwds) - - def __setitem__(self, key, value, dict_setitem=dict.__setitem__): - 'od.__setitem__(i, y) <==> od[i]=y' - # Setting a new item creates a new link which goes at the end of the linked - # list, and the inherited dictionary is updated with the new key/value pair. - if key not in self: - root = self.__root - last = root[0] - last[1] = root[0] = self.__map[key] = [last, root, key] - dict_setitem(self, key, value) - - def __delitem__(self, key, dict_delitem=dict.__delitem__): - 'od.__delitem__(y) <==> del od[y]' - # Deleting an existing item uses self.__map to find the link which is - # then removed by updating the links in the predecessor and successor nodes. - dict_delitem(self, key) - link_prev, link_next, key = self.__map.pop(key) - link_prev[1] = link_next - link_next[0] = link_prev - - def __iter__(self): - 'od.__iter__() <==> iter(od)' - root = self.__root - curr = root[1] - while curr is not root: - yield curr[2] - curr = curr[1] - - def __reversed__(self): - 'od.__reversed__() <==> reversed(od)' - root = self.__root - curr = root[0] - while curr is not root: - yield curr[2] - curr = curr[0] - - def clear(self): - 'od.clear() -> None. Remove all items from od.' - try: - for node in self.__map.itervalues(): - del node[:] - root = self.__root - root[:] = [root, root, None] - self.__map.clear() - except AttributeError: - pass - dict.clear(self) - - def popitem(self, last=True): - '''od.popitem() -> (k, v), return and remove a (key, value) pair. - Pairs are returned in LIFO order if last is true or FIFO order if false. - - ''' - if not self: - raise KeyError('dictionary is empty') - root = self.__root - if last: - link = root[0] - link_prev = link[0] - link_prev[1] = root - root[0] = link_prev - else: - link = root[1] - link_next = link[1] - root[1] = link_next - link_next[0] = root - key = link[2] - del self.__map[key] - value = dict.pop(self, key) - return key, value - - # -- the following methods do not depend on the internal structure -- - - def keys(self): - 'od.keys() -> list of keys in od' - return list(self) - - def values(self): - 'od.values() -> list of values in od' - return [self[key] for key in self] - - def items(self): - 'od.items() -> list of (key, value) pairs in od' - return [(key, self[key]) for key in self] - - def iterkeys(self): - 'od.iterkeys() -> an iterator over the keys in od' - return iter(self) - - def itervalues(self): - 'od.itervalues -> an iterator over the values in od' - for k in self: - yield self[k] - - def iteritems(self): - 'od.iteritems -> an iterator over the (key, value) items in od' - for k in self: - yield (k, self[k]) - - def update(*args, **kwds): - '''od.update(E, **F) -> None. Update od from dict/iterable E and F. - - If E is a dict instance, does: for k in E: od[k] = E[k] - If E has a .keys() method, does: for k in E.keys(): od[k] = E[k] - Or if E is an iterable of items, does: for k, v in E: od[k] = v - In either case, this is followed by: for k, v in F.items(): od[k] = v - - ''' - if len(args) > 2: - raise TypeError('update() takes at most 2 positional ' - 'arguments (%d given)' % (len(args),)) - elif not args: - raise TypeError('update() takes at least 1 argument (0 given)') - self = args[0] - # Make progressively weaker assumptions about "other" - other = () - if len(args) == 2: - other = args[1] - if isinstance(other, dict): - for key in other: - self[key] = other[key] - elif hasattr(other, 'keys'): - for key in other.keys(): - self[key] = other[key] - else: - for key, value in other: - self[key] = value - for key, value in kwds.items(): - self[key] = value - - __update = update # let subclasses override update without breaking __init__ - - __marker = object() - - def pop(self, key, default=__marker): - '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value. - If key is not found, d is returned if given, otherwise KeyError is raised. - - ''' - if key in self: - result = self[key] - del self[key] - return result - if default is self.__marker: - raise KeyError(key) - return default - - def setdefault(self, key, default=None): - 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od' - if key in self: - return self[key] - self[key] = default - return default - - def __repr__(self, _repr_running=None): - 'od.__repr__() <==> repr(od)' - if not _repr_running: _repr_running = {} - call_key = id(self), _get_ident() - if call_key in _repr_running: - return '...' - _repr_running[call_key] = 1 - try: - if not self: - return '%s()' % (self.__class__.__name__,) - return '%s(%r)' % (self.__class__.__name__, self.items()) - finally: - del _repr_running[call_key] - - def __reduce__(self): - 'Return state information for pickling' - items = [[k, self[k]] for k in self] - inst_dict = vars(self).copy() - for k in vars(OrderedDict()): - inst_dict.pop(k, None) - if inst_dict: - return (self.__class__, (items,), inst_dict) - return self.__class__, (items,) - - def copy(self): - 'od.copy() -> a shallow copy of od' - return self.__class__(self) - - @classmethod - def fromkeys(cls, iterable, value=None): - '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S - and values equal to v (which defaults to None). - - ''' - d = cls() - for key in iterable: - d[key] = value - return d - - def __eq__(self, other): - '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive - while comparison to a regular mapping is order-insensitive. - - ''' - if isinstance(other, OrderedDict): - return len(self)==len(other) and self.items() == other.items() - return dict.__eq__(self, other) - - def __ne__(self, other): - return not self == other - - # -- the following methods are only used in Python 2.7 -- - - def viewkeys(self): - "od.viewkeys() -> a set-like object providing a view on od's keys" - return KeysView(self) - - def viewvalues(self): - "od.viewvalues() -> an object providing a view on od's values" - return ValuesView(self) - - def viewitems(self): - "od.viewitems() -> a set-like object providing a view on od's items" - return ItemsView(self) - -try: - from logging.config import BaseConfigurator, valid_ident -except ImportError: # pragma: no cover - IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I) - - - def valid_ident(s): - m = IDENTIFIER.match(s) - if not m: - raise ValueError('Not a valid Python identifier: %r' % s) - return True - - - # The ConvertingXXX classes are wrappers around standard Python containers, - # and they serve to convert any suitable values in the container. The - # conversion converts base dicts, lists and tuples to their wrapped - # equivalents, whereas strings which match a conversion format are converted - # appropriately. - # - # Each wrapper should have a configurator attribute holding the actual - # configurator to use for conversion. - - class ConvertingDict(dict): - """A converting dictionary wrapper.""" - - def __getitem__(self, key): - value = dict.__getitem__(self, key) - result = self.configurator.convert(value) - #If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def get(self, key, default=None): - value = dict.get(self, key, default) - result = self.configurator.convert(value) - #If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def pop(self, key, default=None): - value = dict.pop(self, key, default) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - class ConvertingList(list): - """A converting list wrapper.""" - def __getitem__(self, key): - value = list.__getitem__(self, key) - result = self.configurator.convert(value) - #If the converted value is different, save for next time - if value is not result: - self[key] = result - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - def pop(self, idx=-1): - value = list.pop(self, idx) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - return result - - class ConvertingTuple(tuple): - """A converting tuple wrapper.""" - def __getitem__(self, key): - value = tuple.__getitem__(self, key) - result = self.configurator.convert(value) - if value is not result: - if type(result) in (ConvertingDict, ConvertingList, - ConvertingTuple): - result.parent = self - result.key = key - return result - - class BaseConfigurator(object): - """ - The configurator base class which defines some useful defaults. - """ - - CONVERT_PATTERN = re.compile(r'^(?P[a-z]+)://(?P.*)$') - - WORD_PATTERN = re.compile(r'^\s*(\w+)\s*') - DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*') - INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*') - DIGIT_PATTERN = re.compile(r'^\d+$') - - value_converters = { - 'ext' : 'ext_convert', - 'cfg' : 'cfg_convert', - } - - # We might want to use a different one, e.g. importlib - importer = staticmethod(__import__) - - def __init__(self, config): - self.config = ConvertingDict(config) - self.config.configurator = self - - def resolve(self, s): - """ - Resolve strings to objects using standard import and attribute - syntax. - """ - name = s.split('.') - used = name.pop(0) - try: - found = self.importer(used) - for frag in name: - used += '.' + frag - try: - found = getattr(found, frag) - except AttributeError: - self.importer(used) - found = getattr(found, frag) - return found - except ImportError: - e, tb = sys.exc_info()[1:] - v = ValueError('Cannot resolve %r: %s' % (s, e)) - v.__cause__, v.__traceback__ = e, tb - raise v - - def ext_convert(self, value): - """Default converter for the ext:// protocol.""" - return self.resolve(value) - - def cfg_convert(self, value): - """Default converter for the cfg:// protocol.""" - rest = value - m = self.WORD_PATTERN.match(rest) - if m is None: - raise ValueError("Unable to convert %r" % value) - else: - rest = rest[m.end():] - d = self.config[m.groups()[0]] - #print d, rest - while rest: - m = self.DOT_PATTERN.match(rest) - if m: - d = d[m.groups()[0]] - else: - m = self.INDEX_PATTERN.match(rest) - if m: - idx = m.groups()[0] - if not self.DIGIT_PATTERN.match(idx): - d = d[idx] - else: - try: - n = int(idx) # try as number first (most likely) - d = d[n] - except TypeError: - d = d[idx] - if m: - rest = rest[m.end():] - else: - raise ValueError('Unable to convert ' - '%r at %r' % (value, rest)) - #rest should be empty - return d - - def convert(self, value): - """ - Convert values to an appropriate type. dicts, lists and tuples are - replaced by their converting alternatives. Strings are checked to - see if they have a conversion format and are converted if they do. - """ - if not isinstance(value, ConvertingDict) and isinstance(value, dict): - value = ConvertingDict(value) - value.configurator = self - elif not isinstance(value, ConvertingList) and isinstance(value, list): - value = ConvertingList(value) - value.configurator = self - elif not isinstance(value, ConvertingTuple) and\ - isinstance(value, tuple): - value = ConvertingTuple(value) - value.configurator = self - elif isinstance(value, string_types): - m = self.CONVERT_PATTERN.match(value) - if m: - d = m.groupdict() - prefix = d['prefix'] - converter = self.value_converters.get(prefix, None) - if converter: - suffix = d['suffix'] - converter = getattr(self, converter) - value = converter(suffix) - return value - - def configure_custom(self, config): - """Configure an object with a user-supplied factory.""" - c = config.pop('()') - if not callable(c): - c = self.resolve(c) - props = config.pop('.', None) - # Check for valid identifiers - kwargs = dict([(k, config[k]) for k in config if valid_ident(k)]) - result = c(**kwargs) - if props: - for name, value in props.items(): - setattr(result, name, value) - return result - - def as_tuple(self, value): - """Utility function which converts lists to tuples.""" - if isinstance(value, list): - value = tuple(value) - return value diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/database.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/database.py deleted file mode 100644 index c314426..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/database.py +++ /dev/null @@ -1,1312 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2016 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -"""PEP 376 implementation.""" - -from __future__ import unicode_literals - -import base64 -import codecs -import contextlib -import hashlib -import logging -import os -import posixpath -import sys -import zipimport - -from . import DistlibException, resources -from .compat import StringIO -from .version import get_scheme, UnsupportedVersionError -from .metadata import Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME -from .util import (parse_requirement, cached_property, parse_name_and_version, - read_exports, write_exports, CSVReader, CSVWriter) - - -__all__ = ['Distribution', 'BaseInstalledDistribution', - 'InstalledDistribution', 'EggInfoDistribution', - 'DistributionPath'] - - -logger = logging.getLogger(__name__) - -EXPORTS_FILENAME = 'pydist-exports.json' -COMMANDS_FILENAME = 'pydist-commands.json' - -DIST_FILES = ('INSTALLER', METADATA_FILENAME, 'RECORD', 'REQUESTED', - 'RESOURCES', EXPORTS_FILENAME, 'SHARED') - -DISTINFO_EXT = '.dist-info' - - -class _Cache(object): - """ - A simple cache mapping names and .dist-info paths to distributions - """ - def __init__(self): - """ - Initialise an instance. There is normally one for each DistributionPath. - """ - self.name = {} - self.path = {} - self.generated = False - - def clear(self): - """ - Clear the cache, setting it to its initial state. - """ - self.name.clear() - self.path.clear() - self.generated = False - - def add(self, dist): - """ - Add a distribution to the cache. - :param dist: The distribution to add. - """ - if dist.path not in self.path: - self.path[dist.path] = dist - self.name.setdefault(dist.key, []).append(dist) - - -class DistributionPath(object): - """ - Represents a set of distributions installed on a path (typically sys.path). - """ - def __init__(self, path=None, include_egg=False): - """ - Create an instance from a path, optionally including legacy (distutils/ - setuptools/distribute) distributions. - :param path: The path to use, as a list of directories. If not specified, - sys.path is used. - :param include_egg: If True, this instance will look for and return legacy - distributions as well as those based on PEP 376. - """ - if path is None: - path = sys.path - self.path = path - self._include_dist = True - self._include_egg = include_egg - - self._cache = _Cache() - self._cache_egg = _Cache() - self._cache_enabled = True - self._scheme = get_scheme('default') - - def _get_cache_enabled(self): - return self._cache_enabled - - def _set_cache_enabled(self, value): - self._cache_enabled = value - - cache_enabled = property(_get_cache_enabled, _set_cache_enabled) - - def clear_cache(self): - """ - Clears the internal cache. - """ - self._cache.clear() - self._cache_egg.clear() - - - def _yield_distributions(self): - """ - Yield .dist-info and/or .egg(-info) distributions. - """ - # We need to check if we've seen some resources already, because on - # some Linux systems (e.g. some Debian/Ubuntu variants) there are - # symlinks which alias other files in the environment. - seen = set() - for path in self.path: - finder = resources.finder_for_path(path) - if finder is None: - continue - r = finder.find('') - if not r or not r.is_container: - continue - rset = sorted(r.resources) - for entry in rset: - r = finder.find(entry) - if not r or r.path in seen: - continue - if self._include_dist and entry.endswith(DISTINFO_EXT): - possible_filenames = [METADATA_FILENAME, WHEEL_METADATA_FILENAME] - for metadata_filename in possible_filenames: - metadata_path = posixpath.join(entry, metadata_filename) - pydist = finder.find(metadata_path) - if pydist: - break - else: - continue - - with contextlib.closing(pydist.as_stream()) as stream: - metadata = Metadata(fileobj=stream, scheme='legacy') - logger.debug('Found %s', r.path) - seen.add(r.path) - yield new_dist_class(r.path, metadata=metadata, - env=self) - elif self._include_egg and entry.endswith(('.egg-info', - '.egg')): - logger.debug('Found %s', r.path) - seen.add(r.path) - yield old_dist_class(r.path, self) - - def _generate_cache(self): - """ - Scan the path for distributions and populate the cache with - those that are found. - """ - gen_dist = not self._cache.generated - gen_egg = self._include_egg and not self._cache_egg.generated - if gen_dist or gen_egg: - for dist in self._yield_distributions(): - if isinstance(dist, InstalledDistribution): - self._cache.add(dist) - else: - self._cache_egg.add(dist) - - if gen_dist: - self._cache.generated = True - if gen_egg: - self._cache_egg.generated = True - - @classmethod - def distinfo_dirname(cls, name, version): - """ - The *name* and *version* parameters are converted into their - filename-escaped form, i.e. any ``'-'`` characters are replaced - with ``'_'`` other than the one in ``'dist-info'`` and the one - separating the name from the version number. - - :parameter name: is converted to a standard distribution name by replacing - any runs of non- alphanumeric characters with a single - ``'-'``. - :type name: string - :parameter version: is converted to a standard version string. Spaces - become dots, and all other non-alphanumeric characters - (except dots) become dashes, with runs of multiple - dashes condensed to a single dash. - :type version: string - :returns: directory name - :rtype: string""" - name = name.replace('-', '_') - return '-'.join([name, version]) + DISTINFO_EXT - - def get_distributions(self): - """ - Provides an iterator that looks for distributions and returns - :class:`InstalledDistribution` or - :class:`EggInfoDistribution` instances for each one of them. - - :rtype: iterator of :class:`InstalledDistribution` and - :class:`EggInfoDistribution` instances - """ - if not self._cache_enabled: - for dist in self._yield_distributions(): - yield dist - else: - self._generate_cache() - - for dist in self._cache.path.values(): - yield dist - - if self._include_egg: - for dist in self._cache_egg.path.values(): - yield dist - - def get_distribution(self, name): - """ - Looks for a named distribution on the path. - - This function only returns the first result found, as no more than one - value is expected. If nothing is found, ``None`` is returned. - - :rtype: :class:`InstalledDistribution`, :class:`EggInfoDistribution` - or ``None`` - """ - result = None - name = name.lower() - if not self._cache_enabled: - for dist in self._yield_distributions(): - if dist.key == name: - result = dist - break - else: - self._generate_cache() - - if name in self._cache.name: - result = self._cache.name[name][0] - elif self._include_egg and name in self._cache_egg.name: - result = self._cache_egg.name[name][0] - return result - - def provides_distribution(self, name, version=None): - """ - Iterates over all distributions to find which distributions provide *name*. - If a *version* is provided, it will be used to filter the results. - - This function only returns the first result found, since no more than - one values are expected. If the directory is not found, returns ``None``. - - :parameter version: a version specifier that indicates the version - required, conforming to the format in ``PEP-345`` - - :type name: string - :type version: string - """ - matcher = None - if not version is None: - try: - matcher = self._scheme.matcher('%s (%s)' % (name, version)) - except ValueError: - raise DistlibException('invalid name or version: %r, %r' % - (name, version)) - - for dist in self.get_distributions(): - provided = dist.provides - - for p in provided: - p_name, p_ver = parse_name_and_version(p) - if matcher is None: - if p_name == name: - yield dist - break - else: - if p_name == name and matcher.match(p_ver): - yield dist - break - - def get_file_path(self, name, relative_path): - """ - Return the path to a resource file. - """ - dist = self.get_distribution(name) - if dist is None: - raise LookupError('no distribution named %r found' % name) - return dist.get_resource_path(relative_path) - - def get_exported_entries(self, category, name=None): - """ - Return all of the exported entries in a particular category. - - :param category: The category to search for entries. - :param name: If specified, only entries with that name are returned. - """ - for dist in self.get_distributions(): - r = dist.exports - if category in r: - d = r[category] - if name is not None: - if name in d: - yield d[name] - else: - for v in d.values(): - yield v - - -class Distribution(object): - """ - A base class for distributions, whether installed or from indexes. - Either way, it must have some metadata, so that's all that's needed - for construction. - """ - - build_time_dependency = False - """ - Set to True if it's known to be only a build-time dependency (i.e. - not needed after installation). - """ - - requested = False - """A boolean that indicates whether the ``REQUESTED`` metadata file is - present (in other words, whether the package was installed by user - request or it was installed as a dependency).""" - - def __init__(self, metadata): - """ - Initialise an instance. - :param metadata: The instance of :class:`Metadata` describing this - distribution. - """ - self.metadata = metadata - self.name = metadata.name - self.key = self.name.lower() # for case-insensitive comparisons - self.version = metadata.version - self.locator = None - self.digest = None - self.extras = None # additional features requested - self.context = None # environment marker overrides - self.download_urls = set() - self.digests = {} - - @property - def source_url(self): - """ - The source archive download URL for this distribution. - """ - return self.metadata.source_url - - download_url = source_url # Backward compatibility - - @property - def name_and_version(self): - """ - A utility property which displays the name and version in parentheses. - """ - return '%s (%s)' % (self.name, self.version) - - @property - def provides(self): - """ - A set of distribution names and versions provided by this distribution. - :return: A set of "name (version)" strings. - """ - plist = self.metadata.provides - s = '%s (%s)' % (self.name, self.version) - if s not in plist: - plist.append(s) - return plist - - def _get_requirements(self, req_attr): - md = self.metadata - logger.debug('Getting requirements from metadata %r', md.todict()) - reqts = getattr(md, req_attr) - return set(md.get_requirements(reqts, extras=self.extras, - env=self.context)) - - @property - def run_requires(self): - return self._get_requirements('run_requires') - - @property - def meta_requires(self): - return self._get_requirements('meta_requires') - - @property - def build_requires(self): - return self._get_requirements('build_requires') - - @property - def test_requires(self): - return self._get_requirements('test_requires') - - @property - def dev_requires(self): - return self._get_requirements('dev_requires') - - def matches_requirement(self, req): - """ - Say if this instance matches (fulfills) a requirement. - :param req: The requirement to match. - :rtype req: str - :return: True if it matches, else False. - """ - # Requirement may contain extras - parse to lose those - # from what's passed to the matcher - r = parse_requirement(req) - scheme = get_scheme(self.metadata.scheme) - try: - matcher = scheme.matcher(r.requirement) - except UnsupportedVersionError: - # XXX compat-mode if cannot read the version - logger.warning('could not read version %r - using name only', - req) - name = req.split()[0] - matcher = scheme.matcher(name) - - name = matcher.key # case-insensitive - - result = False - for p in self.provides: - p_name, p_ver = parse_name_and_version(p) - if p_name != name: - continue - try: - result = matcher.match(p_ver) - break - except UnsupportedVersionError: - pass - return result - - def __repr__(self): - """ - Return a textual representation of this instance, - """ - if self.source_url: - suffix = ' [%s]' % self.source_url - else: - suffix = '' - return '' % (self.name, self.version, suffix) - - def __eq__(self, other): - """ - See if this distribution is the same as another. - :param other: The distribution to compare with. To be equal to one - another. distributions must have the same type, name, - version and source_url. - :return: True if it is the same, else False. - """ - if type(other) is not type(self): - result = False - else: - result = (self.name == other.name and - self.version == other.version and - self.source_url == other.source_url) - return result - - def __hash__(self): - """ - Compute hash in a way which matches the equality test. - """ - return hash(self.name) + hash(self.version) + hash(self.source_url) - - -class BaseInstalledDistribution(Distribution): - """ - This is the base class for installed distributions (whether PEP 376 or - legacy). - """ - - hasher = None - - def __init__(self, metadata, path, env=None): - """ - Initialise an instance. - :param metadata: An instance of :class:`Metadata` which describes the - distribution. This will normally have been initialised - from a metadata file in the ``path``. - :param path: The path of the ``.dist-info`` or ``.egg-info`` - directory for the distribution. - :param env: This is normally the :class:`DistributionPath` - instance where this distribution was found. - """ - super(BaseInstalledDistribution, self).__init__(metadata) - self.path = path - self.dist_path = env - - def get_hash(self, data, hasher=None): - """ - Get the hash of some data, using a particular hash algorithm, if - specified. - - :param data: The data to be hashed. - :type data: bytes - :param hasher: The name of a hash implementation, supported by hashlib, - or ``None``. Examples of valid values are ``'sha1'``, - ``'sha224'``, ``'sha384'``, '``sha256'``, ``'md5'`` and - ``'sha512'``. If no hasher is specified, the ``hasher`` - attribute of the :class:`InstalledDistribution` instance - is used. If the hasher is determined to be ``None``, MD5 - is used as the hashing algorithm. - :returns: The hash of the data. If a hasher was explicitly specified, - the returned hash will be prefixed with the specified hasher - followed by '='. - :rtype: str - """ - if hasher is None: - hasher = self.hasher - if hasher is None: - hasher = hashlib.md5 - prefix = '' - else: - hasher = getattr(hashlib, hasher) - prefix = '%s=' % self.hasher - digest = hasher(data).digest() - digest = base64.urlsafe_b64encode(digest).rstrip(b'=').decode('ascii') - return '%s%s' % (prefix, digest) - - -class InstalledDistribution(BaseInstalledDistribution): - """ - Created with the *path* of the ``.dist-info`` directory provided to the - constructor. It reads the metadata contained in ``pydist.json`` when it is - instantiated., or uses a passed in Metadata instance (useful for when - dry-run mode is being used). - """ - - hasher = 'sha256' - - def __init__(self, path, metadata=None, env=None): - self.finder = finder = resources.finder_for_path(path) - if finder is None: - import pdb; pdb.set_trace () - if env and env._cache_enabled and path in env._cache.path: - metadata = env._cache.path[path].metadata - elif metadata is None: - r = finder.find(METADATA_FILENAME) - # Temporary - for Wheel 0.23 support - if r is None: - r = finder.find(WHEEL_METADATA_FILENAME) - # Temporary - for legacy support - if r is None: - r = finder.find('METADATA') - if r is None: - raise ValueError('no %s found in %s' % (METADATA_FILENAME, - path)) - with contextlib.closing(r.as_stream()) as stream: - metadata = Metadata(fileobj=stream, scheme='legacy') - - super(InstalledDistribution, self).__init__(metadata, path, env) - - if env and env._cache_enabled: - env._cache.add(self) - - try: - r = finder.find('REQUESTED') - except AttributeError: - import pdb; pdb.set_trace () - self.requested = r is not None - - def __repr__(self): - return '' % ( - self.name, self.version, self.path) - - def __str__(self): - return "%s %s" % (self.name, self.version) - - def _get_records(self): - """ - Get the list of installed files for the distribution - :return: A list of tuples of path, hash and size. Note that hash and - size might be ``None`` for some entries. The path is exactly - as stored in the file (which is as in PEP 376). - """ - results = [] - r = self.get_distinfo_resource('RECORD') - with contextlib.closing(r.as_stream()) as stream: - with CSVReader(stream=stream) as record_reader: - # Base location is parent dir of .dist-info dir - #base_location = os.path.dirname(self.path) - #base_location = os.path.abspath(base_location) - for row in record_reader: - missing = [None for i in range(len(row), 3)] - path, checksum, size = row + missing - #if not os.path.isabs(path): - # path = path.replace('/', os.sep) - # path = os.path.join(base_location, path) - results.append((path, checksum, size)) - return results - - @cached_property - def exports(self): - """ - Return the information exported by this distribution. - :return: A dictionary of exports, mapping an export category to a dict - of :class:`ExportEntry` instances describing the individual - export entries, and keyed by name. - """ - result = {} - r = self.get_distinfo_resource(EXPORTS_FILENAME) - if r: - result = self.read_exports() - return result - - def read_exports(self): - """ - Read exports data from a file in .ini format. - - :return: A dictionary of exports, mapping an export category to a list - of :class:`ExportEntry` instances describing the individual - export entries. - """ - result = {} - r = self.get_distinfo_resource(EXPORTS_FILENAME) - if r: - with contextlib.closing(r.as_stream()) as stream: - result = read_exports(stream) - return result - - def write_exports(self, exports): - """ - Write a dictionary of exports to a file in .ini format. - :param exports: A dictionary of exports, mapping an export category to - a list of :class:`ExportEntry` instances describing the - individual export entries. - """ - rf = self.get_distinfo_file(EXPORTS_FILENAME) - with open(rf, 'w') as f: - write_exports(exports, f) - - def get_resource_path(self, relative_path): - """ - NOTE: This API may change in the future. - - Return the absolute path to a resource file with the given relative - path. - - :param relative_path: The path, relative to .dist-info, of the resource - of interest. - :return: The absolute path where the resource is to be found. - """ - r = self.get_distinfo_resource('RESOURCES') - with contextlib.closing(r.as_stream()) as stream: - with CSVReader(stream=stream) as resources_reader: - for relative, destination in resources_reader: - if relative == relative_path: - return destination - raise KeyError('no resource file with relative path %r ' - 'is installed' % relative_path) - - def list_installed_files(self): - """ - Iterates over the ``RECORD`` entries and returns a tuple - ``(path, hash, size)`` for each line. - - :returns: iterator of (path, hash, size) - """ - for result in self._get_records(): - yield result - - def write_installed_files(self, paths, prefix, dry_run=False): - """ - Writes the ``RECORD`` file, using the ``paths`` iterable passed in. Any - existing ``RECORD`` file is silently overwritten. - - prefix is used to determine when to write absolute paths. - """ - prefix = os.path.join(prefix, '') - base = os.path.dirname(self.path) - base_under_prefix = base.startswith(prefix) - base = os.path.join(base, '') - record_path = self.get_distinfo_file('RECORD') - logger.info('creating %s', record_path) - if dry_run: - return None - with CSVWriter(record_path) as writer: - for path in paths: - if os.path.isdir(path) or path.endswith(('.pyc', '.pyo')): - # do not put size and hash, as in PEP-376 - hash_value = size = '' - else: - size = '%d' % os.path.getsize(path) - with open(path, 'rb') as fp: - hash_value = self.get_hash(fp.read()) - if path.startswith(base) or (base_under_prefix and - path.startswith(prefix)): - path = os.path.relpath(path, base) - writer.writerow((path, hash_value, size)) - - # add the RECORD file itself - if record_path.startswith(base): - record_path = os.path.relpath(record_path, base) - writer.writerow((record_path, '', '')) - return record_path - - def check_installed_files(self): - """ - Checks that the hashes and sizes of the files in ``RECORD`` are - matched by the files themselves. Returns a (possibly empty) list of - mismatches. Each entry in the mismatch list will be a tuple consisting - of the path, 'exists', 'size' or 'hash' according to what didn't match - (existence is checked first, then size, then hash), the expected - value and the actual value. - """ - mismatches = [] - base = os.path.dirname(self.path) - record_path = self.get_distinfo_file('RECORD') - for path, hash_value, size in self.list_installed_files(): - if not os.path.isabs(path): - path = os.path.join(base, path) - if path == record_path: - continue - if not os.path.exists(path): - mismatches.append((path, 'exists', True, False)) - elif os.path.isfile(path): - actual_size = str(os.path.getsize(path)) - if size and actual_size != size: - mismatches.append((path, 'size', size, actual_size)) - elif hash_value: - if '=' in hash_value: - hasher = hash_value.split('=', 1)[0] - else: - hasher = None - - with open(path, 'rb') as f: - actual_hash = self.get_hash(f.read(), hasher) - if actual_hash != hash_value: - mismatches.append((path, 'hash', hash_value, actual_hash)) - return mismatches - - @cached_property - def shared_locations(self): - """ - A dictionary of shared locations whose keys are in the set 'prefix', - 'purelib', 'platlib', 'scripts', 'headers', 'data' and 'namespace'. - The corresponding value is the absolute path of that category for - this distribution, and takes into account any paths selected by the - user at installation time (e.g. via command-line arguments). In the - case of the 'namespace' key, this would be a list of absolute paths - for the roots of namespace packages in this distribution. - - The first time this property is accessed, the relevant information is - read from the SHARED file in the .dist-info directory. - """ - result = {} - shared_path = os.path.join(self.path, 'SHARED') - if os.path.isfile(shared_path): - with codecs.open(shared_path, 'r', encoding='utf-8') as f: - lines = f.read().splitlines() - for line in lines: - key, value = line.split('=', 1) - if key == 'namespace': - result.setdefault(key, []).append(value) - else: - result[key] = value - return result - - def write_shared_locations(self, paths, dry_run=False): - """ - Write shared location information to the SHARED file in .dist-info. - :param paths: A dictionary as described in the documentation for - :meth:`shared_locations`. - :param dry_run: If True, the action is logged but no file is actually - written. - :return: The path of the file written to. - """ - shared_path = os.path.join(self.path, 'SHARED') - logger.info('creating %s', shared_path) - if dry_run: - return None - lines = [] - for key in ('prefix', 'lib', 'headers', 'scripts', 'data'): - path = paths[key] - if os.path.isdir(paths[key]): - lines.append('%s=%s' % (key, path)) - for ns in paths.get('namespace', ()): - lines.append('namespace=%s' % ns) - - with codecs.open(shared_path, 'w', encoding='utf-8') as f: - f.write('\n'.join(lines)) - return shared_path - - def get_distinfo_resource(self, path): - if path not in DIST_FILES: - raise DistlibException('invalid path for a dist-info file: ' - '%r at %r' % (path, self.path)) - finder = resources.finder_for_path(self.path) - if finder is None: - raise DistlibException('Unable to get a finder for %s' % self.path) - return finder.find(path) - - def get_distinfo_file(self, path): - """ - Returns a path located under the ``.dist-info`` directory. Returns a - string representing the path. - - :parameter path: a ``'/'``-separated path relative to the - ``.dist-info`` directory or an absolute path; - If *path* is an absolute path and doesn't start - with the ``.dist-info`` directory path, - a :class:`DistlibException` is raised - :type path: str - :rtype: str - """ - # Check if it is an absolute path # XXX use relpath, add tests - if path.find(os.sep) >= 0: - # it's an absolute path? - distinfo_dirname, path = path.split(os.sep)[-2:] - if distinfo_dirname != self.path.split(os.sep)[-1]: - raise DistlibException( - 'dist-info file %r does not belong to the %r %s ' - 'distribution' % (path, self.name, self.version)) - - # The file must be relative - if path not in DIST_FILES: - raise DistlibException('invalid path for a dist-info file: ' - '%r at %r' % (path, self.path)) - - return os.path.join(self.path, path) - - def list_distinfo_files(self): - """ - Iterates over the ``RECORD`` entries and returns paths for each line if - the path is pointing to a file located in the ``.dist-info`` directory - or one of its subdirectories. - - :returns: iterator of paths - """ - base = os.path.dirname(self.path) - for path, checksum, size in self._get_records(): - # XXX add separator or use real relpath algo - if not os.path.isabs(path): - path = os.path.join(base, path) - if path.startswith(self.path): - yield path - - def __eq__(self, other): - return (isinstance(other, InstalledDistribution) and - self.path == other.path) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - __hash__ = object.__hash__ - - -class EggInfoDistribution(BaseInstalledDistribution): - """Created with the *path* of the ``.egg-info`` directory or file provided - to the constructor. It reads the metadata contained in the file itself, or - if the given path happens to be a directory, the metadata is read from the - file ``PKG-INFO`` under that directory.""" - - requested = True # as we have no way of knowing, assume it was - shared_locations = {} - - def __init__(self, path, env=None): - def set_name_and_version(s, n, v): - s.name = n - s.key = n.lower() # for case-insensitive comparisons - s.version = v - - self.path = path - self.dist_path = env - if env and env._cache_enabled and path in env._cache_egg.path: - metadata = env._cache_egg.path[path].metadata - set_name_and_version(self, metadata.name, metadata.version) - else: - metadata = self._get_metadata(path) - - # Need to be set before caching - set_name_and_version(self, metadata.name, metadata.version) - - if env and env._cache_enabled: - env._cache_egg.add(self) - super(EggInfoDistribution, self).__init__(metadata, path, env) - - def _get_metadata(self, path): - requires = None - - def parse_requires_data(data): - """Create a list of dependencies from a requires.txt file. - - *data*: the contents of a setuptools-produced requires.txt file. - """ - reqs = [] - lines = data.splitlines() - for line in lines: - line = line.strip() - if line.startswith('['): - logger.warning('Unexpected line: quitting requirement scan: %r', - line) - break - r = parse_requirement(line) - if not r: - logger.warning('Not recognised as a requirement: %r', line) - continue - if r.extras: - logger.warning('extra requirements in requires.txt are ' - 'not supported') - if not r.constraints: - reqs.append(r.name) - else: - cons = ', '.join('%s%s' % c for c in r.constraints) - reqs.append('%s (%s)' % (r.name, cons)) - return reqs - - def parse_requires_path(req_path): - """Create a list of dependencies from a requires.txt file. - - *req_path*: the path to a setuptools-produced requires.txt file. - """ - - reqs = [] - try: - with codecs.open(req_path, 'r', 'utf-8') as fp: - reqs = parse_requires_data(fp.read()) - except IOError: - pass - return reqs - - if path.endswith('.egg'): - if os.path.isdir(path): - meta_path = os.path.join(path, 'EGG-INFO', 'PKG-INFO') - metadata = Metadata(path=meta_path, scheme='legacy') - req_path = os.path.join(path, 'EGG-INFO', 'requires.txt') - requires = parse_requires_path(req_path) - else: - # FIXME handle the case where zipfile is not available - zipf = zipimport.zipimporter(path) - fileobj = StringIO( - zipf.get_data('EGG-INFO/PKG-INFO').decode('utf8')) - metadata = Metadata(fileobj=fileobj, scheme='legacy') - try: - data = zipf.get_data('EGG-INFO/requires.txt') - requires = parse_requires_data(data.decode('utf-8')) - except IOError: - requires = None - elif path.endswith('.egg-info'): - if os.path.isdir(path): - req_path = os.path.join(path, 'requires.txt') - requires = parse_requires_path(req_path) - path = os.path.join(path, 'PKG-INFO') - metadata = Metadata(path=path, scheme='legacy') - else: - raise DistlibException('path must end with .egg-info or .egg, ' - 'got %r' % path) - - if requires: - metadata.add_requirements(requires) - return metadata - - def __repr__(self): - return '' % ( - self.name, self.version, self.path) - - def __str__(self): - return "%s %s" % (self.name, self.version) - - def check_installed_files(self): - """ - Checks that the hashes and sizes of the files in ``RECORD`` are - matched by the files themselves. Returns a (possibly empty) list of - mismatches. Each entry in the mismatch list will be a tuple consisting - of the path, 'exists', 'size' or 'hash' according to what didn't match - (existence is checked first, then size, then hash), the expected - value and the actual value. - """ - mismatches = [] - record_path = os.path.join(self.path, 'installed-files.txt') - if os.path.exists(record_path): - for path, _, _ in self.list_installed_files(): - if path == record_path: - continue - if not os.path.exists(path): - mismatches.append((path, 'exists', True, False)) - return mismatches - - def list_installed_files(self): - """ - Iterates over the ``installed-files.txt`` entries and returns a tuple - ``(path, hash, size)`` for each line. - - :returns: a list of (path, hash, size) - """ - - def _md5(path): - f = open(path, 'rb') - try: - content = f.read() - finally: - f.close() - return hashlib.md5(content).hexdigest() - - def _size(path): - return os.stat(path).st_size - - record_path = os.path.join(self.path, 'installed-files.txt') - result = [] - if os.path.exists(record_path): - with codecs.open(record_path, 'r', encoding='utf-8') as f: - for line in f: - line = line.strip() - p = os.path.normpath(os.path.join(self.path, line)) - # "./" is present as a marker between installed files - # and installation metadata files - if not os.path.exists(p): - logger.warning('Non-existent file: %s', p) - if p.endswith(('.pyc', '.pyo')): - continue - #otherwise fall through and fail - if not os.path.isdir(p): - result.append((p, _md5(p), _size(p))) - result.append((record_path, None, None)) - return result - - def list_distinfo_files(self, absolute=False): - """ - Iterates over the ``installed-files.txt`` entries and returns paths for - each line if the path is pointing to a file located in the - ``.egg-info`` directory or one of its subdirectories. - - :parameter absolute: If *absolute* is ``True``, each returned path is - transformed into a local absolute path. Otherwise the - raw value from ``installed-files.txt`` is returned. - :type absolute: boolean - :returns: iterator of paths - """ - record_path = os.path.join(self.path, 'installed-files.txt') - skip = True - with codecs.open(record_path, 'r', encoding='utf-8') as f: - for line in f: - line = line.strip() - if line == './': - skip = False - continue - if not skip: - p = os.path.normpath(os.path.join(self.path, line)) - if p.startswith(self.path): - if absolute: - yield p - else: - yield line - - def __eq__(self, other): - return (isinstance(other, EggInfoDistribution) and - self.path == other.path) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - __hash__ = object.__hash__ - -new_dist_class = InstalledDistribution -old_dist_class = EggInfoDistribution - - -class DependencyGraph(object): - """ - Represents a dependency graph between distributions. - - The dependency relationships are stored in an ``adjacency_list`` that maps - distributions to a list of ``(other, label)`` tuples where ``other`` - is a distribution and the edge is labeled with ``label`` (i.e. the version - specifier, if such was provided). Also, for more efficient traversal, for - every distribution ``x``, a list of predecessors is kept in - ``reverse_list[x]``. An edge from distribution ``a`` to - distribution ``b`` means that ``a`` depends on ``b``. If any missing - dependencies are found, they are stored in ``missing``, which is a - dictionary that maps distributions to a list of requirements that were not - provided by any other distributions. - """ - - def __init__(self): - self.adjacency_list = {} - self.reverse_list = {} - self.missing = {} - - def add_distribution(self, distribution): - """Add the *distribution* to the graph. - - :type distribution: :class:`distutils2.database.InstalledDistribution` - or :class:`distutils2.database.EggInfoDistribution` - """ - self.adjacency_list[distribution] = [] - self.reverse_list[distribution] = [] - #self.missing[distribution] = [] - - def add_edge(self, x, y, label=None): - """Add an edge from distribution *x* to distribution *y* with the given - *label*. - - :type x: :class:`distutils2.database.InstalledDistribution` or - :class:`distutils2.database.EggInfoDistribution` - :type y: :class:`distutils2.database.InstalledDistribution` or - :class:`distutils2.database.EggInfoDistribution` - :type label: ``str`` or ``None`` - """ - self.adjacency_list[x].append((y, label)) - # multiple edges are allowed, so be careful - if x not in self.reverse_list[y]: - self.reverse_list[y].append(x) - - def add_missing(self, distribution, requirement): - """ - Add a missing *requirement* for the given *distribution*. - - :type distribution: :class:`distutils2.database.InstalledDistribution` - or :class:`distutils2.database.EggInfoDistribution` - :type requirement: ``str`` - """ - logger.debug('%s missing %r', distribution, requirement) - self.missing.setdefault(distribution, []).append(requirement) - - def _repr_dist(self, dist): - return '%s %s' % (dist.name, dist.version) - - def repr_node(self, dist, level=1): - """Prints only a subgraph""" - output = [self._repr_dist(dist)] - for other, label in self.adjacency_list[dist]: - dist = self._repr_dist(other) - if label is not None: - dist = '%s [%s]' % (dist, label) - output.append(' ' * level + str(dist)) - suboutput = self.repr_node(other, level + 1) - subs = suboutput.split('\n') - output.extend(subs[1:]) - return '\n'.join(output) - - def to_dot(self, f, skip_disconnected=True): - """Writes a DOT output for the graph to the provided file *f*. - - If *skip_disconnected* is set to ``True``, then all distributions - that are not dependent on any other distribution are skipped. - - :type f: has to support ``file``-like operations - :type skip_disconnected: ``bool`` - """ - disconnected = [] - - f.write("digraph dependencies {\n") - for dist, adjs in self.adjacency_list.items(): - if len(adjs) == 0 and not skip_disconnected: - disconnected.append(dist) - for other, label in adjs: - if not label is None: - f.write('"%s" -> "%s" [label="%s"]\n' % - (dist.name, other.name, label)) - else: - f.write('"%s" -> "%s"\n' % (dist.name, other.name)) - if not skip_disconnected and len(disconnected) > 0: - f.write('subgraph disconnected {\n') - f.write('label = "Disconnected"\n') - f.write('bgcolor = red\n') - - for dist in disconnected: - f.write('"%s"' % dist.name) - f.write('\n') - f.write('}\n') - f.write('}\n') - - def topological_sort(self): - """ - Perform a topological sort of the graph. - :return: A tuple, the first element of which is a topologically sorted - list of distributions, and the second element of which is a - list of distributions that cannot be sorted because they have - circular dependencies and so form a cycle. - """ - result = [] - # Make a shallow copy of the adjacency list - alist = {} - for k, v in self.adjacency_list.items(): - alist[k] = v[:] - while True: - # See what we can remove in this run - to_remove = [] - for k, v in list(alist.items())[:]: - if not v: - to_remove.append(k) - del alist[k] - if not to_remove: - # What's left in alist (if anything) is a cycle. - break - # Remove from the adjacency list of others - for k, v in alist.items(): - alist[k] = [(d, r) for d, r in v if d not in to_remove] - logger.debug('Moving to result: %s', - ['%s (%s)' % (d.name, d.version) for d in to_remove]) - result.extend(to_remove) - return result, list(alist.keys()) - - def __repr__(self): - """Representation of the graph""" - output = [] - for dist, adjs in self.adjacency_list.items(): - output.append(self.repr_node(dist)) - return '\n'.join(output) - - -def make_graph(dists, scheme='default'): - """Makes a dependency graph from the given distributions. - - :parameter dists: a list of distributions - :type dists: list of :class:`distutils2.database.InstalledDistribution` and - :class:`distutils2.database.EggInfoDistribution` instances - :rtype: a :class:`DependencyGraph` instance - """ - scheme = get_scheme(scheme) - graph = DependencyGraph() - provided = {} # maps names to lists of (version, dist) tuples - - # first, build the graph and find out what's provided - for dist in dists: - graph.add_distribution(dist) - - for p in dist.provides: - name, version = parse_name_and_version(p) - logger.debug('Add to provided: %s, %s, %s', name, version, dist) - provided.setdefault(name, []).append((version, dist)) - - # now make the edges - for dist in dists: - requires = (dist.run_requires | dist.meta_requires | - dist.build_requires | dist.dev_requires) - for req in requires: - try: - matcher = scheme.matcher(req) - except UnsupportedVersionError: - # XXX compat-mode if cannot read the version - logger.warning('could not read version %r - using name only', - req) - name = req.split()[0] - matcher = scheme.matcher(name) - - name = matcher.key # case-insensitive - - matched = False - if name in provided: - for version, provider in provided[name]: - try: - match = matcher.match(version) - except UnsupportedVersionError: - match = False - - if match: - graph.add_edge(dist, provider, req) - matched = True - break - if not matched: - graph.add_missing(dist, req) - return graph - - -def get_dependent_dists(dists, dist): - """Recursively generate a list of distributions from *dists* that are - dependent on *dist*. - - :param dists: a list of distributions - :param dist: a distribution, member of *dists* for which we are interested - """ - if dist not in dists: - raise DistlibException('given distribution %r is not a member ' - 'of the list' % dist.name) - graph = make_graph(dists) - - dep = [dist] # dependent distributions - todo = graph.reverse_list[dist] # list of nodes we should inspect - - while todo: - d = todo.pop() - dep.append(d) - for succ in graph.reverse_list[d]: - if succ not in dep: - todo.append(succ) - - dep.pop(0) # remove dist from dep, was there to prevent infinite loops - return dep - - -def get_required_dists(dists, dist): - """Recursively generate a list of distributions from *dists* that are - required by *dist*. - - :param dists: a list of distributions - :param dist: a distribution, member of *dists* for which we are interested - """ - if dist not in dists: - raise DistlibException('given distribution %r is not a member ' - 'of the list' % dist.name) - graph = make_graph(dists) - - req = [] # required distributions - todo = graph.adjacency_list[dist] # list of nodes we should inspect - - while todo: - d = todo.pop()[0] - req.append(d) - for pred in graph.adjacency_list[d]: - if pred not in req: - todo.append(pred) - - return req - - -def make_dist(name, version, **kwargs): - """ - A convenience method for making a dist given just a name and version. - """ - summary = kwargs.pop('summary', 'Placeholder for summary') - md = Metadata(**kwargs) - md.name = name - md.version = version - md.summary = summary or 'Placeholder for summary' - return Distribution(md) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/index.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/index.py deleted file mode 100644 index 6803dd2..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/index.py +++ /dev/null @@ -1,515 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -import hashlib -import logging -import os -import shutil -import subprocess -import tempfile -try: - from threading import Thread -except ImportError: - from dummy_threading import Thread - -from . import DistlibException -from .compat import (HTTPBasicAuthHandler, Request, HTTPPasswordMgr, - urlparse, build_opener, string_types) -from .util import cached_property, zip_dir, ServerProxy - -logger = logging.getLogger(__name__) - -DEFAULT_INDEX = 'https://pypi.python.org/pypi' -DEFAULT_REALM = 'pypi' - -class PackageIndex(object): - """ - This class represents a package index compatible with PyPI, the Python - Package Index. - """ - - boundary = b'----------ThIs_Is_tHe_distlib_index_bouNdaRY_$' - - def __init__(self, url=None): - """ - Initialise an instance. - - :param url: The URL of the index. If not specified, the URL for PyPI is - used. - """ - self.url = url or DEFAULT_INDEX - self.read_configuration() - scheme, netloc, path, params, query, frag = urlparse(self.url) - if params or query or frag or scheme not in ('http', 'https'): - raise DistlibException('invalid repository: %s' % self.url) - self.password_handler = None - self.ssl_verifier = None - self.gpg = None - self.gpg_home = None - self.rpc_proxy = None - with open(os.devnull, 'w') as sink: - # Use gpg by default rather than gpg2, as gpg2 insists on - # prompting for passwords - for s in ('gpg', 'gpg2'): - try: - rc = subprocess.check_call([s, '--version'], stdout=sink, - stderr=sink) - if rc == 0: - self.gpg = s - break - except OSError: - pass - - def _get_pypirc_command(self): - """ - Get the distutils command for interacting with PyPI configurations. - :return: the command. - """ - from distutils.core import Distribution - from distutils.config import PyPIRCCommand - d = Distribution() - return PyPIRCCommand(d) - - def read_configuration(self): - """ - Read the PyPI access configuration as supported by distutils, getting - PyPI to do the actual work. This populates ``username``, ``password``, - ``realm`` and ``url`` attributes from the configuration. - """ - # get distutils to do the work - c = self._get_pypirc_command() - c.repository = self.url - cfg = c._read_pypirc() - self.username = cfg.get('username') - self.password = cfg.get('password') - self.realm = cfg.get('realm', 'pypi') - self.url = cfg.get('repository', self.url) - - def save_configuration(self): - """ - Save the PyPI access configuration. You must have set ``username`` and - ``password`` attributes before calling this method. - - Again, distutils is used to do the actual work. - """ - self.check_credentials() - # get distutils to do the work - c = self._get_pypirc_command() - c._store_pypirc(self.username, self.password) - - def check_credentials(self): - """ - Check that ``username`` and ``password`` have been set, and raise an - exception if not. - """ - if self.username is None or self.password is None: - raise DistlibException('username and password must be set') - pm = HTTPPasswordMgr() - _, netloc, _, _, _, _ = urlparse(self.url) - pm.add_password(self.realm, netloc, self.username, self.password) - self.password_handler = HTTPBasicAuthHandler(pm) - - def register(self, metadata): - """ - Register a distribution on PyPI, using the provided metadata. - - :param metadata: A :class:`Metadata` instance defining at least a name - and version number for the distribution to be - registered. - :return: The HTTP response received from PyPI upon submission of the - request. - """ - self.check_credentials() - metadata.validate() - d = metadata.todict() - d[':action'] = 'verify' - request = self.encode_request(d.items(), []) - response = self.send_request(request) - d[':action'] = 'submit' - request = self.encode_request(d.items(), []) - return self.send_request(request) - - def _reader(self, name, stream, outbuf): - """ - Thread runner for reading lines of from a subprocess into a buffer. - - :param name: The logical name of the stream (used for logging only). - :param stream: The stream to read from. This will typically a pipe - connected to the output stream of a subprocess. - :param outbuf: The list to append the read lines to. - """ - while True: - s = stream.readline() - if not s: - break - s = s.decode('utf-8').rstrip() - outbuf.append(s) - logger.debug('%s: %s' % (name, s)) - stream.close() - - def get_sign_command(self, filename, signer, sign_password, - keystore=None): - """ - Return a suitable command for signing a file. - - :param filename: The pathname to the file to be signed. - :param signer: The identifier of the signer of the file. - :param sign_password: The passphrase for the signer's - private key used for signing. - :param keystore: The path to a directory which contains the keys - used in verification. If not specified, the - instance's ``gpg_home`` attribute is used instead. - :return: The signing command as a list suitable to be - passed to :class:`subprocess.Popen`. - """ - cmd = [self.gpg, '--status-fd', '2', '--no-tty'] - if keystore is None: - keystore = self.gpg_home - if keystore: - cmd.extend(['--homedir', keystore]) - if sign_password is not None: - cmd.extend(['--batch', '--passphrase-fd', '0']) - td = tempfile.mkdtemp() - sf = os.path.join(td, os.path.basename(filename) + '.asc') - cmd.extend(['--detach-sign', '--armor', '--local-user', - signer, '--output', sf, filename]) - logger.debug('invoking: %s', ' '.join(cmd)) - return cmd, sf - - def run_command(self, cmd, input_data=None): - """ - Run a command in a child process , passing it any input data specified. - - :param cmd: The command to run. - :param input_data: If specified, this must be a byte string containing - data to be sent to the child process. - :return: A tuple consisting of the subprocess' exit code, a list of - lines read from the subprocess' ``stdout``, and a list of - lines read from the subprocess' ``stderr``. - """ - kwargs = { - 'stdout': subprocess.PIPE, - 'stderr': subprocess.PIPE, - } - if input_data is not None: - kwargs['stdin'] = subprocess.PIPE - stdout = [] - stderr = [] - p = subprocess.Popen(cmd, **kwargs) - # We don't use communicate() here because we may need to - # get clever with interacting with the command - t1 = Thread(target=self._reader, args=('stdout', p.stdout, stdout)) - t1.start() - t2 = Thread(target=self._reader, args=('stderr', p.stderr, stderr)) - t2.start() - if input_data is not None: - p.stdin.write(input_data) - p.stdin.close() - - p.wait() - t1.join() - t2.join() - return p.returncode, stdout, stderr - - def sign_file(self, filename, signer, sign_password, keystore=None): - """ - Sign a file. - - :param filename: The pathname to the file to be signed. - :param signer: The identifier of the signer of the file. - :param sign_password: The passphrase for the signer's - private key used for signing. - :param keystore: The path to a directory which contains the keys - used in signing. If not specified, the instance's - ``gpg_home`` attribute is used instead. - :return: The absolute pathname of the file where the signature is - stored. - """ - cmd, sig_file = self.get_sign_command(filename, signer, sign_password, - keystore) - rc, stdout, stderr = self.run_command(cmd, - sign_password.encode('utf-8')) - if rc != 0: - raise DistlibException('sign command failed with error ' - 'code %s' % rc) - return sig_file - - def upload_file(self, metadata, filename, signer=None, sign_password=None, - filetype='sdist', pyversion='source', keystore=None): - """ - Upload a release file to the index. - - :param metadata: A :class:`Metadata` instance defining at least a name - and version number for the file to be uploaded. - :param filename: The pathname of the file to be uploaded. - :param signer: The identifier of the signer of the file. - :param sign_password: The passphrase for the signer's - private key used for signing. - :param filetype: The type of the file being uploaded. This is the - distutils command which produced that file, e.g. - ``sdist`` or ``bdist_wheel``. - :param pyversion: The version of Python which the release relates - to. For code compatible with any Python, this would - be ``source``, otherwise it would be e.g. ``3.2``. - :param keystore: The path to a directory which contains the keys - used in signing. If not specified, the instance's - ``gpg_home`` attribute is used instead. - :return: The HTTP response received from PyPI upon submission of the - request. - """ - self.check_credentials() - if not os.path.exists(filename): - raise DistlibException('not found: %s' % filename) - metadata.validate() - d = metadata.todict() - sig_file = None - if signer: - if not self.gpg: - logger.warning('no signing program available - not signed') - else: - sig_file = self.sign_file(filename, signer, sign_password, - keystore) - with open(filename, 'rb') as f: - file_data = f.read() - md5_digest = hashlib.md5(file_data).hexdigest() - sha256_digest = hashlib.sha256(file_data).hexdigest() - d.update({ - ':action': 'file_upload', - 'protocol_version': '1', - 'filetype': filetype, - 'pyversion': pyversion, - 'md5_digest': md5_digest, - 'sha256_digest': sha256_digest, - }) - files = [('content', os.path.basename(filename), file_data)] - if sig_file: - with open(sig_file, 'rb') as f: - sig_data = f.read() - files.append(('gpg_signature', os.path.basename(sig_file), - sig_data)) - shutil.rmtree(os.path.dirname(sig_file)) - request = self.encode_request(d.items(), files) - return self.send_request(request) - - def upload_documentation(self, metadata, doc_dir): - """ - Upload documentation to the index. - - :param metadata: A :class:`Metadata` instance defining at least a name - and version number for the documentation to be - uploaded. - :param doc_dir: The pathname of the directory which contains the - documentation. This should be the directory that - contains the ``index.html`` for the documentation. - :return: The HTTP response received from PyPI upon submission of the - request. - """ - self.check_credentials() - if not os.path.isdir(doc_dir): - raise DistlibException('not a directory: %r' % doc_dir) - fn = os.path.join(doc_dir, 'index.html') - if not os.path.exists(fn): - raise DistlibException('not found: %r' % fn) - metadata.validate() - name, version = metadata.name, metadata.version - zip_data = zip_dir(doc_dir).getvalue() - fields = [(':action', 'doc_upload'), - ('name', name), ('version', version)] - files = [('content', name, zip_data)] - request = self.encode_request(fields, files) - return self.send_request(request) - - def get_verify_command(self, signature_filename, data_filename, - keystore=None): - """ - Return a suitable command for verifying a file. - - :param signature_filename: The pathname to the file containing the - signature. - :param data_filename: The pathname to the file containing the - signed data. - :param keystore: The path to a directory which contains the keys - used in verification. If not specified, the - instance's ``gpg_home`` attribute is used instead. - :return: The verifying command as a list suitable to be - passed to :class:`subprocess.Popen`. - """ - cmd = [self.gpg, '--status-fd', '2', '--no-tty'] - if keystore is None: - keystore = self.gpg_home - if keystore: - cmd.extend(['--homedir', keystore]) - cmd.extend(['--verify', signature_filename, data_filename]) - logger.debug('invoking: %s', ' '.join(cmd)) - return cmd - - def verify_signature(self, signature_filename, data_filename, - keystore=None): - """ - Verify a signature for a file. - - :param signature_filename: The pathname to the file containing the - signature. - :param data_filename: The pathname to the file containing the - signed data. - :param keystore: The path to a directory which contains the keys - used in verification. If not specified, the - instance's ``gpg_home`` attribute is used instead. - :return: True if the signature was verified, else False. - """ - if not self.gpg: - raise DistlibException('verification unavailable because gpg ' - 'unavailable') - cmd = self.get_verify_command(signature_filename, data_filename, - keystore) - rc, stdout, stderr = self.run_command(cmd) - if rc not in (0, 1): - raise DistlibException('verify command failed with error ' - 'code %s' % rc) - return rc == 0 - - def download_file(self, url, destfile, digest=None, reporthook=None): - """ - This is a convenience method for downloading a file from an URL. - Normally, this will be a file from the index, though currently - no check is made for this (i.e. a file can be downloaded from - anywhere). - - The method is just like the :func:`urlretrieve` function in the - standard library, except that it allows digest computation to be - done during download and checking that the downloaded data - matched any expected value. - - :param url: The URL of the file to be downloaded (assumed to be - available via an HTTP GET request). - :param destfile: The pathname where the downloaded file is to be - saved. - :param digest: If specified, this must be a (hasher, value) - tuple, where hasher is the algorithm used (e.g. - ``'md5'``) and ``value`` is the expected value. - :param reporthook: The same as for :func:`urlretrieve` in the - standard library. - """ - if digest is None: - digester = None - logger.debug('No digest specified') - else: - if isinstance(digest, (list, tuple)): - hasher, digest = digest - else: - hasher = 'md5' - digester = getattr(hashlib, hasher)() - logger.debug('Digest specified: %s' % digest) - # The following code is equivalent to urlretrieve. - # We need to do it this way so that we can compute the - # digest of the file as we go. - with open(destfile, 'wb') as dfp: - # addinfourl is not a context manager on 2.x - # so we have to use try/finally - sfp = self.send_request(Request(url)) - try: - headers = sfp.info() - blocksize = 8192 - size = -1 - read = 0 - blocknum = 0 - if "content-length" in headers: - size = int(headers["Content-Length"]) - if reporthook: - reporthook(blocknum, blocksize, size) - while True: - block = sfp.read(blocksize) - if not block: - break - read += len(block) - dfp.write(block) - if digester: - digester.update(block) - blocknum += 1 - if reporthook: - reporthook(blocknum, blocksize, size) - finally: - sfp.close() - - # check that we got the whole file, if we can - if size >= 0 and read < size: - raise DistlibException( - 'retrieval incomplete: got only %d out of %d bytes' - % (read, size)) - # if we have a digest, it must match. - if digester: - actual = digester.hexdigest() - if digest != actual: - raise DistlibException('%s digest mismatch for %s: expected ' - '%s, got %s' % (hasher, destfile, - digest, actual)) - logger.debug('Digest verified: %s', digest) - - def send_request(self, req): - """ - Send a standard library :class:`Request` to PyPI and return its - response. - - :param req: The request to send. - :return: The HTTP response from PyPI (a standard library HTTPResponse). - """ - handlers = [] - if self.password_handler: - handlers.append(self.password_handler) - if self.ssl_verifier: - handlers.append(self.ssl_verifier) - opener = build_opener(*handlers) - return opener.open(req) - - def encode_request(self, fields, files): - """ - Encode fields and files for posting to an HTTP server. - - :param fields: The fields to send as a list of (fieldname, value) - tuples. - :param files: The files to send as a list of (fieldname, filename, - file_bytes) tuple. - """ - # Adapted from packaging, which in turn was adapted from - # http://code.activestate.com/recipes/146306 - - parts = [] - boundary = self.boundary - for k, values in fields: - if not isinstance(values, (list, tuple)): - values = [values] - - for v in values: - parts.extend(( - b'--' + boundary, - ('Content-Disposition: form-data; name="%s"' % - k).encode('utf-8'), - b'', - v.encode('utf-8'))) - for key, filename, value in files: - parts.extend(( - b'--' + boundary, - ('Content-Disposition: form-data; name="%s"; filename="%s"' % - (key, filename)).encode('utf-8'), - b'', - value)) - - parts.extend((b'--' + boundary + b'--', b'')) - - body = b'\r\n'.join(parts) - ct = b'multipart/form-data; boundary=' + boundary - headers = { - 'Content-type': ct, - 'Content-length': str(len(body)) - } - return Request(self.url, body, headers) - - def search(self, terms, operator=None): - if isinstance(terms, string_types): - terms = {'name': terms} - if self.rpc_proxy is None: - self.rpc_proxy = ServerProxy(self.url, timeout=3.0) - return self.rpc_proxy.search(terms, operator or 'and') diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/locators.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/locators.py deleted file mode 100644 index 14789ef..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/locators.py +++ /dev/null @@ -1,1283 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2015 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# - -import gzip -from io import BytesIO -import json -import logging -import os -import posixpath -import re -try: - import threading -except ImportError: # pragma: no cover - import dummy_threading as threading -import zlib - -from . import DistlibException -from .compat import (urljoin, urlparse, urlunparse, url2pathname, pathname2url, - queue, quote, unescape, string_types, build_opener, - HTTPRedirectHandler as BaseRedirectHandler, text_type, - Request, HTTPError, URLError) -from .database import Distribution, DistributionPath, make_dist -from .metadata import Metadata -from .util import (cached_property, parse_credentials, ensure_slash, - split_filename, get_project_data, parse_requirement, - parse_name_and_version, ServerProxy, normalize_name) -from .version import get_scheme, UnsupportedVersionError -from .wheel import Wheel, is_compatible - -logger = logging.getLogger(__name__) - -HASHER_HASH = re.compile('^(\w+)=([a-f0-9]+)') -CHARSET = re.compile(r';\s*charset\s*=\s*(.*)\s*$', re.I) -HTML_CONTENT_TYPE = re.compile('text/html|application/x(ht)?ml') -DEFAULT_INDEX = 'https://pypi.python.org/pypi' - -def get_all_distribution_names(url=None): - """ - Return all distribution names known by an index. - :param url: The URL of the index. - :return: A list of all known distribution names. - """ - if url is None: - url = DEFAULT_INDEX - client = ServerProxy(url, timeout=3.0) - return client.list_packages() - -class RedirectHandler(BaseRedirectHandler): - """ - A class to work around a bug in some Python 3.2.x releases. - """ - # There's a bug in the base version for some 3.2.x - # (e.g. 3.2.2 on Ubuntu Oneiric). If a Location header - # returns e.g. /abc, it bails because it says the scheme '' - # is bogus, when actually it should use the request's - # URL for the scheme. See Python issue #13696. - def http_error_302(self, req, fp, code, msg, headers): - # Some servers (incorrectly) return multiple Location headers - # (so probably same goes for URI). Use first header. - newurl = None - for key in ('location', 'uri'): - if key in headers: - newurl = headers[key] - break - if newurl is None: - return - urlparts = urlparse(newurl) - if urlparts.scheme == '': - newurl = urljoin(req.get_full_url(), newurl) - if hasattr(headers, 'replace_header'): - headers.replace_header(key, newurl) - else: - headers[key] = newurl - return BaseRedirectHandler.http_error_302(self, req, fp, code, msg, - headers) - - http_error_301 = http_error_303 = http_error_307 = http_error_302 - -class Locator(object): - """ - A base class for locators - things that locate distributions. - """ - source_extensions = ('.tar.gz', '.tar.bz2', '.tar', '.zip', '.tgz', '.tbz') - binary_extensions = ('.egg', '.exe', '.whl') - excluded_extensions = ('.pdf',) - - # A list of tags indicating which wheels you want to match. The default - # value of None matches against the tags compatible with the running - # Python. If you want to match other values, set wheel_tags on a locator - # instance to a list of tuples (pyver, abi, arch) which you want to match. - wheel_tags = None - - downloadable_extensions = source_extensions + ('.whl',) - - def __init__(self, scheme='default'): - """ - Initialise an instance. - :param scheme: Because locators look for most recent versions, they - need to know the version scheme to use. This specifies - the current PEP-recommended scheme - use ``'legacy'`` - if you need to support existing distributions on PyPI. - """ - self._cache = {} - self.scheme = scheme - # Because of bugs in some of the handlers on some of the platforms, - # we use our own opener rather than just using urlopen. - self.opener = build_opener(RedirectHandler()) - # If get_project() is called from locate(), the matcher instance - # is set from the requirement passed to locate(). See issue #18 for - # why this can be useful to know. - self.matcher = None - self.errors = queue.Queue() - - def get_errors(self): - """ - Return any errors which have occurred. - """ - result = [] - while not self.errors.empty(): # pragma: no cover - try: - e = self.errors.get(False) - result.append(e) - except self.errors.Empty: - continue - self.errors.task_done() - return result - - def clear_errors(self): - """ - Clear any errors which may have been logged. - """ - # Just get the errors and throw them away - self.get_errors() - - def clear_cache(self): - self._cache.clear() - - def _get_scheme(self): - return self._scheme - - def _set_scheme(self, value): - self._scheme = value - - scheme = property(_get_scheme, _set_scheme) - - def _get_project(self, name): - """ - For a given project, get a dictionary mapping available versions to Distribution - instances. - - This should be implemented in subclasses. - - If called from a locate() request, self.matcher will be set to a - matcher for the requirement to satisfy, otherwise it will be None. - """ - raise NotImplementedError('Please implement in the subclass') - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - raise NotImplementedError('Please implement in the subclass') - - def get_project(self, name): - """ - For a given project, get a dictionary mapping available versions to Distribution - instances. - - This calls _get_project to do all the work, and just implements a caching layer on top. - """ - if self._cache is None: - result = self._get_project(name) - elif name in self._cache: - result = self._cache[name] - else: - self.clear_errors() - result = self._get_project(name) - self._cache[name] = result - return result - - def score_url(self, url): - """ - Give an url a score which can be used to choose preferred URLs - for a given project release. - """ - t = urlparse(url) - basename = posixpath.basename(t.path) - compatible = True - is_wheel = basename.endswith('.whl') - if is_wheel: - compatible = is_compatible(Wheel(basename), self.wheel_tags) - return (t.scheme != 'https', 'pypi.python.org' in t.netloc, - is_wheel, compatible, basename) - - def prefer_url(self, url1, url2): - """ - Choose one of two URLs where both are candidates for distribution - archives for the same version of a distribution (for example, - .tar.gz vs. zip). - - The current implementation favours https:// URLs over http://, archives - from PyPI over those from other locations, wheel compatibility (if a - wheel) and then the archive name. - """ - result = url2 - if url1: - s1 = self.score_url(url1) - s2 = self.score_url(url2) - if s1 > s2: - result = url1 - if result != url2: - logger.debug('Not replacing %r with %r', url1, url2) - else: - logger.debug('Replacing %r with %r', url1, url2) - return result - - def split_filename(self, filename, project_name): - """ - Attempt to split a filename in project name, version and Python version. - """ - return split_filename(filename, project_name) - - def convert_url_to_download_info(self, url, project_name): - """ - See if a URL is a candidate for a download URL for a project (the URL - has typically been scraped from an HTML page). - - If it is, a dictionary is returned with keys "name", "version", - "filename" and "url"; otherwise, None is returned. - """ - def same_project(name1, name2): - return normalize_name(name1) == normalize_name(name2) - - result = None - scheme, netloc, path, params, query, frag = urlparse(url) - if frag.lower().startswith('egg='): - logger.debug('%s: version hint in fragment: %r', - project_name, frag) - m = HASHER_HASH.match(frag) - if m: - algo, digest = m.groups() - else: - algo, digest = None, None - origpath = path - if path and path[-1] == '/': - path = path[:-1] - if path.endswith('.whl'): - try: - wheel = Wheel(path) - if is_compatible(wheel, self.wheel_tags): - if project_name is None: - include = True - else: - include = same_project(wheel.name, project_name) - if include: - result = { - 'name': wheel.name, - 'version': wheel.version, - 'filename': wheel.filename, - 'url': urlunparse((scheme, netloc, origpath, - params, query, '')), - 'python-version': ', '.join( - ['.'.join(list(v[2:])) for v in wheel.pyver]), - } - except Exception as e: # pragma: no cover - logger.warning('invalid path for wheel: %s', path) - elif path.endswith(self.downloadable_extensions): - path = filename = posixpath.basename(path) - for ext in self.downloadable_extensions: - if path.endswith(ext): - path = path[:-len(ext)] - t = self.split_filename(path, project_name) - if not t: - logger.debug('No match for project/version: %s', path) - else: - name, version, pyver = t - if not project_name or same_project(project_name, name): - result = { - 'name': name, - 'version': version, - 'filename': filename, - 'url': urlunparse((scheme, netloc, origpath, - params, query, '')), - #'packagetype': 'sdist', - } - if pyver: - result['python-version'] = pyver - break - if result and algo: - result['%s_digest' % algo] = digest - return result - - def _get_digest(self, info): - """ - Get a digest from a dictionary by looking at keys of the form - 'algo_digest'. - - Returns a 2-tuple (algo, digest) if found, else None. Currently - looks only for SHA256, then MD5. - """ - result = None - for algo in ('sha256', 'md5'): - key = '%s_digest' % algo - if key in info: - result = (algo, info[key]) - break - return result - - def _update_version_data(self, result, info): - """ - Update a result dictionary (the final result from _get_project) with a - dictionary for a specific version, which typically holds information - gleaned from a filename or URL for an archive for the distribution. - """ - name = info.pop('name') - version = info.pop('version') - if version in result: - dist = result[version] - md = dist.metadata - else: - dist = make_dist(name, version, scheme=self.scheme) - md = dist.metadata - dist.digest = digest = self._get_digest(info) - url = info['url'] - result['digests'][url] = digest - if md.source_url != info['url']: - md.source_url = self.prefer_url(md.source_url, url) - result['urls'].setdefault(version, set()).add(url) - dist.locator = self - result[version] = dist - - def locate(self, requirement, prereleases=False): - """ - Find the most recent distribution which matches the given - requirement. - - :param requirement: A requirement of the form 'foo (1.0)' or perhaps - 'foo (>= 1.0, < 2.0, != 1.3)' - :param prereleases: If ``True``, allow pre-release versions - to be located. Otherwise, pre-release versions - are not returned. - :return: A :class:`Distribution` instance, or ``None`` if no such - distribution could be located. - """ - result = None - r = parse_requirement(requirement) - if r is None: - raise DistlibException('Not a valid requirement: %r' % requirement) - scheme = get_scheme(self.scheme) - self.matcher = matcher = scheme.matcher(r.requirement) - logger.debug('matcher: %s (%s)', matcher, type(matcher).__name__) - versions = self.get_project(r.name) - if len(versions) > 2: # urls and digests keys are present - # sometimes, versions are invalid - slist = [] - vcls = matcher.version_class - for k in versions: - if k in ('urls', 'digests'): - continue - try: - if not matcher.match(k): - logger.debug('%s did not match %r', matcher, k) - else: - if prereleases or not vcls(k).is_prerelease: - slist.append(k) - else: - logger.debug('skipping pre-release ' - 'version %s of %s', k, matcher.name) - except Exception: # pragma: no cover - logger.warning('error matching %s with %r', matcher, k) - pass # slist.append(k) - if len(slist) > 1: - slist = sorted(slist, key=scheme.key) - if slist: - logger.debug('sorted list: %s', slist) - version = slist[-1] - result = versions[version] - if result: - if r.extras: - result.extras = r.extras - result.download_urls = versions.get('urls', {}).get(version, set()) - d = {} - sd = versions.get('digests', {}) - for url in result.download_urls: - if url in sd: - d[url] = sd[url] - result.digests = d - self.matcher = None - return result - - -class PyPIRPCLocator(Locator): - """ - This locator uses XML-RPC to locate distributions. It therefore - cannot be used with simple mirrors (that only mirror file content). - """ - def __init__(self, url, **kwargs): - """ - Initialise an instance. - - :param url: The URL to use for XML-RPC. - :param kwargs: Passed to the superclass constructor. - """ - super(PyPIRPCLocator, self).__init__(**kwargs) - self.base_url = url - self.client = ServerProxy(url, timeout=3.0) - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - return set(self.client.list_packages()) - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - versions = self.client.package_releases(name, True) - for v in versions: - urls = self.client.release_urls(name, v) - data = self.client.release_data(name, v) - metadata = Metadata(scheme=self.scheme) - metadata.name = data['name'] - metadata.version = data['version'] - metadata.license = data.get('license') - metadata.keywords = data.get('keywords', []) - metadata.summary = data.get('summary') - dist = Distribution(metadata) - if urls: - info = urls[0] - metadata.source_url = info['url'] - dist.digest = self._get_digest(info) - dist.locator = self - result[v] = dist - for info in urls: - url = info['url'] - digest = self._get_digest(info) - result['urls'].setdefault(v, set()).add(url) - result['digests'][url] = digest - return result - -class PyPIJSONLocator(Locator): - """ - This locator uses PyPI's JSON interface. It's very limited in functionality - and probably not worth using. - """ - def __init__(self, url, **kwargs): - super(PyPIJSONLocator, self).__init__(**kwargs) - self.base_url = ensure_slash(url) - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - raise NotImplementedError('Not available from this locator') - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - url = urljoin(self.base_url, '%s/json' % quote(name)) - try: - resp = self.opener.open(url) - data = resp.read().decode() # for now - d = json.loads(data) - md = Metadata(scheme=self.scheme) - data = d['info'] - md.name = data['name'] - md.version = data['version'] - md.license = data.get('license') - md.keywords = data.get('keywords', []) - md.summary = data.get('summary') - dist = Distribution(md) - dist.locator = self - urls = d['urls'] - result[md.version] = dist - for info in d['urls']: - url = info['url'] - dist.download_urls.add(url) - dist.digests[url] = self._get_digest(info) - result['urls'].setdefault(md.version, set()).add(url) - result['digests'][url] = self._get_digest(info) - # Now get other releases - for version, infos in d['releases'].items(): - if version == md.version: - continue # already done - omd = Metadata(scheme=self.scheme) - omd.name = md.name - omd.version = version - odist = Distribution(omd) - odist.locator = self - result[version] = odist - for info in infos: - url = info['url'] - odist.download_urls.add(url) - odist.digests[url] = self._get_digest(info) - result['urls'].setdefault(version, set()).add(url) - result['digests'][url] = self._get_digest(info) -# for info in urls: -# md.source_url = info['url'] -# dist.digest = self._get_digest(info) -# dist.locator = self -# for info in urls: -# url = info['url'] -# result['urls'].setdefault(md.version, set()).add(url) -# result['digests'][url] = self._get_digest(info) - except Exception as e: - self.errors.put(text_type(e)) - logger.exception('JSON fetch failed: %s', e) - return result - - -class Page(object): - """ - This class represents a scraped HTML page. - """ - # The following slightly hairy-looking regex just looks for the contents of - # an anchor link, which has an attribute "href" either immediately preceded - # or immediately followed by a "rel" attribute. The attribute values can be - # declared with double quotes, single quotes or no quotes - which leads to - # the length of the expression. - _href = re.compile(""" -(rel\s*=\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\s\n]*))\s+)? -href\s*=\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\s\n]*)) -(\s+rel\s*=\s*(?:"(?P[^"]*)"|'(?P[^']*)'|(?P[^>\s\n]*)))? -""", re.I | re.S | re.X) - _base = re.compile(r"""]+)""", re.I | re.S) - - def __init__(self, data, url): - """ - Initialise an instance with the Unicode page contents and the URL they - came from. - """ - self.data = data - self.base_url = self.url = url - m = self._base.search(self.data) - if m: - self.base_url = m.group(1) - - _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I) - - @cached_property - def links(self): - """ - Return the URLs of all the links on a page together with information - about their "rel" attribute, for determining which ones to treat as - downloads and which ones to queue for further scraping. - """ - def clean(url): - "Tidy up an URL." - scheme, netloc, path, params, query, frag = urlparse(url) - return urlunparse((scheme, netloc, quote(path), - params, query, frag)) - - result = set() - for match in self._href.finditer(self.data): - d = match.groupdict('') - rel = (d['rel1'] or d['rel2'] or d['rel3'] or - d['rel4'] or d['rel5'] or d['rel6']) - url = d['url1'] or d['url2'] or d['url3'] - url = urljoin(self.base_url, url) - url = unescape(url) - url = self._clean_re.sub(lambda m: '%%%2x' % ord(m.group(0)), url) - result.add((url, rel)) - # We sort the result, hoping to bring the most recent versions - # to the front - result = sorted(result, key=lambda t: t[0], reverse=True) - return result - - -class SimpleScrapingLocator(Locator): - """ - A locator which scrapes HTML pages to locate downloads for a distribution. - This runs multiple threads to do the I/O; performance is at least as good - as pip's PackageFinder, which works in an analogous fashion. - """ - - # These are used to deal with various Content-Encoding schemes. - decoders = { - 'deflate': zlib.decompress, - 'gzip': lambda b: gzip.GzipFile(fileobj=BytesIO(d)).read(), - 'none': lambda b: b, - } - - def __init__(self, url, timeout=None, num_workers=10, **kwargs): - """ - Initialise an instance. - :param url: The root URL to use for scraping. - :param timeout: The timeout, in seconds, to be applied to requests. - This defaults to ``None`` (no timeout specified). - :param num_workers: The number of worker threads you want to do I/O, - This defaults to 10. - :param kwargs: Passed to the superclass. - """ - super(SimpleScrapingLocator, self).__init__(**kwargs) - self.base_url = ensure_slash(url) - self.timeout = timeout - self._page_cache = {} - self._seen = set() - self._to_fetch = queue.Queue() - self._bad_hosts = set() - self.skip_externals = False - self.num_workers = num_workers - self._lock = threading.RLock() - # See issue #45: we need to be resilient when the locator is used - # in a thread, e.g. with concurrent.futures. We can't use self._lock - # as it is for coordinating our internal threads - the ones created - # in _prepare_threads. - self._gplock = threading.RLock() - - def _prepare_threads(self): - """ - Threads are created only when get_project is called, and terminate - before it returns. They are there primarily to parallelise I/O (i.e. - fetching web pages). - """ - self._threads = [] - for i in range(self.num_workers): - t = threading.Thread(target=self._fetch) - t.setDaemon(True) - t.start() - self._threads.append(t) - - def _wait_threads(self): - """ - Tell all the threads to terminate (by sending a sentinel value) and - wait for them to do so. - """ - # Note that you need two loops, since you can't say which - # thread will get each sentinel - for t in self._threads: - self._to_fetch.put(None) # sentinel - for t in self._threads: - t.join() - self._threads = [] - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - with self._gplock: - self.result = result - self.project_name = name - url = urljoin(self.base_url, '%s/' % quote(name)) - self._seen.clear() - self._page_cache.clear() - self._prepare_threads() - try: - logger.debug('Queueing %s', url) - self._to_fetch.put(url) - self._to_fetch.join() - finally: - self._wait_threads() - del self.result - return result - - platform_dependent = re.compile(r'\b(linux-(i\d86|x86_64|arm\w+)|' - r'win(32|-amd64)|macosx-?\d+)\b', re.I) - - def _is_platform_dependent(self, url): - """ - Does an URL refer to a platform-specific download? - """ - return self.platform_dependent.search(url) - - def _process_download(self, url): - """ - See if an URL is a suitable download for a project. - - If it is, register information in the result dictionary (for - _get_project) about the specific version it's for. - - Note that the return value isn't actually used other than as a boolean - value. - """ - if self._is_platform_dependent(url): - info = None - else: - info = self.convert_url_to_download_info(url, self.project_name) - logger.debug('process_download: %s -> %s', url, info) - if info: - with self._lock: # needed because self.result is shared - self._update_version_data(self.result, info) - return info - - def _should_queue(self, link, referrer, rel): - """ - Determine whether a link URL from a referring page and with a - particular "rel" attribute should be queued for scraping. - """ - scheme, netloc, path, _, _, _ = urlparse(link) - if path.endswith(self.source_extensions + self.binary_extensions + - self.excluded_extensions): - result = False - elif self.skip_externals and not link.startswith(self.base_url): - result = False - elif not referrer.startswith(self.base_url): - result = False - elif rel not in ('homepage', 'download'): - result = False - elif scheme not in ('http', 'https', 'ftp'): - result = False - elif self._is_platform_dependent(link): - result = False - else: - host = netloc.split(':', 1)[0] - if host.lower() == 'localhost': - result = False - else: - result = True - logger.debug('should_queue: %s (%s) from %s -> %s', link, rel, - referrer, result) - return result - - def _fetch(self): - """ - Get a URL to fetch from the work queue, get the HTML page, examine its - links for download candidates and candidates for further scraping. - - This is a handy method to run in a thread. - """ - while True: - url = self._to_fetch.get() - try: - if url: - page = self.get_page(url) - if page is None: # e.g. after an error - continue - for link, rel in page.links: - if link not in self._seen: - self._seen.add(link) - if (not self._process_download(link) and - self._should_queue(link, url, rel)): - logger.debug('Queueing %s from %s', link, url) - self._to_fetch.put(link) - except Exception as e: # pragma: no cover - self.errors.put(text_type(e)) - finally: - # always do this, to avoid hangs :-) - self._to_fetch.task_done() - if not url: - #logger.debug('Sentinel seen, quitting.') - break - - def get_page(self, url): - """ - Get the HTML for an URL, possibly from an in-memory cache. - - XXX TODO Note: this cache is never actually cleared. It's assumed that - the data won't get stale over the lifetime of a locator instance (not - necessarily true for the default_locator). - """ - # http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api - scheme, netloc, path, _, _, _ = urlparse(url) - if scheme == 'file' and os.path.isdir(url2pathname(path)): - url = urljoin(ensure_slash(url), 'index.html') - - if url in self._page_cache: - result = self._page_cache[url] - logger.debug('Returning %s from cache: %s', url, result) - else: - host = netloc.split(':', 1)[0] - result = None - if host in self._bad_hosts: - logger.debug('Skipping %s due to bad host %s', url, host) - else: - req = Request(url, headers={'Accept-encoding': 'identity'}) - try: - logger.debug('Fetching %s', url) - resp = self.opener.open(req, timeout=self.timeout) - logger.debug('Fetched %s', url) - headers = resp.info() - content_type = headers.get('Content-Type', '') - if HTML_CONTENT_TYPE.match(content_type): - final_url = resp.geturl() - data = resp.read() - encoding = headers.get('Content-Encoding') - if encoding: - decoder = self.decoders[encoding] # fail if not found - data = decoder(data) - encoding = 'utf-8' - m = CHARSET.search(content_type) - if m: - encoding = m.group(1) - try: - data = data.decode(encoding) - except UnicodeError: # pragma: no cover - data = data.decode('latin-1') # fallback - result = Page(data, final_url) - self._page_cache[final_url] = result - except HTTPError as e: - if e.code != 404: - logger.exception('Fetch failed: %s: %s', url, e) - except URLError as e: # pragma: no cover - logger.exception('Fetch failed: %s: %s', url, e) - with self._lock: - self._bad_hosts.add(host) - except Exception as e: # pragma: no cover - logger.exception('Fetch failed: %s: %s', url, e) - finally: - self._page_cache[url] = result # even if None (failure) - return result - - _distname_re = re.compile(']*>([^<]+)<') - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - result = set() - page = self.get_page(self.base_url) - if not page: - raise DistlibException('Unable to get %s' % self.base_url) - for match in self._distname_re.finditer(page.data): - result.add(match.group(1)) - return result - -class DirectoryLocator(Locator): - """ - This class locates distributions in a directory tree. - """ - - def __init__(self, path, **kwargs): - """ - Initialise an instance. - :param path: The root of the directory tree to search. - :param kwargs: Passed to the superclass constructor, - except for: - * recursive - if True (the default), subdirectories are - recursed into. If False, only the top-level directory - is searched, - """ - self.recursive = kwargs.pop('recursive', True) - super(DirectoryLocator, self).__init__(**kwargs) - path = os.path.abspath(path) - if not os.path.isdir(path): # pragma: no cover - raise DistlibException('Not a directory: %r' % path) - self.base_dir = path - - def should_include(self, filename, parent): - """ - Should a filename be considered as a candidate for a distribution - archive? As well as the filename, the directory which contains it - is provided, though not used by the current implementation. - """ - return filename.endswith(self.downloadable_extensions) - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - for root, dirs, files in os.walk(self.base_dir): - for fn in files: - if self.should_include(fn, root): - fn = os.path.join(root, fn) - url = urlunparse(('file', '', - pathname2url(os.path.abspath(fn)), - '', '', '')) - info = self.convert_url_to_download_info(url, name) - if info: - self._update_version_data(result, info) - if not self.recursive: - break - return result - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - result = set() - for root, dirs, files in os.walk(self.base_dir): - for fn in files: - if self.should_include(fn, root): - fn = os.path.join(root, fn) - url = urlunparse(('file', '', - pathname2url(os.path.abspath(fn)), - '', '', '')) - info = self.convert_url_to_download_info(url, None) - if info: - result.add(info['name']) - if not self.recursive: - break - return result - -class JSONLocator(Locator): - """ - This locator uses special extended metadata (not available on PyPI) and is - the basis of performant dependency resolution in distlib. Other locators - require archive downloads before dependencies can be determined! As you - might imagine, that can be slow. - """ - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - raise NotImplementedError('Not available from this locator') - - def _get_project(self, name): - result = {'urls': {}, 'digests': {}} - data = get_project_data(name) - if data: - for info in data.get('files', []): - if info['ptype'] != 'sdist' or info['pyversion'] != 'source': - continue - # We don't store summary in project metadata as it makes - # the data bigger for no benefit during dependency - # resolution - dist = make_dist(data['name'], info['version'], - summary=data.get('summary', - 'Placeholder for summary'), - scheme=self.scheme) - md = dist.metadata - md.source_url = info['url'] - # TODO SHA256 digest - if 'digest' in info and info['digest']: - dist.digest = ('md5', info['digest']) - md.dependencies = info.get('requirements', {}) - dist.exports = info.get('exports', {}) - result[dist.version] = dist - result['urls'].setdefault(dist.version, set()).add(info['url']) - return result - -class DistPathLocator(Locator): - """ - This locator finds installed distributions in a path. It can be useful for - adding to an :class:`AggregatingLocator`. - """ - def __init__(self, distpath, **kwargs): - """ - Initialise an instance. - - :param distpath: A :class:`DistributionPath` instance to search. - """ - super(DistPathLocator, self).__init__(**kwargs) - assert isinstance(distpath, DistributionPath) - self.distpath = distpath - - def _get_project(self, name): - dist = self.distpath.get_distribution(name) - if dist is None: - result = {'urls': {}, 'digests': {}} - else: - result = { - dist.version: dist, - 'urls': {dist.version: set([dist.source_url])}, - 'digests': {dist.version: set([None])} - } - return result - - -class AggregatingLocator(Locator): - """ - This class allows you to chain and/or merge a list of locators. - """ - def __init__(self, *locators, **kwargs): - """ - Initialise an instance. - - :param locators: The list of locators to search. - :param kwargs: Passed to the superclass constructor, - except for: - * merge - if False (the default), the first successful - search from any of the locators is returned. If True, - the results from all locators are merged (this can be - slow). - """ - self.merge = kwargs.pop('merge', False) - self.locators = locators - super(AggregatingLocator, self).__init__(**kwargs) - - def clear_cache(self): - super(AggregatingLocator, self).clear_cache() - for locator in self.locators: - locator.clear_cache() - - def _set_scheme(self, value): - self._scheme = value - for locator in self.locators: - locator.scheme = value - - scheme = property(Locator.scheme.fget, _set_scheme) - - def _get_project(self, name): - result = {} - for locator in self.locators: - d = locator.get_project(name) - if d: - if self.merge: - files = result.get('urls', {}) - digests = result.get('digests', {}) - # next line could overwrite result['urls'], result['digests'] - result.update(d) - df = result.get('urls') - if files and df: - for k, v in files.items(): - if k in df: - df[k] |= v - else: - df[k] = v - dd = result.get('digests') - if digests and dd: - dd.update(digests) - else: - # See issue #18. If any dists are found and we're looking - # for specific constraints, we only return something if - # a match is found. For example, if a DirectoryLocator - # returns just foo (1.0) while we're looking for - # foo (>= 2.0), we'll pretend there was nothing there so - # that subsequent locators can be queried. Otherwise we - # would just return foo (1.0) which would then lead to a - # failure to find foo (>= 2.0), because other locators - # weren't searched. Note that this only matters when - # merge=False. - if self.matcher is None: - found = True - else: - found = False - for k in d: - if self.matcher.match(k): - found = True - break - if found: - result = d - break - return result - - def get_distribution_names(self): - """ - Return all the distribution names known to this locator. - """ - result = set() - for locator in self.locators: - try: - result |= locator.get_distribution_names() - except NotImplementedError: - pass - return result - - -# We use a legacy scheme simply because most of the dists on PyPI use legacy -# versions which don't conform to PEP 426 / PEP 440. -default_locator = AggregatingLocator( - JSONLocator(), - SimpleScrapingLocator('https://pypi.python.org/simple/', - timeout=3.0), - scheme='legacy') - -locate = default_locator.locate - -NAME_VERSION_RE = re.compile(r'(?P[\w-]+)\s*' - r'\(\s*(==\s*)?(?P[^)]+)\)$') - -class DependencyFinder(object): - """ - Locate dependencies for distributions. - """ - - def __init__(self, locator=None): - """ - Initialise an instance, using the specified locator - to locate distributions. - """ - self.locator = locator or default_locator - self.scheme = get_scheme(self.locator.scheme) - - def add_distribution(self, dist): - """ - Add a distribution to the finder. This will update internal information - about who provides what. - :param dist: The distribution to add. - """ - logger.debug('adding distribution %s', dist) - name = dist.key - self.dists_by_name[name] = dist - self.dists[(name, dist.version)] = dist - for p in dist.provides: - name, version = parse_name_and_version(p) - logger.debug('Add to provided: %s, %s, %s', name, version, dist) - self.provided.setdefault(name, set()).add((version, dist)) - - def remove_distribution(self, dist): - """ - Remove a distribution from the finder. This will update internal - information about who provides what. - :param dist: The distribution to remove. - """ - logger.debug('removing distribution %s', dist) - name = dist.key - del self.dists_by_name[name] - del self.dists[(name, dist.version)] - for p in dist.provides: - name, version = parse_name_and_version(p) - logger.debug('Remove from provided: %s, %s, %s', name, version, dist) - s = self.provided[name] - s.remove((version, dist)) - if not s: - del self.provided[name] - - def get_matcher(self, reqt): - """ - Get a version matcher for a requirement. - :param reqt: The requirement - :type reqt: str - :return: A version matcher (an instance of - :class:`distlib.version.Matcher`). - """ - try: - matcher = self.scheme.matcher(reqt) - except UnsupportedVersionError: # pragma: no cover - # XXX compat-mode if cannot read the version - name = reqt.split()[0] - matcher = self.scheme.matcher(name) - return matcher - - def find_providers(self, reqt): - """ - Find the distributions which can fulfill a requirement. - - :param reqt: The requirement. - :type reqt: str - :return: A set of distribution which can fulfill the requirement. - """ - matcher = self.get_matcher(reqt) - name = matcher.key # case-insensitive - result = set() - provided = self.provided - if name in provided: - for version, provider in provided[name]: - try: - match = matcher.match(version) - except UnsupportedVersionError: - match = False - - if match: - result.add(provider) - break - return result - - def try_to_replace(self, provider, other, problems): - """ - Attempt to replace one provider with another. This is typically used - when resolving dependencies from multiple sources, e.g. A requires - (B >= 1.0) while C requires (B >= 1.1). - - For successful replacement, ``provider`` must meet all the requirements - which ``other`` fulfills. - - :param provider: The provider we are trying to replace with. - :param other: The provider we're trying to replace. - :param problems: If False is returned, this will contain what - problems prevented replacement. This is currently - a tuple of the literal string 'cantreplace', - ``provider``, ``other`` and the set of requirements - that ``provider`` couldn't fulfill. - :return: True if we can replace ``other`` with ``provider``, else - False. - """ - rlist = self.reqts[other] - unmatched = set() - for s in rlist: - matcher = self.get_matcher(s) - if not matcher.match(provider.version): - unmatched.add(s) - if unmatched: - # can't replace other with provider - problems.add(('cantreplace', provider, other, - frozenset(unmatched))) - result = False - else: - # can replace other with provider - self.remove_distribution(other) - del self.reqts[other] - for s in rlist: - self.reqts.setdefault(provider, set()).add(s) - self.add_distribution(provider) - result = True - return result - - def find(self, requirement, meta_extras=None, prereleases=False): - """ - Find a distribution and all distributions it depends on. - - :param requirement: The requirement specifying the distribution to - find, or a Distribution instance. - :param meta_extras: A list of meta extras such as :test:, :build: and - so on. - :param prereleases: If ``True``, allow pre-release versions to be - returned - otherwise, don't return prereleases - unless they're all that's available. - - Return a set of :class:`Distribution` instances and a set of - problems. - - The distributions returned should be such that they have the - :attr:`required` attribute set to ``True`` if they were - from the ``requirement`` passed to ``find()``, and they have the - :attr:`build_time_dependency` attribute set to ``True`` unless they - are post-installation dependencies of the ``requirement``. - - The problems should be a tuple consisting of the string - ``'unsatisfied'`` and the requirement which couldn't be satisfied - by any distribution known to the locator. - """ - - self.provided = {} - self.dists = {} - self.dists_by_name = {} - self.reqts = {} - - meta_extras = set(meta_extras or []) - if ':*:' in meta_extras: - meta_extras.remove(':*:') - # :meta: and :run: are implicitly included - meta_extras |= set([':test:', ':build:', ':dev:']) - - if isinstance(requirement, Distribution): - dist = odist = requirement - logger.debug('passed %s as requirement', odist) - else: - dist = odist = self.locator.locate(requirement, - prereleases=prereleases) - if dist is None: - raise DistlibException('Unable to locate %r' % requirement) - logger.debug('located %s', odist) - dist.requested = True - problems = set() - todo = set([dist]) - install_dists = set([odist]) - while todo: - dist = todo.pop() - name = dist.key # case-insensitive - if name not in self.dists_by_name: - self.add_distribution(dist) - else: - #import pdb; pdb.set_trace() - other = self.dists_by_name[name] - if other != dist: - self.try_to_replace(dist, other, problems) - - ireqts = dist.run_requires | dist.meta_requires - sreqts = dist.build_requires - ereqts = set() - if dist in install_dists: - for key in ('test', 'build', 'dev'): - e = ':%s:' % key - if e in meta_extras: - ereqts |= getattr(dist, '%s_requires' % key) - all_reqts = ireqts | sreqts | ereqts - for r in all_reqts: - providers = self.find_providers(r) - if not providers: - logger.debug('No providers found for %r', r) - provider = self.locator.locate(r, prereleases=prereleases) - # If no provider is found and we didn't consider - # prereleases, consider them now. - if provider is None and not prereleases: - provider = self.locator.locate(r, prereleases=True) - if provider is None: - logger.debug('Cannot satisfy %r', r) - problems.add(('unsatisfied', r)) - else: - n, v = provider.key, provider.version - if (n, v) not in self.dists: - todo.add(provider) - providers.add(provider) - if r in ireqts and dist in install_dists: - install_dists.add(provider) - logger.debug('Adding %s to install_dists', - provider.name_and_version) - for p in providers: - name = p.key - if name not in self.dists_by_name: - self.reqts.setdefault(p, set()).add(r) - else: - other = self.dists_by_name[name] - if other != p: - # see if other can be replaced by p - self.try_to_replace(p, other, problems) - - dists = set(self.dists.values()) - for dist in dists: - dist.build_time_dependency = dist not in install_dists - if dist.build_time_dependency: - logger.debug('%s is a build-time dependency only.', - dist.name_and_version) - logger.debug('find done for %s', odist) - return dists, problems diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/manifest.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/manifest.py deleted file mode 100644 index 9f03364..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/manifest.py +++ /dev/null @@ -1,393 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2013 Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -""" -Class representing the list of files in a distribution. - -Equivalent to distutils.filelist, but fixes some problems. -""" -import fnmatch -import logging -import os -import re -import sys - -from . import DistlibException -from .compat import fsdecode -from .util import convert_path - - -__all__ = ['Manifest'] - -logger = logging.getLogger(__name__) - -# a \ followed by some spaces + EOL -_COLLAPSE_PATTERN = re.compile('\\\w*\n', re.M) -_COMMENTED_LINE = re.compile('#.*?(?=\n)|\n(?=$)', re.M | re.S) - -# -# Due to the different results returned by fnmatch.translate, we need -# to do slightly different processing for Python 2.7 and 3.2 ... this needed -# to be brought in for Python 3.6 onwards. -# -_PYTHON_VERSION = sys.version_info[:2] - -class Manifest(object): - """A list of files built by on exploring the filesystem and filtered by - applying various patterns to what we find there. - """ - - def __init__(self, base=None): - """ - Initialise an instance. - - :param base: The base directory to explore under. - """ - self.base = os.path.abspath(os.path.normpath(base or os.getcwd())) - self.prefix = self.base + os.sep - self.allfiles = None - self.files = set() - - # - # Public API - # - - def findall(self): - """Find all files under the base and set ``allfiles`` to the absolute - pathnames of files found. - """ - from stat import S_ISREG, S_ISDIR, S_ISLNK - - self.allfiles = allfiles = [] - root = self.base - stack = [root] - pop = stack.pop - push = stack.append - - while stack: - root = pop() - names = os.listdir(root) - - for name in names: - fullname = os.path.join(root, name) - - # Avoid excess stat calls -- just one will do, thank you! - stat = os.stat(fullname) - mode = stat.st_mode - if S_ISREG(mode): - allfiles.append(fsdecode(fullname)) - elif S_ISDIR(mode) and not S_ISLNK(mode): - push(fullname) - - def add(self, item): - """ - Add a file to the manifest. - - :param item: The pathname to add. This can be relative to the base. - """ - if not item.startswith(self.prefix): - item = os.path.join(self.base, item) - self.files.add(os.path.normpath(item)) - - def add_many(self, items): - """ - Add a list of files to the manifest. - - :param items: The pathnames to add. These can be relative to the base. - """ - for item in items: - self.add(item) - - def sorted(self, wantdirs=False): - """ - Return sorted files in directory order - """ - - def add_dir(dirs, d): - dirs.add(d) - logger.debug('add_dir added %s', d) - if d != self.base: - parent, _ = os.path.split(d) - assert parent not in ('', '/') - add_dir(dirs, parent) - - result = set(self.files) # make a copy! - if wantdirs: - dirs = set() - for f in result: - add_dir(dirs, os.path.dirname(f)) - result |= dirs - return [os.path.join(*path_tuple) for path_tuple in - sorted(os.path.split(path) for path in result)] - - def clear(self): - """Clear all collected files.""" - self.files = set() - self.allfiles = [] - - def process_directive(self, directive): - """ - Process a directive which either adds some files from ``allfiles`` to - ``files``, or removes some files from ``files``. - - :param directive: The directive to process. This should be in a format - compatible with distutils ``MANIFEST.in`` files: - - http://docs.python.org/distutils/sourcedist.html#commands - """ - # Parse the line: split it up, make sure the right number of words - # is there, and return the relevant words. 'action' is always - # defined: it's the first word of the line. Which of the other - # three are defined depends on the action; it'll be either - # patterns, (dir and patterns), or (dirpattern). - action, patterns, thedir, dirpattern = self._parse_directive(directive) - - # OK, now we know that the action is valid and we have the - # right number of words on the line for that action -- so we - # can proceed with minimal error-checking. - if action == 'include': - for pattern in patterns: - if not self._include_pattern(pattern, anchor=True): - logger.warning('no files found matching %r', pattern) - - elif action == 'exclude': - for pattern in patterns: - found = self._exclude_pattern(pattern, anchor=True) - #if not found: - # logger.warning('no previously-included files ' - # 'found matching %r', pattern) - - elif action == 'global-include': - for pattern in patterns: - if not self._include_pattern(pattern, anchor=False): - logger.warning('no files found matching %r ' - 'anywhere in distribution', pattern) - - elif action == 'global-exclude': - for pattern in patterns: - found = self._exclude_pattern(pattern, anchor=False) - #if not found: - # logger.warning('no previously-included files ' - # 'matching %r found anywhere in ' - # 'distribution', pattern) - - elif action == 'recursive-include': - for pattern in patterns: - if not self._include_pattern(pattern, prefix=thedir): - logger.warning('no files found matching %r ' - 'under directory %r', pattern, thedir) - - elif action == 'recursive-exclude': - for pattern in patterns: - found = self._exclude_pattern(pattern, prefix=thedir) - #if not found: - # logger.warning('no previously-included files ' - # 'matching %r found under directory %r', - # pattern, thedir) - - elif action == 'graft': - if not self._include_pattern(None, prefix=dirpattern): - logger.warning('no directories found matching %r', - dirpattern) - - elif action == 'prune': - if not self._exclude_pattern(None, prefix=dirpattern): - logger.warning('no previously-included directories found ' - 'matching %r', dirpattern) - else: # pragma: no cover - # This should never happen, as it should be caught in - # _parse_template_line - raise DistlibException( - 'invalid action %r' % action) - - # - # Private API - # - - def _parse_directive(self, directive): - """ - Validate a directive. - :param directive: The directive to validate. - :return: A tuple of action, patterns, thedir, dir_patterns - """ - words = directive.split() - if len(words) == 1 and words[0] not in ('include', 'exclude', - 'global-include', - 'global-exclude', - 'recursive-include', - 'recursive-exclude', - 'graft', 'prune'): - # no action given, let's use the default 'include' - words.insert(0, 'include') - - action = words[0] - patterns = thedir = dir_pattern = None - - if action in ('include', 'exclude', - 'global-include', 'global-exclude'): - if len(words) < 2: - raise DistlibException( - '%r expects ...' % action) - - patterns = [convert_path(word) for word in words[1:]] - - elif action in ('recursive-include', 'recursive-exclude'): - if len(words) < 3: - raise DistlibException( - '%r expects

...' % action) - - thedir = convert_path(words[1]) - patterns = [convert_path(word) for word in words[2:]] - - elif action in ('graft', 'prune'): - if len(words) != 2: - raise DistlibException( - '%r expects a single ' % action) - - dir_pattern = convert_path(words[1]) - - else: - raise DistlibException('unknown action %r' % action) - - return action, patterns, thedir, dir_pattern - - def _include_pattern(self, pattern, anchor=True, prefix=None, - is_regex=False): - """Select strings (presumably filenames) from 'self.files' that - match 'pattern', a Unix-style wildcard (glob) pattern. - - Patterns are not quite the same as implemented by the 'fnmatch' - module: '*' and '?' match non-special characters, where "special" - is platform-dependent: slash on Unix; colon, slash, and backslash on - DOS/Windows; and colon on Mac OS. - - If 'anchor' is true (the default), then the pattern match is more - stringent: "*.py" will match "foo.py" but not "foo/bar.py". If - 'anchor' is false, both of these will match. - - If 'prefix' is supplied, then only filenames starting with 'prefix' - (itself a pattern) and ending with 'pattern', with anything in between - them, will match. 'anchor' is ignored in this case. - - If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and - 'pattern' is assumed to be either a string containing a regex or a - regex object -- no translation is done, the regex is just compiled - and used as-is. - - Selected strings will be added to self.files. - - Return True if files are found. - """ - # XXX docstring lying about what the special chars are? - found = False - pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) - - # delayed loading of allfiles list - if self.allfiles is None: - self.findall() - - for name in self.allfiles: - if pattern_re.search(name): - self.files.add(name) - found = True - return found - - def _exclude_pattern(self, pattern, anchor=True, prefix=None, - is_regex=False): - """Remove strings (presumably filenames) from 'files' that match - 'pattern'. - - Other parameters are the same as for 'include_pattern()', above. - The list 'self.files' is modified in place. Return True if files are - found. - - This API is public to allow e.g. exclusion of SCM subdirs, e.g. when - packaging source distributions - """ - found = False - pattern_re = self._translate_pattern(pattern, anchor, prefix, is_regex) - for f in list(self.files): - if pattern_re.search(f): - self.files.remove(f) - found = True - return found - - def _translate_pattern(self, pattern, anchor=True, prefix=None, - is_regex=False): - """Translate a shell-like wildcard pattern to a compiled regular - expression. - - Return the compiled regex. If 'is_regex' true, - then 'pattern' is directly compiled to a regex (if it's a string) - or just returned as-is (assumes it's a regex object). - """ - if is_regex: - if isinstance(pattern, str): - return re.compile(pattern) - else: - return pattern - - if _PYTHON_VERSION > (3, 2): - # ditch start and end characters - start, _, end = self._glob_to_re('_').partition('_') - - if pattern: - pattern_re = self._glob_to_re(pattern) - if _PYTHON_VERSION > (3, 2): - assert pattern_re.startswith(start) and pattern_re.endswith(end) - else: - pattern_re = '' - - base = re.escape(os.path.join(self.base, '')) - if prefix is not None: - # ditch end of pattern character - if _PYTHON_VERSION <= (3, 2): - empty_pattern = self._glob_to_re('') - prefix_re = self._glob_to_re(prefix)[:-len(empty_pattern)] - else: - prefix_re = self._glob_to_re(prefix) - assert prefix_re.startswith(start) and prefix_re.endswith(end) - prefix_re = prefix_re[len(start): len(prefix_re) - len(end)] - sep = os.sep - if os.sep == '\\': - sep = r'\\' - if _PYTHON_VERSION <= (3, 2): - pattern_re = '^' + base + sep.join((prefix_re, - '.*' + pattern_re)) - else: - pattern_re = pattern_re[len(start): len(pattern_re) - len(end)] - pattern_re = r'%s%s%s%s.*%s%s' % (start, base, prefix_re, sep, - pattern_re, end) - else: # no prefix -- respect anchor flag - if anchor: - if _PYTHON_VERSION <= (3, 2): - pattern_re = '^' + base + pattern_re - else: - pattern_re = r'%s%s%s' % (start, base, pattern_re[len(start):]) - - return re.compile(pattern_re) - - def _glob_to_re(self, pattern): - """Translate a shell-like glob pattern to a regular expression. - - Return a string containing the regex. Differs from - 'fnmatch.translate()' in that '*' does not match "special characters" - (which are platform-specific). - """ - pattern_re = fnmatch.translate(pattern) - - # '?' and '*' in the glob pattern become '.' and '.*' in the RE, which - # IMHO is wrong -- '?' and '*' aren't supposed to match slash in Unix, - # and by extension they shouldn't match such "special characters" under - # any OS. So change all non-escaped dots in the RE to match any - # character except the special characters (currently: just os.sep). - sep = os.sep - if os.sep == '\\': - # we're using a regex to manipulate a regex, so we need - # to escape the backslash twice - sep = r'\\\\' - escaped = r'\1[^%s]' % sep - pattern_re = re.sub(r'((? y, - 'gte': lambda x, y: x >= y, - 'in': lambda x, y: x in y, - 'lt': lambda x, y: x < y, - 'lte': lambda x, y: x <= y, - 'not': lambda x: not x, - 'noteq': lambda x, y: x != y, - 'notin': lambda x, y: x not in y, - } - - allowed_values = { - 'sys_platform': sys.platform, - 'python_version': '%s.%s' % sys.version_info[:2], - # parsing sys.platform is not reliable, but there is no other - # way to get e.g. 2.7.2+, and the PEP is defined with sys.version - 'python_full_version': sys.version.split(' ', 1)[0], - 'os_name': os.name, - 'platform_in_venv': str(in_venv()), - 'platform_release': platform.release(), - 'platform_version': platform.version(), - 'platform_machine': platform.machine(), - 'platform_python_implementation': python_implementation(), - } - - def __init__(self, context=None): - """ - Initialise an instance. - - :param context: If specified, names are looked up in this mapping. - """ - self.context = context or {} - self.source = None - - def get_fragment(self, offset): - """ - Get the part of the source which is causing a problem. - """ - fragment_len = 10 - s = '%r' % (self.source[offset:offset + fragment_len]) - if offset + fragment_len < len(self.source): - s += '...' - return s - - def get_handler(self, node_type): - """ - Get a handler for the specified AST node type. - """ - return getattr(self, 'do_%s' % node_type, None) - - def evaluate(self, node, filename=None): - """ - Evaluate a source string or node, using ``filename`` when - displaying errors. - """ - if isinstance(node, string_types): - self.source = node - kwargs = {'mode': 'eval'} - if filename: - kwargs['filename'] = filename - try: - node = ast.parse(node, **kwargs) - except SyntaxError as e: - s = self.get_fragment(e.offset) - raise SyntaxError('syntax error %s' % s) - node_type = node.__class__.__name__.lower() - handler = self.get_handler(node_type) - if handler is None: - if self.source is None: - s = '(source not available)' - else: - s = self.get_fragment(node.col_offset) - raise SyntaxError("don't know how to evaluate %r %s" % ( - node_type, s)) - return handler(node) - - def get_attr_key(self, node): - assert isinstance(node, ast.Attribute), 'attribute node expected' - return '%s.%s' % (node.value.id, node.attr) - - def do_attribute(self, node): - if not isinstance(node.value, ast.Name): - valid = False - else: - key = self.get_attr_key(node) - valid = key in self.context or key in self.allowed_values - if not valid: - raise SyntaxError('invalid expression: %s' % key) - if key in self.context: - result = self.context[key] - else: - result = self.allowed_values[key] - return result - - def do_boolop(self, node): - result = self.evaluate(node.values[0]) - is_or = node.op.__class__ is ast.Or - is_and = node.op.__class__ is ast.And - assert is_or or is_and - if (is_and and result) or (is_or and not result): - for n in node.values[1:]: - result = self.evaluate(n) - if (is_or and result) or (is_and and not result): - break - return result - - def do_compare(self, node): - def sanity_check(lhsnode, rhsnode): - valid = True - if isinstance(lhsnode, ast.Str) and isinstance(rhsnode, ast.Str): - valid = False - #elif (isinstance(lhsnode, ast.Attribute) - # and isinstance(rhsnode, ast.Attribute)): - # klhs = self.get_attr_key(lhsnode) - # krhs = self.get_attr_key(rhsnode) - # valid = klhs != krhs - if not valid: - s = self.get_fragment(node.col_offset) - raise SyntaxError('Invalid comparison: %s' % s) - - lhsnode = node.left - lhs = self.evaluate(lhsnode) - result = True - for op, rhsnode in zip(node.ops, node.comparators): - sanity_check(lhsnode, rhsnode) - op = op.__class__.__name__.lower() - if op not in self.operators: - raise SyntaxError('unsupported operation: %r' % op) - rhs = self.evaluate(rhsnode) - result = self.operators[op](lhs, rhs) - if not result: - break - lhs = rhs - lhsnode = rhsnode - return result - - def do_expression(self, node): - return self.evaluate(node.body) - - def do_name(self, node): - valid = False - if node.id in self.context: - valid = True - result = self.context[node.id] - elif node.id in self.allowed_values: - valid = True - result = self.allowed_values[node.id] - if not valid: - raise SyntaxError('invalid expression: %s' % node.id) - return result - - def do_str(self, node): - return node.s - - -def interpret(marker, execution_context=None): - """ - Interpret a marker and return a result depending on environment. - - :param marker: The marker to interpret. - :type marker: str - :param execution_context: The context used for name lookup. - :type execution_context: mapping - """ - return Evaluator(execution_context).evaluate(marker.strip()) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/metadata.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/metadata.py deleted file mode 100644 index 75bfd68..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/metadata.py +++ /dev/null @@ -1,1068 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -"""Implementation of the Metadata for Python packages PEPs. - -Supports all metadata formats (1.0, 1.1, 1.2, and 2.0 experimental). -""" -from __future__ import unicode_literals - -import codecs -from email import message_from_file -import json -import logging -import re - - -from . import DistlibException, __version__ -from .compat import StringIO, string_types, text_type -from .markers import interpret -from .util import extract_by_key, get_extras -from .version import get_scheme, PEP440_VERSION_RE - -logger = logging.getLogger(__name__) - - -class MetadataMissingError(DistlibException): - """A required metadata is missing""" - - -class MetadataConflictError(DistlibException): - """Attempt to read or write metadata fields that are conflictual.""" - - -class MetadataUnrecognizedVersionError(DistlibException): - """Unknown metadata version number.""" - - -class MetadataInvalidError(DistlibException): - """A metadata value is invalid""" - -# public API of this module -__all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION'] - -# Encoding used for the PKG-INFO files -PKG_INFO_ENCODING = 'utf-8' - -# preferred version. Hopefully will be changed -# to 1.2 once PEP 345 is supported everywhere -PKG_INFO_PREFERRED_VERSION = '1.1' - -_LINE_PREFIX_1_2 = re.compile('\n \|') -_LINE_PREFIX_PRE_1_2 = re.compile('\n ') -_241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'License') - -_314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Supported-Platform', 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'License', 'Classifier', 'Download-URL', 'Obsoletes', - 'Provides', 'Requires') - -_314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier', - 'Download-URL') - -_345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Supported-Platform', 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'Maintainer', 'Maintainer-email', 'License', - 'Classifier', 'Download-URL', 'Obsoletes-Dist', - 'Project-URL', 'Provides-Dist', 'Requires-Dist', - 'Requires-Python', 'Requires-External') - -_345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python', - 'Obsoletes-Dist', 'Requires-External', 'Maintainer', - 'Maintainer-email', 'Project-URL') - -_426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform', - 'Supported-Platform', 'Summary', 'Description', - 'Keywords', 'Home-page', 'Author', 'Author-email', - 'Maintainer', 'Maintainer-email', 'License', - 'Classifier', 'Download-URL', 'Obsoletes-Dist', - 'Project-URL', 'Provides-Dist', 'Requires-Dist', - 'Requires-Python', 'Requires-External', 'Private-Version', - 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension', - 'Provides-Extra') - -_426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By', - 'Setup-Requires-Dist', 'Extension') - -_ALL_FIELDS = set() -_ALL_FIELDS.update(_241_FIELDS) -_ALL_FIELDS.update(_314_FIELDS) -_ALL_FIELDS.update(_345_FIELDS) -_ALL_FIELDS.update(_426_FIELDS) - -EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''') - - -def _version2fieldlist(version): - if version == '1.0': - return _241_FIELDS - elif version == '1.1': - return _314_FIELDS - elif version == '1.2': - return _345_FIELDS - elif version == '2.0': - return _426_FIELDS - raise MetadataUnrecognizedVersionError(version) - - -def _best_version(fields): - """Detect the best version depending on the fields used.""" - def _has_marker(keys, markers): - for marker in markers: - if marker in keys: - return True - return False - - keys = [] - for key, value in fields.items(): - if value in ([], 'UNKNOWN', None): - continue - keys.append(key) - - possible_versions = ['1.0', '1.1', '1.2', '2.0'] - - # first let's try to see if a field is not part of one of the version - for key in keys: - if key not in _241_FIELDS and '1.0' in possible_versions: - possible_versions.remove('1.0') - if key not in _314_FIELDS and '1.1' in possible_versions: - possible_versions.remove('1.1') - if key not in _345_FIELDS and '1.2' in possible_versions: - possible_versions.remove('1.2') - if key not in _426_FIELDS and '2.0' in possible_versions: - possible_versions.remove('2.0') - - # possible_version contains qualified versions - if len(possible_versions) == 1: - return possible_versions[0] # found ! - elif len(possible_versions) == 0: - raise MetadataConflictError('Unknown metadata set') - - # let's see if one unique marker is found - is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS) - is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS) - is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS) - if int(is_1_1) + int(is_1_2) + int(is_2_0) > 1: - raise MetadataConflictError('You used incompatible 1.1/1.2/2.0 fields') - - # we have the choice, 1.0, or 1.2, or 2.0 - # - 1.0 has a broken Summary field but works with all tools - # - 1.1 is to avoid - # - 1.2 fixes Summary but has little adoption - # - 2.0 adds more features and is very new - if not is_1_1 and not is_1_2 and not is_2_0: - # we couldn't find any specific marker - if PKG_INFO_PREFERRED_VERSION in possible_versions: - return PKG_INFO_PREFERRED_VERSION - if is_1_1: - return '1.1' - if is_1_2: - return '1.2' - - return '2.0' - -_ATTR2FIELD = { - 'metadata_version': 'Metadata-Version', - 'name': 'Name', - 'version': 'Version', - 'platform': 'Platform', - 'supported_platform': 'Supported-Platform', - 'summary': 'Summary', - 'description': 'Description', - 'keywords': 'Keywords', - 'home_page': 'Home-page', - 'author': 'Author', - 'author_email': 'Author-email', - 'maintainer': 'Maintainer', - 'maintainer_email': 'Maintainer-email', - 'license': 'License', - 'classifier': 'Classifier', - 'download_url': 'Download-URL', - 'obsoletes_dist': 'Obsoletes-Dist', - 'provides_dist': 'Provides-Dist', - 'requires_dist': 'Requires-Dist', - 'setup_requires_dist': 'Setup-Requires-Dist', - 'requires_python': 'Requires-Python', - 'requires_external': 'Requires-External', - 'requires': 'Requires', - 'provides': 'Provides', - 'obsoletes': 'Obsoletes', - 'project_url': 'Project-URL', - 'private_version': 'Private-Version', - 'obsoleted_by': 'Obsoleted-By', - 'extension': 'Extension', - 'provides_extra': 'Provides-Extra', -} - -_PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist') -_VERSIONS_FIELDS = ('Requires-Python',) -_VERSION_FIELDS = ('Version',) -_LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes', - 'Requires', 'Provides', 'Obsoletes-Dist', - 'Provides-Dist', 'Requires-Dist', 'Requires-External', - 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist', - 'Provides-Extra', 'Extension') -_LISTTUPLEFIELDS = ('Project-URL',) - -_ELEMENTSFIELD = ('Keywords',) - -_UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description') - -_MISSING = object() - -_FILESAFE = re.compile('[^A-Za-z0-9.]+') - - -def _get_name_and_version(name, version, for_filename=False): - """Return the distribution name with version. - - If for_filename is true, return a filename-escaped form.""" - if for_filename: - # For both name and version any runs of non-alphanumeric or '.' - # characters are replaced with a single '-'. Additionally any - # spaces in the version string become '.' - name = _FILESAFE.sub('-', name) - version = _FILESAFE.sub('-', version.replace(' ', '.')) - return '%s-%s' % (name, version) - - -class LegacyMetadata(object): - """The legacy metadata of a release. - - Supports versions 1.0, 1.1 and 1.2 (auto-detected). You can - instantiate the class with one of these arguments (or none): - - *path*, the path to a metadata file - - *fileobj* give a file-like object with metadata as content - - *mapping* is a dict-like object - - *scheme* is a version scheme name - """ - # TODO document the mapping API and UNKNOWN default key - - def __init__(self, path=None, fileobj=None, mapping=None, - scheme='default'): - if [path, fileobj, mapping].count(None) < 2: - raise TypeError('path, fileobj and mapping are exclusive') - self._fields = {} - self.requires_files = [] - self._dependencies = None - self.scheme = scheme - if path is not None: - self.read(path) - elif fileobj is not None: - self.read_file(fileobj) - elif mapping is not None: - self.update(mapping) - self.set_metadata_version() - - def set_metadata_version(self): - self._fields['Metadata-Version'] = _best_version(self._fields) - - def _write_field(self, fileobj, name, value): - fileobj.write('%s: %s\n' % (name, value)) - - def __getitem__(self, name): - return self.get(name) - - def __setitem__(self, name, value): - return self.set(name, value) - - def __delitem__(self, name): - field_name = self._convert_name(name) - try: - del self._fields[field_name] - except KeyError: - raise KeyError(name) - - def __contains__(self, name): - return (name in self._fields or - self._convert_name(name) in self._fields) - - def _convert_name(self, name): - if name in _ALL_FIELDS: - return name - name = name.replace('-', '_').lower() - return _ATTR2FIELD.get(name, name) - - def _default_value(self, name): - if name in _LISTFIELDS or name in _ELEMENTSFIELD: - return [] - return 'UNKNOWN' - - def _remove_line_prefix(self, value): - if self.metadata_version in ('1.0', '1.1'): - return _LINE_PREFIX_PRE_1_2.sub('\n', value) - else: - return _LINE_PREFIX_1_2.sub('\n', value) - - def __getattr__(self, name): - if name in _ATTR2FIELD: - return self[name] - raise AttributeError(name) - - # - # Public API - # - -# dependencies = property(_get_dependencies, _set_dependencies) - - def get_fullname(self, filesafe=False): - """Return the distribution name with version. - - If filesafe is true, return a filename-escaped form.""" - return _get_name_and_version(self['Name'], self['Version'], filesafe) - - def is_field(self, name): - """return True if name is a valid metadata key""" - name = self._convert_name(name) - return name in _ALL_FIELDS - - def is_multi_field(self, name): - name = self._convert_name(name) - return name in _LISTFIELDS - - def read(self, filepath): - """Read the metadata values from a file path.""" - fp = codecs.open(filepath, 'r', encoding='utf-8') - try: - self.read_file(fp) - finally: - fp.close() - - def read_file(self, fileob): - """Read the metadata values from a file object.""" - msg = message_from_file(fileob) - self._fields['Metadata-Version'] = msg['metadata-version'] - - # When reading, get all the fields we can - for field in _ALL_FIELDS: - if field not in msg: - continue - if field in _LISTFIELDS: - # we can have multiple lines - values = msg.get_all(field) - if field in _LISTTUPLEFIELDS and values is not None: - values = [tuple(value.split(',')) for value in values] - self.set(field, values) - else: - # single line - value = msg[field] - if value is not None and value != 'UNKNOWN': - self.set(field, value) - self.set_metadata_version() - - def write(self, filepath, skip_unknown=False): - """Write the metadata fields to filepath.""" - fp = codecs.open(filepath, 'w', encoding='utf-8') - try: - self.write_file(fp, skip_unknown) - finally: - fp.close() - - def write_file(self, fileobject, skip_unknown=False): - """Write the PKG-INFO format data to a file object.""" - self.set_metadata_version() - - for field in _version2fieldlist(self['Metadata-Version']): - values = self.get(field) - if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']): - continue - if field in _ELEMENTSFIELD: - self._write_field(fileobject, field, ','.join(values)) - continue - if field not in _LISTFIELDS: - if field == 'Description': - if self.metadata_version in ('1.0', '1.1'): - values = values.replace('\n', '\n ') - else: - values = values.replace('\n', '\n |') - values = [values] - - if field in _LISTTUPLEFIELDS: - values = [','.join(value) for value in values] - - for value in values: - self._write_field(fileobject, field, value) - - def update(self, other=None, **kwargs): - """Set metadata values from the given iterable `other` and kwargs. - - Behavior is like `dict.update`: If `other` has a ``keys`` method, - they are looped over and ``self[key]`` is assigned ``other[key]``. - Else, ``other`` is an iterable of ``(key, value)`` iterables. - - Keys that don't match a metadata field or that have an empty value are - dropped. - """ - def _set(key, value): - if key in _ATTR2FIELD and value: - self.set(self._convert_name(key), value) - - if not other: - # other is None or empty container - pass - elif hasattr(other, 'keys'): - for k in other.keys(): - _set(k, other[k]) - else: - for k, v in other: - _set(k, v) - - if kwargs: - for k, v in kwargs.items(): - _set(k, v) - - def set(self, name, value): - """Control then set a metadata field.""" - name = self._convert_name(name) - - if ((name in _ELEMENTSFIELD or name == 'Platform') and - not isinstance(value, (list, tuple))): - if isinstance(value, string_types): - value = [v.strip() for v in value.split(',')] - else: - value = [] - elif (name in _LISTFIELDS and - not isinstance(value, (list, tuple))): - if isinstance(value, string_types): - value = [value] - else: - value = [] - - if logger.isEnabledFor(logging.WARNING): - project_name = self['Name'] - - scheme = get_scheme(self.scheme) - if name in _PREDICATE_FIELDS and value is not None: - for v in value: - # check that the values are valid - if not scheme.is_valid_matcher(v.split(';')[0]): - logger.warning( - "'%s': '%s' is not valid (field '%s')", - project_name, v, name) - # FIXME this rejects UNKNOWN, is that right? - elif name in _VERSIONS_FIELDS and value is not None: - if not scheme.is_valid_constraint_list(value): - logger.warning("'%s': '%s' is not a valid version (field '%s')", - project_name, value, name) - elif name in _VERSION_FIELDS and value is not None: - if not scheme.is_valid_version(value): - logger.warning("'%s': '%s' is not a valid version (field '%s')", - project_name, value, name) - - if name in _UNICODEFIELDS: - if name == 'Description': - value = self._remove_line_prefix(value) - - self._fields[name] = value - - def get(self, name, default=_MISSING): - """Get a metadata field.""" - name = self._convert_name(name) - if name not in self._fields: - if default is _MISSING: - default = self._default_value(name) - return default - if name in _UNICODEFIELDS: - value = self._fields[name] - return value - elif name in _LISTFIELDS: - value = self._fields[name] - if value is None: - return [] - res = [] - for val in value: - if name not in _LISTTUPLEFIELDS: - res.append(val) - else: - # That's for Project-URL - res.append((val[0], val[1])) - return res - - elif name in _ELEMENTSFIELD: - value = self._fields[name] - if isinstance(value, string_types): - return value.split(',') - return self._fields[name] - - def check(self, strict=False): - """Check if the metadata is compliant. If strict is True then raise if - no Name or Version are provided""" - self.set_metadata_version() - - # XXX should check the versions (if the file was loaded) - missing, warnings = [], [] - - for attr in ('Name', 'Version'): # required by PEP 345 - if attr not in self: - missing.append(attr) - - if strict and missing != []: - msg = 'missing required metadata: %s' % ', '.join(missing) - raise MetadataMissingError(msg) - - for attr in ('Home-page', 'Author'): - if attr not in self: - missing.append(attr) - - # checking metadata 1.2 (XXX needs to check 1.1, 1.0) - if self['Metadata-Version'] != '1.2': - return missing, warnings - - scheme = get_scheme(self.scheme) - - def are_valid_constraints(value): - for v in value: - if not scheme.is_valid_matcher(v.split(';')[0]): - return False - return True - - for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints), - (_VERSIONS_FIELDS, - scheme.is_valid_constraint_list), - (_VERSION_FIELDS, - scheme.is_valid_version)): - for field in fields: - value = self.get(field, None) - if value is not None and not controller(value): - warnings.append("Wrong value for '%s': %s" % (field, value)) - - return missing, warnings - - def todict(self, skip_missing=False): - """Return fields as a dict. - - Field names will be converted to use the underscore-lowercase style - instead of hyphen-mixed case (i.e. home_page instead of Home-page). - """ - self.set_metadata_version() - - mapping_1_0 = ( - ('metadata_version', 'Metadata-Version'), - ('name', 'Name'), - ('version', 'Version'), - ('summary', 'Summary'), - ('home_page', 'Home-page'), - ('author', 'Author'), - ('author_email', 'Author-email'), - ('license', 'License'), - ('description', 'Description'), - ('keywords', 'Keywords'), - ('platform', 'Platform'), - ('classifiers', 'Classifier'), - ('download_url', 'Download-URL'), - ) - - data = {} - for key, field_name in mapping_1_0: - if not skip_missing or field_name in self._fields: - data[key] = self[field_name] - - if self['Metadata-Version'] == '1.2': - mapping_1_2 = ( - ('requires_dist', 'Requires-Dist'), - ('requires_python', 'Requires-Python'), - ('requires_external', 'Requires-External'), - ('provides_dist', 'Provides-Dist'), - ('obsoletes_dist', 'Obsoletes-Dist'), - ('project_url', 'Project-URL'), - ('maintainer', 'Maintainer'), - ('maintainer_email', 'Maintainer-email'), - ) - for key, field_name in mapping_1_2: - if not skip_missing or field_name in self._fields: - if key != 'project_url': - data[key] = self[field_name] - else: - data[key] = [','.join(u) for u in self[field_name]] - - elif self['Metadata-Version'] == '1.1': - mapping_1_1 = ( - ('provides', 'Provides'), - ('requires', 'Requires'), - ('obsoletes', 'Obsoletes'), - ) - for key, field_name in mapping_1_1: - if not skip_missing or field_name in self._fields: - data[key] = self[field_name] - - return data - - def add_requirements(self, requirements): - if self['Metadata-Version'] == '1.1': - # we can't have 1.1 metadata *and* Setuptools requires - for field in ('Obsoletes', 'Requires', 'Provides'): - if field in self: - del self[field] - self['Requires-Dist'] += requirements - - # Mapping API - # TODO could add iter* variants - - def keys(self): - return list(_version2fieldlist(self['Metadata-Version'])) - - def __iter__(self): - for key in self.keys(): - yield key - - def values(self): - return [self[key] for key in self.keys()] - - def items(self): - return [(key, self[key]) for key in self.keys()] - - def __repr__(self): - return '<%s %s %s>' % (self.__class__.__name__, self.name, - self.version) - - -METADATA_FILENAME = 'pydist.json' -WHEEL_METADATA_FILENAME = 'metadata.json' - - -class Metadata(object): - """ - The metadata of a release. This implementation uses 2.0 (JSON) - metadata where possible. If not possible, it wraps a LegacyMetadata - instance which handles the key-value metadata format. - """ - - METADATA_VERSION_MATCHER = re.compile('^\d+(\.\d+)*$') - - NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I) - - VERSION_MATCHER = PEP440_VERSION_RE - - SUMMARY_MATCHER = re.compile('.{1,2047}') - - METADATA_VERSION = '2.0' - - GENERATOR = 'distlib (%s)' % __version__ - - MANDATORY_KEYS = { - 'name': (), - 'version': (), - 'summary': ('legacy',), - } - - INDEX_KEYS = ('name version license summary description author ' - 'author_email keywords platform home_page classifiers ' - 'download_url') - - DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires ' - 'dev_requires provides meta_requires obsoleted_by ' - 'supports_environments') - - SYNTAX_VALIDATORS = { - 'metadata_version': (METADATA_VERSION_MATCHER, ()), - 'name': (NAME_MATCHER, ('legacy',)), - 'version': (VERSION_MATCHER, ('legacy',)), - 'summary': (SUMMARY_MATCHER, ('legacy',)), - } - - __slots__ = ('_legacy', '_data', 'scheme') - - def __init__(self, path=None, fileobj=None, mapping=None, - scheme='default'): - if [path, fileobj, mapping].count(None) < 2: - raise TypeError('path, fileobj and mapping are exclusive') - self._legacy = None - self._data = None - self.scheme = scheme - #import pdb; pdb.set_trace() - if mapping is not None: - try: - self._validate_mapping(mapping, scheme) - self._data = mapping - except MetadataUnrecognizedVersionError: - self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme) - self.validate() - else: - data = None - if path: - with open(path, 'rb') as f: - data = f.read() - elif fileobj: - data = fileobj.read() - if data is None: - # Initialised with no args - to be added - self._data = { - 'metadata_version': self.METADATA_VERSION, - 'generator': self.GENERATOR, - } - else: - if not isinstance(data, text_type): - data = data.decode('utf-8') - try: - self._data = json.loads(data) - self._validate_mapping(self._data, scheme) - except ValueError: - # Note: MetadataUnrecognizedVersionError does not - # inherit from ValueError (it's a DistlibException, - # which should not inherit from ValueError). - # The ValueError comes from the json.load - if that - # succeeds and we get a validation error, we want - # that to propagate - self._legacy = LegacyMetadata(fileobj=StringIO(data), - scheme=scheme) - self.validate() - - common_keys = set(('name', 'version', 'license', 'keywords', 'summary')) - - none_list = (None, list) - none_dict = (None, dict) - - mapped_keys = { - 'run_requires': ('Requires-Dist', list), - 'build_requires': ('Setup-Requires-Dist', list), - 'dev_requires': none_list, - 'test_requires': none_list, - 'meta_requires': none_list, - 'extras': ('Provides-Extra', list), - 'modules': none_list, - 'namespaces': none_list, - 'exports': none_dict, - 'commands': none_dict, - 'classifiers': ('Classifier', list), - 'source_url': ('Download-URL', None), - 'metadata_version': ('Metadata-Version', None), - } - - del none_list, none_dict - - def __getattribute__(self, key): - common = object.__getattribute__(self, 'common_keys') - mapped = object.__getattribute__(self, 'mapped_keys') - if key in mapped: - lk, maker = mapped[key] - if self._legacy: - if lk is None: - result = None if maker is None else maker() - else: - result = self._legacy.get(lk) - else: - value = None if maker is None else maker() - if key not in ('commands', 'exports', 'modules', 'namespaces', - 'classifiers'): - result = self._data.get(key, value) - else: - # special cases for PEP 459 - sentinel = object() - result = sentinel - d = self._data.get('extensions') - if d: - if key == 'commands': - result = d.get('python.commands', value) - elif key == 'classifiers': - d = d.get('python.details') - if d: - result = d.get(key, value) - else: - d = d.get('python.exports') - if not d: - d = self._data.get('python.exports') - if d: - result = d.get(key, value) - if result is sentinel: - result = value - elif key not in common: - result = object.__getattribute__(self, key) - elif self._legacy: - result = self._legacy.get(key) - else: - result = self._data.get(key) - return result - - def _validate_value(self, key, value, scheme=None): - if key in self.SYNTAX_VALIDATORS: - pattern, exclusions = self.SYNTAX_VALIDATORS[key] - if (scheme or self.scheme) not in exclusions: - m = pattern.match(value) - if not m: - raise MetadataInvalidError("'%s' is an invalid value for " - "the '%s' property" % (value, - key)) - - def __setattr__(self, key, value): - self._validate_value(key, value) - common = object.__getattribute__(self, 'common_keys') - mapped = object.__getattribute__(self, 'mapped_keys') - if key in mapped: - lk, _ = mapped[key] - if self._legacy: - if lk is None: - raise NotImplementedError - self._legacy[lk] = value - elif key not in ('commands', 'exports', 'modules', 'namespaces', - 'classifiers'): - self._data[key] = value - else: - # special cases for PEP 459 - d = self._data.setdefault('extensions', {}) - if key == 'commands': - d['python.commands'] = value - elif key == 'classifiers': - d = d.setdefault('python.details', {}) - d[key] = value - else: - d = d.setdefault('python.exports', {}) - d[key] = value - elif key not in common: - object.__setattr__(self, key, value) - else: - if key == 'keywords': - if isinstance(value, string_types): - value = value.strip() - if value: - value = value.split() - else: - value = [] - if self._legacy: - self._legacy[key] = value - else: - self._data[key] = value - - @property - def name_and_version(self): - return _get_name_and_version(self.name, self.version, True) - - @property - def provides(self): - if self._legacy: - result = self._legacy['Provides-Dist'] - else: - result = self._data.setdefault('provides', []) - s = '%s (%s)' % (self.name, self.version) - if s not in result: - result.append(s) - return result - - @provides.setter - def provides(self, value): - if self._legacy: - self._legacy['Provides-Dist'] = value - else: - self._data['provides'] = value - - def get_requirements(self, reqts, extras=None, env=None): - """ - Base method to get dependencies, given a set of extras - to satisfy and an optional environment context. - :param reqts: A list of sometimes-wanted dependencies, - perhaps dependent on extras and environment. - :param extras: A list of optional components being requested. - :param env: An optional environment for marker evaluation. - """ - if self._legacy: - result = reqts - else: - result = [] - extras = get_extras(extras or [], self.extras) - for d in reqts: - if 'extra' not in d and 'environment' not in d: - # unconditional - include = True - else: - if 'extra' not in d: - # Not extra-dependent - only environment-dependent - include = True - else: - include = d.get('extra') in extras - if include: - # Not excluded because of extras, check environment - marker = d.get('environment') - if marker: - include = interpret(marker, env) - if include: - result.extend(d['requires']) - for key in ('build', 'dev', 'test'): - e = ':%s:' % key - if e in extras: - extras.remove(e) - # A recursive call, but it should terminate since 'test' - # has been removed from the extras - reqts = self._data.get('%s_requires' % key, []) - result.extend(self.get_requirements(reqts, extras=extras, - env=env)) - return result - - @property - def dictionary(self): - if self._legacy: - return self._from_legacy() - return self._data - - @property - def dependencies(self): - if self._legacy: - raise NotImplementedError - else: - return extract_by_key(self._data, self.DEPENDENCY_KEYS) - - @dependencies.setter - def dependencies(self, value): - if self._legacy: - raise NotImplementedError - else: - self._data.update(value) - - def _validate_mapping(self, mapping, scheme): - if mapping.get('metadata_version') != self.METADATA_VERSION: - raise MetadataUnrecognizedVersionError() - missing = [] - for key, exclusions in self.MANDATORY_KEYS.items(): - if key not in mapping: - if scheme not in exclusions: - missing.append(key) - if missing: - msg = 'Missing metadata items: %s' % ', '.join(missing) - raise MetadataMissingError(msg) - for k, v in mapping.items(): - self._validate_value(k, v, scheme) - - def validate(self): - if self._legacy: - missing, warnings = self._legacy.check(True) - if missing or warnings: - logger.warning('Metadata: missing: %s, warnings: %s', - missing, warnings) - else: - self._validate_mapping(self._data, self.scheme) - - def todict(self): - if self._legacy: - return self._legacy.todict(True) - else: - result = extract_by_key(self._data, self.INDEX_KEYS) - return result - - def _from_legacy(self): - assert self._legacy and not self._data - result = { - 'metadata_version': self.METADATA_VERSION, - 'generator': self.GENERATOR, - } - lmd = self._legacy.todict(True) # skip missing ones - for k in ('name', 'version', 'license', 'summary', 'description', - 'classifier'): - if k in lmd: - if k == 'classifier': - nk = 'classifiers' - else: - nk = k - result[nk] = lmd[k] - kw = lmd.get('Keywords', []) - if kw == ['']: - kw = [] - result['keywords'] = kw - keys = (('requires_dist', 'run_requires'), - ('setup_requires_dist', 'build_requires')) - for ok, nk in keys: - if ok in lmd and lmd[ok]: - result[nk] = [{'requires': lmd[ok]}] - result['provides'] = self.provides - author = {} - maintainer = {} - return result - - LEGACY_MAPPING = { - 'name': 'Name', - 'version': 'Version', - 'license': 'License', - 'summary': 'Summary', - 'description': 'Description', - 'classifiers': 'Classifier', - } - - def _to_legacy(self): - def process_entries(entries): - reqts = set() - for e in entries: - extra = e.get('extra') - env = e.get('environment') - rlist = e['requires'] - for r in rlist: - if not env and not extra: - reqts.add(r) - else: - marker = '' - if extra: - marker = 'extra == "%s"' % extra - if env: - if marker: - marker = '(%s) and %s' % (env, marker) - else: - marker = env - reqts.add(';'.join((r, marker))) - return reqts - - assert self._data and not self._legacy - result = LegacyMetadata() - nmd = self._data - for nk, ok in self.LEGACY_MAPPING.items(): - if nk in nmd: - result[ok] = nmd[nk] - r1 = process_entries(self.run_requires + self.meta_requires) - r2 = process_entries(self.build_requires + self.dev_requires) - if self.extras: - result['Provides-Extra'] = sorted(self.extras) - result['Requires-Dist'] = sorted(r1) - result['Setup-Requires-Dist'] = sorted(r2) - # TODO: other fields such as contacts - return result - - def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True): - if [path, fileobj].count(None) != 1: - raise ValueError('Exactly one of path and fileobj is needed') - self.validate() - if legacy: - if self._legacy: - legacy_md = self._legacy - else: - legacy_md = self._to_legacy() - if path: - legacy_md.write(path, skip_unknown=skip_unknown) - else: - legacy_md.write_file(fileobj, skip_unknown=skip_unknown) - else: - if self._legacy: - d = self._from_legacy() - else: - d = self._data - if fileobj: - json.dump(d, fileobj, ensure_ascii=True, indent=2, - sort_keys=True) - else: - with codecs.open(path, 'w', 'utf-8') as f: - json.dump(d, f, ensure_ascii=True, indent=2, - sort_keys=True) - - def add_requirements(self, requirements): - if self._legacy: - self._legacy.add_requirements(requirements) - else: - run_requires = self._data.setdefault('run_requires', []) - always = None - for entry in run_requires: - if 'environment' not in entry and 'extra' not in entry: - always = entry - break - if always is None: - always = { 'requires': requirements } - run_requires.insert(0, always) - else: - rset = set(always['requires']) | set(requirements) - always['requires'] = sorted(rset) - - def __repr__(self): - name = self.name or '(no name)' - version = self.version or 'no version' - return '<%s %s %s (%s)>' % (self.__class__.__name__, - self.metadata_version, name, version) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/resources.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/resources.py deleted file mode 100644 index f07cde2..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/resources.py +++ /dev/null @@ -1,355 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2016 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from __future__ import unicode_literals - -import bisect -import io -import logging -import os -import pkgutil -import shutil -import sys -import types -import zipimport - -from . import DistlibException -from .util import cached_property, get_cache_base, path_to_cache_dir, Cache - -logger = logging.getLogger(__name__) - - -cache = None # created when needed - - -class ResourceCache(Cache): - def __init__(self, base=None): - if base is None: - # Use native string to avoid issues on 2.x: see Python #20140. - base = os.path.join(get_cache_base(), str('resource-cache')) - super(ResourceCache, self).__init__(base) - - def is_stale(self, resource, path): - """ - Is the cache stale for the given resource? - - :param resource: The :class:`Resource` being cached. - :param path: The path of the resource in the cache. - :return: True if the cache is stale. - """ - # Cache invalidation is a hard problem :-) - return True - - def get(self, resource): - """ - Get a resource into the cache, - - :param resource: A :class:`Resource` instance. - :return: The pathname of the resource in the cache. - """ - prefix, path = resource.finder.get_cache_info(resource) - if prefix is None: - result = path - else: - result = os.path.join(self.base, self.prefix_to_dir(prefix), path) - dirname = os.path.dirname(result) - if not os.path.isdir(dirname): - os.makedirs(dirname) - if not os.path.exists(result): - stale = True - else: - stale = self.is_stale(resource, path) - if stale: - # write the bytes of the resource to the cache location - with open(result, 'wb') as f: - f.write(resource.bytes) - return result - - -class ResourceBase(object): - def __init__(self, finder, name): - self.finder = finder - self.name = name - - -class Resource(ResourceBase): - """ - A class representing an in-package resource, such as a data file. This is - not normally instantiated by user code, but rather by a - :class:`ResourceFinder` which manages the resource. - """ - is_container = False # Backwards compatibility - - def as_stream(self): - """ - Get the resource as a stream. - - This is not a property to make it obvious that it returns a new stream - each time. - """ - return self.finder.get_stream(self) - - @cached_property - def file_path(self): - global cache - if cache is None: - cache = ResourceCache() - return cache.get(self) - - @cached_property - def bytes(self): - return self.finder.get_bytes(self) - - @cached_property - def size(self): - return self.finder.get_size(self) - - -class ResourceContainer(ResourceBase): - is_container = True # Backwards compatibility - - @cached_property - def resources(self): - return self.finder.get_resources(self) - - -class ResourceFinder(object): - """ - Resource finder for file system resources. - """ - - if sys.platform.startswith('java'): - skipped_extensions = ('.pyc', '.pyo', '.class') - else: - skipped_extensions = ('.pyc', '.pyo') - - def __init__(self, module): - self.module = module - self.loader = getattr(module, '__loader__', None) - self.base = os.path.dirname(getattr(module, '__file__', '')) - - def _adjust_path(self, path): - return os.path.realpath(path) - - def _make_path(self, resource_name): - # Issue #50: need to preserve type of path on Python 2.x - # like os.path._get_sep - if isinstance(resource_name, bytes): # should only happen on 2.x - sep = b'/' - else: - sep = '/' - parts = resource_name.split(sep) - parts.insert(0, self.base) - result = os.path.join(*parts) - return self._adjust_path(result) - - def _find(self, path): - return os.path.exists(path) - - def get_cache_info(self, resource): - return None, resource.path - - def find(self, resource_name): - path = self._make_path(resource_name) - if not self._find(path): - result = None - else: - if self._is_directory(path): - result = ResourceContainer(self, resource_name) - else: - result = Resource(self, resource_name) - result.path = path - return result - - def get_stream(self, resource): - return open(resource.path, 'rb') - - def get_bytes(self, resource): - with open(resource.path, 'rb') as f: - return f.read() - - def get_size(self, resource): - return os.path.getsize(resource.path) - - def get_resources(self, resource): - def allowed(f): - return (f != '__pycache__' and not - f.endswith(self.skipped_extensions)) - return set([f for f in os.listdir(resource.path) if allowed(f)]) - - def is_container(self, resource): - return self._is_directory(resource.path) - - _is_directory = staticmethod(os.path.isdir) - - def iterator(self, resource_name): - resource = self.find(resource_name) - if resource is not None: - todo = [resource] - while todo: - resource = todo.pop(0) - yield resource - if resource.is_container: - rname = resource.name - for name in resource.resources: - if not rname: - new_name = name - else: - new_name = '/'.join([rname, name]) - child = self.find(new_name) - if child.is_container: - todo.append(child) - else: - yield child - - -class ZipResourceFinder(ResourceFinder): - """ - Resource finder for resources in .zip files. - """ - def __init__(self, module): - super(ZipResourceFinder, self).__init__(module) - archive = self.loader.archive - self.prefix_len = 1 + len(archive) - # PyPy doesn't have a _files attr on zipimporter, and you can't set one - if hasattr(self.loader, '_files'): - self._files = self.loader._files - else: - self._files = zipimport._zip_directory_cache[archive] - self.index = sorted(self._files) - - def _adjust_path(self, path): - return path - - def _find(self, path): - path = path[self.prefix_len:] - if path in self._files: - result = True - else: - if path and path[-1] != os.sep: - path = path + os.sep - i = bisect.bisect(self.index, path) - try: - result = self.index[i].startswith(path) - except IndexError: - result = False - if not result: - logger.debug('_find failed: %r %r', path, self.loader.prefix) - else: - logger.debug('_find worked: %r %r', path, self.loader.prefix) - return result - - def get_cache_info(self, resource): - prefix = self.loader.archive - path = resource.path[1 + len(prefix):] - return prefix, path - - def get_bytes(self, resource): - return self.loader.get_data(resource.path) - - def get_stream(self, resource): - return io.BytesIO(self.get_bytes(resource)) - - def get_size(self, resource): - path = resource.path[self.prefix_len:] - return self._files[path][3] - - def get_resources(self, resource): - path = resource.path[self.prefix_len:] - if path and path[-1] != os.sep: - path += os.sep - plen = len(path) - result = set() - i = bisect.bisect(self.index, path) - while i < len(self.index): - if not self.index[i].startswith(path): - break - s = self.index[i][plen:] - result.add(s.split(os.sep, 1)[0]) # only immediate children - i += 1 - return result - - def _is_directory(self, path): - path = path[self.prefix_len:] - if path and path[-1] != os.sep: - path += os.sep - i = bisect.bisect(self.index, path) - try: - result = self.index[i].startswith(path) - except IndexError: - result = False - return result - -_finder_registry = { - type(None): ResourceFinder, - zipimport.zipimporter: ZipResourceFinder -} - -try: - # In Python 3.6, _frozen_importlib -> _frozen_importlib_external - try: - import _frozen_importlib_external as _fi - except ImportError: - import _frozen_importlib as _fi - _finder_registry[_fi.SourceFileLoader] = ResourceFinder - _finder_registry[_fi.FileFinder] = ResourceFinder - del _fi -except (ImportError, AttributeError): - pass - - -def register_finder(loader, finder_maker): - _finder_registry[type(loader)] = finder_maker - -_finder_cache = {} - - -def finder(package): - """ - Return a resource finder for a package. - :param package: The name of the package. - :return: A :class:`ResourceFinder` instance for the package. - """ - if package in _finder_cache: - result = _finder_cache[package] - else: - if package not in sys.modules: - __import__(package) - module = sys.modules[package] - path = getattr(module, '__path__', None) - if path is None: - raise DistlibException('You cannot get a finder for a module, ' - 'only for a package') - loader = getattr(module, '__loader__', None) - finder_maker = _finder_registry.get(type(loader)) - if finder_maker is None: - raise DistlibException('Unable to locate finder for %r' % package) - result = finder_maker(module) - _finder_cache[package] = result - return result - - -_dummy_module = types.ModuleType(str('__dummy__')) - - -def finder_for_path(path): - """ - Return a resource finder for a path, which should represent a container. - - :param path: The path. - :return: A :class:`ResourceFinder` instance for the path. - """ - result = None - # calls any path hooks, gets importer into cache - pkgutil.get_importer(path) - loader = sys.path_importer_cache.get(path) - finder = _finder_registry.get(type(loader)) - if finder: - module = _dummy_module - module.__file__ = os.path.join(path, '') - module.__loader__ = loader - result = finder(module) - return result diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/scripts.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/scripts.py deleted file mode 100644 index 792fc2e..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/scripts.py +++ /dev/null @@ -1,384 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2013-2015 Vinay Sajip. -# Licensed to the Python Software Foundation under a contributor agreement. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -from io import BytesIO -import logging -import os -import re -import struct -import sys - -from .compat import sysconfig, detect_encoding, ZipFile -from .resources import finder -from .util import (FileOperator, get_export_entry, convert_path, - get_executable, in_venv) - -logger = logging.getLogger(__name__) - -_DEFAULT_MANIFEST = ''' - - - - - - - - - - - - -'''.strip() - -# check if Python is called on the first line with this expression -FIRST_LINE_RE = re.compile(b'^#!.*pythonw?[0-9.]*([ \t].*)?$') -SCRIPT_TEMPLATE = '''# -*- coding: utf-8 -*- -if __name__ == '__main__': - import sys, re - - def _resolve(module, func): - __import__(module) - mod = sys.modules[module] - parts = func.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - try: - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - - func = _resolve('%(module)s', '%(func)s') - rc = func() # None interpreted as 0 - except Exception as e: # only supporting Python >= 2.6 - sys.stderr.write('%%s\\n' %% e) - rc = 1 - sys.exit(rc) -''' - - -def _enquote_executable(executable): - if ' ' in executable: - # make sure we quote only the executable in case of env - # for example /usr/bin/env "/dir with spaces/bin/jython" - # instead of "/usr/bin/env /dir with spaces/bin/jython" - # otherwise whole - if executable.startswith('/usr/bin/env '): - env, _executable = executable.split(' ', 1) - if ' ' in _executable and not _executable.startswith('"'): - executable = '%s "%s"' % (env, _executable) - else: - if not executable.startswith('"'): - executable = '"%s"' % executable - return executable - - -class ScriptMaker(object): - """ - A class to copy or create scripts from source scripts or callable - specifications. - """ - script_template = SCRIPT_TEMPLATE - - executable = None # for shebangs - - def __init__(self, source_dir, target_dir, add_launchers=True, - dry_run=False, fileop=None): - self.source_dir = source_dir - self.target_dir = target_dir - self.add_launchers = add_launchers - self.force = False - self.clobber = False - # It only makes sense to set mode bits on POSIX. - self.set_mode = (os.name == 'posix') or (os.name == 'java' and - os._name == 'posix') - self.variants = set(('', 'X.Y')) - self._fileop = fileop or FileOperator(dry_run) - - self._is_nt = os.name == 'nt' or ( - os.name == 'java' and os._name == 'nt') - - def _get_alternate_executable(self, executable, options): - if options.get('gui', False) and self._is_nt: # pragma: no cover - dn, fn = os.path.split(executable) - fn = fn.replace('python', 'pythonw') - executable = os.path.join(dn, fn) - return executable - - if sys.platform.startswith('java'): # pragma: no cover - def _is_shell(self, executable): - """ - Determine if the specified executable is a script - (contains a #! line) - """ - try: - with open(executable) as fp: - return fp.read(2) == '#!' - except (OSError, IOError): - logger.warning('Failed to open %s', executable) - return False - - def _fix_jython_executable(self, executable): - if self._is_shell(executable): - # Workaround for Jython is not needed on Linux systems. - import java - - if java.lang.System.getProperty('os.name') == 'Linux': - return executable - elif executable.lower().endswith('jython.exe'): - # Use wrapper exe for Jython on Windows - return executable - return '/usr/bin/env %s' % executable - - def _get_shebang(self, encoding, post_interp=b'', options=None): - enquote = True - if self.executable: - executable = self.executable - enquote = False # assume this will be taken care of - elif not sysconfig.is_python_build(): - executable = get_executable() - elif in_venv(): # pragma: no cover - executable = os.path.join(sysconfig.get_path('scripts'), - 'python%s' % sysconfig.get_config_var('EXE')) - else: # pragma: no cover - executable = os.path.join( - sysconfig.get_config_var('BINDIR'), - 'python%s%s' % (sysconfig.get_config_var('VERSION'), - sysconfig.get_config_var('EXE'))) - if options: - executable = self._get_alternate_executable(executable, options) - - if sys.platform.startswith('java'): # pragma: no cover - executable = self._fix_jython_executable(executable) - # Normalise case for Windows - executable = os.path.normcase(executable) - # If the user didn't specify an executable, it may be necessary to - # cater for executable paths with spaces (not uncommon on Windows) - if enquote: - executable = _enquote_executable(executable) - # Issue #51: don't use fsencode, since we later try to - # check that the shebang is decodable using utf-8. - executable = executable.encode('utf-8') - # in case of IronPython, play safe and enable frames support - if (sys.platform == 'cli' and '-X:Frames' not in post_interp - and '-X:FullFrames' not in post_interp): # pragma: no cover - post_interp += b' -X:Frames' - shebang = b'#!' + executable + post_interp + b'\n' - # Python parser starts to read a script using UTF-8 until - # it gets a #coding:xxx cookie. The shebang has to be the - # first line of a file, the #coding:xxx cookie cannot be - # written before. So the shebang has to be decodable from - # UTF-8. - try: - shebang.decode('utf-8') - except UnicodeDecodeError: # pragma: no cover - raise ValueError( - 'The shebang (%r) is not decodable from utf-8' % shebang) - # If the script is encoded to a custom encoding (use a - # #coding:xxx cookie), the shebang has to be decodable from - # the script encoding too. - if encoding != 'utf-8': - try: - shebang.decode(encoding) - except UnicodeDecodeError: # pragma: no cover - raise ValueError( - 'The shebang (%r) is not decodable ' - 'from the script encoding (%r)' % (shebang, encoding)) - return shebang - - def _get_script_text(self, entry): - return self.script_template % dict(module=entry.prefix, - func=entry.suffix) - - manifest = _DEFAULT_MANIFEST - - def get_manifest(self, exename): - base = os.path.basename(exename) - return self.manifest % base - - def _write_script(self, names, shebang, script_bytes, filenames, ext): - use_launcher = self.add_launchers and self._is_nt - linesep = os.linesep.encode('utf-8') - if not use_launcher: - script_bytes = shebang + linesep + script_bytes - else: # pragma: no cover - if ext == 'py': - launcher = self._get_launcher('t') - else: - launcher = self._get_launcher('w') - stream = BytesIO() - with ZipFile(stream, 'w') as zf: - zf.writestr('__main__.py', script_bytes) - zip_data = stream.getvalue() - script_bytes = launcher + shebang + linesep + zip_data - for name in names: - outname = os.path.join(self.target_dir, name) - if use_launcher: # pragma: no cover - n, e = os.path.splitext(outname) - if e.startswith('.py'): - outname = n - outname = '%s.exe' % outname - try: - self._fileop.write_binary_file(outname, script_bytes) - except Exception: - # Failed writing an executable - it might be in use. - logger.warning('Failed to write executable - trying to ' - 'use .deleteme logic') - dfname = '%s.deleteme' % outname - if os.path.exists(dfname): - os.remove(dfname) # Not allowed to fail here - os.rename(outname, dfname) # nor here - self._fileop.write_binary_file(outname, script_bytes) - logger.debug('Able to replace executable using ' - '.deleteme logic') - try: - os.remove(dfname) - except Exception: - pass # still in use - ignore error - else: - if self._is_nt and not outname.endswith('.' + ext): # pragma: no cover - outname = '%s.%s' % (outname, ext) - if os.path.exists(outname) and not self.clobber: - logger.warning('Skipping existing file %s', outname) - continue - self._fileop.write_binary_file(outname, script_bytes) - if self.set_mode: - self._fileop.set_executable_mode([outname]) - filenames.append(outname) - - def _make_script(self, entry, filenames, options=None): - post_interp = b'' - if options: - args = options.get('interpreter_args', []) - if args: - args = ' %s' % ' '.join(args) - post_interp = args.encode('utf-8') - shebang = self._get_shebang('utf-8', post_interp, options=options) - script = self._get_script_text(entry).encode('utf-8') - name = entry.name - scriptnames = set() - if '' in self.variants: - scriptnames.add(name) - if 'X' in self.variants: - scriptnames.add('%s%s' % (name, sys.version[0])) - if 'X.Y' in self.variants: - scriptnames.add('%s-%s' % (name, sys.version[:3])) - if options and options.get('gui', False): - ext = 'pyw' - else: - ext = 'py' - self._write_script(scriptnames, shebang, script, filenames, ext) - - def _copy_script(self, script, filenames): - adjust = False - script = os.path.join(self.source_dir, convert_path(script)) - outname = os.path.join(self.target_dir, os.path.basename(script)) - if not self.force and not self._fileop.newer(script, outname): - logger.debug('not copying %s (up-to-date)', script) - return - - # Always open the file, but ignore failures in dry-run mode -- - # that way, we'll get accurate feedback if we can read the - # script. - try: - f = open(script, 'rb') - except IOError: # pragma: no cover - if not self.dry_run: - raise - f = None - else: - first_line = f.readline() - if not first_line: # pragma: no cover - logger.warning('%s: %s is an empty file (skipping)', - self.get_command_name(), script) - return - - match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) - if match: - adjust = True - post_interp = match.group(1) or b'' - - if not adjust: - if f: - f.close() - self._fileop.copy_file(script, outname) - if self.set_mode: - self._fileop.set_executable_mode([outname]) - filenames.append(outname) - else: - logger.info('copying and adjusting %s -> %s', script, - self.target_dir) - if not self._fileop.dry_run: - encoding, lines = detect_encoding(f.readline) - f.seek(0) - shebang = self._get_shebang(encoding, post_interp) - if b'pythonw' in first_line: # pragma: no cover - ext = 'pyw' - else: - ext = 'py' - n = os.path.basename(outname) - self._write_script([n], shebang, f.read(), filenames, ext) - if f: - f.close() - - @property - def dry_run(self): - return self._fileop.dry_run - - @dry_run.setter - def dry_run(self, value): - self._fileop.dry_run = value - - if os.name == 'nt' or (os.name == 'java' and os._name == 'nt'): # pragma: no cover - # Executable launcher support. - # Launchers are from https://bitbucket.org/vinay.sajip/simple_launcher/ - - def _get_launcher(self, kind): - if struct.calcsize('P') == 8: # 64-bit - bits = '64' - else: - bits = '32' - name = '%s%s.exe' % (kind, bits) - # Issue 31: don't hardcode an absolute package name, but - # determine it relative to the current package - distlib_package = __name__.rsplit('.', 1)[0] - result = finder(distlib_package).find(name).bytes - return result - - # Public API follows - - def make(self, specification, options=None): - """ - Make a script. - - :param specification: The specification, which is either a valid export - entry specification (to make a script from a - callable) or a filename (to make a script by - copying from a source location). - :param options: A dictionary of options controlling script generation. - :return: A list of all absolute pathnames written to. - """ - filenames = [] - entry = get_export_entry(specification) - if entry is None: - self._copy_script(specification, filenames) - else: - self._make_script(entry, filenames, options=options) - return filenames - - def make_multiple(self, specifications, options=None): - """ - Take a list of specifications and make scripts from them, - :param specifications: A list of specifications. - :return: A list of all absolute pathnames written to, - """ - filenames = [] - for specification in specifications: - filenames.extend(self.make(specification, options)) - return filenames diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/t32.exe b/env/lib/python3.6/site-packages/pip/_vendor/distlib/t32.exe deleted file mode 100644 index 836211d848ec0ba46667d33cfade3348888062ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89088 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≫*an|s~C9@ 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�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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/t64.exe b/env/lib/python3.6/site-packages/pip/_vendor/distlib/t64.exe deleted file mode 100644 index a401b59d602d4823e0a69138a0268f0bfbec3de2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97792 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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/serializer.cpython-36.pyc deleted file mode 100644 index 0691077da49d4c356bb9c75afb7390fbf387a1ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9368 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 E3pU{;FaQ7m diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_ihatexml.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_ihatexml.py deleted file mode 100644 index d6d1d6f..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_ihatexml.py +++ /dev/null @@ -1,288 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -import re -import warnings - -from .constants import DataLossWarning - -baseChar = """ -[#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | -[#x00F8-#x00FF] | [#x0100-#x0131] | [#x0134-#x013E] | [#x0141-#x0148] | -[#x014A-#x017E] | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5] | -[#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1] | #x0386 | -[#x0388-#x038A] | #x038C | [#x038E-#x03A1] | [#x03A3-#x03CE] | -[#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | [#x03E2-#x03F3] | -[#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481] | -[#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | [#x04D0-#x04EB] | -[#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | #x0559 | -[#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A] | -[#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | [#x06C0-#x06CE] | -[#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D | -[#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990] | [#x0993-#x09A8] | -[#x09AA-#x09B0] | #x09B2 | [#x09B6-#x09B9] | [#x09DC-#x09DD] | -[#x09DF-#x09E1] | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | -[#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33] | [#x0A35-#x0A36] | -[#x0A38-#x0A39] | [#x0A59-#x0A5C] | #x0A5E | [#x0A72-#x0A74] | -[#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8] | -[#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | #x0ABD | #x0AE0 | -[#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30] | -[#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | [#x0B5C-#x0B5D] | -[#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | -[#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4] | -[#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | [#x0C05-#x0C0C] | -[#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | -[#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8] | -[#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | [#x0CE0-#x0CE1] | -[#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | -[#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33] | -[#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | [#x0E87-#x0E88] | #x0E8A | -#x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3] | #x0EA5 | -#x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3] | -#x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | [#x0F49-#x0F69] | -[#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | [#x1102-#x1103] | -[#x1105-#x1107] | #x1109 | [#x110B-#x110C] | [#x110E-#x1112] | #x113C | -#x113E | #x1140 | #x114C | #x114E | #x1150 | [#x1154-#x1155] | #x1159 | -[#x115F-#x1161] | #x1163 | #x1165 | #x1167 | #x1169 | [#x116D-#x116E] | -[#x1172-#x1173] | #x1175 | #x119E | #x11A8 | #x11AB | [#x11AE-#x11AF] | -[#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | #x11EB | #x11F0 | #x11F9 | -[#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D] | -[#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57] | #x1F59 | #x1F5B | -#x1F5D | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | -[#x1FC2-#x1FC4] | [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | -[#x1FE0-#x1FEC] | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | -[#x212A-#x212B] | #x212E | [#x2180-#x2182] | [#x3041-#x3094] | -[#x30A1-#x30FA] | [#x3105-#x312C] | [#xAC00-#xD7A3]""" - -ideographic = """[#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]""" - -combiningCharacter = """ -[#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486] | [#x0591-#x05A1] | -[#x05A3-#x05B9] | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2] | #x05C4 | -[#x064B-#x0652] | #x0670 | [#x06D6-#x06DC] | [#x06DD-#x06DF] | -[#x06E0-#x06E4] | [#x06E7-#x06E8] | [#x06EA-#x06ED] | [#x0901-#x0903] | -#x093C | [#x093E-#x094C] | #x094D | [#x0951-#x0954] | [#x0962-#x0963] | -[#x0981-#x0983] | #x09BC | #x09BE | #x09BF | [#x09C0-#x09C4] | -[#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3] | #x0A02 | -#x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42] | [#x0A47-#x0A48] | -[#x0A4B-#x0A4D] | [#x0A70-#x0A71] | [#x0A81-#x0A83] | #x0ABC | -[#x0ABE-#x0AC5] | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03] | -#x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48] | [#x0B4B-#x0B4D] | -[#x0B56-#x0B57] | [#x0B82-#x0B83] | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | -[#x0BCA-#x0BCD] | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44] | -[#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56] | [#x0C82-#x0C83] | -[#x0CBE-#x0CC4] | [#x0CC6-#x0CC8] | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | -[#x0D02-#x0D03] | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D] | -#x0D57 | #x0E31 | [#x0E34-#x0E3A] | [#x0E47-#x0E4E] | #x0EB1 | -[#x0EB4-#x0EB9] | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | -#x0F35 | #x0F37 | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84] | -[#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97 | [#x0F99-#x0FAD] | -[#x0FB1-#x0FB7] | #x0FB9 | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F] | -#x3099 | #x309A""" - -digit = """ -[#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9] | [#x0966-#x096F] | -[#x09E6-#x09EF] | [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | -[#x0BE7-#x0BEF] | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F] | -[#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]""" - -extender = """ -#x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6 | #x3005 | -#[#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]""" - -letter = " | ".join([baseChar, ideographic]) - -# Without the -name = " | ".join([letter, digit, ".", "-", "_", combiningCharacter, - extender]) -nameFirst = " | ".join([letter, "_"]) - -reChar = re.compile(r"#x([\d|A-F]{4,4})") -reCharRange = re.compile(r"\[#x([\d|A-F]{4,4})-#x([\d|A-F]{4,4})\]") - - -def charStringToList(chars): - charRanges = [item.strip() for item in chars.split(" | ")] - rv = [] - for item in charRanges: - foundMatch = False - for regexp in (reChar, reCharRange): - match = regexp.match(item) - if match is not None: - rv.append([hexToInt(item) for item in match.groups()]) - if len(rv[-1]) == 1: - rv[-1] = rv[-1] * 2 - foundMatch = True - break - if not foundMatch: - assert len(item) == 1 - - rv.append([ord(item)] * 2) - rv = normaliseCharList(rv) - return rv - - -def normaliseCharList(charList): - charList = sorted(charList) - for item in charList: - assert item[1] >= item[0] - rv = [] - i = 0 - while i < len(charList): - j = 1 - rv.append(charList[i]) - while i + j < len(charList) and charList[i + j][0] <= rv[-1][1] + 1: - rv[-1][1] = charList[i + j][1] - j += 1 - i += j - return rv - -# We don't really support characters above the BMP :( -max_unicode = int("FFFF", 16) - - -def missingRanges(charList): - rv = [] - if charList[0] != 0: - rv.append([0, charList[0][0] - 1]) - for i, item in enumerate(charList[:-1]): - rv.append([item[1] + 1, charList[i + 1][0] - 1]) - if charList[-1][1] != max_unicode: - rv.append([charList[-1][1] + 1, max_unicode]) - return rv - - -def listToRegexpStr(charList): - rv = [] - for item in charList: - if item[0] == item[1]: - rv.append(escapeRegexp(chr(item[0]))) - else: - rv.append(escapeRegexp(chr(item[0])) + "-" + - escapeRegexp(chr(item[1]))) - return "[%s]" % "".join(rv) - - -def hexToInt(hex_str): - return int(hex_str, 16) - - -def escapeRegexp(string): - specialCharacters = (".", "^", "$", "*", "+", "?", "{", "}", - "[", "]", "|", "(", ")", "-") - for char in specialCharacters: - string = string.replace(char, "\\" + char) - - return string - -# output from the above -nonXmlNameBMPRegexp = re.compile('[\x00-,/:-@\\[-\\^`\\{-\xb6\xb8-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u02cf\u02d2-\u02ff\u0346-\u035f\u0362-\u0385\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482\u0487-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u0590\u05a2\u05ba\u05be\u05c0\u05c3\u05c5-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u063f\u0653-\u065f\u066a-\u066f\u06b8-\u06b9\u06bf\u06cf\u06d4\u06e9\u06ee-\u06ef\u06fa-\u0900\u0904\u093a-\u093b\u094e-\u0950\u0955-\u0957\u0964-\u0965\u0970-\u0980\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09bb\u09bd\u09c5-\u09c6\u09c9-\u09ca\u09ce-\u09d6\u09d8-\u09db\u09de\u09e4-\u09e5\u09f2-\u0a01\u0a03-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a3b\u0a3d\u0a43-\u0a46\u0a49-\u0a4a\u0a4e-\u0a58\u0a5d\u0a5f-\u0a65\u0a75-\u0a80\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abb\u0ac6\u0aca\u0ace-\u0adf\u0ae1-\u0ae5\u0af0-\u0b00\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3b\u0b44-\u0b46\u0b49-\u0b4a\u0b4e-\u0b55\u0b58-\u0b5b\u0b5e\u0b62-\u0b65\u0b70-\u0b81\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0bbd\u0bc3-\u0bc5\u0bc9\u0bce-\u0bd6\u0bd8-\u0be6\u0bf0-\u0c00\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c3d\u0c45\u0c49\u0c4e-\u0c54\u0c57-\u0c5f\u0c62-\u0c65\u0c70-\u0c81\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cbd\u0cc5\u0cc9\u0cce-\u0cd4\u0cd7-\u0cdd\u0cdf\u0ce2-\u0ce5\u0cf0-\u0d01\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d3d\u0d44-\u0d45\u0d49\u0d4e-\u0d56\u0d58-\u0d5f\u0d62-\u0d65\u0d70-\u0e00\u0e2f\u0e3b-\u0e3f\u0e4f\u0e5a-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eba\u0ebe-\u0ebf\u0ec5\u0ec7\u0ece-\u0ecf\u0eda-\u0f17\u0f1a-\u0f1f\u0f2a-\u0f34\u0f36\u0f38\u0f3a-\u0f3d\u0f48\u0f6a-\u0f70\u0f85\u0f8c-\u0f8f\u0f96\u0f98\u0fae-\u0fb0\u0fb8\u0fba-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u20cf\u20dd-\u20e0\u20e2-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3004\u3006\u3008-\u3020\u3030\u3036-\u3040\u3095-\u3098\u309b-\u309c\u309f-\u30a0\u30fb\u30ff-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa - -nonXmlNameFirstBMPRegexp = re.compile('[\x00-@\\[-\\^`\\{-\xbf\xd7\xf7\u0132-\u0133\u013f-\u0140\u0149\u017f\u01c4-\u01cc\u01f1-\u01f3\u01f6-\u01f9\u0218-\u024f\u02a9-\u02ba\u02c2-\u0385\u0387\u038b\u038d\u03a2\u03cf\u03d7-\u03d9\u03db\u03dd\u03df\u03e1\u03f4-\u0400\u040d\u0450\u045d\u0482-\u048f\u04c5-\u04c6\u04c9-\u04ca\u04cd-\u04cf\u04ec-\u04ed\u04f6-\u04f7\u04fa-\u0530\u0557-\u0558\u055a-\u0560\u0587-\u05cf\u05eb-\u05ef\u05f3-\u0620\u063b-\u0640\u064b-\u0670\u06b8-\u06b9\u06bf\u06cf\u06d4\u06d6-\u06e4\u06e7-\u0904\u093a-\u093c\u093e-\u0957\u0962-\u0984\u098d-\u098e\u0991-\u0992\u09a9\u09b1\u09b3-\u09b5\u09ba-\u09db\u09de\u09e2-\u09ef\u09f2-\u0a04\u0a0b-\u0a0e\u0a11-\u0a12\u0a29\u0a31\u0a34\u0a37\u0a3a-\u0a58\u0a5d\u0a5f-\u0a71\u0a75-\u0a84\u0a8c\u0a8e\u0a92\u0aa9\u0ab1\u0ab4\u0aba-\u0abc\u0abe-\u0adf\u0ae1-\u0b04\u0b0d-\u0b0e\u0b11-\u0b12\u0b29\u0b31\u0b34-\u0b35\u0b3a-\u0b3c\u0b3e-\u0b5b\u0b5e\u0b62-\u0b84\u0b8b-\u0b8d\u0b91\u0b96-\u0b98\u0b9b\u0b9d\u0ba0-\u0ba2\u0ba5-\u0ba7\u0bab-\u0bad\u0bb6\u0bba-\u0c04\u0c0d\u0c11\u0c29\u0c34\u0c3a-\u0c5f\u0c62-\u0c84\u0c8d\u0c91\u0ca9\u0cb4\u0cba-\u0cdd\u0cdf\u0ce2-\u0d04\u0d0d\u0d11\u0d29\u0d3a-\u0d5f\u0d62-\u0e00\u0e2f\u0e31\u0e34-\u0e3f\u0e46-\u0e80\u0e83\u0e85-\u0e86\u0e89\u0e8b-\u0e8c\u0e8e-\u0e93\u0e98\u0ea0\u0ea4\u0ea6\u0ea8-\u0ea9\u0eac\u0eaf\u0eb1\u0eb4-\u0ebc\u0ebe-\u0ebf\u0ec5-\u0f3f\u0f48\u0f6a-\u109f\u10c6-\u10cf\u10f7-\u10ff\u1101\u1104\u1108\u110a\u110d\u1113-\u113b\u113d\u113f\u1141-\u114b\u114d\u114f\u1151-\u1153\u1156-\u1158\u115a-\u115e\u1162\u1164\u1166\u1168\u116a-\u116c\u116f-\u1171\u1174\u1176-\u119d\u119f-\u11a7\u11a9-\u11aa\u11ac-\u11ad\u11b0-\u11b6\u11b9\u11bb\u11c3-\u11ea\u11ec-\u11ef\u11f1-\u11f8\u11fa-\u1dff\u1e9c-\u1e9f\u1efa-\u1eff\u1f16-\u1f17\u1f1e-\u1f1f\u1f46-\u1f47\u1f4e-\u1f4f\u1f58\u1f5a\u1f5c\u1f5e\u1f7e-\u1f7f\u1fb5\u1fbd\u1fbf-\u1fc1\u1fc5\u1fcd-\u1fcf\u1fd4-\u1fd5\u1fdc-\u1fdf\u1fed-\u1ff1\u1ff5\u1ffd-\u2125\u2127-\u2129\u212c-\u212d\u212f-\u217f\u2183-\u3006\u3008-\u3020\u302a-\u3040\u3095-\u30a0\u30fb-\u3104\u312d-\u4dff\u9fa6-\uabff\ud7a4-\uffff]') # noqa - -# Simpler things -nonPubidCharRegexp = re.compile("[^\x20\x0D\x0Aa-zA-Z0-9\-\'()+,./:=?;!*#@$_%]") - - -class InfosetFilter(object): - replacementRegexp = re.compile(r"U[\dA-F]{5,5}") - - def __init__(self, - dropXmlnsLocalName=False, - dropXmlnsAttrNs=False, - preventDoubleDashComments=False, - preventDashAtCommentEnd=False, - replaceFormFeedCharacters=True, - preventSingleQuotePubid=False): - - self.dropXmlnsLocalName = dropXmlnsLocalName - self.dropXmlnsAttrNs = dropXmlnsAttrNs - - self.preventDoubleDashComments = preventDoubleDashComments - self.preventDashAtCommentEnd = preventDashAtCommentEnd - - self.replaceFormFeedCharacters = replaceFormFeedCharacters - - self.preventSingleQuotePubid = preventSingleQuotePubid - - self.replaceCache = {} - - def coerceAttribute(self, name, namespace=None): - if self.dropXmlnsLocalName and name.startswith("xmlns:"): - warnings.warn("Attributes cannot begin with xmlns", DataLossWarning) - return None - elif (self.dropXmlnsAttrNs and - namespace == "http://www.w3.org/2000/xmlns/"): - warnings.warn("Attributes cannot be in the xml namespace", DataLossWarning) - return None - else: - return self.toXmlName(name) - - def coerceElement(self, name): - return self.toXmlName(name) - - def coerceComment(self, data): - if self.preventDoubleDashComments: - while "--" in data: - warnings.warn("Comments cannot contain adjacent dashes", DataLossWarning) - data = data.replace("--", "- -") - if data.endswith("-"): - warnings.warn("Comments cannot end in a dash", DataLossWarning) - data += " " - return data - - def coerceCharacters(self, data): - if self.replaceFormFeedCharacters: - for _ in range(data.count("\x0C")): - warnings.warn("Text cannot contain U+000C", DataLossWarning) - data = data.replace("\x0C", " ") - # Other non-xml characters - return data - - def coercePubid(self, data): - dataOutput = data - for char in nonPubidCharRegexp.findall(data): - warnings.warn("Coercing non-XML pubid", DataLossWarning) - replacement = self.getReplacementCharacter(char) - dataOutput = dataOutput.replace(char, replacement) - if self.preventSingleQuotePubid and dataOutput.find("'") >= 0: - warnings.warn("Pubid cannot contain single quote", DataLossWarning) - dataOutput = dataOutput.replace("'", self.getReplacementCharacter("'")) - return dataOutput - - def toXmlName(self, name): - nameFirst = name[0] - nameRest = name[1:] - m = nonXmlNameFirstBMPRegexp.match(nameFirst) - if m: - warnings.warn("Coercing non-XML name", DataLossWarning) - nameFirstOutput = self.getReplacementCharacter(nameFirst) - else: - nameFirstOutput = nameFirst - - nameRestOutput = nameRest - replaceChars = set(nonXmlNameBMPRegexp.findall(nameRest)) - for char in replaceChars: - warnings.warn("Coercing non-XML name", DataLossWarning) - replacement = self.getReplacementCharacter(char) - nameRestOutput = nameRestOutput.replace(char, replacement) - return nameFirstOutput + nameRestOutput - - def getReplacementCharacter(self, char): - if char in self.replaceCache: - replacement = self.replaceCache[char] - else: - replacement = self.escapeChar(char) - return replacement - - def fromXmlName(self, name): - for item in set(self.replacementRegexp.findall(name)): - name = name.replace(item, self.unescapeChar(item)) - return name - - def escapeChar(self, char): - replacement = "U%05X" % ord(char) - self.replaceCache[char] = replacement - return replacement - - def unescapeChar(self, charcode): - return chr(int(charcode[1:], 16)) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_inputstream.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_inputstream.py deleted file mode 100644 index 7c5639f..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_inputstream.py +++ /dev/null @@ -1,923 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from pip._vendor.six import text_type, binary_type -from pip._vendor.six.moves import http_client, urllib - -import codecs -import re - -from pip._vendor import webencodings - -from .constants import EOF, spaceCharacters, asciiLetters, asciiUppercase -from .constants import ReparseException -from . import _utils - -from io import StringIO - -try: - from io import BytesIO -except ImportError: - BytesIO = StringIO - -# Non-unicode versions of constants for use in the pre-parser -spaceCharactersBytes = frozenset([item.encode("ascii") for item in spaceCharacters]) -asciiLettersBytes = frozenset([item.encode("ascii") for item in asciiLetters]) -asciiUppercaseBytes = frozenset([item.encode("ascii") for item in asciiUppercase]) -spacesAngleBrackets = spaceCharactersBytes | frozenset([b">", b"<"]) - - -invalid_unicode_no_surrogate = "[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uFDD0-\uFDEF\uFFFE\uFFFF\U0001FFFE\U0001FFFF\U0002FFFE\U0002FFFF\U0003FFFE\U0003FFFF\U0004FFFE\U0004FFFF\U0005FFFE\U0005FFFF\U0006FFFE\U0006FFFF\U0007FFFE\U0007FFFF\U0008FFFE\U0008FFFF\U0009FFFE\U0009FFFF\U000AFFFE\U000AFFFF\U000BFFFE\U000BFFFF\U000CFFFE\U000CFFFF\U000DFFFE\U000DFFFF\U000EFFFE\U000EFFFF\U000FFFFE\U000FFFFF\U0010FFFE\U0010FFFF]" # noqa - -if _utils.supports_lone_surrogates: - # Use one extra step of indirection and create surrogates with - # eval. Not using this indirection would introduce an illegal - # unicode literal on platforms not supporting such lone - # surrogates. - assert invalid_unicode_no_surrogate[-1] == "]" and invalid_unicode_no_surrogate.count("]") == 1 - invalid_unicode_re = re.compile(invalid_unicode_no_surrogate[:-1] + - eval('"\\uD800-\\uDFFF"') + # pylint:disable=eval-used - "]") -else: - invalid_unicode_re = re.compile(invalid_unicode_no_surrogate) - -non_bmp_invalid_codepoints = set([0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, - 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF, - 0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE, - 0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF, - 0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, - 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF, - 0x10FFFE, 0x10FFFF]) - -ascii_punctuation_re = re.compile("[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E]") - -# Cache for charsUntil() -charsUntilRegEx = {} - - -class BufferedStream(object): - """Buffering for streams that do not have buffering of their own - - The buffer is implemented as a list of chunks on the assumption that - joining many strings will be slow since it is O(n**2) - """ - - def __init__(self, stream): - self.stream = stream - self.buffer = [] - self.position = [-1, 0] # chunk number, offset - - def tell(self): - pos = 0 - for chunk in self.buffer[:self.position[0]]: - pos += len(chunk) - pos += self.position[1] - return pos - - def seek(self, pos): - assert pos <= self._bufferedBytes() - offset = pos - i = 0 - while len(self.buffer[i]) < offset: - offset -= len(self.buffer[i]) - i += 1 - self.position = [i, offset] - - def read(self, bytes): - if not self.buffer: - return self._readStream(bytes) - elif (self.position[0] == len(self.buffer) and - self.position[1] == len(self.buffer[-1])): - return self._readStream(bytes) - else: - return self._readFromBuffer(bytes) - - def _bufferedBytes(self): - return sum([len(item) for item in self.buffer]) - - def _readStream(self, bytes): - data = self.stream.read(bytes) - self.buffer.append(data) - self.position[0] += 1 - self.position[1] = len(data) - return data - - def _readFromBuffer(self, bytes): - remainingBytes = bytes - rv = [] - bufferIndex = self.position[0] - bufferOffset = self.position[1] - while bufferIndex < len(self.buffer) and remainingBytes != 0: - assert remainingBytes > 0 - bufferedData = self.buffer[bufferIndex] - - if remainingBytes <= len(bufferedData) - bufferOffset: - bytesToRead = remainingBytes - self.position = [bufferIndex, bufferOffset + bytesToRead] - else: - bytesToRead = len(bufferedData) - bufferOffset - self.position = [bufferIndex, len(bufferedData)] - bufferIndex += 1 - rv.append(bufferedData[bufferOffset:bufferOffset + bytesToRead]) - remainingBytes -= bytesToRead - - bufferOffset = 0 - - if remainingBytes: - rv.append(self._readStream(remainingBytes)) - - return b"".join(rv) - - -def HTMLInputStream(source, **kwargs): - # Work around Python bug #20007: read(0) closes the connection. - # http://bugs.python.org/issue20007 - if (isinstance(source, http_client.HTTPResponse) or - # Also check for addinfourl wrapping HTTPResponse - (isinstance(source, urllib.response.addbase) and - isinstance(source.fp, http_client.HTTPResponse))): - isUnicode = False - elif hasattr(source, "read"): - isUnicode = isinstance(source.read(0), text_type) - else: - isUnicode = isinstance(source, text_type) - - if isUnicode: - encodings = [x for x in kwargs if x.endswith("_encoding")] - if encodings: - raise TypeError("Cannot set an encoding with a unicode input, set %r" % encodings) - - return HTMLUnicodeInputStream(source, **kwargs) - else: - return HTMLBinaryInputStream(source, **kwargs) - - -class HTMLUnicodeInputStream(object): - """Provides a unicode stream of characters to the HTMLTokenizer. - - This class takes care of character encoding and removing or replacing - incorrect byte-sequences and also provides column and line tracking. - - """ - - _defaultChunkSize = 10240 - - def __init__(self, source): - """Initialises the HTMLInputStream. - - HTMLInputStream(source, [encoding]) -> Normalized stream from source - for use by html5lib. - - source can be either a file-object, local filename or a string. - - The optional encoding parameter must be a string that indicates - the encoding. If specified, that encoding will be used, - regardless of any BOM or later declaration (such as in a meta - element) - - """ - - if not _utils.supports_lone_surrogates: - # Such platforms will have already checked for such - # surrogate errors, so no need to do this checking. - self.reportCharacterErrors = None - elif len("\U0010FFFF") == 1: - self.reportCharacterErrors = self.characterErrorsUCS4 - else: - self.reportCharacterErrors = self.characterErrorsUCS2 - - # List of where new lines occur - self.newLines = [0] - - self.charEncoding = (lookupEncoding("utf-8"), "certain") - self.dataStream = self.openStream(source) - - self.reset() - - def reset(self): - self.chunk = "" - self.chunkSize = 0 - self.chunkOffset = 0 - self.errors = [] - - # number of (complete) lines in previous chunks - self.prevNumLines = 0 - # number of columns in the last line of the previous chunk - self.prevNumCols = 0 - - # Deal with CR LF and surrogates split over chunk boundaries - self._bufferedCharacter = None - - def openStream(self, source): - """Produces a file object from source. - - source can be either a file object, local filename or a string. - - """ - # Already a file object - if hasattr(source, 'read'): - stream = source - else: - stream = StringIO(source) - - return stream - - def _position(self, offset): - chunk = self.chunk - nLines = chunk.count('\n', 0, offset) - positionLine = self.prevNumLines + nLines - lastLinePos = chunk.rfind('\n', 0, offset) - if lastLinePos == -1: - positionColumn = self.prevNumCols + offset - else: - positionColumn = offset - (lastLinePos + 1) - return (positionLine, positionColumn) - - def position(self): - """Returns (line, col) of the current position in the stream.""" - line, col = self._position(self.chunkOffset) - return (line + 1, col) - - def char(self): - """ Read one character from the stream or queue if available. Return - EOF when EOF is reached. - """ - # Read a new chunk from the input stream if necessary - if self.chunkOffset >= self.chunkSize: - if not self.readChunk(): - return EOF - - chunkOffset = self.chunkOffset - char = self.chunk[chunkOffset] - self.chunkOffset = chunkOffset + 1 - - return char - - def readChunk(self, chunkSize=None): - if chunkSize is None: - chunkSize = self._defaultChunkSize - - self.prevNumLines, self.prevNumCols = self._position(self.chunkSize) - - self.chunk = "" - self.chunkSize = 0 - self.chunkOffset = 0 - - data = self.dataStream.read(chunkSize) - - # Deal with CR LF and surrogates broken across chunks - if self._bufferedCharacter: - data = self._bufferedCharacter + data - self._bufferedCharacter = None - elif not data: - # We have no more data, bye-bye stream - return False - - if len(data) > 1: - lastv = ord(data[-1]) - if lastv == 0x0D or 0xD800 <= lastv <= 0xDBFF: - self._bufferedCharacter = data[-1] - data = data[:-1] - - if self.reportCharacterErrors: - self.reportCharacterErrors(data) - - # Replace invalid characters - data = data.replace("\r\n", "\n") - data = data.replace("\r", "\n") - - self.chunk = data - self.chunkSize = len(data) - - return True - - def characterErrorsUCS4(self, data): - for _ in range(len(invalid_unicode_re.findall(data))): - self.errors.append("invalid-codepoint") - - def characterErrorsUCS2(self, data): - # Someone picked the wrong compile option - # You lose - skip = False - for match in invalid_unicode_re.finditer(data): - if skip: - continue - codepoint = ord(match.group()) - pos = match.start() - # Pretty sure there should be endianness issues here - if _utils.isSurrogatePair(data[pos:pos + 2]): - # We have a surrogate pair! - char_val = _utils.surrogatePairToCodepoint(data[pos:pos + 2]) - if char_val in non_bmp_invalid_codepoints: - self.errors.append("invalid-codepoint") - skip = True - elif (codepoint >= 0xD800 and codepoint <= 0xDFFF and - pos == len(data) - 1): - self.errors.append("invalid-codepoint") - else: - skip = False - self.errors.append("invalid-codepoint") - - def charsUntil(self, characters, opposite=False): - """ Returns a string of characters from the stream up to but not - including any character in 'characters' or EOF. 'characters' must be - a container that supports the 'in' method and iteration over its - characters. - """ - - # Use a cache of regexps to find the required characters - try: - chars = charsUntilRegEx[(characters, opposite)] - except KeyError: - if __debug__: - for c in characters: - assert(ord(c) < 128) - regex = "".join(["\\x%02x" % ord(c) for c in characters]) - if not opposite: - regex = "^%s" % regex - chars = charsUntilRegEx[(characters, opposite)] = re.compile("[%s]+" % regex) - - rv = [] - - while True: - # Find the longest matching prefix - m = chars.match(self.chunk, self.chunkOffset) - if m is None: - # If nothing matched, and it wasn't because we ran out of chunk, - # then stop - if self.chunkOffset != self.chunkSize: - break - else: - end = m.end() - # If not the whole chunk matched, return everything - # up to the part that didn't match - if end != self.chunkSize: - rv.append(self.chunk[self.chunkOffset:end]) - self.chunkOffset = end - break - # If the whole remainder of the chunk matched, - # use it all and read the next chunk - rv.append(self.chunk[self.chunkOffset:]) - if not self.readChunk(): - # Reached EOF - break - - r = "".join(rv) - return r - - def unget(self, char): - # Only one character is allowed to be ungotten at once - it must - # be consumed again before any further call to unget - if char is not None: - if self.chunkOffset == 0: - # unget is called quite rarely, so it's a good idea to do - # more work here if it saves a bit of work in the frequently - # called char and charsUntil. - # So, just prepend the ungotten character onto the current - # chunk: - self.chunk = char + self.chunk - self.chunkSize += 1 - else: - self.chunkOffset -= 1 - assert self.chunk[self.chunkOffset] == char - - -class HTMLBinaryInputStream(HTMLUnicodeInputStream): - """Provides a unicode stream of characters to the HTMLTokenizer. - - This class takes care of character encoding and removing or replacing - incorrect byte-sequences and also provides column and line tracking. - - """ - - def __init__(self, source, override_encoding=None, transport_encoding=None, - same_origin_parent_encoding=None, likely_encoding=None, - default_encoding="windows-1252", useChardet=True): - """Initialises the HTMLInputStream. - - HTMLInputStream(source, [encoding]) -> Normalized stream from source - for use by html5lib. - - source can be either a file-object, local filename or a string. - - The optional encoding parameter must be a string that indicates - the encoding. If specified, that encoding will be used, - regardless of any BOM or later declaration (such as in a meta - element) - - """ - # Raw Stream - for unicode objects this will encode to utf-8 and set - # self.charEncoding as appropriate - self.rawStream = self.openStream(source) - - HTMLUnicodeInputStream.__init__(self, self.rawStream) - - # Encoding Information - # Number of bytes to use when looking for a meta element with - # encoding information - self.numBytesMeta = 1024 - # Number of bytes to use when using detecting encoding using chardet - self.numBytesChardet = 100 - # Things from args - self.override_encoding = override_encoding - self.transport_encoding = transport_encoding - self.same_origin_parent_encoding = same_origin_parent_encoding - self.likely_encoding = likely_encoding - self.default_encoding = default_encoding - - # Determine encoding - self.charEncoding = self.determineEncoding(useChardet) - assert self.charEncoding[0] is not None - - # Call superclass - self.reset() - - def reset(self): - self.dataStream = self.charEncoding[0].codec_info.streamreader(self.rawStream, 'replace') - HTMLUnicodeInputStream.reset(self) - - def openStream(self, source): - """Produces a file object from source. - - source can be either a file object, local filename or a string. - - """ - # Already a file object - if hasattr(source, 'read'): - stream = source - else: - stream = BytesIO(source) - - try: - stream.seek(stream.tell()) - except: # pylint:disable=bare-except - stream = BufferedStream(stream) - - return stream - - def determineEncoding(self, chardet=True): - # BOMs take precedence over everything - # This will also read past the BOM if present - charEncoding = self.detectBOM(), "certain" - if charEncoding[0] is not None: - return charEncoding - - # If we've been overriden, we've been overriden - charEncoding = lookupEncoding(self.override_encoding), "certain" - if charEncoding[0] is not None: - return charEncoding - - # Now check the transport layer - charEncoding = lookupEncoding(self.transport_encoding), "certain" - if charEncoding[0] is not None: - return charEncoding - - # Look for meta elements with encoding information - charEncoding = self.detectEncodingMeta(), "tentative" - if charEncoding[0] is not None: - return charEncoding - - # Parent document encoding - charEncoding = lookupEncoding(self.same_origin_parent_encoding), "tentative" - if charEncoding[0] is not None and not charEncoding[0].name.startswith("utf-16"): - return charEncoding - - # "likely" encoding - charEncoding = lookupEncoding(self.likely_encoding), "tentative" - if charEncoding[0] is not None: - return charEncoding - - # Guess with chardet, if available - if chardet: - try: - from chardet.universaldetector import UniversalDetector - except ImportError: - pass - else: - buffers = [] - detector = UniversalDetector() - while not detector.done: - buffer = self.rawStream.read(self.numBytesChardet) - assert isinstance(buffer, bytes) - if not buffer: - break - buffers.append(buffer) - detector.feed(buffer) - detector.close() - encoding = lookupEncoding(detector.result['encoding']) - self.rawStream.seek(0) - if encoding is not None: - return encoding, "tentative" - - # Try the default encoding - charEncoding = lookupEncoding(self.default_encoding), "tentative" - if charEncoding[0] is not None: - return charEncoding - - # Fallback to html5lib's default if even that hasn't worked - return lookupEncoding("windows-1252"), "tentative" - - def changeEncoding(self, newEncoding): - assert self.charEncoding[1] != "certain" - newEncoding = lookupEncoding(newEncoding) - if newEncoding is None: - return - if newEncoding.name in ("utf-16be", "utf-16le"): - newEncoding = lookupEncoding("utf-8") - assert newEncoding is not None - elif newEncoding == self.charEncoding[0]: - self.charEncoding = (self.charEncoding[0], "certain") - else: - self.rawStream.seek(0) - self.charEncoding = (newEncoding, "certain") - self.reset() - raise ReparseException("Encoding changed from %s to %s" % (self.charEncoding[0], newEncoding)) - - def detectBOM(self): - """Attempts to detect at BOM at the start of the stream. If - an encoding can be determined from the BOM return the name of the - encoding otherwise return None""" - bomDict = { - codecs.BOM_UTF8: 'utf-8', - codecs.BOM_UTF16_LE: 'utf-16le', codecs.BOM_UTF16_BE: 'utf-16be', - codecs.BOM_UTF32_LE: 'utf-32le', codecs.BOM_UTF32_BE: 'utf-32be' - } - - # Go to beginning of file and read in 4 bytes - string = self.rawStream.read(4) - assert isinstance(string, bytes) - - # Try detecting the BOM using bytes from the string - encoding = bomDict.get(string[:3]) # UTF-8 - seek = 3 - if not encoding: - # Need to detect UTF-32 before UTF-16 - encoding = bomDict.get(string) # UTF-32 - seek = 4 - if not encoding: - encoding = bomDict.get(string[:2]) # UTF-16 - seek = 2 - - # Set the read position past the BOM if one was found, otherwise - # set it to the start of the stream - if encoding: - self.rawStream.seek(seek) - return lookupEncoding(encoding) - else: - self.rawStream.seek(0) - return None - - def detectEncodingMeta(self): - """Report the encoding declared by the meta element - """ - buffer = self.rawStream.read(self.numBytesMeta) - assert isinstance(buffer, bytes) - parser = EncodingParser(buffer) - self.rawStream.seek(0) - encoding = parser.getEncoding() - - if encoding is not None and encoding.name in ("utf-16be", "utf-16le"): - encoding = lookupEncoding("utf-8") - - return encoding - - -class EncodingBytes(bytes): - """String-like object with an associated position and various extra methods - If the position is ever greater than the string length then an exception is - raised""" - def __new__(self, value): - assert isinstance(value, bytes) - return bytes.__new__(self, value.lower()) - - def __init__(self, value): - # pylint:disable=unused-argument - self._position = -1 - - def __iter__(self): - return self - - def __next__(self): - p = self._position = self._position + 1 - if p >= len(self): - raise StopIteration - elif p < 0: - raise TypeError - return self[p:p + 1] - - def next(self): - # Py2 compat - return self.__next__() - - def previous(self): - p = self._position - if p >= len(self): - raise StopIteration - elif p < 0: - raise TypeError - self._position = p = p - 1 - return self[p:p + 1] - - def setPosition(self, position): - if self._position >= len(self): - raise StopIteration - self._position = position - - def getPosition(self): - if self._position >= len(self): - raise StopIteration - if self._position >= 0: - return self._position - else: - return None - - position = property(getPosition, setPosition) - - def getCurrentByte(self): - return self[self.position:self.position + 1] - - currentByte = property(getCurrentByte) - - def skip(self, chars=spaceCharactersBytes): - """Skip past a list of characters""" - p = self.position # use property for the error-checking - while p < len(self): - c = self[p:p + 1] - if c not in chars: - self._position = p - return c - p += 1 - self._position = p - return None - - def skipUntil(self, chars): - p = self.position - while p < len(self): - c = self[p:p + 1] - if c in chars: - self._position = p - return c - p += 1 - self._position = p - return None - - def matchBytes(self, bytes): - """Look for a sequence of bytes at the start of a string. If the bytes - are found return True and advance the position to the byte after the - match. Otherwise return False and leave the position alone""" - p = self.position - data = self[p:p + len(bytes)] - rv = data.startswith(bytes) - if rv: - self.position += len(bytes) - return rv - - def jumpTo(self, bytes): - """Look for the next sequence of bytes matching a given sequence. If - a match is found advance the position to the last byte of the match""" - newPosition = self[self.position:].find(bytes) - if newPosition > -1: - # XXX: This is ugly, but I can't see a nicer way to fix this. - if self._position == -1: - self._position = 0 - self._position += (newPosition + len(bytes) - 1) - return True - else: - raise StopIteration - - -class EncodingParser(object): - """Mini parser for detecting character encoding from meta elements""" - - def __init__(self, data): - """string - the data to work on for encoding detection""" - self.data = EncodingBytes(data) - self.encoding = None - - def getEncoding(self): - methodDispatch = ( - (b"") - - def handleMeta(self): - if self.data.currentByte not in spaceCharactersBytes: - # if we have ") - - def getAttribute(self): - """Return a name,value pair for the next attribute in the stream, - if one is found, or None""" - data = self.data - # Step 1 (skip chars) - c = data.skip(spaceCharactersBytes | frozenset([b"/"])) - assert c is None or len(c) == 1 - # Step 2 - if c in (b">", None): - return None - # Step 3 - attrName = [] - attrValue = [] - # Step 4 attribute name - while True: - if c == b"=" and attrName: - break - elif c in spaceCharactersBytes: - # Step 6! - c = data.skip() - break - elif c in (b"/", b">"): - return b"".join(attrName), b"" - elif c in asciiUppercaseBytes: - attrName.append(c.lower()) - elif c is None: - return None - else: - attrName.append(c) - # Step 5 - c = next(data) - # Step 7 - if c != b"=": - data.previous() - return b"".join(attrName), b"" - # Step 8 - next(data) - # Step 9 - c = data.skip() - # Step 10 - if c in (b"'", b'"'): - # 10.1 - quoteChar = c - while True: - # 10.2 - c = next(data) - # 10.3 - if c == quoteChar: - next(data) - return b"".join(attrName), b"".join(attrValue) - # 10.4 - elif c in asciiUppercaseBytes: - attrValue.append(c.lower()) - # 10.5 - else: - attrValue.append(c) - elif c == b">": - return b"".join(attrName), b"" - elif c in asciiUppercaseBytes: - attrValue.append(c.lower()) - elif c is None: - return None - else: - attrValue.append(c) - # Step 11 - while True: - c = next(data) - if c in spacesAngleBrackets: - return b"".join(attrName), b"".join(attrValue) - elif c in asciiUppercaseBytes: - attrValue.append(c.lower()) - elif c is None: - return None - else: - attrValue.append(c) - - -class ContentAttrParser(object): - def __init__(self, data): - assert isinstance(data, bytes) - self.data = data - - def parse(self): - try: - # Check if the attr name is charset - # otherwise return - self.data.jumpTo(b"charset") - self.data.position += 1 - self.data.skip() - if not self.data.currentByte == b"=": - # If there is no = sign keep looking for attrs - return None - self.data.position += 1 - self.data.skip() - # Look for an encoding between matching quote marks - if self.data.currentByte in (b'"', b"'"): - quoteMark = self.data.currentByte - self.data.position += 1 - oldPosition = self.data.position - if self.data.jumpTo(quoteMark): - return self.data[oldPosition:self.data.position] - else: - return None - else: - # Unquoted value - oldPosition = self.data.position - try: - self.data.skipUntil(spaceCharactersBytes) - return self.data[oldPosition:self.data.position] - except StopIteration: - # Return the whole remaining value - return self.data[oldPosition:] - except StopIteration: - return None - - -def lookupEncoding(encoding): - """Return the python codec name corresponding to an encoding or None if the - string doesn't correspond to a valid encoding.""" - if isinstance(encoding, binary_type): - try: - encoding = encoding.decode("ascii") - except UnicodeDecodeError: - return None - - if encoding is not None: - try: - return webencodings.lookup(encoding) - except AttributeError: - return None - else: - return None diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_tokenizer.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_tokenizer.py deleted file mode 100644 index 178f6e7..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_tokenizer.py +++ /dev/null @@ -1,1721 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from pip._vendor.six import unichr as chr - -from collections import deque - -from .constants import spaceCharacters -from .constants import entities -from .constants import asciiLetters, asciiUpper2Lower -from .constants import digits, hexDigits, EOF -from .constants import tokenTypes, tagTokenTypes -from .constants import replacementCharacters - -from ._inputstream import HTMLInputStream - -from ._trie import Trie - -entitiesTrie = Trie(entities) - - -class HTMLTokenizer(object): - """ This class takes care of tokenizing HTML. - - * self.currentToken - Holds the token that is currently being processed. - - * self.state - Holds a reference to the method to be invoked... XXX - - * self.stream - Points to HTMLInputStream object. - """ - - def __init__(self, stream, parser=None, **kwargs): - - self.stream = HTMLInputStream(stream, **kwargs) - self.parser = parser - - # Setup the initial tokenizer state - self.escapeFlag = False - self.lastFourChars = [] - self.state = self.dataState - self.escape = False - - # The current token being created - self.currentToken = None - super(HTMLTokenizer, self).__init__() - - def __iter__(self): - """ This is where the magic happens. - - We do our usually processing through the states and when we have a token - to return we yield the token which pauses processing until the next token - is requested. - """ - self.tokenQueue = deque([]) - # Start processing. When EOF is reached self.state will return False - # instead of True and the loop will terminate. - while self.state(): - while self.stream.errors: - yield {"type": tokenTypes["ParseError"], "data": self.stream.errors.pop(0)} - while self.tokenQueue: - yield self.tokenQueue.popleft() - - def consumeNumberEntity(self, isHex): - """This function returns either U+FFFD or the character based on the - decimal or hexadecimal representation. It also discards ";" if present. - If not present self.tokenQueue.append({"type": tokenTypes["ParseError"]}) is invoked. - """ - - allowed = digits - radix = 10 - if isHex: - allowed = hexDigits - radix = 16 - - charStack = [] - - # Consume all the characters that are in range while making sure we - # don't hit an EOF. - c = self.stream.char() - while c in allowed and c is not EOF: - charStack.append(c) - c = self.stream.char() - - # Convert the set of characters consumed to an int. - charAsInt = int("".join(charStack), radix) - - # Certain characters get replaced with others - if charAsInt in replacementCharacters: - char = replacementCharacters[charAsInt] - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "illegal-codepoint-for-numeric-entity", - "datavars": {"charAsInt": charAsInt}}) - elif ((0xD800 <= charAsInt <= 0xDFFF) or - (charAsInt > 0x10FFFF)): - char = "\uFFFD" - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "illegal-codepoint-for-numeric-entity", - "datavars": {"charAsInt": charAsInt}}) - else: - # Should speed up this check somehow (e.g. move the set to a constant) - if ((0x0001 <= charAsInt <= 0x0008) or - (0x000E <= charAsInt <= 0x001F) or - (0x007F <= charAsInt <= 0x009F) or - (0xFDD0 <= charAsInt <= 0xFDEF) or - charAsInt in frozenset([0x000B, 0xFFFE, 0xFFFF, 0x1FFFE, - 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE, - 0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, - 0x5FFFF, 0x6FFFE, 0x6FFFF, 0x7FFFE, - 0x7FFFF, 0x8FFFE, 0x8FFFF, 0x9FFFE, - 0x9FFFF, 0xAFFFE, 0xAFFFF, 0xBFFFE, - 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE, - 0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, - 0xFFFFF, 0x10FFFE, 0x10FFFF])): - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": - "illegal-codepoint-for-numeric-entity", - "datavars": {"charAsInt": charAsInt}}) - try: - # Try/except needed as UCS-2 Python builds' unichar only works - # within the BMP. - char = chr(charAsInt) - except ValueError: - v = charAsInt - 0x10000 - char = chr(0xD800 | (v >> 10)) + chr(0xDC00 | (v & 0x3FF)) - - # Discard the ; if present. Otherwise, put it back on the queue and - # invoke parseError on parser. - if c != ";": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "numeric-entity-without-semicolon"}) - self.stream.unget(c) - - return char - - def consumeEntity(self, allowedChar=None, fromAttribute=False): - # Initialise to the default output for when no entity is matched - output = "&" - - charStack = [self.stream.char()] - if (charStack[0] in spaceCharacters or charStack[0] in (EOF, "<", "&") or - (allowedChar is not None and allowedChar == charStack[0])): - self.stream.unget(charStack[0]) - - elif charStack[0] == "#": - # Read the next character to see if it's hex or decimal - hex = False - charStack.append(self.stream.char()) - if charStack[-1] in ("x", "X"): - hex = True - charStack.append(self.stream.char()) - - # charStack[-1] should be the first digit - if (hex and charStack[-1] in hexDigits) \ - or (not hex and charStack[-1] in digits): - # At least one digit found, so consume the whole number - self.stream.unget(charStack[-1]) - output = self.consumeNumberEntity(hex) - else: - # No digits found - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "expected-numeric-entity"}) - self.stream.unget(charStack.pop()) - output = "&" + "".join(charStack) - - else: - # At this point in the process might have named entity. Entities - # are stored in the global variable "entities". - # - # Consume characters and compare to these to a substring of the - # entity names in the list until the substring no longer matches. - while (charStack[-1] is not EOF): - if not entitiesTrie.has_keys_with_prefix("".join(charStack)): - break - charStack.append(self.stream.char()) - - # At this point we have a string that starts with some characters - # that may match an entity - # Try to find the longest entity the string will match to take care - # of ¬i for instance. - try: - entityName = entitiesTrie.longest_prefix("".join(charStack[:-1])) - entityLength = len(entityName) - except KeyError: - entityName = None - - if entityName is not None: - if entityName[-1] != ";": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "named-entity-without-semicolon"}) - if (entityName[-1] != ";" and fromAttribute and - (charStack[entityLength] in asciiLetters or - charStack[entityLength] in digits or - charStack[entityLength] == "=")): - self.stream.unget(charStack.pop()) - output = "&" + "".join(charStack) - else: - output = entities[entityName] - self.stream.unget(charStack.pop()) - output += "".join(charStack[entityLength:]) - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-named-entity"}) - self.stream.unget(charStack.pop()) - output = "&" + "".join(charStack) - - if fromAttribute: - self.currentToken["data"][-1][1] += output - else: - if output in spaceCharacters: - tokenType = "SpaceCharacters" - else: - tokenType = "Characters" - self.tokenQueue.append({"type": tokenTypes[tokenType], "data": output}) - - def processEntityInAttribute(self, allowedChar): - """This method replaces the need for "entityInAttributeValueState". - """ - self.consumeEntity(allowedChar=allowedChar, fromAttribute=True) - - def emitCurrentToken(self): - """This method is a generic handler for emitting the tags. It also sets - the state to "data" because that's what's needed after a token has been - emitted. - """ - token = self.currentToken - # Add token to the queue to be yielded - if (token["type"] in tagTokenTypes): - token["name"] = token["name"].translate(asciiUpper2Lower) - if token["type"] == tokenTypes["EndTag"]: - if token["data"]: - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "attributes-in-end-tag"}) - if token["selfClosing"]: - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "self-closing-flag-on-end-tag"}) - self.tokenQueue.append(token) - self.state = self.dataState - - # Below are the various tokenizer states worked out. - def dataState(self): - data = self.stream.char() - if data == "&": - self.state = self.entityDataState - elif data == "<": - self.state = self.tagOpenState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\u0000"}) - elif data is EOF: - # Tokenization ends. - return False - elif data in spaceCharacters: - # Directly after emitting a token you switch back to the "data - # state". At that point spaceCharacters are important so they are - # emitted separately. - self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": - data + self.stream.charsUntil(spaceCharacters, True)}) - # No need to update lastFourChars here, since the first space will - # have already been appended to lastFourChars and will have broken - # any sequences - else: - chars = self.stream.charsUntil(("&", "<", "\u0000")) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": - data + chars}) - return True - - def entityDataState(self): - self.consumeEntity() - self.state = self.dataState - return True - - def rcdataState(self): - data = self.stream.char() - if data == "&": - self.state = self.characterReferenceInRcdata - elif data == "<": - self.state = self.rcdataLessThanSignState - elif data == EOF: - # Tokenization ends. - return False - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - elif data in spaceCharacters: - # Directly after emitting a token you switch back to the "data - # state". At that point spaceCharacters are important so they are - # emitted separately. - self.tokenQueue.append({"type": tokenTypes["SpaceCharacters"], "data": - data + self.stream.charsUntil(spaceCharacters, True)}) - # No need to update lastFourChars here, since the first space will - # have already been appended to lastFourChars and will have broken - # any sequences - else: - chars = self.stream.charsUntil(("&", "<", "\u0000")) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": - data + chars}) - return True - - def characterReferenceInRcdata(self): - self.consumeEntity() - self.state = self.rcdataState - return True - - def rawtextState(self): - data = self.stream.char() - if data == "<": - self.state = self.rawtextLessThanSignState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - elif data == EOF: - # Tokenization ends. - return False - else: - chars = self.stream.charsUntil(("<", "\u0000")) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": - data + chars}) - return True - - def scriptDataState(self): - data = self.stream.char() - if data == "<": - self.state = self.scriptDataLessThanSignState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - elif data == EOF: - # Tokenization ends. - return False - else: - chars = self.stream.charsUntil(("<", "\u0000")) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": - data + chars}) - return True - - def plaintextState(self): - data = self.stream.char() - if data == EOF: - # Tokenization ends. - return False - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": - data + self.stream.charsUntil("\u0000")}) - return True - - def tagOpenState(self): - data = self.stream.char() - if data == "!": - self.state = self.markupDeclarationOpenState - elif data == "/": - self.state = self.closeTagOpenState - elif data in asciiLetters: - self.currentToken = {"type": tokenTypes["StartTag"], - "name": data, "data": [], - "selfClosing": False, - "selfClosingAcknowledged": False} - self.state = self.tagNameState - elif data == ">": - # XXX In theory it could be something besides a tag name. But - # do we really care? - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-tag-name-but-got-right-bracket"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<>"}) - self.state = self.dataState - elif data == "?": - # XXX In theory it could be something besides a tag name. But - # do we really care? - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-tag-name-but-got-question-mark"}) - self.stream.unget(data) - self.state = self.bogusCommentState - else: - # XXX - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-tag-name"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) - self.stream.unget(data) - self.state = self.dataState - return True - - def closeTagOpenState(self): - data = self.stream.char() - if data in asciiLetters: - self.currentToken = {"type": tokenTypes["EndTag"], "name": data, - "data": [], "selfClosing": False} - self.state = self.tagNameState - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-closing-tag-but-got-right-bracket"}) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-closing-tag-but-got-eof"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "": - self.emitCurrentToken() - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-tag-name"}) - self.state = self.dataState - elif data == "/": - self.state = self.selfClosingStartTagState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["name"] += "\uFFFD" - else: - self.currentToken["name"] += data - # (Don't use charsUntil here, because tag names are - # very short and it's faster to not do anything fancy) - return True - - def rcdataLessThanSignState(self): - data = self.stream.char() - if data == "/": - self.temporaryBuffer = "" - self.state = self.rcdataEndTagOpenState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) - self.stream.unget(data) - self.state = self.rcdataState - return True - - def rcdataEndTagOpenState(self): - data = self.stream.char() - if data in asciiLetters: - self.temporaryBuffer += data - self.state = self.rcdataEndTagNameState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: - self.currentToken = {"type": tokenTypes["EndTag"], - "name": self.temporaryBuffer, - "data": [], "selfClosing": False} - self.emitCurrentToken() - self.state = self.dataState - elif data in asciiLetters: - self.temporaryBuffer += data - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "" and appropriate: - self.currentToken = {"type": tokenTypes["EndTag"], - "name": self.temporaryBuffer, - "data": [], "selfClosing": False} - self.emitCurrentToken() - self.state = self.dataState - elif data in asciiLetters: - self.temporaryBuffer += data - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "" and appropriate: - self.currentToken = {"type": tokenTypes["EndTag"], - "name": self.temporaryBuffer, - "data": [], "selfClosing": False} - self.emitCurrentToken() - self.state = self.dataState - elif data in asciiLetters: - self.temporaryBuffer += data - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) - self.state = self.scriptDataState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - self.state = self.scriptDataEscapedState - elif data == EOF: - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - self.state = self.scriptDataEscapedState - return True - - def scriptDataEscapedLessThanSignState(self): - data = self.stream.char() - if data == "/": - self.temporaryBuffer = "" - self.state = self.scriptDataEscapedEndTagOpenState - elif data in asciiLetters: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<" + data}) - self.temporaryBuffer = data - self.state = self.scriptDataDoubleEscapeStartState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) - self.stream.unget(data) - self.state = self.scriptDataEscapedState - return True - - def scriptDataEscapedEndTagOpenState(self): - data = self.stream.char() - if data in asciiLetters: - self.temporaryBuffer = data - self.state = self.scriptDataEscapedEndTagNameState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "" and appropriate: - self.currentToken = {"type": tokenTypes["EndTag"], - "name": self.temporaryBuffer, - "data": [], "selfClosing": False} - self.emitCurrentToken() - self.state = self.dataState - elif data in asciiLetters: - self.temporaryBuffer += data - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": ""))): - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - if self.temporaryBuffer.lower() == "script": - self.state = self.scriptDataDoubleEscapedState - else: - self.state = self.scriptDataEscapedState - elif data in asciiLetters: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - self.temporaryBuffer += data - else: - self.stream.unget(data) - self.state = self.scriptDataEscapedState - return True - - def scriptDataDoubleEscapedState(self): - data = self.stream.char() - if data == "-": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) - self.state = self.scriptDataDoubleEscapedDashState - elif data == "<": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) - self.state = self.scriptDataDoubleEscapedLessThanSignState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - elif data == EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-script-in-script"}) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - return True - - def scriptDataDoubleEscapedDashState(self): - data = self.stream.char() - if data == "-": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) - self.state = self.scriptDataDoubleEscapedDashDashState - elif data == "<": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) - self.state = self.scriptDataDoubleEscapedLessThanSignState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - self.state = self.scriptDataDoubleEscapedState - elif data == EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-script-in-script"}) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - self.state = self.scriptDataDoubleEscapedState - return True - - def scriptDataDoubleEscapedDashDashState(self): - data = self.stream.char() - if data == "-": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "-"}) - elif data == "<": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "<"}) - self.state = self.scriptDataDoubleEscapedLessThanSignState - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": ">"}) - self.state = self.scriptDataState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": "\uFFFD"}) - self.state = self.scriptDataDoubleEscapedState - elif data == EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-script-in-script"}) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - self.state = self.scriptDataDoubleEscapedState - return True - - def scriptDataDoubleEscapedLessThanSignState(self): - data = self.stream.char() - if data == "/": - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": "/"}) - self.temporaryBuffer = "" - self.state = self.scriptDataDoubleEscapeEndState - else: - self.stream.unget(data) - self.state = self.scriptDataDoubleEscapedState - return True - - def scriptDataDoubleEscapeEndState(self): - data = self.stream.char() - if data in (spaceCharacters | frozenset(("/", ">"))): - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - if self.temporaryBuffer.lower() == "script": - self.state = self.scriptDataEscapedState - else: - self.state = self.scriptDataDoubleEscapedState - elif data in asciiLetters: - self.tokenQueue.append({"type": tokenTypes["Characters"], "data": data}) - self.temporaryBuffer += data - else: - self.stream.unget(data) - self.state = self.scriptDataDoubleEscapedState - return True - - def beforeAttributeNameState(self): - data = self.stream.char() - if data in spaceCharacters: - self.stream.charsUntil(spaceCharacters, True) - elif data in asciiLetters: - self.currentToken["data"].append([data, ""]) - self.state = self.attributeNameState - elif data == ">": - self.emitCurrentToken() - elif data == "/": - self.state = self.selfClosingStartTagState - elif data in ("'", '"', "=", "<"): - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "invalid-character-in-attribute-name"}) - self.currentToken["data"].append([data, ""]) - self.state = self.attributeNameState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"].append(["\uFFFD", ""]) - self.state = self.attributeNameState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-attribute-name-but-got-eof"}) - self.state = self.dataState - else: - self.currentToken["data"].append([data, ""]) - self.state = self.attributeNameState - return True - - def attributeNameState(self): - data = self.stream.char() - leavingThisState = True - emitToken = False - if data == "=": - self.state = self.beforeAttributeValueState - elif data in asciiLetters: - self.currentToken["data"][-1][0] += data +\ - self.stream.charsUntil(asciiLetters, True) - leavingThisState = False - elif data == ">": - # XXX If we emit here the attributes are converted to a dict - # without being checked and when the code below runs we error - # because data is a dict not a list - emitToken = True - elif data in spaceCharacters: - self.state = self.afterAttributeNameState - elif data == "/": - self.state = self.selfClosingStartTagState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"][-1][0] += "\uFFFD" - leavingThisState = False - elif data in ("'", '"', "<"): - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": - "invalid-character-in-attribute-name"}) - self.currentToken["data"][-1][0] += data - leavingThisState = False - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "eof-in-attribute-name"}) - self.state = self.dataState - else: - self.currentToken["data"][-1][0] += data - leavingThisState = False - - if leavingThisState: - # Attributes are not dropped at this stage. That happens when the - # start tag token is emitted so values can still be safely appended - # to attributes, but we do want to report the parse error in time. - self.currentToken["data"][-1][0] = ( - self.currentToken["data"][-1][0].translate(asciiUpper2Lower)) - for name, _ in self.currentToken["data"][:-1]: - if self.currentToken["data"][-1][0] == name: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "duplicate-attribute"}) - break - # XXX Fix for above XXX - if emitToken: - self.emitCurrentToken() - return True - - def afterAttributeNameState(self): - data = self.stream.char() - if data in spaceCharacters: - self.stream.charsUntil(spaceCharacters, True) - elif data == "=": - self.state = self.beforeAttributeValueState - elif data == ">": - self.emitCurrentToken() - elif data in asciiLetters: - self.currentToken["data"].append([data, ""]) - self.state = self.attributeNameState - elif data == "/": - self.state = self.selfClosingStartTagState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"].append(["\uFFFD", ""]) - self.state = self.attributeNameState - elif data in ("'", '"', "<"): - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "invalid-character-after-attribute-name"}) - self.currentToken["data"].append([data, ""]) - self.state = self.attributeNameState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-end-of-tag-but-got-eof"}) - self.state = self.dataState - else: - self.currentToken["data"].append([data, ""]) - self.state = self.attributeNameState - return True - - def beforeAttributeValueState(self): - data = self.stream.char() - if data in spaceCharacters: - self.stream.charsUntil(spaceCharacters, True) - elif data == "\"": - self.state = self.attributeValueDoubleQuotedState - elif data == "&": - self.state = self.attributeValueUnQuotedState - self.stream.unget(data) - elif data == "'": - self.state = self.attributeValueSingleQuotedState - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-attribute-value-but-got-right-bracket"}) - self.emitCurrentToken() - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"][-1][1] += "\uFFFD" - self.state = self.attributeValueUnQuotedState - elif data in ("=", "<", "`"): - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "equals-in-unquoted-attribute-value"}) - self.currentToken["data"][-1][1] += data - self.state = self.attributeValueUnQuotedState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-attribute-value-but-got-eof"}) - self.state = self.dataState - else: - self.currentToken["data"][-1][1] += data - self.state = self.attributeValueUnQuotedState - return True - - def attributeValueDoubleQuotedState(self): - data = self.stream.char() - if data == "\"": - self.state = self.afterAttributeValueState - elif data == "&": - self.processEntityInAttribute('"') - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"][-1][1] += "\uFFFD" - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-attribute-value-double-quote"}) - self.state = self.dataState - else: - self.currentToken["data"][-1][1] += data +\ - self.stream.charsUntil(("\"", "&", "\u0000")) - return True - - def attributeValueSingleQuotedState(self): - data = self.stream.char() - if data == "'": - self.state = self.afterAttributeValueState - elif data == "&": - self.processEntityInAttribute("'") - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"][-1][1] += "\uFFFD" - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-attribute-value-single-quote"}) - self.state = self.dataState - else: - self.currentToken["data"][-1][1] += data +\ - self.stream.charsUntil(("'", "&", "\u0000")) - return True - - def attributeValueUnQuotedState(self): - data = self.stream.char() - if data in spaceCharacters: - self.state = self.beforeAttributeNameState - elif data == "&": - self.processEntityInAttribute(">") - elif data == ">": - self.emitCurrentToken() - elif data in ('"', "'", "=", "<", "`"): - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-character-in-unquoted-attribute-value"}) - self.currentToken["data"][-1][1] += data - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"][-1][1] += "\uFFFD" - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-attribute-value-no-quotes"}) - self.state = self.dataState - else: - self.currentToken["data"][-1][1] += data + self.stream.charsUntil( - frozenset(("&", ">", '"', "'", "=", "<", "`", "\u0000")) | spaceCharacters) - return True - - def afterAttributeValueState(self): - data = self.stream.char() - if data in spaceCharacters: - self.state = self.beforeAttributeNameState - elif data == ">": - self.emitCurrentToken() - elif data == "/": - self.state = self.selfClosingStartTagState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-EOF-after-attribute-value"}) - self.stream.unget(data) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-character-after-attribute-value"}) - self.stream.unget(data) - self.state = self.beforeAttributeNameState - return True - - def selfClosingStartTagState(self): - data = self.stream.char() - if data == ">": - self.currentToken["selfClosing"] = True - self.emitCurrentToken() - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": - "unexpected-EOF-after-solidus-in-tag"}) - self.stream.unget(data) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-character-after-solidus-in-tag"}) - self.stream.unget(data) - self.state = self.beforeAttributeNameState - return True - - def bogusCommentState(self): - # Make a new comment token and give it as value all the characters - # until the first > or EOF (charsUntil checks for EOF automatically) - # and emit it. - data = self.stream.charsUntil(">") - data = data.replace("\u0000", "\uFFFD") - self.tokenQueue.append( - {"type": tokenTypes["Comment"], "data": data}) - - # Eat the character directly after the bogus comment which is either a - # ">" or an EOF. - self.stream.char() - self.state = self.dataState - return True - - def markupDeclarationOpenState(self): - charStack = [self.stream.char()] - if charStack[-1] == "-": - charStack.append(self.stream.char()) - if charStack[-1] == "-": - self.currentToken = {"type": tokenTypes["Comment"], "data": ""} - self.state = self.commentStartState - return True - elif charStack[-1] in ('d', 'D'): - matched = True - for expected in (('o', 'O'), ('c', 'C'), ('t', 'T'), - ('y', 'Y'), ('p', 'P'), ('e', 'E')): - charStack.append(self.stream.char()) - if charStack[-1] not in expected: - matched = False - break - if matched: - self.currentToken = {"type": tokenTypes["Doctype"], - "name": "", - "publicId": None, "systemId": None, - "correct": True} - self.state = self.doctypeState - return True - elif (charStack[-1] == "[" and - self.parser is not None and - self.parser.tree.openElements and - self.parser.tree.openElements[-1].namespace != self.parser.tree.defaultNamespace): - matched = True - for expected in ["C", "D", "A", "T", "A", "["]: - charStack.append(self.stream.char()) - if charStack[-1] != expected: - matched = False - break - if matched: - self.state = self.cdataSectionState - return True - - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-dashes-or-doctype"}) - - while charStack: - self.stream.unget(charStack.pop()) - self.state = self.bogusCommentState - return True - - def commentStartState(self): - data = self.stream.char() - if data == "-": - self.state = self.commentStartDashState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"] += "\uFFFD" - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "incorrect-comment"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-comment"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["data"] += data - self.state = self.commentState - return True - - def commentStartDashState(self): - data = self.stream.char() - if data == "-": - self.state = self.commentEndState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"] += "-\uFFFD" - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "incorrect-comment"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-comment"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["data"] += "-" + data - self.state = self.commentState - return True - - def commentState(self): - data = self.stream.char() - if data == "-": - self.state = self.commentEndDashState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"] += "\uFFFD" - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "eof-in-comment"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["data"] += data + \ - self.stream.charsUntil(("-", "\u0000")) - return True - - def commentEndDashState(self): - data = self.stream.char() - if data == "-": - self.state = self.commentEndState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"] += "-\uFFFD" - self.state = self.commentState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-comment-end-dash"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["data"] += "-" + data - self.state = self.commentState - return True - - def commentEndState(self): - data = self.stream.char() - if data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"] += "--\uFFFD" - self.state = self.commentState - elif data == "!": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-bang-after-double-dash-in-comment"}) - self.state = self.commentEndBangState - elif data == "-": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-dash-after-double-dash-in-comment"}) - self.currentToken["data"] += data - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-comment-double-dash"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - # XXX - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-comment"}) - self.currentToken["data"] += "--" + data - self.state = self.commentState - return True - - def commentEndBangState(self): - data = self.stream.char() - if data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data == "-": - self.currentToken["data"] += "--!" - self.state = self.commentEndDashState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["data"] += "--!\uFFFD" - self.state = self.commentState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-comment-end-bang-state"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["data"] += "--!" + data - self.state = self.commentState - return True - - def doctypeState(self): - data = self.stream.char() - if data in spaceCharacters: - self.state = self.beforeDoctypeNameState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-doctype-name-but-got-eof"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "need-space-after-doctype"}) - self.stream.unget(data) - self.state = self.beforeDoctypeNameState - return True - - def beforeDoctypeNameState(self): - data = self.stream.char() - if data in spaceCharacters: - pass - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-doctype-name-but-got-right-bracket"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["name"] = "\uFFFD" - self.state = self.doctypeNameState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-doctype-name-but-got-eof"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["name"] = data - self.state = self.doctypeNameState - return True - - def doctypeNameState(self): - data = self.stream.char() - if data in spaceCharacters: - self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) - self.state = self.afterDoctypeNameState - elif data == ">": - self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["name"] += "\uFFFD" - self.state = self.doctypeNameState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype-name"}) - self.currentToken["correct"] = False - self.currentToken["name"] = self.currentToken["name"].translate(asciiUpper2Lower) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["name"] += data - return True - - def afterDoctypeNameState(self): - data = self.stream.char() - if data in spaceCharacters: - pass - elif data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.currentToken["correct"] = False - self.stream.unget(data) - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - if data in ("p", "P"): - matched = True - for expected in (("u", "U"), ("b", "B"), ("l", "L"), - ("i", "I"), ("c", "C")): - data = self.stream.char() - if data not in expected: - matched = False - break - if matched: - self.state = self.afterDoctypePublicKeywordState - return True - elif data in ("s", "S"): - matched = True - for expected in (("y", "Y"), ("s", "S"), ("t", "T"), - ("e", "E"), ("m", "M")): - data = self.stream.char() - if data not in expected: - matched = False - break - if matched: - self.state = self.afterDoctypeSystemKeywordState - return True - - # All the characters read before the current 'data' will be - # [a-zA-Z], so they're garbage in the bogus doctype and can be - # discarded; only the latest character might be '>' or EOF - # and needs to be ungetted - self.stream.unget(data) - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "expected-space-or-right-bracket-in-doctype", "datavars": - {"data": data}}) - self.currentToken["correct"] = False - self.state = self.bogusDoctypeState - - return True - - def afterDoctypePublicKeywordState(self): - data = self.stream.char() - if data in spaceCharacters: - self.state = self.beforeDoctypePublicIdentifierState - elif data in ("'", '"'): - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.stream.unget(data) - self.state = self.beforeDoctypePublicIdentifierState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.stream.unget(data) - self.state = self.beforeDoctypePublicIdentifierState - return True - - def beforeDoctypePublicIdentifierState(self): - data = self.stream.char() - if data in spaceCharacters: - pass - elif data == "\"": - self.currentToken["publicId"] = "" - self.state = self.doctypePublicIdentifierDoubleQuotedState - elif data == "'": - self.currentToken["publicId"] = "" - self.state = self.doctypePublicIdentifierSingleQuotedState - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-end-of-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["correct"] = False - self.state = self.bogusDoctypeState - return True - - def doctypePublicIdentifierDoubleQuotedState(self): - data = self.stream.char() - if data == "\"": - self.state = self.afterDoctypePublicIdentifierState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["publicId"] += "\uFFFD" - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-end-of-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["publicId"] += data - return True - - def doctypePublicIdentifierSingleQuotedState(self): - data = self.stream.char() - if data == "'": - self.state = self.afterDoctypePublicIdentifierState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["publicId"] += "\uFFFD" - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-end-of-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["publicId"] += data - return True - - def afterDoctypePublicIdentifierState(self): - data = self.stream.char() - if data in spaceCharacters: - self.state = self.betweenDoctypePublicAndSystemIdentifiersState - elif data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data == '"': - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["systemId"] = "" - self.state = self.doctypeSystemIdentifierDoubleQuotedState - elif data == "'": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["systemId"] = "" - self.state = self.doctypeSystemIdentifierSingleQuotedState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["correct"] = False - self.state = self.bogusDoctypeState - return True - - def betweenDoctypePublicAndSystemIdentifiersState(self): - data = self.stream.char() - if data in spaceCharacters: - pass - elif data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data == '"': - self.currentToken["systemId"] = "" - self.state = self.doctypeSystemIdentifierDoubleQuotedState - elif data == "'": - self.currentToken["systemId"] = "" - self.state = self.doctypeSystemIdentifierSingleQuotedState - elif data == EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["correct"] = False - self.state = self.bogusDoctypeState - return True - - def afterDoctypeSystemKeywordState(self): - data = self.stream.char() - if data in spaceCharacters: - self.state = self.beforeDoctypeSystemIdentifierState - elif data in ("'", '"'): - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.stream.unget(data) - self.state = self.beforeDoctypeSystemIdentifierState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.stream.unget(data) - self.state = self.beforeDoctypeSystemIdentifierState - return True - - def beforeDoctypeSystemIdentifierState(self): - data = self.stream.char() - if data in spaceCharacters: - pass - elif data == "\"": - self.currentToken["systemId"] = "" - self.state = self.doctypeSystemIdentifierDoubleQuotedState - elif data == "'": - self.currentToken["systemId"] = "" - self.state = self.doctypeSystemIdentifierSingleQuotedState - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.currentToken["correct"] = False - self.state = self.bogusDoctypeState - return True - - def doctypeSystemIdentifierDoubleQuotedState(self): - data = self.stream.char() - if data == "\"": - self.state = self.afterDoctypeSystemIdentifierState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["systemId"] += "\uFFFD" - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-end-of-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["systemId"] += data - return True - - def doctypeSystemIdentifierSingleQuotedState(self): - data = self.stream.char() - if data == "'": - self.state = self.afterDoctypeSystemIdentifierState - elif data == "\u0000": - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - self.currentToken["systemId"] += "\uFFFD" - elif data == ">": - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-end-of-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.currentToken["systemId"] += data - return True - - def afterDoctypeSystemIdentifierState(self): - data = self.stream.char() - if data in spaceCharacters: - pass - elif data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "eof-in-doctype"}) - self.currentToken["correct"] = False - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - self.tokenQueue.append({"type": tokenTypes["ParseError"], "data": - "unexpected-char-in-doctype"}) - self.state = self.bogusDoctypeState - return True - - def bogusDoctypeState(self): - data = self.stream.char() - if data == ">": - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - elif data is EOF: - # XXX EMIT - self.stream.unget(data) - self.tokenQueue.append(self.currentToken) - self.state = self.dataState - else: - pass - return True - - def cdataSectionState(self): - data = [] - while True: - data.append(self.stream.charsUntil("]")) - data.append(self.stream.charsUntil(">")) - char = self.stream.char() - if char == EOF: - break - else: - assert char == ">" - if data[-1][-2:] == "]]": - data[-1] = data[-1][:-2] - break - else: - data.append(char) - - data = "".join(data) # pylint:disable=redefined-variable-type - # Deal with null here rather than in the parser - nullCount = data.count("\u0000") - if nullCount > 0: - for _ in range(nullCount): - self.tokenQueue.append({"type": tokenTypes["ParseError"], - "data": "invalid-codepoint"}) - data = data.replace("\u0000", "\uFFFD") - if data: - self.tokenQueue.append({"type": tokenTypes["Characters"], - "data": data}) - self.state = self.dataState - return True diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__init__.py deleted file mode 100644 index a5ba4bf..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__init__.py +++ /dev/null @@ -1,14 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from .py import Trie as PyTrie - -Trie = PyTrie - -# pylint:disable=wrong-import-position -try: - from .datrie import Trie as DATrie -except ImportError: - pass -else: - Trie = DATrie -# pylint:enable=wrong-import-position diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e112d3d9325d160e40ca725b863b578e56be38a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 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 HQ+NLbXZpD^ diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/_trie/__pycache__/py.cpython-36.pyc deleted file mode 100644 index 1a5dd46aacb3f13269ab4d24c07d7d3ae9c96bcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2235 zcma)7UvFDA6t{i<<~D7!F}ha3C?G&VEZIiaY0@-p42FbIUZ_AsAnPV}+S}gTq_$Ji z>gEBmPr@7DfX~6BUwPUS?|b4L-zHnDX~I|c*gih?@%f!U{$h1C`7QeUr+-62{voe4 zAI6X1*WUpVM9`cJX_pRJmkqtHN0G;Je;9NFH}>*y71A5>4bSDkJg0abwf>&UWFHS-G!F)k;MY%qNYbT(beW)nJtJLDc*2Js zt}8<50}+WB`cTwF0(~SJqApgS(QYi(#5!&!J*s&Ezy2180jy9# zNe}6qd`0GTPW27Lgg2+Z(~_2id&aL;=Qs<54>S~kiAsKbf zVBhSBgWJe*KR=O$7^(Jw8RmEMtk>oSJklPYw#KI~Y7h2hA*W;Ya0P9s3_9CJpS3v8 zip+4{dXSI$;O&R4rSRG2<2>I!lBarmIMHUiC$}}6TI_2}lyiK|dTE|pA7yN958~r% zrAEpIT%;zop@z_s0;ZJ!@2C9(31?U@mxZlY^YJJvj0Tu|E%Sl(ajQeBBCBv^8!xVz zpaBRYp&K-2Azh;(JzKqC%7p+yV_ksYP7HxVaukAt!Bko%8;v zFex~ca};*i5qfszT;a>rWw;(|lQJ#38i`&Np7sS3lS1 z7XG&?>thPPNf+V@BAg=x3*(k(x|KJe30RhN3)AH?n(AFN68-dw6IVFjmj?6=Imh*d zzQ(z6%f-%8X9QxHM9zbM!JvdXaun-L=;;xI9_~;l>O!FXHWZ?*m`o07B>{O<0{K zbb~cq-uUb)ZO}T56LwZ}KEO0xVvo2lu@^8|WRF@C70!q`12lG__s(&Kf_fM%aGv=^ z9SW}F%-PI8M>cTC?g<9o!Zjaoh4SoD#Ov%m1#>ak)JI4zVS>OpV46XdJs%_E6C|G^ zX(G7@guQlSgn&8rpl4qoIvBnZFSM)Cm?=c>= 7 - -# Platforms not supporting lone surrogates (\uD800-\uDFFF) should be -# caught by the below test. In general this would be any platform -# using UTF-16 as its encoding of unicode strings, such as -# Jython. This is because UTF-16 itself is based on the use of such -# surrogates, and there is no mechanism to further escape such -# escapes. -try: - _x = eval('"\\uD800"') # pylint:disable=eval-used - if not isinstance(_x, text_type): - # We need this with u"" because of http://bugs.jython.org/issue2039 - _x = eval('u"\\uD800"') # pylint:disable=eval-used - assert isinstance(_x, text_type) -except: # pylint:disable=bare-except - supports_lone_surrogates = False -else: - supports_lone_surrogates = True - - -class MethodDispatcher(dict): - """Dict with 2 special properties: - - On initiation, keys that are lists, sets or tuples are converted to - multiple keys so accessing any one of the items in the original - list-like object returns the matching value - - md = MethodDispatcher({("foo", "bar"):"baz"}) - md["foo"] == "baz" - - A default value which can be set through the default attribute. - """ - - def __init__(self, items=()): - # Using _dictEntries instead of directly assigning to self is about - # twice as fast. Please do careful performance testing before changing - # anything here. - _dictEntries = [] - for name, value in items: - if isinstance(name, (list, tuple, frozenset, set)): - for item in name: - _dictEntries.append((item, value)) - else: - _dictEntries.append((name, value)) - dict.__init__(self, _dictEntries) - assert len(self) == len(_dictEntries) - self.default = None - - def __getitem__(self, key): - return dict.get(self, key, self.default) - - -# Some utility functions to deal with weirdness around UCS2 vs UCS4 -# python builds - -def isSurrogatePair(data): - return (len(data) == 2 and - ord(data[0]) >= 0xD800 and ord(data[0]) <= 0xDBFF and - ord(data[1]) >= 0xDC00 and ord(data[1]) <= 0xDFFF) - - -def surrogatePairToCodepoint(data): - char_val = (0x10000 + (ord(data[0]) - 0xD800) * 0x400 + - (ord(data[1]) - 0xDC00)) - return char_val - -# Module Factory Factory (no, this isn't Java, I know) -# Here to stop this being duplicated all over the place. - - -def moduleFactoryFactory(factory): - moduleCache = {} - - def moduleFactory(baseModule, *args, **kwargs): - if isinstance(ModuleType.__name__, type("")): - name = "_%s_factory" % baseModule.__name__ - else: - name = b"_%s_factory" % baseModule.__name__ - - kwargs_tuple = tuple(kwargs.items()) - - try: - return moduleCache[name][args][kwargs_tuple] - except KeyError: - mod = ModuleType(name) - objs = factory(baseModule, *args, **kwargs) - mod.__dict__.update(objs) - if "name" not in moduleCache: - moduleCache[name] = {} - if "args" not in moduleCache[name]: - moduleCache[name][args] = {} - if "kwargs" not in moduleCache[name][args]: - moduleCache[name][args][kwargs_tuple] = {} - moduleCache[name][args][kwargs_tuple] = mod - return mod - - return moduleFactory - - -def memoize(func): - cache = {} - - def wrapped(*args, **kwargs): - key = (tuple(args), tuple(kwargs.items())) - if key not in cache: - cache[key] = func(*args, **kwargs) - return cache[key] - - return wrapped diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/constants.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/constants.py deleted file mode 100644 index 9e7541d..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/constants.py +++ /dev/null @@ -1,2945 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -import string - -EOF = None - -E = { - "null-character": - "Null character in input stream, replaced with U+FFFD.", - "invalid-codepoint": - "Invalid codepoint in stream.", - "incorrectly-placed-solidus": - "Solidus (/) incorrectly placed in tag.", - "incorrect-cr-newline-entity": - "Incorrect CR newline entity, replaced with LF.", - "illegal-windows-1252-entity": - "Entity used with illegal number (windows-1252 reference).", - "cant-convert-numeric-entity": - "Numeric entity couldn't be converted to character " - "(codepoint U+%(charAsInt)08x).", - "illegal-codepoint-for-numeric-entity": - "Numeric entity represents an illegal codepoint: " - "U+%(charAsInt)08x.", - "numeric-entity-without-semicolon": - "Numeric entity didn't end with ';'.", - "expected-numeric-entity-but-got-eof": - "Numeric entity expected. Got end of file instead.", - "expected-numeric-entity": - "Numeric entity expected but none found.", - "named-entity-without-semicolon": - "Named entity didn't end with ';'.", - "expected-named-entity": - "Named entity expected. Got none.", - "attributes-in-end-tag": - "End tag contains unexpected attributes.", - 'self-closing-flag-on-end-tag': - "End tag contains unexpected self-closing flag.", - "expected-tag-name-but-got-right-bracket": - "Expected tag name. Got '>' instead.", - "expected-tag-name-but-got-question-mark": - "Expected tag name. Got '?' instead. (HTML doesn't " - "support processing instructions.)", - "expected-tag-name": - "Expected tag name. Got something else instead", - "expected-closing-tag-but-got-right-bracket": - "Expected closing tag. Got '>' instead. Ignoring ''.", - "expected-closing-tag-but-got-eof": - "Expected closing tag. Unexpected end of file.", - "expected-closing-tag-but-got-char": - "Expected closing tag. Unexpected character '%(data)s' found.", - "eof-in-tag-name": - "Unexpected end of file in the tag name.", - "expected-attribute-name-but-got-eof": - "Unexpected end of file. Expected attribute name instead.", - "eof-in-attribute-name": - "Unexpected end of file in attribute name.", - "invalid-character-in-attribute-name": - "Invalid character in attribute name", - "duplicate-attribute": - "Dropped duplicate attribute on tag.", - "expected-end-of-tag-name-but-got-eof": - "Unexpected end of file. Expected = or end of tag.", - "expected-attribute-value-but-got-eof": - "Unexpected end of file. Expected attribute value.", - "expected-attribute-value-but-got-right-bracket": - "Expected attribute value. Got '>' instead.", - 'equals-in-unquoted-attribute-value': - "Unexpected = in unquoted attribute", - 'unexpected-character-in-unquoted-attribute-value': - "Unexpected character in unquoted attribute", - "invalid-character-after-attribute-name": - "Unexpected character after attribute name.", - "unexpected-character-after-attribute-value": - "Unexpected character after attribute value.", - "eof-in-attribute-value-double-quote": - "Unexpected end of file in attribute value (\").", - "eof-in-attribute-value-single-quote": - "Unexpected end of file in attribute value (').", - "eof-in-attribute-value-no-quotes": - "Unexpected end of file in attribute value.", - "unexpected-EOF-after-solidus-in-tag": - "Unexpected end of file in tag. Expected >", - "unexpected-character-after-solidus-in-tag": - "Unexpected character after / in tag. Expected >", - "expected-dashes-or-doctype": - "Expected '--' or 'DOCTYPE'. Not found.", - "unexpected-bang-after-double-dash-in-comment": - "Unexpected ! after -- in comment", - "unexpected-space-after-double-dash-in-comment": - "Unexpected space after -- in comment", - "incorrect-comment": - "Incorrect comment.", - "eof-in-comment": - "Unexpected end of file in comment.", - "eof-in-comment-end-dash": - "Unexpected end of file in comment (-)", - "unexpected-dash-after-double-dash-in-comment": - "Unexpected '-' after '--' found in comment.", - "eof-in-comment-double-dash": - "Unexpected end of file in comment (--).", - "eof-in-comment-end-space-state": - "Unexpected end of file in comment.", - "eof-in-comment-end-bang-state": - "Unexpected end of file in comment.", - "unexpected-char-in-comment": - "Unexpected character in comment found.", - "need-space-after-doctype": - "No space after literal string 'DOCTYPE'.", - "expected-doctype-name-but-got-right-bracket": - "Unexpected > character. Expected DOCTYPE name.", - "expected-doctype-name-but-got-eof": - "Unexpected end of file. Expected DOCTYPE name.", - "eof-in-doctype-name": - "Unexpected end of file in DOCTYPE name.", - "eof-in-doctype": - "Unexpected end of file in DOCTYPE.", - "expected-space-or-right-bracket-in-doctype": - "Expected space or '>'. Got '%(data)s'", - "unexpected-end-of-doctype": - "Unexpected end of DOCTYPE.", - "unexpected-char-in-doctype": - "Unexpected character in DOCTYPE.", - "eof-in-innerhtml": - "XXX innerHTML EOF", - "unexpected-doctype": - "Unexpected DOCTYPE. Ignored.", - "non-html-root": - "html needs to be the first start tag.", - "expected-doctype-but-got-eof": - "Unexpected End of file. Expected DOCTYPE.", - "unknown-doctype": - "Erroneous DOCTYPE.", - "expected-doctype-but-got-chars": - "Unexpected non-space characters. Expected DOCTYPE.", - "expected-doctype-but-got-start-tag": - "Unexpected start tag (%(name)s). Expected DOCTYPE.", - "expected-doctype-but-got-end-tag": - "Unexpected end tag (%(name)s). Expected DOCTYPE.", - "end-tag-after-implied-root": - "Unexpected end tag (%(name)s) after the (implied) root element.", - "expected-named-closing-tag-but-got-eof": - "Unexpected end of file. Expected end tag (%(name)s).", - "two-heads-are-not-better-than-one": - "Unexpected start tag head in existing head. Ignored.", - "unexpected-end-tag": - "Unexpected end tag (%(name)s). Ignored.", - "unexpected-start-tag-out-of-my-head": - "Unexpected start tag (%(name)s) that can be in head. Moved.", - "unexpected-start-tag": - "Unexpected start tag (%(name)s).", - "missing-end-tag": - "Missing end tag (%(name)s).", - "missing-end-tags": - "Missing end tags (%(name)s).", - "unexpected-start-tag-implies-end-tag": - "Unexpected start tag (%(startName)s) " - "implies end tag (%(endName)s).", - "unexpected-start-tag-treated-as": - "Unexpected start tag (%(originalName)s). Treated as %(newName)s.", - "deprecated-tag": - "Unexpected start tag %(name)s. Don't use it!", - "unexpected-start-tag-ignored": - "Unexpected start tag %(name)s. Ignored.", - "expected-one-end-tag-but-got-another": - "Unexpected end tag (%(gotName)s). " - "Missing end tag (%(expectedName)s).", - "end-tag-too-early": - "End tag (%(name)s) seen too early. Expected other end tag.", - "end-tag-too-early-named": - "Unexpected end tag (%(gotName)s). Expected end tag (%(expectedName)s).", - "end-tag-too-early-ignored": - "End tag (%(name)s) seen too early. Ignored.", - "adoption-agency-1.1": - "End tag (%(name)s) violates step 1, " - "paragraph 1 of the adoption agency algorithm.", - "adoption-agency-1.2": - "End tag (%(name)s) violates step 1, " - "paragraph 2 of the adoption agency algorithm.", - "adoption-agency-1.3": - "End tag (%(name)s) violates step 1, " - "paragraph 3 of the adoption agency algorithm.", - "adoption-agency-4.4": - "End tag (%(name)s) violates step 4, " - "paragraph 4 of the adoption agency algorithm.", - "unexpected-end-tag-treated-as": - "Unexpected end tag (%(originalName)s). Treated as %(newName)s.", - "no-end-tag": - "This element (%(name)s) has no end tag.", - "unexpected-implied-end-tag-in-table": - "Unexpected implied end tag (%(name)s) in the table phase.", - "unexpected-implied-end-tag-in-table-body": - "Unexpected implied end tag (%(name)s) in the table body phase.", - "unexpected-char-implies-table-voodoo": - "Unexpected non-space characters in " - "table context caused voodoo mode.", - "unexpected-hidden-input-in-table": - "Unexpected input with type hidden in table context.", - "unexpected-form-in-table": - "Unexpected form in table context.", - "unexpected-start-tag-implies-table-voodoo": - "Unexpected start tag (%(name)s) in " - "table context caused voodoo mode.", - "unexpected-end-tag-implies-table-voodoo": - "Unexpected end tag (%(name)s) in " - "table context caused voodoo mode.", - "unexpected-cell-in-table-body": - "Unexpected table cell start tag (%(name)s) " - "in the table body phase.", - "unexpected-cell-end-tag": - "Got table cell end tag (%(name)s) " - "while required end tags are missing.", - "unexpected-end-tag-in-table-body": - "Unexpected end tag (%(name)s) in the table body phase. Ignored.", - "unexpected-implied-end-tag-in-table-row": - "Unexpected implied end tag (%(name)s) in the table row phase.", - "unexpected-end-tag-in-table-row": - "Unexpected end tag (%(name)s) in the table row phase. Ignored.", - "unexpected-select-in-select": - "Unexpected select start tag in the select phase " - "treated as select end tag.", - "unexpected-input-in-select": - "Unexpected input start tag in the select phase.", - "unexpected-start-tag-in-select": - "Unexpected start tag token (%(name)s in the select phase. " - "Ignored.", - "unexpected-end-tag-in-select": - "Unexpected end tag (%(name)s) in the select phase. Ignored.", - "unexpected-table-element-start-tag-in-select-in-table": - "Unexpected table element start tag (%(name)s) in the select in table phase.", - "unexpected-table-element-end-tag-in-select-in-table": - "Unexpected table element end tag (%(name)s) in the select in table phase.", - "unexpected-char-after-body": - "Unexpected non-space characters in the after body phase.", - "unexpected-start-tag-after-body": - "Unexpected start tag token (%(name)s)" - " in the after body phase.", - "unexpected-end-tag-after-body": - "Unexpected end tag token (%(name)s)" - " in the after body phase.", - "unexpected-char-in-frameset": - "Unexpected characters in the frameset phase. Characters ignored.", - "unexpected-start-tag-in-frameset": - "Unexpected start tag token (%(name)s)" - " in the frameset phase. Ignored.", - "unexpected-frameset-in-frameset-innerhtml": - "Unexpected end tag token (frameset) " - "in the frameset phase (innerHTML).", - "unexpected-end-tag-in-frameset": - "Unexpected end tag token (%(name)s)" - " in the frameset phase. Ignored.", - "unexpected-char-after-frameset": - "Unexpected non-space characters in the " - "after frameset phase. Ignored.", - "unexpected-start-tag-after-frameset": - "Unexpected start tag (%(name)s)" - " in the after frameset phase. Ignored.", - "unexpected-end-tag-after-frameset": - "Unexpected end tag (%(name)s)" - " in the after frameset phase. Ignored.", - "unexpected-end-tag-after-body-innerhtml": - "Unexpected end tag after body(innerHtml)", - "expected-eof-but-got-char": - "Unexpected non-space characters. Expected end of file.", - "expected-eof-but-got-start-tag": - "Unexpected start tag (%(name)s)" - ". Expected end of file.", - "expected-eof-but-got-end-tag": - "Unexpected end tag (%(name)s)" - ". Expected end of file.", - "eof-in-table": - "Unexpected end of file. Expected table content.", - "eof-in-select": - "Unexpected end of file. Expected select content.", - "eof-in-frameset": - "Unexpected end of file. Expected frameset content.", - "eof-in-script-in-script": - "Unexpected end of file. Expected script content.", - "eof-in-foreign-lands": - "Unexpected end of file. Expected foreign content", - "non-void-element-with-trailing-solidus": - "Trailing solidus not allowed on element %(name)s", - "unexpected-html-element-in-foreign-content": - "Element %(name)s not allowed in a non-html context", - "unexpected-end-tag-before-html": - "Unexpected end tag (%(name)s) before html.", - "unexpected-inhead-noscript-tag": - "Element %(name)s not allowed in a inhead-noscript context", - "eof-in-head-noscript": - "Unexpected end of file. Expected inhead-noscript content", - "char-in-head-noscript": - "Unexpected non-space character. Expected inhead-noscript content", - "XXX-undefined-error": - "Undefined error (this sucks and should be fixed)", -} - -namespaces = { - "html": "http://www.w3.org/1999/xhtml", - "mathml": "http://www.w3.org/1998/Math/MathML", - "svg": "http://www.w3.org/2000/svg", - "xlink": "http://www.w3.org/1999/xlink", - "xml": "http://www.w3.org/XML/1998/namespace", - "xmlns": "http://www.w3.org/2000/xmlns/" -} - -scopingElements = frozenset([ - (namespaces["html"], "applet"), - (namespaces["html"], "caption"), - (namespaces["html"], "html"), - (namespaces["html"], "marquee"), - (namespaces["html"], "object"), - (namespaces["html"], "table"), - (namespaces["html"], "td"), - (namespaces["html"], "th"), - (namespaces["mathml"], "mi"), - (namespaces["mathml"], "mo"), - (namespaces["mathml"], "mn"), - (namespaces["mathml"], "ms"), - (namespaces["mathml"], "mtext"), - (namespaces["mathml"], "annotation-xml"), - (namespaces["svg"], "foreignObject"), - (namespaces["svg"], "desc"), - (namespaces["svg"], "title"), -]) - -formattingElements = frozenset([ - (namespaces["html"], "a"), - (namespaces["html"], "b"), - (namespaces["html"], "big"), - (namespaces["html"], "code"), - (namespaces["html"], "em"), - (namespaces["html"], "font"), - (namespaces["html"], "i"), - (namespaces["html"], "nobr"), - (namespaces["html"], "s"), - (namespaces["html"], "small"), - (namespaces["html"], "strike"), - (namespaces["html"], "strong"), - (namespaces["html"], "tt"), - (namespaces["html"], "u") -]) - -specialElements = frozenset([ - (namespaces["html"], "address"), - (namespaces["html"], "applet"), - (namespaces["html"], "area"), - (namespaces["html"], "article"), - (namespaces["html"], "aside"), - (namespaces["html"], "base"), - (namespaces["html"], "basefont"), - (namespaces["html"], "bgsound"), - (namespaces["html"], "blockquote"), - (namespaces["html"], "body"), - (namespaces["html"], "br"), - (namespaces["html"], "button"), - (namespaces["html"], "caption"), - (namespaces["html"], "center"), - (namespaces["html"], "col"), - (namespaces["html"], "colgroup"), - (namespaces["html"], "command"), - (namespaces["html"], "dd"), - (namespaces["html"], "details"), - (namespaces["html"], "dir"), - (namespaces["html"], "div"), - (namespaces["html"], "dl"), - (namespaces["html"], "dt"), - (namespaces["html"], "embed"), - (namespaces["html"], "fieldset"), - (namespaces["html"], "figure"), - (namespaces["html"], "footer"), - (namespaces["html"], "form"), - (namespaces["html"], "frame"), - (namespaces["html"], "frameset"), - (namespaces["html"], "h1"), - (namespaces["html"], "h2"), - (namespaces["html"], "h3"), - (namespaces["html"], "h4"), - (namespaces["html"], "h5"), - (namespaces["html"], "h6"), - (namespaces["html"], "head"), - (namespaces["html"], "header"), - (namespaces["html"], "hr"), - (namespaces["html"], "html"), - (namespaces["html"], "iframe"), - # Note that image is commented out in the spec as "this isn't an - # element that can end up on the stack, so it doesn't matter," - (namespaces["html"], "image"), - (namespaces["html"], "img"), - (namespaces["html"], "input"), - (namespaces["html"], "isindex"), - (namespaces["html"], "li"), - (namespaces["html"], "link"), - (namespaces["html"], "listing"), - (namespaces["html"], "marquee"), - (namespaces["html"], "menu"), - (namespaces["html"], "meta"), - (namespaces["html"], "nav"), - (namespaces["html"], "noembed"), - (namespaces["html"], "noframes"), - (namespaces["html"], "noscript"), - (namespaces["html"], "object"), - (namespaces["html"], "ol"), - (namespaces["html"], "p"), - (namespaces["html"], "param"), - (namespaces["html"], "plaintext"), - (namespaces["html"], "pre"), - (namespaces["html"], "script"), - (namespaces["html"], "section"), - (namespaces["html"], "select"), - (namespaces["html"], "style"), - (namespaces["html"], "table"), - (namespaces["html"], "tbody"), - (namespaces["html"], "td"), - (namespaces["html"], "textarea"), - (namespaces["html"], "tfoot"), - (namespaces["html"], "th"), - (namespaces["html"], "thead"), - (namespaces["html"], "title"), - (namespaces["html"], "tr"), - (namespaces["html"], "ul"), - (namespaces["html"], "wbr"), - (namespaces["html"], "xmp"), - (namespaces["svg"], "foreignObject") -]) - -htmlIntegrationPointElements = frozenset([ - (namespaces["mathml"], "annotaion-xml"), - (namespaces["svg"], "foreignObject"), - (namespaces["svg"], "desc"), - (namespaces["svg"], "title") -]) - -mathmlTextIntegrationPointElements = frozenset([ - (namespaces["mathml"], "mi"), - (namespaces["mathml"], "mo"), - (namespaces["mathml"], "mn"), - (namespaces["mathml"], "ms"), - (namespaces["mathml"], "mtext") -]) - -adjustSVGAttributes = { - "attributename": "attributeName", - "attributetype": "attributeType", - "basefrequency": "baseFrequency", - "baseprofile": "baseProfile", - "calcmode": "calcMode", - "clippathunits": "clipPathUnits", - "contentscripttype": "contentScriptType", - "contentstyletype": "contentStyleType", - "diffuseconstant": "diffuseConstant", - "edgemode": "edgeMode", - "externalresourcesrequired": "externalResourcesRequired", - "filterres": "filterRes", - "filterunits": "filterUnits", - "glyphref": "glyphRef", - "gradienttransform": "gradientTransform", - "gradientunits": "gradientUnits", - "kernelmatrix": "kernelMatrix", - "kernelunitlength": "kernelUnitLength", - "keypoints": "keyPoints", - "keysplines": "keySplines", - "keytimes": "keyTimes", - "lengthadjust": "lengthAdjust", - "limitingconeangle": "limitingConeAngle", - "markerheight": "markerHeight", - "markerunits": "markerUnits", - "markerwidth": "markerWidth", - "maskcontentunits": "maskContentUnits", - "maskunits": "maskUnits", - "numoctaves": "numOctaves", - "pathlength": "pathLength", - "patterncontentunits": "patternContentUnits", - "patterntransform": "patternTransform", - "patternunits": "patternUnits", - "pointsatx": "pointsAtX", - "pointsaty": "pointsAtY", - "pointsatz": "pointsAtZ", - "preservealpha": "preserveAlpha", - "preserveaspectratio": "preserveAspectRatio", - "primitiveunits": "primitiveUnits", - "refx": "refX", - "refy": "refY", - "repeatcount": "repeatCount", - "repeatdur": "repeatDur", - "requiredextensions": "requiredExtensions", - "requiredfeatures": "requiredFeatures", - "specularconstant": "specularConstant", - "specularexponent": "specularExponent", - "spreadmethod": "spreadMethod", - "startoffset": "startOffset", - "stddeviation": "stdDeviation", - "stitchtiles": "stitchTiles", - "surfacescale": "surfaceScale", - "systemlanguage": "systemLanguage", - "tablevalues": "tableValues", - "targetx": "targetX", - "targety": "targetY", - "textlength": "textLength", - "viewbox": "viewBox", - "viewtarget": "viewTarget", - "xchannelselector": "xChannelSelector", - "ychannelselector": "yChannelSelector", - "zoomandpan": "zoomAndPan" -} - -adjustMathMLAttributes = {"definitionurl": "definitionURL"} - -adjustForeignAttributes = { - "xlink:actuate": ("xlink", "actuate", namespaces["xlink"]), - "xlink:arcrole": ("xlink", "arcrole", namespaces["xlink"]), - "xlink:href": ("xlink", "href", namespaces["xlink"]), - "xlink:role": ("xlink", "role", namespaces["xlink"]), - "xlink:show": ("xlink", "show", namespaces["xlink"]), - "xlink:title": ("xlink", "title", namespaces["xlink"]), - "xlink:type": ("xlink", "type", namespaces["xlink"]), - "xml:base": ("xml", "base", namespaces["xml"]), - "xml:lang": ("xml", "lang", namespaces["xml"]), - "xml:space": ("xml", "space", namespaces["xml"]), - "xmlns": (None, "xmlns", namespaces["xmlns"]), - "xmlns:xlink": ("xmlns", "xlink", namespaces["xmlns"]) -} - -unadjustForeignAttributes = dict([((ns, local), qname) for qname, (prefix, local, ns) in - adjustForeignAttributes.items()]) - -spaceCharacters = frozenset([ - "\t", - "\n", - "\u000C", - " ", - "\r" -]) - -tableInsertModeElements = frozenset([ - "table", - "tbody", - "tfoot", - "thead", - "tr" -]) - -asciiLowercase = frozenset(string.ascii_lowercase) -asciiUppercase = frozenset(string.ascii_uppercase) -asciiLetters = frozenset(string.ascii_letters) -digits = frozenset(string.digits) -hexDigits = frozenset(string.hexdigits) - -asciiUpper2Lower = dict([(ord(c), ord(c.lower())) - for c in string.ascii_uppercase]) - -# Heading elements need to be ordered -headingElements = ( - "h1", - "h2", - "h3", - "h4", - "h5", - "h6" -) - -voidElements = frozenset([ - "base", - "command", - "event-source", - "link", - "meta", - "hr", - "br", - "img", - "embed", - "param", - "area", - "col", - "input", - "source", - "track" -]) - -cdataElements = frozenset(['title', 'textarea']) - -rcdataElements = frozenset([ - 'style', - 'script', - 'xmp', - 'iframe', - 'noembed', - 'noframes', - 'noscript' -]) - -booleanAttributes = { - "": frozenset(["irrelevant"]), - "style": frozenset(["scoped"]), - "img": frozenset(["ismap"]), - "audio": frozenset(["autoplay", "controls"]), - "video": frozenset(["autoplay", "controls"]), - "script": frozenset(["defer", "async"]), - "details": frozenset(["open"]), - "datagrid": frozenset(["multiple", "disabled"]), - "command": frozenset(["hidden", "disabled", "checked", "default"]), - "hr": frozenset(["noshade"]), - "menu": frozenset(["autosubmit"]), - "fieldset": frozenset(["disabled", "readonly"]), - "option": frozenset(["disabled", "readonly", "selected"]), - "optgroup": frozenset(["disabled", "readonly"]), - "button": frozenset(["disabled", "autofocus"]), - "input": frozenset(["disabled", "readonly", "required", "autofocus", "checked", "ismap"]), - "select": frozenset(["disabled", "readonly", "autofocus", "multiple"]), - "output": frozenset(["disabled", "readonly"]), -} - -# entitiesWindows1252 has to be _ordered_ and needs to have an index. It -# therefore can't be a frozenset. -entitiesWindows1252 = ( - 8364, # 0x80 0x20AC EURO SIGN - 65533, # 0x81 UNDEFINED - 8218, # 0x82 0x201A SINGLE LOW-9 QUOTATION MARK - 402, # 0x83 0x0192 LATIN SMALL LETTER F WITH HOOK - 8222, # 0x84 0x201E DOUBLE LOW-9 QUOTATION MARK - 8230, # 0x85 0x2026 HORIZONTAL ELLIPSIS - 8224, # 0x86 0x2020 DAGGER - 8225, # 0x87 0x2021 DOUBLE DAGGER - 710, # 0x88 0x02C6 MODIFIER LETTER CIRCUMFLEX ACCENT - 8240, # 0x89 0x2030 PER MILLE SIGN - 352, # 0x8A 0x0160 LATIN CAPITAL LETTER S WITH CARON - 8249, # 0x8B 0x2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK - 338, # 0x8C 0x0152 LATIN CAPITAL LIGATURE OE - 65533, # 0x8D UNDEFINED - 381, # 0x8E 0x017D LATIN CAPITAL LETTER Z WITH CARON - 65533, # 0x8F UNDEFINED - 65533, # 0x90 UNDEFINED - 8216, # 0x91 0x2018 LEFT SINGLE QUOTATION MARK - 8217, # 0x92 0x2019 RIGHT SINGLE QUOTATION MARK - 8220, # 0x93 0x201C LEFT DOUBLE QUOTATION MARK - 8221, # 0x94 0x201D RIGHT DOUBLE QUOTATION MARK - 8226, # 0x95 0x2022 BULLET - 8211, # 0x96 0x2013 EN DASH - 8212, # 0x97 0x2014 EM DASH - 732, # 0x98 0x02DC SMALL TILDE - 8482, # 0x99 0x2122 TRADE MARK SIGN - 353, # 0x9A 0x0161 LATIN SMALL LETTER S WITH CARON - 8250, # 0x9B 0x203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK - 339, # 0x9C 0x0153 LATIN SMALL LIGATURE OE - 65533, # 0x9D UNDEFINED - 382, # 0x9E 0x017E LATIN SMALL LETTER Z WITH CARON - 376 # 0x9F 0x0178 LATIN CAPITAL LETTER Y WITH DIAERESIS -) - -xmlEntities = frozenset(['lt;', 'gt;', 'amp;', 'apos;', 'quot;']) - -entities = { - "AElig": "\xc6", - "AElig;": "\xc6", - "AMP": "&", - "AMP;": "&", - "Aacute": "\xc1", - "Aacute;": "\xc1", - "Abreve;": "\u0102", - "Acirc": "\xc2", - "Acirc;": "\xc2", - "Acy;": "\u0410", - "Afr;": "\U0001d504", - "Agrave": "\xc0", - "Agrave;": "\xc0", - "Alpha;": "\u0391", - "Amacr;": "\u0100", - "And;": "\u2a53", - "Aogon;": "\u0104", - "Aopf;": "\U0001d538", - "ApplyFunction;": "\u2061", - "Aring": "\xc5", - "Aring;": "\xc5", - "Ascr;": "\U0001d49c", - "Assign;": "\u2254", - "Atilde": "\xc3", - "Atilde;": "\xc3", - "Auml": "\xc4", - "Auml;": "\xc4", - "Backslash;": "\u2216", - "Barv;": "\u2ae7", - "Barwed;": "\u2306", - "Bcy;": "\u0411", - "Because;": "\u2235", - "Bernoullis;": "\u212c", - "Beta;": "\u0392", - "Bfr;": "\U0001d505", - "Bopf;": "\U0001d539", - "Breve;": "\u02d8", - "Bscr;": "\u212c", - "Bumpeq;": "\u224e", - "CHcy;": "\u0427", - "COPY": "\xa9", - "COPY;": "\xa9", - "Cacute;": "\u0106", - "Cap;": "\u22d2", - "CapitalDifferentialD;": "\u2145", - "Cayleys;": "\u212d", - "Ccaron;": "\u010c", - "Ccedil": "\xc7", - "Ccedil;": "\xc7", - "Ccirc;": "\u0108", - "Cconint;": "\u2230", - "Cdot;": "\u010a", - "Cedilla;": "\xb8", - "CenterDot;": "\xb7", - "Cfr;": "\u212d", - "Chi;": "\u03a7", - "CircleDot;": "\u2299", - "CircleMinus;": "\u2296", - "CirclePlus;": "\u2295", - "CircleTimes;": "\u2297", - "ClockwiseContourIntegral;": "\u2232", - "CloseCurlyDoubleQuote;": "\u201d", - "CloseCurlyQuote;": "\u2019", - "Colon;": "\u2237", - "Colone;": "\u2a74", - "Congruent;": "\u2261", - "Conint;": "\u222f", - "ContourIntegral;": "\u222e", - "Copf;": "\u2102", - "Coproduct;": "\u2210", - "CounterClockwiseContourIntegral;": "\u2233", - "Cross;": "\u2a2f", - "Cscr;": "\U0001d49e", - "Cup;": "\u22d3", - "CupCap;": "\u224d", - "DD;": "\u2145", - "DDotrahd;": "\u2911", - "DJcy;": "\u0402", - "DScy;": "\u0405", - "DZcy;": "\u040f", - "Dagger;": "\u2021", - "Darr;": "\u21a1", - "Dashv;": "\u2ae4", - "Dcaron;": "\u010e", - "Dcy;": "\u0414", - "Del;": "\u2207", - "Delta;": "\u0394", - "Dfr;": "\U0001d507", - "DiacriticalAcute;": "\xb4", - "DiacriticalDot;": "\u02d9", - "DiacriticalDoubleAcute;": "\u02dd", - "DiacriticalGrave;": "`", - "DiacriticalTilde;": "\u02dc", - "Diamond;": "\u22c4", - "DifferentialD;": "\u2146", - "Dopf;": "\U0001d53b", - "Dot;": "\xa8", - "DotDot;": "\u20dc", - "DotEqual;": "\u2250", - "DoubleContourIntegral;": "\u222f", - "DoubleDot;": "\xa8", - "DoubleDownArrow;": "\u21d3", - "DoubleLeftArrow;": "\u21d0", - "DoubleLeftRightArrow;": "\u21d4", - "DoubleLeftTee;": "\u2ae4", - "DoubleLongLeftArrow;": "\u27f8", - "DoubleLongLeftRightArrow;": "\u27fa", - "DoubleLongRightArrow;": "\u27f9", - "DoubleRightArrow;": "\u21d2", - "DoubleRightTee;": "\u22a8", - "DoubleUpArrow;": "\u21d1", - "DoubleUpDownArrow;": "\u21d5", - "DoubleVerticalBar;": "\u2225", - "DownArrow;": "\u2193", - "DownArrowBar;": "\u2913", - "DownArrowUpArrow;": "\u21f5", - "DownBreve;": "\u0311", - "DownLeftRightVector;": "\u2950", - "DownLeftTeeVector;": "\u295e", - "DownLeftVector;": "\u21bd", - "DownLeftVectorBar;": "\u2956", - "DownRightTeeVector;": "\u295f", - "DownRightVector;": "\u21c1", - "DownRightVectorBar;": "\u2957", - "DownTee;": "\u22a4", - "DownTeeArrow;": "\u21a7", - "Downarrow;": "\u21d3", - "Dscr;": "\U0001d49f", - "Dstrok;": "\u0110", - "ENG;": "\u014a", - "ETH": "\xd0", - "ETH;": "\xd0", - "Eacute": "\xc9", - "Eacute;": "\xc9", - "Ecaron;": "\u011a", - "Ecirc": "\xca", - "Ecirc;": "\xca", - "Ecy;": "\u042d", - "Edot;": "\u0116", - "Efr;": "\U0001d508", - "Egrave": "\xc8", - "Egrave;": "\xc8", - "Element;": "\u2208", - "Emacr;": "\u0112", - "EmptySmallSquare;": "\u25fb", - "EmptyVerySmallSquare;": "\u25ab", - "Eogon;": "\u0118", - "Eopf;": "\U0001d53c", - "Epsilon;": "\u0395", - "Equal;": "\u2a75", - "EqualTilde;": "\u2242", - "Equilibrium;": "\u21cc", - "Escr;": "\u2130", - "Esim;": "\u2a73", - "Eta;": "\u0397", - "Euml": "\xcb", - "Euml;": "\xcb", - "Exists;": "\u2203", - "ExponentialE;": "\u2147", - "Fcy;": "\u0424", - "Ffr;": "\U0001d509", - "FilledSmallSquare;": "\u25fc", - "FilledVerySmallSquare;": "\u25aa", - "Fopf;": "\U0001d53d", - "ForAll;": "\u2200", - "Fouriertrf;": "\u2131", - "Fscr;": "\u2131", - "GJcy;": "\u0403", - "GT": ">", - "GT;": ">", - "Gamma;": "\u0393", - "Gammad;": "\u03dc", - "Gbreve;": "\u011e", - "Gcedil;": "\u0122", - "Gcirc;": "\u011c", - "Gcy;": "\u0413", - "Gdot;": "\u0120", - "Gfr;": "\U0001d50a", - "Gg;": "\u22d9", - "Gopf;": "\U0001d53e", - "GreaterEqual;": "\u2265", - "GreaterEqualLess;": "\u22db", - "GreaterFullEqual;": "\u2267", - "GreaterGreater;": "\u2aa2", - "GreaterLess;": "\u2277", - "GreaterSlantEqual;": "\u2a7e", - "GreaterTilde;": "\u2273", - "Gscr;": "\U0001d4a2", - "Gt;": "\u226b", - "HARDcy;": "\u042a", - "Hacek;": "\u02c7", - "Hat;": "^", - "Hcirc;": "\u0124", - "Hfr;": "\u210c", - "HilbertSpace;": "\u210b", - "Hopf;": "\u210d", - "HorizontalLine;": "\u2500", - "Hscr;": "\u210b", - "Hstrok;": "\u0126", - "HumpDownHump;": "\u224e", - "HumpEqual;": "\u224f", - "IEcy;": "\u0415", - "IJlig;": "\u0132", - "IOcy;": "\u0401", - "Iacute": "\xcd", - "Iacute;": "\xcd", - "Icirc": "\xce", - "Icirc;": "\xce", - "Icy;": "\u0418", - "Idot;": "\u0130", - "Ifr;": "\u2111", - "Igrave": "\xcc", - "Igrave;": "\xcc", - "Im;": "\u2111", - "Imacr;": "\u012a", - "ImaginaryI;": "\u2148", - "Implies;": "\u21d2", - "Int;": "\u222c", - "Integral;": "\u222b", - "Intersection;": "\u22c2", - "InvisibleComma;": "\u2063", - "InvisibleTimes;": "\u2062", - "Iogon;": "\u012e", - "Iopf;": "\U0001d540", - "Iota;": "\u0399", - "Iscr;": "\u2110", - "Itilde;": "\u0128", - "Iukcy;": "\u0406", - "Iuml": "\xcf", - "Iuml;": "\xcf", - "Jcirc;": "\u0134", - "Jcy;": "\u0419", - "Jfr;": "\U0001d50d", - "Jopf;": "\U0001d541", - "Jscr;": "\U0001d4a5", - "Jsercy;": "\u0408", - "Jukcy;": "\u0404", - "KHcy;": "\u0425", - "KJcy;": "\u040c", - "Kappa;": "\u039a", - "Kcedil;": "\u0136", - "Kcy;": "\u041a", - "Kfr;": "\U0001d50e", - "Kopf;": "\U0001d542", - "Kscr;": "\U0001d4a6", - "LJcy;": "\u0409", - "LT": "<", - "LT;": "<", - "Lacute;": "\u0139", - "Lambda;": "\u039b", - "Lang;": "\u27ea", - "Laplacetrf;": "\u2112", - "Larr;": "\u219e", - "Lcaron;": "\u013d", - "Lcedil;": "\u013b", - "Lcy;": "\u041b", - "LeftAngleBracket;": "\u27e8", - "LeftArrow;": "\u2190", - "LeftArrowBar;": "\u21e4", - "LeftArrowRightArrow;": "\u21c6", - "LeftCeiling;": "\u2308", - "LeftDoubleBracket;": "\u27e6", - "LeftDownTeeVector;": "\u2961", - "LeftDownVector;": "\u21c3", - "LeftDownVectorBar;": "\u2959", - "LeftFloor;": "\u230a", - "LeftRightArrow;": "\u2194", - "LeftRightVector;": "\u294e", - "LeftTee;": "\u22a3", - "LeftTeeArrow;": "\u21a4", - "LeftTeeVector;": "\u295a", - "LeftTriangle;": "\u22b2", - "LeftTriangleBar;": "\u29cf", - "LeftTriangleEqual;": "\u22b4", - "LeftUpDownVector;": "\u2951", - "LeftUpTeeVector;": "\u2960", - "LeftUpVector;": "\u21bf", - "LeftUpVectorBar;": "\u2958", - "LeftVector;": "\u21bc", - "LeftVectorBar;": "\u2952", - "Leftarrow;": "\u21d0", - "Leftrightarrow;": "\u21d4", - "LessEqualGreater;": "\u22da", - "LessFullEqual;": "\u2266", - "LessGreater;": "\u2276", - "LessLess;": "\u2aa1", - "LessSlantEqual;": "\u2a7d", - "LessTilde;": "\u2272", - "Lfr;": "\U0001d50f", - "Ll;": "\u22d8", - "Lleftarrow;": "\u21da", - "Lmidot;": "\u013f", - "LongLeftArrow;": "\u27f5", - "LongLeftRightArrow;": "\u27f7", - "LongRightArrow;": "\u27f6", - "Longleftarrow;": "\u27f8", - "Longleftrightarrow;": "\u27fa", - "Longrightarrow;": "\u27f9", - "Lopf;": "\U0001d543", - "LowerLeftArrow;": "\u2199", - "LowerRightArrow;": "\u2198", - "Lscr;": "\u2112", - "Lsh;": "\u21b0", - "Lstrok;": "\u0141", - "Lt;": "\u226a", - "Map;": "\u2905", - "Mcy;": "\u041c", - "MediumSpace;": "\u205f", - "Mellintrf;": "\u2133", - "Mfr;": "\U0001d510", - "MinusPlus;": "\u2213", - "Mopf;": "\U0001d544", - "Mscr;": "\u2133", - "Mu;": "\u039c", - "NJcy;": "\u040a", - "Nacute;": "\u0143", - "Ncaron;": "\u0147", - "Ncedil;": "\u0145", - "Ncy;": "\u041d", - "NegativeMediumSpace;": "\u200b", - "NegativeThickSpace;": "\u200b", - "NegativeThinSpace;": "\u200b", - "NegativeVeryThinSpace;": "\u200b", - "NestedGreaterGreater;": "\u226b", - "NestedLessLess;": "\u226a", - "NewLine;": "\n", - "Nfr;": "\U0001d511", - "NoBreak;": "\u2060", - "NonBreakingSpace;": "\xa0", - "Nopf;": "\u2115", - "Not;": "\u2aec", - "NotCongruent;": "\u2262", - "NotCupCap;": "\u226d", - "NotDoubleVerticalBar;": "\u2226", - "NotElement;": "\u2209", - "NotEqual;": "\u2260", - "NotEqualTilde;": "\u2242\u0338", - "NotExists;": "\u2204", - "NotGreater;": "\u226f", - "NotGreaterEqual;": "\u2271", - "NotGreaterFullEqual;": "\u2267\u0338", - "NotGreaterGreater;": "\u226b\u0338", - "NotGreaterLess;": "\u2279", - "NotGreaterSlantEqual;": "\u2a7e\u0338", - "NotGreaterTilde;": "\u2275", - "NotHumpDownHump;": "\u224e\u0338", - "NotHumpEqual;": "\u224f\u0338", - "NotLeftTriangle;": "\u22ea", - "NotLeftTriangleBar;": "\u29cf\u0338", - "NotLeftTriangleEqual;": "\u22ec", - "NotLess;": "\u226e", - "NotLessEqual;": "\u2270", - "NotLessGreater;": "\u2278", - "NotLessLess;": "\u226a\u0338", - "NotLessSlantEqual;": "\u2a7d\u0338", - "NotLessTilde;": "\u2274", - "NotNestedGreaterGreater;": "\u2aa2\u0338", - "NotNestedLessLess;": "\u2aa1\u0338", - "NotPrecedes;": "\u2280", - "NotPrecedesEqual;": "\u2aaf\u0338", - "NotPrecedesSlantEqual;": "\u22e0", - "NotReverseElement;": "\u220c", - "NotRightTriangle;": "\u22eb", - "NotRightTriangleBar;": "\u29d0\u0338", - "NotRightTriangleEqual;": "\u22ed", - "NotSquareSubset;": "\u228f\u0338", - "NotSquareSubsetEqual;": "\u22e2", - "NotSquareSuperset;": "\u2290\u0338", - "NotSquareSupersetEqual;": "\u22e3", - "NotSubset;": "\u2282\u20d2", - "NotSubsetEqual;": "\u2288", - "NotSucceeds;": "\u2281", - "NotSucceedsEqual;": "\u2ab0\u0338", - "NotSucceedsSlantEqual;": "\u22e1", - "NotSucceedsTilde;": "\u227f\u0338", - "NotSuperset;": "\u2283\u20d2", - "NotSupersetEqual;": "\u2289", - "NotTilde;": "\u2241", - "NotTildeEqual;": "\u2244", - "NotTildeFullEqual;": "\u2247", - "NotTildeTilde;": "\u2249", - "NotVerticalBar;": "\u2224", - "Nscr;": "\U0001d4a9", - "Ntilde": "\xd1", - "Ntilde;": "\xd1", - "Nu;": "\u039d", - "OElig;": "\u0152", - "Oacute": "\xd3", - "Oacute;": "\xd3", - "Ocirc": "\xd4", - "Ocirc;": "\xd4", - "Ocy;": "\u041e", - "Odblac;": "\u0150", - "Ofr;": "\U0001d512", - "Ograve": "\xd2", - "Ograve;": "\xd2", - "Omacr;": "\u014c", - "Omega;": "\u03a9", - "Omicron;": "\u039f", - "Oopf;": "\U0001d546", - "OpenCurlyDoubleQuote;": "\u201c", - "OpenCurlyQuote;": "\u2018", - "Or;": "\u2a54", - "Oscr;": "\U0001d4aa", - "Oslash": "\xd8", - "Oslash;": "\xd8", - "Otilde": "\xd5", - "Otilde;": "\xd5", - "Otimes;": "\u2a37", - "Ouml": "\xd6", - "Ouml;": "\xd6", - "OverBar;": "\u203e", - "OverBrace;": "\u23de", - "OverBracket;": "\u23b4", - "OverParenthesis;": "\u23dc", - "PartialD;": "\u2202", - "Pcy;": "\u041f", - "Pfr;": "\U0001d513", - "Phi;": "\u03a6", - "Pi;": "\u03a0", - "PlusMinus;": "\xb1", - "Poincareplane;": "\u210c", - "Popf;": "\u2119", - "Pr;": "\u2abb", - "Precedes;": "\u227a", - "PrecedesEqual;": "\u2aaf", - "PrecedesSlantEqual;": "\u227c", - "PrecedesTilde;": "\u227e", - "Prime;": "\u2033", - "Product;": "\u220f", - "Proportion;": "\u2237", - "Proportional;": "\u221d", - "Pscr;": "\U0001d4ab", - "Psi;": "\u03a8", - "QUOT": "\"", - "QUOT;": "\"", - "Qfr;": "\U0001d514", - "Qopf;": "\u211a", - "Qscr;": "\U0001d4ac", - "RBarr;": "\u2910", - "REG": "\xae", - "REG;": "\xae", - "Racute;": "\u0154", - "Rang;": "\u27eb", - "Rarr;": "\u21a0", - "Rarrtl;": "\u2916", - "Rcaron;": "\u0158", - "Rcedil;": "\u0156", - "Rcy;": "\u0420", - "Re;": "\u211c", - "ReverseElement;": "\u220b", - "ReverseEquilibrium;": "\u21cb", - "ReverseUpEquilibrium;": "\u296f", - "Rfr;": "\u211c", - "Rho;": "\u03a1", - "RightAngleBracket;": "\u27e9", - "RightArrow;": "\u2192", - "RightArrowBar;": "\u21e5", - "RightArrowLeftArrow;": "\u21c4", - "RightCeiling;": "\u2309", - "RightDoubleBracket;": "\u27e7", - "RightDownTeeVector;": "\u295d", - "RightDownVector;": "\u21c2", - "RightDownVectorBar;": "\u2955", - "RightFloor;": "\u230b", - "RightTee;": "\u22a2", - "RightTeeArrow;": "\u21a6", - "RightTeeVector;": "\u295b", - "RightTriangle;": "\u22b3", - "RightTriangleBar;": "\u29d0", - "RightTriangleEqual;": "\u22b5", - "RightUpDownVector;": "\u294f", - "RightUpTeeVector;": "\u295c", - "RightUpVector;": "\u21be", - "RightUpVectorBar;": "\u2954", - "RightVector;": "\u21c0", - "RightVectorBar;": "\u2953", - "Rightarrow;": "\u21d2", - "Ropf;": "\u211d", - "RoundImplies;": "\u2970", - "Rrightarrow;": "\u21db", - "Rscr;": "\u211b", - "Rsh;": "\u21b1", - "RuleDelayed;": "\u29f4", - "SHCHcy;": "\u0429", - "SHcy;": "\u0428", - "SOFTcy;": "\u042c", - "Sacute;": "\u015a", - "Sc;": "\u2abc", - "Scaron;": "\u0160", - "Scedil;": "\u015e", - "Scirc;": "\u015c", - "Scy;": "\u0421", - "Sfr;": "\U0001d516", - "ShortDownArrow;": "\u2193", - "ShortLeftArrow;": "\u2190", - "ShortRightArrow;": "\u2192", - "ShortUpArrow;": "\u2191", - "Sigma;": "\u03a3", - "SmallCircle;": "\u2218", - "Sopf;": "\U0001d54a", - "Sqrt;": "\u221a", - "Square;": "\u25a1", - "SquareIntersection;": "\u2293", - "SquareSubset;": "\u228f", - "SquareSubsetEqual;": "\u2291", - "SquareSuperset;": "\u2290", - "SquareSupersetEqual;": "\u2292", - "SquareUnion;": "\u2294", - "Sscr;": "\U0001d4ae", - "Star;": "\u22c6", - "Sub;": "\u22d0", - "Subset;": "\u22d0", - "SubsetEqual;": "\u2286", - "Succeeds;": "\u227b", - "SucceedsEqual;": "\u2ab0", - "SucceedsSlantEqual;": "\u227d", - "SucceedsTilde;": "\u227f", - "SuchThat;": "\u220b", - "Sum;": "\u2211", - "Sup;": "\u22d1", - "Superset;": "\u2283", - "SupersetEqual;": "\u2287", - "Supset;": "\u22d1", - "THORN": "\xde", - "THORN;": "\xde", - "TRADE;": "\u2122", - "TSHcy;": "\u040b", - "TScy;": "\u0426", - "Tab;": "\t", - "Tau;": "\u03a4", - "Tcaron;": "\u0164", - "Tcedil;": "\u0162", - "Tcy;": "\u0422", - "Tfr;": "\U0001d517", - "Therefore;": "\u2234", - "Theta;": "\u0398", - "ThickSpace;": "\u205f\u200a", - "ThinSpace;": "\u2009", - "Tilde;": "\u223c", - "TildeEqual;": "\u2243", - "TildeFullEqual;": "\u2245", - "TildeTilde;": "\u2248", - "Topf;": "\U0001d54b", - "TripleDot;": "\u20db", - "Tscr;": "\U0001d4af", - "Tstrok;": "\u0166", - "Uacute": "\xda", - "Uacute;": "\xda", - "Uarr;": "\u219f", - "Uarrocir;": "\u2949", - "Ubrcy;": "\u040e", - "Ubreve;": "\u016c", - "Ucirc": "\xdb", - "Ucirc;": "\xdb", - "Ucy;": "\u0423", - "Udblac;": "\u0170", - "Ufr;": "\U0001d518", - "Ugrave": "\xd9", - "Ugrave;": "\xd9", - "Umacr;": "\u016a", - "UnderBar;": "_", - "UnderBrace;": "\u23df", - "UnderBracket;": "\u23b5", - "UnderParenthesis;": "\u23dd", - "Union;": "\u22c3", - "UnionPlus;": "\u228e", - "Uogon;": "\u0172", - "Uopf;": "\U0001d54c", - "UpArrow;": "\u2191", - "UpArrowBar;": "\u2912", - "UpArrowDownArrow;": "\u21c5", - "UpDownArrow;": "\u2195", - "UpEquilibrium;": "\u296e", - "UpTee;": "\u22a5", - "UpTeeArrow;": "\u21a5", - "Uparrow;": "\u21d1", - "Updownarrow;": "\u21d5", - "UpperLeftArrow;": "\u2196", - "UpperRightArrow;": "\u2197", - "Upsi;": "\u03d2", - "Upsilon;": "\u03a5", - "Uring;": "\u016e", - "Uscr;": "\U0001d4b0", - "Utilde;": "\u0168", - "Uuml": "\xdc", - "Uuml;": "\xdc", - "VDash;": "\u22ab", - "Vbar;": "\u2aeb", - "Vcy;": "\u0412", - "Vdash;": "\u22a9", - "Vdashl;": "\u2ae6", - "Vee;": "\u22c1", - "Verbar;": "\u2016", - "Vert;": "\u2016", - "VerticalBar;": "\u2223", - "VerticalLine;": "|", - "VerticalSeparator;": "\u2758", - "VerticalTilde;": "\u2240", - "VeryThinSpace;": "\u200a", - "Vfr;": "\U0001d519", - "Vopf;": "\U0001d54d", - "Vscr;": "\U0001d4b1", - "Vvdash;": "\u22aa", - "Wcirc;": "\u0174", - "Wedge;": "\u22c0", - "Wfr;": "\U0001d51a", - "Wopf;": "\U0001d54e", - "Wscr;": "\U0001d4b2", - "Xfr;": "\U0001d51b", - "Xi;": "\u039e", - "Xopf;": "\U0001d54f", - "Xscr;": "\U0001d4b3", - "YAcy;": "\u042f", - "YIcy;": "\u0407", - "YUcy;": "\u042e", - "Yacute": "\xdd", - "Yacute;": "\xdd", - "Ycirc;": "\u0176", - "Ycy;": "\u042b", - "Yfr;": "\U0001d51c", - "Yopf;": "\U0001d550", - "Yscr;": "\U0001d4b4", - "Yuml;": "\u0178", - "ZHcy;": "\u0416", - "Zacute;": "\u0179", - "Zcaron;": "\u017d", - "Zcy;": "\u0417", - "Zdot;": "\u017b", - "ZeroWidthSpace;": "\u200b", - "Zeta;": "\u0396", - "Zfr;": "\u2128", - "Zopf;": "\u2124", - "Zscr;": "\U0001d4b5", - "aacute": "\xe1", - "aacute;": "\xe1", - "abreve;": "\u0103", - "ac;": "\u223e", - "acE;": "\u223e\u0333", - "acd;": "\u223f", - "acirc": "\xe2", - "acirc;": "\xe2", - "acute": "\xb4", - "acute;": "\xb4", - "acy;": "\u0430", - "aelig": "\xe6", - "aelig;": "\xe6", - "af;": "\u2061", - "afr;": "\U0001d51e", - "agrave": "\xe0", - "agrave;": "\xe0", - "alefsym;": "\u2135", - "aleph;": "\u2135", - "alpha;": "\u03b1", - "amacr;": "\u0101", - "amalg;": "\u2a3f", - "amp": "&", - "amp;": "&", - "and;": "\u2227", - "andand;": "\u2a55", - "andd;": "\u2a5c", - "andslope;": "\u2a58", - "andv;": "\u2a5a", - "ang;": "\u2220", - "ange;": "\u29a4", - "angle;": "\u2220", - "angmsd;": "\u2221", - "angmsdaa;": "\u29a8", - "angmsdab;": "\u29a9", - "angmsdac;": "\u29aa", - "angmsdad;": "\u29ab", - "angmsdae;": "\u29ac", - "angmsdaf;": "\u29ad", - "angmsdag;": "\u29ae", - "angmsdah;": "\u29af", - "angrt;": "\u221f", - "angrtvb;": "\u22be", - "angrtvbd;": "\u299d", - "angsph;": "\u2222", - "angst;": "\xc5", - "angzarr;": "\u237c", - "aogon;": "\u0105", - "aopf;": "\U0001d552", - "ap;": "\u2248", - "apE;": "\u2a70", - "apacir;": "\u2a6f", - "ape;": "\u224a", - "apid;": "\u224b", - "apos;": "'", - "approx;": "\u2248", - "approxeq;": "\u224a", - "aring": "\xe5", - "aring;": "\xe5", - "ascr;": "\U0001d4b6", - "ast;": "*", - "asymp;": "\u2248", - "asympeq;": "\u224d", - "atilde": "\xe3", - "atilde;": "\xe3", - "auml": "\xe4", - "auml;": "\xe4", - "awconint;": "\u2233", - "awint;": "\u2a11", - "bNot;": "\u2aed", - "backcong;": "\u224c", - "backepsilon;": "\u03f6", - "backprime;": "\u2035", - "backsim;": "\u223d", - "backsimeq;": "\u22cd", - "barvee;": "\u22bd", - "barwed;": "\u2305", - "barwedge;": "\u2305", - "bbrk;": "\u23b5", - "bbrktbrk;": "\u23b6", - "bcong;": "\u224c", - "bcy;": "\u0431", - "bdquo;": "\u201e", - "becaus;": "\u2235", - "because;": "\u2235", - "bemptyv;": "\u29b0", - "bepsi;": "\u03f6", - "bernou;": "\u212c", - "beta;": "\u03b2", - "beth;": "\u2136", - "between;": "\u226c", - "bfr;": "\U0001d51f", - "bigcap;": "\u22c2", - "bigcirc;": "\u25ef", - "bigcup;": "\u22c3", - "bigodot;": "\u2a00", - "bigoplus;": "\u2a01", - "bigotimes;": "\u2a02", - "bigsqcup;": "\u2a06", - "bigstar;": "\u2605", - "bigtriangledown;": "\u25bd", - "bigtriangleup;": "\u25b3", - "biguplus;": "\u2a04", - "bigvee;": "\u22c1", - "bigwedge;": "\u22c0", - "bkarow;": "\u290d", - "blacklozenge;": "\u29eb", - "blacksquare;": "\u25aa", - "blacktriangle;": "\u25b4", - "blacktriangledown;": "\u25be", - "blacktriangleleft;": "\u25c2", - "blacktriangleright;": "\u25b8", - "blank;": "\u2423", - "blk12;": "\u2592", - "blk14;": "\u2591", - "blk34;": "\u2593", - "block;": "\u2588", - "bne;": "=\u20e5", - "bnequiv;": "\u2261\u20e5", - "bnot;": "\u2310", - "bopf;": "\U0001d553", - "bot;": "\u22a5", - "bottom;": "\u22a5", - "bowtie;": "\u22c8", - "boxDL;": "\u2557", - "boxDR;": "\u2554", - "boxDl;": "\u2556", - "boxDr;": "\u2553", - "boxH;": "\u2550", - "boxHD;": "\u2566", - "boxHU;": "\u2569", - "boxHd;": "\u2564", - "boxHu;": "\u2567", - "boxUL;": "\u255d", - "boxUR;": "\u255a", - "boxUl;": "\u255c", - "boxUr;": "\u2559", - "boxV;": "\u2551", - "boxVH;": "\u256c", - "boxVL;": "\u2563", - "boxVR;": "\u2560", - "boxVh;": "\u256b", - "boxVl;": "\u2562", - "boxVr;": "\u255f", - "boxbox;": "\u29c9", - "boxdL;": "\u2555", - "boxdR;": "\u2552", - "boxdl;": "\u2510", - "boxdr;": "\u250c", - "boxh;": "\u2500", - "boxhD;": "\u2565", - "boxhU;": "\u2568", - "boxhd;": "\u252c", - "boxhu;": "\u2534", - "boxminus;": "\u229f", - "boxplus;": "\u229e", - "boxtimes;": "\u22a0", - "boxuL;": "\u255b", - "boxuR;": "\u2558", - "boxul;": "\u2518", - "boxur;": "\u2514", - "boxv;": "\u2502", - "boxvH;": "\u256a", - "boxvL;": "\u2561", - "boxvR;": "\u255e", - "boxvh;": "\u253c", - "boxvl;": "\u2524", - "boxvr;": "\u251c", - "bprime;": "\u2035", - "breve;": "\u02d8", - "brvbar": "\xa6", - "brvbar;": "\xa6", - "bscr;": "\U0001d4b7", - "bsemi;": "\u204f", - "bsim;": "\u223d", - "bsime;": "\u22cd", - "bsol;": "\\", - "bsolb;": "\u29c5", - "bsolhsub;": "\u27c8", - "bull;": "\u2022", - "bullet;": "\u2022", - "bump;": "\u224e", - "bumpE;": "\u2aae", - "bumpe;": "\u224f", - "bumpeq;": "\u224f", - "cacute;": "\u0107", - "cap;": "\u2229", - "capand;": "\u2a44", - "capbrcup;": "\u2a49", - "capcap;": "\u2a4b", - "capcup;": "\u2a47", - "capdot;": "\u2a40", - "caps;": "\u2229\ufe00", - "caret;": "\u2041", - "caron;": "\u02c7", - "ccaps;": "\u2a4d", - "ccaron;": "\u010d", - "ccedil": "\xe7", - "ccedil;": "\xe7", - "ccirc;": "\u0109", - "ccups;": "\u2a4c", - "ccupssm;": "\u2a50", - "cdot;": "\u010b", - "cedil": "\xb8", - "cedil;": "\xb8", - "cemptyv;": "\u29b2", - "cent": "\xa2", - "cent;": "\xa2", - "centerdot;": "\xb7", - "cfr;": "\U0001d520", - "chcy;": "\u0447", - "check;": "\u2713", - "checkmark;": "\u2713", - "chi;": "\u03c7", - "cir;": "\u25cb", - "cirE;": "\u29c3", - "circ;": "\u02c6", - "circeq;": "\u2257", - "circlearrowleft;": "\u21ba", - "circlearrowright;": "\u21bb", - "circledR;": "\xae", - "circledS;": "\u24c8", - "circledast;": "\u229b", - "circledcirc;": "\u229a", - "circleddash;": "\u229d", - "cire;": "\u2257", - "cirfnint;": "\u2a10", - "cirmid;": "\u2aef", - "cirscir;": "\u29c2", - "clubs;": "\u2663", - "clubsuit;": "\u2663", - "colon;": ":", - "colone;": "\u2254", - "coloneq;": "\u2254", - "comma;": ",", - "commat;": "@", - "comp;": "\u2201", - "compfn;": "\u2218", - "complement;": "\u2201", - "complexes;": "\u2102", - "cong;": "\u2245", - "congdot;": "\u2a6d", - "conint;": "\u222e", - "copf;": "\U0001d554", - "coprod;": "\u2210", - "copy": "\xa9", - "copy;": "\xa9", - "copysr;": "\u2117", - "crarr;": "\u21b5", - "cross;": "\u2717", - "cscr;": "\U0001d4b8", - "csub;": "\u2acf", - "csube;": "\u2ad1", - "csup;": "\u2ad0", - "csupe;": "\u2ad2", - "ctdot;": "\u22ef", - "cudarrl;": "\u2938", - "cudarrr;": "\u2935", - "cuepr;": "\u22de", - "cuesc;": "\u22df", - "cularr;": "\u21b6", - "cularrp;": "\u293d", - "cup;": "\u222a", - "cupbrcap;": "\u2a48", - "cupcap;": "\u2a46", - "cupcup;": "\u2a4a", - "cupdot;": "\u228d", - "cupor;": "\u2a45", - "cups;": "\u222a\ufe00", - "curarr;": "\u21b7", - "curarrm;": "\u293c", - "curlyeqprec;": "\u22de", - "curlyeqsucc;": "\u22df", - "curlyvee;": "\u22ce", - "curlywedge;": "\u22cf", - "curren": "\xa4", - "curren;": "\xa4", - "curvearrowleft;": "\u21b6", - "curvearrowright;": "\u21b7", - "cuvee;": "\u22ce", - "cuwed;": "\u22cf", - "cwconint;": "\u2232", - "cwint;": "\u2231", - "cylcty;": "\u232d", - "dArr;": "\u21d3", - "dHar;": "\u2965", - "dagger;": "\u2020", - "daleth;": "\u2138", - "darr;": "\u2193", - "dash;": "\u2010", - "dashv;": "\u22a3", - "dbkarow;": "\u290f", - "dblac;": "\u02dd", - "dcaron;": "\u010f", - "dcy;": "\u0434", - "dd;": "\u2146", - "ddagger;": "\u2021", - "ddarr;": "\u21ca", - "ddotseq;": "\u2a77", - "deg": "\xb0", - "deg;": "\xb0", - "delta;": "\u03b4", - "demptyv;": "\u29b1", - "dfisht;": "\u297f", - "dfr;": "\U0001d521", - "dharl;": "\u21c3", - "dharr;": "\u21c2", - "diam;": "\u22c4", - "diamond;": "\u22c4", - "diamondsuit;": "\u2666", - "diams;": "\u2666", - "die;": "\xa8", - "digamma;": "\u03dd", - "disin;": "\u22f2", - "div;": "\xf7", - "divide": "\xf7", - "divide;": "\xf7", - "divideontimes;": "\u22c7", - "divonx;": "\u22c7", - "djcy;": "\u0452", - "dlcorn;": "\u231e", - "dlcrop;": "\u230d", - "dollar;": "$", - "dopf;": "\U0001d555", - "dot;": "\u02d9", - "doteq;": "\u2250", - "doteqdot;": "\u2251", - "dotminus;": "\u2238", - "dotplus;": "\u2214", - "dotsquare;": "\u22a1", - "doublebarwedge;": "\u2306", - "downarrow;": "\u2193", - "downdownarrows;": "\u21ca", - "downharpoonleft;": "\u21c3", - "downharpoonright;": "\u21c2", - "drbkarow;": "\u2910", - "drcorn;": "\u231f", - "drcrop;": "\u230c", - "dscr;": "\U0001d4b9", - "dscy;": "\u0455", - "dsol;": "\u29f6", - "dstrok;": "\u0111", - "dtdot;": "\u22f1", - "dtri;": "\u25bf", - "dtrif;": "\u25be", - "duarr;": "\u21f5", - "duhar;": "\u296f", - "dwangle;": "\u29a6", - "dzcy;": "\u045f", - "dzigrarr;": "\u27ff", - "eDDot;": "\u2a77", - "eDot;": "\u2251", - "eacute": "\xe9", - "eacute;": "\xe9", - "easter;": "\u2a6e", - "ecaron;": "\u011b", - "ecir;": "\u2256", - "ecirc": "\xea", - "ecirc;": "\xea", - "ecolon;": "\u2255", - "ecy;": "\u044d", - "edot;": "\u0117", - "ee;": "\u2147", - "efDot;": "\u2252", - "efr;": "\U0001d522", - "eg;": "\u2a9a", - "egrave": "\xe8", - "egrave;": "\xe8", - "egs;": "\u2a96", - "egsdot;": "\u2a98", - "el;": "\u2a99", - "elinters;": "\u23e7", - "ell;": "\u2113", - "els;": "\u2a95", - "elsdot;": "\u2a97", - "emacr;": "\u0113", - "empty;": "\u2205", - "emptyset;": "\u2205", - "emptyv;": "\u2205", - "emsp13;": "\u2004", - "emsp14;": "\u2005", - "emsp;": "\u2003", - "eng;": "\u014b", - "ensp;": "\u2002", - "eogon;": "\u0119", - "eopf;": "\U0001d556", - "epar;": "\u22d5", - "eparsl;": "\u29e3", - "eplus;": "\u2a71", - "epsi;": "\u03b5", - "epsilon;": "\u03b5", - "epsiv;": "\u03f5", - "eqcirc;": "\u2256", - "eqcolon;": "\u2255", - "eqsim;": "\u2242", - "eqslantgtr;": "\u2a96", - "eqslantless;": "\u2a95", - "equals;": "=", - "equest;": "\u225f", - "equiv;": "\u2261", - "equivDD;": "\u2a78", - "eqvparsl;": "\u29e5", - "erDot;": "\u2253", - "erarr;": "\u2971", - "escr;": "\u212f", - "esdot;": "\u2250", - "esim;": "\u2242", - "eta;": "\u03b7", - "eth": "\xf0", - "eth;": "\xf0", - "euml": "\xeb", - "euml;": "\xeb", - "euro;": "\u20ac", - "excl;": "!", - "exist;": "\u2203", - "expectation;": "\u2130", - "exponentiale;": "\u2147", - "fallingdotseq;": "\u2252", - "fcy;": "\u0444", - "female;": "\u2640", - "ffilig;": "\ufb03", - "fflig;": "\ufb00", - "ffllig;": "\ufb04", - "ffr;": "\U0001d523", - "filig;": "\ufb01", - "fjlig;": "fj", - "flat;": "\u266d", - "fllig;": "\ufb02", - "fltns;": "\u25b1", - "fnof;": "\u0192", - "fopf;": "\U0001d557", - "forall;": "\u2200", - "fork;": "\u22d4", - "forkv;": "\u2ad9", - "fpartint;": "\u2a0d", - "frac12": "\xbd", - "frac12;": "\xbd", - "frac13;": "\u2153", - "frac14": "\xbc", - "frac14;": "\xbc", - "frac15;": "\u2155", - "frac16;": "\u2159", - "frac18;": "\u215b", - "frac23;": "\u2154", - "frac25;": "\u2156", - "frac34": "\xbe", - "frac34;": "\xbe", - "frac35;": "\u2157", - "frac38;": "\u215c", - "frac45;": "\u2158", - "frac56;": "\u215a", - "frac58;": "\u215d", - "frac78;": "\u215e", - "frasl;": "\u2044", - "frown;": "\u2322", - "fscr;": "\U0001d4bb", - "gE;": "\u2267", - "gEl;": "\u2a8c", - "gacute;": "\u01f5", - "gamma;": "\u03b3", - "gammad;": "\u03dd", - "gap;": "\u2a86", - "gbreve;": "\u011f", - "gcirc;": "\u011d", - "gcy;": "\u0433", - "gdot;": "\u0121", - "ge;": "\u2265", - "gel;": "\u22db", - "geq;": "\u2265", - "geqq;": "\u2267", - "geqslant;": "\u2a7e", - "ges;": "\u2a7e", - "gescc;": "\u2aa9", - "gesdot;": "\u2a80", - "gesdoto;": "\u2a82", - "gesdotol;": "\u2a84", - "gesl;": "\u22db\ufe00", - "gesles;": "\u2a94", - "gfr;": "\U0001d524", - "gg;": "\u226b", - "ggg;": "\u22d9", - "gimel;": "\u2137", - "gjcy;": "\u0453", - "gl;": "\u2277", - "glE;": "\u2a92", - "gla;": "\u2aa5", - "glj;": "\u2aa4", - "gnE;": "\u2269", - "gnap;": "\u2a8a", - "gnapprox;": "\u2a8a", - "gne;": "\u2a88", - "gneq;": "\u2a88", - "gneqq;": "\u2269", - "gnsim;": "\u22e7", - "gopf;": "\U0001d558", - "grave;": "`", - "gscr;": "\u210a", - "gsim;": "\u2273", - "gsime;": "\u2a8e", - "gsiml;": "\u2a90", - "gt": ">", - "gt;": ">", - "gtcc;": "\u2aa7", - "gtcir;": "\u2a7a", - "gtdot;": "\u22d7", - "gtlPar;": "\u2995", - "gtquest;": "\u2a7c", - "gtrapprox;": "\u2a86", - "gtrarr;": "\u2978", - "gtrdot;": "\u22d7", - "gtreqless;": "\u22db", - "gtreqqless;": "\u2a8c", - "gtrless;": "\u2277", - "gtrsim;": "\u2273", - "gvertneqq;": "\u2269\ufe00", - "gvnE;": "\u2269\ufe00", - "hArr;": "\u21d4", - "hairsp;": "\u200a", - "half;": "\xbd", - "hamilt;": "\u210b", - "hardcy;": "\u044a", - "harr;": "\u2194", - "harrcir;": "\u2948", - "harrw;": "\u21ad", - "hbar;": "\u210f", - "hcirc;": "\u0125", - "hearts;": "\u2665", - "heartsuit;": "\u2665", - "hellip;": "\u2026", - "hercon;": "\u22b9", - "hfr;": "\U0001d525", - "hksearow;": "\u2925", - "hkswarow;": "\u2926", - "hoarr;": "\u21ff", - "homtht;": "\u223b", - "hookleftarrow;": "\u21a9", - "hookrightarrow;": "\u21aa", - "hopf;": "\U0001d559", - "horbar;": "\u2015", - "hscr;": "\U0001d4bd", - "hslash;": "\u210f", - "hstrok;": "\u0127", - "hybull;": "\u2043", - "hyphen;": "\u2010", - "iacute": "\xed", - "iacute;": "\xed", - "ic;": "\u2063", - "icirc": "\xee", - "icirc;": "\xee", - "icy;": "\u0438", - "iecy;": "\u0435", - "iexcl": "\xa1", - "iexcl;": "\xa1", - "iff;": "\u21d4", - "ifr;": "\U0001d526", - "igrave": "\xec", - "igrave;": "\xec", - "ii;": "\u2148", - "iiiint;": "\u2a0c", - "iiint;": "\u222d", - "iinfin;": "\u29dc", - "iiota;": "\u2129", - "ijlig;": "\u0133", - "imacr;": "\u012b", - "image;": "\u2111", - "imagline;": "\u2110", - "imagpart;": "\u2111", - "imath;": "\u0131", - "imof;": "\u22b7", - "imped;": "\u01b5", - "in;": "\u2208", - "incare;": "\u2105", - "infin;": "\u221e", - "infintie;": "\u29dd", - "inodot;": "\u0131", - "int;": "\u222b", - "intcal;": "\u22ba", - "integers;": "\u2124", - "intercal;": "\u22ba", - "intlarhk;": "\u2a17", - "intprod;": "\u2a3c", - "iocy;": "\u0451", - "iogon;": "\u012f", - "iopf;": "\U0001d55a", - "iota;": "\u03b9", - "iprod;": "\u2a3c", - "iquest": "\xbf", - "iquest;": "\xbf", - "iscr;": "\U0001d4be", - "isin;": "\u2208", - "isinE;": "\u22f9", - "isindot;": "\u22f5", - "isins;": "\u22f4", - "isinsv;": "\u22f3", - "isinv;": "\u2208", - "it;": "\u2062", - "itilde;": "\u0129", - "iukcy;": "\u0456", - "iuml": "\xef", - "iuml;": "\xef", - "jcirc;": "\u0135", - "jcy;": "\u0439", - "jfr;": "\U0001d527", - "jmath;": "\u0237", - "jopf;": "\U0001d55b", - "jscr;": "\U0001d4bf", - "jsercy;": "\u0458", - "jukcy;": "\u0454", - "kappa;": "\u03ba", - "kappav;": "\u03f0", - "kcedil;": "\u0137", - "kcy;": "\u043a", - "kfr;": "\U0001d528", - "kgreen;": "\u0138", - "khcy;": "\u0445", - "kjcy;": "\u045c", - "kopf;": "\U0001d55c", - "kscr;": "\U0001d4c0", - "lAarr;": "\u21da", - "lArr;": "\u21d0", - "lAtail;": "\u291b", - "lBarr;": "\u290e", - "lE;": "\u2266", - "lEg;": "\u2a8b", - "lHar;": "\u2962", - "lacute;": "\u013a", - "laemptyv;": "\u29b4", - "lagran;": "\u2112", - "lambda;": "\u03bb", - "lang;": "\u27e8", - "langd;": "\u2991", - "langle;": "\u27e8", - "lap;": "\u2a85", - "laquo": "\xab", - "laquo;": "\xab", - "larr;": "\u2190", - "larrb;": "\u21e4", - "larrbfs;": "\u291f", - "larrfs;": "\u291d", - "larrhk;": "\u21a9", - "larrlp;": "\u21ab", - "larrpl;": "\u2939", - "larrsim;": "\u2973", - "larrtl;": "\u21a2", - "lat;": "\u2aab", - "latail;": "\u2919", - "late;": "\u2aad", - "lates;": "\u2aad\ufe00", - "lbarr;": "\u290c", - "lbbrk;": "\u2772", - "lbrace;": "{", - "lbrack;": "[", - "lbrke;": "\u298b", - "lbrksld;": "\u298f", - "lbrkslu;": "\u298d", - "lcaron;": "\u013e", - "lcedil;": "\u013c", - "lceil;": "\u2308", - "lcub;": "{", - "lcy;": "\u043b", - "ldca;": "\u2936", - "ldquo;": "\u201c", - "ldquor;": "\u201e", - "ldrdhar;": "\u2967", - "ldrushar;": "\u294b", - "ldsh;": "\u21b2", - "le;": "\u2264", - "leftarrow;": "\u2190", - "leftarrowtail;": "\u21a2", - "leftharpoondown;": "\u21bd", - "leftharpoonup;": "\u21bc", - "leftleftarrows;": "\u21c7", - "leftrightarrow;": "\u2194", - "leftrightarrows;": "\u21c6", - "leftrightharpoons;": "\u21cb", - "leftrightsquigarrow;": "\u21ad", - "leftthreetimes;": "\u22cb", - "leg;": "\u22da", - "leq;": "\u2264", - "leqq;": "\u2266", - "leqslant;": "\u2a7d", - "les;": "\u2a7d", - "lescc;": "\u2aa8", - "lesdot;": "\u2a7f", - "lesdoto;": "\u2a81", - "lesdotor;": "\u2a83", - "lesg;": "\u22da\ufe00", - "lesges;": "\u2a93", - "lessapprox;": "\u2a85", - "lessdot;": "\u22d6", - "lesseqgtr;": "\u22da", - "lesseqqgtr;": "\u2a8b", - "lessgtr;": "\u2276", - "lesssim;": "\u2272", - "lfisht;": "\u297c", - "lfloor;": "\u230a", - "lfr;": "\U0001d529", - "lg;": "\u2276", - "lgE;": "\u2a91", - "lhard;": "\u21bd", - "lharu;": "\u21bc", - "lharul;": "\u296a", - "lhblk;": "\u2584", - "ljcy;": "\u0459", - "ll;": "\u226a", - "llarr;": "\u21c7", - "llcorner;": "\u231e", - "llhard;": "\u296b", - "lltri;": "\u25fa", - "lmidot;": "\u0140", - "lmoust;": "\u23b0", - "lmoustache;": "\u23b0", - "lnE;": "\u2268", - "lnap;": "\u2a89", - "lnapprox;": "\u2a89", - "lne;": "\u2a87", - "lneq;": "\u2a87", - "lneqq;": "\u2268", - "lnsim;": "\u22e6", - "loang;": "\u27ec", - "loarr;": "\u21fd", - "lobrk;": "\u27e6", - "longleftarrow;": "\u27f5", - "longleftrightarrow;": "\u27f7", - "longmapsto;": "\u27fc", - "longrightarrow;": "\u27f6", - "looparrowleft;": "\u21ab", - "looparrowright;": "\u21ac", - "lopar;": "\u2985", - "lopf;": "\U0001d55d", - "loplus;": "\u2a2d", - "lotimes;": "\u2a34", - "lowast;": "\u2217", - "lowbar;": "_", - "loz;": "\u25ca", - "lozenge;": "\u25ca", - "lozf;": "\u29eb", - "lpar;": "(", - "lparlt;": "\u2993", - "lrarr;": "\u21c6", - "lrcorner;": "\u231f", - "lrhar;": "\u21cb", - "lrhard;": "\u296d", - "lrm;": "\u200e", - "lrtri;": "\u22bf", - "lsaquo;": "\u2039", - "lscr;": "\U0001d4c1", - "lsh;": "\u21b0", - "lsim;": "\u2272", - "lsime;": "\u2a8d", - "lsimg;": "\u2a8f", - "lsqb;": "[", - "lsquo;": "\u2018", - "lsquor;": "\u201a", - "lstrok;": "\u0142", - "lt": "<", - "lt;": "<", - "ltcc;": "\u2aa6", - "ltcir;": "\u2a79", - "ltdot;": "\u22d6", - "lthree;": "\u22cb", - "ltimes;": "\u22c9", - "ltlarr;": "\u2976", - "ltquest;": "\u2a7b", - "ltrPar;": "\u2996", - "ltri;": "\u25c3", - "ltrie;": "\u22b4", - "ltrif;": "\u25c2", - "lurdshar;": "\u294a", - "luruhar;": "\u2966", - "lvertneqq;": "\u2268\ufe00", - "lvnE;": "\u2268\ufe00", - "mDDot;": "\u223a", - "macr": "\xaf", - "macr;": "\xaf", - "male;": "\u2642", - "malt;": "\u2720", - "maltese;": "\u2720", - "map;": "\u21a6", - "mapsto;": "\u21a6", - "mapstodown;": "\u21a7", - "mapstoleft;": "\u21a4", - "mapstoup;": "\u21a5", - "marker;": "\u25ae", - "mcomma;": "\u2a29", - "mcy;": "\u043c", - "mdash;": "\u2014", - "measuredangle;": "\u2221", - "mfr;": "\U0001d52a", - "mho;": "\u2127", - "micro": "\xb5", - "micro;": "\xb5", - "mid;": "\u2223", - "midast;": "*", - "midcir;": "\u2af0", - "middot": "\xb7", - "middot;": "\xb7", - "minus;": "\u2212", - "minusb;": "\u229f", - "minusd;": "\u2238", - "minusdu;": "\u2a2a", - "mlcp;": "\u2adb", - "mldr;": "\u2026", - "mnplus;": "\u2213", - "models;": "\u22a7", - "mopf;": "\U0001d55e", - "mp;": "\u2213", - "mscr;": "\U0001d4c2", - "mstpos;": "\u223e", - "mu;": "\u03bc", - "multimap;": "\u22b8", - "mumap;": "\u22b8", - "nGg;": "\u22d9\u0338", - "nGt;": "\u226b\u20d2", - "nGtv;": "\u226b\u0338", - "nLeftarrow;": "\u21cd", - "nLeftrightarrow;": "\u21ce", - "nLl;": "\u22d8\u0338", - "nLt;": "\u226a\u20d2", - "nLtv;": "\u226a\u0338", - "nRightarrow;": "\u21cf", - "nVDash;": "\u22af", - "nVdash;": "\u22ae", - "nabla;": "\u2207", - "nacute;": "\u0144", - "nang;": "\u2220\u20d2", - "nap;": "\u2249", - "napE;": "\u2a70\u0338", - "napid;": "\u224b\u0338", - "napos;": "\u0149", - "napprox;": "\u2249", - "natur;": "\u266e", - "natural;": "\u266e", - "naturals;": "\u2115", - "nbsp": "\xa0", - "nbsp;": "\xa0", - "nbump;": "\u224e\u0338", - "nbumpe;": "\u224f\u0338", - "ncap;": "\u2a43", - "ncaron;": "\u0148", - "ncedil;": "\u0146", - "ncong;": "\u2247", - "ncongdot;": "\u2a6d\u0338", - "ncup;": "\u2a42", - "ncy;": "\u043d", - "ndash;": "\u2013", - "ne;": "\u2260", - "neArr;": "\u21d7", - "nearhk;": "\u2924", - "nearr;": "\u2197", - "nearrow;": "\u2197", - "nedot;": "\u2250\u0338", - "nequiv;": "\u2262", - "nesear;": "\u2928", - "nesim;": "\u2242\u0338", - "nexist;": "\u2204", - "nexists;": "\u2204", - "nfr;": "\U0001d52b", - "ngE;": "\u2267\u0338", - "nge;": "\u2271", - "ngeq;": "\u2271", - "ngeqq;": "\u2267\u0338", - "ngeqslant;": "\u2a7e\u0338", - "nges;": "\u2a7e\u0338", - "ngsim;": "\u2275", - "ngt;": "\u226f", - "ngtr;": "\u226f", - "nhArr;": "\u21ce", - "nharr;": "\u21ae", - "nhpar;": "\u2af2", - "ni;": "\u220b", - "nis;": "\u22fc", - "nisd;": "\u22fa", - "niv;": "\u220b", - "njcy;": "\u045a", - "nlArr;": "\u21cd", - "nlE;": "\u2266\u0338", - "nlarr;": "\u219a", - "nldr;": "\u2025", - "nle;": "\u2270", - "nleftarrow;": "\u219a", - "nleftrightarrow;": "\u21ae", - "nleq;": "\u2270", - "nleqq;": "\u2266\u0338", - "nleqslant;": "\u2a7d\u0338", - "nles;": "\u2a7d\u0338", - "nless;": "\u226e", - "nlsim;": "\u2274", - "nlt;": "\u226e", - "nltri;": "\u22ea", - "nltrie;": "\u22ec", - "nmid;": "\u2224", - "nopf;": "\U0001d55f", - "not": "\xac", - "not;": "\xac", - "notin;": "\u2209", - "notinE;": "\u22f9\u0338", - "notindot;": "\u22f5\u0338", - "notinva;": "\u2209", - "notinvb;": "\u22f7", - "notinvc;": "\u22f6", - "notni;": "\u220c", - "notniva;": "\u220c", - "notnivb;": "\u22fe", - "notnivc;": "\u22fd", - "npar;": "\u2226", - "nparallel;": "\u2226", - "nparsl;": "\u2afd\u20e5", - "npart;": "\u2202\u0338", - "npolint;": "\u2a14", - "npr;": "\u2280", - "nprcue;": "\u22e0", - "npre;": "\u2aaf\u0338", - "nprec;": "\u2280", - "npreceq;": "\u2aaf\u0338", - "nrArr;": "\u21cf", - "nrarr;": "\u219b", - "nrarrc;": "\u2933\u0338", - "nrarrw;": "\u219d\u0338", - "nrightarrow;": "\u219b", - "nrtri;": "\u22eb", - "nrtrie;": "\u22ed", - "nsc;": "\u2281", - "nsccue;": "\u22e1", - "nsce;": "\u2ab0\u0338", - "nscr;": "\U0001d4c3", - "nshortmid;": "\u2224", - "nshortparallel;": "\u2226", - "nsim;": "\u2241", - "nsime;": "\u2244", - "nsimeq;": "\u2244", - "nsmid;": "\u2224", - "nspar;": "\u2226", - "nsqsube;": "\u22e2", - "nsqsupe;": "\u22e3", - "nsub;": "\u2284", - "nsubE;": "\u2ac5\u0338", - "nsube;": "\u2288", - "nsubset;": "\u2282\u20d2", - "nsubseteq;": "\u2288", - "nsubseteqq;": "\u2ac5\u0338", - "nsucc;": "\u2281", - "nsucceq;": "\u2ab0\u0338", - "nsup;": "\u2285", - "nsupE;": "\u2ac6\u0338", - "nsupe;": "\u2289", - "nsupset;": "\u2283\u20d2", - "nsupseteq;": "\u2289", - "nsupseteqq;": "\u2ac6\u0338", - "ntgl;": "\u2279", - "ntilde": "\xf1", - "ntilde;": "\xf1", - "ntlg;": "\u2278", - "ntriangleleft;": "\u22ea", - "ntrianglelefteq;": "\u22ec", - "ntriangleright;": "\u22eb", - "ntrianglerighteq;": "\u22ed", - "nu;": "\u03bd", - "num;": "#", - "numero;": "\u2116", - "numsp;": "\u2007", - "nvDash;": "\u22ad", - "nvHarr;": "\u2904", - "nvap;": "\u224d\u20d2", - "nvdash;": "\u22ac", - "nvge;": "\u2265\u20d2", - "nvgt;": ">\u20d2", - "nvinfin;": "\u29de", - "nvlArr;": "\u2902", - "nvle;": "\u2264\u20d2", - "nvlt;": "<\u20d2", - "nvltrie;": "\u22b4\u20d2", - "nvrArr;": "\u2903", - "nvrtrie;": "\u22b5\u20d2", - "nvsim;": "\u223c\u20d2", - "nwArr;": "\u21d6", - "nwarhk;": "\u2923", - "nwarr;": "\u2196", - "nwarrow;": "\u2196", - "nwnear;": "\u2927", - "oS;": "\u24c8", - "oacute": "\xf3", - "oacute;": "\xf3", - "oast;": "\u229b", - "ocir;": "\u229a", - "ocirc": "\xf4", - "ocirc;": "\xf4", - "ocy;": "\u043e", - "odash;": "\u229d", - "odblac;": "\u0151", - "odiv;": "\u2a38", - "odot;": "\u2299", - "odsold;": "\u29bc", - "oelig;": "\u0153", - "ofcir;": "\u29bf", - "ofr;": "\U0001d52c", - "ogon;": "\u02db", - "ograve": "\xf2", - "ograve;": "\xf2", - "ogt;": "\u29c1", - "ohbar;": "\u29b5", - "ohm;": "\u03a9", - "oint;": "\u222e", - "olarr;": "\u21ba", - "olcir;": "\u29be", - "olcross;": "\u29bb", - "oline;": "\u203e", - "olt;": "\u29c0", - "omacr;": "\u014d", - "omega;": "\u03c9", - "omicron;": "\u03bf", - "omid;": "\u29b6", - "ominus;": "\u2296", - "oopf;": "\U0001d560", - "opar;": "\u29b7", - "operp;": "\u29b9", - "oplus;": "\u2295", - "or;": "\u2228", - "orarr;": "\u21bb", - "ord;": "\u2a5d", - "order;": "\u2134", - "orderof;": "\u2134", - "ordf": "\xaa", - "ordf;": "\xaa", - "ordm": "\xba", - "ordm;": "\xba", - "origof;": "\u22b6", - "oror;": "\u2a56", - "orslope;": "\u2a57", - "orv;": "\u2a5b", - "oscr;": "\u2134", - "oslash": "\xf8", - "oslash;": "\xf8", - "osol;": "\u2298", - "otilde": "\xf5", - "otilde;": "\xf5", - "otimes;": "\u2297", - "otimesas;": "\u2a36", - "ouml": "\xf6", - "ouml;": "\xf6", - "ovbar;": "\u233d", - "par;": "\u2225", - "para": "\xb6", - "para;": "\xb6", - "parallel;": "\u2225", - "parsim;": "\u2af3", - "parsl;": "\u2afd", - "part;": "\u2202", - "pcy;": "\u043f", - "percnt;": "%", - "period;": ".", - "permil;": "\u2030", - "perp;": "\u22a5", - "pertenk;": "\u2031", - "pfr;": "\U0001d52d", - "phi;": "\u03c6", - "phiv;": "\u03d5", - "phmmat;": "\u2133", - "phone;": "\u260e", - "pi;": "\u03c0", - "pitchfork;": "\u22d4", - "piv;": "\u03d6", - "planck;": "\u210f", - "planckh;": "\u210e", - "plankv;": "\u210f", - "plus;": "+", - "plusacir;": "\u2a23", - "plusb;": "\u229e", - "pluscir;": "\u2a22", - "plusdo;": "\u2214", - "plusdu;": "\u2a25", - "pluse;": "\u2a72", - "plusmn": "\xb1", - "plusmn;": "\xb1", - "plussim;": "\u2a26", - "plustwo;": "\u2a27", - "pm;": "\xb1", - "pointint;": "\u2a15", - "popf;": "\U0001d561", - "pound": "\xa3", - "pound;": "\xa3", - "pr;": "\u227a", - "prE;": "\u2ab3", - "prap;": "\u2ab7", - "prcue;": "\u227c", - "pre;": "\u2aaf", - "prec;": "\u227a", - "precapprox;": "\u2ab7", - "preccurlyeq;": "\u227c", - "preceq;": "\u2aaf", - "precnapprox;": "\u2ab9", - "precneqq;": "\u2ab5", - "precnsim;": "\u22e8", - "precsim;": "\u227e", - "prime;": "\u2032", - "primes;": "\u2119", - "prnE;": "\u2ab5", - "prnap;": "\u2ab9", - "prnsim;": "\u22e8", - "prod;": "\u220f", - "profalar;": "\u232e", - "profline;": "\u2312", - "profsurf;": "\u2313", - "prop;": "\u221d", - "propto;": "\u221d", - "prsim;": "\u227e", - "prurel;": "\u22b0", - "pscr;": "\U0001d4c5", - "psi;": "\u03c8", - "puncsp;": "\u2008", - "qfr;": "\U0001d52e", - "qint;": "\u2a0c", - "qopf;": "\U0001d562", - "qprime;": "\u2057", - "qscr;": "\U0001d4c6", - "quaternions;": "\u210d", - "quatint;": "\u2a16", - "quest;": "?", - "questeq;": "\u225f", - "quot": "\"", - "quot;": "\"", - "rAarr;": "\u21db", - "rArr;": "\u21d2", - "rAtail;": "\u291c", - "rBarr;": "\u290f", - "rHar;": "\u2964", - "race;": "\u223d\u0331", - "racute;": "\u0155", - "radic;": "\u221a", - "raemptyv;": "\u29b3", - "rang;": "\u27e9", - "rangd;": "\u2992", - "range;": "\u29a5", - "rangle;": "\u27e9", - "raquo": "\xbb", - "raquo;": "\xbb", - "rarr;": "\u2192", - "rarrap;": "\u2975", - "rarrb;": "\u21e5", - "rarrbfs;": "\u2920", - "rarrc;": "\u2933", - "rarrfs;": "\u291e", - "rarrhk;": "\u21aa", - "rarrlp;": "\u21ac", - "rarrpl;": "\u2945", - "rarrsim;": "\u2974", - "rarrtl;": "\u21a3", - "rarrw;": "\u219d", - "ratail;": "\u291a", - "ratio;": "\u2236", - "rationals;": "\u211a", - "rbarr;": "\u290d", - "rbbrk;": "\u2773", - "rbrace;": "}", - "rbrack;": "]", - "rbrke;": "\u298c", - "rbrksld;": "\u298e", - "rbrkslu;": "\u2990", - "rcaron;": "\u0159", - "rcedil;": "\u0157", - "rceil;": "\u2309", - "rcub;": "}", - "rcy;": "\u0440", - "rdca;": "\u2937", - "rdldhar;": "\u2969", - "rdquo;": "\u201d", - "rdquor;": "\u201d", - "rdsh;": "\u21b3", - "real;": "\u211c", - "realine;": "\u211b", - "realpart;": "\u211c", - "reals;": "\u211d", - "rect;": "\u25ad", - "reg": "\xae", - "reg;": "\xae", - "rfisht;": "\u297d", - "rfloor;": "\u230b", - "rfr;": "\U0001d52f", - "rhard;": "\u21c1", - "rharu;": "\u21c0", - "rharul;": "\u296c", - "rho;": "\u03c1", - "rhov;": "\u03f1", - "rightarrow;": "\u2192", - "rightarrowtail;": "\u21a3", - "rightharpoondown;": "\u21c1", - "rightharpoonup;": "\u21c0", - "rightleftarrows;": "\u21c4", - "rightleftharpoons;": "\u21cc", - "rightrightarrows;": "\u21c9", - "rightsquigarrow;": "\u219d", - "rightthreetimes;": "\u22cc", - "ring;": "\u02da", - "risingdotseq;": "\u2253", - "rlarr;": "\u21c4", - "rlhar;": "\u21cc", - "rlm;": "\u200f", - "rmoust;": "\u23b1", - "rmoustache;": "\u23b1", - "rnmid;": "\u2aee", - "roang;": "\u27ed", - "roarr;": "\u21fe", - "robrk;": "\u27e7", - "ropar;": "\u2986", - "ropf;": "\U0001d563", - "roplus;": "\u2a2e", - "rotimes;": "\u2a35", - "rpar;": ")", - "rpargt;": "\u2994", - "rppolint;": "\u2a12", - "rrarr;": "\u21c9", - "rsaquo;": "\u203a", - "rscr;": "\U0001d4c7", - "rsh;": "\u21b1", - "rsqb;": "]", - "rsquo;": "\u2019", - "rsquor;": "\u2019", - "rthree;": "\u22cc", - "rtimes;": "\u22ca", - "rtri;": "\u25b9", - "rtrie;": "\u22b5", - "rtrif;": "\u25b8", - "rtriltri;": "\u29ce", - "ruluhar;": "\u2968", - "rx;": "\u211e", - "sacute;": "\u015b", - "sbquo;": "\u201a", - "sc;": "\u227b", - "scE;": "\u2ab4", - "scap;": "\u2ab8", - "scaron;": "\u0161", - "sccue;": "\u227d", - "sce;": "\u2ab0", - "scedil;": "\u015f", - "scirc;": "\u015d", - "scnE;": "\u2ab6", - "scnap;": "\u2aba", - "scnsim;": "\u22e9", - "scpolint;": "\u2a13", - "scsim;": "\u227f", - "scy;": "\u0441", - "sdot;": "\u22c5", - "sdotb;": "\u22a1", - "sdote;": "\u2a66", - "seArr;": "\u21d8", - "searhk;": "\u2925", - "searr;": "\u2198", - "searrow;": "\u2198", - "sect": "\xa7", - "sect;": "\xa7", - "semi;": ";", - "seswar;": "\u2929", - "setminus;": "\u2216", - "setmn;": "\u2216", - "sext;": "\u2736", - "sfr;": "\U0001d530", - "sfrown;": "\u2322", - "sharp;": "\u266f", - "shchcy;": "\u0449", - "shcy;": "\u0448", - "shortmid;": "\u2223", - "shortparallel;": "\u2225", - "shy": "\xad", - "shy;": "\xad", - "sigma;": "\u03c3", - "sigmaf;": "\u03c2", - "sigmav;": "\u03c2", - "sim;": "\u223c", - "simdot;": "\u2a6a", - "sime;": "\u2243", - "simeq;": "\u2243", - "simg;": "\u2a9e", - "simgE;": "\u2aa0", - "siml;": "\u2a9d", - "simlE;": "\u2a9f", - "simne;": "\u2246", - "simplus;": "\u2a24", - "simrarr;": "\u2972", - "slarr;": "\u2190", - "smallsetminus;": "\u2216", - "smashp;": "\u2a33", - "smeparsl;": "\u29e4", - "smid;": "\u2223", - "smile;": "\u2323", - "smt;": "\u2aaa", - "smte;": "\u2aac", - "smtes;": "\u2aac\ufe00", - "softcy;": "\u044c", - "sol;": "/", - "solb;": "\u29c4", - "solbar;": "\u233f", - "sopf;": "\U0001d564", - "spades;": "\u2660", - "spadesuit;": "\u2660", - "spar;": "\u2225", - "sqcap;": "\u2293", - "sqcaps;": "\u2293\ufe00", - "sqcup;": "\u2294", - "sqcups;": "\u2294\ufe00", - "sqsub;": "\u228f", - "sqsube;": "\u2291", - "sqsubset;": "\u228f", - "sqsubseteq;": "\u2291", - "sqsup;": "\u2290", - "sqsupe;": "\u2292", - "sqsupset;": "\u2290", - "sqsupseteq;": "\u2292", - "squ;": "\u25a1", - "square;": "\u25a1", - "squarf;": "\u25aa", - "squf;": "\u25aa", - "srarr;": "\u2192", - "sscr;": "\U0001d4c8", - "ssetmn;": "\u2216", - "ssmile;": "\u2323", - "sstarf;": "\u22c6", - "star;": "\u2606", - "starf;": "\u2605", - "straightepsilon;": "\u03f5", - "straightphi;": "\u03d5", - "strns;": "\xaf", - "sub;": "\u2282", - "subE;": "\u2ac5", - "subdot;": "\u2abd", - "sube;": "\u2286", - "subedot;": "\u2ac3", - "submult;": "\u2ac1", - "subnE;": "\u2acb", - "subne;": "\u228a", - "subplus;": "\u2abf", - "subrarr;": "\u2979", - "subset;": "\u2282", - "subseteq;": "\u2286", - "subseteqq;": "\u2ac5", - "subsetneq;": "\u228a", - "subsetneqq;": "\u2acb", - "subsim;": "\u2ac7", - "subsub;": "\u2ad5", - "subsup;": "\u2ad3", - "succ;": "\u227b", - "succapprox;": "\u2ab8", - "succcurlyeq;": "\u227d", - "succeq;": "\u2ab0", - "succnapprox;": "\u2aba", - "succneqq;": "\u2ab6", - "succnsim;": "\u22e9", - "succsim;": "\u227f", - "sum;": "\u2211", - "sung;": "\u266a", - "sup1": "\xb9", - "sup1;": "\xb9", - "sup2": "\xb2", - "sup2;": "\xb2", - "sup3": "\xb3", - "sup3;": "\xb3", - "sup;": "\u2283", - "supE;": "\u2ac6", - "supdot;": "\u2abe", - "supdsub;": "\u2ad8", - "supe;": "\u2287", - "supedot;": "\u2ac4", - "suphsol;": "\u27c9", - "suphsub;": "\u2ad7", - "suplarr;": "\u297b", - "supmult;": "\u2ac2", - "supnE;": "\u2acc", - "supne;": "\u228b", - "supplus;": "\u2ac0", - "supset;": "\u2283", - "supseteq;": "\u2287", - "supseteqq;": "\u2ac6", - "supsetneq;": "\u228b", - "supsetneqq;": "\u2acc", - "supsim;": "\u2ac8", - "supsub;": "\u2ad4", - "supsup;": "\u2ad6", - "swArr;": "\u21d9", - "swarhk;": "\u2926", - "swarr;": "\u2199", - "swarrow;": "\u2199", - "swnwar;": "\u292a", - "szlig": "\xdf", - "szlig;": "\xdf", - "target;": "\u2316", - "tau;": "\u03c4", - "tbrk;": "\u23b4", - "tcaron;": "\u0165", - "tcedil;": "\u0163", - "tcy;": "\u0442", - "tdot;": "\u20db", - "telrec;": "\u2315", - "tfr;": "\U0001d531", - "there4;": "\u2234", - "therefore;": "\u2234", - "theta;": "\u03b8", - "thetasym;": "\u03d1", - "thetav;": "\u03d1", - "thickapprox;": "\u2248", - "thicksim;": "\u223c", - "thinsp;": "\u2009", - "thkap;": "\u2248", - "thksim;": "\u223c", - "thorn": "\xfe", - "thorn;": "\xfe", - "tilde;": "\u02dc", - "times": "\xd7", - "times;": "\xd7", - "timesb;": "\u22a0", - "timesbar;": "\u2a31", - "timesd;": "\u2a30", - "tint;": "\u222d", - "toea;": "\u2928", - "top;": "\u22a4", - "topbot;": "\u2336", - "topcir;": "\u2af1", - "topf;": "\U0001d565", - "topfork;": "\u2ada", - "tosa;": "\u2929", - "tprime;": "\u2034", - "trade;": "\u2122", - "triangle;": "\u25b5", - "triangledown;": "\u25bf", - "triangleleft;": "\u25c3", - "trianglelefteq;": "\u22b4", - "triangleq;": "\u225c", - "triangleright;": "\u25b9", - "trianglerighteq;": "\u22b5", - "tridot;": "\u25ec", - "trie;": "\u225c", - "triminus;": "\u2a3a", - "triplus;": "\u2a39", - "trisb;": "\u29cd", - "tritime;": "\u2a3b", - "trpezium;": "\u23e2", - "tscr;": "\U0001d4c9", - "tscy;": "\u0446", - "tshcy;": "\u045b", - "tstrok;": "\u0167", - "twixt;": "\u226c", - "twoheadleftarrow;": "\u219e", - "twoheadrightarrow;": "\u21a0", - "uArr;": "\u21d1", - "uHar;": "\u2963", - "uacute": "\xfa", - "uacute;": "\xfa", - "uarr;": "\u2191", - "ubrcy;": "\u045e", - "ubreve;": "\u016d", - "ucirc": "\xfb", - "ucirc;": "\xfb", - "ucy;": "\u0443", - "udarr;": "\u21c5", - "udblac;": "\u0171", - "udhar;": "\u296e", - "ufisht;": "\u297e", - "ufr;": "\U0001d532", - "ugrave": "\xf9", - "ugrave;": "\xf9", - "uharl;": "\u21bf", - "uharr;": "\u21be", - "uhblk;": "\u2580", - "ulcorn;": "\u231c", - "ulcorner;": "\u231c", - "ulcrop;": "\u230f", - "ultri;": "\u25f8", - "umacr;": "\u016b", - "uml": "\xa8", - "uml;": "\xa8", - "uogon;": "\u0173", - "uopf;": "\U0001d566", - "uparrow;": "\u2191", - "updownarrow;": "\u2195", - "upharpoonleft;": "\u21bf", - "upharpoonright;": "\u21be", - "uplus;": "\u228e", - "upsi;": "\u03c5", - "upsih;": "\u03d2", - "upsilon;": "\u03c5", - "upuparrows;": "\u21c8", - "urcorn;": "\u231d", - "urcorner;": "\u231d", - "urcrop;": "\u230e", - "uring;": "\u016f", - "urtri;": "\u25f9", - "uscr;": "\U0001d4ca", - "utdot;": "\u22f0", - "utilde;": "\u0169", - "utri;": "\u25b5", - "utrif;": "\u25b4", - "uuarr;": "\u21c8", - "uuml": "\xfc", - "uuml;": "\xfc", - "uwangle;": "\u29a7", - "vArr;": "\u21d5", - "vBar;": "\u2ae8", - "vBarv;": "\u2ae9", - "vDash;": "\u22a8", - "vangrt;": "\u299c", - "varepsilon;": "\u03f5", - "varkappa;": "\u03f0", - "varnothing;": "\u2205", - "varphi;": "\u03d5", - "varpi;": "\u03d6", - "varpropto;": "\u221d", - "varr;": "\u2195", - "varrho;": "\u03f1", - "varsigma;": "\u03c2", - "varsubsetneq;": "\u228a\ufe00", - "varsubsetneqq;": "\u2acb\ufe00", - "varsupsetneq;": "\u228b\ufe00", - "varsupsetneqq;": "\u2acc\ufe00", - "vartheta;": "\u03d1", - "vartriangleleft;": "\u22b2", - "vartriangleright;": "\u22b3", - "vcy;": "\u0432", - "vdash;": "\u22a2", - "vee;": "\u2228", - "veebar;": "\u22bb", - "veeeq;": "\u225a", - "vellip;": "\u22ee", - "verbar;": "|", - "vert;": "|", - "vfr;": "\U0001d533", - "vltri;": "\u22b2", - "vnsub;": "\u2282\u20d2", - "vnsup;": "\u2283\u20d2", - "vopf;": "\U0001d567", - "vprop;": "\u221d", - "vrtri;": "\u22b3", - "vscr;": "\U0001d4cb", - "vsubnE;": "\u2acb\ufe00", - "vsubne;": "\u228a\ufe00", - "vsupnE;": "\u2acc\ufe00", - "vsupne;": "\u228b\ufe00", - "vzigzag;": "\u299a", - "wcirc;": "\u0175", - "wedbar;": "\u2a5f", - "wedge;": "\u2227", - "wedgeq;": "\u2259", - "weierp;": "\u2118", - "wfr;": "\U0001d534", - "wopf;": "\U0001d568", - "wp;": "\u2118", - "wr;": "\u2240", - "wreath;": "\u2240", - "wscr;": "\U0001d4cc", - "xcap;": "\u22c2", - "xcirc;": "\u25ef", - "xcup;": "\u22c3", - "xdtri;": "\u25bd", - "xfr;": "\U0001d535", - "xhArr;": "\u27fa", - "xharr;": "\u27f7", - "xi;": "\u03be", - "xlArr;": "\u27f8", - "xlarr;": "\u27f5", - "xmap;": "\u27fc", - "xnis;": "\u22fb", - "xodot;": "\u2a00", - "xopf;": "\U0001d569", - "xoplus;": "\u2a01", - "xotime;": "\u2a02", - "xrArr;": "\u27f9", - "xrarr;": "\u27f6", - "xscr;": "\U0001d4cd", - "xsqcup;": "\u2a06", - "xuplus;": "\u2a04", - "xutri;": "\u25b3", - "xvee;": "\u22c1", - "xwedge;": "\u22c0", - "yacute": "\xfd", - "yacute;": "\xfd", - "yacy;": "\u044f", - "ycirc;": "\u0177", - "ycy;": "\u044b", - "yen": "\xa5", - "yen;": "\xa5", - "yfr;": "\U0001d536", - "yicy;": "\u0457", - "yopf;": "\U0001d56a", - "yscr;": "\U0001d4ce", - "yucy;": "\u044e", - "yuml": "\xff", - "yuml;": "\xff", - "zacute;": "\u017a", - "zcaron;": "\u017e", - "zcy;": "\u0437", - "zdot;": "\u017c", - "zeetrf;": "\u2128", - "zeta;": "\u03b6", - "zfr;": "\U0001d537", - "zhcy;": "\u0436", - "zigrarr;": "\u21dd", - "zopf;": "\U0001d56b", - "zscr;": "\U0001d4cf", - "zwj;": "\u200d", - "zwnj;": "\u200c", -} - -replacementCharacters = { - 0x0: "\uFFFD", - 0x0d: "\u000D", - 0x80: "\u20AC", - 0x81: "\u0081", - 0x82: "\u201A", - 0x83: "\u0192", - 0x84: "\u201E", - 0x85: "\u2026", - 0x86: "\u2020", - 0x87: "\u2021", - 0x88: "\u02C6", - 0x89: "\u2030", - 0x8A: "\u0160", - 0x8B: "\u2039", - 0x8C: "\u0152", - 0x8D: "\u008D", - 0x8E: "\u017D", - 0x8F: "\u008F", - 0x90: "\u0090", - 0x91: "\u2018", - 0x92: "\u2019", - 0x93: "\u201C", - 0x94: "\u201D", - 0x95: "\u2022", - 0x96: "\u2013", - 0x97: "\u2014", - 0x98: "\u02DC", - 0x99: "\u2122", - 0x9A: "\u0161", - 0x9B: "\u203A", - 0x9C: "\u0153", - 0x9D: "\u009D", - 0x9E: "\u017E", - 0x9F: "\u0178", -} - -tokenTypes = { - "Doctype": 0, - "Characters": 1, - "SpaceCharacters": 2, - "StartTag": 3, - "EndTag": 4, - "EmptyTag": 5, - "Comment": 6, - "ParseError": 7 -} - -tagTokenTypes = frozenset([tokenTypes["StartTag"], tokenTypes["EndTag"], - tokenTypes["EmptyTag"]]) - - -prefixes = dict([(v, k) for k, v in namespaces.items()]) -prefixes["http://www.w3.org/1998/Math/MathML"] = "math" - - -class DataLossWarning(UserWarning): - pass - - -class ReparseException(Exception): - pass diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e021c19ca25ed0da6fd6eec8943a4be51eb6d325..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmXr!<>hK*zZA&;1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnuL}KwqRg_yl2rY& z#3KE){G623qGJ7cGyU`=6LX`SBug{X6iXA+c*FR#WU~^ZToVHzNYB#`(J#m>&`m1M z%t_HTNlPy=Ny#t-34w8ZS!!NNevy7gNp6m5PG*vRT4qiO*xdNcyv&mLc)fzkTO2mI Q`6;D2sdgY26$3E?07(@!{{R30 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/alphabeticalattributes.cpython-36.pyc deleted file mode 100644 index 07fda58ff6188159c870503563670a4f2576833d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1074 zcmZuw%}yIJ5VpNPSrRBI;=-*xMk;KffeI-?JwU5oXjM=tt5z#-?7$LlHrP%?P&ibe z-ufVYogRJdiC5^UGn>+)s$O|K>#@I?Z^rX%VWIxH_WihEg!~})#ysdRV4719f(WWe zK@(cAgcV-mQ6iY|lwSl%K*^*DCwvtawWLPL5g9!4iH!Pn{gx8^D(l?LdQ1lF19?S6 zAi^6WLK&RZuf3!$Y6qkh-GVpL^4ucNOsPgzrg*v-4Pi+FbfILn1xc8og58kB6CU{YUHCFr0NX`O z9Kr92Kvga-GE2_r8Jm)8x=TL2yP{Jn=n4^0Kh%l!uE`a%2*eZ$wt^sRU!(CG=7(PB1<)(;^GiI``IuW7kGYO}rGk{1INgd* zvi9>0m2GcritYAhx}NsBTXv&pKZS8Jh!5joK3vU4xe}}G-id9C({{>_tKM9?J=*bt@(g3u*8Peb~EF2fqp%f)}<-G^rc5g=Zgx_X)x zr5GvH=hO6j#MR7Fq2BXU)uwWX9FUX2nntwZwBKqVRBvQQ8lW_qw1>h6;Yh{aHM*rz xvTLDF%#3^Eb=5z6T9-O$l(Wtd&>0o#|J*}KW&!Wu%Q47%nawjsn?QNV`vqX{1wsG- diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/base.cpython-36.pyc deleted file mode 100644 index 147a0660fc537a6fe1512f01482990e6699ad204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmZuv!EV$r5VhlMHf&ohLYz5qAcr=z>@KQQp-M<_>jf_4VkNP&b>$?B?W_daOSSzO zeurbOocIM!%sAa@ix_EU9Q%3Rym8(f9Zhb>Kfk=7g#03V7Q*@x+`fV!h@hI(G^2Hp z1vSeUB_D|h1iK@G$#BcEkqAGLWb_-*Bw_tDFKnwjC%LLut#N%U)LL29HvQACQDrM6 z*UCwgYg^)-odvMC1h+3CNRm-OvOrJ~+>wk4CPK)e7>Nk-NQ{9q?xPP%L#Yz)qG3jV z4{j$AHgrQcr~ov*N@yS1wlk$nfq`uwxuArOTbWCk;GlA2xX{|D`_Q z{2t5s!5;gw2el8!S4o7OVinH&3FmbyI*sc?&cAlK9!?CtvBAE~6a#A73nrXdMQ;D91=*h9LsO@b;4szh5ZD5_|b!c!~j?b^HhHt*m1 zd6y)58wqVcKu(-0#FZ~lap2H1M-Ci(1ccPDz=^SU3tNPrJocLz|2#9EnOjRs^>6%N zzIstd=y$X*DD3aTEDwNi#BqXB9O9IOBy~auBTl%J(9{iGj6Or0a`zeHu5bt5)CoQA zJwi?Y6`Vy)M_-NFWuA6=OOO85kO8J#dJYBI#A2mAc?-afm*x}5`cGu`_DMlWj}wTigd zZI9xF@9uSbYLEAC7?z!EEHa+UR$rybeiFA^UF%)hinD>}D3%Hpu}(jdrBK(4GZ}y- z#`@B{BErk~{OT+o*I#?nF;O-H-W?flJ21;XfXnd&S7-oleiBSb4^5m)eEPG3U=5rK zP4PW+iJ$&Bp%vw13r*b0<<1F_58(V4PY&<>+^rR2DU2yQ^?Q}ppe}p|5`}xLc>W*?G$;Ty{IUl z#F}+!>Os4uf(j1nwywJQDC62UawvZ7s{BM`*0S)OepE8!H?w}TxueXwT{B@UiwGKo zaZS79C>aUcC1zv^xYG2ZD=^D1fgntA9aFM_1Nc^OKR=pzY2Sg zY=dkWI4d9n321MU2KFo`m}vvAK^Dv3#^A8&n$Bh{gn-l;OLIO-%)Y_ca1?S3z zl$5=)nHOPR@hTv@y=qvQP_Oa{;U!)^BfK0Id$oz>)p%u#w5u<{8fja)5$wt=9;(of zl0hbvc6oFZ$tX+p(lCv>84vw9QlSW9*`~Ur!eiyDlR@~B;ssROyMYW}GMq47PJ<+r zgPY0YCW`bRqF5Cm!R4XJn6Z#;voG z2flOXjCl4lViV5+FN(VGAd2C#?XG1G6N2Ns$!joCM9~qMupS%H38iGjM#Q%`f#dXH z+t!X84niRyEJVA$AElAvOeiEqeL6q+MD%h96mo3A1PZwl16x~oP!6{_L z_q%Z*rSJbl{!yKQh>ijkc8&tk*~?-M&UXCu&i?M&`?urWyX$xO-L*UZEq|}Ou5Kr5 z@4~mAcD6f%XmE3P7{&bN+TOle;|I5J$u$2cOnD|c2P%p0#L;eN&-g7nag?gn!HH-9 z67)eD9_bQ2ZRFIf&VA})!0;|HO-1gmkUkSX!&$dqfYIVspUGcvS6YP`o6mAt=n?6apr^g^ z$R0U+41;|<0GwcB96-(KMC@Wo>?rRm>*sMKduChGss7Mwm?uzF_hHH?Ag``Nv7t3Mj;-0JguZx!sw z-(K+qk$I6bg%U4MnJg=ZS9o>gM6?MJ1=ij~hNhO-0FJ5?GA@paIa7euk{ft4pkD{{ zHG_UF=Wgr*Ru{co*tG<^uE2|6;_N@WnA|ZaU5qp!;bvy>2HFAZZm*{56AIe%8`EFm zz9nPzFSsv%Sq{D|IRAY9f{ct2V*J7i5#{XrbUp0Dsp9{XHO<>os#V>O@vgYiL*bbrOaQQLdg4A;Lp|&wgYIjQoLTv~8 z+TBbB>I9|Id6v{RilPdCqPBUU0&U|Tt_zzfhn){jS9c(Zw!%D%wnT_2I^?ZDw(=b< zmG#5)UhBr&ke}L8TQKP2{Vc((tIG@7wy}k2d10Zrk#%#3gW+x*bwB0Wl_ye#2}l4y zMe4+BY=t5U;^;IKn?hvb^!n#%Kh3^QbHgpXz*vW|E!#|70awIT=s<3v{07PmQAGJX z$wJD8BwL0$lS&n&kV!Ei>H5b~hC)H{F~)$BsH+6#D^bP{)2%K9g8?K%?LbvZz~ezS zfF!O&G!PZgw@cyz3|=jRUH*(YsU1U$J)8UGsU1Ud>OL^<~rJzVdA6HTpVj z!783>T1~c?zYSe&y4@~diNYs??D>9@@nMW|)%OpFL7Zz$Eik}!ZC04NVI2GZE8p5w zTmpB5aS@|}FVK_@m)30)r-$u2n%EnvA(TO1V1*Z0Sp`-Y-GIupI;%>nGCDQ^G!NN? uT9>++39XU~@x%CNyO%|&G4TpdE+HE2evo_hA(ktNxRzNJ*j<8Fw*Cc6tYhW? diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/optionaltags.cpython-36.pyc deleted file mode 100644 index 4d280ca265c7a6a25916ecf0975807da8733a984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3047 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 Ihosnl0AFYJ?*IS* diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__pycache__/whitespace.cpython-36.pyc deleted file mode 100644 index cb13bc7c22fc4c1d38916ee51c9259e47defa33c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1279 zcmZ8g&2Jk;6rY*>@b1QrqbQ^V5JE_muu!|SIB6?Y6%b5sQH3KYi>lRnXY8yq`_Y-P zNh9Zg(i49`51hI1?{J(er~C^&@!p!YQOA1YeP8q5?|ppT>qWnJ{`p0_g#1gc9pK3~ zK)Qm96HX;5X+leuu+m8!iZUkM#N`fmrC0ii4>FJYvQq|0P=-ked}khs@RBB>aOWF5 z5aBKXuKSqqkVh{GkAy$(T{=mRZ}9F*l5BD|CWGD;#3Td9_Opqu<-&-xD4SXt8}MRT z=%TLd)}ku%nu}BxMyO2cqbrI|)Vh;Qiz|iSq^^M zl5_9ZoBG+8Ifi_5-h%%EB!VQAlY|L}Q_f~gxWc=nHxP)A;34e}_aJTG`acvBUbRl6 zgbj>1Gno=uj)~#HXOS?L{tGTnFX-8yhRo@lt>D4$$+JH$*otwsM=qR|!<|#6zFSd! zA7t(xS&_MO>Z62v_s9jUj={zUo2M&^#J&3{eYB!oqRv3q0o@t+27AEs5WgOh>eE*L z3iJ`^Um168aY@(u75j-$@_hSe=rO?BI8q3}y5>a#sK$WF9A`7@R#_>Ohbn(maTN8( z?^V~u;=iV!+2~!#2cGi5No}BKkfzwbG_@bJoq3{!7HTQpH7u{C%o;7yR<8%Hb+wSw zB!C*Xrq(m{si@Q@y!SUzAH(14^SDvPGBYAxW-6Z6l0&cK^dO#1hWGBu$%BJ^{$RMD z-bttVfw@}_zk)NX;^Vj}np=}aA^EN0bY_P9W-g$dpH`WKaL)co?1sQCb(}n=kEvn5FBpeYq*Dm zD&z-!L^WNQg#uIxH439DOv*APRD>K3hYj<((k6qIUBe4e=+5h+vYosxn?efpIa(vK i_VsHS;0P$hZG(sFB0fTd8Yg6j1<-~qXvC(oz4sqHu00z7 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py deleted file mode 100644 index 4795bae..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +++ /dev/null @@ -1,20 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from . import base - -try: - from collections import OrderedDict -except ImportError: - from ordereddict import OrderedDict - - -class Filter(base.Filter): - def __iter__(self): - for token in base.Filter.__iter__(self): - if token["type"] in ("StartTag", "EmptyTag"): - attrs = OrderedDict() - for name, value in sorted(token["data"].items(), - key=lambda x: x[0]): - attrs[name] = value - token["data"] = attrs - yield token diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/base.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/base.py deleted file mode 100644 index c7dbaed..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/base.py +++ /dev/null @@ -1,12 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - - -class Filter(object): - def __init__(self, source): - self.source = source - - def __iter__(self): - return iter(self.source) - - def __getattr__(self, name): - return getattr(self.source, name) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py deleted file mode 100644 index 2059ec8..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +++ /dev/null @@ -1,65 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from . import base - - -class Filter(base.Filter): - def __init__(self, source, encoding): - base.Filter.__init__(self, source) - self.encoding = encoding - - def __iter__(self): - state = "pre_head" - meta_found = (self.encoding is None) - pending = [] - - for token in base.Filter.__iter__(self): - type = token["type"] - if type == "StartTag": - if token["name"].lower() == "head": - state = "in_head" - - elif type == "EmptyTag": - if token["name"].lower() == "meta": - # replace charset with actual encoding - has_http_equiv_content_type = False - for (namespace, name), value in token["data"].items(): - if namespace is not None: - continue - elif name.lower() == 'charset': - token["data"][(namespace, name)] = self.encoding - meta_found = True - break - elif name == 'http-equiv' and value.lower() == 'content-type': - has_http_equiv_content_type = True - else: - if has_http_equiv_content_type and (None, "content") in token["data"]: - token["data"][(None, "content")] = 'text/html; charset=%s' % self.encoding - meta_found = True - - elif token["name"].lower() == "head" and not meta_found: - # insert meta into empty head - yield {"type": "StartTag", "name": "head", - "data": token["data"]} - yield {"type": "EmptyTag", "name": "meta", - "data": {(None, "charset"): self.encoding}} - yield {"type": "EndTag", "name": "head"} - meta_found = True - continue - - elif type == "EndTag": - if token["name"].lower() == "head" and pending: - # insert meta into head (if necessary) and flush pending queue - yield pending.pop(0) - if not meta_found: - yield {"type": "EmptyTag", "name": "meta", - "data": {(None, "charset"): self.encoding}} - while pending: - yield pending.pop(0) - meta_found = True - state = "post_head" - - if state == "in_head": - pending.append(token) - else: - yield token diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/lint.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/lint.py deleted file mode 100644 index 3b892c8..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/lint.py +++ /dev/null @@ -1,81 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from pip._vendor.six import text_type - -from . import base -from ..constants import namespaces, voidElements - -from ..constants import spaceCharacters -spaceCharacters = "".join(spaceCharacters) - - -class Filter(base.Filter): - def __init__(self, source, require_matching_tags=True): - super(Filter, self).__init__(source) - self.require_matching_tags = require_matching_tags - - def __iter__(self): - open_elements = [] - for token in base.Filter.__iter__(self): - type = token["type"] - if type in ("StartTag", "EmptyTag"): - namespace = token["namespace"] - name = token["name"] - assert namespace is None or isinstance(namespace, text_type) - assert namespace != "" - assert isinstance(name, text_type) - assert name != "" - assert isinstance(token["data"], dict) - if (not namespace or namespace == namespaces["html"]) and name in voidElements: - assert type == "EmptyTag" - else: - assert type == "StartTag" - if type == "StartTag" and self.require_matching_tags: - open_elements.append((namespace, name)) - for (namespace, name), value in token["data"].items(): - assert namespace is None or isinstance(namespace, text_type) - assert namespace != "" - assert isinstance(name, text_type) - assert name != "" - assert isinstance(value, text_type) - - elif type == "EndTag": - namespace = token["namespace"] - name = token["name"] - assert namespace is None or isinstance(namespace, text_type) - assert namespace != "" - assert isinstance(name, text_type) - assert name != "" - if (not namespace or namespace == namespaces["html"]) and name in voidElements: - assert False, "Void element reported as EndTag token: %(tag)s" % {"tag": name} - elif self.require_matching_tags: - start = open_elements.pop() - assert start == (namespace, name) - - elif type == "Comment": - data = token["data"] - assert isinstance(data, text_type) - - elif type in ("Characters", "SpaceCharacters"): - data = token["data"] - assert isinstance(data, text_type) - assert data != "" - if type == "SpaceCharacters": - assert data.strip(spaceCharacters) == "" - - elif type == "Doctype": - name = token["name"] - assert name is None or isinstance(name, text_type) - assert token["publicId"] is None or isinstance(name, text_type) - assert token["systemId"] is None or isinstance(name, text_type) - - elif type == "Entity": - assert isinstance(token["name"], text_type) - - elif type == "SerializerError": - assert isinstance(token["data"], text_type) - - else: - assert False, "Unknown token type: %(type)s" % {"type": type} - - yield token diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/optionaltags.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/optionaltags.py deleted file mode 100644 index f6edb73..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +++ /dev/null @@ -1,206 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -from . import base - - -class Filter(base.Filter): - def slider(self): - previous1 = previous2 = None - for token in self.source: - if previous1 is not None: - yield previous2, previous1, token - previous2 = previous1 - previous1 = token - if previous1 is not None: - yield previous2, previous1, None - - def __iter__(self): - for previous, token, next in self.slider(): - type = token["type"] - if type == "StartTag": - if (token["data"] or - not self.is_optional_start(token["name"], previous, next)): - yield token - elif type == "EndTag": - if not self.is_optional_end(token["name"], next): - yield token - else: - yield token - - def is_optional_start(self, tagname, previous, next): - type = next and next["type"] or None - if tagname in 'html': - # An html element's start tag may be omitted if the first thing - # inside the html element is not a space character or a comment. - return type not in ("Comment", "SpaceCharacters") - elif tagname == 'head': - # A head element's start tag may be omitted if the first thing - # inside the head element is an element. - # XXX: we also omit the start tag if the head element is empty - if type in ("StartTag", "EmptyTag"): - return True - elif type == "EndTag": - return next["name"] == "head" - elif tagname == 'body': - # A body element's start tag may be omitted if the first thing - # inside the body element is not a space character or a comment, - # except if the first thing inside the body element is a script - # or style element and the node immediately preceding the body - # element is a head element whose end tag has been omitted. - if type in ("Comment", "SpaceCharacters"): - return False - elif type == "StartTag": - # XXX: we do not look at the preceding event, so we never omit - # the body element's start tag if it's followed by a script or - # a style element. - return next["name"] not in ('script', 'style') - else: - return True - elif tagname == 'colgroup': - # A colgroup element's start tag may be omitted if the first thing - # inside the colgroup element is a col element, and if the element - # is not immediately preceded by another colgroup element whose - # end tag has been omitted. - if type in ("StartTag", "EmptyTag"): - # XXX: we do not look at the preceding event, so instead we never - # omit the colgroup element's end tag when it is immediately - # followed by another colgroup element. See is_optional_end. - return next["name"] == "col" - else: - return False - elif tagname == 'tbody': - # A tbody element's start tag may be omitted if the first thing - # inside the tbody element is a tr element, and if the element is - # not immediately preceded by a tbody, thead, or tfoot element - # whose end tag has been omitted. - if type == "StartTag": - # omit the thead and tfoot elements' end tag when they are - # immediately followed by a tbody element. See is_optional_end. - if previous and previous['type'] == 'EndTag' and \ - previous['name'] in ('tbody', 'thead', 'tfoot'): - return False - return next["name"] == 'tr' - else: - return False - return False - - def is_optional_end(self, tagname, next): - type = next and next["type"] or None - if tagname in ('html', 'head', 'body'): - # An html element's end tag may be omitted if the html element - # is not immediately followed by a space character or a comment. - return type not in ("Comment", "SpaceCharacters") - elif tagname in ('li', 'optgroup', 'tr'): - # A li element's end tag may be omitted if the li element is - # immediately followed by another li element or if there is - # no more content in the parent element. - # An optgroup element's end tag may be omitted if the optgroup - # element is immediately followed by another optgroup element, - # or if there is no more content in the parent element. - # A tr element's end tag may be omitted if the tr element is - # immediately followed by another tr element, or if there is - # no more content in the parent element. - if type == "StartTag": - return next["name"] == tagname - else: - return type == "EndTag" or type is None - elif tagname in ('dt', 'dd'): - # A dt element's end tag may be omitted if the dt element is - # immediately followed by another dt element or a dd element. - # A dd element's end tag may be omitted if the dd element is - # immediately followed by another dd element or a dt element, - # or if there is no more content in the parent element. - if type == "StartTag": - return next["name"] in ('dt', 'dd') - elif tagname == 'dd': - return type == "EndTag" or type is None - else: - return False - elif tagname == 'p': - # A p element's end tag may be omitted if the p element is - # immediately followed by an address, article, aside, - # blockquote, datagrid, dialog, dir, div, dl, fieldset, - # footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, - # nav, ol, p, pre, section, table, or ul, element, or if - # there is no more content in the parent element. - if type in ("StartTag", "EmptyTag"): - return next["name"] in ('address', 'article', 'aside', - 'blockquote', 'datagrid', 'dialog', - 'dir', 'div', 'dl', 'fieldset', 'footer', - 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', - 'header', 'hr', 'menu', 'nav', 'ol', - 'p', 'pre', 'section', 'table', 'ul') - else: - return type == "EndTag" or type is None - elif tagname == 'option': - # An option element's end tag may be omitted if the option - # element is immediately followed by another option element, - # or if it is immediately followed by an optgroup - # element, or if there is no more content in the parent - # element. - if type == "StartTag": - return next["name"] in ('option', 'optgroup') - else: - return type == "EndTag" or type is None - elif tagname in ('rt', 'rp'): - # An rt element's end tag may be omitted if the rt element is - # immediately followed by an rt or rp element, or if there is - # no more content in the parent element. - # An rp element's end tag may be omitted if the rp element is - # immediately followed by an rt or rp element, or if there is - # no more content in the parent element. - if type == "StartTag": - return next["name"] in ('rt', 'rp') - else: - return type == "EndTag" or type is None - elif tagname == 'colgroup': - # A colgroup element's end tag may be omitted if the colgroup - # element is not immediately followed by a space character or - # a comment. - if type in ("Comment", "SpaceCharacters"): - return False - elif type == "StartTag": - # XXX: we also look for an immediately following colgroup - # element. See is_optional_start. - return next["name"] != 'colgroup' - else: - return True - elif tagname in ('thead', 'tbody'): - # A thead element's end tag may be omitted if the thead element - # is immediately followed by a tbody or tfoot element. - # A tbody element's end tag may be omitted if the tbody element - # is immediately followed by a tbody or tfoot element, or if - # there is no more content in the parent element. - # A tfoot element's end tag may be omitted if the tfoot element - # is immediately followed by a tbody element, or if there is no - # more content in the parent element. - # XXX: we never omit the end tag when the following element is - # a tbody. See is_optional_start. - if type == "StartTag": - return next["name"] in ['tbody', 'tfoot'] - elif tagname == 'tbody': - return type == "EndTag" or type is None - else: - return False - elif tagname == 'tfoot': - # A tfoot element's end tag may be omitted if the tfoot element - # is immediately followed by a tbody element, or if there is no - # more content in the parent element. - # XXX: we never omit the end tag when the following element is - # a tbody. See is_optional_start. - if type == "StartTag": - return next["name"] == 'tbody' - else: - return type == "EndTag" or type is None - elif tagname in ('td', 'th'): - # A td element's end tag may be omitted if the td element is - # immediately followed by a td or th element, or if there is - # no more content in the parent element. - # A th element's end tag may be omitted if the th element is - # immediately followed by a td or th element, or if there is - # no more content in the parent element. - if type == "StartTag": - return next["name"] in ('td', 'th') - else: - return type == "EndTag" or type is None - return False diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/sanitizer.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/sanitizer.py deleted file mode 100644 index 026748d..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +++ /dev/null @@ -1,865 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -import re -from xml.sax.saxutils import escape, unescape - -from pip._vendor.six.moves import urllib_parse as urlparse - -from . import base -from ..constants import namespaces, prefixes - -__all__ = ["Filter"] - - -allowed_elements = frozenset(( - (namespaces['html'], 'a'), - (namespaces['html'], 'abbr'), - (namespaces['html'], 'acronym'), - (namespaces['html'], 'address'), - (namespaces['html'], 'area'), - (namespaces['html'], 'article'), - (namespaces['html'], 'aside'), - (namespaces['html'], 'audio'), - (namespaces['html'], 'b'), - (namespaces['html'], 'big'), - (namespaces['html'], 'blockquote'), - (namespaces['html'], 'br'), - (namespaces['html'], 'button'), - (namespaces['html'], 'canvas'), - (namespaces['html'], 'caption'), - (namespaces['html'], 'center'), - (namespaces['html'], 'cite'), - (namespaces['html'], 'code'), - (namespaces['html'], 'col'), - (namespaces['html'], 'colgroup'), - (namespaces['html'], 'command'), - (namespaces['html'], 'datagrid'), - (namespaces['html'], 'datalist'), - (namespaces['html'], 'dd'), - (namespaces['html'], 'del'), - (namespaces['html'], 'details'), - (namespaces['html'], 'dfn'), - (namespaces['html'], 'dialog'), - (namespaces['html'], 'dir'), - (namespaces['html'], 'div'), - (namespaces['html'], 'dl'), - (namespaces['html'], 'dt'), - (namespaces['html'], 'em'), - (namespaces['html'], 'event-source'), - (namespaces['html'], 'fieldset'), - (namespaces['html'], 'figcaption'), - (namespaces['html'], 'figure'), - (namespaces['html'], 'footer'), - (namespaces['html'], 'font'), - (namespaces['html'], 'form'), - (namespaces['html'], 'header'), - (namespaces['html'], 'h1'), - (namespaces['html'], 'h2'), - (namespaces['html'], 'h3'), - (namespaces['html'], 'h4'), - (namespaces['html'], 'h5'), - (namespaces['html'], 'h6'), - (namespaces['html'], 'hr'), - (namespaces['html'], 'i'), - (namespaces['html'], 'img'), - (namespaces['html'], 'input'), - (namespaces['html'], 'ins'), - (namespaces['html'], 'keygen'), - (namespaces['html'], 'kbd'), - (namespaces['html'], 'label'), - (namespaces['html'], 'legend'), - (namespaces['html'], 'li'), - (namespaces['html'], 'm'), - (namespaces['html'], 'map'), - (namespaces['html'], 'menu'), - (namespaces['html'], 'meter'), - (namespaces['html'], 'multicol'), - (namespaces['html'], 'nav'), - (namespaces['html'], 'nextid'), - (namespaces['html'], 'ol'), - (namespaces['html'], 'output'), - (namespaces['html'], 'optgroup'), - (namespaces['html'], 'option'), - (namespaces['html'], 'p'), - (namespaces['html'], 'pre'), - (namespaces['html'], 'progress'), - (namespaces['html'], 'q'), - (namespaces['html'], 's'), - (namespaces['html'], 'samp'), - (namespaces['html'], 'section'), - (namespaces['html'], 'select'), - (namespaces['html'], 'small'), - (namespaces['html'], 'sound'), - (namespaces['html'], 'source'), - (namespaces['html'], 'spacer'), - (namespaces['html'], 'span'), - (namespaces['html'], 'strike'), - (namespaces['html'], 'strong'), - (namespaces['html'], 'sub'), - (namespaces['html'], 'sup'), - (namespaces['html'], 'table'), - (namespaces['html'], 'tbody'), - (namespaces['html'], 'td'), - (namespaces['html'], 'textarea'), - (namespaces['html'], 'time'), - (namespaces['html'], 'tfoot'), - (namespaces['html'], 'th'), - (namespaces['html'], 'thead'), - (namespaces['html'], 'tr'), - (namespaces['html'], 'tt'), - (namespaces['html'], 'u'), - (namespaces['html'], 'ul'), - (namespaces['html'], 'var'), - (namespaces['html'], 'video'), - (namespaces['mathml'], 'maction'), - (namespaces['mathml'], 'math'), - (namespaces['mathml'], 'merror'), - (namespaces['mathml'], 'mfrac'), - (namespaces['mathml'], 'mi'), - (namespaces['mathml'], 'mmultiscripts'), - (namespaces['mathml'], 'mn'), - (namespaces['mathml'], 'mo'), - (namespaces['mathml'], 'mover'), - (namespaces['mathml'], 'mpadded'), - (namespaces['mathml'], 'mphantom'), - (namespaces['mathml'], 'mprescripts'), - (namespaces['mathml'], 'mroot'), - (namespaces['mathml'], 'mrow'), - (namespaces['mathml'], 'mspace'), - (namespaces['mathml'], 'msqrt'), - (namespaces['mathml'], 'mstyle'), - (namespaces['mathml'], 'msub'), - (namespaces['mathml'], 'msubsup'), - (namespaces['mathml'], 'msup'), - (namespaces['mathml'], 'mtable'), - (namespaces['mathml'], 'mtd'), - (namespaces['mathml'], 'mtext'), - (namespaces['mathml'], 'mtr'), - (namespaces['mathml'], 'munder'), - (namespaces['mathml'], 'munderover'), - (namespaces['mathml'], 'none'), - (namespaces['svg'], 'a'), - (namespaces['svg'], 'animate'), - (namespaces['svg'], 'animateColor'), - (namespaces['svg'], 'animateMotion'), - (namespaces['svg'], 'animateTransform'), - (namespaces['svg'], 'clipPath'), - (namespaces['svg'], 'circle'), - (namespaces['svg'], 'defs'), - (namespaces['svg'], 'desc'), - (namespaces['svg'], 'ellipse'), - (namespaces['svg'], 'font-face'), - (namespaces['svg'], 'font-face-name'), - (namespaces['svg'], 'font-face-src'), - (namespaces['svg'], 'g'), - (namespaces['svg'], 'glyph'), - (namespaces['svg'], 'hkern'), - (namespaces['svg'], 'linearGradient'), - (namespaces['svg'], 'line'), - (namespaces['svg'], 'marker'), - (namespaces['svg'], 'metadata'), - (namespaces['svg'], 'missing-glyph'), - (namespaces['svg'], 'mpath'), - (namespaces['svg'], 'path'), - (namespaces['svg'], 'polygon'), - (namespaces['svg'], 'polyline'), - (namespaces['svg'], 'radialGradient'), - (namespaces['svg'], 'rect'), - (namespaces['svg'], 'set'), - (namespaces['svg'], 'stop'), - (namespaces['svg'], 'svg'), - (namespaces['svg'], 'switch'), - (namespaces['svg'], 'text'), - (namespaces['svg'], 'title'), - (namespaces['svg'], 'tspan'), - (namespaces['svg'], 'use'), -)) - -allowed_attributes = frozenset(( - # HTML attributes - (None, 'abbr'), - (None, 'accept'), - (None, 'accept-charset'), - (None, 'accesskey'), - (None, 'action'), - (None, 'align'), - (None, 'alt'), - (None, 'autocomplete'), - (None, 'autofocus'), - (None, 'axis'), - (None, 'background'), - (None, 'balance'), - (None, 'bgcolor'), - (None, 'bgproperties'), - (None, 'border'), - (None, 'bordercolor'), - (None, 'bordercolordark'), - (None, 'bordercolorlight'), - (None, 'bottompadding'), - (None, 'cellpadding'), - (None, 'cellspacing'), - (None, 'ch'), - (None, 'challenge'), - (None, 'char'), - (None, 'charoff'), - (None, 'choff'), - (None, 'charset'), - (None, 'checked'), - (None, 'cite'), - (None, 'class'), - (None, 'clear'), - (None, 'color'), - (None, 'cols'), - (None, 'colspan'), - (None, 'compact'), - (None, 'contenteditable'), - (None, 'controls'), - (None, 'coords'), - (None, 'data'), - (None, 'datafld'), - (None, 'datapagesize'), - (None, 'datasrc'), - (None, 'datetime'), - (None, 'default'), - (None, 'delay'), - (None, 'dir'), - (None, 'disabled'), - (None, 'draggable'), - (None, 'dynsrc'), - (None, 'enctype'), - (None, 'end'), - (None, 'face'), - (None, 'for'), - (None, 'form'), - (None, 'frame'), - (None, 'galleryimg'), - (None, 'gutter'), - (None, 'headers'), - (None, 'height'), - (None, 'hidefocus'), - (None, 'hidden'), - (None, 'high'), - (None, 'href'), - (None, 'hreflang'), - (None, 'hspace'), - (None, 'icon'), - (None, 'id'), - (None, 'inputmode'), - (None, 'ismap'), - (None, 'keytype'), - (None, 'label'), - (None, 'leftspacing'), - (None, 'lang'), - (None, 'list'), - (None, 'longdesc'), - (None, 'loop'), - (None, 'loopcount'), - (None, 'loopend'), - (None, 'loopstart'), - (None, 'low'), - (None, 'lowsrc'), - (None, 'max'), - (None, 'maxlength'), - (None, 'media'), - (None, 'method'), - (None, 'min'), - (None, 'multiple'), - (None, 'name'), - (None, 'nohref'), - (None, 'noshade'), - (None, 'nowrap'), - (None, 'open'), - (None, 'optimum'), - (None, 'pattern'), - (None, 'ping'), - (None, 'point-size'), - (None, 'poster'), - (None, 'pqg'), - (None, 'preload'), - (None, 'prompt'), - (None, 'radiogroup'), - (None, 'readonly'), - (None, 'rel'), - (None, 'repeat-max'), - (None, 'repeat-min'), - (None, 'replace'), - (None, 'required'), - (None, 'rev'), - (None, 'rightspacing'), - (None, 'rows'), - (None, 'rowspan'), - (None, 'rules'), - (None, 'scope'), - (None, 'selected'), - (None, 'shape'), - (None, 'size'), - (None, 'span'), - (None, 'src'), - (None, 'start'), - (None, 'step'), - (None, 'style'), - (None, 'summary'), - (None, 'suppress'), - (None, 'tabindex'), - (None, 'target'), - (None, 'template'), - (None, 'title'), - (None, 'toppadding'), - (None, 'type'), - (None, 'unselectable'), - (None, 'usemap'), - (None, 'urn'), - (None, 'valign'), - (None, 'value'), - (None, 'variable'), - (None, 'volume'), - (None, 'vspace'), - (None, 'vrml'), - (None, 'width'), - (None, 'wrap'), - (namespaces['xml'], 'lang'), - # MathML attributes - (None, 'actiontype'), - (None, 'align'), - (None, 'columnalign'), - (None, 'columnalign'), - (None, 'columnalign'), - (None, 'columnlines'), - (None, 'columnspacing'), - (None, 'columnspan'), - (None, 'depth'), - (None, 'display'), - (None, 'displaystyle'), - (None, 'equalcolumns'), - (None, 'equalrows'), - (None, 'fence'), - (None, 'fontstyle'), - (None, 'fontweight'), - (None, 'frame'), - (None, 'height'), - (None, 'linethickness'), - (None, 'lspace'), - (None, 'mathbackground'), - (None, 'mathcolor'), - (None, 'mathvariant'), - (None, 'mathvariant'), - (None, 'maxsize'), - (None, 'minsize'), - (None, 'other'), - (None, 'rowalign'), - (None, 'rowalign'), - (None, 'rowalign'), - (None, 'rowlines'), - (None, 'rowspacing'), - (None, 'rowspan'), - (None, 'rspace'), - (None, 'scriptlevel'), - (None, 'selection'), - (None, 'separator'), - (None, 'stretchy'), - (None, 'width'), - (None, 'width'), - (namespaces['xlink'], 'href'), - (namespaces['xlink'], 'show'), - (namespaces['xlink'], 'type'), - # SVG attributes - (None, 'accent-height'), - (None, 'accumulate'), - (None, 'additive'), - (None, 'alphabetic'), - (None, 'arabic-form'), - (None, 'ascent'), - (None, 'attributeName'), - (None, 'attributeType'), - (None, 'baseProfile'), - (None, 'bbox'), - (None, 'begin'), - (None, 'by'), - (None, 'calcMode'), - (None, 'cap-height'), - (None, 'class'), - (None, 'clip-path'), - (None, 'color'), - (None, 'color-rendering'), - (None, 'content'), - (None, 'cx'), - (None, 'cy'), - (None, 'd'), - (None, 'dx'), - (None, 'dy'), - (None, 'descent'), - (None, 'display'), - (None, 'dur'), - (None, 'end'), - (None, 'fill'), - (None, 'fill-opacity'), - (None, 'fill-rule'), - (None, 'font-family'), - (None, 'font-size'), - (None, 'font-stretch'), - (None, 'font-style'), - (None, 'font-variant'), - (None, 'font-weight'), - (None, 'from'), - (None, 'fx'), - (None, 'fy'), - (None, 'g1'), - (None, 'g2'), - (None, 'glyph-name'), - (None, 'gradientUnits'), - (None, 'hanging'), - (None, 'height'), - (None, 'horiz-adv-x'), - (None, 'horiz-origin-x'), - (None, 'id'), - (None, 'ideographic'), - (None, 'k'), - (None, 'keyPoints'), - (None, 'keySplines'), - (None, 'keyTimes'), - (None, 'lang'), - (None, 'marker-end'), - (None, 'marker-mid'), - (None, 'marker-start'), - (None, 'markerHeight'), - (None, 'markerUnits'), - (None, 'markerWidth'), - (None, 'mathematical'), - (None, 'max'), - (None, 'min'), - (None, 'name'), - (None, 'offset'), - (None, 'opacity'), - (None, 'orient'), - (None, 'origin'), - (None, 'overline-position'), - (None, 'overline-thickness'), - (None, 'panose-1'), - (None, 'path'), - (None, 'pathLength'), - (None, 'points'), - (None, 'preserveAspectRatio'), - (None, 'r'), - (None, 'refX'), - (None, 'refY'), - (None, 'repeatCount'), - (None, 'repeatDur'), - (None, 'requiredExtensions'), - (None, 'requiredFeatures'), - (None, 'restart'), - (None, 'rotate'), - (None, 'rx'), - (None, 'ry'), - (None, 'slope'), - (None, 'stemh'), - (None, 'stemv'), - (None, 'stop-color'), - (None, 'stop-opacity'), - (None, 'strikethrough-position'), - (None, 'strikethrough-thickness'), - (None, 'stroke'), - (None, 'stroke-dasharray'), - (None, 'stroke-dashoffset'), - (None, 'stroke-linecap'), - (None, 'stroke-linejoin'), - (None, 'stroke-miterlimit'), - (None, 'stroke-opacity'), - (None, 'stroke-width'), - (None, 'systemLanguage'), - (None, 'target'), - (None, 'text-anchor'), - (None, 'to'), - (None, 'transform'), - (None, 'type'), - (None, 'u1'), - (None, 'u2'), - (None, 'underline-position'), - (None, 'underline-thickness'), - (None, 'unicode'), - (None, 'unicode-range'), - (None, 'units-per-em'), - (None, 'values'), - (None, 'version'), - (None, 'viewBox'), - (None, 'visibility'), - (None, 'width'), - (None, 'widths'), - (None, 'x'), - (None, 'x-height'), - (None, 'x1'), - (None, 'x2'), - (namespaces['xlink'], 'actuate'), - (namespaces['xlink'], 'arcrole'), - (namespaces['xlink'], 'href'), - (namespaces['xlink'], 'role'), - (namespaces['xlink'], 'show'), - (namespaces['xlink'], 'title'), - (namespaces['xlink'], 'type'), - (namespaces['xml'], 'base'), - (namespaces['xml'], 'lang'), - (namespaces['xml'], 'space'), - (None, 'y'), - (None, 'y1'), - (None, 'y2'), - (None, 'zoomAndPan'), -)) - -attr_val_is_uri = frozenset(( - (None, 'href'), - (None, 'src'), - (None, 'cite'), - (None, 'action'), - (None, 'longdesc'), - (None, 'poster'), - (None, 'background'), - (None, 'datasrc'), - (None, 'dynsrc'), - (None, 'lowsrc'), - (None, 'ping'), - (namespaces['xlink'], 'href'), - (namespaces['xml'], 'base'), -)) - -svg_attr_val_allows_ref = frozenset(( - (None, 'clip-path'), - (None, 'color-profile'), - (None, 'cursor'), - (None, 'fill'), - (None, 'filter'), - (None, 'marker'), - (None, 'marker-start'), - (None, 'marker-mid'), - (None, 'marker-end'), - (None, 'mask'), - (None, 'stroke'), -)) - -svg_allow_local_href = frozenset(( - (None, 'altGlyph'), - (None, 'animate'), - (None, 'animateColor'), - (None, 'animateMotion'), - (None, 'animateTransform'), - (None, 'cursor'), - (None, 'feImage'), - (None, 'filter'), - (None, 'linearGradient'), - (None, 'pattern'), - (None, 'radialGradient'), - (None, 'textpath'), - (None, 'tref'), - (None, 'set'), - (None, 'use') -)) - -allowed_css_properties = frozenset(( - 'azimuth', - 'background-color', - 'border-bottom-color', - 'border-collapse', - 'border-color', - 'border-left-color', - 'border-right-color', - 'border-top-color', - 'clear', - 'color', - 'cursor', - 'direction', - 'display', - 'elevation', - 'float', - 'font', - 'font-family', - 'font-size', - 'font-style', - 'font-variant', - 'font-weight', - 'height', - 'letter-spacing', - 'line-height', - 'overflow', - 'pause', - 'pause-after', - 'pause-before', - 'pitch', - 'pitch-range', - 'richness', - 'speak', - 'speak-header', - 'speak-numeral', - 'speak-punctuation', - 'speech-rate', - 'stress', - 'text-align', - 'text-decoration', - 'text-indent', - 'unicode-bidi', - 'vertical-align', - 'voice-family', - 'volume', - 'white-space', - 'width', -)) - -allowed_css_keywords = frozenset(( - 'auto', - 'aqua', - 'black', - 'block', - 'blue', - 'bold', - 'both', - 'bottom', - 'brown', - 'center', - 'collapse', - 'dashed', - 'dotted', - 'fuchsia', - 'gray', - 'green', - '!important', - 'italic', - 'left', - 'lime', - 'maroon', - 'medium', - 'none', - 'navy', - 'normal', - 'nowrap', - 'olive', - 'pointer', - 'purple', - 'red', - 'right', - 'solid', - 'silver', - 'teal', - 'top', - 'transparent', - 'underline', - 'white', - 'yellow', -)) - -allowed_svg_properties = frozenset(( - 'fill', - 'fill-opacity', - 'fill-rule', - 'stroke', - 'stroke-width', - 'stroke-linecap', - 'stroke-linejoin', - 'stroke-opacity', -)) - -allowed_protocols = frozenset(( - 'ed2k', - 'ftp', - 'http', - 'https', - 'irc', - 'mailto', - 'news', - 'gopher', - 'nntp', - 'telnet', - 'webcal', - 'xmpp', - 'callto', - 'feed', - 'urn', - 'aim', - 'rsync', - 'tag', - 'ssh', - 'sftp', - 'rtsp', - 'afs', - 'data', -)) - -allowed_content_types = frozenset(( - 'image/png', - 'image/jpeg', - 'image/gif', - 'image/webp', - 'image/bmp', - 'text/plain', -)) - - -data_content_type = re.compile(r''' - ^ - # Match a content type / - (?P[-a-zA-Z0-9.]+/[-a-zA-Z0-9.]+) - # Match any character set and encoding - (?:(?:;charset=(?:[-a-zA-Z0-9]+)(?:;(?:base64))?) - |(?:;(?:base64))?(?:;charset=(?:[-a-zA-Z0-9]+))?) - # Assume the rest is data - ,.* - $ - ''', - re.VERBOSE) - - -class Filter(base.Filter): - """ sanitization of XHTML+MathML+SVG and of inline style attributes.""" - def __init__(self, - source, - allowed_elements=allowed_elements, - allowed_attributes=allowed_attributes, - allowed_css_properties=allowed_css_properties, - allowed_css_keywords=allowed_css_keywords, - allowed_svg_properties=allowed_svg_properties, - allowed_protocols=allowed_protocols, - allowed_content_types=allowed_content_types, - attr_val_is_uri=attr_val_is_uri, - svg_attr_val_allows_ref=svg_attr_val_allows_ref, - svg_allow_local_href=svg_allow_local_href): - super(Filter, self).__init__(source) - self.allowed_elements = allowed_elements - self.allowed_attributes = allowed_attributes - self.allowed_css_properties = allowed_css_properties - self.allowed_css_keywords = allowed_css_keywords - self.allowed_svg_properties = allowed_svg_properties - self.allowed_protocols = allowed_protocols - self.allowed_content_types = allowed_content_types - self.attr_val_is_uri = attr_val_is_uri - self.svg_attr_val_allows_ref = svg_attr_val_allows_ref - self.svg_allow_local_href = svg_allow_local_href - - def __iter__(self): - for token in base.Filter.__iter__(self): - token = self.sanitize_token(token) - if token: - yield token - - # Sanitize the +html+, escaping all elements not in ALLOWED_ELEMENTS, and - # stripping out all # attributes not in ALLOWED_ATTRIBUTES. Style - # attributes are parsed, and a restricted set, # specified by - # ALLOWED_CSS_PROPERTIES and ALLOWED_CSS_KEYWORDS, are allowed through. - # attributes in ATTR_VAL_IS_URI are scanned, and only URI schemes specified - # in ALLOWED_PROTOCOLS are allowed. - # - # sanitize_html('') - # => <script> do_nasty_stuff() </script> - # sanitize_html('Click here for $100') - # => Click here for $100 - def sanitize_token(self, token): - - # accommodate filters which use token_type differently - token_type = token["type"] - if token_type in ("StartTag", "EndTag", "EmptyTag"): - name = token["name"] - namespace = token["namespace"] - if ((namespace, name) in self.allowed_elements or - (namespace is None and - (namespaces["html"], name) in self.allowed_elements)): - return self.allowed_token(token) - else: - return self.disallowed_token(token) - elif token_type == "Comment": - pass - else: - return token - - def allowed_token(self, token): - if "data" in token: - attrs = token["data"] - attr_names = set(attrs.keys()) - - # Remove forbidden attributes - for to_remove in (attr_names - self.allowed_attributes): - del token["data"][to_remove] - attr_names.remove(to_remove) - - # Remove attributes with disallowed URL values - for attr in (attr_names & self.attr_val_is_uri): - assert attr in attrs - # I don't have a clue where this regexp comes from or why it matches those - # characters, nor why we call unescape. I just know it's always been here. - # Should you be worried by this comment in a sanitizer? Yes. On the other hand, all - # this will do is remove *more* than it otherwise would. - val_unescaped = re.sub("[`\x00-\x20\x7f-\xa0\s]+", '', - unescape(attrs[attr])).lower() - # remove replacement characters from unescaped characters - val_unescaped = val_unescaped.replace("\ufffd", "") - try: - uri = urlparse.urlparse(val_unescaped) - except ValueError: - uri = None - del attrs[attr] - if uri and uri.scheme: - if uri.scheme not in self.allowed_protocols: - del attrs[attr] - if uri.scheme == 'data': - m = data_content_type.match(uri.path) - if not m: - del attrs[attr] - elif m.group('content_type') not in self.allowed_content_types: - del attrs[attr] - - for attr in self.svg_attr_val_allows_ref: - if attr in attrs: - attrs[attr] = re.sub(r'url\s*\(\s*[^#\s][^)]+?\)', - ' ', - unescape(attrs[attr])) - if (token["name"] in self.svg_allow_local_href and - (namespaces['xlink'], 'href') in attrs and re.search('^\s*[^#\s].*', - attrs[(namespaces['xlink'], 'href')])): - del attrs[(namespaces['xlink'], 'href')] - if (None, 'style') in attrs: - attrs[(None, 'style')] = self.sanitize_css(attrs[(None, 'style')]) - token["data"] = attrs - return token - - def disallowed_token(self, token): - token_type = token["type"] - if token_type == "EndTag": - token["data"] = "" % token["name"] - elif token["data"]: - assert token_type in ("StartTag", "EmptyTag") - attrs = [] - for (ns, name), v in token["data"].items(): - attrs.append(' %s="%s"' % (name if ns is None else "%s:%s" % (prefixes[ns], name), escape(v))) - token["data"] = "<%s%s>" % (token["name"], ''.join(attrs)) - else: - token["data"] = "<%s>" % token["name"] - if token.get("selfClosing"): - token["data"] = token["data"][:-1] + "/>" - - token["type"] = "Characters" - - del token["name"] - return token - - def sanitize_css(self, style): - # disallow urls - style = re.compile('url\s*\(\s*[^\s)]+?\s*\)\s*').sub(' ', style) - - # gauntlet - if not re.match("""^([:,;#%.\sa-zA-Z0-9!]|\w-\w|'[\s\w]+'|"[\s\w]+"|\([\d,\s]+\))*$""", style): - return '' - if not re.match("^\s*([-\w]+\s*:[^:;]*(;\s*|$))*$", style): - return '' - - clean = [] - for prop, value in re.findall("([-\w]+)\s*:\s*([^:;]*)", style): - if not value: - continue - if prop.lower() in self.allowed_css_properties: - clean.append(prop + ': ' + value + ';') - elif prop.split('-')[0].lower() in ['background', 'border', 'margin', - 'padding']: - for keyword in value.split(): - if keyword not in self.allowed_css_keywords and \ - not re.match("^(#[0-9a-f]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|\d{0,2}\.?\d{0,2}(cm|em|ex|in|mm|pc|pt|px|%|,|\))?)$", keyword): # noqa - break - else: - clean.append(prop + ': ' + value + ';') - elif prop.lower() in self.allowed_svg_properties: - clean.append(prop + ': ' + value + ';') - - return ' '.join(clean) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/whitespace.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/whitespace.py deleted file mode 100644 index 8921052..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/whitespace.py +++ /dev/null @@ -1,38 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals - -import re - -from . import base -from ..constants import rcdataElements, spaceCharacters -spaceCharacters = "".join(spaceCharacters) - -SPACES_REGEX = re.compile("[%s]+" % spaceCharacters) - - -class Filter(base.Filter): - - spacePreserveElements = frozenset(["pre", "textarea"] + list(rcdataElements)) - - def __iter__(self): - preserve = 0 - for token in base.Filter.__iter__(self): - type = token["type"] - if type == "StartTag" \ - and (preserve or token["name"] in self.spacePreserveElements): - preserve += 1 - - elif type == "EndTag" and preserve: - preserve -= 1 - - elif not preserve and type == "SpaceCharacters" and token["data"]: - # Test on token["data"] above to not introduce spaces where there were not - token["data"] = " " - - elif not preserve and type == "Characters": - token["data"] = collapse_spaces(token["data"]) - - yield token - - -def collapse_spaces(text): - return SPACES_REGEX.sub(' ', text) diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/html5parser.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/html5parser.py deleted file mode 100644 index f7043cb..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/html5parser.py +++ /dev/null @@ -1,2733 +0,0 @@ -from __future__ import absolute_import, division, unicode_literals -from pip._vendor.six import with_metaclass, viewkeys, PY3 - -import types - -try: - from collections import OrderedDict -except ImportError: - from pip._vendor.ordereddict import OrderedDict - -from . import _inputstream -from . import _tokenizer - -from . import treebuilders -from .treebuilders.base import Marker - -from . import _utils -from .constants import ( - spaceCharacters, asciiUpper2Lower, - specialElements, headingElements, cdataElements, rcdataElements, - tokenTypes, tagTokenTypes, - namespaces, - htmlIntegrationPointElements, mathmlTextIntegrationPointElements, - adjustForeignAttributes as adjustForeignAttributesMap, - adjustMathMLAttributes, adjustSVGAttributes, - E, - ReparseException -) - - -def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs): - """Parse a string or file-like object into a tree""" - tb = treebuilders.getTreeBuilder(treebuilder) - p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) - return p.parse(doc, **kwargs) - - -def parseFragment(doc, container="div", treebuilder="etree", namespaceHTMLElements=True, **kwargs): - tb = treebuilders.getTreeBuilder(treebuilder) - p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements) - return p.parseFragment(doc, container=container, **kwargs) - - -def method_decorator_metaclass(function): - class Decorated(type): - def __new__(meta, classname, bases, classDict): - for attributeName, attribute in classDict.items(): - if isinstance(attribute, types.FunctionType): - attribute = function(attribute) - - classDict[attributeName] = attribute - return type.__new__(meta, classname, bases, classDict) - return Decorated - - -class HTMLParser(object): - """HTML parser. Generates a tree structure from a stream of (possibly - malformed) HTML""" - - def __init__(self, tree=None, strict=False, namespaceHTMLElements=True, debug=False): - """ - strict - raise an exception when a parse error is encountered - - tree - a treebuilder class controlling the type of tree that will be - returned. Built in treebuilders can be accessed through - html5lib.treebuilders.getTreeBuilder(treeType) - """ - - # Raise an exception on the first error encountered - self.strict = strict - - if tree is None: - tree = treebuilders.getTreeBuilder("etree") - self.tree = tree(namespaceHTMLElements) - self.errors = [] - - self.phases = dict([(name, cls(self, self.tree)) for name, cls in - getPhases(debug).items()]) - - def _parse(self, stream, innerHTML=False, container="div", scripting=False, **kwargs): - - self.innerHTMLMode = innerHTML - self.container = container - self.scripting = scripting - self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs) - self.reset() - - try: - self.mainLoop() - except ReparseException: - self.reset() - self.mainLoop() - - def reset(self): - self.tree.reset() - self.firstStartTag = False - self.errors = [] - self.log = [] # only used with debug mode - # "quirks" / "limited quirks" / "no quirks" - self.compatMode = "no quirks" - - if self.innerHTMLMode: - self.innerHTML = self.container.lower() - - if self.innerHTML in cdataElements: - self.tokenizer.state = self.tokenizer.rcdataState - elif self.innerHTML in rcdataElements: - self.tokenizer.state = self.tokenizer.rawtextState - elif self.innerHTML == 'plaintext': - self.tokenizer.state = self.tokenizer.plaintextState - else: - # state already is data state - # self.tokenizer.state = self.tokenizer.dataState - pass - self.phase = self.phases["beforeHtml"] - self.phase.insertHtmlElement() - self.resetInsertionMode() - else: - self.innerHTML = False # pylint:disable=redefined-variable-type - self.phase = self.phases["initial"] - - self.lastPhase = None - - self.beforeRCDataPhase = None - - self.framesetOK = True - - @property - def documentEncoding(self): - """The name of the character encoding - that was used to decode the input stream, - or :obj:`None` if that is not determined yet. - - """ - if not hasattr(self, 'tokenizer'): - return None - return self.tokenizer.stream.charEncoding[0].name - - def isHTMLIntegrationPoint(self, element): - if (element.name == "annotation-xml" and - element.namespace == namespaces["mathml"]): - return ("encoding" in element.attributes and - element.attributes["encoding"].translate( - asciiUpper2Lower) in - ("text/html", "application/xhtml+xml")) - else: - return (element.namespace, element.name) in htmlIntegrationPointElements - - def isMathMLTextIntegrationPoint(self, element): - return (element.namespace, element.name) in mathmlTextIntegrationPointElements - - def mainLoop(self): - CharactersToken = tokenTypes["Characters"] - SpaceCharactersToken = tokenTypes["SpaceCharacters"] - StartTagToken = tokenTypes["StartTag"] - EndTagToken = tokenTypes["EndTag"] - CommentToken = tokenTypes["Comment"] - DoctypeToken = tokenTypes["Doctype"] - ParseErrorToken = tokenTypes["ParseError"] - - for token in self.normalizedTokens(): - prev_token = None - new_token = token - while new_token is not None: - prev_token = new_token - currentNode = self.tree.openElements[-1] if self.tree.openElements else None - currentNodeNamespace = currentNode.namespace if currentNode else None - currentNodeName = currentNode.name if currentNode else None - - type = new_token["type"] - - if type == ParseErrorToken: - self.parseError(new_token["data"], new_token.get("datavars", {})) - new_token = None - else: - if (len(self.tree.openElements) == 0 or - currentNodeNamespace == self.tree.defaultNamespace or - (self.isMathMLTextIntegrationPoint(currentNode) and - ((type == StartTagToken and - token["name"] not in frozenset(["mglyph", "malignmark"])) or - type in (CharactersToken, SpaceCharactersToken))) or - (currentNodeNamespace == namespaces["mathml"] and - currentNodeName == "annotation-xml" and - type == StartTagToken and - token["name"] == "svg") or - (self.isHTMLIntegrationPoint(currentNode) and - type in (StartTagToken, CharactersToken, SpaceCharactersToken))): - phase = self.phase - else: - phase = self.phases["inForeignContent"] - - if type == CharactersToken: - new_token = phase.processCharacters(new_token) - elif type == SpaceCharactersToken: - new_token = phase.processSpaceCharacters(new_token) - elif type == StartTagToken: - new_token = phase.processStartTag(new_token) - elif type == EndTagToken: - new_token = phase.processEndTag(new_token) - elif type == CommentToken: - new_token = phase.processComment(new_token) - elif type == DoctypeToken: - new_token = phase.processDoctype(new_token) - - if (type == StartTagToken and prev_token["selfClosing"] and - not prev_token["selfClosingAcknowledged"]): - self.parseError("non-void-element-with-trailing-solidus", - {"name": prev_token["name"]}) - - # When the loop finishes it's EOF - reprocess = True - phases = [] - while reprocess: - phases.append(self.phase) - reprocess = self.phase.processEOF() - if reprocess: - assert self.phase not in phases - - def normalizedTokens(self): - for token in self.tokenizer: - yield self.normalizeToken(token) - - def parse(self, stream, *args, **kwargs): - """Parse a HTML document into a well-formed tree - - stream - a filelike object or string containing the HTML to be parsed - - The optional encoding parameter must be a string that indicates - the encoding. If specified, that encoding will be used, - regardless of any BOM or later declaration (such as in a meta - element) - - scripting - treat noscript elements as if javascript was turned on - """ - self._parse(stream, False, None, *args, **kwargs) - return self.tree.getDocument() - - def parseFragment(self, stream, *args, **kwargs): - """Parse a HTML fragment into a well-formed tree fragment - - container - name of the element we're setting the innerHTML property - if set to None, default to 'div' - - stream - a filelike object or string containing the HTML to be parsed - - The optional encoding parameter must be a string that indicates - the encoding. If specified, that encoding will be used, - regardless of any BOM or later declaration (such as in a meta - element) - - scripting - treat noscript elements as if javascript was turned on - """ - self._parse(stream, True, *args, **kwargs) - return self.tree.getFragment() - - def parseError(self, errorcode="XXX-undefined-error", datavars=None): - # XXX The idea is to make errorcode mandatory. - if datavars is None: - datavars = {} - self.errors.append((self.tokenizer.stream.position(), errorcode, datavars)) - if self.strict: - raise ParseError(E[errorcode] % datavars) - - def normalizeToken(self, token): - """ HTML5 specific normalizations to the token stream """ - - if token["type"] == tokenTypes["StartTag"]: - raw = token["data"] - token["data"] = OrderedDict(raw) - if len(raw) > len(token["data"]): - # we had some duplicated attribute, fix so first wins - token["data"].update(raw[::-1]) - - return token - - def adjustMathMLAttributes(self, token): - adjust_attributes(token, adjustMathMLAttributes) - - def adjustSVGAttributes(self, token): - adjust_attributes(token, adjustSVGAttributes) - - def adjustForeignAttributes(self, token): - adjust_attributes(token, adjustForeignAttributesMap) - - def reparseTokenNormal(self, token): - # pylint:disable=unused-argument - self.parser.phase() - - def resetInsertionMode(self): - # The name of this method is mostly historical. (It's also used in the - # specification.) - last = False - newModes = { - "select": "inSelect", - "td": "inCell", - "th": "inCell", - "tr": "inRow", - "tbody": "inTableBody", - "thead": "inTableBody", - "tfoot": "inTableBody", - "caption": "inCaption", - "colgroup": "inColumnGroup", - "table": "inTable", - "head": "inBody", - "body": "inBody", - "frameset": "inFrameset", - "html": "beforeHead" - } - for node in self.tree.openElements[::-1]: - nodeName = node.name - new_phase = None - if node == self.tree.openElements[0]: - assert self.innerHTML - last = True - nodeName = self.innerHTML - # Check for conditions that should only happen in the innerHTML - # case - if nodeName in ("select", "colgroup", "head", "html"): - assert self.innerHTML - - if not last and node.namespace != self.tree.defaultNamespace: - continue - - if nodeName in newModes: - new_phase = self.phases[newModes[nodeName]] - break - elif last: - new_phase = self.phases["inBody"] - break - - self.phase = new_phase - - def parseRCDataRawtext(self, token, contentType): - """Generic RCDATA/RAWTEXT Parsing algorithm - contentType - RCDATA or RAWTEXT - """ - assert contentType in ("RAWTEXT", "RCDATA") - - self.tree.insertElement(token) - - if contentType == "RAWTEXT": - self.tokenizer.state = self.tokenizer.rawtextState - else: - self.tokenizer.state = self.tokenizer.rcdataState - - self.originalPhase = self.phase - - self.phase = self.phases["text"] - - -@_utils.memoize -def getPhases(debug): - def log(function): - """Logger that records which phase processes each token""" - type_names = dict((value, key) for key, value in - tokenTypes.items()) - - def wrapped(self, *args, **kwargs): - if function.__name__.startswith("process") and len(args) > 0: - token = args[0] - try: - info = {"type": type_names[token['type']]} - except: - raise - if token['type'] in tagTokenTypes: - info["name"] = token['name'] - - self.parser.log.append((self.parser.tokenizer.state.__name__, - self.parser.phase.__class__.__name__, - self.__class__.__name__, - function.__name__, - info)) - return function(self, *args, **kwargs) - else: - return function(self, *args, **kwargs) - return wrapped - - def getMetaclass(use_metaclass, metaclass_func): - if use_metaclass: - return method_decorator_metaclass(metaclass_func) - else: - return type - - # pylint:disable=unused-argument - class Phase(with_metaclass(getMetaclass(debug, log))): - """Base class for helper object that implements each phase of processing - """ - - def __init__(self, parser, tree): - self.parser = parser - self.tree = tree - - def processEOF(self): - raise NotImplementedError - - def processComment(self, token): - # For most phases the following is correct. Where it's not it will be - # overridden. - self.tree.insertComment(token, self.tree.openElements[-1]) - - def processDoctype(self, token): - self.parser.parseError("unexpected-doctype") - - def processCharacters(self, token): - self.tree.insertText(token["data"]) - - def processSpaceCharacters(self, token): - self.tree.insertText(token["data"]) - - def processStartTag(self, token): - return self.startTagHandler[token["name"]](token) - - def startTagHtml(self, token): - if not self.parser.firstStartTag and token["name"] == "html": - self.parser.parseError("non-html-root") - # XXX Need a check here to see if the first start tag token emitted is - # this token... If it's not, invoke self.parser.parseError(). - for attr, value in token["data"].items(): - if attr not in self.tree.openElements[0].attributes: - self.tree.openElements[0].attributes[attr] = value - self.parser.firstStartTag = False - - def processEndTag(self, token): - return self.endTagHandler[token["name"]](token) - - class InitialPhase(Phase): - def processSpaceCharacters(self, token): - pass - - def processComment(self, token): - self.tree.insertComment(token, self.tree.document) - - def processDoctype(self, token): - name = token["name"] - publicId = token["publicId"] - systemId = token["systemId"] - correct = token["correct"] - - if (name != "html" or publicId is not None or - systemId is not None and systemId != "about:legacy-compat"): - self.parser.parseError("unknown-doctype") - - if publicId is None: - publicId = "" - - self.tree.insertDoctype(token) - - if publicId != "": - publicId = publicId.translate(asciiUpper2Lower) - - if (not correct or token["name"] != "html" or - publicId.startswith( - ("+//silmaril//dtd html pro v0r11 19970101//", - "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", - "-//as//dtd html 3.0 aswedit + extensions//", - "-//ietf//dtd html 2.0 level 1//", - "-//ietf//dtd html 2.0 level 2//", - "-//ietf//dtd html 2.0 strict level 1//", - "-//ietf//dtd html 2.0 strict level 2//", - "-//ietf//dtd html 2.0 strict//", - "-//ietf//dtd html 2.0//", - "-//ietf//dtd html 2.1e//", - "-//ietf//dtd html 3.0//", - "-//ietf//dtd html 3.2 final//", - "-//ietf//dtd html 3.2//", - "-//ietf//dtd html 3//", - "-//ietf//dtd html level 0//", - "-//ietf//dtd html level 1//", - "-//ietf//dtd html level 2//", - "-//ietf//dtd html level 3//", - "-//ietf//dtd html strict level 0//", - "-//ietf//dtd html strict level 1//", - "-//ietf//dtd html strict level 2//", - "-//ietf//dtd html strict level 3//", - "-//ietf//dtd html strict//", - "-//ietf//dtd html//", - "-//metrius//dtd metrius presentational//", - "-//microsoft//dtd internet explorer 2.0 html strict//", - "-//microsoft//dtd internet explorer 2.0 html//", - "-//microsoft//dtd internet explorer 2.0 tables//", - "-//microsoft//dtd internet explorer 3.0 html strict//", - "-//microsoft//dtd internet explorer 3.0 html//", - "-//microsoft//dtd internet explorer 3.0 tables//", - "-//netscape comm. corp.//dtd html//", - "-//netscape comm. corp.//dtd strict html//", - "-//o'reilly and associates//dtd html 2.0//", - "-//o'reilly and associates//dtd html extended 1.0//", - "-//o'reilly and associates//dtd html extended relaxed 1.0//", - "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", - "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", - "-//spyglass//dtd html 2.0 extended//", - "-//sq//dtd html 2.0 hotmetal + extensions//", - "-//sun microsystems corp.//dtd hotjava html//", - "-//sun microsystems corp.//dtd hotjava strict html//", - "-//w3c//dtd html 3 1995-03-24//", - "-//w3c//dtd html 3.2 draft//", - "-//w3c//dtd html 3.2 final//", - "-//w3c//dtd html 3.2//", - "-//w3c//dtd html 3.2s draft//", - "-//w3c//dtd html 4.0 frameset//", - "-//w3c//dtd html 4.0 transitional//", - "-//w3c//dtd html experimental 19960712//", - "-//w3c//dtd html experimental 970421//", - "-//w3c//dtd w3 html//", - "-//w3o//dtd w3 html 3.0//", - "-//webtechs//dtd mozilla html 2.0//", - "-//webtechs//dtd mozilla html//")) or - publicId in ("-//w3o//dtd w3 html strict 3.0//en//", - "-/w3c/dtd html 4.0 transitional/en", - "html") or - publicId.startswith( - ("-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//")) and - systemId is None or - systemId and systemId.lower() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"): - self.parser.compatMode = "quirks" - elif (publicId.startswith( - ("-//w3c//dtd xhtml 1.0 frameset//", - "-//w3c//dtd xhtml 1.0 transitional//")) or - publicId.startswith( - ("-//w3c//dtd html 4.01 frameset//", - "-//w3c//dtd html 4.01 transitional//")) and - systemId is not None): - self.parser.compatMode = "limited quirks" - - self.parser.phase = self.parser.phases["beforeHtml"] - - def anythingElse(self): - self.parser.compatMode = "quirks" - self.parser.phase = self.parser.phases["beforeHtml"] - - def processCharacters(self, token): - self.parser.parseError("expected-doctype-but-got-chars") - self.anythingElse() - return token - - def processStartTag(self, token): - self.parser.parseError("expected-doctype-but-got-start-tag", - {"name": token["name"]}) - self.anythingElse() - return token - - def processEndTag(self, token): - self.parser.parseError("expected-doctype-but-got-end-tag", - {"name": token["name"]}) - self.anythingElse() - return token - - def processEOF(self): - self.parser.parseError("expected-doctype-but-got-eof") - self.anythingElse() - return True - - class BeforeHtmlPhase(Phase): - # helper methods - def insertHtmlElement(self): - self.tree.insertRoot(impliedTagToken("html", "StartTag")) - self.parser.phase = self.parser.phases["beforeHead"] - - # other - def processEOF(self): - self.insertHtmlElement() - return True - - def processComment(self, token): - self.tree.insertComment(token, self.tree.document) - - def processSpaceCharacters(self, token): - pass - - def processCharacters(self, token): - self.insertHtmlElement() - return token - - def processStartTag(self, token): - if token["name"] == "html": - self.parser.firstStartTag = True - self.insertHtmlElement() - return token - - def processEndTag(self, token): - if token["name"] not in ("head", "body", "html", "br"): - self.parser.parseError("unexpected-end-tag-before-html", - {"name": token["name"]}) - else: - self.insertHtmlElement() - return token - - class BeforeHeadPhase(Phase): - def __init__(self, parser, tree): - Phase.__init__(self, parser, tree) - - self.startTagHandler = _utils.MethodDispatcher([ - ("html", self.startTagHtml), - ("head", self.startTagHead) - ]) - self.startTagHandler.default = self.startTagOther - - self.endTagHandler = _utils.MethodDispatcher([ - (("head", "body", "html", "br"), self.endTagImplyHead) - ]) - self.endTagHandler.default = self.endTagOther - - def processEOF(self): - self.startTagHead(impliedTagToken("head", "StartTag")) - return True - - def processSpaceCharacters(self, token): - pass - - def processCharacters(self, token): - self.startTagHead(impliedTagToken("head", "StartTag")) - return token - - def startTagHtml(self, token): - return self.parser.phases["inBody"].processStartTag(token) - - def startTagHead(self, token): - self.tree.insertElement(token) - self.tree.headPointer = self.tree.openElements[-1] - self.parser.phase = self.parser.phases["inHead"] - - def startTagOther(self, token): - self.startTagHead(impliedTagToken("head", "StartTag")) - return token - - def endTagImplyHead(self, token): - self.startTagHead(impliedTagToken("head", "StartTag")) - return token - - def endTagOther(self, token): - self.parser.parseError("end-tag-after-implied-root", - {"name": token["name"]}) - - class InHeadPhase(Phase): - def __init__(self, parser, tree): - Phase.__init__(self, parser, tree) - - self.startTagHandler = _utils.MethodDispatcher([ - ("html", self.startTagHtml), - ("title", self.startTagTitle), - (("noframes", "style"), self.startTagNoFramesStyle), - ("noscript", self.startTagNoscript), - ("script", self.startTagScript), - (("base", "basefont", "bgsound", "command", "link"), - self.startTagBaseLinkCommand), - ("meta", self.startTagMeta), - ("head", self.startTagHead) - ]) - self.startTagHandler.default = self.startTagOther - - self.endTagHandler = _utils.MethodDispatcher([ - ("head", self.endTagHead), - (("br", "html", "body"), self.endTagHtmlBodyBr) - ]) - self.endTagHandler.default = self.endTagOther - - # the real thing - def processEOF(self): - self.anythingElse() - return True - - def processCharacters(self, token): - self.anythingElse() - return token - - def startTagHtml(self, token): - return self.parser.phases["inBody"].processStartTag(token) - - def startTagHead(self, token): - self.parser.parseError("two-heads-are-not-better-than-one") - - def startTagBaseLinkCommand(self, token): - self.tree.insertElement(token) - self.tree.openElements.pop() - token["selfClosingAcknowledged"] = True - - def startTagMeta(self, token): - self.tree.insertElement(token) - self.tree.openElements.pop() - token["selfClosingAcknowledged"] = True - - attributes = token["data"] - if self.parser.tokenizer.stream.charEncoding[1] == "tentative": - if "charset" in attributes: - self.parser.tokenizer.stream.changeEncoding(attributes["charset"]) - elif ("content" in attributes and - "http-equiv" in attributes and - attributes["http-equiv"].lower() == "content-type"): - # Encoding it as UTF-8 here is a hack, as really we should pass - # the abstract Unicode string, and just use the - # ContentAttrParser on that, but using UTF-8 allows all chars - # to be encoded and as a ASCII-superset works. - data = _inputstream.EncodingBytes(attributes["content"].encode("utf-8")) - parser = _inputstream.ContentAttrParser(data) - codec = parser.parse() - self.parser.tokenizer.stream.changeEncoding(codec) - - def startTagTitle(self, token): - self.parser.parseRCDataRawtext(token, "RCDATA") - - def startTagNoFramesStyle(self, token): - # Need to decide whether to implement the scripting-disabled case - self.parser.parseRCDataRawtext(token, "RAWTEXT") - - def startTagNoscript(self, token): - if self.parser.scripting: - self.parser.parseRCDataRawtext(token, "RAWTEXT") - else: - self.tree.insertElement(token) - self.parser.phase = self.parser.phases["inHeadNoscript"] - - def startTagScript(self, token): - self.tree.insertElement(token) - self.parser.tokenizer.state = self.parser.tokenizer.scriptDataState - self.parser.originalPhase = self.parser.phase - self.parser.phase = self.parser.phases["text"] - - def startTagOther(self, token): - self.anythingElse() - return token - - def endTagHead(self, token): - node = self.parser.tree.openElements.pop() - assert node.name == "head", "Expected head got %s" % node.name - self.parser.phase = self.parser.phases["afterHead"] - - def endTagHtmlBodyBr(self, token): - self.anythingElse() - return token - - def endTagOther(self, token): - self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) - - def anythingElse(self): - self.endTagHead(impliedTagToken("head")) - - class InHeadNoscriptPhase(Phase): - def __init__(self, parser, tree): - Phase.__init__(self, parser, tree) - - self.startTagHandler = _utils.MethodDispatcher([ - ("html", self.startTagHtml), - (("basefont", "bgsound", "link", "meta", "noframes", "style"), self.startTagBaseLinkCommand), - (("head", "noscript"), self.startTagHeadNoscript), - ]) - self.startTagHandler.default = self.startTagOther - - self.endTagHandler = _utils.MethodDispatcher([ - ("noscript", self.endTagNoscript), - ("br", self.endTagBr), - ]) - self.endTagHandler.default = self.endTagOther - - def processEOF(self): - self.parser.parseError("eof-in-head-noscript") - self.anythingElse() - return True - - def processComment(self, token): - return self.parser.phases["inHead"].processComment(token) - - def processCharacters(self, token): - self.parser.parseError("char-in-head-noscript") - self.anythingElse() - return token - - def processSpaceCharacters(self, token): - return self.parser.phases["inHead"].processSpaceCharacters(token) - - def startTagHtml(self, token): - return self.parser.phases["inBody"].processStartTag(token) - - def startTagBaseLinkCommand(self, token): - return self.parser.phases["inHead"].processStartTag(token) - - def startTagHeadNoscript(self, token): - self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) - - def startTagOther(self, token): - self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) - self.anythingElse() - return token - - def endTagNoscript(self, token): - node = self.parser.tree.openElements.pop() - assert node.name == "noscript", "Expected noscript got %s" % node.name - self.parser.phase = self.parser.phases["inHead"] - - def endTagBr(self, token): - self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]}) - self.anythingElse() - return token - - def endTagOther(self, token): - self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) - - def anythingElse(self): - # Caller must raise parse error first! - self.endTagNoscript(impliedTagToken("noscript")) - - class AfterHeadPhase(Phase): - def __init__(self, parser, tree): - Phase.__init__(self, parser, tree) - - self.startTagHandler = _utils.MethodDispatcher([ - ("html", self.startTagHtml), - ("body", self.startTagBody), - ("frameset", self.startTagFrameset), - (("base", "basefont", "bgsound", "link", "meta", "noframes", "script", - "style", "title"), - self.startTagFromHead), - ("head", self.startTagHead) - ]) - self.startTagHandler.default = self.startTagOther - self.endTagHandler = _utils.MethodDispatcher([(("body", "html", "br"), - self.endTagHtmlBodyBr)]) - self.endTagHandler.default = self.endTagOther - - def processEOF(self): - self.anythingElse() - return True - - def processCharacters(self, token): - self.anythingElse() - return token - - def startTagHtml(self, token): - return self.parser.phases["inBody"].processStartTag(token) - - def startTagBody(self, token): - self.parser.framesetOK = False - self.tree.insertElement(token) - self.parser.phase = self.parser.phases["inBody"] - - def startTagFrameset(self, token): - self.tree.insertElement(token) - self.parser.phase = self.parser.phases["inFrameset"] - - def startTagFromHead(self, token): - self.parser.parseError("unexpected-start-tag-out-of-my-head", - {"name": token["name"]}) - self.tree.openElements.append(self.tree.headPointer) - self.parser.phases["inHead"].processStartTag(token) - for node in self.tree.openElements[::-1]: - if node.name == "head": - self.tree.openElements.remove(node) - break - - def startTagHead(self, token): - self.parser.parseError("unexpected-start-tag", {"name": token["name"]}) - - def startTagOther(self, token): - self.anythingElse() - return token - - def endTagHtmlBodyBr(self, token): - self.anythingElse() - return token - - def endTagOther(self, token): - self.parser.parseError("unexpected-end-tag", {"name": token["name"]}) - - def anythingElse(self): - self.tree.insertElement(impliedTagToken("body", "StartTag")) - self.parser.phase = self.parser.phases["inBody"] - self.parser.framesetOK = True - - class InBodyPhase(Phase): - # http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-inbody - # the really-really-really-very crazy mode - def __init__(self, parser, tree): - Phase.__init__(self, parser, tree) - - # Set this to the default handler - self.processSpaceCharacters = self.processSpaceCharactersNonPre - - self.startTagHandler = _utils.MethodDispatcher([ - ("html", self.startTagHtml), - (("base", "basefont", "bgsound", "command", "link", "meta", - "script", "style", "title"), - self.startTagProcessInHead), - ("body", self.startTagBody), - ("frameset", self.startTagFrameset), - (("address", "article", "aside", "blockquote", "center", "details", - "dir", "div", "dl", "fieldset", "figcaption", "figure", - "footer", "header", "hgroup", "main", "menu", "nav", "ol", "p", - "section", "summary", "ul"), - self.startTagCloseP), - (headingElements, self.startTagHeading), - (("pre", "listing"), self.startTagPreListing), - ("form", self.startTagForm), - (("li", "dd", "dt"), self.startTagListItem), - ("plaintext", self.startTagPlaintext), - ("a", self.startTagA), - (("b", "big", "code", "em", "font", "i", "s", "small", "strike", - "strong", "tt", "u"), self.startTagFormatting), - ("nobr", self.startTagNobr), - ("button", self.startTagButton), - (("applet", "marquee", "object"), self.startTagAppletMarqueeObject), - ("xmp", self.startTagXmp), - ("table", self.startTagTable), - (("area", "br", "embed", "img", "keygen", "wbr"), - self.startTagVoidFormatting), - (("param", "source", "track"), self.startTagParamSource), - ("input", self.startTagInput), - ("hr", self.startTagHr), - ("image", self.startTagImage), - ("isindex", self.startTagIsIndex), - ("textarea", self.startTagTextarea), - ("iframe", self.startTagIFrame), - ("noscript", self.startTagNoscript), - (("noembed", "noframes"), self.startTagRawtext), - ("select", self.startTagSelect), - (("rp", "rt"), self.startTagRpRt), - (("option", "optgroup"), self.startTagOpt), - (("math"), self.startTagMath), - (("svg"), self.startTagSvg), - (("caption", "col", "colgroup", "frame", "head", - "tbody", "td", "tfoot", "th", "thead", - "tr"), self.startTagMisplaced) - ]) - self.startTagHandler.default = self.startTagOther - - self.endTagHandler = _utils.MethodDispatcher([ - ("body", self.endTagBody), - ("html", self.endTagHtml), - (("address", "article", "aside", "blockquote", "button", "center", - "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure", - "footer", "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre", - "section", "summary", "ul"), self.endTagBlock), - ("form", self.endTagForm), - ("p", self.endTagP), - (("dd", "dt", "li"), self.endTagListItem), - (headingElements, self.endTagHeading), - (("a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small", - "strike", "strong", "tt", "u"), self.endTagFormatting), - (("applet", "marquee", "object"), self.endTagAppletMarqueeObject), - ("br", self.endTagBr), - ]) - self.endTagHandler.default = self.endTagOther - - def isMatchingFormattingElement(self, node1, node2): - return (node1.name == node2.name and - node1.namespace == node2.namespace and - node1.attributes == node2.attributes) - - # helper - def addFormattingElement(self, token): - self.tree.insertElement(token) - element = self.tree.openElements[-1] - - matchingElements = [] - for node in self.tree.activeFormattingElements[::-1]: - if node is Marker: - break - elif self.isMatchingFormattingElement(node, element): - matchingElements.append(node) - - assert len(matchingElements) <= 3 - if len(matchingElements) == 3: - self.tree.activeFormattingElements.remove(matchingElements[-1]) - self.tree.activeFormattingElements.append(element) - - # the real deal - def processEOF(self): - allowed_elements = frozenset(("dd", "dt", "li", "p", "tbody", "td", - "tfoot", "th", "thead", "tr", "body", - "html")) - for node in self.tree.openElements[::-1]: - if node.name not in allowed_elements: - self.parser.parseError("expected-closing-tag-but-got-eof") - break - # Stop parsing - - def processSpaceCharactersDropNewline(self, token): - # Sometimes (start of

, , and 

2sEA0b+{i8mF-p`}3k2M$gw;4Z-{ z%OWs+5k2*{04t8mS*?xP?wk@{RahBwHcl^2l(dZv;|(J}-_^mtwh~gsa{0<^_?;U1!Ay53w@#5t)J)5~>v#-He&j}mAX9!OI{>pyf~rWb z>eCzGs`Ox&c5f;Dr(f$u!|ZlWyXRu^r#}K7vgEba-rS&c@~VvgZdhltsWC2oT2v-D zp*1GQhDB?k^bjJCcjPxF5eQIAG#@x3BkcV5BfJ8Y+W%{W^;fwgtcQ#KcOyKFfqZs^ zK^Y-e#=4WWNOGvVuw{)dlAm14O_cnk>aY=&f^B(<%V5(M^+IFzv-#k|fP67OSaEbk z%W7U!#aiSg>v#?@#+)ZVi2LIz4&3b?jKFDU=fqvy+pm;)9+XKF5l8N3lj(Mscf$@n zbzhlGZ4{T%R9Q7!l>kWH$K%etRqBgWb#b1PdLURO1qdFI;E|PUGe{}3zbF_jpZ>6Q z*c~u*ARIiR-BSQS6c(ZFYn7&@hep;%73sBT5FLM>sxHG% z!Io+|G#HT^M2$}&;dIs@TtSRxSP02PWeB>#sq`se4woTx>d82Hb!;N%G z_aTqsBQ9%meN|s0Dmx-{%Hpf)dJoHS*n?F=zN+FqTt(Cp zqLd`^t1D!p#Sypfa=|Z=enB3;{pv3TS?u+^T=a3rcs0;rjK|u)97?dyAUNb|BxB>3 z=W@C_ZsiMcKRS9!^PB2$BaUe&IhXpDmFZS~8)9(2_E<;8C)@N&)Q)09C>&Xk$wzjl zCiS~=@QnZYyyAEMTM!9Zv-LlnS3JNPUGVSED}EQHuf2`Sk&#~XWb}T~fShhWPDGad z(pB2$pI6+AfF9-!#q4>-bK&cco>zRm6Z}s37k!UB!7gL!u=9$gWQ_gi^NQ)OVTH+^ zSM2&fo>we9+U@WDLWcCO-G&EDSJG`6t{hhod8nH+3!gf#80E-h?!4j~P_Cor6>~=$ z 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 1.2, < 2.0 [bar, baz]' -# -# The regex can seem a bit hairy, so we build it up out of smaller pieces -# which are manageable. -# - -COMMA = r'\s*,\s*' -COMMA_RE = re.compile(COMMA) - -IDENT = r'(\w|[.-])+' -EXTRA_IDENT = r'(\*|:(\*|\w+):|' + IDENT + ')' -VERSPEC = IDENT + r'\*?' - -RELOP = '([<>=!~]=)|[<>]' - -# -# The first relop is optional - if absent, will be taken as '~=' -# -BARE_CONSTRAINTS = ('(' + RELOP + r')?\s*(' + VERSPEC + ')(' + COMMA + '(' + - RELOP + r')\s*(' + VERSPEC + '))*') - -DIRECT_REF = '(from\s+(?P.*))' - -# -# Either the bare constraints or the bare constraints in parentheses -# -CONSTRAINTS = (r'\(\s*(?P' + BARE_CONSTRAINTS + '|' + DIRECT_REF + - r')\s*\)|(?P' + BARE_CONSTRAINTS + '\s*)') - -EXTRA_LIST = EXTRA_IDENT + '(' + COMMA + EXTRA_IDENT + ')*' -EXTRAS = r'\[\s*(?P' + EXTRA_LIST + r')?\s*\]' -REQUIREMENT = ('(?P' + IDENT + r')\s*(' + EXTRAS + r'\s*)?(\s*' + - CONSTRAINTS + ')?$') -REQUIREMENT_RE = re.compile(REQUIREMENT) - -# -# Used to scan through the constraints -# -RELOP_IDENT = '(?P' + RELOP + r')\s*(?P' + VERSPEC + ')' -RELOP_IDENT_RE = re.compile(RELOP_IDENT) - -def parse_requirement(s): - - def get_constraint(m): - d = m.groupdict() - return d['op'], d['vn'] - - result = None - m = REQUIREMENT_RE.match(s) - if m: - d = m.groupdict() - name = d['dn'] - cons = d['c1'] or d['c2'] - if not d['diref']: - url = None - else: - # direct reference - cons = None - url = d['diref'].strip() - if not cons: - cons = None - constr = '' - rs = d['dn'] - else: - if cons[0] not in '<>!=': - cons = '~=' + cons - iterator = RELOP_IDENT_RE.finditer(cons) - cons = [get_constraint(m) for m in iterator] - rs = '%s (%s)' % (name, ', '.join(['%s %s' % con for con in cons])) - if not d['ex']: - extras = None - else: - extras = COMMA_RE.split(d['ex']) - result = Container(name=name, constraints=cons, extras=extras, - requirement=rs, source=s, url=url) - return result - - -def get_resources_dests(resources_root, rules): - """Find destinations for resources files""" - - def get_rel_path(base, path): - # normalizes and returns a lstripped-/-separated path - base = base.replace(os.path.sep, '/') - path = path.replace(os.path.sep, '/') - assert path.startswith(base) - return path[len(base):].lstrip('/') - - - destinations = {} - for base, suffix, dest in rules: - prefix = os.path.join(resources_root, base) - for abs_base in iglob(prefix): - abs_glob = os.path.join(abs_base, suffix) - for abs_path in iglob(abs_glob): - resource_file = get_rel_path(resources_root, abs_path) - if dest is None: # remove the entry if it was here - destinations.pop(resource_file, None) - else: - rel_path = get_rel_path(abs_base, abs_path) - rel_dest = dest.replace(os.path.sep, '/').rstrip('/') - destinations[resource_file] = rel_dest + '/' + rel_path - return destinations - - -def in_venv(): - if hasattr(sys, 'real_prefix'): - # virtualenv venvs - result = True - else: - # PEP 405 venvs - result = sys.prefix != getattr(sys, 'base_prefix', sys.prefix) - return result - - -def get_executable(): -# The __PYVENV_LAUNCHER__ dance is apparently no longer needed, as -# changes to the stub launcher mean that sys.executable always points -# to the stub on macOS -# if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' -# in os.environ): -# result = os.environ['__PYVENV_LAUNCHER__'] -# else: -# result = sys.executable -# return result - result = os.path.normcase(sys.executable) - if not isinstance(result, text_type): - result = fsdecode(result) - return result - - -def proceed(prompt, allowed_chars, error_prompt=None, default=None): - p = prompt - while True: - s = raw_input(p) - p = prompt - if not s and default: - s = default - if s: - c = s[0].lower() - if c in allowed_chars: - break - if error_prompt: - p = '%c: %s\n%s' % (c, error_prompt, prompt) - return c - - -def extract_by_key(d, keys): - if isinstance(keys, string_types): - keys = keys.split() - result = {} - for key in keys: - if key in d: - result[key] = d[key] - return result - -def read_exports(stream): - if sys.version_info[0] >= 3: - # needs to be a text stream - stream = codecs.getreader('utf-8')(stream) - # Try to load as JSON, falling back on legacy format - data = stream.read() - stream = StringIO(data) - try: - jdata = json.load(stream) - result = jdata['extensions']['python.exports']['exports'] - for group, entries in result.items(): - for k, v in entries.items(): - s = '%s = %s' % (k, v) - entry = get_export_entry(s) - assert entry is not None - entries[k] = entry - return result - except Exception: - stream.seek(0, 0) - - def read_stream(cp, stream): - if hasattr(cp, 'read_file'): - cp.read_file(stream) - else: - cp.readfp(stream) - - cp = configparser.ConfigParser() - try: - read_stream(cp, stream) - except configparser.MissingSectionHeaderError: - stream.close() - data = textwrap.dedent(data) - stream = StringIO(data) - read_stream(cp, stream) - - result = {} - for key in cp.sections(): - result[key] = entries = {} - for name, value in cp.items(key): - s = '%s = %s' % (name, value) - entry = get_export_entry(s) - assert entry is not None - #entry.dist = self - entries[name] = entry - return result - - -def write_exports(exports, stream): - if sys.version_info[0] >= 3: - # needs to be a text stream - stream = codecs.getwriter('utf-8')(stream) - cp = configparser.ConfigParser() - for k, v in exports.items(): - # TODO check k, v for valid values - cp.add_section(k) - for entry in v.values(): - if entry.suffix is None: - s = entry.prefix - else: - s = '%s:%s' % (entry.prefix, entry.suffix) - if entry.flags: - s = '%s [%s]' % (s, ', '.join(entry.flags)) - cp.set(k, entry.name, s) - cp.write(stream) - - -@contextlib.contextmanager -def tempdir(): - td = tempfile.mkdtemp() - try: - yield td - finally: - shutil.rmtree(td) - -@contextlib.contextmanager -def chdir(d): - cwd = os.getcwd() - try: - os.chdir(d) - yield - finally: - os.chdir(cwd) - - -@contextlib.contextmanager -def socket_timeout(seconds=15): - cto = socket.getdefaulttimeout() - try: - socket.setdefaulttimeout(seconds) - yield - finally: - socket.setdefaulttimeout(cto) - - -class cached_property(object): - def __init__(self, func): - self.func = func - #for attr in ('__name__', '__module__', '__doc__'): - # setattr(self, attr, getattr(func, attr, None)) - - def __get__(self, obj, cls=None): - if obj is None: - return self - value = self.func(obj) - object.__setattr__(obj, self.func.__name__, value) - #obj.__dict__[self.func.__name__] = value = self.func(obj) - return value - -def convert_path(pathname): - """Return 'pathname' as a name that will work on the native filesystem. - - The path is split on '/' and put back together again using the current - directory separator. Needed because filenames in the setup script are - always supplied in Unix style, and have to be converted to the local - convention before we can actually use them in the filesystem. Raises - ValueError on non-Unix-ish systems if 'pathname' either starts or - ends with a slash. - """ - if os.sep == '/': - return pathname - if not pathname: - return pathname - if pathname[0] == '/': - raise ValueError("path '%s' cannot be absolute" % pathname) - if pathname[-1] == '/': - raise ValueError("path '%s' cannot end with '/'" % pathname) - - paths = pathname.split('/') - while os.curdir in paths: - paths.remove(os.curdir) - if not paths: - return os.curdir - return os.path.join(*paths) - - -class FileOperator(object): - def __init__(self, dry_run=False): - self.dry_run = dry_run - self.ensured = set() - self._init_record() - - def _init_record(self): - self.record = False - self.files_written = set() - self.dirs_created = set() - - def record_as_written(self, path): - if self.record: - self.files_written.add(path) - - def newer(self, source, target): - """Tell if the target is newer than the source. - - Returns true if 'source' exists and is more recently modified than - 'target', or if 'source' exists and 'target' doesn't. - - Returns false if both exist and 'target' is the same age or younger - than 'source'. Raise PackagingFileError if 'source' does not exist. - - Note that this test is not very accurate: files created in the same - second will have the same "age". - """ - if not os.path.exists(source): - raise DistlibException("file '%r' does not exist" % - os.path.abspath(source)) - if not os.path.exists(target): - return True - - return os.stat(source).st_mtime > os.stat(target).st_mtime - - def copy_file(self, infile, outfile, check=True): - """Copy a file respecting dry-run and force flags. - """ - self.ensure_dir(os.path.dirname(outfile)) - logger.info('Copying %s to %s', infile, outfile) - if not self.dry_run: - msg = None - if check: - if os.path.islink(outfile): - msg = '%s is a symlink' % outfile - elif os.path.exists(outfile) and not os.path.isfile(outfile): - msg = '%s is a non-regular file' % outfile - if msg: - raise ValueError(msg + ' which would be overwritten') - shutil.copyfile(infile, outfile) - self.record_as_written(outfile) - - def copy_stream(self, instream, outfile, encoding=None): - assert not os.path.isdir(outfile) - self.ensure_dir(os.path.dirname(outfile)) - logger.info('Copying stream %s to %s', instream, outfile) - if not self.dry_run: - if encoding is None: - outstream = open(outfile, 'wb') - else: - outstream = codecs.open(outfile, 'w', encoding=encoding) - try: - shutil.copyfileobj(instream, outstream) - finally: - outstream.close() - self.record_as_written(outfile) - - def write_binary_file(self, path, data): - self.ensure_dir(os.path.dirname(path)) - if not self.dry_run: - with open(path, 'wb') as f: - f.write(data) - self.record_as_written(path) - - def write_text_file(self, path, data, encoding): - self.ensure_dir(os.path.dirname(path)) - if not self.dry_run: - with open(path, 'wb') as f: - f.write(data.encode(encoding)) - self.record_as_written(path) - - def set_mode(self, bits, mask, files): - if os.name == 'posix' or (os.name == 'java' and os._name == 'posix'): - # Set the executable bits (owner, group, and world) on - # all the files specified. - for f in files: - if self.dry_run: - logger.info("changing mode of %s", f) - else: - mode = (os.stat(f).st_mode | bits) & mask - logger.info("changing mode of %s to %o", f, mode) - os.chmod(f, mode) - - set_executable_mode = lambda s, f: s.set_mode(0o555, 0o7777, f) - - def ensure_dir(self, path): - path = os.path.abspath(path) - if path not in self.ensured and not os.path.exists(path): - self.ensured.add(path) - d, f = os.path.split(path) - self.ensure_dir(d) - logger.info('Creating %s' % path) - if not self.dry_run: - os.mkdir(path) - if self.record: - self.dirs_created.add(path) - - def byte_compile(self, path, optimize=False, force=False, prefix=None): - dpath = cache_from_source(path, not optimize) - logger.info('Byte-compiling %s to %s', path, dpath) - if not self.dry_run: - if force or self.newer(path, dpath): - if not prefix: - diagpath = None - else: - assert path.startswith(prefix) - diagpath = path[len(prefix):] - py_compile.compile(path, dpath, diagpath, True) # raise error - self.record_as_written(dpath) - return dpath - - def ensure_removed(self, path): - if os.path.exists(path): - if os.path.isdir(path) and not os.path.islink(path): - logger.debug('Removing directory tree at %s', path) - if not self.dry_run: - shutil.rmtree(path) - if self.record: - if path in self.dirs_created: - self.dirs_created.remove(path) - else: - if os.path.islink(path): - s = 'link' - else: - s = 'file' - logger.debug('Removing %s %s', s, path) - if not self.dry_run: - os.remove(path) - if self.record: - if path in self.files_written: - self.files_written.remove(path) - - def is_writable(self, path): - result = False - while not result: - if os.path.exists(path): - result = os.access(path, os.W_OK) - break - parent = os.path.dirname(path) - if parent == path: - break - path = parent - return result - - def commit(self): - """ - Commit recorded changes, turn off recording, return - changes. - """ - assert self.record - result = self.files_written, self.dirs_created - self._init_record() - return result - - def rollback(self): - if not self.dry_run: - for f in list(self.files_written): - if os.path.exists(f): - os.remove(f) - # dirs should all be empty now, except perhaps for - # __pycache__ subdirs - # reverse so that subdirs appear before their parents - dirs = sorted(self.dirs_created, reverse=True) - for d in dirs: - flist = os.listdir(d) - if flist: - assert flist == ['__pycache__'] - sd = os.path.join(d, flist[0]) - os.rmdir(sd) - os.rmdir(d) # should fail if non-empty - self._init_record() - -def resolve(module_name, dotted_path): - if module_name in sys.modules: - mod = sys.modules[module_name] - else: - mod = __import__(module_name) - if dotted_path is None: - result = mod - else: - parts = dotted_path.split('.') - result = getattr(mod, parts.pop(0)) - for p in parts: - result = getattr(result, p) - return result - - -class ExportEntry(object): - def __init__(self, name, prefix, suffix, flags): - self.name = name - self.prefix = prefix - self.suffix = suffix - self.flags = flags - - @cached_property - def value(self): - return resolve(self.prefix, self.suffix) - - def __repr__(self): # pragma: no cover - return '' % (self.name, self.prefix, - self.suffix, self.flags) - - def __eq__(self, other): - if not isinstance(other, ExportEntry): - result = False - else: - result = (self.name == other.name and - self.prefix == other.prefix and - self.suffix == other.suffix and - self.flags == other.flags) - return result - - __hash__ = object.__hash__ - - -ENTRY_RE = re.compile(r'''(?P(\w|[-.+])+) - \s*=\s*(?P(\w+)([:\.]\w+)*) - \s*(\[\s*(?P\w+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? - ''', re.VERBOSE) - -def get_export_entry(specification): - m = ENTRY_RE.search(specification) - if not m: - result = None - if '[' in specification or ']' in specification: - raise DistlibException("Invalid specification " - "'%s'" % specification) - else: - d = m.groupdict() - name = d['name'] - path = d['callable'] - colons = path.count(':') - if colons == 0: - prefix, suffix = path, None - else: - if colons != 1: - raise DistlibException("Invalid specification " - "'%s'" % specification) - prefix, suffix = path.split(':') - flags = d['flags'] - if flags is None: - if '[' in specification or ']' in specification: - raise DistlibException("Invalid specification " - "'%s'" % specification) - flags = [] - else: - flags = [f.strip() for f in flags.split(',')] - result = ExportEntry(name, prefix, suffix, flags) - return result - - -def get_cache_base(suffix=None): - """ - Return the default base location for distlib caches. If the directory does - not exist, it is created. Use the suffix provided for the base directory, - and default to '.distlib' if it isn't provided. - - On Windows, if LOCALAPPDATA is defined in the environment, then it is - assumed to be a directory, and will be the parent directory of the result. - On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home - directory - using os.expanduser('~') - will be the parent directory of - the result. - - The result is just the directory '.distlib' in the parent directory as - determined above, or with the name specified with ``suffix``. - """ - if suffix is None: - suffix = '.distlib' - if os.name == 'nt' and 'LOCALAPPDATA' in os.environ: - result = os.path.expandvars('$localappdata') - else: - # Assume posix, or old Windows - result = os.path.expanduser('~') - # we use 'isdir' instead of 'exists', because we want to - # fail if there's a file with that name - if os.path.isdir(result): - usable = os.access(result, os.W_OK) - if not usable: - logger.warning('Directory exists but is not writable: %s', result) - else: - try: - os.makedirs(result) - usable = True - except OSError: - logger.warning('Unable to create %s', result, exc_info=True) - usable = False - if not usable: - result = tempfile.mkdtemp() - logger.warning('Default location unusable, using %s', result) - return os.path.join(result, suffix) - - -def path_to_cache_dir(path): - """ - Convert an absolute path to a directory name for use in a cache. - - The algorithm used is: - - #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. - #. Any occurrence of ``os.sep`` is replaced with ``'--'``. - #. ``'.cache'`` is appended. - """ - d, p = os.path.splitdrive(os.path.abspath(path)) - if d: - d = d.replace(':', '---') - p = p.replace(os.sep, '--') - return d + p + '.cache' - - -def ensure_slash(s): - if not s.endswith('/'): - return s + '/' - return s - - -def parse_credentials(netloc): - username = password = None - if '@' in netloc: - prefix, netloc = netloc.split('@', 1) - if ':' not in prefix: - username = prefix - else: - username, password = prefix.split(':', 1) - return username, password, netloc - - -def get_process_umask(): - result = os.umask(0o22) - os.umask(result) - return result - -def is_string_sequence(seq): - result = True - i = None - for i, s in enumerate(seq): - if not isinstance(s, string_types): - result = False - break - assert i is not None - return result - -PROJECT_NAME_AND_VERSION = re.compile('([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-' - '([a-z0-9_.+-]+)', re.I) -PYTHON_VERSION = re.compile(r'-py(\d\.?\d?)') - - -def split_filename(filename, project_name=None): - """ - Extract name, version, python version from a filename (no extension) - - Return name, version, pyver or None - """ - result = None - pyver = None - filename = unquote(filename).replace(' ', '-') - m = PYTHON_VERSION.search(filename) - if m: - pyver = m.group(1) - filename = filename[:m.start()] - if project_name and len(filename) > len(project_name) + 1: - m = re.match(re.escape(project_name) + r'\b', filename) - if m: - n = m.end() - result = filename[:n], filename[n + 1:], pyver - if result is None: - m = PROJECT_NAME_AND_VERSION.match(filename) - if m: - result = m.group(1), m.group(3), pyver - return result - -# Allow spaces in name because of legacy dists like "Twisted Core" -NAME_VERSION_RE = re.compile(r'(?P[\w .-]+)\s*' - r'\(\s*(?P[^\s)]+)\)$') - -def parse_name_and_version(p): - """ - A utility method used to get name and version from a string. - - From e.g. a Provides-Dist value. - - :param p: A value in a form 'foo (1.0)' - :return: The name and version as a tuple. - """ - m = NAME_VERSION_RE.match(p) - if not m: - raise DistlibException('Ill-formed name/version string: \'%s\'' % p) - d = m.groupdict() - return d['name'].strip().lower(), d['ver'] - -def get_extras(requested, available): - result = set() - requested = set(requested or []) - available = set(available or []) - if '*' in requested: - requested.remove('*') - result |= available - for r in requested: - if r == '-': - result.add(r) - elif r.startswith('-'): - unwanted = r[1:] - if unwanted not in available: - logger.warning('undeclared extra: %s' % unwanted) - if unwanted in result: - result.remove(unwanted) - else: - if r not in available: - logger.warning('undeclared extra: %s' % r) - result.add(r) - return result -# -# Extended metadata functionality -# - -def _get_external_data(url): - result = {} - try: - # urlopen might fail if it runs into redirections, - # because of Python issue #13696. Fixed in locators - # using a custom redirect handler. - resp = urlopen(url) - headers = resp.info() - ct = headers.get('Content-Type') - if not ct.startswith('application/json'): - logger.debug('Unexpected response for JSON request: %s', ct) - else: - reader = codecs.getreader('utf-8')(resp) - #data = reader.read().decode('utf-8') - #result = json.loads(data) - result = json.load(reader) - except Exception as e: - logger.exception('Failed to get external data for %s: %s', url, e) - return result - -_external_data_base_url = 'https://www.red-dove.com/pypi/projects/' - -def get_project_data(name): - url = '%s/%s/project.json' % (name[0].upper(), name) - url = urljoin(_external_data_base_url, url) - result = _get_external_data(url) - return result - -def get_package_data(name, version): - url = '%s/%s/package-%s.json' % (name[0].upper(), name, version) - url = urljoin(_external_data_base_url, url) - return _get_external_data(url) - - -class Cache(object): - """ - A class implementing a cache for resources that need to live in the file system - e.g. shared libraries. This class was moved from resources to here because it - could be used by other modules, e.g. the wheel module. - """ - - def __init__(self, base): - """ - Initialise an instance. - - :param base: The base directory where the cache should be located. - """ - # we use 'isdir' instead of 'exists', because we want to - # fail if there's a file with that name - if not os.path.isdir(base): # pragma: no cover - os.makedirs(base) - if (os.stat(base).st_mode & 0o77) != 0: - logger.warning('Directory \'%s\' is not private', base) - self.base = os.path.abspath(os.path.normpath(base)) - - def prefix_to_dir(self, prefix): - """ - Converts a resource prefix to a directory name in the cache. - """ - return path_to_cache_dir(prefix) - - def clear(self): - """ - Clear the cache. - """ - not_removed = [] - for fn in os.listdir(self.base): - fn = os.path.join(self.base, fn) - try: - if os.path.islink(fn) or os.path.isfile(fn): - os.remove(fn) - elif os.path.isdir(fn): - shutil.rmtree(fn) - except Exception: - not_removed.append(fn) - return not_removed - - -class EventMixin(object): - """ - A very simple publish/subscribe system. - """ - def __init__(self): - self._subscribers = {} - - def add(self, event, subscriber, append=True): - """ - Add a subscriber for an event. - - :param event: The name of an event. - :param subscriber: The subscriber to be added (and called when the - event is published). - :param append: Whether to append or prepend the subscriber to an - existing subscriber list for the event. - """ - subs = self._subscribers - if event not in subs: - subs[event] = deque([subscriber]) - else: - sq = subs[event] - if append: - sq.append(subscriber) - else: - sq.appendleft(subscriber) - - def remove(self, event, subscriber): - """ - Remove a subscriber for an event. - - :param event: The name of an event. - :param subscriber: The subscriber to be removed. - """ - subs = self._subscribers - if event not in subs: - raise ValueError('No subscribers: %r' % event) - subs[event].remove(subscriber) - - def get_subscribers(self, event): - """ - Return an iterator for the subscribers for an event. - :param event: The event to return subscribers for. - """ - return iter(self._subscribers.get(event, ())) - - def publish(self, event, *args, **kwargs): - """ - Publish a event and return a list of values returned by its - subscribers. - - :param event: The event to publish. - :param args: The positional arguments to pass to the event's - subscribers. - :param kwargs: The keyword arguments to pass to the event's - subscribers. - """ - result = [] - for subscriber in self.get_subscribers(event): - try: - value = subscriber(event, *args, **kwargs) - except Exception: - logger.exception('Exception during event publication') - value = None - result.append(value) - logger.debug('publish %s: args = %s, kwargs = %s, result = %s', - event, args, kwargs, result) - return result - -# -# Simple sequencing -# -class Sequencer(object): - def __init__(self): - self._preds = {} - self._succs = {} - self._nodes = set() # nodes with no preds/succs - - def add_node(self, node): - self._nodes.add(node) - - def remove_node(self, node, edges=False): - if node in self._nodes: - self._nodes.remove(node) - if edges: - for p in set(self._preds.get(node, ())): - self.remove(p, node) - for s in set(self._succs.get(node, ())): - self.remove(node, s) - # Remove empties - for k, v in list(self._preds.items()): - if not v: - del self._preds[k] - for k, v in list(self._succs.items()): - if not v: - del self._succs[k] - - def add(self, pred, succ): - assert pred != succ - self._preds.setdefault(succ, set()).add(pred) - self._succs.setdefault(pred, set()).add(succ) - - def remove(self, pred, succ): - assert pred != succ - try: - preds = self._preds[succ] - succs = self._succs[pred] - except KeyError: # pragma: no cover - raise ValueError('%r not a successor of anything' % succ) - try: - preds.remove(pred) - succs.remove(succ) - except KeyError: # pragma: no cover - raise ValueError('%r not a successor of %r' % (succ, pred)) - - def is_step(self, step): - return (step in self._preds or step in self._succs or - step in self._nodes) - - def get_steps(self, final): - if not self.is_step(final): - raise ValueError('Unknown: %r' % final) - result = [] - todo = [] - seen = set() - todo.append(final) - while todo: - step = todo.pop(0) - if step in seen: - # if a step was already seen, - # move it to the end (so it will appear earlier - # when reversed on return) ... but not for the - # final step, as that would be confusing for - # users - if step != final: - result.remove(step) - result.append(step) - else: - seen.add(step) - result.append(step) - preds = self._preds.get(step, ()) - todo.extend(preds) - return reversed(result) - - @property - def strong_connections(self): - #http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm - index_counter = [0] - stack = [] - lowlinks = {} - index = {} - result = [] - - graph = self._succs - - def strongconnect(node): - # set the depth index for this node to the smallest unused index - index[node] = index_counter[0] - lowlinks[node] = index_counter[0] - index_counter[0] += 1 - stack.append(node) - - # Consider successors - try: - successors = graph[node] - except Exception: - successors = [] - for successor in successors: - if successor not in lowlinks: - # Successor has not yet been visited - strongconnect(successor) - lowlinks[node] = min(lowlinks[node],lowlinks[successor]) - elif successor in stack: - # the successor is in the stack and hence in the current - # strongly connected component (SCC) - lowlinks[node] = min(lowlinks[node],index[successor]) - - # If `node` is a root node, pop the stack and generate an SCC - if lowlinks[node] == index[node]: - connected_component = [] - - while True: - successor = stack.pop() - connected_component.append(successor) - if successor == node: break - component = tuple(connected_component) - # storing the result - result.append(component) - - for node in graph: - if node not in lowlinks: - strongconnect(node) - - return result - - @property - def dot(self): - result = ['digraph G {'] - for succ in self._preds: - preds = self._preds[succ] - for pred in preds: - result.append(' %s -> %s;' % (pred, succ)) - for node in self._nodes: - result.append(' %s;' % node) - result.append('}') - return '\n'.join(result) - -# -# Unarchiving functionality for zip, tar, tgz, tbz, whl -# - -ARCHIVE_EXTENSIONS = ('.tar.gz', '.tar.bz2', '.tar', '.zip', - '.tgz', '.tbz', '.whl') - -def unarchive(archive_filename, dest_dir, format=None, check=True): - - def check_path(path): - if not isinstance(path, text_type): - path = path.decode('utf-8') - p = os.path.abspath(os.path.join(dest_dir, path)) - if not p.startswith(dest_dir) or p[plen] != os.sep: - raise ValueError('path outside destination: %r' % p) - - dest_dir = os.path.abspath(dest_dir) - plen = len(dest_dir) - archive = None - if format is None: - if archive_filename.endswith(('.zip', '.whl')): - format = 'zip' - elif archive_filename.endswith(('.tar.gz', '.tgz')): - format = 'tgz' - mode = 'r:gz' - elif archive_filename.endswith(('.tar.bz2', '.tbz')): - format = 'tbz' - mode = 'r:bz2' - elif archive_filename.endswith('.tar'): - format = 'tar' - mode = 'r' - else: # pragma: no cover - raise ValueError('Unknown format for %r' % archive_filename) - try: - if format == 'zip': - archive = ZipFile(archive_filename, 'r') - if check: - names = archive.namelist() - for name in names: - check_path(name) - else: - archive = tarfile.open(archive_filename, mode) - if check: - names = archive.getnames() - for name in names: - check_path(name) - if format != 'zip' and sys.version_info[0] < 3: - # See Python issue 17153. If the dest path contains Unicode, - # tarfile extraction fails on Python 2.x if a member path name - # contains non-ASCII characters - it leads to an implicit - # bytes -> unicode conversion using ASCII to decode. - for tarinfo in archive.getmembers(): - if not isinstance(tarinfo.name, text_type): - tarinfo.name = tarinfo.name.decode('utf-8') - archive.extractall(dest_dir) - - finally: - if archive: - archive.close() - - -def zip_dir(directory): - """zip a directory tree into a BytesIO object""" - result = io.BytesIO() - dlen = len(directory) - with ZipFile(result, "w") as zf: - for root, dirs, files in os.walk(directory): - for name in files: - full = os.path.join(root, name) - rel = root[dlen:] - dest = os.path.join(rel, name) - zf.write(full, dest) - return result - -# -# Simple progress bar -# - -UNITS = ('', 'K', 'M', 'G','T','P') - - -class Progress(object): - unknown = 'UNKNOWN' - - def __init__(self, minval=0, maxval=100): - assert maxval is None or maxval >= minval - self.min = self.cur = minval - self.max = maxval - self.started = None - self.elapsed = 0 - self.done = False - - def update(self, curval): - assert self.min <= curval - assert self.max is None or curval <= self.max - self.cur = curval - now = time.time() - if self.started is None: - self.started = now - else: - self.elapsed = now - self.started - - def increment(self, incr): - assert incr >= 0 - self.update(self.cur + incr) - - def start(self): - self.update(self.min) - return self - - def stop(self): - if self.max is not None: - self.update(self.max) - self.done = True - - @property - def maximum(self): - return self.unknown if self.max is None else self.max - - @property - def percentage(self): - if self.done: - result = '100 %' - elif self.max is None: - result = ' ?? %' - else: - v = 100.0 * (self.cur - self.min) / (self.max - self.min) - result = '%3d %%' % v - return result - - def format_duration(self, duration): - if (duration <= 0) and self.max is None or self.cur == self.min: - result = '??:??:??' - #elif duration < 1: - # result = '--:--:--' - else: - result = time.strftime('%H:%M:%S', time.gmtime(duration)) - return result - - @property - def ETA(self): - if self.done: - prefix = 'Done' - t = self.elapsed - #import pdb; pdb.set_trace() - else: - prefix = 'ETA ' - if self.max is None: - t = -1 - elif self.elapsed == 0 or (self.cur == self.min): - t = 0 - else: - #import pdb; pdb.set_trace() - t = float(self.max - self.min) - t /= self.cur - self.min - t = (t - 1) * self.elapsed - return '%s: %s' % (prefix, self.format_duration(t)) - - @property - def speed(self): - if self.elapsed == 0: - result = 0.0 - else: - result = (self.cur - self.min) / self.elapsed - for unit in UNITS: - if result < 1000: - break - result /= 1000.0 - return '%d %sB/s' % (result, unit) - -# -# Glob functionality -# - -RICH_GLOB = re.compile(r'\{([^}]*)\}') -_CHECK_RECURSIVE_GLOB = re.compile(r'[^/\\,{]\*\*|\*\*[^/\\,}]') -_CHECK_MISMATCH_SET = re.compile(r'^[^{]*\}|\{[^}]*$') - - -def iglob(path_glob): - """Extended globbing function that supports ** and {opt1,opt2,opt3}.""" - if _CHECK_RECURSIVE_GLOB.search(path_glob): - msg = """invalid glob %r: recursive glob "**" must be used alone""" - raise ValueError(msg % path_glob) - if _CHECK_MISMATCH_SET.search(path_glob): - msg = """invalid glob %r: mismatching set marker '{' or '}'""" - raise ValueError(msg % path_glob) - return _iglob(path_glob) - - -def _iglob(path_glob): - rich_path_glob = RICH_GLOB.split(path_glob, 1) - if len(rich_path_glob) > 1: - assert len(rich_path_glob) == 3, rich_path_glob - prefix, set, suffix = rich_path_glob - for item in set.split(','): - for path in _iglob(''.join((prefix, item, suffix))): - yield path - else: - if '**' not in path_glob: - for item in std_iglob(path_glob): - yield item - else: - prefix, radical = path_glob.split('**', 1) - if prefix == '': - prefix = '.' - if radical == '': - radical = '*' - else: - # we support both - radical = radical.lstrip('/') - radical = radical.lstrip('\\') - for path, dir, files in os.walk(prefix): - path = os.path.normpath(path) - for fn in _iglob(os.path.join(path, radical)): - yield fn - -if ssl: - from .compat import (HTTPSHandler as BaseHTTPSHandler, match_hostname, - CertificateError) - - -# -# HTTPSConnection which verifies certificates/matches domains -# - - class HTTPSConnection(httplib.HTTPSConnection): - ca_certs = None # set this to the path to the certs file (.pem) - check_domain = True # only used if ca_certs is not None - - # noinspection PyPropertyAccess - def connect(self): - sock = socket.create_connection((self.host, self.port), self.timeout) - if getattr(self, '_tunnel_host', False): - self.sock = sock - self._tunnel() - - if not hasattr(ssl, 'SSLContext'): - # For 2.x - if self.ca_certs: - cert_reqs = ssl.CERT_REQUIRED - else: - cert_reqs = ssl.CERT_NONE - self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file, - cert_reqs=cert_reqs, - ssl_version=ssl.PROTOCOL_SSLv23, - ca_certs=self.ca_certs) - else: # pragma: no cover - context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) - context.options |= ssl.OP_NO_SSLv2 - if self.cert_file: - context.load_cert_chain(self.cert_file, self.key_file) - kwargs = {} - if self.ca_certs: - context.verify_mode = ssl.CERT_REQUIRED - context.load_verify_locations(cafile=self.ca_certs) - if getattr(ssl, 'HAS_SNI', False): - kwargs['server_hostname'] = self.host - self.sock = context.wrap_socket(sock, **kwargs) - if self.ca_certs and self.check_domain: - try: - match_hostname(self.sock.getpeercert(), self.host) - logger.debug('Host verified: %s', self.host) - except CertificateError: # pragma: no cover - self.sock.shutdown(socket.SHUT_RDWR) - self.sock.close() - raise - - class HTTPSHandler(BaseHTTPSHandler): - def __init__(self, ca_certs, check_domain=True): - BaseHTTPSHandler.__init__(self) - self.ca_certs = ca_certs - self.check_domain = check_domain - - def _conn_maker(self, *args, **kwargs): - """ - This is called to create a connection instance. Normally you'd - pass a connection class to do_open, but it doesn't actually check for - a class, and just expects a callable. As long as we behave just as a - constructor would have, we should be OK. If it ever changes so that - we *must* pass a class, we'll create an UnsafeHTTPSConnection class - which just sets check_domain to False in the class definition, and - choose which one to pass to do_open. - """ - result = HTTPSConnection(*args, **kwargs) - if self.ca_certs: - result.ca_certs = self.ca_certs - result.check_domain = self.check_domain - return result - - def https_open(self, req): - try: - return self.do_open(self._conn_maker, req) - except URLError as e: - if 'certificate verify failed' in str(e.reason): - raise CertificateError('Unable to verify server certificate ' - 'for %s' % req.host) - else: - raise - - # - # To prevent against mixing HTTP traffic with HTTPS (examples: A Man-In-The- - # Middle proxy using HTTP listens on port 443, or an index mistakenly serves - # HTML containing a http://xyz link when it should be https://xyz), - # you can use the following handler class, which does not allow HTTP traffic. - # - # It works by inheriting from HTTPHandler - so build_opener won't add a - # handler for HTTP itself. - # - class HTTPSOnlyHandler(HTTPSHandler, HTTPHandler): - def http_open(self, req): - raise URLError('Unexpected HTTP request on what should be a secure ' - 'connection: %s' % req) - -# -# XML-RPC with timeouts -# - -_ver_info = sys.version_info[:2] - -if _ver_info == (2, 6): - class HTTP(httplib.HTTP): - def __init__(self, host='', port=None, **kwargs): - if port == 0: # 0 means use port 0, not the default port - port = None - self._setup(self._connection_class(host, port, **kwargs)) - - - if ssl: - class HTTPS(httplib.HTTPS): - def __init__(self, host='', port=None, **kwargs): - if port == 0: # 0 means use port 0, not the default port - port = None - self._setup(self._connection_class(host, port, **kwargs)) - - -class Transport(xmlrpclib.Transport): - def __init__(self, timeout, use_datetime=0): - self.timeout = timeout - xmlrpclib.Transport.__init__(self, use_datetime) - - def make_connection(self, host): - h, eh, x509 = self.get_host_info(host) - if _ver_info == (2, 6): - result = HTTP(h, timeout=self.timeout) - else: - if not self._connection or host != self._connection[0]: - self._extra_headers = eh - self._connection = host, httplib.HTTPConnection(h) - result = self._connection[1] - return result - -if ssl: - class SafeTransport(xmlrpclib.SafeTransport): - def __init__(self, timeout, use_datetime=0): - self.timeout = timeout - xmlrpclib.SafeTransport.__init__(self, use_datetime) - - def make_connection(self, host): - h, eh, kwargs = self.get_host_info(host) - if not kwargs: - kwargs = {} - kwargs['timeout'] = self.timeout - if _ver_info == (2, 6): - result = HTTPS(host, None, **kwargs) - else: - if not self._connection or host != self._connection[0]: - self._extra_headers = eh - self._connection = host, httplib.HTTPSConnection(h, None, - **kwargs) - result = self._connection[1] - return result - - -class ServerProxy(xmlrpclib.ServerProxy): - def __init__(self, uri, **kwargs): - self.timeout = timeout = kwargs.pop('timeout', None) - # The above classes only come into play if a timeout - # is specified - if timeout is not None: - scheme, _ = splittype(uri) - use_datetime = kwargs.get('use_datetime', 0) - if scheme == 'https': - tcls = SafeTransport - else: - tcls = Transport - kwargs['transport'] = t = tcls(timeout, use_datetime=use_datetime) - self.transport = t - xmlrpclib.ServerProxy.__init__(self, uri, **kwargs) - -# -# CSV functionality. This is provided because on 2.x, the csv module can't -# handle Unicode. However, we need to deal with Unicode in e.g. RECORD files. -# - -def _csv_open(fn, mode, **kwargs): - if sys.version_info[0] < 3: - mode += 'b' - else: - kwargs['newline'] = '' - return open(fn, mode, **kwargs) - - -class CSVBase(object): - defaults = { - 'delimiter': str(','), # The strs are used because we need native - 'quotechar': str('"'), # str in the csv API (2.x won't take - 'lineterminator': str('\n') # Unicode) - } - - def __enter__(self): - return self - - def __exit__(self, *exc_info): - self.stream.close() - - -class CSVReader(CSVBase): - def __init__(self, **kwargs): - if 'stream' in kwargs: - stream = kwargs['stream'] - if sys.version_info[0] >= 3: - # needs to be a text stream - stream = codecs.getreader('utf-8')(stream) - self.stream = stream - else: - self.stream = _csv_open(kwargs['path'], 'r') - self.reader = csv.reader(self.stream, **self.defaults) - - def __iter__(self): - return self - - def next(self): - result = next(self.reader) - if sys.version_info[0] < 3: - for i, item in enumerate(result): - if not isinstance(item, text_type): - result[i] = item.decode('utf-8') - return result - - __next__ = next - -class CSVWriter(CSVBase): - def __init__(self, fn, **kwargs): - self.stream = _csv_open(fn, 'w') - self.writer = csv.writer(self.stream, **self.defaults) - - def writerow(self, row): - if sys.version_info[0] < 3: - r = [] - for item in row: - if isinstance(item, text_type): - item = item.encode('utf-8') - r.append(item) - row = r - self.writer.writerow(row) - -# -# Configurator functionality -# - -class Configurator(BaseConfigurator): - - value_converters = dict(BaseConfigurator.value_converters) - value_converters['inc'] = 'inc_convert' - - def __init__(self, config, base=None): - super(Configurator, self).__init__(config) - self.base = base or os.getcwd() - - def configure_custom(self, config): - def convert(o): - if isinstance(o, (list, tuple)): - result = type(o)([convert(i) for i in o]) - elif isinstance(o, dict): - if '()' in o: - result = self.configure_custom(o) - else: - result = {} - for k in o: - result[k] = convert(o[k]) - else: - result = self.convert(o) - return result - - c = config.pop('()') - if not callable(c): - c = self.resolve(c) - props = config.pop('.', None) - # Check for valid identifiers - args = config.pop('[]', ()) - if args: - args = tuple([convert(o) for o in args]) - items = [(k, convert(config[k])) for k in config if valid_ident(k)] - kwargs = dict(items) - result = c(*args, **kwargs) - if props: - for n, v in props.items(): - setattr(result, n, convert(v)) - return result - - def __getitem__(self, key): - result = self.config[key] - if isinstance(result, dict) and '()' in result: - self.config[key] = result = self.configure_custom(result) - return result - - def inc_convert(self, value): - """Default converter for the inc:// protocol.""" - if not os.path.isabs(value): - value = os.path.join(self.base, value) - with codecs.open(value, 'r', encoding='utf-8') as f: - result = json.load(f) - return result - -# -# Mixin for running subprocesses and capturing their output -# - -class SubprocessMixin(object): - def __init__(self, verbose=False, progress=None): - self.verbose = verbose - self.progress = progress - - def reader(self, stream, context): - """ - Read lines from a subprocess' output stream and either pass to a progress - callable (if specified) or write progress information to sys.stderr. - """ - progress = self.progress - verbose = self.verbose - while True: - s = stream.readline() - if not s: - break - if progress is not None: - progress(s, context) - else: - if not verbose: - sys.stderr.write('.') - else: - sys.stderr.write(s.decode('utf-8')) - sys.stderr.flush() - stream.close() - - def run_command(self, cmd, **kwargs): - p = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, **kwargs) - t1 = threading.Thread(target=self.reader, args=(p.stdout, 'stdout')) - t1.start() - t2 = threading.Thread(target=self.reader, args=(p.stderr, 'stderr')) - t2.start() - p.wait() - t1.join() - t2.join() - if self.progress is not None: - self.progress('done.', 'main') - elif self.verbose: - sys.stderr.write('done.\n') - return p - - -def normalize_name(name): - """Normalize a python package name a la PEP 503""" - # https://www.python.org/dev/peps/pep-0503/#normalized-names - return re.sub('[-_.]+', '-', name).lower() diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/version.py b/env/lib/python3.6/site-packages/pip/_vendor/distlib/version.py deleted file mode 100644 index 48c17c0..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distlib/version.py +++ /dev/null @@ -1,742 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2012-2016 The Python Software Foundation. -# See LICENSE.txt and CONTRIBUTORS.txt. -# -""" -Implementation of a flexible versioning scheme providing support for PEP-440, -setuptools-compatible and semantic versioning. -""" - -import logging -import re - -from .compat import string_types - -__all__ = ['NormalizedVersion', 'NormalizedMatcher', - 'LegacyVersion', 'LegacyMatcher', - 'SemanticVersion', 'SemanticMatcher', - 'UnsupportedVersionError', 'get_scheme'] - -logger = logging.getLogger(__name__) - - -class UnsupportedVersionError(ValueError): - """This is an unsupported version.""" - pass - - -class Version(object): - def __init__(self, s): - self._string = s = s.strip() - self._parts = parts = self.parse(s) - assert isinstance(parts, tuple) - assert len(parts) > 0 - - def parse(self, s): - raise NotImplementedError('please implement in a subclass') - - def _check_compatible(self, other): - if type(self) != type(other): - raise TypeError('cannot compare %r and %r' % (self, other)) - - def __eq__(self, other): - self._check_compatible(other) - return self._parts == other._parts - - def __ne__(self, other): - return not self.__eq__(other) - - def __lt__(self, other): - self._check_compatible(other) - return self._parts < other._parts - - def __gt__(self, other): - return not (self.__lt__(other) or self.__eq__(other)) - - def __le__(self, other): - return self.__lt__(other) or self.__eq__(other) - - def __ge__(self, other): - return self.__gt__(other) or self.__eq__(other) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - def __hash__(self): - return hash(self._parts) - - def __repr__(self): - return "%s('%s')" % (self.__class__.__name__, self._string) - - def __str__(self): - return self._string - - @property - def is_prerelease(self): - raise NotImplementedError('Please implement in subclasses.') - - -class Matcher(object): - version_class = None - - dist_re = re.compile(r"^(\w[\s\w'.-]*)(\((.*)\))?") - comp_re = re.compile(r'^(<=|>=|<|>|!=|={2,3}|~=)?\s*([^\s,]+)$') - num_re = re.compile(r'^\d+(\.\d+)*$') - - # value is either a callable or the name of a method - _operators = { - '<': lambda v, c, p: v < c, - '>': lambda v, c, p: v > c, - '<=': lambda v, c, p: v == c or v < c, - '>=': lambda v, c, p: v == c or v > c, - '==': lambda v, c, p: v == c, - '===': lambda v, c, p: v == c, - # by default, compatible => >=. - '~=': lambda v, c, p: v == c or v > c, - '!=': lambda v, c, p: v != c, - } - - def __init__(self, s): - if self.version_class is None: - raise ValueError('Please specify a version class') - self._string = s = s.strip() - m = self.dist_re.match(s) - if not m: - raise ValueError('Not valid: %r' % s) - groups = m.groups('') - self.name = groups[0].strip() - self.key = self.name.lower() # for case-insensitive comparisons - clist = [] - if groups[2]: - constraints = [c.strip() for c in groups[2].split(',')] - for c in constraints: - m = self.comp_re.match(c) - if not m: - raise ValueError('Invalid %r in %r' % (c, s)) - groups = m.groups() - op = groups[0] or '~=' - s = groups[1] - if s.endswith('.*'): - if op not in ('==', '!='): - raise ValueError('\'.*\' not allowed for ' - '%r constraints' % op) - # Could be a partial version (e.g. for '2.*') which - # won't parse as a version, so keep it as a string - vn, prefix = s[:-2], True - if not self.num_re.match(vn): - # Just to check that vn is a valid version - self.version_class(vn) - else: - # Should parse as a version, so we can create an - # instance for the comparison - vn, prefix = self.version_class(s), False - clist.append((op, vn, prefix)) - self._parts = tuple(clist) - - def match(self, version): - """ - Check if the provided version matches the constraints. - - :param version: The version to match against this instance. - :type version: String or :class:`Version` instance. - """ - if isinstance(version, string_types): - version = self.version_class(version) - for operator, constraint, prefix in self._parts: - f = self._operators.get(operator) - if isinstance(f, string_types): - f = getattr(self, f) - if not f: - msg = ('%r not implemented ' - 'for %s' % (operator, self.__class__.__name__)) - raise NotImplementedError(msg) - if not f(version, constraint, prefix): - return False - return True - - @property - def exact_version(self): - result = None - if len(self._parts) == 1 and self._parts[0][0] in ('==', '==='): - result = self._parts[0][1] - return result - - def _check_compatible(self, other): - if type(self) != type(other) or self.name != other.name: - raise TypeError('cannot compare %s and %s' % (self, other)) - - def __eq__(self, other): - self._check_compatible(other) - return self.key == other.key and self._parts == other._parts - - def __ne__(self, other): - return not self.__eq__(other) - - # See http://docs.python.org/reference/datamodel#object.__hash__ - def __hash__(self): - return hash(self.key) + hash(self._parts) - - def __repr__(self): - return "%s(%r)" % (self.__class__.__name__, self._string) - - def __str__(self): - return self._string - - -PEP440_VERSION_RE = re.compile(r'^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?' - r'(\.(post)(\d+))?(\.(dev)(\d+))?' - r'(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$') - - -def _pep_440_key(s): - s = s.strip() - m = PEP440_VERSION_RE.match(s) - if not m: - raise UnsupportedVersionError('Not a valid version: %s' % s) - groups = m.groups() - nums = tuple(int(v) for v in groups[1].split('.')) - while len(nums) > 1 and nums[-1] == 0: - nums = nums[:-1] - - if not groups[0]: - epoch = 0 - else: - epoch = int(groups[0]) - pre = groups[4:6] - post = groups[7:9] - dev = groups[10:12] - local = groups[13] - if pre == (None, None): - pre = () - else: - pre = pre[0], int(pre[1]) - if post == (None, None): - post = () - else: - post = post[0], int(post[1]) - if dev == (None, None): - dev = () - else: - dev = dev[0], int(dev[1]) - if local is None: - local = () - else: - parts = [] - for part in local.split('.'): - # to ensure that numeric compares as > lexicographic, avoid - # comparing them directly, but encode a tuple which ensures - # correct sorting - if part.isdigit(): - part = (1, int(part)) - else: - part = (0, part) - parts.append(part) - local = tuple(parts) - if not pre: - # either before pre-release, or final release and after - if not post and dev: - # before pre-release - pre = ('a', -1) # to sort before a0 - else: - pre = ('z',) # to sort after all pre-releases - # now look at the state of post and dev. - if not post: - post = ('_',) # sort before 'a' - if not dev: - dev = ('final',) - - #print('%s -> %s' % (s, m.groups())) - return epoch, nums, pre, post, dev, local - - -_normalized_key = _pep_440_key - - -class NormalizedVersion(Version): - """A rational version. - - Good: - 1.2 # equivalent to "1.2.0" - 1.2.0 - 1.2a1 - 1.2.3a2 - 1.2.3b1 - 1.2.3c1 - 1.2.3.4 - TODO: fill this out - - Bad: - 1 # minimum two numbers - 1.2a # release level must have a release serial - 1.2.3b - """ - def parse(self, s): - result = _normalized_key(s) - # _normalized_key loses trailing zeroes in the release - # clause, since that's needed to ensure that X.Y == X.Y.0 == X.Y.0.0 - # However, PEP 440 prefix matching needs it: for example, - # (~= 1.4.5.0) matches differently to (~= 1.4.5.0.0). - m = PEP440_VERSION_RE.match(s) # must succeed - groups = m.groups() - self._release_clause = tuple(int(v) for v in groups[1].split('.')) - return result - - PREREL_TAGS = set(['a', 'b', 'c', 'rc', 'dev']) - - @property - def is_prerelease(self): - return any(t[0] in self.PREREL_TAGS for t in self._parts if t) - - -def _match_prefix(x, y): - x = str(x) - y = str(y) - if x == y: - return True - if not x.startswith(y): - return False - n = len(y) - return x[n] == '.' - - -class NormalizedMatcher(Matcher): - version_class = NormalizedVersion - - # value is either a callable or the name of a method - _operators = { - '~=': '_match_compatible', - '<': '_match_lt', - '>': '_match_gt', - '<=': '_match_le', - '>=': '_match_ge', - '==': '_match_eq', - '===': '_match_arbitrary', - '!=': '_match_ne', - } - - def _adjust_local(self, version, constraint, prefix): - if prefix: - strip_local = '+' not in constraint and version._parts[-1] - else: - # both constraint and version are - # NormalizedVersion instances. - # If constraint does not have a local component, - # ensure the version doesn't, either. - strip_local = not constraint._parts[-1] and version._parts[-1] - if strip_local: - s = version._string.split('+', 1)[0] - version = self.version_class(s) - return version, constraint - - def _match_lt(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if version >= constraint: - return False - release_clause = constraint._release_clause - pfx = '.'.join([str(i) for i in release_clause]) - return not _match_prefix(version, pfx) - - def _match_gt(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if version <= constraint: - return False - release_clause = constraint._release_clause - pfx = '.'.join([str(i) for i in release_clause]) - return not _match_prefix(version, pfx) - - def _match_le(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - return version <= constraint - - def _match_ge(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - return version >= constraint - - def _match_eq(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if not prefix: - result = (version == constraint) - else: - result = _match_prefix(version, constraint) - return result - - def _match_arbitrary(self, version, constraint, prefix): - return str(version) == str(constraint) - - def _match_ne(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if not prefix: - result = (version != constraint) - else: - result = not _match_prefix(version, constraint) - return result - - def _match_compatible(self, version, constraint, prefix): - version, constraint = self._adjust_local(version, constraint, prefix) - if version == constraint: - return True - if version < constraint: - return False -# if not prefix: -# return True - release_clause = constraint._release_clause - if len(release_clause) > 1: - release_clause = release_clause[:-1] - pfx = '.'.join([str(i) for i in release_clause]) - return _match_prefix(version, pfx) - -_REPLACEMENTS = ( - (re.compile('[.+-]$'), ''), # remove trailing puncts - (re.compile(r'^[.](\d)'), r'0.\1'), # .N -> 0.N at start - (re.compile('^[.-]'), ''), # remove leading puncts - (re.compile(r'^\((.*)\)$'), r'\1'), # remove parentheses - (re.compile(r'^v(ersion)?\s*(\d+)'), r'\2'), # remove leading v(ersion) - (re.compile(r'^r(ev)?\s*(\d+)'), r'\2'), # remove leading v(ersion) - (re.compile('[.]{2,}'), '.'), # multiple runs of '.' - (re.compile(r'\b(alfa|apha)\b'), 'alpha'), # misspelt alpha - (re.compile(r'\b(pre-alpha|prealpha)\b'), - 'pre.alpha'), # standardise - (re.compile(r'\(beta\)$'), 'beta'), # remove parentheses -) - -_SUFFIX_REPLACEMENTS = ( - (re.compile('^[:~._+-]+'), ''), # remove leading puncts - (re.compile('[,*")([\]]'), ''), # remove unwanted chars - (re.compile('[~:+_ -]'), '.'), # replace illegal chars - (re.compile('[.]{2,}'), '.'), # multiple runs of '.' - (re.compile(r'\.$'), ''), # trailing '.' -) - -_NUMERIC_PREFIX = re.compile(r'(\d+(\.\d+)*)') - - -def _suggest_semantic_version(s): - """ - Try to suggest a semantic form for a version for which - _suggest_normalized_version couldn't come up with anything. - """ - result = s.strip().lower() - for pat, repl in _REPLACEMENTS: - result = pat.sub(repl, result) - if not result: - result = '0.0.0' - - # Now look for numeric prefix, and separate it out from - # the rest. - #import pdb; pdb.set_trace() - m = _NUMERIC_PREFIX.match(result) - if not m: - prefix = '0.0.0' - suffix = result - else: - prefix = m.groups()[0].split('.') - prefix = [int(i) for i in prefix] - while len(prefix) < 3: - prefix.append(0) - if len(prefix) == 3: - suffix = result[m.end():] - else: - suffix = '.'.join([str(i) for i in prefix[3:]]) + result[m.end():] - prefix = prefix[:3] - prefix = '.'.join([str(i) for i in prefix]) - suffix = suffix.strip() - if suffix: - #import pdb; pdb.set_trace() - # massage the suffix. - for pat, repl in _SUFFIX_REPLACEMENTS: - suffix = pat.sub(repl, suffix) - - if not suffix: - result = prefix - else: - sep = '-' if 'dev' in suffix else '+' - result = prefix + sep + suffix - if not is_semver(result): - result = None - return result - - -def _suggest_normalized_version(s): - """Suggest a normalized version close to the given version string. - - If you have a version string that isn't rational (i.e. NormalizedVersion - doesn't like it) then you might be able to get an equivalent (or close) - rational version from this function. - - This does a number of simple normalizations to the given string, based - on observation of versions currently in use on PyPI. Given a dump of - those version during PyCon 2009, 4287 of them: - - 2312 (53.93%) match NormalizedVersion without change - with the automatic suggestion - - 3474 (81.04%) match when using this suggestion method - - @param s {str} An irrational version string. - @returns A rational version string, or None, if couldn't determine one. - """ - try: - _normalized_key(s) - return s # already rational - except UnsupportedVersionError: - pass - - rs = s.lower() - - # part of this could use maketrans - for orig, repl in (('-alpha', 'a'), ('-beta', 'b'), ('alpha', 'a'), - ('beta', 'b'), ('rc', 'c'), ('-final', ''), - ('-pre', 'c'), - ('-release', ''), ('.release', ''), ('-stable', ''), - ('+', '.'), ('_', '.'), (' ', ''), ('.final', ''), - ('final', '')): - rs = rs.replace(orig, repl) - - # if something ends with dev or pre, we add a 0 - rs = re.sub(r"pre$", r"pre0", rs) - rs = re.sub(r"dev$", r"dev0", rs) - - # if we have something like "b-2" or "a.2" at the end of the - # version, that is probably beta, alpha, etc - # let's remove the dash or dot - rs = re.sub(r"([abc]|rc)[\-\.](\d+)$", r"\1\2", rs) - - # 1.0-dev-r371 -> 1.0.dev371 - # 0.1-dev-r79 -> 0.1.dev79 - rs = re.sub(r"[\-\.](dev)[\-\.]?r?(\d+)$", r".\1\2", rs) - - # Clean: 2.0.a.3, 2.0.b1, 0.9.0~c1 - rs = re.sub(r"[.~]?([abc])\.?", r"\1", rs) - - # Clean: v0.3, v1.0 - if rs.startswith('v'): - rs = rs[1:] - - # Clean leading '0's on numbers. - #TODO: unintended side-effect on, e.g., "2003.05.09" - # PyPI stats: 77 (~2%) better - rs = re.sub(r"\b0+(\d+)(?!\d)", r"\1", rs) - - # Clean a/b/c with no version. E.g. "1.0a" -> "1.0a0". Setuptools infers - # zero. - # PyPI stats: 245 (7.56%) better - rs = re.sub(r"(\d+[abc])$", r"\g<1>0", rs) - - # the 'dev-rNNN' tag is a dev tag - rs = re.sub(r"\.?(dev-r|dev\.r)\.?(\d+)$", r".dev\2", rs) - - # clean the - when used as a pre delimiter - rs = re.sub(r"-(a|b|c)(\d+)$", r"\1\2", rs) - - # a terminal "dev" or "devel" can be changed into ".dev0" - rs = re.sub(r"[\.\-](dev|devel)$", r".dev0", rs) - - # a terminal "dev" can be changed into ".dev0" - rs = re.sub(r"(?![\.\-])dev$", r".dev0", rs) - - # a terminal "final" or "stable" can be removed - rs = re.sub(r"(final|stable)$", "", rs) - - # The 'r' and the '-' tags are post release tags - # 0.4a1.r10 -> 0.4a1.post10 - # 0.9.33-17222 -> 0.9.33.post17222 - # 0.9.33-r17222 -> 0.9.33.post17222 - rs = re.sub(r"\.?(r|-|-r)\.?(\d+)$", r".post\2", rs) - - # Clean 'r' instead of 'dev' usage: - # 0.9.33+r17222 -> 0.9.33.dev17222 - # 1.0dev123 -> 1.0.dev123 - # 1.0.git123 -> 1.0.dev123 - # 1.0.bzr123 -> 1.0.dev123 - # 0.1a0dev.123 -> 0.1a0.dev123 - # PyPI stats: ~150 (~4%) better - rs = re.sub(r"\.?(dev|git|bzr)\.?(\d+)$", r".dev\2", rs) - - # Clean '.pre' (normalized from '-pre' above) instead of 'c' usage: - # 0.2.pre1 -> 0.2c1 - # 0.2-c1 -> 0.2c1 - # 1.0preview123 -> 1.0c123 - # PyPI stats: ~21 (0.62%) better - rs = re.sub(r"\.?(pre|preview|-c)(\d+)$", r"c\g<2>", rs) - - # Tcl/Tk uses "px" for their post release markers - rs = re.sub(r"p(\d+)$", r".post\1", rs) - - try: - _normalized_key(rs) - except UnsupportedVersionError: - rs = None - return rs - -# -# Legacy version processing (distribute-compatible) -# - -_VERSION_PART = re.compile(r'([a-z]+|\d+|[\.-])', re.I) -_VERSION_REPLACE = { - 'pre': 'c', - 'preview': 'c', - '-': 'final-', - 'rc': 'c', - 'dev': '@', - '': None, - '.': None, -} - - -def _legacy_key(s): - def get_parts(s): - result = [] - for p in _VERSION_PART.split(s.lower()): - p = _VERSION_REPLACE.get(p, p) - if p: - if '0' <= p[:1] <= '9': - p = p.zfill(8) - else: - p = '*' + p - result.append(p) - result.append('*final') - return result - - result = [] - for p in get_parts(s): - if p.startswith('*'): - if p < '*final': - while result and result[-1] == '*final-': - result.pop() - while result and result[-1] == '00000000': - result.pop() - result.append(p) - return tuple(result) - - -class LegacyVersion(Version): - def parse(self, s): - return _legacy_key(s) - - @property - def is_prerelease(self): - result = False - for x in self._parts: - if (isinstance(x, string_types) and x.startswith('*') and - x < '*final'): - result = True - break - return result - - -class LegacyMatcher(Matcher): - version_class = LegacyVersion - - _operators = dict(Matcher._operators) - _operators['~='] = '_match_compatible' - - numeric_re = re.compile('^(\d+(\.\d+)*)') - - def _match_compatible(self, version, constraint, prefix): - if version < constraint: - return False - m = self.numeric_re.match(str(constraint)) - if not m: - logger.warning('Cannot compute compatible match for version %s ' - ' and constraint %s', version, constraint) - return True - s = m.groups()[0] - if '.' in s: - s = s.rsplit('.', 1)[0] - return _match_prefix(version, s) - -# -# Semantic versioning -# - -_SEMVER_RE = re.compile(r'^(\d+)\.(\d+)\.(\d+)' - r'(-[a-z0-9]+(\.[a-z0-9-]+)*)?' - r'(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$', re.I) - - -def is_semver(s): - return _SEMVER_RE.match(s) - - -def _semantic_key(s): - def make_tuple(s, absent): - if s is None: - result = (absent,) - else: - parts = s[1:].split('.') - # We can't compare ints and strings on Python 3, so fudge it - # by zero-filling numeric values so simulate a numeric comparison - result = tuple([p.zfill(8) if p.isdigit() else p for p in parts]) - return result - - m = is_semver(s) - if not m: - raise UnsupportedVersionError(s) - groups = m.groups() - major, minor, patch = [int(i) for i in groups[:3]] - # choose the '|' and '*' so that versions sort correctly - pre, build = make_tuple(groups[3], '|'), make_tuple(groups[5], '*') - return (major, minor, patch), pre, build - - -class SemanticVersion(Version): - def parse(self, s): - return _semantic_key(s) - - @property - def is_prerelease(self): - return self._parts[1][0] != '|' - - -class SemanticMatcher(Matcher): - version_class = SemanticVersion - - -class VersionScheme(object): - def __init__(self, key, matcher, suggester=None): - self.key = key - self.matcher = matcher - self.suggester = suggester - - def is_valid_version(self, s): - try: - self.matcher.version_class(s) - result = True - except UnsupportedVersionError: - result = False - return result - - def is_valid_matcher(self, s): - try: - self.matcher(s) - result = True - except UnsupportedVersionError: - result = False - return result - - def is_valid_constraint_list(self, s): - """ - Used for processing some metadata fields - """ - return self.is_valid_matcher('dummy_name (%s)' % s) - - def suggest(self, s): - if self.suggester is None: - result = None - else: - result = self.suggester(s) - return result - -_SCHEMES = { - 'normalized': VersionScheme(_normalized_key, NormalizedMatcher, - _suggest_normalized_version), - 'legacy': VersionScheme(_legacy_key, LegacyMatcher, lambda self, s: s), - 'semantic': VersionScheme(_semantic_key, SemanticMatcher, - _suggest_semantic_version), -} - -_SCHEMES['default'] = _SCHEMES['normalized'] - - -def get_scheme(name): - if name not in _SCHEMES: - raise ValueError('unknown scheme name: %r' % name) - return _SCHEMES[name] diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distlib/w32.exe b/env/lib/python3.6/site-packages/pip/_vendor/distlib/w32.exe deleted file mode 100644 index 85a90a5f51a9596679a7365eadd3352443b95782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85504 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[^-]+) --(?P\d+[^-]*) -(-(?P\d+[^-]*))? --(?P\w+\d+(\.\w+\d+)*) --(?P\w+) --(?P\w+(\.\w+)*) -\.whl$ -''', re.IGNORECASE | re.VERBOSE) - -NAME_VERSION_RE = re.compile(r''' -(?P[^-]+) --(?P\d+[^-]*) -(-(?P\d+[^-]*))?$ -''', re.IGNORECASE | re.VERBOSE) - -SHEBANG_RE = re.compile(br'\s*#![^\r\n]*') -SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$') -SHEBANG_PYTHON = b'#!python' -SHEBANG_PYTHONW = b'#!pythonw' - -if os.sep == '/': - to_posix = lambda o: o -else: - to_posix = lambda o: o.replace(os.sep, '/') - - -class Mounter(object): - def __init__(self): - self.impure_wheels = {} - self.libs = {} - - def add(self, pathname, extensions): - self.impure_wheels[pathname] = extensions - self.libs.update(extensions) - - def remove(self, pathname): - extensions = self.impure_wheels.pop(pathname) - for k, v in extensions: - if k in self.libs: - del self.libs[k] - - def find_module(self, fullname, path=None): - if fullname in self.libs: - result = self - else: - result = None - return result - - def load_module(self, fullname): - if fullname in sys.modules: - result = sys.modules[fullname] - else: - if fullname not in self.libs: - raise ImportError('unable to find extension for %s' % fullname) - result = imp.load_dynamic(fullname, self.libs[fullname]) - result.__loader__ = self - parts = fullname.rsplit('.', 1) - if len(parts) > 1: - result.__package__ = parts[0] - return result - -_hook = Mounter() - - -class Wheel(object): - """ - Class to build and install from Wheel files (PEP 427). - """ - - wheel_version = (1, 1) - hash_kind = 'sha256' - - def __init__(self, filename=None, sign=False, verify=False): - """ - Initialise an instance using a (valid) filename. - """ - self.sign = sign - self.should_verify = verify - self.buildver = '' - self.pyver = [PYVER] - self.abi = ['none'] - self.arch = ['any'] - self.dirname = os.getcwd() - if filename is None: - self.name = 'dummy' - self.version = '0.1' - self._filename = self.filename - else: - m = NAME_VERSION_RE.match(filename) - if m: - info = m.groupdict('') - self.name = info['nm'] - # Reinstate the local version separator - self.version = info['vn'].replace('_', '-') - self.buildver = info['bn'] - self._filename = self.filename - else: - dirname, filename = os.path.split(filename) - m = FILENAME_RE.match(filename) - if not m: - raise DistlibException('Invalid name or ' - 'filename: %r' % filename) - if dirname: - self.dirname = os.path.abspath(dirname) - self._filename = filename - info = m.groupdict('') - self.name = info['nm'] - self.version = info['vn'] - self.buildver = info['bn'] - self.pyver = info['py'].split('.') - self.abi = info['bi'].split('.') - self.arch = info['ar'].split('.') - - @property - def filename(self): - """ - Build and return a filename from the various components. - """ - if self.buildver: - buildver = '-' + self.buildver - else: - buildver = '' - pyver = '.'.join(self.pyver) - abi = '.'.join(self.abi) - arch = '.'.join(self.arch) - # replace - with _ as a local version separator - version = self.version.replace('-', '_') - return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver, - pyver, abi, arch) - - @property - def exists(self): - path = os.path.join(self.dirname, self.filename) - return os.path.isfile(path) - - @property - def tags(self): - for pyver in self.pyver: - for abi in self.abi: - for arch in self.arch: - yield pyver, abi, arch - - @cached_property - def metadata(self): - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - wrapper = codecs.getreader('utf-8') - with ZipFile(pathname, 'r') as zf: - wheel_metadata = self.get_wheel_metadata(zf) - wv = wheel_metadata['Wheel-Version'].split('.', 1) - file_version = tuple([int(i) for i in wv]) - if file_version < (1, 1): - fn = 'METADATA' - else: - fn = METADATA_FILENAME - try: - metadata_filename = posixpath.join(info_dir, fn) - with zf.open(metadata_filename) as bf: - wf = wrapper(bf) - result = Metadata(fileobj=wf) - except KeyError: - raise ValueError('Invalid wheel, because %s is ' - 'missing' % fn) - return result - - def get_wheel_metadata(self, zf): - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - metadata_filename = posixpath.join(info_dir, 'WHEEL') - with zf.open(metadata_filename) as bf: - wf = codecs.getreader('utf-8')(bf) - message = message_from_file(wf) - return dict(message) - - @cached_property - def info(self): - pathname = os.path.join(self.dirname, self.filename) - with ZipFile(pathname, 'r') as zf: - result = self.get_wheel_metadata(zf) - return result - - def process_shebang(self, data): - m = SHEBANG_RE.match(data) - if m: - end = m.end() - shebang, data_after_shebang = data[:end], data[end:] - # Preserve any arguments after the interpreter - if b'pythonw' in shebang.lower(): - shebang_python = SHEBANG_PYTHONW - else: - shebang_python = SHEBANG_PYTHON - m = SHEBANG_DETAIL_RE.match(shebang) - if m: - args = b' ' + m.groups()[-1] - else: - args = b'' - shebang = shebang_python + args - data = shebang + data_after_shebang - else: - cr = data.find(b'\r') - lf = data.find(b'\n') - if cr < 0 or cr > lf: - term = b'\n' - else: - if data[cr:cr + 2] == b'\r\n': - term = b'\r\n' - else: - term = b'\r' - data = SHEBANG_PYTHON + term + data - return data - - def get_hash(self, data, hash_kind=None): - if hash_kind is None: - hash_kind = self.hash_kind - try: - hasher = getattr(hashlib, hash_kind) - except AttributeError: - raise DistlibException('Unsupported hash algorithm: %r' % hash_kind) - result = hasher(data).digest() - result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii') - return hash_kind, result - - def write_record(self, records, record_path, base): - records = list(records) # make a copy for sorting - p = to_posix(os.path.relpath(record_path, base)) - records.append((p, '', '')) - records.sort() - with CSVWriter(record_path) as writer: - for row in records: - writer.writerow(row) - - def write_records(self, info, libdir, archive_paths): - records = [] - distinfo, info_dir = info - hasher = getattr(hashlib, self.hash_kind) - for ap, p in archive_paths: - with open(p, 'rb') as f: - data = f.read() - digest = '%s=%s' % self.get_hash(data) - size = os.path.getsize(p) - records.append((ap, digest, size)) - - p = os.path.join(distinfo, 'RECORD') - self.write_record(records, p, libdir) - ap = to_posix(os.path.join(info_dir, 'RECORD')) - archive_paths.append((ap, p)) - - def build_zip(self, pathname, archive_paths): - with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf: - for ap, p in archive_paths: - logger.debug('Wrote %s to %s in wheel', p, ap) - zf.write(p, ap) - - def build(self, paths, tags=None, wheel_version=None): - """ - Build a wheel from files in specified paths, and use any specified tags - when determining the name of the wheel. - """ - if tags is None: - tags = {} - - libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0] - if libkey == 'platlib': - is_pure = 'false' - default_pyver = [IMPVER] - default_abi = [ABI] - default_arch = [ARCH] - else: - is_pure = 'true' - default_pyver = [PYVER] - default_abi = ['none'] - default_arch = ['any'] - - self.pyver = tags.get('pyver', default_pyver) - self.abi = tags.get('abi', default_abi) - self.arch = tags.get('arch', default_arch) - - libdir = paths[libkey] - - name_ver = '%s-%s' % (self.name, self.version) - data_dir = '%s.data' % name_ver - info_dir = '%s.dist-info' % name_ver - - archive_paths = [] - - # First, stuff which is not in site-packages - for key in ('data', 'headers', 'scripts'): - if key not in paths: - continue - path = paths[key] - if os.path.isdir(path): - for root, dirs, files in os.walk(path): - for fn in files: - p = fsdecode(os.path.join(root, fn)) - rp = os.path.relpath(p, path) - ap = to_posix(os.path.join(data_dir, key, rp)) - archive_paths.append((ap, p)) - if key == 'scripts' and not p.endswith('.exe'): - with open(p, 'rb') as f: - data = f.read() - data = self.process_shebang(data) - with open(p, 'wb') as f: - f.write(data) - - # Now, stuff which is in site-packages, other than the - # distinfo stuff. - path = libdir - distinfo = None - for root, dirs, files in os.walk(path): - if root == path: - # At the top level only, save distinfo for later - # and skip it for now - for i, dn in enumerate(dirs): - dn = fsdecode(dn) - if dn.endswith('.dist-info'): - distinfo = os.path.join(root, dn) - del dirs[i] - break - assert distinfo, '.dist-info directory expected, not found' - - for fn in files: - # comment out next suite to leave .pyc files in - if fsdecode(fn).endswith(('.pyc', '.pyo')): - continue - p = os.path.join(root, fn) - rp = to_posix(os.path.relpath(p, path)) - archive_paths.append((rp, p)) - - # Now distinfo. Assumed to be flat, i.e. os.listdir is enough. - files = os.listdir(distinfo) - for fn in files: - if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'): - p = fsdecode(os.path.join(distinfo, fn)) - ap = to_posix(os.path.join(info_dir, fn)) - archive_paths.append((ap, p)) - - wheel_metadata = [ - 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version), - 'Generator: distlib %s' % __version__, - 'Root-Is-Purelib: %s' % is_pure, - ] - for pyver, abi, arch in self.tags: - wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch)) - p = os.path.join(distinfo, 'WHEEL') - with open(p, 'w') as f: - f.write('\n'.join(wheel_metadata)) - ap = to_posix(os.path.join(info_dir, 'WHEEL')) - archive_paths.append((ap, p)) - - # Now, at last, RECORD. - # Paths in here are archive paths - nothing else makes sense. - self.write_records((distinfo, info_dir), libdir, archive_paths) - # Now, ready to build the zip file - pathname = os.path.join(self.dirname, self.filename) - self.build_zip(pathname, archive_paths) - return pathname - - def install(self, paths, maker, **kwargs): - """ - Install a wheel to the specified paths. If kwarg ``warner`` is - specified, it should be a callable, which will be called with two - tuples indicating the wheel version of this software and the wheel - version in the file, if there is a discrepancy in the versions. - This can be used to issue any warnings to raise any exceptions. - If kwarg ``lib_only`` is True, only the purelib/platlib files are - installed, and the headers, scripts, data and dist-info metadata are - not written. - - The return value is a :class:`InstalledDistribution` instance unless - ``options.lib_only`` is True, in which case the return value is ``None``. - """ - - dry_run = maker.dry_run - warner = kwargs.get('warner') - lib_only = kwargs.get('lib_only', False) - - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - data_dir = '%s.data' % name_ver - info_dir = '%s.dist-info' % name_ver - - metadata_name = posixpath.join(info_dir, METADATA_FILENAME) - wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') - record_name = posixpath.join(info_dir, 'RECORD') - - wrapper = codecs.getreader('utf-8') - - with ZipFile(pathname, 'r') as zf: - with zf.open(wheel_metadata_name) as bwf: - wf = wrapper(bwf) - message = message_from_file(wf) - wv = message['Wheel-Version'].split('.', 1) - file_version = tuple([int(i) for i in wv]) - if (file_version != self.wheel_version) and warner: - warner(self.wheel_version, file_version) - - if message['Root-Is-Purelib'] == 'true': - libdir = paths['purelib'] - else: - libdir = paths['platlib'] - - records = {} - with zf.open(record_name) as bf: - with CSVReader(stream=bf) as reader: - for row in reader: - p = row[0] - records[p] = row - - data_pfx = posixpath.join(data_dir, '') - info_pfx = posixpath.join(info_dir, '') - script_pfx = posixpath.join(data_dir, 'scripts', '') - - # make a new instance rather than a copy of maker's, - # as we mutate it - fileop = FileOperator(dry_run=dry_run) - fileop.record = True # so we can rollback if needed - - bc = not sys.dont_write_bytecode # Double negatives. Lovely! - - outfiles = [] # for RECORD writing - - # for script copying/shebang processing - workdir = tempfile.mkdtemp() - # set target dir later - # we default add_launchers to False, as the - # Python Launcher should be used instead - maker.source_dir = workdir - maker.target_dir = None - try: - for zinfo in zf.infolist(): - arcname = zinfo.filename - if isinstance(arcname, text_type): - u_arcname = arcname - else: - u_arcname = arcname.decode('utf-8') - # The signature file won't be in RECORD, - # and we don't currently don't do anything with it - if u_arcname.endswith('/RECORD.jws'): - continue - row = records[u_arcname] - if row[2] and str(zinfo.file_size) != row[2]: - raise DistlibException('size mismatch for ' - '%s' % u_arcname) - if row[1]: - kind, value = row[1].split('=', 1) - with zf.open(arcname) as bf: - data = bf.read() - _, digest = self.get_hash(data, kind) - if digest != value: - raise DistlibException('digest mismatch for ' - '%s' % arcname) - - if lib_only and u_arcname.startswith((info_pfx, data_pfx)): - logger.debug('lib_only: skipping %s', u_arcname) - continue - is_script = (u_arcname.startswith(script_pfx) - and not u_arcname.endswith('.exe')) - - if u_arcname.startswith(data_pfx): - _, where, rp = u_arcname.split('/', 2) - outfile = os.path.join(paths[where], convert_path(rp)) - else: - # meant for site-packages. - if u_arcname in (wheel_metadata_name, record_name): - continue - outfile = os.path.join(libdir, convert_path(u_arcname)) - if not is_script: - with zf.open(arcname) as bf: - fileop.copy_stream(bf, outfile) - outfiles.append(outfile) - # Double check the digest of the written file - if not dry_run and row[1]: - with open(outfile, 'rb') as bf: - data = bf.read() - _, newdigest = self.get_hash(data, kind) - if newdigest != digest: - raise DistlibException('digest mismatch ' - 'on write for ' - '%s' % outfile) - if bc and outfile.endswith('.py'): - try: - pyc = fileop.byte_compile(outfile) - outfiles.append(pyc) - except Exception: - # Don't give up if byte-compilation fails, - # but log it and perhaps warn the user - logger.warning('Byte-compilation failed', - exc_info=True) - else: - fn = os.path.basename(convert_path(arcname)) - workname = os.path.join(workdir, fn) - with zf.open(arcname) as bf: - fileop.copy_stream(bf, workname) - - dn, fn = os.path.split(outfile) - maker.target_dir = dn - filenames = maker.make(fn) - fileop.set_executable_mode(filenames) - outfiles.extend(filenames) - - if lib_only: - logger.debug('lib_only: returning None') - dist = None - else: - # Generate scripts - - # Try to get pydist.json so we can see if there are - # any commands to generate. If this fails (e.g. because - # of a legacy wheel), log a warning but don't give up. - commands = None - file_version = self.info['Wheel-Version'] - if file_version == '1.0': - # Use legacy info - ep = posixpath.join(info_dir, 'entry_points.txt') - try: - with zf.open(ep) as bwf: - epdata = read_exports(bwf) - commands = {} - for key in ('console', 'gui'): - k = '%s_scripts' % key - if k in epdata: - commands['wrap_%s' % key] = d = {} - for v in epdata[k].values(): - s = '%s:%s' % (v.prefix, v.suffix) - if v.flags: - s += ' %s' % v.flags - d[v.name] = s - except Exception: - logger.warning('Unable to read legacy script ' - 'metadata, so cannot generate ' - 'scripts') - else: - try: - with zf.open(metadata_name) as bwf: - wf = wrapper(bwf) - commands = json.load(wf).get('extensions') - if commands: - commands = commands.get('python.commands') - except Exception: - logger.warning('Unable to read JSON metadata, so ' - 'cannot generate scripts') - if commands: - console_scripts = commands.get('wrap_console', {}) - gui_scripts = commands.get('wrap_gui', {}) - if console_scripts or gui_scripts: - script_dir = paths.get('scripts', '') - if not os.path.isdir(script_dir): - raise ValueError('Valid script path not ' - 'specified') - maker.target_dir = script_dir - for k, v in console_scripts.items(): - script = '%s = %s' % (k, v) - filenames = maker.make(script) - fileop.set_executable_mode(filenames) - - if gui_scripts: - options = {'gui': True } - for k, v in gui_scripts.items(): - script = '%s = %s' % (k, v) - filenames = maker.make(script, options) - fileop.set_executable_mode(filenames) - - p = os.path.join(libdir, info_dir) - dist = InstalledDistribution(p) - - # Write SHARED - paths = dict(paths) # don't change passed in dict - del paths['purelib'] - del paths['platlib'] - paths['lib'] = libdir - p = dist.write_shared_locations(paths, dry_run) - if p: - outfiles.append(p) - - # Write RECORD - dist.write_installed_files(outfiles, paths['prefix'], - dry_run) - return dist - except Exception: # pragma: no cover - logger.exception('installation failed.') - fileop.rollback() - raise - finally: - shutil.rmtree(workdir) - - def _get_dylib_cache(self): - global cache - if cache is None: - # Use native string to avoid issues on 2.x: see Python #20140. - base = os.path.join(get_cache_base(), str('dylib-cache'), - sys.version[:3]) - cache = Cache(base) - return cache - - def _get_extensions(self): - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - arcname = posixpath.join(info_dir, 'EXTENSIONS') - wrapper = codecs.getreader('utf-8') - result = [] - with ZipFile(pathname, 'r') as zf: - try: - with zf.open(arcname) as bf: - wf = wrapper(bf) - extensions = json.load(wf) - cache = self._get_dylib_cache() - prefix = cache.prefix_to_dir(pathname) - cache_base = os.path.join(cache.base, prefix) - if not os.path.isdir(cache_base): - os.makedirs(cache_base) - for name, relpath in extensions.items(): - dest = os.path.join(cache_base, convert_path(relpath)) - if not os.path.exists(dest): - extract = True - else: - file_time = os.stat(dest).st_mtime - file_time = datetime.datetime.fromtimestamp(file_time) - info = zf.getinfo(relpath) - wheel_time = datetime.datetime(*info.date_time) - extract = wheel_time > file_time - if extract: - zf.extract(relpath, cache_base) - result.append((name, dest)) - except KeyError: - pass - return result - - def is_compatible(self): - """ - Determine if a wheel is compatible with the running system. - """ - return is_compatible(self) - - def is_mountable(self): - """ - Determine if a wheel is asserted as mountable by its metadata. - """ - return True # for now - metadata details TBD - - def mount(self, append=False): - pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) - if not self.is_compatible(): - msg = 'Wheel %s not compatible with this Python.' % pathname - raise DistlibException(msg) - if not self.is_mountable(): - msg = 'Wheel %s is marked as not mountable.' % pathname - raise DistlibException(msg) - if pathname in sys.path: - logger.debug('%s already in path', pathname) - else: - if append: - sys.path.append(pathname) - else: - sys.path.insert(0, pathname) - extensions = self._get_extensions() - if extensions: - if _hook not in sys.meta_path: - sys.meta_path.append(_hook) - _hook.add(pathname, extensions) - - def unmount(self): - pathname = os.path.abspath(os.path.join(self.dirname, self.filename)) - if pathname not in sys.path: - logger.debug('%s not in path', pathname) - else: - sys.path.remove(pathname) - if pathname in _hook.impure_wheels: - _hook.remove(pathname) - if not _hook.impure_wheels: - if _hook in sys.meta_path: - sys.meta_path.remove(_hook) - - def verify(self): - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - data_dir = '%s.data' % name_ver - info_dir = '%s.dist-info' % name_ver - - metadata_name = posixpath.join(info_dir, METADATA_FILENAME) - wheel_metadata_name = posixpath.join(info_dir, 'WHEEL') - record_name = posixpath.join(info_dir, 'RECORD') - - wrapper = codecs.getreader('utf-8') - - with ZipFile(pathname, 'r') as zf: - with zf.open(wheel_metadata_name) as bwf: - wf = wrapper(bwf) - message = message_from_file(wf) - wv = message['Wheel-Version'].split('.', 1) - file_version = tuple([int(i) for i in wv]) - # TODO version verification - - records = {} - with zf.open(record_name) as bf: - with CSVReader(stream=bf) as reader: - for row in reader: - p = row[0] - records[p] = row - - for zinfo in zf.infolist(): - arcname = zinfo.filename - if isinstance(arcname, text_type): - u_arcname = arcname - else: - u_arcname = arcname.decode('utf-8') - if '..' in u_arcname: - raise DistlibException('invalid entry in ' - 'wheel: %r' % u_arcname) - - # The signature file won't be in RECORD, - # and we don't currently don't do anything with it - if u_arcname.endswith('/RECORD.jws'): - continue - row = records[u_arcname] - if row[2] and str(zinfo.file_size) != row[2]: - raise DistlibException('size mismatch for ' - '%s' % u_arcname) - if row[1]: - kind, value = row[1].split('=', 1) - with zf.open(arcname) as bf: - data = bf.read() - _, digest = self.get_hash(data, kind) - if digest != value: - raise DistlibException('digest mismatch for ' - '%s' % arcname) - - def update(self, modifier, dest_dir=None, **kwargs): - """ - Update the contents of a wheel in a generic way. The modifier should - be a callable which expects a dictionary argument: its keys are - archive-entry paths, and its values are absolute filesystem paths - where the contents the corresponding archive entries can be found. The - modifier is free to change the contents of the files pointed to, add - new entries and remove entries, before returning. This method will - extract the entire contents of the wheel to a temporary location, call - the modifier, and then use the passed (and possibly updated) - dictionary to write a new wheel. If ``dest_dir`` is specified, the new - wheel is written there -- otherwise, the original wheel is overwritten. - - The modifier should return True if it updated the wheel, else False. - This method returns the same value the modifier returns. - """ - - def get_version(path_map, info_dir): - version = path = None - key = '%s/%s' % (info_dir, METADATA_FILENAME) - if key not in path_map: - key = '%s/PKG-INFO' % info_dir - if key in path_map: - path = path_map[key] - version = Metadata(path=path).version - return version, path - - def update_version(version, path): - updated = None - try: - v = NormalizedVersion(version) - i = version.find('-') - if i < 0: - updated = '%s+1' % version - else: - parts = [int(s) for s in version[i + 1:].split('.')] - parts[-1] += 1 - updated = '%s+%s' % (version[:i], - '.'.join(str(i) for i in parts)) - except UnsupportedVersionError: - logger.debug('Cannot update non-compliant (PEP-440) ' - 'version %r', version) - if updated: - md = Metadata(path=path) - md.version = updated - legacy = not path.endswith(METADATA_FILENAME) - md.write(path=path, legacy=legacy) - logger.debug('Version updated from %r to %r', version, - updated) - - pathname = os.path.join(self.dirname, self.filename) - name_ver = '%s-%s' % (self.name, self.version) - info_dir = '%s.dist-info' % name_ver - record_name = posixpath.join(info_dir, 'RECORD') - with tempdir() as workdir: - with ZipFile(pathname, 'r') as zf: - path_map = {} - for zinfo in zf.infolist(): - arcname = zinfo.filename - if isinstance(arcname, text_type): - u_arcname = arcname - else: - u_arcname = arcname.decode('utf-8') - if u_arcname == record_name: - continue - if '..' in u_arcname: - raise DistlibException('invalid entry in ' - 'wheel: %r' % u_arcname) - zf.extract(zinfo, workdir) - path = os.path.join(workdir, convert_path(u_arcname)) - path_map[u_arcname] = path - - # Remember the version. - original_version, _ = get_version(path_map, info_dir) - # Files extracted. Call the modifier. - modified = modifier(path_map, **kwargs) - if modified: - # Something changed - need to build a new wheel. - current_version, path = get_version(path_map, info_dir) - if current_version and (current_version == original_version): - # Add or update local version to signify changes. - update_version(current_version, path) - # Decide where the new wheel goes. - if dest_dir is None: - fd, newpath = tempfile.mkstemp(suffix='.whl', - prefix='wheel-update-', - dir=workdir) - os.close(fd) - else: - if not os.path.isdir(dest_dir): - raise DistlibException('Not a directory: %r' % dest_dir) - newpath = os.path.join(dest_dir, self.filename) - archive_paths = list(path_map.items()) - distinfo = os.path.join(workdir, info_dir) - info = distinfo, info_dir - self.write_records(info, workdir, archive_paths) - self.build_zip(newpath, archive_paths) - if dest_dir is None: - shutil.copyfile(newpath, pathname) - return modified - -def compatible_tags(): - """ - Return (pyver, abi, arch) tuples compatible with this Python. - """ - versions = [VER_SUFFIX] - major = VER_SUFFIX[0] - for minor in range(sys.version_info[1] - 1, - 1, -1): - versions.append(''.join([major, str(minor)])) - - abis = [] - for suffix, _, _ in imp.get_suffixes(): - if suffix.startswith('.abi'): - abis.append(suffix.split('.', 2)[1]) - abis.sort() - if ABI != 'none': - abis.insert(0, ABI) - abis.append('none') - result = [] - - arches = [ARCH] - if sys.platform == 'darwin': - m = re.match('(\w+)_(\d+)_(\d+)_(\w+)$', ARCH) - if m: - name, major, minor, arch = m.groups() - minor = int(minor) - matches = [arch] - if arch in ('i386', 'ppc'): - matches.append('fat') - if arch in ('i386', 'ppc', 'x86_64'): - matches.append('fat3') - if arch in ('ppc64', 'x86_64'): - matches.append('fat64') - if arch in ('i386', 'x86_64'): - matches.append('intel') - if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'): - matches.append('universal') - while minor >= 0: - for match in matches: - s = '%s_%s_%s_%s' % (name, major, minor, match) - if s != ARCH: # already there - arches.append(s) - minor -= 1 - - # Most specific - our Python version, ABI and arch - for abi in abis: - for arch in arches: - result.append((''.join((IMP_PREFIX, versions[0])), abi, arch)) - - # where no ABI / arch dependency, but IMP_PREFIX dependency - for i, version in enumerate(versions): - result.append((''.join((IMP_PREFIX, version)), 'none', 'any')) - if i == 0: - result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any')) - - # no IMP_PREFIX, ABI or arch dependency - for i, version in enumerate(versions): - result.append((''.join(('py', version)), 'none', 'any')) - if i == 0: - result.append((''.join(('py', version[0])), 'none', 'any')) - return set(result) - - -COMPATIBLE_TAGS = compatible_tags() - -del compatible_tags - - -def is_compatible(wheel, tags=None): - if not isinstance(wheel, Wheel): - wheel = Wheel(wheel) # assume it's a filename - result = False - if tags is None: - tags = COMPATIBLE_TAGS - for ver, abi, arch in tags: - if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch: - result = True - break - return result diff --git a/env/lib/python3.6/site-packages/pip/_vendor/distro.py b/env/lib/python3.6/site-packages/pip/_vendor/distro.py deleted file mode 100644 index 9e7daad..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/distro.py +++ /dev/null @@ -1,1081 +0,0 @@ -# Copyright 2015,2016 Nir Cohen -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -The ``distro`` package (``distro`` stands for Linux Distribution) provides -information about the Linux distribution it runs on, such as a reliable -machine-readable distro ID, or version information. - -It is a renewed alternative implementation for Python's original -:py:func:`platform.linux_distribution` function, but it provides much more -functionality. An alternative implementation became necessary because Python -3.5 deprecated this function, and Python 3.7 is expected to remove it -altogether. Its predecessor function :py:func:`platform.dist` was already -deprecated since Python 2.6 and is also expected to be removed in Python 3.7. -Still, there are many cases in which access to Linux distribution information -is needed. See `Python issue 1322 `_ for -more information. -""" - -import os -import re -import sys -import json -import shlex -import logging -import subprocess - - -if not sys.platform.startswith('linux'): - raise ImportError('Unsupported platform: {0}'.format(sys.platform)) - -_UNIXCONFDIR = '/etc' -_OS_RELEASE_BASENAME = 'os-release' - -#: Translation table for normalizing the "ID" attribute defined in os-release -#: files, for use by the :func:`distro.id` method. -#: -#: * Key: Value as defined in the os-release file, translated to lower case, -#: with blanks translated to underscores. -#: -#: * Value: Normalized value. -NORMALIZED_OS_ID = {} - -#: Translation table for normalizing the "Distributor ID" attribute returned by -#: the lsb_release command, for use by the :func:`distro.id` method. -#: -#: * Key: Value as returned by the lsb_release command, translated to lower -#: case, with blanks translated to underscores. -#: -#: * Value: Normalized value. -NORMALIZED_LSB_ID = { - 'enterpriseenterprise': 'oracle', # Oracle Enterprise Linux - 'redhatenterpriseworkstation': 'rhel', # RHEL 6.7 -} - -#: Translation table for normalizing the distro ID derived from the file name -#: of distro release files, for use by the :func:`distro.id` method. -#: -#: * Key: Value as derived from the file name of a distro release file, -#: translated to lower case, with blanks translated to underscores. -#: -#: * Value: Normalized value. -NORMALIZED_DISTRO_ID = { - 'redhat': 'rhel', # RHEL 6.x, 7.x -} - -# Pattern for content of distro release file (reversed) -_DISTRO_RELEASE_CONTENT_REVERSED_PATTERN = re.compile( - r'(?:[^)]*\)(.*)\()? *(?:STL )?([\d.+\-a-z]*\d) *(?:esaeler *)?(.+)') - -# Pattern for base file name of distro release file -_DISTRO_RELEASE_BASENAME_PATTERN = re.compile( - r'(\w+)[-_](release|version)$') - -# Base file names to be ignored when searching for distro release file -_DISTRO_RELEASE_IGNORE_BASENAMES = ( - 'debian_version', - 'lsb-release', - 'oem-release', - _OS_RELEASE_BASENAME, - 'system-release' -) - - -def linux_distribution(full_distribution_name=True): - """ - Return information about the current Linux distribution as a tuple - ``(id_name, version, codename)`` with items as follows: - - * ``id_name``: If *full_distribution_name* is false, the result of - :func:`distro.id`. Otherwise, the result of :func:`distro.name`. - - * ``version``: The result of :func:`distro.version`. - - * ``codename``: The result of :func:`distro.codename`. - - The interface of this function is compatible with the original - :py:func:`platform.linux_distribution` function, supporting a subset of - its parameters. - - The data it returns may not exactly be the same, because it uses more data - sources than the original function, and that may lead to different data if - the Linux distribution is not consistent across multiple data sources it - provides (there are indeed such distributions ...). - - Another reason for differences is the fact that the :func:`distro.id` - method normalizes the distro ID string to a reliable machine-readable value - for a number of popular Linux distributions. - """ - return _distro.linux_distribution(full_distribution_name) - - -def id(): - """ - Return the distro ID of the current Linux distribution, as a - machine-readable string. - - For a number of Linux distributions, the returned distro ID value is - *reliable*, in the sense that it is documented and that it does not change - across releases of the distribution. - - This package maintains the following reliable distro ID values: - - ============== ========================================= - Distro ID Distribution - ============== ========================================= - "ubuntu" Ubuntu - "debian" Debian - "rhel" RedHat Enterprise Linux - "centos" CentOS - "fedora" Fedora - "sles" SUSE Linux Enterprise Server - "opensuse" openSUSE - "amazon" Amazon Linux - "arch" Arch Linux - "cloudlinux" CloudLinux OS - "exherbo" Exherbo Linux - "gentoo" GenToo Linux - "ibm_powerkvm" IBM PowerKVM - "kvmibm" KVM for IBM z Systems - "linuxmint" Linux Mint - "mageia" Mageia - "mandriva" Mandriva Linux - "parallels" Parallels - "pidora" Pidora - "raspbian" Raspbian - "oracle" Oracle Linux (and Oracle Enterprise Linux) - "scientific" Scientific Linux - "slackware" Slackware - "xenserver" XenServer - ============== ========================================= - - If you have a need to get distros for reliable IDs added into this set, - or if you find that the :func:`distro.id` function returns a different - distro ID for one of the listed distros, please create an issue in the - `distro issue tracker`_. - - **Lookup hierarchy and transformations:** - - First, the ID is obtained from the following sources, in the specified - order. The first available and non-empty value is used: - - * the value of the "ID" attribute of the os-release file, - - * the value of the "Distributor ID" attribute returned by the lsb_release - command, - - * the first part of the file name of the distro release file, - - The so determined ID value then passes the following transformations, - before it is returned by this method: - - * it is translated to lower case, - - * blanks (which should not be there anyway) are translated to underscores, - - * a normalization of the ID is performed, based upon - `normalization tables`_. The purpose of this normalization is to ensure - that the ID is as reliable as possible, even across incompatible changes - in the Linux distributions. A common reason for an incompatible change is - the addition of an os-release file, or the addition of the lsb_release - command, with ID values that differ from what was previously determined - from the distro release file name. - """ - return _distro.id() - - -def name(pretty=False): - """ - Return the name of the current Linux distribution, as a human-readable - string. - - If *pretty* is false, the name is returned without version or codename. - (e.g. "CentOS Linux") - - If *pretty* is true, the version and codename are appended. - (e.g. "CentOS Linux 7.1.1503 (Core)") - - **Lookup hierarchy:** - - The name is obtained from the following sources, in the specified order. - The first available and non-empty value is used: - - * If *pretty* is false: - - - the value of the "NAME" attribute of the os-release file, - - - the value of the "Distributor ID" attribute returned by the lsb_release - command, - - - the value of the "" field of the distro release file. - - * If *pretty* is true: - - - the value of the "PRETTY_NAME" attribute of the os-release file, - - - the value of the "Description" attribute returned by the lsb_release - command, - - - the value of the "" field of the distro release file, appended - with the value of the pretty version ("" and "" - fields) of the distro release file, if available. - """ - return _distro.name(pretty) - - -def version(pretty=False, best=False): - """ - Return the version of the current Linux distribution, as a human-readable - string. - - If *pretty* is false, the version is returned without codename (e.g. - "7.0"). - - If *pretty* is true, the codename in parenthesis is appended, if the - codename is non-empty (e.g. "7.0 (Maipo)"). - - Some distributions provide version numbers with different precisions in - the different sources of distribution information. Examining the different - sources in a fixed priority order does not always yield the most precise - version (e.g. for Debian 8.2, or CentOS 7.1). - - The *best* parameter can be used to control the approach for the returned - version: - - If *best* is false, the first non-empty version number in priority order of - the examined sources is returned. - - If *best* is true, the most precise version number out of all examined - sources is returned. - - **Lookup hierarchy:** - - In all cases, the version number is obtained from the following sources. - If *best* is false, this order represents the priority order: - - * the value of the "VERSION_ID" attribute of the os-release file, - * the value of the "Release" attribute returned by the lsb_release - command, - * the version number parsed from the "" field of the first line - of the distro release file, - * the version number parsed from the "PRETTY_NAME" attribute of the - os-release file, if it follows the format of the distro release files. - * the version number parsed from the "Description" attribute returned by - the lsb_release command, if it follows the format of the distro release - files. - """ - return _distro.version(pretty, best) - - -def version_parts(best=False): - """ - Return the version of the current Linux distribution as a tuple - ``(major, minor, build_number)`` with items as follows: - - * ``major``: The result of :func:`distro.major_version`. - - * ``minor``: The result of :func:`distro.minor_version`. - - * ``build_number``: The result of :func:`distro.build_number`. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.version_parts(best) - - -def major_version(best=False): - """ - Return the major version of the current Linux distribution, as a string, - if provided. - Otherwise, the empty string is returned. The major version is the first - part of the dot-separated version string. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.major_version(best) - - -def minor_version(best=False): - """ - Return the minor version of the current Linux distribution, as a string, - if provided. - Otherwise, the empty string is returned. The minor version is the second - part of the dot-separated version string. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.minor_version(best) - - -def build_number(best=False): - """ - Return the build number of the current Linux distribution, as a string, - if provided. - Otherwise, the empty string is returned. The build number is the third part - of the dot-separated version string. - - For a description of the *best* parameter, see the :func:`distro.version` - method. - """ - return _distro.build_number(best) - - -def like(): - """ - Return a space-separated list of distro IDs of distributions that are - closely related to the current Linux distribution in regards to packaging - and programming interfaces, for example distributions the current - distribution is a derivative from. - - **Lookup hierarchy:** - - This information item is only provided by the os-release file. - For details, see the description of the "ID_LIKE" attribute in the - `os-release man page - `_. - """ - return _distro.like() - - -def codename(): - """ - Return the codename for the release of the current Linux distribution, - as a string. - - If the distribution does not have a codename, an empty string is returned. - - Note that the returned codename is not always really a codename. For - example, openSUSE returns "x86_64". This function does not handle such - cases in any special way and just returns the string it finds, if any. - - **Lookup hierarchy:** - - * the codename within the "VERSION" attribute of the os-release file, if - provided, - - * the value of the "Codename" attribute returned by the lsb_release - command, - - * the value of the "" field of the distro release file. - """ - return _distro.codename() - - -def info(pretty=False, best=False): - """ - Return certain machine-readable information items about the current Linux - distribution in a dictionary, as shown in the following example: - - .. sourcecode:: python - - { - 'id': 'rhel', - 'version': '7.0', - 'version_parts': { - 'major': '7', - 'minor': '0', - 'build_number': '' - }, - 'like': 'fedora', - 'codename': 'Maipo' - } - - The dictionary structure and keys are always the same, regardless of which - information items are available in the underlying data sources. The values - for the various keys are as follows: - - * ``id``: The result of :func:`distro.id`. - - * ``version``: The result of :func:`distro.version`. - - * ``version_parts -> major``: The result of :func:`distro.major_version`. - - * ``version_parts -> minor``: The result of :func:`distro.minor_version`. - - * ``version_parts -> build_number``: The result of - :func:`distro.build_number`. - - * ``like``: The result of :func:`distro.like`. - - * ``codename``: The result of :func:`distro.codename`. - - For a description of the *pretty* and *best* parameters, see the - :func:`distro.version` method. - """ - return _distro.info(pretty, best) - - -def os_release_info(): - """ - Return a dictionary containing key-value pairs for the information items - from the os-release file data source of the current Linux distribution. - - See `os-release file`_ for details about these information items. - """ - return _distro.os_release_info() - - -def lsb_release_info(): - """ - Return a dictionary containing key-value pairs for the information items - from the lsb_release command data source of the current Linux distribution. - - See `lsb_release command output`_ for details about these information - items. - """ - return _distro.lsb_release_info() - - -def distro_release_info(): - """ - Return a dictionary containing key-value pairs for the information items - from the distro release file data source of the current Linux distribution. - - See `distro release file`_ for details about these information items. - """ - return _distro.distro_release_info() - - -def os_release_attr(attribute): - """ - Return a single named information item from the os-release file data source - of the current Linux distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - - See `os-release file`_ for details about these information items. - """ - return _distro.os_release_attr(attribute) - - -def lsb_release_attr(attribute): - """ - Return a single named information item from the lsb_release command output - data source of the current Linux distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - - See `lsb_release command output`_ for details about these information - items. - """ - return _distro.lsb_release_attr(attribute) - - -def distro_release_attr(attribute): - """ - Return a single named information item from the distro release file - data source of the current Linux distribution. - - Parameters: - - * ``attribute`` (string): Key of the information item. - - Returns: - - * (string): Value of the information item, if the item exists. - The empty string, if the item does not exist. - - See `distro release file`_ for details about these information items. - """ - return _distro.distro_release_attr(attribute) - - -class LinuxDistribution(object): - """ - Provides information about a Linux distribution. - - This package creates a private module-global instance of this class with - default initialization arguments, that is used by the - `consolidated accessor functions`_ and `single source accessor functions`_. - By using default initialization arguments, that module-global instance - returns data about the current Linux distribution (i.e. the distro this - package runs on). - - Normally, it is not necessary to create additional instances of this class. - However, in situations where control is needed over the exact data sources - that are used, instances of this class can be created with a specific - distro release file, or a specific os-release file, or without invoking the - lsb_release command. - """ - - def __init__(self, - include_lsb=True, - os_release_file='', - distro_release_file=''): - """ - The initialization method of this class gathers information from the - available data sources, and stores that in private instance attributes. - Subsequent access to the information items uses these private instance - attributes, so that the data sources are read only once. - - Parameters: - - * ``include_lsb`` (bool): Controls whether the - `lsb_release command output`_ is included as a data source. - - If the lsb_release command is not available in the program execution - path, the data source for the lsb_release command will be empty. - - * ``os_release_file`` (string): The path name of the - `os-release file`_ that is to be used as a data source. - - An empty string (the default) will cause the default path name to - be used (see `os-release file`_ for details). - - If the specified or defaulted os-release file does not exist, the - data source for the os-release file will be empty. - - * ``distro_release_file`` (string): The path name of the - `distro release file`_ that is to be used as a data source. - - An empty string (the default) will cause a default search algorithm - to be used (see `distro release file`_ for details). - - If the specified distro release file does not exist, or if no default - distro release file can be found, the data source for the distro - release file will be empty. - - Public instance attributes: - - * ``os_release_file`` (string): The path name of the - `os-release file`_ that is actually used as a data source. The - empty string if no distro release file is used as a data source. - - * ``distro_release_file`` (string): The path name of the - `distro release file`_ that is actually used as a data source. The - empty string if no distro release file is used as a data source. - - Raises: - - * :py:exc:`IOError`: Some I/O issue with an os-release file or distro - release file. - - * :py:exc:`subprocess.CalledProcessError`: The lsb_release command had - some issue (other than not being available in the program execution - path). - - * :py:exc:`UnicodeError`: A data source has unexpected characters or - uses an unexpected encoding. - """ - self.os_release_file = os_release_file or \ - os.path.join(_UNIXCONFDIR, _OS_RELEASE_BASENAME) - self.distro_release_file = distro_release_file or '' # updated later - self._os_release_info = self._get_os_release_info() - self._lsb_release_info = self._get_lsb_release_info() \ - if include_lsb else {} - self._distro_release_info = self._get_distro_release_info() - - def __repr__(self): - """Return repr of all info - """ - return \ - "LinuxDistribution(" \ - "os_release_file={0!r}, " \ - "distro_release_file={1!r}, " \ - "_os_release_info={2!r}, " \ - "_lsb_release_info={3!r}, " \ - "_distro_release_info={4!r})".format( - self.os_release_file, - self.distro_release_file, - self._os_release_info, - self._lsb_release_info, - self._distro_release_info) - - def linux_distribution(self, full_distribution_name=True): - """ - Return information about the Linux distribution that is compatible - with Python's :func:`platform.linux_distribution`, supporting a subset - of its parameters. - - For details, see :func:`distro.linux_distribution`. - """ - return ( - self.name() if full_distribution_name else self.id(), - self.version(), - self.codename() - ) - - def id(self): - """Return the distro ID of the Linux distribution, as a string. - - For details, see :func:`distro.id`. - """ - def normalize(distro_id, table): - distro_id = distro_id.lower().replace(' ', '_') - return table.get(distro_id, distro_id) - - distro_id = self.os_release_attr('id') - if distro_id: - return normalize(distro_id, NORMALIZED_OS_ID) - - distro_id = self.lsb_release_attr('distributor_id') - if distro_id: - return normalize(distro_id, NORMALIZED_LSB_ID) - - distro_id = self.distro_release_attr('id') - if distro_id: - return normalize(distro_id, NORMALIZED_DISTRO_ID) - - return '' - - def name(self, pretty=False): - """ - Return the name of the Linux distribution, as a string. - - For details, see :func:`distro.name`. - """ - name = self.os_release_attr('name') \ - or self.lsb_release_attr('distributor_id') \ - or self.distro_release_attr('name') - if pretty: - name = self.os_release_attr('pretty_name') \ - or self.lsb_release_attr('description') - if not name: - name = self.distro_release_attr('name') - version = self.version(pretty=True) - if version: - name = name + ' ' + version - return name or '' - - def version(self, pretty=False, best=False): - """ - Return the version of the Linux distribution, as a string. - - For details, see :func:`distro.version`. - """ - versions = [ - self.os_release_attr('version_id'), - self.lsb_release_attr('release'), - self.distro_release_attr('version_id'), - self._parse_distro_release_content( - self.os_release_attr('pretty_name')).get('version_id', ''), - self._parse_distro_release_content( - self.lsb_release_attr('description')).get('version_id', '') - ] - version = '' - if best: - # This algorithm uses the last version in priority order that has - # the best precision. If the versions are not in conflict, that - # does not matter; otherwise, using the last one instead of the - # first one might be considered a surprise. - for v in versions: - if v.count(".") > version.count(".") or version == '': - version = v - else: - for v in versions: - if v != '': - version = v - break - if pretty and version and self.codename(): - version = u'{0} ({1})'.format(version, self.codename()) - return version - - def version_parts(self, best=False): - """ - Return the version of the Linux distribution, as a tuple of version - numbers. - - For details, see :func:`distro.version_parts`. - """ - version_str = self.version(best=best) - if version_str: - version_regex = re.compile(r'(\d+)\.?(\d+)?\.?(\d+)?') - matches = version_regex.match(version_str) - if matches: - major, minor, build_number = matches.groups() - return major, minor or '', build_number or '' - return '', '', '' - - def major_version(self, best=False): - """ - Return the major version number of the current distribution. - - For details, see :func:`distro.major_version`. - """ - return self.version_parts(best)[0] - - def minor_version(self, best=False): - """ - Return the minor version number of the Linux distribution. - - For details, see :func:`distro.minor_version`. - """ - return self.version_parts(best)[1] - - def build_number(self, best=False): - """ - Return the build number of the Linux distribution. - - For details, see :func:`distro.build_number`. - """ - return self.version_parts(best)[2] - - def like(self): - """ - Return the IDs of distributions that are like the Linux distribution. - - For details, see :func:`distro.like`. - """ - return self.os_release_attr('id_like') or '' - - def codename(self): - """ - Return the codename of the Linux distribution. - - For details, see :func:`distro.codename`. - """ - return self.os_release_attr('codename') \ - or self.lsb_release_attr('codename') \ - or self.distro_release_attr('codename') \ - or '' - - def info(self, pretty=False, best=False): - """ - Return certain machine-readable information about the Linux - distribution. - - For details, see :func:`distro.info`. - """ - return dict( - id=self.id(), - version=self.version(pretty, best), - version_parts=dict( - major=self.major_version(best), - minor=self.minor_version(best), - build_number=self.build_number(best) - ), - like=self.like(), - codename=self.codename(), - ) - - def os_release_info(self): - """ - Return a dictionary containing key-value pairs for the information - items from the os-release file data source of the Linux distribution. - - For details, see :func:`distro.os_release_info`. - """ - return self._os_release_info - - def lsb_release_info(self): - """ - Return a dictionary containing key-value pairs for the information - items from the lsb_release command data source of the Linux - distribution. - - For details, see :func:`distro.lsb_release_info`. - """ - return self._lsb_release_info - - def distro_release_info(self): - """ - Return a dictionary containing key-value pairs for the information - items from the distro release file data source of the Linux - distribution. - - For details, see :func:`distro.distro_release_info`. - """ - return self._distro_release_info - - def os_release_attr(self, attribute): - """ - Return a single named information item from the os-release file data - source of the Linux distribution. - - For details, see :func:`distro.os_release_attr`. - """ - return self._os_release_info.get(attribute, '') - - def lsb_release_attr(self, attribute): - """ - Return a single named information item from the lsb_release command - output data source of the Linux distribution. - - For details, see :func:`distro.lsb_release_attr`. - """ - return self._lsb_release_info.get(attribute, '') - - def distro_release_attr(self, attribute): - """ - Return a single named information item from the distro release file - data source of the Linux distribution. - - For details, see :func:`distro.distro_release_attr`. - """ - return self._distro_release_info.get(attribute, '') - - def _get_os_release_info(self): - """ - Get the information items from the specified os-release file. - - Returns: - A dictionary containing all information items. - """ - if os.path.isfile(self.os_release_file): - with open(self.os_release_file) as release_file: - return self._parse_os_release_content(release_file) - return {} - - @staticmethod - def _parse_os_release_content(lines): - """ - Parse the lines of an os-release file. - - Parameters: - - * lines: Iterable through the lines in the os-release file. - Each line must be a unicode string or a UTF-8 encoded byte - string. - - Returns: - A dictionary containing all information items. - """ - props = {} - lexer = shlex.shlex(lines, posix=True) - lexer.whitespace_split = True - - # The shlex module defines its `wordchars` variable using literals, - # making it dependent on the encoding of the Python source file. - # In Python 2.6 and 2.7, the shlex source file is encoded in - # 'iso-8859-1', and the `wordchars` variable is defined as a byte - # string. This causes a UnicodeDecodeError to be raised when the - # parsed content is a unicode object. The following fix resolves that - # (... but it should be fixed in shlex...): - if sys.version_info[0] == 2 and isinstance(lexer.wordchars, bytes): - lexer.wordchars = lexer.wordchars.decode('iso-8859-1') - - tokens = list(lexer) - for token in tokens: - # At this point, all shell-like parsing has been done (i.e. - # comments processed, quotes and backslash escape sequences - # processed, multi-line values assembled, trailing newlines - # stripped, etc.), so the tokens are now either: - # * variable assignments: var=value - # * commands or their arguments (not allowed in os-release) - if '=' in token: - k, v = token.split('=', 1) - if isinstance(v, bytes): - v = v.decode('utf-8') - props[k.lower()] = v - if k == 'VERSION': - # this handles cases in which the codename is in - # the `(CODENAME)` (rhel, centos, fedora) format - # or in the `, CODENAME` format (Ubuntu). - codename = re.search(r'(\(\D+\))|,(\s+)?\D+', v) - if codename: - codename = codename.group() - codename = codename.strip('()') - codename = codename.strip(',') - codename = codename.strip() - # codename appears within paranthese. - props['codename'] = codename - else: - props['codename'] = '' - else: - # Ignore any tokens that are not variable assignments - pass - return props - - def _get_lsb_release_info(self): - """ - Get the information items from the lsb_release command output. - - Returns: - A dictionary containing all information items. - """ - cmd = 'lsb_release -a' - process = subprocess.Popen( - cmd, - shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = process.communicate() - stdout, stderr = stdout.decode('utf-8'), stderr.decode('utf-8') - code = process.returncode - if code == 0: - content = stdout.splitlines() - return self._parse_lsb_release_content(content) - elif code == 127: # Command not found - return {} - else: - if sys.version_info[:2] >= (3, 5): - raise subprocess.CalledProcessError(code, cmd, stdout, stderr) - elif sys.version_info[:2] >= (2, 7): - raise subprocess.CalledProcessError(code, cmd, stdout) - elif sys.version_info[:2] == (2, 6): - raise subprocess.CalledProcessError(code, cmd) - - @staticmethod - def _parse_lsb_release_content(lines): - """ - Parse the output of the lsb_release command. - - Parameters: - - * lines: Iterable through the lines of the lsb_release output. - Each line must be a unicode string or a UTF-8 encoded byte - string. - - Returns: - A dictionary containing all information items. - """ - props = {} - for line in lines: - line = line.decode('utf-8') if isinstance(line, bytes) else line - kv = line.strip('\n').split(':', 1) - if len(kv) != 2: - # Ignore lines without colon. - continue - k, v = kv - props.update({k.replace(' ', '_').lower(): v.strip()}) - return props - - def _get_distro_release_info(self): - """ - Get the information items from the specified distro release file. - - Returns: - A dictionary containing all information items. - """ - if self.distro_release_file: - # If it was specified, we use it and parse what we can, even if - # its file name or content does not match the expected pattern. - distro_info = self._parse_distro_release_file( - self.distro_release_file) - basename = os.path.basename(self.distro_release_file) - # The file name pattern for user-specified distro release files - # is somewhat more tolerant (compared to when searching for the - # file), because we want to use what was specified as best as - # possible. - match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) - if match: - distro_info['id'] = match.group(1) - return distro_info - else: - basenames = os.listdir(_UNIXCONFDIR) - # We sort for repeatability in cases where there are multiple - # distro specific files; e.g. CentOS, Oracle, Enterprise all - # containing `redhat-release` on top of their own. - basenames.sort() - for basename in basenames: - if basename in _DISTRO_RELEASE_IGNORE_BASENAMES: - continue - match = _DISTRO_RELEASE_BASENAME_PATTERN.match(basename) - if match: - filepath = os.path.join(_UNIXCONFDIR, basename) - distro_info = self._parse_distro_release_file(filepath) - if 'name' in distro_info: - # The name is always present if the pattern matches - self.distro_release_file = filepath - distro_info['id'] = match.group(1) - return distro_info - return {} - - def _parse_distro_release_file(self, filepath): - """ - Parse a distro release file. - - Parameters: - - * filepath: Path name of the distro release file. - - Returns: - A dictionary containing all information items. - """ - if os.path.isfile(filepath): - with open(filepath) as fp: - # Only parse the first line. For instance, on SLES there - # are multiple lines. We don't want them... - return self._parse_distro_release_content(fp.readline()) - return {} - - @staticmethod - def _parse_distro_release_content(line): - """ - Parse a line from a distro release file. - - Parameters: - * line: Line from the distro release file. Must be a unicode string - or a UTF-8 encoded byte string. - - Returns: - A dictionary containing all information items. - """ - if isinstance(line, bytes): - line = line.decode('utf-8') - matches = _DISTRO_RELEASE_CONTENT_REVERSED_PATTERN.match( - line.strip()[::-1]) - distro_info = {} - if matches: - # regexp ensures non-None - distro_info['name'] = matches.group(3)[::-1] - if matches.group(2): - distro_info['version_id'] = matches.group(2)[::-1] - if matches.group(1): - distro_info['codename'] = matches.group(1)[::-1] - elif line: - distro_info['name'] = line.strip() - return distro_info - - -_distro = LinuxDistribution() - - -def main(): - import argparse - - logger = logging.getLogger(__name__) - logger.setLevel(logging.DEBUG) - logger.addHandler(logging.StreamHandler(sys.stdout)) - - parser = argparse.ArgumentParser(description="Linux distro info tool") - parser.add_argument( - '--json', - '-j', - help="Output in machine readable format", - action="store_true") - args = parser.parse_args() - - if args.json: - logger.info(json.dumps(info(), indent=4, sort_keys=True)) - else: - logger.info('Name: %s', name(pretty=True)) - distribution_version = version(pretty=True) - if distribution_version: - logger.info('Version: %s', distribution_version) - distribution_codename = codename() - if distribution_codename: - logger.info('Codename: %s', distribution_codename) - - -if __name__ == '__main__': - main() diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__init__.py b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__init__.py deleted file mode 100644 index 7427eb1..0000000 --- a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -""" -HTML parsing library based on the WHATWG "HTML5" -specification. The parser is designed to be compatible with existing -HTML found in the wild and implements well-defined error recovery that -is largely compatible with modern desktop web browsers. - -Example usage: - -import html5lib -f = open("my_document.html") -tree = html5lib.parse(f) -""" - -from __future__ import absolute_import, division, unicode_literals - -from .html5parser import HTMLParser, parse, parseFragment -from .treebuilders import getTreeBuilder -from .treewalkers import getTreeWalker -from .serializer import serialize - -__all__ = ["HTMLParser", "parse", "parseFragment", "getTreeBuilder", - "getTreeWalker", "serialize"] - -# this has to be at the top level, see how setup.py parses this -__version__ = "1.0b10" diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 8259964f1a33a9fd5c3d466db806484aa40722f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmZWn&2AGh5Z?SW**HlXq&|R^Q*&sxfuyJi5Fi0PP=rLJioICg*t@anU9W6!()7mT z@H!m#%BiowiLpZkf?fIB+3|S3Z)W^tI7DB&-@go6LGUB^>*;{~3YJ*|upkatgEeI% zZ^q5M6}R$s+-?M{#oF>9@5G(F8+Y?C4!!R{_Hq;>Z+B!rAH)N1cjYiYj1R#MS&t#s zX9G6OI`I)Zj7RL~b1)gvt40u@%jMMvTvBaBkzpwkP4x~Z)NqDXf$f^(>&w^6>-Tu< zA{S$1O1=`QSWzofF~v)WaL2jE!eGXY$O<@X6;3!_sl0@^L~^_pc8&S1FcygRtf{IB zhQ*#`D%s}T zv8ser2~M=yf=)9<=yU|!Fwn1hR2548fi8 zE&1ddSs(a}_0WIbX_`6qNuxf@xLpGIn+lr6HF$=6Irp7*jm5jap^^x6h%F3nH0sXOj6#RRN_grv153vwju2wZ`JPB z{@YS*)$Vsr0~Zpltas-3QibkD-|o|=zjONQ?sK8=%9Vlr^}qjHO>?=fxo-ILqx>j7 zx&Mj8a#>2Rt54}r`rIAvK2L{7p*nZ3x5LYMT}PeevAn&$zWR=OJge*QTfUA4tG**( z`8!rv4IPbEpl4;;pKj=Ok0~8Z{H-ay!dhW9S}W6mbYpit>Q~8nYbCd8PJ4S+TTQ56 z!=+UyeZ^|FRu^3zYppfbSCHS9UT3YfZX0uVthd%#>ru18+F)%&zR}ub-Hv>db%%8) z^4nR)U664Hm%fV9om^@`>8`(USzoj6F1oC{(_bC)bhKFRCtR)fe2&?>T0NyzsolA3 z?_fUNnduwI+WC^-$~>FNWwQOH=E43FJJp-p{<%V(l+vn1DxZ2Ro69|! zvimdr-KnP=U9P}W_Y4Jtk&sGRRNK{3XyKZetl3tpF@oGC5p&uk+PTK08Y#!D)R@&a zp&<7Pg+oqFI6}Qb;iOX|M-N5Xt8zjSjoWOiwP}}fjIh(oNN^i7=+u}}vKe*cm@KC) zw5{5vEy{A*G#ZO%+NSFyr_EpuQ3|)mD$@zK^K`=P3<5tgD!sz(N$M5WoOy+{FxMEQ zGouks@K|Aq7`0Al=*|U_!-Zs}kPKEOC)-$#Ni$_Rks#Y55;UqhM}j`voRE;H~6$7$nncAGdmB+o0ZvCeUw+fZx0t)fp{k8yY1!8x8V zxF(UP!V*u&A(AyUB$#p2snO&tw4ei>7UW)9hz4afv=A$%wK=|_wXtGa*il{!v#)Al zXH{xpp0XBpI6(_DESf}&xJ8S`NoP&^Dwk*#@S|-~;5KqmsfNT*YbW=kC8M2moNN+J}zF|n;FdW}75>;O{l5$X9Xskv;PB2k(l7yUKqBg;VoM56h!GxS(qBfm` zoKB)Pouu3Xl5Namuvao%-7k{TqmqmdtC5VbV#$bOi)1?!W3rv;l)AS^DrQQyvze0Z zyv+F#HmLv?s(zS^^TwKtJG`2d{*$aZNm7$TXjK+XYG6^8qiw5>CE-nKyq3vVlNxX0 zNzIv;?#xTB(8-b5-g#hMzDl}MirJ&keNRe z7kjM4tZHH17D993fk zIC@o2DWMQkF0zW@P^xy1SM|}_D{?d)1)egm_fSY9mXP@HdJl#4iX)*!ryXvr6OV;L zhJ!|uV1l2B3_F6o>u(2GrJh8$CxA!4ME8LCoc$ZV5soK+Aq zBeG3|+OT3Kp9Vu_v}#k6PAR0A8HI*qFEd(M1t>A#=C)dQK9q(`y?UTRk;ohwdjgk$ zA>(5j>`|uUv?0@wjh(Yr$dnFg%A*KDXC`EuMD_F)GMRReInHL9QnFc7!<4>g-WuN{c0`D+9+zo=z-TwGV2TbYn^9Y!yq&gKDzsT*0`c{J3Nwj1eaa zAw!|Wn{7N&F)!>>rRuo62gIY!Sn(L|sPR~p$%1jY8^qhIR2|nP1L348S3C+;SmKgv zY$pWb1hQ! z#Gn>o#I)KSQIkf|oYfrEwlU7yw%U16&Qx<|s?kh&7Mji&YR+yD)a1N0!#P}Qa$cI8 z7a^}pqv(!NbjK*VG>RVKnQ~*Pv(7rR;dH69&N{OidX)V~mkh+c+Sy*Z)R}9fs=D+{ zu3_c~>TCij$6)`_9TVt|2@I*T!8)@VhE&yvRF`$oh_D()O;tl)!HpWcMwE}qhP={| z8irKWU{zTSL#k>xBo{QKsz%LQ45_M7L)Az~$$U{}ISJl=u|GRtCZx`Z8oUXqbE2km zLh785@It{vRBnJcE`=&`ZNxnxi8cAuUWTbWmL1R`Usmp^;jX;u;K$4Q+352A< zXW?XRI&v=xnjt=VpotllJ1Pnleax`jXHZjde$#P&Q{H0DcE>tqJ6p$;cOV+nlvjC^ zPxRQYP*GiRraYRN8ZAbig{d>MnetjpjrGcLpiQ2DkX1K|V6p-fD49G88S@yG;!O zHd?KXF5BoeIl81)z1GH%ZH$^6L&`B~Z4$Cgq9!LP14YTG!v;wiCrBoo8hOMBn%KOC zM~Kscdd0qN33;vwwj~HpJPNm09>pr>zF;zfJ((UQ4Ozgp$46!uI2`2o39{-52dLA& zf{fji+n98$!d{%*HSB??lCtHxqL!4-;nnvHJ@C{{tDvdot{+4mjEuAn-@g-GmQ|wn zvYMT{x+qvkfA#oaLv|VXI!u|o&s8r_zFJD^-O~uEVz5TRvk<7_0)~INY0p|xbnV&+iKW| zZm=J?Y9f6cFDXaTh3h+PK}BoE!7;;PV7NxwS~TF|l2ZBT7N(agDiNa_{p#;hLnN zXP36;DpH10Y_hfsmw4K}98Qa>uJF=~< zcXvD%wc?RzXQ*>eS1jMw7YX98yMODBtpk|>b@yPV*HR;Uy7LihZ-}b+)A?+=-^$us z_vZV0qrI8kTRSs*F~m?`@0Njobv^KKZzh-T%JvOBvX_*nnfP48_jc_~*-t>#{_Y*w z$IxQS!@b!qM1LPaq1u7H#JmXvFS>sLguJT&n@A9NqQJqwH$Ai?`>p`!)%{t!FNKM+Fq(gB zeW{Kx$#n!MW4XDK+kTc6?+EP44)$B$mc!WT?)1=ry^gfIc}At?<+ygEQSNReE@iFa zRRZ`lA@wU8lxF<%Dn5Lg-5XG2x1g1SHeo?%^Lo070#K$k4*_Vo*F!zPgq(o7vH!k@0gsCTM9aJzqaER% zc>P4}WbeFNj#f|rq;I>#kX)k%q+B2##;(+m?jP*KYn*(#w4yIH)LD7C)9SU!2W>*q zzK4=qEXUHyzDzC$Mv%^b7|n8omJ4_`Dx2_cGdy;aVn2X72STDn;(mtEMu8w4dYXOo zZ-`0RM*#tR)NRLTip2P`p17R3H}J)J%LC7pEzy_St!J;@7kCn|S+rB2ZXM|8W?<;m z->~*@!xYxnSY!x*QB;@D>3qwK#K}*+C#%M9Px7+uj1`O%RfE<-lJ&3Xsp1$0* z3HjsrFgLms`zF67>7)gZ@O2cdW`KT2fxK`nK*y#FfL9gZcVq4m7eQ7apjL0U$yV2u zr>`sbmXyucm2X^EzFAU!P*O&&D^Fclc3oEr*OdpZE3G!+cwO1q+QeP#AimlmO4=w1 zQxc&hN=b~8ZIrZA5~t)LO8$%z5=B$B(*wP!t~6dq`Y>a7TF2_#K)NfF>NT+7Q(brg znJal|@h?YXGbBvnlOs4?ibQ{{+ot-#A{N9`F7?5!52=std`jK<^!IoEK>fvgzqqLW zV(IT+{rmTSc~<@9xnC}+zZ(73^S@g9u&93c;}7T556^x0p8DYj|L%zT?+^dOr1}r@ zzdoS;`tYw`R)4+pn+f$dM}PB<`rGl}{^+-de*4Zxhd+8%{pjC(^!i6{esuJszx(LC z`j4akc<6UO`Q4kpKk)m5>hBL<8CS1NTzOu-^1_uv>XpM+rqwGmSKd>vynkh0{SRmU z@T&TUBY${J{lnWIA5=g7$;a<}Jpb|KPewl(`(#}GpM5s@*=hB&+0W)xacoo^D~e-OS`f!yRK@Y1h~qy; z_Nq934B2sU{ERA2jEWOQapDk4FNzZ{A$wVzm=q`G#EEnGazUJcfD;Si#G*Jku8NZr z;^gzlUJxfC@#HJwn1tNP7sMpwP971HZ;HvIC>c?X0 zMKSfVn3@z*b7Jben1Yb01@Z2Lc=rYIE_%LuRJ{9l$c~G5F}dkcFVj4P3 zzbvLF#q^w*K94UK#5DR(FNm3n0ZUgyo1tlF$0OG z_lwg-aT>EaeMp>sNt}KKr6c0>>*DmA;`H12@{Txt9N9^6`dwr*;`DpsG)6hSC}uIw z*>N%ZyqLuZv#*F*j4*pb%tG#&QE{dy&KweFUJ_>}#hLTs3_6`z6m#QZ?s+kX4s$;f zbFU&hD(0Zi+;K67erNZKvqf?CkU0C2I6EoMo)>4)@9d&DH!jXSFV3Ogxu1!1=y&c- zaqg%%hpy+2i*x9De!nlj1!3onI6e0L6uIap8G!0evsLA}&D53rEET zbi8m}TtLT*qvGPMxVV7QlK9}T_~12F%#VusF)kGR;_@rv@)2?QG`^tvqPRS-mJb{)k4>oM zvBTxD_mM4?i~GyPV!8Oka`A<7@ld(=Q?*=NC>IyY#ijE2eziRQqw@Hn^7!HM_)GZm z)AIN$$c~i9Uqkj*dHkL7__6Z%iSqcV^7s_0rpx2A$mYu9=gZ^ospW|`%M(YDoh(mG zBAY5tOe32qPn<#aUU}k!^29><;FwxII8{D~M+axi2j`GoEFXln?=O|--%!i*N6QQN zwy;#bgwZd(TE6ravZLii%w+LkdGSSLhs%pc%8Rd+7vCr^zExhljH;#bl4*XobcHqdh z1Fs`{`Nfx z8%X${$iE=mgI`X$|1`o~#;~7`e)=Qz(=#`c>nrMK$38m=Lap%XC25J@&9?@%Xs1c$^gkr1fs{I|sU1NzzEi#bf!1$4xMk}@fBwxs``YGv9=*5ozFl2(W~=_ub?Z@l za&%WnyE+uh)!|Ni5aq#X9>2r8ozC_}rNf8cz13TOl+9{$Jx1}B?Ww+WX_Zr_<@5ITTxsKgokkQVpU4jG z?oB6BxxGfVuMZWu()#KnRBHK3brM02jg`Z+iAaW-PFpvepsRhJzzMrI{nvxpeEK_s zyE9g)vC_v#b?r?Ai^1Ah=Sx1q_Et1@0go@ zruhUtud^S)ea3?eoW z?sRvizva11es2pm8oqOHK0ol#)~(My_uQ7}!dtR-_trMV+_v)5t;4Oi643$?`Mqh9 z(9#ck<_73aQ_nb-0=az3&gW=|lK(mR!%5s}sAQAtGti}meD-^N>A{}zVl`SEbG@r9!-CgJKjx3=1U_3NuI0N z-$osRcch)Yoswmquu@7+_NK{G|07yduByYg-%5i@yPL*$+<@e>8~oMKy$H7`&-m=k zd8G$YgS>~_0L}q^KpfdUqU`hIGOP5|Szb8HUvaCtYAef!$P@Zw_0?}5cB|^}{neFJ zb%CyIe?A2ZrmP;Atv}ylVP&Or!ydIo<%{a@oy)r*rbsqVantKcORG<=lz%~}kOxc4 z{y9n|KN_?3E6|m^7JfzhC$Osw^qlgCwEoL<;HB%}Bk`G=ZZ#Uq_hkTgN#1s<<+0-tE_w#^Fsn(nI;>fPMEHSQv)=I0k^T z6G4>fY#Dy-LU1&1-vW+`ciTJA+HRm^nG-cjC#sPb{bIRt$@d{*3g31Q-*qd0s&#RI zKp3C~!~nh&5Xv8l!bn+7B`8o*N8CPwM(%GQ2PH zjQH}te0>kU%Rznp(3V0yf?!`C@qeM8AI}>KzMh7Hzt8}a`S$${3|&|7t*71EdqZ$_ z__i+?k%$>@AvVA;73MZGb}p}f`#aJ+@@>GfC9n$=?*Bv_uZ`GpI8bvDNHP3;FF_>=Fnz} z&GvvMi6NLH){!$JxJ;`XPR6TS*|&zsQXcB+?A_>DT7AQcsrZ0n&{E@I{}<=RyXdW= z%q#ZT*}jTf-9~eylY&cGhkwf#)eS9gniZLXXSE3h@Ef$H;5b1p;m1oF8GjzG`|f?g z==WfQ+tHK_@ulGJLCZ}w#mGN~H{1+;ZMu$L=>0Y~Z7}KRZl1+pMNjEG?eS z&QhSWvoC86_ENdAvvc2Is<-mQZKq51U3hVt=}p_+kZ*sBlJ8LR*OYvhlE0J&z0z7k(=Htq)Fo)Utlp>iJC~ejb;9 z(6KCKDZ6eh+jI7^Gv_S3bFR%ar=D6)&!v|$a~XMd>)GYpTy8l(mzU>My)aimxm0~< zZV2~uy|_F)H;lZD%GO7gN9RVD$L7YCcg*cr9-kYR^c>Q6&h3TceGJ3`HXwV z)GoDK?NNKxKDA%nrw*w5)j{=uDyaw6A$3?CQAgD=bzGfLlj%p&LQ4Qm)o(ULy!IEnTnIuFp)`VeyuC-D{wpT4TX~(`Kuw z(0%%a%i*ZMQmJ|uZ&Y-piU$0!Sn;d1+Vfr@Pb2d5(#ndbs}l8tTBh6zYUr9B=B@@BZ9Mw|;@Jzg1J8fT2rI`Gw$7 zb>m?s$yL7THB?idx)ChbAH(FGD%Tn-t-ueoS6QB3x&3zGY`x|O)#mcbIrhTmm@<~$ zhua^2oO&l-o3!-=Z;sxDo94X808Ox$kF1@MsI~vS4Y9GPp|`kl=OjGa`aI&V*i*To zk*NnhI`zgceeY|Zp8DR`zVf}zuYYfI^ZUQF`E^{I-~S5kU%`D7_sz}CAN={vujAVM z0rGKe{s8&7Hh+M8T$?{cKCaClA|Kc050Q^+^M}aCwfPqEac#bZd|aDvAs^S~Tgb>5=dNwl?lQP@*I^97ox3h$2=3fXF^1sI z-85qe?%d5VhTzWKEMo}n+|4nD;LhDVV+iitEii`Q&fOu#5Zt+2WDLQbyTgnjxN~=e zF$8z+jxvVe&fPJ_#;o>^SMpQCrKwX-O`U&b>cbzI`pH+TnB?R~*gB8Pe+GeP&DqMD zbCf;jDo44XA}P?zH128g1>7?#r}DUGRY48mo-=fOE)VKGisynF19t5QM=rGH=RNHy zAS=MS{SEUBye-W)b;$s`UkYwif|6>M8qJ_|qjJ+LU6BVus+5Q{e5-n+)mZXN%?95`mfu=53$2%{fGy4(g*d41Z)TV4J z%-({7XGd9>jns@TpoAu*zj+rwkmHP*fiPnR9OhPEp{?wF7Wv{O>(#M! zr(*|B2VC~u*1EmA|795+${?R99UG%^XJkM!v`JT&P^W$nLFm@K1`-ZQ9K#CJvLb_H zNd;cL{xk~toE*ze+57D=d&F+<92g7BCG*ZPB;&Y-2hRJVwP7vU{#amt9DQ2{{I0ue zr!fL+(e1eVK=nJ$lBJ*NIK634SQsZ(3L|o5jBdxQT1r-}Z+z)+q-<8oQ^In>k@xw& zr@3NJYu(iP2>Q~UgvpeQUmrzkm}$<>`(6;*wJmetd*0IXDC3VHurU4<{uB1NUEDek zESt;&VK147Sv+tS{4uU%2lCWaK4TvCS%J%(4SUJamn98rXwsC-OqAYzD`nn~A(udF z!1o|xlW7@aI8+8!N4PDkF5?eJCHb;$E}Jz3!x1n@UniU1GJ4kW5^D8}2nfjqjD4?N zaJIkzOD3?)E)kvu_sG`*K(lgQ7dSSuqQGbJLOfYlQP$@RA`}$Y?Ev5tiv-d;FiI}u zk7AT%R>WE}R{P-raP5ba>9h4_6(ZF+L}I26Ny7zEl9@ztQDl0Bk9grtK$q}c*YQ<)9h>s zL71sPVr!`G>PI-QPcb*8DnVs%R8z>Q;EFK52q+&X#_t~-T^G2Lq2=&i8ka2kzea?J zz5vwa5DDn(DTx8R*VAjC>!bn>215ekf3*WtSaPF#%0C~tAQZ^$q)<8ovS4>I7<_s! z$cS!qob_xc)k$}scJF9P8Pmv0*F-N5A^LqLL^ z0>T!6utlION!OTD#B%2B-FD8&Iecy(+-_;R1Y%}#h)k_fS@z21uuv{9H&v_7c(Ghw zZB^<~PPSZD&1$)<52Iy$oWV&30**u$nGDSy_Vik~r%1Q=BjZV2{uqK>I_2cjxoj?v zznjZy<|f2~RF!!2eq8=%5r9Zofelb{{1Xz#LNBH_96ima#f-_*(^z7saV*GofK$kQ zPI7Y!3mfD&9OM<`ZHWU6K5itdj!lXMFn0CLpr8NBSE@8haf=YPf*YkuDN;O3q5z$gQb+aVa9Dt1 z+VF!4gfN{&n_=;p+1V>Edj3kY0j^705ax9B7-lO#+a1or}L7_ghXZo}3yu681&s3z1d+=pS?fSm(5BeZoO zWmJuV5Z$kzL$mFFdqp>I)|5y2I$kUzxf)43R_RMYQ>1MUe73pdHEL~7Psd_Agy?D= zf_N#YETO7uMSFd(cj2PaP$iHrv`Gy>Bfe6vRPi9vH-vIXT3$6MkxEVZ-f9bLz|P?{ zFxh5lCGKt&wvOe7WYlX7uN1)cu!MS|KGiG`jfA%lqIq4!<041s+j$8V3Ui zi7+L(5S5Mq;lXE+nnNrtB7SOtHMMr$If)1B!YY>powrdsEHpiJk04*>Dl>`zv5ME^EFSM zH1EW@iS~xksgp?s+FPh-RrdgTPz~tON=#ugPmbyYAzI4KGRY8)VR|0BE z=w~IV#WQ;5qycBn<4lWOf<}R^X4g))g88W@!YpW30RB5!)MPf{Uca?MgPUKjHyd8r zZ$VvH;4s5ofNo?YhA|;gzLBJNR%3ISNqyLWhIi|EfVdxy)SJzv*2>e7 z5iTsUj^wG(gt%r%by%Qu7RA$`qh1h6>YB>PAmu-dv@hZE#}Qbg88;^!AFLC^tmw2K zAdGG$s#}#%a;pT-$g2gzz%GF$5a1C)qC*ILLkPJFVVde`ITNX5q0yot6;TEW^P*W^ z1=xo}5{+bB;=xLl%DpE&W4Wk&Z@v8-F+B zWZd?FdkkIXG@&mp-sW|YwH!bIK>!LjgoH6lv5g$$Nze+2=oGu1_DxV-)e^!cs8%xA zSL#9O9&CFDw2fZ;BciRaOaQ_&=%L<$AeQI_D7LXj=ntaMw{ZF7$X2#sXCU{rAH2t; zbOA7#88UaGlFUr3#&RBLkih!e8?H$BP}KKO!iNHrq(jnHDbVEeLX%<2U(Ym(FbAX+ z%I>9H4|#l^Gn$?W?Lt?u){!PFAe62)Ta7?}7@Y{ydLBebR}cq;9l}jN#6SvW8U~7r zv89HO;Sl&*z}OWSI!59wKp42s03L<;a-9D=s8vK!D!n5R1}HT{46xfm@3+IH_|-(( zBS0m{M4-Yn@B$!x$XO>aVG8#^;gBhC+E2ac1ufn1ODF2+?#U83TF?&eNhRVow;$N!csm~0 zQd;jt+}W`Fy@4wx4jQA#k*WX11BMwc!lP!1Y78ua7-39K4H9(+M{WQyq6KRoIK<6L ztzNla_oneCXDi_Wr25#)DBZf@H6#L=23l(MhNq^JLS~-QGDZ4T^gPT{lf6iTq#nYv zKvIlVoX9Z6jtx#;13BNvWhhR%2;fLLlo??ex$hpx#d>BEyyC1U6zBKw0AR3|a(aYw zDRahogH-b&(pc!wpth7%(uN94m_do`VlJXgkZ1HYq~tpeFb#%Hl+Hs6a{Lb~tVK|u z`2hHs(!UDT#Zg7-zf@~fddcxWN5v+EE-l&3&#LT_-AFl*i1e?b1}&>R)|42m>darl$AGMY1P4)v2J882JpF{LMMbk$Woe>ro?E}jq8jZ zK@hr4t@KsKvPOpWVw0d$^9Xa&q#ZX07k?R9cX9cr5m;FIj5C47$KNTs1Ofs>3bdkV zm+(|1V7PeV-MJ_INZ>F55rRiTdZ|pW9Sfl62DA}@hVUQRf`MR*X|OBXwpJ%zhP{|f zYNoxT*0>3gQ%!O2a0OO~U@`*|T4^kJW)8-q0_8|^fN?O)lEPN%bxjkRm@#5>kSVdt zgVRB#a1?@rAtW$1v>$p043G`RuEdlKmV73I>mn}y?;)VFzV>UB^Ep@y^b3GhNAF)9 zgNfK(bT{VSPXklXy2`@t^?vt%PZ4*g7y$>S)cs8cU{EDm6{9H4;?$INQ7!FLJoQ(QK5j zFRx%LLe{^WtiRt~Re^w*iOSNZ{G}S&T&@Jw8xY*$>WqmzNAguhb%V=K^YA2>zl4b8 z!lnd;*#Ye5oZSxWOo(NWhK&O#(|-)mICHs51mKSoRm3H*F@m;kk5N7&;{+{o;l@x; z0Wsjl&@pZdYX@kwd39nv1z1U8{a|DCkI|;MdJJpiz_cprxiRekj$rBYUsHgd-4QH- z8X~@7r%->~)>+HAM!=?-S?d4>VMqe?1x$eIWjk3=&7A(5e8yFPHS@bytj6h1mb&G7 zuEUa&+R1=wMsIdKL&UZ zE|N$k#5h`$NYi~9#KgEZwhq3^72L3QTd`@ao%zt((bH$vpidCp5|dhW5V*MwK11MU z<=9Gi>>Vf@%ueus*w)DAzIN1ar(Zehzxu8j@UKyh$P|CkTX=dc%)Q^cEi_TOV+_cT zp~cW4L8hMpG<^M2NadS0o7Si+>BK7ARnb4Tw={h z(ImS1GYme@Q#d77#45@qKXT#o zxcui4^qDnxiZRoManl$x(~&VV15+im3g&8jpJTW)be&|n(Y6d zHCfKQUAzS@-n`{cJ$&Y|GqY9ExiMni6QJfw5-3TL2*M)H38-#3v_K*)va56;U6dh} zBjj!uZI-lW=COwr*(^I*se|04$jxF%_j&(%Ff4m#BVy4^VcygK-=g_{zeTe~UEoax z=n>jAGdU_W0t#&9mN66xDhmk-i;dQ@>@9u(X3}spe!2(-py21QgFIGa*C5$p3ddo8 zZ(#RE2i>&$eD3-+b#0;6D8o1m14K7-v|d~C>bJWIW06wUP1%9AJiQDFAhvPpYwW*l zkdn&9yP~8t`g08a5(APg{g)a1B7(30lX2AZ9!f_JFN6Ig2{E6naqQisVf8c07!@*b zq;a=>kX(Dq-qH5f&je3tQX-ym=Xw#Fi->cVfjF5GZ3EIF@Rh1o?1zI!8w>(4uA~wuP-D*=o$phl@dZvxha~#7l8_TlAd_Nvz^;Cf90p@qv zp#TYOpnr$cNNay=19jlo0Lxyak8hpQZA_sguU+e&0;ST)E^UH;G*FXW(sUfISzi*%cQ1HoX5T~hbQ`ug-+(|DM;kA7ZJsn=8 z$!ZkPk_pD3TJPAPKX)k@2NTL5b^F^o7G&)%)$L7AU3<5ggartD;HM*kTsm=H`lOhX+BYB#-h zh8sZ-KaOqn9kAqr7W$R?CD5vB(A3;%2kt@%YWK18$$ep-^sE|Shf2T9YCp$-6e}Dz zIWd_d)fFlhrnm_g7DSJi?R%kX;XaDKcxM`h7t_3{0Gp>@V0}Z+iVL{t1n|^>ebkT* zTAcJRFdz_$BTv`eBuveFo`RTPZ(^%G1EK&EnL!rP(TLbWpD=A3S}e_FjlYQxm-A>A zbcywUk--2q{S~DBCb8*7M6g{B{XXSlmnjM3l!HkMlmV&?u#csHbF`(8Q9+Pc4o~n- zf%3p@_mtZ{zCE#K$NE@FpUOZ2DQNju5di=R)mF}u>yOjr5LN(4TXeG!8|yJrZMd7e ziguvO0f0Zr&HJC{8;w~}GjP~qA1y!gQYYdHHV1G3tMMpOXmm4Rjhzsaj?|2RG^_#f zI~@=R<1!-LA|E-M5;EV;8A!bD#j&~4`=_t+t=)Z+( z^sghp`jYb)co6vf6+Q~PImwvl6{9Q}IsFY`V=}IPV41@a(_WmNg<@tLBtSQFv~Y6G zuwo-{laTeZ+efxvx&De0b)Bj@4Lh=Ie*+Pk`V<`gsLvsE6$~#h)T9u?i=vhmqd2J> z4IfSb!#2Hk{IfxUKBbE^X+teB29tFxEvc3NlO_jmxGK||g0lIfY@Rv#=ec+=&47A> zCJh^hFO#MU!tAqGErn}xsQu;l;b;WBmSr6b(v;vR&CP4vjG+alyLkI1+NQw|=Z^30Deq#oNBLb&(1ZjY;1m;Za zku!1HBWJFAZxWSe-gFV_+YEr}7Hk$7k!L_5(4q26vzMO;i&5<1$IH(@-TQQ*`}D|} z-aI^Ac)Ev>ap}7>EOen&8*)YHg(K@B+`{bj=JKUl6(?DYVapID0q6nB^d%JELpVKx zh?UNOu8gJN@8*sJT2nAY&>s%*6dZbBn!sM3?2B*Z{boHeyaZS|DV!1k)}KIxxGly7 zib*!yb?qPpU_20{L2Y1(CWuOztTD?&$jX6ra<|2SIpalG5A(1wXY`A3DI@hk4gf3L zeiA2ZAcV_eCkt!bAb|XE3n5U@`Jog!JtSZtD>W0-k!>gn(EjhE>-rxcm>lX^ho5Ka zz+#NVn16-me6*}fID{37)3s0+S*ggCx`b-NjGPP7+p>@f>Gc)+)*xzNqd#Gaa{Zw5rx@`6V1U)8cspqpdN|!r_PT81E4C zFos9-?E-Wi`tQK*o9t85tc-&P3-Bw%JM{cQh0*abyeM$2E1+JgkF|4lFLHJdBA_M{ zz%9cc2^=6ASa^qw9MbXzWJB85(u05u$5gO6_^YOIY{b(s?@MDVqviF0fUN#E(8lwG zP$Ikq=GNZTH+|3|X2^&2Z zusK3=m8?kz>M*v>4sl)RbP?*Z%nLgY>+2$JvKbW)Uk#co z&!Ta0_|nfZKN3~!m4WFJr(~XhEWga56j7F^Gq~AA;biNe8d5kJRNw4Tv*VyP%nV}k z{u$fe*7F}CJ!?wl&uNeMFBG$rX8PvtLevZeQR;^>V|$Ysqa*wgnK8`XUd%4%mNP8# z7j0{r`D5?R{$bDj>2ET%XV&yTWkNrg;T#h@u87Wr;lyJqo;N`J0NnK!M|H-f#l>B~ z;Q%6>xnwxw91dmYvOxl%q}yF$>0*oo58~ay-VMRi?Miges?H8(P>6_#CEeFQ&pjoR z>E^s7eR~KG+w@I_o%dYd2? z`3;sDed5)FF6bAl1~hWQ?g5k|sQ;qz5h9)c2s?xe9cmxwpSJ#j2_a)YlD<5T2lfIx z@Gw_IYirSu3pQyd?i*zmY^-GU<6^1Ct~|6VF;8kocmsa3U zQR+Pi7;jL@5D6**6i3j$p_h?p@v}@2Xy)$K0MO`o4KH{2U2)VbyE5%vzum0$PODUIT)1P{`T|mV-;WJ3XTLAA8)EUbo#~?^ne0{ zG9q(K(?6Kvf)q>SR@jwMRZINJ>Csi1)$sKahjDe22Mqc}jL46jb(AXeM#%7z%EWnL zy7U5?>C=QR!};7)TK9O0wNGlP(C@bo_WnAiD^fs=f+Dc@2vTLsbN~Ruf;3CS^M8RW zCEO^L!TutPDdV1sfyO@cz9*_r)K#wZ%-f6m}v zF!(J7{}KT?E3C#ary3&mub4IzIc^d*!ij;;EC|2|_0r#BE#GGFZy0oWc2_g`N62`F z<0&DMbFuTD!r#s15azL^n=4@N9cpb68@xlBrK`A-AKtXiy606u8+Pe8 zP<{KoAAqn5YERWs=!DVY2voE_iW69JaKM!HrR8aU1X8Ql>)M4SDFp78%~oJy#69$v1B3%-8B%^;4t$4 zHo9U|1G+UNgx9FZTlbSFyA0!!&T~_XU0$^2!4q+ZRgl=b2+N`3$w-*D;ellC^z2N{ zJM$SF0e=ngG`yK+;nSJLvFS_V+jJH##3}eKArGE!Fj?v6ZWlXg+8D0j!!E1O!GxcM z3IBCt!iPBw=^sS;HC*7$u74K3L}w9$ClaPGKO+M>`{2}+Pdap#>mee<*;D5Bpt-$Q z--qnk%ai$V7}_1qZd`0G^OS#BFppHx!wC}ydiphZ>ptC3vy}yWnM7U?>KyLwFLITx zZYX3{Lr{SjFNTE4j6Q^TID$?=_qOWy4;V~X`)k*wfv zp!DD63LZnma%jagf3aADtrlUErXQyq`2yjF6t_Pn6ww+(dWuu}#JB`TN%}FRV#|~R zqtFjT^bxlvxbkqSeBVW}si|`SIDs`H{q~Zb4w3a+>@}N!T9}A)QIE_lMr)Atsn2cy zKjB5wr@(=@2FFE+z3@O+6!5-*9PaASG(`twoRWkX2kWc26FB-c#M6j_-B54Q--U=r zj~v{Ae{fZ}YOU^%%4flnK4r?o^)5}Y1c>5*h?J-ELVx)j%I^AhI8%^LYBxo?6s}B{G%UarznkN8 zl1PrANtn3FoXnd=`3|!6ze5lfvFtGT>KYv8JY(8=ndv(&nm3qdmO}_im|kI}k#l93 z$AQNyy0Wm0op>I|2Asw)6sC9*GTf1DO(hvP^#H41I2?62s(pYa{Wd!BZNkP=h*^4cX$duuZsHV<&7b=*V26oj)dy2VPa>88bd&8u%0+RXW@w`OMe7{$)WB7eKiCV-!9m;2f~Arw#liv z`WJEe4u&Ob2y(ZGHN@#sdjU{&!NOWm|8J%`n2sCT1HSBKpC5?Jf27iTdHu0%aR>7gZT)azM%RUy6h zC6mu_cF=RApNQY+_RmNh-Cm;91#I&7_OoD~*|$$y-0W{Whn8>}3}x%xn)>Sa>47@- znz7=IpOeu_3#@VNwQetiqV)b7-8#4F-S6D9=0E7K`P265FVnvo_*HC|%@LzgrNnKw zlVUN3P>U}fQJ_pTD3WmD4E=|)x`$kGZiy$HVom8J{inG#_ZErjsYnYVbW6f}^rLa~ zxFj3`&@*=i_wVB#Bf<|Ee+$9nutC<3F+mts9{%2K4=3>hqdQG9M?8vm_J7OGkcczP z{>Kcudd(l;F_OEwq#(?3uru^&$TRj6G@^(3)mAeQ7p*}mLAtV+xOf8*3nw!1^%yWG zVN(td34mts8FYgO?8ulvKXBTflw<@)6``|%rGcT5s@M|<$FQA87Xrj^v9yC6dLzdv z?fV8WzL$H?V6wJT@(!ba`ZpMa49HnE8I>k?(4=-+XedY2GfJU~B3-_Lj9()`BunBj zppxx@YIX!l89Z%su4qP8WF|k9w$9`74oT{pl|qsZ#&Ns8XgjC5MczTGya#HFld4AXMBf z#Gm81W@OUrOs||NlBoUxr=FOriNjcnZaiYosZ3NU<^b?-mw{Oun+!{I5nMvA|zk_0lwm3=$@_1 zF9I%i+XisyFuTXLw#5+wvByr3*8;^;2CPX2`Qv>jE&-trBLc9-&H_K=a+^+OBHOKV z!Y44{F0|W|(R71eUqe~hTfcU@5Wq8s+bdTAazO^=W_!yuL~#%r@3ub@(ReWk-iCJB zz_Arb-a_&b#j#s{(?kx%z@pImiIj+n^H?h07QwNv;gElp zZ=^gdlR1^=l7W7di4(#$%PXx$HE7B9B+g3epJrCZoc)(?6v;Vsp zV}yS*-`#bR7&%CoJ8QnJbdGo+X1WQSsu?3M1V`jYocJ9Y<4RWm7vz7;C8Ie64hpVF f&Iz1O{!YP7xns}e_KbbhTEO+}*bRh_j~)MCQh{EQ diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/_tokenizer.cpython-36.pyc deleted file mode 100644 index 6f417c41e12a22e714dd3bb2b29199d0df142eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42163 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 diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/constants.cpython-36.pyc deleted file mode 100644 index 0ade5366f1ac10ab8a2f99bee6c720e9c216c047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66322 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 YHlqK&&ON+h%elx;wb8l@57MdVpVTnt^#A|> diff --git a/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc b/env/lib/python3.6/site-packages/pip/_vendor/html5lib/__pycache__/html5parser.cpython-36.pyc deleted file mode 100644 index 4fa16f3ff5ae4964c17f96574823836f9fbb6677..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98007 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