[automerger] Disable unused protocols. am: 4f2f94119e am: 2c491e4c14 am: 72786999f7 am: 7fc585798b am: 980448bb19 am: f2f7e1fade am: 246a705556 am: c38baaf42e
am: bc9623224d

Change-Id: Iccce3af9f9e30f07e7974745261a32a854dde51a
diff --git a/.gitignore b/.gitignore
index 3926ddf..3b509b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,5 @@
 /libtool
 curl*.spec
 curl*.list
+/packages/Android/Android.mk
 /tests/configurehelp.pm
diff --git a/Android.bp b/Android.bp
index b639598..06237da 100644
--- a/Android.bp
+++ b/Android.bp
@@ -60,6 +60,8 @@
         "-DBUILDING_LIBCURL",
     ],
     srcs:[
+        "lib/curl_ctype.c",
+        "lib/curl_range.c",
         "lib/rand.c",
         "lib/file.c",
         "lib/timeval.c",
@@ -185,7 +187,6 @@
         "lib/vtls/axtls.c",
         "lib/vtls/cyassl.c",
         "lib/vtls/schannel.c",
-        "lib/vtls/darwinssl.c",
         "lib/vtls/gskit.c",
         "lib/vtls/mbedtls.c",
     ],
@@ -224,6 +225,7 @@
         "src/tool_doswin.c",
         "src/tool_easysrc.c",
         "src/tool_formparse.c",
+        "src/tool_filetime.c",
         "src/tool_getparam.c",
         "src/tool_getpass.c",
         "src/tool_help.c",
diff --git a/CHANGES b/CHANGES
index 9bc3b76..cbb1072 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,2346 @@
 
                                   Changelog
 
+Version 7.60.0 (15 May 2018)
+
+Daniel Stenberg (15 May 2018)
+- RELEASE-NOTES: 7.60.0 release
+
+- THANKS: added people from the curl 7.60.0 release
+
+- docs/libcurl/index.html: removed
+  
+  The HTML files are long gone from the dist, now remove the last HTML
+  file pointing to those missing files.
+  
+  d
+
+- [steini2000 brought this change]
+
+  http2: remove unused variable
+  
+  Closes #2570
+
+- [steini2000 brought this change]
+
+  http2: use easy handle of stream for logging
+
+- gcc: disable picky gcc-8 function pointer warnings in two places
+  
+  Reported-by: Rikard Falkeborn
+  Bug: #2560
+  Closes #2569
+
+- http2: use the correct function pointer typedef
+  
+  Fixes gcc-8 picky compiler warnings
+  Reported-by: Rikard Falkeborn
+  Bug: #2560
+  Closes #2568
+
+- CODE_STYLE: mention return w/o parens, but sizeof with
+  
+  ... and remove the github markdown syntax so that it renders better on
+  the web site. Also, don't use back-ticks inlined to allow the CSS to
+  highlight source code better.
+
+- [Rikard Falkeborn brought this change]
+
+  examples: Fix format specifiers
+  
+  Closes #2561
+
+- [Rikard Falkeborn brought this change]
+
+  tool: Fix format specifiers
+
+- [Rikard Falkeborn brought this change]
+
+  ntlm: Fix format specifiers
+
+- [Rikard Falkeborn brought this change]
+
+  tests: Fix format specifiers
+
+- [Rikard Falkeborn brought this change]
+
+  lib: Fix format specifiers
+
+- contributors.sh: use "on github", not at
+
+- http2: getsock fix for uploads
+  
+  When there's an upload in progress, make sure to wait for the socket to
+  become writable.
+  
+  Detected-by: steini2000 on github
+  Bug: #2520
+  Closes #2567
+
+- pingpong: fix response cache memcpy overflow
+  
+  Response data for a handle with a large buffer might be cached and then
+  used with the "closure" handle when it has a smaller buffer and then the
+  larger cache will be copied and overflow the new smaller heap based
+  buffer.
+  
+  Reported-by: Dario Weisser
+  CVE: CVE-2018-1000300
+  Bug: https://curl.haxx.se/docs/adv_2018-82c2.html
+
+- http: restore buffer pointer when bad response-line is parsed
+  
+  ... leaving the k->str could lead to buffer over-reads later on.
+  
+  CVE: CVE-2018-1000301
+  Assisted-by: Max Dymond
+  
+  Detected by OSS-Fuzz.
+  Bug: https://curl.haxx.se/docs/adv_2018-b138.html
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7105
+
+Patrick Monnerat (13 May 2018)
+- cookies: do not take cookie name as a parameter
+  
+  RFC 6265 section 4.2.1 does not set restrictions on cookie names.
+  This is a follow-up to commit 7f7fcd0.
+  Also explicitly check proper syntax of cookie name/value pair.
+  
+  New test 1155 checks that cookie names are not reserved words.
+  
+  Reported-By: anshnd at github
+  Fixes #2564
+  Closes #2566
+
+Daniel Stenberg (12 May 2018)
+- smb: reject negative file sizes
+  
+  Assisted-by: Max Dymond
+  
+  Detected by OSS-Fuzz
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8245
+
+- setup_transfer: deal with both sockets being -1
+  
+  Detected by Coverity; CID 1435559.  Follow-up to f8d608f38d00. It would
+  index the array with -1 if neither index was a socket.
+
+- travis: add build using NSS
+  
+  Closes #2558
+
+- [Sunny Purushe brought this change]
+
+  openssl: change FILE ops to BIO ops
+  
+  To make builds with VS2015 work. Recent changes in VS2015 _IOB_ENTRIES
+  handling is causing problems. This fix changes the OpenSSL backend code
+  to use BIO functions instead of FILE I/O functions to circumvent those
+  problems.
+  
+  Closes #2512
+
+- travis: add a build using WolfSSL
+  
+  Assisted-by: Dan Fandrich
+  
+  Closes #2528
+
+- RELEASE-NOTES: typo
+
+- RELEASE-NOTES: synced
+
+- [Daniel Gustafsson brought this change]
+
+  URLs: fix one more http url
+  
+  This file wasn't included in commit 4af40b3646d3b09 which updated all
+  haxx.se http urls to https. The file was committed prior to that update,
+  but may have been merged after it and hence didn't get updated.
+  
+  Closes #2550
+
+- github/lock: auto-lock closed issues after 90 days of inactivity
+
+- vtls: fix missing commas
+  
+  follow-up to e66cca046cef
+
+- vtls: use unified "supports" bitfield member in backends
+  
+  ... instead of previous separate struct fields, to make it easier to
+  extend and change individual backends without having to modify them all.
+  
+  closes #2547
+
+- transfer: don't unset writesockfd on setup of multiplexed conns
+  
+  Curl_setup_transfer() can be called to setup a new individual transfer
+  over a multiplexed connection so it shouldn't unset writesockfd.
+  
+  Bug: #2520
+  Closes #2549
+
+- [Frank Gevaerts brought this change]
+
+  configure: put CURLDEBUG and DEBUGBUILD in lib/curl_config.h
+  
+  They are removed from the compiler flags.
+  
+  This ensures that make dependency tracking will force a rebuild whenever
+  configure --enable-debug or --enable-curldebug changes.
+  
+  Closes #2548
+
+- http: don't set the "rewind" flag when not uploading anything
+  
+  It triggers an assert.
+  
+  Detected by OSS-Fuzz
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8144
+  Closes #2546
+
+- travis: add an mbedtls build
+  
+  Closes #2531
+
+- configure: only check for CA bundle for file-using SSL backends
+  
+  When only building with SSL backends that don't use the CA bundle file
+  (by default), skip the check.
+  
+  Fixes #2543
+  Fixes #2180
+  Closes #2545
+
+- ssh-libssh.c: fix left shift compiler warning
+  
+  ssh-libssh.c:2429:21: warning: result of '1 << 31' requires 33 bits to
+  represent, but 'int' only has 32 bits [-Wshift-overflow=]
+  
+  'len' will never be that big anyway so I converted the run-time check to
+  a regular assert.
+
+- [Stephan Mühlstrasser brought this change]
+
+  URL: fix ASCII dependency in strcpy_url and strlen_url
+  
+  Commit 3c630f9b0af097663a64e5c875c580aa9808a92b partially reverted the
+  changes from commit dd7521bcc1b7a6fcb53c31f9bd1192fcc884bd56 because of
+  the problem that strcpy_url() was modified unilaterally without also
+  modifying strlen_url(). As a consequence strcpy_url() was again
+  depending on ASCII encoding.
+  
+  This change fixes strlen_url() and strcpy_url() in parallel to use a
+  common host-encoding independent criterion for deciding whether an URL
+  character must be %-escaped.
+  
+  Closes #2535
+
+- [Denis Ollier brought this change]
+
+  docs: remove extraneous commas in man pages
+  
+  Closes #2544
+
+- RELEASE-NOTES: synced
+
+- Revert "TODO: remove configure --disable-pthreads"
+  
+  This reverts commit d5d683a97f9765bddfd964fe32e137aa6e703ed3.
+  
+  --disable-pthreads can be used to disable pthreads and get the threaded
+  resolver to use the windows threading when building with mingw.
+
+- vtls: don't define MD5_DIGEST_LENGTH for wolfssl
+  
+  ... as it defines it (too)
+
+- TODO: remove configure --disable-pthreads
+
+Jay Satiro (2 May 2018)
+- [David Garske brought this change]
+
+  wolfssl: Fix non-blocking connect
+  
+  Closes https://github.com/curl/curl/pull/2542
+
+Daniel Stenberg (30 Apr 2018)
+- CURLOPT_URL.3: add ENCODING section [ci skip]
+  
+  Feedback-by: Michael Kilburn
+
+- KNOWN_BUGS: Client cert with Issuer DN differs between backends
+  
+  Closes #1411
+
+- KNOWN_BUGS: Passive transfer tries only one IP address
+  
+  Closes #1508
+
+- KNOWN_BUGS: --upload-file . hang if delay in STDIN
+  
+  Closes #2051
+
+- KNOWN_BUGS: Connection information when using TCP Fast Open
+  
+  Closes #1332
+
+- travis: enable libssh2 on both macos and Linux
+  
+  It seems to not be detected by default anymore (which is a bug I
+  believe)
+  
+  Closes #2541
+
+- TODO: Support the clienthello extension
+  
+  Closes #2299
+
+- TODO: CLOEXEC
+  
+  Closes #2252
+
+- tests: provide 'manual' as a feature to optionally require
+  
+  ... and make test 1026 rely on that feature so that --disable-manual
+  builds don't cause test failures.
+  
+  Reported-by: Max Dymond and Anders Roxell
+  Fixes #2533
+  Closes #2540
+
+- CURLINFO_PROTOCOL.3: mention the existing defined names
+
+Jay Satiro (27 Apr 2018)
+- [Daniel Gustafsson brought this change]
+
+  cookies: remove unused macro
+  
+  Commit 2bc230de63 made the macro MAX_COOKIE_LINE_TXT become unused,
+  so remove as it's not part of the published API.
+  
+  Closes https://github.com/curl/curl/pull/2537
+
+Daniel Stenberg (27 Apr 2018)
+- [Daniel Gustafsson brought this change]
+
+  checksrc: force indentation of lines after an else
+  
+  This extends the INDENTATION case to also handle 'else' statements
+  and require proper indentation on the following line. Also fixes the
+  offending cases found in the codebase.
+  
+  Closes #2532
+
+- http2: fix null pointer dereference in http2_connisdead
+  
+  This function can get called on a connection that isn't setup enough to
+  have the 'recv_underlying' function pointer initialized so it would try
+  to call the NULL pointer.
+  
+  Reported-by: Dario Weisser
+  
+  Follow-up to db1b2c7fe9b093f8 (never shipped in a release)
+  Closes #2536
+
+- http2: get rid of another strstr()
+  
+  Follow-up to 1514c44655e12e: replace another strstr() call done on a
+  buffer that might not be zero terminated - with a memchr() call, even if
+  we know the substring will be found.
+  
+  Assisted-by: Max Dymond
+  
+  Detected by OSS-Fuzz
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8021
+  
+  Closes #2534
+
+- cyassl: adapt to libraries without TLS 1.0 support built-in
+  
+  WolfSSL doesn't enable it by default anymore
+
+- configure: provide --with-wolfssl as an alias for --with-cyassl
+
+- RELEASE-NOTES: synced
+
+- [Daniel Gustafsson brought this change]
+
+  os400.c: fix ASSIGNWITHINCONDITION checksrc warnings
+  
+  All occurrences of assignment within conditional expression in
+  os400sys.c rewritten into two steps: first assignment and then the check
+  on the success of the assignment. Also adjust related incorrect brace
+  positions to match project indentation style.
+  
+  This was spurred by seeing "if((inp = input_token))", but while in there
+  all warnings were fixed.
+  
+  There should be no functional change from these changes.
+  
+  Closes #2525
+
+- [Daniel Gustafsson brought this change]
+
+  cookies: ensure that we have cookies before writing jar
+  
+  The jar should be written iff there are cookies, so ensure that we still
+  have cookies after expiration to avoid creating an empty file.
+  
+  Closes #2529
+
+- strcpy_url: only %-encode values >= 0x80
+  
+  OSS-Fuzz detected
+  
+  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8000
+  
+  Broke in dd7521bcc1b7
+
+- mime: avoid NULL pointer dereference risk
+  
+  Coverity detected, CID 1435120
+  
+  Closes #2527
+
+- [Stephan Mühlstrasser brought this change]
+
+  ctype: restore character classification for non-ASCII platforms
+  
+  With commit 4272a0b0fc49a1ac0ceab5c4a365c9f6ab8bf8e2 curl-speficic
+  character classification macros and functions were introduced in
+  curl_ctype.[ch] to avoid dependencies on the locale. This broke curl on
+  non-ASCII, e.g. EBCDIC platforms. This change restores the previous set
+  of character classification macros when CURL_DOES_CONVERSIONS is
+  defined.
+  
+  Closes #2494
+
+- ftplistparser: keep state between invokes
+  
+  Fixes FTP wildcard parsing when done over a number of read buffers.
+  
+  Regression from f786d1f14
+  
+  Reported-by: wncboy on github
+  Fixes #2445
+  Closes #2526
+
+- examples/http2-upload: expand buffer to avoid silly warning
+  
+  http2-upload.c:135:44: error: ‘%02d’ directive output may be truncated
+  writing between 2 and 11 bytes into a region of size between 8 and 17
+
+- examples/sftpuploadresume: typecast fseek argument to long
+  
+  /docs/examples/sftpuploadresume.c:102:12: warning: conversion to 'long
+  int' from 'curl_off_t {aka long long int}' may alter its value
+
+- Revert "ftplistparser: keep state between invokes"
+  
+  This reverts commit abbc8457d85aca74b7cfda1d394b0844932b2934.
+  
+  Caused fuzzer problems on travis not seen when this was a PR!
+
+- Curl_memchr: zero length input can't match
+  
+  Avoids undefined behavior.
+  
+  Reported-by: Geeknik Labs
+
+- ftplistparser: keep state between invokes
+  
+  Fixes FTP wildcard parsing when doing over a number of read buffers.
+  
+  Regression from f786d1f14
+  
+  Reported-by: wncboy on github
+  Fixes #2445
+  Closes #2519
+
+- ftplistparser: renamed some members and variables
+  
+  ... to make them better spell out what they're for.
+
+- RELEASE-NOTES: synced
+
+- [Christian Schmitz brought this change]
+
+  curl_global_sslset: always provide available backends
+  
+  Closes #2499
+
+- http2: convert an assert to run-time check
+  
+  Fuzzing has proven we can reach code in on_frame_recv with status_code
+  not having been set, so let's detect that in run-time (instead of with
+  assert) and error error accordingly.
+  
+  (This should no longer happen with the latest nghttp2)
+  
+  Detected by OSS-Fuzz
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7903
+  Closes #2514
+
+- curl.1: clarify that options and URLs can be mixed
+  
+  Fixes #2515
+  Closes #2517
+
+Jay Satiro (23 Apr 2018)
+- [Archangel_SDY brought this change]
+
+  CURLOPT_SSLCERT.3: improve WinSSL-specific usage info
+  
+  Ref: https://github.com/curl/curl/pull/2376#issuecomment-381858780
+  
+  Closes https://github.com/curl/curl/pull/2504
+
+- [Archangel_SDY brought this change]
+
+  schannel: fix build error on targets <= XP
+  
+  - Use CRYPT_STRING_HEX instead of CRYPT_STRING_HEXRAW since XP doesn't
+    support the latter.
+  
+  Ref: https://github.com/curl/curl/pull/2376#issuecomment-382153668
+  
+  Closes https://github.com/curl/curl/pull/2504
+
+Daniel Stenberg (23 Apr 2018)
+- Revert "ftplistparser: keep state between invokes"
+  
+  This reverts commit 8fb78f9ddc6d858d630600059b8ad84a80892fd9.
+  
+  Unfortunately this fix introduces memory leaks I've not been able to fix
+  in several days. Reverting this for now to get the leaks fixed.
+
+Jay Satiro (21 Apr 2018)
+- tool_help: clarify --max-time unit of time is seconds
+  
+  Before:
+   -m, --max-time <time> Maximum time allowed for the transfer
+  
+  After:
+   -m, --max-time <seconds> Maximum time allowed for the transfer
+
+Daniel Stenberg (20 Apr 2018)
+- http2: handle GOAWAY properly
+  
+  When receiving REFUSED_STREAM, mark the connection for close and retry
+  streams accordingly on another/fresh connection.
+  
+  Reported-by: Terry Wu
+  Fixes #2416
+  Fixes #1618
+  Closes #2510
+
+- http2: clear the "drain counter" when a stream is closed
+  
+  This fixes the notorious "httpc->drain_total >= data->state.drain"
+  assert.
+  
+  Reported-by: Anders Bakken
+  
+  Fixes #1680
+  Closes #2509
+
+- http2: avoid strstr() on data not zero terminated
+  
+  It's not strictly clear if the API contract allows us to call strstr()
+  on a string that isn't zero terminated even when we know it will find
+  the substring, and clang's ASAN check dislikes us for it.
+  
+  Also added a check of the return code in case it fails, even if I can't
+  think of a situation how that can trigger.
+  
+  Detected by OSS-Fuzz
+  Closes #2513
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7760
+
+- [Stephan Mühlstrasser brought this change]
+
+  openssl: fix subjectAltName check on non-ASCII platforms
+  
+  Curl_cert_hostcheck operates with the host character set, therefore the
+  ASCII subjectAltName string retrieved with OpenSSL must be converted to
+  the host encoding before comparison.
+  
+  Closes #2493
+
+Jay Satiro (20 Apr 2018)
+- openssl: Add support for OpenSSL 1.1.1 verbose-mode trace messages
+  
+  - Support handling verbose-mode trace messages of type
+    SSL3_RT_INNER_CONTENT_TYPE, SSL3_MT_ENCRYPTED_EXTENSIONS,
+    SSL3_MT_END_OF_EARLY_DATA, SSL3_MT_KEY_UPDATE, SSL3_MT_NEXT_PROTO,
+    SSL3_MT_MESSAGE_HASH
+  
+  Reported-by: iz8mbw@users.noreply.github.com
+  
+  Fixes https://github.com/curl/curl/issues/2403
+
+Daniel Stenberg (19 Apr 2018)
+- ftplistparser: keep state between invokes
+  
+  Regression from f786d1f14
+  
+  Reported-by: wncboy on github
+  Fixes #2445
+  Closes #2508
+
+- detect_proxy: only show proxy use if it had contents
+
+- http2: handle on_begin_headers() called more than once
+  
+  This triggered an assert if called more than once in debug mode (and a
+  memory leak if not debug build). With the right sequence of HTTP/2
+  headers incoming it can happen.
+  
+  Detected by OSS-Fuzz
+  
+  Closes #2507
+  Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7764
+
+Jay Satiro (18 Apr 2018)
+- [Dan McNulty brought this change]
+
+  schannel: add support for CURLOPT_CAINFO
+  
+  - Move verify_certificate functionality in schannel.c into a new
+    file called schannel_verify.c. Additionally, some structure defintions
+    from schannel.c have been moved to schannel.h to allow them to be
+    used in schannel_verify.c.
+  
+  - Make verify_certificate functionality for Schannel available on
+    all versions of Windows instead of just Windows CE. verify_certificate
+    will be invoked on Windows CE or when the user specifies
+    CURLOPT_CAINFO and CURLOPT_SSL_VERIFYPEER.
+  
+  - In verify_certificate, create a custom certificate chain engine that
+    exclusively trusts the certificate store backed by the CURLOPT_CAINFO
+    file.
+  
+  - doc updates of --cacert/CAINFO support for schannel
+  
+  - Use CERT_NAME_SEARCH_ALL_NAMES_FLAG when invoking CertGetNameString
+    when available. This implements a TODO in schannel.c to improve
+    handling of multiple SANs in a certificate. In particular, all SANs
+    will now be searched instead of just the first name.
+  
+  - Update tool_operate.c to not search for the curl-ca-bundle.crt file
+    when using Schannel to maintain backward compatibility. Previously,
+    any curl-ca-bundle.crt file found in that search would have been
+    ignored by Schannel. But, with CAINFO support, the file found by
+    that search would have been used as the certificate store and
+    could cause issues for any users that have curl-ca-bundle.crt in
+    the search path.
+  
+  - Update url.c to not set the build time CURL_CA_BUNDLE if the selected
+    SSL backend is Schannel. We allow setting CA location for schannel
+    only when explicitly specified by the user via CURLOPT_CAINFO /
+    --cacert.
+  
+  - Add new test cases 3000 and 3001. These test cases check that the first
+    and last SAN, respectively, matches the connection hostname. New test
+    certificates have been added for these cases. For 3000, the certificate
+    prefix is Server-localhost-firstSAN and for 3001, the certificate
+    prefix is Server-localhost-secondSAN.
+  
+  - Remove TODO 15.2 (Add support for custom server certificate
+    validation), this commit addresses it.
+  
+  Closes https://github.com/curl/curl/pull/1325
+
+- schannel: fix warning
+  
+  - Fix warning 'integer from pointer without a cast' on 3rd arg in
+    CertOpenStore. The arg type HCRYPTPROV may be a pointer or integer
+    type of the same size.
+  
+  Follow-up to e35b025.
+  
+  Caught by Marc's CI builds.
+
+- [Jakub Wilk brought this change]
+
+  docs: fix typos
+  
+  Closes https://github.com/curl/curl/pull/2503
+
+Daniel Stenberg (17 Apr 2018)
+- RELEASE-NOTES: synced
+
+Jay Satiro (17 Apr 2018)
+- [Kees Dekker brought this change]
+
+  winbuild: Support custom devel paths for each dependency
+  
+  - Support custom devel paths for c-ares, mbedTLS, nghttp2, libSSH2,
+    OpenSSL and zlib. Respectively: CARES_PATH, MBEDTLS_PATH,
+    NGHTTP2_PATH, SSH2_PATH, SSL_PATH and ZLIB_PATH.
+  
+  - Use lib.exe for making the static library instead of link.exe /lib.
+    The latter is undocumented and could cause problems as noted in the
+    comments.
+  
+  - Remove a dangling URL that no longer worked. (I was not able to find
+    the IDN download at MSDN/microsoft.com, so it seems to be removed.)
+  
+  - Remove custom override for release-ssh2-ssl-dll-zlib configuration.
+    Nobody knows why it was there and as far as we can see is unnecessary.
+  
+  Closes https://github.com/curl/curl/pull/2474
+
+Daniel Stenberg (17 Apr 2018)
+- [Jess brought this change]
+
+  README.md: add backers and sponsors
+  
+  Closes #2484
+
+- [Archangel_SDY brought this change]
+
+  schannel: add client certificate authentication
+  
+  Users can now specify a client certificate in system certificates store
+  explicitly using expression like `--cert "CurrentUser\MY\<thumbprint>"`
+  
+  Closes #2376
+
+Marcel Raad (16 Apr 2018)
+- [toughengineer brought this change]
+
+  ntlm_sspi: fix authentication using Credential Manager
+  
+  If you pass empty user/pass asking curl to use Windows Credential
+  Storage (as stated in the docs) and it has valid credentials for the
+  domain, e.g.
+  curl -v -u : --ntlm example.com
+  currently authentication fails.
+  This change fixes it by providing proper SPN string to the SSPI API
+  calls.
+  
+  Fixes https://github.com/curl/curl/issues/1622
+  Closes https://github.com/curl/curl/pull/1660
+
+Daniel Stenberg (16 Apr 2018)
+- configure: keep LD_LIBRARY_PATH changes local
+  
+  ... only set it when we actually have to run tests to reduce its impact
+  on for example build commands etc.
+  
+  Fixes #2490
+  Closes #2492
+  
+  Reported-by: Dmitry Mikhirev
+
+Marcel Raad (16 Apr 2018)
+- urldata: make service names unconditional
+  
+  The ifdefs have become quite long. Also, the condition for the
+  definition of CURLOPT_SERVICE_NAME and for setting it from
+  CURLOPT_SERVICE_NAME have diverged. We will soon also need the two
+  options for NTLM, at least when using SSPI, for
+  https://github.com/curl/curl/pull/1660.
+  Just make the definitions unconditional to make that easier.
+  
+  Closes https://github.com/curl/curl/pull/2479
+
+Daniel Stenberg (16 Apr 2018)
+- test1148: tolerate progress updates better
+  
+  Fixes #2446
+  Closes #2488
+
+- [Christian Schmitz brought this change]
+
+  ssh: show libSSH2 error code when closing fails
+  
+  Closes #2500
+
+Jay Satiro (15 Apr 2018)
+- [Daniel Gustafsson brought this change]
+
+  vauth: Fix typo
+  
+  Address various spellings of "credentials".
+  
+  Closes https://github.com/curl/curl/pull/2496
+
+- [Dagobert Michelsen brought this change]
+
+  system.h: Add sparcv8plus to oracle/sunpro 32-bit detection
+  
+  With specific compiler options selecting the arch like -xarch=sparc on
+  newer compilers like Oracle Studio 12.4 there is no definition of
+  __sparcv8 but __sparcv8plus which means the V9 ISA, but limited to the
+  32ÎíÎñbit subset defined by the V8plus ISA specification, without the
+  Visual Instruction Set (VIS), and without other implementation-specific
+  ISA extensions. So it should be the same as __sparcv8.
+  
+  Closes https://github.com/curl/curl/pull/2491
+
+- [Daniel Gustafsson brought this change]
+
+  checksrc: Fix typo
+  
+  Fix typo in "semicolon" spelling and remove stray tab character.
+  
+  Closes https://github.com/curl/curl/pull/2498
+
+- [Daniel Gustafsson brought this change]
+
+  all: Refactor malloc+memset to use calloc
+  
+  When a zeroed out allocation is required, use calloc() rather than
+  malloc() followed by an explicit memset(). The result will be the
+  same, but using calloc() everywhere increases consistency in the
+  codebase and avoids the risk of subtle bugs when code is injected
+  between malloc and memset by accident.
+  
+  Closes https://github.com/curl/curl/pull/2497
+
+Daniel Stenberg (12 Apr 2018)
+- duphandle: make sure CURLOPT_RESOLVE is duplicated fine too
+  
+  Verified in test 1502 now
+  
+  Fixes #2485
+  Closes #2486
+  Reported-by: Ernst Sjöstrand
+
+- mailmap: add a monnerat fixup [ci skip]
+
+- proxy: show getenv proxy use in verbose output
+  
+  ... to aid debugging etc as it sometimes isn't immediately obvious why
+  curl uses or doesn't use a proxy.
+  
+  Inspired by #2477
+  
+  Closes #2480
+
+- travis: build libpsl and make builds use it
+  
+  closes #2471
+
+- travis: bump to clang 6 and gcc 7
+  
+  Extra-eye-on-this-by: Marcel Raad
+  
+  Closes #2478
+
+Marcel Raad (10 Apr 2018)
+- travis: use trusty for coverage build
+  
+  This works now and precise is in the process of being decommissioned.
+  
+  Closes https://github.com/curl/curl/pull/2476
+
+- lib: silence null-dereference warnings
+  
+  In debug mode, MingGW-w64's GCC 7.3 issues null-dereference warnings
+  when dereferencing pointers after DEBUGASSERT-ing that they are not
+  NULL.
+  Fix this by removing the DEBUGASSERTs.
+  
+  Suggested-by: Daniel Stenberg
+  Ref: https://github.com/curl/curl/pull/2463
+
+- [Kees Dekker brought this change]
+
+  winbuild: fix URL
+  
+  Follow up on https://github.com/curl/curl/pull/2472.
+  Now using en-us instead of nl-nl as language code in the URL.
+  
+  Closes https://github.com/curl/curl/pull/2475
+
+Daniel Stenberg (9 Apr 2018)
+- [Kees Dekker brought this change]
+
+  winbuild: updated the documentation
+  
+  The setenv command no longer exists and visual studio build prompts got
+  changed. Used Visual Studio 2015/2017 as reference.
+  
+  Closes #2472
+
+- test1136: fix cookie order after commit c990eadd1277
+
+- build: cleanup to fix clang warnings/errors
+  
+  unit1309 and vtls/gtls: error: arithmetic on a null pointer treated as a
+  cast from integer to pointer is a GNU extension
+  
+  Reported-by: Rikard Falkeborn
+  
+  Fixes #2466
+  Closes #2468
+
+Jay Satiro (7 Apr 2018)
+- examples/sftpuploadresmue: Fix Windows large file seek
+  
+  - Use _fseeki64 instead of fseek (long) to seek curl_off_t in Windows.
+  
+  - Use CURL_FORMAT_CURL_OFF_T specifier instead of %ld to print
+    curl_off_t.
+  
+  Caught by Marc's CI builds.
+
+Daniel Stenberg (7 Apr 2018)
+- curl_setup: provide a CURL_SA_FAMILY_T type if none exists
+  
+  ... and use this type instead of 'sa_family_t' in the code since several
+  platforms don't have it.
+  
+  Closes #2463
+
+- [Eric Gallager brought this change]
+
+  build: add picky compiler warning flags for gcc 6 and 7
+
+- configure: detect sa_family_t
+
+Jay Satiro (7 Apr 2018)
+- [Stefan Agner brought this change]
+
+  tool_operate: Fix retry on FTP 4xx to ignore other protocols
+  
+  Only treat response code as FTP response codes in case the
+  protocol type is FTP.
+  
+  This fixes an issue where an HTTP download was treated as FTP
+  in case libcurl returned with 33. This happens when the
+  download has already finished and the server responses 416:
+    HTTP/1.1 416 Requested Range Not Satisfiable
+  
+  This should not be treated as an FTP error.
+  
+  Fixes #2464
+  Closes #2465
+
+Daniel Stenberg (6 Apr 2018)
+- hash: calculate sizes with size_t instead of longs
+  
+  ... since they return size_t anyway!
+  
+  closes #2462
+
+- RELEASE-NOTES: synced
+
+- [Jay Satiro brought this change]
+
+  build-openssl.bat: Refer to VS2017 as VC14.1 instead of VC15
+  
+  .. and do the same for build-wolfssl.bat.
+  
+  Because MS calls it VC14.1.
+  
+  Closes https://github.com/curl/curl/pull/2189
+
+- [Kees Dekker brought this change]
+
+  winbuild: make the clean target work without build-type
+  
+  Due to the check in Makefile.vc and MakefileBuild.vc, no make call can
+  be invoked unless a build-type was specified. However, a clean target
+  only existed when a build type was specified. As a result, the clean
+  target was unreachable. Made clean target unconditional.
+  
+  Closes #2455
+
+- [patelvivekv1993 brought this change]
+
+  build-openssl.bat: allow custom paths for VS and perl
+  
+  Fixes #2430
+  Closes #2457
+
+- [Laurie Clark-Michalek brought this change]
+
+  FTP: allow PASV on IPv6 connections when a proxy is being used
+  
+  In the situation of a client connecting to an FTP server using an IPv6
+  tunnel proxy, the connection info will indicate that the connection is
+  IPv6. However, because the server behing the proxy is IPv4, it is
+  permissable to attempt PSV mode. In the case of the FTP server being
+  IPv4 only, EPSV will always fail, and with the current logic curl will
+  be unable to connect to the server, as the IPv6 fwdproxy causes curl to
+  think that EPSV is impossible.
+  
+  Closes #2432
+
+- [Jon DeVree brought this change]
+
+  file: restore old behavior for file:////foo/bar URLs
+  
+  curl 7.57.0 and up interpret this according to Appendix E.3.2 of RFC
+  8089 but then returns an error saying this is unimplemented. This is
+  actually a regression in behavior on both Windows and Unix.
+  
+  Before curl 7.57.0 this URL was treated as a path of "//foo/bar" and
+  then passed to the relevant OS API. This means that the behavior of this
+  case is actually OS dependent.
+  
+  The Unix path resolution rules say that the OS must handle swallowing
+  the extra "/" and so this path is the same as "/foo/bar"
+  
+  The Windows path resolution rules say that this is a UNC path and
+  automatically handles the SMB access for the program. So curl on Windows
+  was already doing Appendix E.3.2 without any special code in curl.
+  
+  Regression
+  
+  Closes #2438
+
+- [Gaurav Malhotra brought this change]
+
+  Revert "openssl: Don't add verify locations when verifypeer==0"
+  
+  This reverts commit dc85437736e1fc90e689bb1f6c51c8f1aa9430eb.
+  
+  libcurl (with the OpenSSL backend) performs server certificate verification
+  even if verifypeer == 0 and the verification result is available using
+  CURLINFO_SSL_VERIFYRESULT. The commit that is being reverted caused the
+  CURLINFO_SSL_VERIFYRESULT to not have useful information for the
+  verifypeer == 0 use case (it would always have
+  X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY).
+  
+  Closes #2451
+
+- [Wyatt O'Day brought this change]
+
+  tls: fix mbedTLS 2.7.0 build + handle sha256 failures
+  
+  (mbedtls 2.70 compiled with MBEDTLS_DEPRECATED_REMOVED)
+  
+  Closes #2453
+
+- [Lauri Kasanen brought this change]
+
+  cookie: case-insensitive hashing for the domains
+  
+  closes #2458
+
+Patrick Monnerat (4 Apr 2018)
+- cookie: fix and optimize 2nd top level domain name extraction
+  
+  This fixes a segfault occurring when a name of the (invalid) form "domain..tld"
+  is processed.
+  
+  test46 updated to cover this case.
+  
+  Follow-up to commit c990ead.
+  
+  Ref: https://github.com/curl/curl/pull/2440
+
+Daniel Stenberg (4 Apr 2018)
+- openssl: provide defines for argument typecasts to build warning-free
+  
+  ... as OpenSSL >= 1.1.0 and libressl >= 2.7.0 use different argument types.
+
+- [Bernard Spil brought this change]
+
+  openssl: fix build with LibreSSL 2.7
+  
+   - LibreSSL 2.7 implements (most of) OpenSSL 1.1 API
+  
+  Fixes #2319
+  Closes #2447
+  Closes #2448
+  
+  Signed-off-by: Bernard Spil <brnrd@FreeBSD.org>
+
+- [Lauri Kasanen brought this change]
+
+  cookie: store cookies per top-level-domain-specific hash table
+  
+  This makes libcurl handle thousands of cookies much better and speedier.
+  
+  Closes #2440
+
+- [Lauri Kasanen brought this change]
+
+  cookies: when reading from a file, only remove_expired once
+  
+  This drops the cookie load time for 8k cookies from 178ms to 15ms.
+  
+  Closes #2441
+
+- test1148: set a fixed locale for the test
+  
+  ...as otherwise it might use a different decimal sign.
+  
+  Bug: #2436
+  Reported-by: Oumph on github
+
+Jay Satiro (31 Mar 2018)
+- docs: fix CURLINFO_*_T examples use of CURL_FORMAT_CURL_OFF_T
+  
+  - Put a percent sign before each CURL_FORMAT_CURL_OFF_T in printf.
+  
+  For example "%" CURL_FORMAT_CURL_OFF_T becomes %lld or similar.
+  
+  Bug: https://curl.haxx.se/mail/lib-2018-03/0140.html
+  Reported-by: David L.
+
+Sergei Nikulov (27 Mar 2018)
+- [Michał Janiszewski brought this change]
+
+  cmake: Add advapi32 as explicit link library for win32
+  
+  ARM targets need advapi32 explicitly.
+  
+  Closes #2363
+
+Daniel Stenberg (27 Mar 2018)
+- TODO: connection cache sharing is now supporte
+
+Jay Satiro (26 Mar 2018)
+- travis: enable apt retry on fail
+  
+  This is a workaround for an unsolved travis issue that is causing CI
+  instances to sporadically fail due to 'unable to connect' issues during
+  apt stage.
+  
+  Ref: https://github.com/travis-ci/travis-ci/issues/8507
+  Ref: https://github.com/travis-ci/travis-ci/issues/9112#issuecomment-376305909
+
+Michael Kaufmann (26 Mar 2018)
+- runtests.pl: fix warning 'use of uninitialized value'
+  
+  follow-up to a9a7b60
+  
+  Closes #2428
+
+Daniel Stenberg (24 Mar 2018)
+- gitignore: ignore more generated files
+
+- threaded resolver: track resolver time and set suitable timeout values
+  
+  In order to make curl_multi_timeout() return suitable "sleep" times even
+  when there's no socket to wait for while the name is being resolved in a
+  helper thread.
+  
+  It will increases the timeouts as time passes.
+  
+  Closes #2419
+
+- [Howard Chu brought this change]
+
+  openldap: fix for NULL return from ldap_get_attribute_ber()
+  
+  Closes #2399
+
+GitHub (22 Mar 2018)
+- [Sergei Nikulov brought this change]
+
+  travis-ci: enable -Werror for CMake builds (#2418)
+
+- [Sergei Nikulov brought this change]
+
+  cmake: avoid warn-as-error during config checks (#2411)
+  
+  - Move the CURL_WERROR option processing after the configuration checks
+    to avoid failures in case of warnings during the configuration checks.
+  
+  This is a partial fix for #2358
+
+- [Sergei Nikulov brought this change]
+
+  timeval: remove compilation warning by casting (#2417)
+  
+  This is fixes #2358
+
+Daniel Stenberg (22 Mar 2018)
+- http2: read pending frames (including GOAWAY) in connection-check
+  
+  If a connection has received a GOAWAY frame while not being used, the
+  function now reads frames off the connection before trying to reuse it
+  to avoid reusing connections the server has told us not to use.
+  
+  Reported-by: Alex Baines
+  Fixes #1967
+  Closes #2402
+
+- [Bas van Schaik brought this change]
+
+  CI: add lgtm.yml for tweaking lgtm.com analysis
+  
+  Closes #2414
+
+- CURLINFO_SSL_VERIFYRESULT.3: fix the example, add some text
+  
+  Reported-by: Michal Trybus
+  
+  Fixes #2400
+
+- TODO: expand ~/ in config files
+  
+  Closes #2317
+
+- cookie.d: mention that "-" as filename means stdin
+  
+  Reported-by: Dongliang Mu
+  Fixes #2410
+
+- CURLINFO_COOKIELIST.3: made the example not leak memory
+  
+  Reported-by: Muz Dima
+
+- vauth/cleartext: fix integer overflow check
+  
+  Make the integer overflow check not rely on the undefined behavior that
+  a size_t wraps around on overflow.
+  
+  Detected by lgtm.com
+  Closes #2408
+
+- lib/curl_path.h: add #ifdef header guard
+  
+  Detected by lgtm.com
+
+- vauth/ntlm.h: fix the #ifdef header guard
+  
+  Detected by lgtm.com
+
+Jay Satiro (20 Mar 2018)
+- examples/hiperfifo: checksrc compliance
+
+Daniel Stenberg (19 Mar 2018)
+- [Nikos Tsipinakis brought this change]
+
+  parsedate: support UT timezone
+  
+  RFC822 section 5.2 mentions Universal Time, 'UT', to be synonymous with
+  GMT.
+  
+  Closes #2401
+
+- RELEASE-NOTES: synced
+
+- [Don brought this change]
+
+  cmake: add support for brotli
+  
+  Currently CMake cannot detect Brotli support. This adds detection of the
+  libraries and associated header files. It also adds this to the
+  generated config.
+  
+  Closes #2392
+
+- [Chris Araman brought this change]
+
+  darwinssl: fix iOS build
+
+Patrick Monnerat (18 Mar 2018)
+- ILE/RPG binding: Add CURLOPT_HAPROXYPROTOCOL/Fix CURLOPT_DNS_SHUFFLE_ADDRESSES
+
+Daniel Stenberg (17 Mar 2018)
+- [Rick Deist brought this change]
+
+  resolve: add CURLOPT_DNS_SHUFFLE_ADDRESSES
+  
+  This patch adds CURLOPT_DNS_SHUFFLE_ADDRESSES to explicitly request
+  shuffling of IP addresses returned for a hostname when there is more
+  than one. This is useful when the application knows that a round robin
+  approach is appropriate and is willing to accept the consequences of
+  potentially discarding some preference order returned by the system's
+  implementation.
+  
+  Closes #1694
+
+- add_handle/easy_perform: clear errorbuffer on start if set
+  
+  To offer applications a more defined behavior, we clear the buffer as
+  early as possible.
+  
+  Assisted-by: Jay Satiro
+  
+  Fixes #2190
+  Closes #2377
+
+- [Lawrence Matthews brought this change]
+
+  CURLOPT_HAPROXYPROTOCOL: support the HAProxy PROXY protocol
+  
+  Add --haproxy-protocol for the command line tool
+  
+  Closes #2162
+
+- curl_version_info.3: fix ssl_version description
+  
+  Reported-by: Vincas Razma
+  Fixes #2364
+
+- multi: improved pending transfers handling => improved performance
+  
+  When a transfer is requested to get done and it is put in the pending
+  queue when limited by number of connections, total or per-host, libcurl
+  would previously very aggressively retry *ALL* pending transfers to get
+  them transferring. That was very time consuming.
+  
+  By reducing the aggressiveness in how pending are being retried, we
+  waste MUCH less time on putting transfers back into pending again.
+  
+  Some test cases got a factor 30(!) speed improvement with this change.
+  
+  Reported-by: Cyril B
+  Fixes #2369
+  Closes #2383
+
+- pause: when changing pause state, update socket state
+  
+  Especially unpausing a transfer might have to move the socket back to the
+  "currently used sockets" hash to get monitored. Otherwise it would never get
+  any more data and get stuck. Easily triggered with pausing using the
+  multi_socket API.
+  
+  Reported-by: Philip Prindeville
+  Bug: https://curl.haxx.se/mail/lib-2018-03/0048.html
+  Fixes #2393
+  Closes #2391
+
+- [Philip Prindeville brought this change]
+
+  examples/hiperfifo.c: improved
+  
+   * use member struct event’s instead of pointers to alloc’d struct
+     events
+  
+   * simplify the cases for the mcode_or_die() function via macros;
+  
+   * make multi_timer_cb() actually do what the block comment says it
+     should;
+  
+   * accept a “stop” command on the FIFO to shut down the service;
+  
+   * use cleaner notation for unused variables than the (void) hack;
+  
+   * allow following redirections (304’s);
+
+- rate-limit: use three second window to better handle high speeds
+  
+  Due to very frequent updates of the rate limit "window", it could
+  attempt to rate limit within the same milliseconds and that then made
+  the calculations wrong, leading to it not behaving correctly on very
+  fast transfers.
+  
+  This new logic updates the rate limit "window" to be no shorter than the
+  last three seconds and only updating the timestamps for this when
+  switching between the states TOOFAST/PERFORM.
+  
+  Reported-by: 刘佩东
+  Fixes #2386
+  Closes #2388
+
+- [luz.paz brought this change]
+
+  cleanup: misc typos in strings and comments
+  
+  Found via `codespell`
+  
+  Closes #2389
+
+- RELEASE-NOTES: toward 7.60.0
+
+- [Kobi Gurkan brought this change]
+
+  http2: fixes typo
+  
+  Closes #2387
+
+- user-agent.d:: mention --proxy-header as well
+  
+  Bug: https://github.com/curl/curl/issues/2381
+
+- transfer: make HTTP without headers count correct body size
+  
+  This is what "HTTP/0.9" basically looks like.
+  
+  Reported on IRC
+  
+  Closes #2382
+
+- test1208: marked flaky
+  
+  It fails somewhere between every 3rd to 10th travis-CI run
+
+- SECURITY-PROCESS: mention how we write/add advisories
+
+- [dasimx brought this change]
+
+  FTP: fix typo in recursive callback detection for seeking
+  
+  Fixes #2380
+
+Version 7.59.0 (13 Mar 2018)
+
+Daniel Stenberg (13 Mar 2018)
+- release: 7.59.0
+
+Kamil Dudka (13 Mar 2018)
+- tests/.../spnego.py: fix identifier typo
+  
+  Detected by Coverity Analysis:
+  
+  Error: IDENTIFIER_TYPO:
+  curl-7.58.0/tests/python_dependencies/impacket/spnego.py:229: identifier_typo: Using "SuportedMech" appears to be a typo:
+  * Identifier "SuportedMech" is only known to be referenced here, or in copies of this code.
+  * Identifier "SupportedMech" is referenced elsewhere at least 4 times.
+  curl-7.58.0/tests/python_dependencies/impacket/smbserver.py:2651: identifier_use: Example 1: Using identifier "SupportedMech".
+  curl-7.58.0/tests/python_dependencies/impacket/smbserver.py:2308: identifier_use: Example 2: Using identifier "SupportedMech".
+  curl-7.58.0/tests/python_dependencies/impacket/spnego.py:252: identifier_use: Example 3: Using identifier "SupportedMech" (2 total uses in this function).
+  curl-7.58.0/tests/python_dependencies/impacket/spnego.py:229: remediation: Should identifier "SuportedMech" be replaced by "SupportedMech"?
+  
+  Closes #2379
+
+Daniel Stenberg (13 Mar 2018)
+- CURLOPT_COOKIEFILE.3: "-" as file name means stdin
+  
+  Reported-by: Aron Bergman
+  Bug: https://curl.haxx.se/mail/lib-2018-03/0049.html
+  
+  [ci skip]
+
+- Revert "hostip: fix compiler warning: 'variable set but not used'"
+  
+  This reverts commit a577059f92fc65bd6b81717f0737f897a5b34248.
+  
+  The assignment really needs to be there or we risk working with an
+  uninitialized pointer.
+
+Michael Kaufmann (12 Mar 2018)
+- limit-rate: fix compiler warning
+  
+  follow-up to 72a0f62
+
+Viktor Szakats (12 Mar 2018)
+- checksrc.pl: add -i and -m options
+  
+  To sync it with changes made for the libssh2 project.
+  Also cleanup some whitespace.
+
+- curl-openssl.m4: fix spelling [ci skip]
+
+- FAQ: fix a broken URL [ci skip]
+
+Daniel Stenberg (12 Mar 2018)
+- http2: mark the connection for close on GOAWAY
+  
+  ... don't consider it an error!
+  
+  Assisted-by: Jay Satiro
+  Reported-by: Łukasz Domeradzki
+  Fixes #2365
+  Closes #2375
+
+- credits: Viktor prefers without accent
+
+- openldap: white space changes, fixed up the copyright years
+
+- openldap: check ldap_get_attribute_ber() results for NULL before using
+  
+  CVE-2018-1000121
+  Reported-by: Dario Weisser
+  Bug: https://curl.haxx.se/docs/adv_2018-97a2.html
+
+- FTP: reject path components with control codes
+  
+  Refuse to operate when given path components featuring byte values lower
+  than 32.
+  
+  Previously, inserting a %00 sequence early in the directory part when
+  using the 'singlecwd' ftp method could make curl write a zero byte
+  outside of the allocated buffer.
+  
+  Test case 340 verifies.
+  
+  CVE-2018-1000120
+  Reported-by: Duy Phan Thanh
+  Bug: https://curl.haxx.se/docs/adv_2018-9cd6.html
+
+- readwrite: make sure excess reads don't go beyond buffer end
+  
+  CVE-2018-1000122
+  Bug: https://curl.haxx.se/docs/adv_2018-b047.html
+  
+  Detected by OSS-fuzz
+
+- BUGS: updated link to security process
+
+- limit-rate: kick in even before "limit" data has been received
+  
+  ... and make sure to avoid integer overflows with really large values.
+  
+  Reported-by: 刘佩东
+  Fixes #2371
+  Closes #2373
+
+- docs/SECURITY.md -> docs/SECURITY-PROCESS.md
+
+- SECURITY.md: call it the security process
+
+Michael Kaufmann (11 Mar 2018)
+- Curl_range: fix FTP-only and FILE-only builds
+  
+  follow-up to e04417d
+
+- hostip: fix compiler warning: 'variable set but not used'
+
+Daniel Stenberg (11 Mar 2018)
+- HTTP: allow "header;" to replace an internal header with a blank one
+  
+  Reported-by: Michael Kaufmann
+  Fixes #2357
+  Closes #2362
+
+- http2: verbose output new MAX_CONCURRENT_STREAMS values
+  
+  ... as it is interesting for many users.
+
+- SECURITY: distros' max embargo time is 14 days now
+
+Patrick Monnerat (8 Mar 2018)
+- curl tool: accept --compressed also if Brotli is enabled and zlib is not.
+
+Daniel Stenberg (5 Mar 2018)
+- THANKS + mailmap: remove duplicates, fixup full names
+
+- [sergii.kavunenko brought this change]
+
+  WolfSSL: adding TLSv1.3
+  
+  Closes #2349
+
+- RELEASE-NOTES/THANKS: synced with cc1d4c505
+
+- [Richard Alcock brought this change]
+
+  winbuild: prefer documented zlib library names
+  
+  Check for existence of import and static libraries with documented names
+  and use them if they do. Fallback to previous names.
+  
+  According to
+  https://github.com/madler/zlib/blob/master/win32/README-WIN32.txt on
+  Windows, the names of the import library is "zdll.lib" and static
+  library is "zlib.lib".
+  
+  closes #2354
+
+Marcel Raad (4 Mar 2018)
+- krb5: use nondeprecated functions
+  
+  gss_seal/gss_unseal have been deprecated in favor of
+  gss_wrap/gss_unwrap with GSS-API v2 from January 1997 [1]. The first
+  version of "The Kerberos Version 5 GSS-API Mechanism" [2] from June
+  1996 already says "GSS_Wrap() (formerly GSS_Seal())" and
+  "GSS_Unwrap() (formerly GSS_Unseal())".
+  
+  Use the nondeprecated functions to avoid deprecation warnings.
+  
+  [1] https://tools.ietf.org/html/rfc2078
+  [2] https://tools.ietf.org/html/rfc1964
+  
+  Closes https://github.com/curl/curl/pull/2356
+
+Daniel Stenberg (4 Mar 2018)
+- curl.1: mention how to add numerical IP addresses in NO_PROXY
+
+- CURLOPT_NOPROXY.3: mention how to list numerical IPv6 addresses
+
+- NO_PROXY: fix for IPv6 numericals in the URL
+  
+  Added test 1265 that verifies.
+  
+  Reported-by: steelman on github
+  Fixes #2353
+  Closes #2355
+
+- build: get CFLAGS (including -werror) used for examples and tests
+  
+  ... so that the CI and more detects compiler warnings/errors properly!
+  
+  Closes #2337
+
+Marcel Raad (3 Mar 2018)
+- curl_ctype: fix macro redefinition warnings
+  
+  On MinGW and Cygwin, GCC and clang have been complaining about macro
+  redefinitions since 4272a0b0fc49a1ac0ceab5c4a365c9f6ab8bf8e2. Fix this
+  by undefining the macros before redefining them as suggested in
+  https://github.com/curl/curl/pull/2269.
+  
+  Suggested-by: Daniel Stenberg
+
+Dan Fandrich (2 Mar 2018)
+- unit1307: proper cleanup on OOM to fix torture tests
+
+Marcel Raad (28 Feb 2018)
+- unit1309: fix warning on Windows x64
+  
+  When targeting x64, MinGW-w64 complains about conversions between
+  32-bit long and 64-bit pointers. Fix this by reusing the
+  GNUTLS_POINTER_TO_SOCKET_CAST / GNUTLS_SOCKET_TO_POINTER_CAST logic
+  from gtls.c, moving it to warnless.h as CURLX_POINTER_TO_INTEGER_CAST /
+  CURLX_INTEGER_TO_POINTER_CAST.
+  
+  Closes https://github.com/curl/curl/pull/2341
+
+- travis: update compiler versions
+  
+  Update clang to version 3.9 and GCC to version 6.
+  
+  Closes https://github.com/curl/curl/pull/2345
+
+Daniel Stenberg (26 Feb 2018)
+- docs/MANUAL: formfind.pl is not accessible on the site anymore
+  
+  Fixes #2342
+
+Jay Satiro (24 Feb 2018)
+- curl-openssl.m4: Fix version check for OpenSSL 1.1.1
+  
+  - Add OpenSSL 1.1.1 to the header/library version lists.
+  
+  - Detect OpenSSL 1.1.1 library using its function ERR_clear_last_mark,
+    which was added in that version.
+  
+  Prior to this change an erroneous header/library mismatch was caused by
+  lack of OpenSSL 1.1.1 detection. I tested using openssl-1.1.1-pre1.
+
+Viktor Szakats (23 Feb 2018)
+- lib655: silence compiler warning
+  
+  Closes https://github.com/curl/curl/pull/2335
+
+- spelling fixes
+  
+  Detected using the `codespell` tool.
+  
+  Also contains one URL protocol upgrade.
+  
+  Closes https://github.com/curl/curl/pull/2334
+
+Daniel Stenberg (24 Feb 2018)
+- projects/README: remove reference to dead IDN link/package
+  
+  Reported-by: Stefan Kanthak and Rod Widdowson
+  
+  Fixes #2325
+
+Jay Satiro (23 Feb 2018)
+- [Rod Widdowson brought this change]
+
+  winbuild: Use macros for the names of some build utilities
+  
+  - Add macros to the top of the makefile for rc and mt utilities so that
+    it is easier to change their locations.
+  
+  Bug: https://curl.haxx.se/mail/lib-2018-02/0075.html
+  Reported-by: Stefan Kanthak
+  
+  Closes https://github.com/curl/curl/issues/2329
+
+Daniel Stenberg (23 Feb 2018)
+- TODO: remove "sha-256 digest", added in 2b5b37cb9109e7c2
+
+- curl_share_setopt.3: connection cache is shared within multi handles
+
+Jay Satiro (22 Feb 2018)
+- [Rod Widdowson brought this change]
+
+  winbuild: Use CALL to run batch scripts
+  
+  Co-authored-by: Stefan Kanthak
+  
+  Closes https://github.com/curl/curl/issues/2330
+  Closes https://github.com/curl/curl/pull/2331
+
+Patrick Monnerat (22 Feb 2018)
+- os400: add curl_resolver_start_callback type to ILE/RPG binding
+
+Daniel Stenberg (22 Feb 2018)
+- form.d: rephrased somewhat, added two example command lines
+
+Jay Satiro (21 Feb 2018)
+- [Francisco Sedano brought this change]
+
+  url: Add option CURLOPT_RESOLVER_START_FUNCTION
+  
+  - Add new option CURLOPT_RESOLVER_START_FUNCTION to set a callback that
+    will be called every time before a new resolve request is started
+    (ie before a host is resolved) with a pointer to backend-specific
+    resolver data. Currently this is only useful for ares.
+  
+  - Add new option CURLOPT_RESOLVER_START_DATA to set a user pointer to
+    pass to the resolver start callback.
+  
+  Closes https://github.com/curl/curl/pull/2311
+
+- lib: CURLOPT_HAPPY_EYEBALLS_TIMEOUT => CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
+  
+  - In keeping with the naming of our other connect timeout options rename
+    CURLOPT_HAPPY_EYEBALLS_TIMEOUT to CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.
+  
+  This change adds the _MS suffix since the option expects milliseconds.
+  This is more intuitive for our users since other connect timeout options
+  that expect milliseconds use _MS such as CURLOPT_TIMEOUT_MS,
+  CURLOPT_CONNECTTIMEOUT_MS, CURLOPT_ACCEPTTIMEOUT_MS.
+  
+  The tool option already uses an -ms suffix, --happy-eyeballs-timeout-ms.
+  
+  Follow-up to 2427d94 which added the lib and tool option yesterday.
+  
+  Ref: https://github.com/curl/curl/pull/2260
+
+Patrick Monnerat (21 Feb 2018)
+- sasl: prefer PLAIN mechanism over LOGIN
+  
+  SASL PLAIN is a standard, LOGIN only a draft. The LOGIN draft says
+  PLAIN should be used instead if available.
+
+Daniel Stenberg (21 Feb 2018)
+- RELEASE-NOTES: synced with 2427d94c6
+
+Jay Satiro (20 Feb 2018)
+- [Anders Bakken brought this change]
+
+  url: Add option CURLOPT_HAPPY_EYEBALLS_TIMEOUT
+  
+  - Add new option CURLOPT_HAPPY_EYEBALLS_TIMEOUT to set libcurl's happy
+    eyeball timeout value.
+  
+  - Add new optval macro CURL_HET_DEFAULT to represent the default happy
+    eyeballs timeout value (currently 200 ms).
+  
+  - Add new tool option --happy-eyeballs-timeout-ms to expose
+    CURLOPT_HAPPY_EYEBALLS_TIMEOUT. The -ms suffix is used because the
+    other -timeout options in the tool expect seconds not milliseconds.
+  
+  Closes https://github.com/curl/curl/pull/2260
+
+- hostip: fix 'potentially uninitialized variable' warning
+  
+  Follow-up to 50d1b33.
+  
+  Caught by AppVeyor.
+
+Daniel Stenberg (20 Feb 2018)
+- TODO: warning if curl version is not in sync with libcurl version
+
+Jay Satiro (20 Feb 2018)
+- [Anders Bakken brought this change]
+
+  CURLOPT_RESOLVE: Add support for multiple IP addresses per entry
+  
+  This enables users to preresolve but still take advantage of happy
+  eyeballs and trying multiple addresses if some are not connecting.
+  
+  Ref: https://github.com/curl/curl/pull/2260
+
+Daniel Stenberg (20 Feb 2018)
+- [Sergio Borghese brought this change]
+
+  examples/sftpuploadresume: resume upload via CURLOPT_APPEND
+  
+  URL: https://curl.haxx.se/mail/lib-2018-02/0072.html
+
+- curl --version: show PSL if the run-time lib has it enabled
+  
+  ... not of the #define was set at build-time!
+
+- TODO: "Support in-memory certs/ca certs/keys"
+  
+  removed SSLKEYLOGFILE support (fixed)
+  
+  removed "consider SSL patches" (outdated)
+  
+  Closes #2310
+
+- CURLOPT_HEADER.3: clarify problems with different data sizes
+
+- test1556: verify >16KB headers to the header callback
+
+- header callback: don't chop headers into smaller pieces
+  
+  Reported-by: Guido Berhoerster
+  Fixes #2314
+  Closes #2316
+
+- test1154: verify that long HTTP headers get rejected
+
+- http: fix the max header length detection logic
+  
+  Previously, it would only check for max length if the existing alloc
+  buffer was to small to fit it, which often would make the header still
+  get used.
+  
+  Reported-by: Guido Berhoerster
+  Bug: https://curl.haxx.se/mail/lib-2018-02/0056.html
+  
+  Closes #2315
+
+- CURLOPT_HEADERFUNCTION.3: fix typo from d939226813
+  
+  Reported-by: Erik Johansson
+  Bug: https://github.com/curl/curl/commit/d9392268131c1b8d18dec3fa30e0bded833a5db7#commitcomment-27607495
+
+- CURLOPT_HEADERFUNCTION.3: mention folded headers
+
+- TODO: 1.1 Option to refuse usernames in URLs
+  
+  Also expanded the CURL_REFUSE_CLEARTEXT section with more ideas.
+
+- TODO: 1.7 Support HTTP/2 for HTTP(S) proxies
+
+- ssh: add two missing state names
+  
+  The list of state names (used in debug builds) was out of sync in
+  relation to the list of states (used in all builds).
+  
+  I now added an assert to make sure the sizes of the two lists match, to
+  aid in detecting this mistake better in the future.
+  
+  Regression since c92d2e14cf, shipped in 7.58.0.
+  
+  Reported-by: Somnath Kundu
+  
+  Fixes #2312
+  Closes #2313
+
+- Revert "KNOWN_BUGS: 2.5 curl should not offer "ALPN: h2" when using https-proxy"
+  
+  This reverts commit de9fac00c40db321d44fa6fbab6eb62ec4c83998.
+  
+  Reported-by: Jay Satiro
+
+Jay Satiro (15 Feb 2018)
+- non-ascii: fix implicit declaration warning
+  
+  Follow-up to b46cfbc.
+  
+  Caught by Travis CI.
+
+Daniel Stenberg (15 Feb 2018)
+- travis: add build with iconv enabled
+  
+  ... to verify it builds and works fine.
+  
+  Ref: https://curl.haxx.se/mail/lib-2017-09/0031.html
+  
+  Closes #1872
+
+- TODO: 18.18 retry on network is unreachable
+  
+  Closes #1603
+
+- KNOWN_BUGS: 2.5 curl should not offer "ALPN: h2" when using https-proxy
+  
+  Closes #1254
+
+Kamil Dudka (15 Feb 2018)
+- nss: use PK11_CreateManagedGenericObject() if available
+  
+  ... so that the memory allocated by applications using libcurl does not
+  grow per each TLS connection.
+  
+  Bug: https://bugzilla.redhat.com/1510247
+  
+  Closes #2297
+
+Daniel Stenberg (15 Feb 2018)
+- [Björn Stenberg brought this change]
+
+  TODO fixed: Detect when called from within callbacks
+  
+  Closes #2302
+
+- BINDINGS: fix curb link (and remove ruby-curl-multi)
+  
+  Reported-by: Klaus Stein
+
+- curl_gssapi: make sure this file too uses our *printf()
+
+- libcurl-security.3: separate file:// section
+  
+  ... just to make it more apparent. Even if it repeats
+  some pieces of information.
+
+- libcurl-security.3: the http://192.168.0.1/my_router_config case
+  
+  Mentioned-By: Rich Moore
+
+- libcurl-security.3: mention the URL standards problems too
+
+- libcurl-security.3: split out from libcurl-tutorial.3
+  
+  To make more accessible.
+  
+  Merged in some new language from "URLs are dangerous things" as discussed on
+  the mailing list a few days ago:
+  
+  Bug: https://curl.haxx.se/mail/lib-2018-02/0013.html
+
+- RELEASE-NOTES: synced with e551910f8
+
+Patrick Monnerat (13 Feb 2018)
+- tests: new tests for http raw mode
+  
+  Test 319 checks proper raw mode data with non-chunked gzip
+  transfer-encoded server data.
+  Test 326 checks raw mode with chunked server data.
+  
+  Bug: #2303
+  Closes #2308
+
+Kamil Dudka (12 Feb 2018)
+- tlsauthtype.d: works only if libcurl is built with TLS-SRP support
+  
+  Bug: https://bugzilla.redhat.com/1542256
+  
+  Closes #2306
+
+Patrick Monnerat (12 Feb 2018)
+- smtp: fix processing of initial dot in data
+  
+  RFC 5321 4.1.1.4 specifies the CRLF terminating the DATA command
+  should be taken into account when chasing the <CRLF>.<CRLF> end marker.
+  Thus a leading dot character in data is also subject to escaping.
+  
+  Tests 911 and test server are adapted to this situation.
+  New tests 951 and 952 check proper handling of initial dot in data.
+  
+  Closes #2304
+
+Daniel Stenberg (12 Feb 2018)
+- sha256: avoid redefine
+
+- [Douglas Mencken brought this change]
+
+  sha256: build with OpenSSL < 0.9.8 too
+  
+  support for SHA-2 was introduced in OpenSSL 0.9.8
+  
+  Closes #2305
+
+- [Bruno Grasselli brought this change]
+
+  README: language fix
+  
+  s/off/from
+  
+  Closes #2300
+
+Patrick Monnerat (12 Feb 2018)
+- http_chunks: don't write chunks twice with CURLOPT_HTTP_TRANSFER_DECODING on
+  
+  Bug: #2303
+  Reported-By: Henry Roeland
+
+Daniel Stenberg (9 Feb 2018)
+- get_posix_time: only check for overflows if they can happen!
+
+Michael Kaufmann (9 Feb 2018)
+- schannel: fix "no previous prototype" compiler warning
+
+Jay Satiro (9 Feb 2018)
+- [Mohammad AlSaleh brought this change]
+
+  content_encoding: Add "none" alias to "identity"
+  
+  Some servers return a "content-encoding" header with a non-standard
+  "none" value.
+  
+  Add "none" as an alias to "identity" as a work-around, to avoid
+  unrecognised content encoding type errors.
+  
+  Signed-off-by: Mohammad AlSaleh <CE.Mohammad.AlSaleh@gmail.com>
+  
+  Closes https://github.com/curl/curl/pull/2298
+
+Steve Holme (8 Feb 2018)
+- build-openssl.bat: Follow up to 648679ab8e to suppress copy/move output
+
+- build-openssl.bat: Fixed incorrect move if destination build folder exists
+
+Michael Kaufmann (8 Feb 2018)
+- schannel: fix compiler warnings
+  
+  Closes #2296
+
+Steve Holme (7 Feb 2018)
+- curl_addrinfo.c: Allow Unix Domain Sockets to compile under Windows
+  
+  Windows 10.0.17061 SDK introduces support for Unix Domain Sockets.
+  Added the necessary include file to curl_addrinfo.c.
+  
+  Note: The SDK (which is considered beta) has to be installed, VS 2017
+  project file has to be re-targeted for Windows 10.0.17061 and #define
+  enabled in config-win32.h.
+
+Patrick Monnerat (7 Feb 2018)
+- fnmatch: optimize processing of consecutive *s and ?s pattern characters
+  
+  Reported-By: Daniel Stenberg
+  Fixes #2291
+  Closes #2293
+
+Steve Holme (6 Feb 2018)
+- build-openssl.bat/build-wolfssl.bat: Build platform is optional
+  
+  Whilst the compiler parameter is mandatory, platform is optional as it
+  is automatically calculated by the :configure section.
+  
+  This partially reverts commit 6d62d2c55d.
+
+Daniel Stenberg (6 Feb 2018)
+- [Patrick Schlangen brought this change]
+
+  openssl: Don't add verify locations when verifypeer==0
+  
+  When peer verification is disabled, calling
+  SSL_CTX_load_verify_locations is not necessary. Only call it when
+  verification is enabled to save resources and increase performance.
+  
+  Closes #2290
+
+Steve Holme (5 Feb 2018)
+- build-wolfssl.bat: Extend VC15 support to include Enterprise and Professional
+  
+  ...and not just the Community Edition.
+
+- build-openssl.bat: Extend VC15 support to include Enterprise and Professional
+  
+  ...and not just the Community Edition.
+
+Michael Kaufmann (5 Feb 2018)
+- time-cond: fix reading the file modification time on Windows
+  
+  On Windows, stat() may adjust the unix file time by a daylight saving time
+  offset. Avoid this by calling GetFileTime() instead.
+  
+  Fixes #2164
+  Closes #2204
+
+Daniel Stenberg (5 Feb 2018)
+- formdata: use the mime-content type function
+  
+  Reduce code duplication by making Curl_mime_contenttype available and
+  used by the formdata function. This also makes the formdata function
+  recognize a set of more file extensions by default.
+  
+  PR #2280 brought this to my attention.
+  
+  Closes #2282
+
+- getdate: return -1 for out of range
+  
+  ...as that's how the function is documented to work.
+  
+  Reported-by: Michael Kaufmann
+  Bug found in an autobuild with 32 bit time_t
+  
+  Closes #2278
+
+- [Ben Greear brought this change]
+
+  build: fix termios issue on android cross-compile
+  
+  Bug: https://curl.haxx.se/mail/lib-2018-01/0122.html
+  Signed-off-by: Ben Greear <greearb@candelatech.com>
+
+- time_t-fixes: remove typecasts to 'long' for info.filetime
+  
+  They're now wrong.
+  
+  Reported-by: Michael Kaufmann
+  
+  Closes #2277
+
+- curl_setup: move the precautionary define of SIZEOF_TIME_T
+  
+  ... up to before it may be used for the TIME_T_MAX/MIN logic.
+  
+  Reported-by: Michael Kaufmann
+
+- parsedate: s/#if/#ifdef
+  
+  Reported-by: Michael Kaufmann
+  Bug: https://github.com/curl/curl/commit/1c39128d974666107fc6d9ea15f294036851f224#commitcomment-27246479
+
+Patrick Monnerat (31 Jan 2018)
+- fnmatch: pattern syntax can no longer fail
+  
+  Whenever an expected pattern syntax rule cannot be matched, the
+  character starting the rule loses its special meaning and the parsing
+  is resumed:
+  - backslash at the end of pattern string matches itself.
+  - Error in [:keyword:] results in set containing :\[dekorwy.
+  
+  Unit test 1307 updated for this new situation.
+  
+  Closes #2273
+
+- fnmatch: accept an alphanum to be followed by a non-alphanum in char set
+  
+  Also be more tolerant about set pattern syntax.
+  Update unit test 1307 accordingly.
+  
+  Bug: https://curl.haxx.se/mail/lib-2018-01/0114.html
+
+- fnmatch: do not match the empty string with a character set
+
+Jay Satiro (30 Jan 2018)
+- build: fix windows build methods for curl_ctype.c
+  
+  - Fix winbuild and the VS project generator to treat curl_ctype.{c,h} as
+    curlx files since they are required by both src and lib.
+  
+  Follow-up to 4272a0b which added curl_ctype.
+
+Daniel Stenberg (30 Jan 2018)
+- progress-bar.d: update to match implementation
+  
+  ... since commit 993dd5651a6
+  
+  Reported-by: Martin Dreher
+  Bug: https://github.com/curl/curl/pull/2242#issuecomment-361059228
+  
+  Closes #2271
+
+- http2: set DEBUG_HTTP2 to enable more HTTP/2 logging
+  
+  ... instead of doing it unconditionally in debug builds. It cluttered up
+  the output a little too much.
+
+- [Max Dymond brought this change]
+
+  file: Check the return code from Curl_range and bail out on error
+
+- [Max Dymond brought this change]
+
+  Curl_range: add check to ensure "from <= to"
+
+- [Max Dymond brought this change]
+
+  Curl_range: commonize FTP and FILE range handling
+  
+  Closes #2205
+
+- RELEASE-NOTES: synced with 811beab9f
+
+- curlver: next release will be 7.59.0
+
+- [Michał Janiszewski brought this change]
+
+  curl/curl.h: fix comment typo for CURLOPT_DNS_LOCAL_IP6
+  
+  Closes #2275
+
+- time: support > year 2038 time stamps for system with 32bit long
+  
+  ... with the introduction of CURLOPT_TIMEVALUE_LARGE and
+  CURLINFO_FILETIME_T.
+  
+  Fixes #2238
+  Closes #2264
+
+- curl_easy_reset: clear digest auth state
+  
+  Bug: https://curl.haxx.se/mail/lib-2018-01/0074.html
+  Reported-by: Ruurd Beerstra
+  Fixes #2255
+  Closes #2272
+
+- [Adam Marcionek brought this change]
+
+  winbuild: make linker generate proper PDB
+  
+  Link.exe requires /DEBUG to properly generate a full pdb file on release
+  builds.
+  
+  Closes #2274
+
+- curl: add --proxy-pinnedpubkey
+  
+  To verify a proxy's public key. For when using HTTPS proxies.
+  
+  Fixes #2192
+  Closes #2268
+
+- configure: set PATH_SEPARATOR to colon for PATH w/o separator
+  
+  The logic tries to figure out what the path separator in the $PATH
+  variable is, but if there's only one directory in the $PATH it
+  fails. This change make configure *guess* on colon instead of erroring
+  out, simply because that is probably the more common character.
+  
+  PATH_SEPARATOR can always be set by the user to override the guessing.
+  
+  (tricky bug to reproduce, as in my case for example the configure script
+  requires binaries in more than one directory so passing in a PATH with a
+  single dir fails.)
+  
+  Reported-by: Earnestly on github
+  Fixes #2202
+  Closes #2265
+
+- curl_ctype: private is*() type macros and functions
+  
+  ... since the libc provided one are locale dependent in a way we don't
+  want. Also, the "native" isalnum() (for example) works differently on
+  different platforms which caused test 1307 failures on macos only.
+  
+  Closes #2269
+
+Marcel Raad (29 Jan 2018)
+- build: open VC15 projects with VS 2017
+  
+  Previously, they were opened with Visual Studio 2015 by default, which
+  cannot build them.
+
+Daniel Stenberg (29 Jan 2018)
+- RELEASE-NOTES: synced with 094647fca
+
+- TODO: UTF-8 filenames in Content-Disposition
+  
+  Closes #1888
+
+- KNOWN_BUGS: DICT responses show the underlying protocol
+  
+  Closes #1809
+
+Jay Satiro (27 Jan 2018)
+- [Alessandro Ghedini brought this change]
+
+  docs: fix typos in man pages
+  
+  Closes https://github.com/curl/curl/pull/2266
+
+Patrick Monnerat (26 Jan 2018)
+- lib555: drop text conversion and encode data as ascii codes
+  
+  If CURL_DOES_CONVERSION is enabled, uploaded LFs are mapped to CRLFs,
+  giving a result that is different from what is expected.
+  This commit avoids using CURLOPT_TRANSFERTEXT and directly encodes data
+  to upload in ascii.
+  
+  Bug: https://github.com/curl/curl/pull/1872
+
+Daniel Stenberg (26 Jan 2018)
+- lib517: make variable static to avoid compiler warning
+  
+  ... with clang on macos
+
+Patrick Monnerat (26 Jan 2018)
+- lib544: sync ascii code data with textual data
+  
+  Data mismatch caused test 545 to fail when character encoding
+  conversion is enabled.
+  
+  Bug: https://github.com/curl/curl/pull/1872
+
+Daniel Stenberg (25 Jan 2018)
+- [Travis Burtrum brought this change]
+
+  GSKit: restore pinnedpubkey functionality
+  
+  inadvertently removed in 283babfaf8d8f3bab9d3c63cea94eb0b84e79c37
+  
+  Closes #2263
+
+- [Dair Grant brought this change]
+
+  darwinssl: Don't import client certificates into Keychain on macOS
+  
+  Closes #2085
+
+- configure: fix the check for unsigned time_t
+  
+  Assign the time_t variable negative value and then check if it is
+  greater than zero, which will evaluate true for unsigned time_t but
+  false for signed time_t.
+
+- parsedate: fix date parsing for systems with 32 bit long
+  
+  Make curl_getdate() handle dates before 1970 as well (returning negative
+  values).
+  
+  Make test 517 test dates for 64 bit time_t.
+  
+  This fixes bug (3) mentioned in #2238
+  
+  Closes #2250
+
+- [McDonough, Tim brought this change]
+
+  openssl: fix pinned public key build error in FIPS mode
+  
+  Here is a version that should work with all versions of openssl 0.9.7
+  through 1.1.0.
+  
+  Links to the docs:
+  https://www.openssl.org/docs/man1.0.2/crypto/EVP_DigestInit.html
+  https://www.openssl.org/docs/man1.1.0/crypto/EVP_DigestInit.html
+  
+  At the very bottom of the 1.1.0 documentation there is a history section
+  that states, " stack allocated EVP_MD_CTXs are no longer supported."
+  
+  If EVP_MD_CTX_create and EVP_MD_CTX_destroy are not defined, then a
+  simple mapping can be used as described here:
+  https://wiki.openssl.org/index.php/Talk:OpenSSL_1.1.0_Changes
+  
+  Closes #2258
+
+- [Travis Burtrum brought this change]
+
+  SChannel/WinSSL: Replace Curl_none_md5sum with Curl_schannel_md5sum
+
+- [Travis Burtrum brought this change]
+
+  SChannel/WinSSL: Implement public key pinning
+  
+  Closes #1429
+
+- bump: towards 7.58.1
+
+- cookies: remove verbose "cookie size:" output
+  
+  It was once used for some debugging/verifying logic but should never have
+  ended up in git!
+
+- TODO: hardcode the "localhost" addresses
+
+- TODO: CURL_REFUSE_CLEARTEXT
+  
+  An idea that popped up in discussions on twitter.
+
+- progress-bar: don't use stderr explicitly, use bar->out
+  
+  Reported-By: Gisle Vanem
+  Bug: https://github.com/curl/curl/commit/993dd5651a6c853bfe3870f6a69c7b329fa4e8ce#commitcomment-27070080
+
+GitHub (24 Jan 2018)
+- [Gisle Vanem brought this change]
+
+  Fixes for MSDOS etc.
+  
+  djgpp do have 'mkdir(dir, mode)'. Other DOS-compilers does not
+  But djgpp seems the only choice for MSDOS anyway.
+  
+  PellesC do have a 'F_OK' defined in it's <unistd.h>.
+  
+  Update year in Copyright.
+
+- [Gisle Vanem brought this change]
+
+  Fix small typo.
+
 Version 7.58.0 (23 Jan 2018)
 
 Daniel Stenberg (23 Jan 2018)
@@ -1330,7 +3670,7 @@
   
   Coverity CID 1420610
 
-Viktor Szakáts (6 Nov 2017)
+Viktor Szakats (6 Nov 2017)
 - src/Makefile.m32: fix typo in brotli lib customization
   
   Ref cc1f4436099decb9d1a7034b2bb773a9f8379d31
@@ -1344,7 +3684,7 @@
 Patrick Monnerat (5 Nov 2017)
 - travis: add a job with brotli enabled
 
-- [Viktor Szakáts brought this change]
+- [Viktor Szakats brought this change]
 
   Makefile.m32: add brotli support
 
@@ -1517,14 +3857,10 @@
   
   closes #2033
 
-monnerat (29 Oct 2017)
-- [Patrick Monnerat brought this change]
+Patrick Monnerat (29 Oct 2017)
+- cli tool: improve ";type=" handling in -F option arguments
 
-  cli tool: improve ";type=" handling in -F option arguments
-
-- [Patrick Monnerat brought this change]
-
-  cli tool: in -F option arg, comma is a delimiter for files only
+- cli tool: in -F option arg, comma is a delimiter for files only
   
   Also upgrade test 1133 to cover this case and clarify man page about
   form data quoting.
@@ -1842,7 +4178,7 @@
   
   Closes #1938
 
-Viktor Szakáts (15 Oct 2017)
+Viktor Szakats (15 Oct 2017)
 - makefile.m32: allow to override gcc, ar and ranlib
   
   Allow to ovverride certain build tools, making it possible to
@@ -2120,7 +4456,7 @@
   Fixes #1955
   Closes #1956
 
-Viktor Szakáts (6 Oct 2017)
+Viktor Szakats (6 Oct 2017)
 - lib/config-win32.h: let SMB/SMBS be enabled with OpenSSL/NSS
   
   The source code is now prepared to handle the case when both
@@ -2159,7 +4495,7 @@
   
   Closes #1946
 
-Viktor Szakáts (4 Oct 2017)
+Viktor Szakats (4 Oct 2017)
 - lib/Makefile.m32: allow customizing dll suffixes
   
   - New `CURL_DLL_SUFFIX` envvar will add a suffix to the generated
@@ -2406,7 +4742,7 @@
   Follow up to 7c52b12 which added the entry. The entry had used tabs but
   the symbol-scan parser doesn't recognize tabs and would fail the symbol.
 
-Viktor Szakáts (22 Sep 2017)
+Viktor Szakats (22 Sep 2017)
 - metalink: fix NSS issue in MultiSSL builds
   
   In MultiSSL mode (i.e. when more than one SSL backend is compiled
@@ -2969,7 +5305,7 @@
   
   Closes #1846
 
-Viktor Szakáts (5 Sep 2017)
+Viktor Szakats (5 Sep 2017)
 - examples/mime: minor example code fixes
 
 Daniel Stenberg (5 Sep 2017)
@@ -2993,7 +5329,7 @@
   
   ... to a README file that doesn't exist anymore
 
-Viktor Szakáts (4 Sep 2017)
+Viktor Szakats (4 Sep 2017)
 - docs: Update to secure URL versions
 
 - mime: use CURL_ZERO_TERMINATED in examples
@@ -3220,7 +5556,7 @@
      } else
      ^
 
-Viktor Szakáts (30 Aug 2017)
+Viktor Szakats (30 Aug 2017)
 - makefile.m32: add multissl support
   
   Closes https://github.com/curl/curl/pull/1840
@@ -3867,7 +6203,7 @@
   Fixes https://github.com/curl/curl/issues/1751
   Closes https://github.com/curl/curl/pull/1813
 
-Viktor Szakáts (22 Aug 2017)
+Viktor Szakats (22 Aug 2017)
 - makefile.m32: add support for libidn2
   
   libidn was replaced with libidn2 last year in configure.
@@ -3877,7 +6213,7 @@
   Closes https://github.com/curl/curl/pull/1815
 
 Jay Satiro (22 Aug 2017)
-- [Viktor Szakáts brought this change]
+- [Viktor Szakats brought this change]
 
   config-win32: define SIZEOF_LONG
   
@@ -4021,7 +6357,7 @@
 - curl/system.h: checksrc compliance
 
 Jay Satiro (17 Aug 2017)
-- [Viktor Szakáts brought this change]
+- [Viktor Szakats brought this change]
 
   ssh: add the ability to enable compression (for SCP/SFTP)
   
@@ -4432,7 +6768,7 @@
 
 - THANKS: 20 new contributors in 7.55.0
 
-- [Viktor Szakáts brought this change]
+- [Viktor Szakats brought this change]
 
   docs/comments: Update to secure URL versions
   
@@ -4833,2025 +7169,3 @@
 - rtspd: fix MSVC level 4 warning
   
   warning C4701: potentially uninitialized local variable 'req' used
-
-- winbuild: re-enable warning C4127 for curl tool
-  
-  Disabled in cda19a345f6970e22fe8b7a808aeb8f086a21eac. It only needs to
-  be disabled for libcurl.
-
-- winbuild: build with warning level 4
-  
-  This is consistent with 7bc64561a2e63ca93e4b0b31d350773ba80955c2, which
-  changed the warning level from 3 to 4 for the Visual Studio project
-  files. But disable the level 4 warning C4127 "conditional expression is
-  constant", as that one is issued by older versions of the Windows SDK
-  as well as curl itself under some circumstances.
-  
-  Closes https://github.com/curl/curl/pull/1667
-
-Jay Satiro (12 Jul 2017)
-- [Max Dymond brought this change]
-
-  travis: install libidn2
-  
-  Install libidn2 to increase test coverage (IDN tests)
-  
-  Closes https://github.com/curl/curl/pull/1673
-
-Marcel Raad (12 Jul 2017)
-- travis: enable warnings also in release mode
-  
-  ... to get warnings also on Linux/GCC and OSX/clang.
-  
-  Closes https://github.com/curl/curl/pull/1666
-
-Daniel Stenberg (12 Jul 2017)
-- [Max Dymond brought this change]
-
-  travis: install libssh2
-  
-  Install libssh2 to increase test coverage (SFTP, SCP)
-
-Marcel Raad (12 Jul 2017)
-- system.h: include winsock2.h before windows.h
-  
-  ... to avoid compiler warnings if the user doesn't want
-  WIN32_LEAN_AND_MEAN.
-
-- build: remove WIN32_LEAN_AND_MEAN from individual build systems
-  
-  It's defined for all build systems in curl_setup.h since commit
-  beb08481d01a07a8b10938b1078a5e298b1c2912. This caused macro
-  redefinition warnings in the configure builds.
-  
-  Closes https://github.com/curl/curl/pull/1677
-
-Jay Satiro (11 Jul 2017)
-- ISSUE_TEMPLATE: Add a comment not to file security issues on github
-
-Marcel Raad (11 Jul 2017)
-- curl_setup: always define WIN32_LEAN_AND_MEAN on Windows
-  
-  Make sure to always define WIN32_LEAN_AND_MEAN before including any
-  Windows headers to avoid pulling in unnecessary headers. This avoids
-  unnecessary macro clashes and compiler warnings.
-  
-  Ref: https://github.com/curl/curl/issues/1562
-  Closes https://github.com/curl/curl/pull/1672
-
-Jay Satiro (11 Jul 2017)
-- strerror: Preserve Windows error code in some functions
-  
-  This is a follow-up to af02162 which removed (SET_)ERRNO macros. That
-  commit was an earlier draft that I committed by mistake, which was then
-  remedied by a5834e5 and e909de6, and now this commit. With this commit
-  there is now no difference between the current code and the changes that
-  were approved in the final draft.
-  
-  Thanks-to: Max Dymond, Marcel Raad, Daniel Stenberg, Gisle Vanem
-  Ref: https://github.com/curl/curl/pull/1589
-
-Marcel Raad (10 Jul 2017)
-- [Max Dymond brought this change]
-
-  tests: Fix up issues with errno in test files
-  
-  Closes https://github.com/curl/curl/pull/1671
-
-Daniel Stenberg (10 Jul 2017)
-- errno: fix non-windows builds after af0216251b94e7
-
-- [Ryan Winograd brought this change]
-
-  make: fix docs build on OpenBSD
-  
-  Ref: #1591
-
-Marcel Raad (10 Jul 2017)
-- ldap: fix MinGW compiler warning
-  
-  ldap_bind_s is marked as deprecated in w32api's winldap.h shipping with
-  the latest original MinGW, resulting in compiler warnings since commit
-  f0fe66f13c93d3d0af45d9fb1231c9164e0f9dc8. Fix this for the non-SSPI
-  case by using ldap_simple_bind_s again instead of ldap_bind_s with
-  LDAP_AUTH_SIMPLE.
-  
-  Closes https://github.com/curl/curl/pull/1664
-
-- curl-compilers.m4: disable warning spam with Cygwin's clang
-  
-  When building with Cygwin or MinGW, libtool uses a wrapper executable
-  instead of a wrapper script [1], which is written in C and throws
-  missing-variable-declarations warnings. Don't enable these warnings on
-  Cygwin and MinGW in order to avoid warnings for every executable built,
-  which spams the test suite output when using Cygwin's clang.
-  
-  [1] https://www.gnu.org/software/libtool/manual/html_node/Wrapper-executables.html
-  
-  Closes https://github.com/curl/curl/pull/1665
-
-Jay Satiro (10 Jul 2017)
-- curl_setup_once: Remove ERRNO/SET_ERRNO macros
-  
-  Prior to this change (SET_)ERRNO mapped to GetLastError/SetLastError
-  for Win32 and regular errno otherwise.
-  
-  I reviewed the code and found no justifiable reason for conflating errno
-  on WIN32 with GetLastError/SetLastError. All Win32 CRTs support errno,
-  and any Win32 multithreaded CRT supports thread-local errno.
-  
-  Fixes https://github.com/curl/curl/issues/895
-  Closes https://github.com/curl/curl/pull/1589
-
-- tool_getparam: fix potentially uninitialized err
-
-Marcel Raad (9 Jul 2017)
-- smb: rename variable to fix shadowing warning
-  
-  GCC 4.6.3 on travis complains:
-  smb.c: In function ‘get_posix_time’:
-  smb.c:725:13: error: declaration of ‘time’ shadows a global declaration
-  [-Werror=shadow]
-  
-  Fix this by renaming the variable.
-
-- tool_cb_wrt: fix variable shadowing warning
-  
-  GCC 4.4 complains:
-  tool_cb_wrt.c:81: error: declaration of ‘isatty’ shadows a global
-  declaration
-  /usr/include/unistd.h:782: error: shadowed declaration is here
-  
-  Fix this by renaming the variable.
-  
-  Closes https://github.com/curl/curl/pull/1661
-
-Daniel Stenberg (8 Jul 2017)
-- RELEASE-NOTES: synced with be2c999b8
-
-- travis: install stunnel
-
-- valgrind.supp: supress OpenSSL false positive seen on travis
-
-- travis: detect and use valgrind for normal builds
-  
-  Closes #1653
-
-- travis: add SMB, DICT, TELNET torture to coverage test
-
-- [Paul Harris brought this change]
-
-  cmake: offer CMAKE_DEBUG_POSTFIX when building with MSVC
-  
-  Removes BUILD_RELEASE_DEBUG_DIRS since it wasn't used anywhere.
-  
-  Closes #1649
-
-- CURLOPT_POSTFIELDS.3: explain the 100-continue magic better
-
-- [Max Dymond brought this change]
-
-  test1452: add telnet negotiation
-  
-  Add a basic telnet server for negotiating some telnet options before
-  echoing back any data that's sent to it.
-  
-  Closes #1645
-
-- travis: do more tests in the coverage run
-  
-  I added a selection of torture and event tests that run "fast enough"
-
-- curl_easy_escape.3: mention the (lack of) encoding
-  
-  Fixes #1612
-  Reported-by: Jeroen Ooms
-
-- [Gisle Vanem brought this change]
-
-  memdebug: don't setbuf() if the file open failed
-  
-  Bug: https://github.com/curl/curl/issues/828#issuecomment-313475151
-
-- appveyor: enable CURL_WERROR on all builds
-
-- cmake: add CURL_WERROR for enabling "warning as errors"
-
-- [Hannes Magnusson brought this change]
-
-  cmake: remove spurious "-l" from linker flags
-  
-  Fixes #1552
-
-- test506: skip if threaded-resolver
-
-- runtests: support "threaded-resolver" as a feature
-  
-  ... to let tests require it or skip if present
-
-- asyn-thread.c: fix unused variable warnings on macOS
-
-- http: s/TINY_INITIAL_POST_SIZE/EXPECT_100_THRESHOLD
-  
-  Make the name reflect its use better, and add a short comment describing
-  what it's for.
-
-- cmake: if inet_pton is used, bump _WIN32_WINNT
-  
-  ... and make sure inet_pton is always checked for when *not* using Windows,
-  which is a regression from 4fc6ebe18.
-  
-  Idea-by: Sergei Nikulov
-
-- select.h: avoid macro redefinition harder
-  
-  ... by checking the POLLIN define, as the header file checks don't work
-  on Windows.
-
-- inet_pton: fix include on windows to get prototype
-  
-  inet_pton() exists on Windows and gets used by our cmake builds. Make
-  sure the correct header file is included to avoid compiler warnings.
-  
-  Closes #1639
-
-- TODO: 1.10 auto-detect proxy
-  
-  Closes #1572
-
-- TODO: HTTP proxy CONNECT is non-blocking now
-
-- cmake: fix send/recv argument scanner for windows
-  
-  ... by simply trying the Windows argument types first.
-  
-  Fixes #1640
-
-- RELEASE-NOTES: synced with 596cfb6c0
-
-- [Gisle Vanem brought this change]
-
-  smb: add support for CURLOPT_FILETIME
-  
-  Bug: https://curl.haxx.se/mail/lib-2017-07/0005.html
-  
-  Closes #1643
-
-- travis: install nghttp2 on linux builds
-  
-  Closes #1642
-
-- [Gisle Vanem brought this change]
-
-  smb: fix build for djgpp/MSDOS
-  
-  bug: https://curl.haxx.se/mail/lib-2017-07/0005.html
-
-- configure: try ldap/lber in reversed order first
-  
-  When scanning for which LDAP libraries to use, try the -lldap -llber
-  combination before the reversed order since it has a greater chance of
-  working when linking with libcurl statically.
-  
-  Fixes #1619
-  Closes #1634
-  Reported-by: David E. Narváez
-
-- configure: remove checks for 5 functions never used
-  
-  fork, getprotobyname, inet_addr, perror, uname
-  
-  closes #1638
-
-- dist: add SMB python deps into the tarball
-
-- [Max Dymond brought this change]
-
-  test1451: add SMB support to the testbed
-  
-  Add test 1451 which does some very basic SMB testing using the impacket
-  SMB server.
-  
-  Closes #1630
-
-- [Max Dymond brought this change]
-
-  test: add impacket for SMB testing
-  
-  Import impacket 0.9.15 for use in SMB testing. This was generated by
-  doing "pip2.7 install -t . impacket"
-  
-  Unnecessary files for current testing were deleted.
-
-- travis.yml: use --enable-werror on debug builds
-  
-  ... to better detect and fault on compiler warnings/errors
-  
-  Closes #1637
-
-- tool_sleep: typecast to avoid macos compiler warning
-  
-  tool_sleep.c:54:24: error: implicit conversion loses integer precision:
-  'long' to '__darwin_suseconds_t' (aka 'int')
-  [-Werror,-Wshorten-64-to-32]
-
-- [Martin Kepplinger brought this change]
-
-  timeval.c: Use long long constant type for timeval assignment
-  
-  On a 64 bit host, sparse says:
-  
-  timeval.c:148:15: warning: constant 0x7fffffffffffffff is so big it is long
-  timeval.c:149:12: warning: constant 0x7fffffffffffffff is so big it is long
-  
-  so let's use long long constant types in order to prevent undesired overflow
-  failures.
-  
-  Bug: https://curl.haxx.se/mail/lib-2017-07/0003.html
-  
-  Closes #1636
-  
-  Signed-off-by: Martin Kepplinger <martink@posteo.de>
-
-- url: make the original string get used on subsequent transfers
-  
-  ... since CURLOPT_URL should follow the same rules as other options:
-  they remain set until changed or cleared.
-  
-  Added test 1551 to verify.
-  
-  Fixes #1631
-  Closes #1632
-  Reported-by: Pavel Rochnyak
-
-- [Johannes Schindelin brought this change]
-
-  gtls: fix build when sizeof(long) < sizeof(void *)
-  
-  - Change gnutls pointer/int macros to pointer/curl_socket_t.
-    Prior to this change they used long type as well.
-  
-  The size of the `long` data type can be shorter than that of pointer
-  types. This is the case most notably on Windows.
-  
-  If C99 were acceptable, we could simply use `intptr_t` here. But we
-  want to retain C89 compatibility.
-  
-  Simply use the trick of performing pointer arithmetic with the NULL
-  pointer: to convert an integer `i` to a pointer, simply take the
-  address of the `i`th element of a hypothetical character array
-  starting at address NULL. To convert back, simply cast the pointer
-  difference.
-  
-  Thanks to Jay Satiro for the initial modification to use curl_socket_t
-  instead of int/long.
-  
-  Closes #1617
-  
-  Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
-
-- [Ryan Winograd brought this change]
-
-  unit1399: fix integer overflow
-  
-  Bug: #1616
-  Closes #1633
-
-- [Per Malmberg brought this change]
-
-  cmake: Added compatibility options for older Windows versions
-  
-  CURL_STATIC_CRT and ENABLE_INET_PTON
-  
-  Closes #1621
-
-- unit1399: add logging to time comparison
-  
-  ... to enable tracking down why autobuilds fail on this
-  
-  Bug: #1616
-
-- make: build the docs subdir only from within src
-  
-  ... and don't build at all in include
-  
-  Prompted-by-work-by: Simon Warta
-  Ref: #1590
-  Closes #1591
-
-- [Max Dymond brought this change]
-
-  test1450: fix up DICT server in torture mode
-  
-  As per https://github.com/curl/curl/pull/1615, the DICT server is a
-  little spammy in torture mode due to the sockets being torn down
-  unexpectedly. Fix this by adding some error handling to the handling
-  function.
-  
-  Closes #1629
-
-- [Max Dymond brought this change]
-
-  test1450: add simple testing for DICT
-  
-  Add a new server which provides a DICT interface. This is intended to
-  begin coverage testing for lib/dict.c
-  
-  Closes #1615
-
-- [Dan Fandrich brought this change]
-
-  test1521: fix out-of-tree builds, broken with 467da3af
-  
-  The test.h file is no longer in the same directory as the source file,
-  so that directory needs to be added to the include path.
-  
-  Fixes #1627
-  Closes #1628
-
-- [Max Dymond brought this change]
-
-  http2: handle PING frames
-  
-  Add a connection check function to HTTP2 based off RTSP. This causes
-  PINGs to be handled the next time the connection is reused.
-  
-  Closes #1521
-
-- [Max Dymond brought this change]
-
-  handler: refactor connection checking
-  
-  Add a new type of callback to Curl_handler which performs checks on
-  the connection. Alter RTSP so that it uses this callback to do its
-  own check on connection health.
-
-- [Dmitry Kostjuchenko brought this change]
-
-  openssl: improve fallback seed of PRNG with a time based hash
-  
-  Fixes #1620
-
-- [Ryan Winograd brought this change]
-
-  progress: prevent resetting t_starttransfer
-  
-  Prevent `Curl_pgrsTime` from modifying `t_starttransfer` when invoked
-  with `TIMER_STARTTRANSFER` more than once during a single request.
-  
-  When a redirect occurs, this is considered a new request and
-  `t_starttransfer` can be updated to reflect the `t_starttransfer` time
-  of the redirect request.
-  
-  Closes #1616
-  
-  Bug: https://github.com/curl/curl/pull/1602#issuecomment-310267370
-
-- curl_strequal.3: fix typo in SYNOPSIS
-  
-  Reported-by: Jesse Chisholm
-  
-  Fixes #1623
-
-- RELEASE-NOTES: synced with ce2c3ebda
-
-Kamil Dudka (28 Jun 2017)
-- curl --socks5-{basic,gssapi}: control socks5 auth
-  
-  Closes https://github.com/curl/curl/pull/1454
-
-- CURLOPT_SOCKS5_AUTH: allowed methods for SOCKS5 proxy auth
-  
-  If libcurl was built with GSS-API support, it unconditionally advertised
-  GSS-API authentication while connecting to a SOCKS5 proxy.  This caused
-  problems in environments with improperly configured Kerberos: a stock
-  libcurl failed to connect, despite libcurl built without GSS-API
-  connected fine using username and password.
-  
-  This commit introduces the CURLOPT_SOCKS5_AUTH option to control the
-  allowed methods for SOCKS5 authentication at run time.
-  
-  Note that a new option was preferred over reusing CURLOPT_PROXYAUTH
-  for compatibility reasons because the set of authentication methods
-  allowed by default was different for HTTP and SOCKS5 proxies.
-  
-  Bug: https://curl.haxx.se/mail/lib-2017-01/0005.html
-  Closes https://github.com/curl/curl/pull/1454
-
-- socks: deduplicate the code for auth request
-
-- socks: use proxy_user instead of proxy_name
-  
-  ... to make it obvious what the data is used for
-
-Daniel Stenberg (27 Jun 2017)
-- libtest/make: generate lib1521.c
-  
-  ... instead of having the generated code checked in. This saves space in
-  the tarball but primarily automatically adapts to newly added options.
-  
-  Closes #1614
-
-Jay Satiro (26 Jun 2017)
-- tool_getparam: fix memory leak on test 1147 OOM (torture tests)
-  
-  Bug: https://github.com/curl/curl/pull/1486#issuecomment-310926872
-  Reported-by: Dan Fandrich
-
-Dan Fandrich (25 Jun 2017)
-- test1537: fixed memory leak on OOM
-
-Marcel Raad (25 Jun 2017)
-- test1521: fix compiler warnings
-  
-  The integer literal 3123123123 doesn't fit into a 32-bit signed
-  integer, so GCC with 32-bit long warns in C90 mode:
-  this decimal constant is unsigned only in ISO C90 [enabled by default]
-  Fix this by using ULONG_MAX, which should fit in any curl_off_t and has
-  the correct suffix to not issue any warnings.
-  Also adds the missing CURLOPT_REQUEST_TARGET from commit
-  9b167fd090f596eac828817d48c247eeae53407f.
-  
-  Closes https://github.com/curl/curl/pull/1611
-
-Daniel Stenberg (24 Jun 2017)
-- curl/system.h: add check for XTENSA for 32bit gcc
-  
-  Reported-by: Neil Kolban
-  Fixes: 1598
-
-- [Henrik S. Gaßmann brought this change]
-
-  winbuild: fix boringssl build
-  
-  Compile with `WIN32_LEAN_AND_MEAN` which prevents `windows.h` from
-  including too much clutter including `wincrypt.h` which in turn contains
-  some preprocessor macros that clash with boringssl symbols.
-  
-  Detect boringssl by checking the existance of `is_boringssl.h` and set
-  the corresponding `HAVE_BORINGSSL` for compilation which is used in
-  `ldap.c` to undefine the evil macros.
-  
-  Closes #1610
-
-- progress: progress.timespent needs to be us
-  
-  follow-up to 64ed44a815e4e to fix test 500 failures
-
-Marcel Raad (24 Jun 2017)
-- curl-compilers.m4: fix unknown-warning-option on Apple clang
-  
-  Since 5598b0bd63f690c151074494ce47ef872f004ab4, clang -v is used to
-  detect the clang version. The version number was expected to come after
-  the word "version". For Apple clang, this doesn't work as it has its
-  own versioning scheme.
-  The version number is now first searched after the string
-  "based on LLVM". This works for Apple clang before version 7, and also
-  for e.g. Ubuntu's clang up to version 3.7. If it's not found and the
-  version string contains "Apple LLVM version", clang version 3.7 is
-  assumed, which is the version that comes with Xcode 7. Otherwise, the
-  version number is still expected after the word "version", which works
-  for very old Apple clang versions.
-  
-  Ref: https://trac.macports.org/wiki/XcodeVersionInfo
-  Fixes https://github.com/curl/curl/issues/1606
-  Closes https://github.com/curl/curl/pull/1607
-
-Daniel Stenberg (24 Jun 2017)
-- progress: fix "time spent", broke in adef394ac
-
-- CURLINFO_REDIRECT_URL.3: mention the CURLOPT_MAXREDIRS case
-  
-  ... supported since 7.54.1
-
-- maketgz: switch to -6e for xz
-  
-  To reduce the memory requirement for decompress, and still do almost as
-  good compression as with -9e.
-  
-  Pointed-out-by: Dan Fandrich
-
-- libtest/Makefile: remove unused lib1541 variables
-
-- CONTRIBUTE.md: mention the out-of-tree build test too
-
-- maketgz: switch to xz instead of lzma
-  
-  The compressed output size seems to be a tad bit smaller, but generally
-  xz seems more preferred these days and is used directly by for example
-  gentoo instead of bz2.
-  
-  "Users of LZMA Utils should move to XZ Utils" =>
-  https://tukaani.org/lzma/
-  
-  Closes #1604
-
-- --request-target: instead of --strip-path-slash
-  
-  ... and CURLOPT_REQUEST_TARGET instead of CURLOPT_STRIP_PATH_SLASH.
-  
-  This option instead provides the full "alternative" target to use in the
-  request, instead of extracting the path from the URL.
-  
-  Test 1298 and 1299 updated accordingly.
-  
-  Idea-by: Evert Pot
-  Suggestion: https://daniel.haxx.se/blog/2017/06/19/options-with-curl/comment-page-1/#comment-18373
-  
-  Closes #1593
-
-Marcel Raad (21 Jun 2017)
-- lib1521: fix missing-variable-declarations clang warnings
-  
-  Declare TU-local variables static.
-
-- travis: enable typecheck-gcc warnings
-  
-  - switch debug and release configurations so that we get an optimized
-    build with GCC 4.3+ as required by typecheck-gcc
-  - enable warnings-as-errors for release builds
-    (which have warnings disabled)
-  
-  Closes https://github.com/curl/curl/pull/1595
-
-- typecheck-gcc: add support for CURLINFO_OFF_T
-  
-  typecheck-gcc expected curl_socket_t instead of curl_off_t arguments
-  for CURLINFO_OFF_T. Detected by test1521, unfortunately only when run
-  locally.
-  
-  Closes https://github.com/curl/curl/pull/1592
-
-Daniel Stenberg (21 Jun 2017)
-- [Simon Warta brought this change]
-
-  ci: whitelist branches to avoid testing feature branches twice
-
-- [Gisle Vanem brought this change]
-
-  lib: fix the djgpp build
-  
-  Bug: https://github.com/curl/curl/commit/73a2fcea0b4adea6ba342cd7ed1149782c214ae3#commitcomment-22655993
-
-Marcel Raad (20 Jun 2017)
-- if2ip: fix compiler warning in ISO C90 mode
-  
-  remote_scope_id is only used when both HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
-  and ENABLE_IPV6 are defined instead of only one of them.
-
-Daniel Stenberg (20 Jun 2017)
-- travis: do the distcheck test build out-of-tree as well
-
-- http: add --strip-path-slash and CURLOPT_STRIP_PATH_SLASH
-  
-  ... to enable sending "OPTIONS *" which wasn't possible previously.
-  
-  This option currently only works for HTTP.
-  
-  Added test cases 1298 + 1299 to verify
-  
-  Fixes #1280
-  Closes #1462
-
-- test1521: test getinfo's OFF_T types too
-  
-  Closes #1588
-
-- lib1521: add curl_easy_getinfo calls to the test set
-  
-  Also added return value checks to make sure no unexpected return codes
-  are used.
-
-- [Simon Warta brought this change]
-
-  automake: use $(MKHELP) variable instead if constant mkhelp.pl
-  
-  this improves symmetry with the rule above
-
-- [Simon Warta brought this change]
-
-  mkhelp.pl: fix script name in usage text
-
-- RELEASE-NOTES: synced with 3b80d3ca4
-
-- getinfo: return sizes as curl_off_t
-  
-  This change introduces new alternatives for the existing six
-  curl_easy_getinfo() options that return sizes or speeds as doubles. The
-  new versions are named like the old ones but with an appended '_T':
-  
-  CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
-  CURLINFO_CONTENT_LENGTH_UPLOAD_T
-  CURLINFO_SIZE_DOWNLOAD_T
-  CURLINFO_SIZE_UPLOAD_T
-  CURLINFO_SPEED_DOWNLOAD_T
-  CURLINFO_SPEED_UPLOAD_T
-  
-  Closes #1511
-
-- PIPELINING_SERVER_BL: cleanup the internal list use
-  
-  The list was freed incorrectly since the llist refactor of
-  cbae73e1dd959. Added test 1550 to verify that it works and avoid future
-  regressions.
-  
-  Reported-by: Pascal Terjan
-  
-  Fixes #1584
-  Closes #1585
-
-- http2: fix OOM crash
-  
-  torture mode with test 1021 found it
-
-- CURLOPT_PREQUOTE.3: spellfix man page reference
-
-Marcel Raad (18 Jun 2017)
-- http_proxy: fix build with http and proxy
-  
-  After deff7de0eb0e22d2d142b96b9cc84cd8db5d2a48, the build without
-  CURL_DISABLE_PROXY and CURL_DISABLE_HTTP was failing because of missing
-  includes.
-
-- http_proxy: fix compiler warning
-  
-  With CURL_DISABLE_PROXY or CURL_DISABLE_HTTP, GCC complained about a
-  missing prototype for Curl_connect_free.
-
-Daniel Stenberg (18 Jun 2017)
-- TODO: update the TOC too
-
-- TODO: implement support for CURLOPT_PREQUOTE with SFTP
-  
-  ... also updated the CURLOPT_PREQUOTE.3 man page to mention the correct
-  protocol support.
-  
-  Closes #1514
-
-- tool_wrte_cb: remove check for config == NULL
-  
-  ... as it really cannot have reached this far with config being NULL,
-  thus this is unnecesary and misleading.
-  
-  Bug: https://news.ycombinator.com/item?id=14577585 and
-  https://daniel.haxx.se/blog/2017/06/17/curl-doesnt-spew-binary-anymore/comment-page-1/#comment-18356
-  
-  Forwarded-to-us-by: Jakub Wilk
-
-- curl: prevent binary output spewed to terminal
-  
-  ... unless "--output -" is used. Binary detection is done by simply
-  checking for a binary zero in early data.
-  
-  Added test 1425 1426 to verify.
-  
-  Closes #1512
-
-Marcel Raad (16 Jun 2017)
-- Makefile.m32: enable -W for MinGW32 build
-  
-  The configure-based build also has this in addition to -Wall.
-  
-  Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable comma clang warning
-  
-  It usually warns when using commas instead of semicolons or other
-  operators by accident.
-  
-  Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable missing-variable-declarations clang warning
-  
-  It usually warns when forgetting to declare TU-local variables static.
-  
-  Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable double-promotion warning
-  
-  Enable -Wdouble-promotion for both GCC and clang. It warns on implicit
-  promotion from float to double.
-  
-  Closes https://github.com/curl/curl/pull/1578
-
-- curl-compilers.m4: enable vla warning for clang
-  
-  Previously, that warning was only implicitly active in C90 mode.
-  Enable it unconditionally as already done for GCC.
-  
-  Closes https://github.com/curl/curl/pull/1578
-
-Daniel Stenberg (16 Jun 2017)
-- http-proxy: fix chunked-encoded CONNECT responses
-  
-  Regression since 5113ad0424.
-  
-  ... and remove 'flaky' from test 1061 again
-  
-  Closes #1579
-
-- http-proxy: deal with EAGAIN
-  
-  ... the previous code would reset the header length wrongly (since
-  5113ad0424). This makes test 1060 reliable again.
-  
-  Also: make sws send even smaller chunks of data to increase the
-  likeliness of this happening.
-
-- libtest/libntlmconnect: fix compiler warnings from f94fcdb
-
-- [Jay Satiro brought this change]
-
-  HTTPS-Proxy: don't offer h2 for https proxy connections
-  
-  Bug: https://github.com/curl/curl/issues/1254
-  
-  Closes #1546
-
-- tests: stabilize test 2032 and 2033
-  
-  Both these tests run the same underlying test code: libntlmconnect.c -
-  this test code made some assumptions about socket ordering when it used
-  curl_easy_fdset() and when we changed timing or got accidental changes
-  in libcurl the tests would fail.
-  
-  The tests verify that the different transfers keep using the same
-  connections, which I now instead made sure by adding the number of bytes
-  each transfer gets and then verifies that they always get the same
-  amount as when these tests worked.
-  
-  Closes #1576
-
-- test1148: verify the -# progressbar
-  
-  Closes #1569
-
-- test1061: mark as flaky
-  
-  Fails intermittently on travis builds since a few days. Likely due to
-  5113ad0424.
-
-Jay Satiro (16 Jun 2017)
-- url: refactor the check for Windows drive letter in path
-  
-  - Move the logic to detect a Windows drive letter prefix
-    (eg c: in c:foo) into a function-like macro.
-  
-  Closes https://github.com/curl/curl/pull/1571
-
-- mk-ca-bundle.pl: Check curl's exit code after certdata download
-  
-  - No longer allow partial downloads of certdata.
-  
-  Prior to this change partial downloads were (erroneously?) allowed since
-  only the server code was checked to be 200.
-  
-  Bug: https://github.com/curl/curl/pull/1577
-  Reported-by: Matteo B.
-
-Daniel Stenberg (16 Jun 2017)
-- dist: add the fuzz dir to the tarball
-
-- configure: disable nghttp2 too if HTTP has been disabled
-
-- http-proxy: fix build with --disable-proxy or --disable-http
-  
-  Reported-by: Dan Fandrich
-
-- fuzz/README: document how to build
-  
-  Fixes #1476
-
-- [Frederik B brought this change]
-
-  fuzz: corpora file structure, initial commit
-
-- [Frederik B brought this change]
-
-  fuzz: bring oss-fuzz initial code converted to C89
-
-- http-proxy: only attempt FTP over HTTP proxy
-  
-  ... all other non-HTTP protocol schemes are now defaulting to "tunnel
-  trough" mode if a HTTP proxy is specified. In reality there are no HTTP
-  proxies out there that allow those other schemes.
-  
-  Assisted-by: Ray Satiro, Michael Kaufmann
-  
-  Closes #1505
-
-- TODO: the generated include file is gone
-  
-  ... since commit 73a2fcea0b
-
-- curl_setup.h: error out on CURL_WANTS_CA_BUNDLE_ENV use
-  
-  ... to make it really apparent if there's any user using this on purpose.
-  
-  Suggested-by: Jay Satiro
-  
-  Closes #1542
-
-- lib/curl_setup.h: remove CURL_WANTS_CA_BUNDLE_ENV
-  
-  When this define was set, libcurl would check the environment variable
-  named CURL_CA_BUNDLE at run-time and use that CA cert bundle. This
-  feature was only defined by the watcom and m32 makefiles and caused
-  inconsistent behaviours among libcurls built on different platforms.
-  
-  The curl tool does already feature its own similar logic and the library
-  does not really need it, and it isn't documented libcurl behavior. So
-  this change removes it.
-  
-  Ref: #1538
-
-- test1147: verify -H on a file
-
-- curl: allow --header and --proxy-header read from file
-  
-  So many headers can be provided as @filename.
-  
-  Suggested-by: Timothe Litt
-  
-  Closes #1486
-
-- RELEASE-NOTES: synced with 2ad80eec5
-
-- curl/curlver.h: start working on 7.55.0
-
-- http-proxy: do the HTTP CONNECT process entirely non-blocking
-  
-  Mentioned as a problem since 2007 (8f87c15bdac63) and of course it
-  existed even before that.
-  
-  Closes #1547
-
-- progress: let "current speed" be UL + DL speeds combined
-  
-  Bug #1556
-  Reported-by: Paul Harris
-  Closes #1559
-
-Marcel Raad (14 Jun 2017)
-- system.h: fix MinGW build
-  
-  CURLSYS_PULL_WS2TCPIP_H got renamed to CURL_PULL_WS2TCPIP_H in commit
-  73a2fcea0b4adea6ba342cd7ed1149782c214ae3.
-
-Daniel Stenberg (14 Jun 2017)
-- timers: store internal time stamps as time_t instead of doubles
-  
-  This gives us accurate precision and it allows us to avoid storing "no
-  time" for systems with too low timer resolution as we then bump the time
-  up to 1 microsecond. Should fix test 573 on windows.
-  
-  Remove the now unused curlx_tvdiff_secs() function.
-  
-  Maintains the external getinfo() API with using doubles.
-  
-  Fixes #1531
-
-- dist: make the hugehelp.c not get regenerated unnecessarily
-  
-  The maketgz script now makes sure the generated hugehelp.c file in the
-  tarball is newer than the generated curl.1 man page, so that it doesn't
-  have to get unnecessarily rebuilt first thing in a typical build. It
-  thus also removes the need for perl to build off a plain release
-  tarball.
-  
-  Fixes #1565
-
-- includes: remove curl/curlbuild.h and curl/curlrules.h
-  
-  Rely entirely on curl/system.h now.
-  
-  Introduced in Aug 2008 with commit 14240e9e109f. Now gone.
-  
-  Fixes #1456
-
-Version 7.54.1 (14 Jun 2017)
-
-Daniel Stenberg (14 Jun 2017)
-- release: 7.54.1
-
-Dan Fandrich (13 Jun 2017)
-- mk-lib1521.pl: updated to match the test changes in 916ec30a
-
-Daniel Stenberg (13 Jun 2017)
-- [Stuart Henderson brought this change]
-
-  libressl: OCSP and intermediate certs workaround no longer needed
-  
-  lib/vtls/openssl.c has a workaround for a bug with OCSP responses signed
-  by intermediate certs, this was fixed in LibreSSL in
-  https://github.com/libressl-portable/openbsd/commit/912c64f68f7ac4f225b7d1fdc8fbd43168912ba0
-  
-  Bug: https://curl.haxx.se/mail/lib-2017-06/0038.html
-
-- url: fix buffer overwrite with file protocol (CVE-2017-9502)
-  
-  Bug: https://github.com/curl/curl/issues/1540
-  Advisory: https://curl.haxx.se/docs/adv_20170614.html
-  
-  Assisted-by: Ray Satiro
-  Reported-by: Marcel Raad
-
-- urlglob: fix division by zero
-  
-  The multiply() function that is used to avoid integer overflows, was
-  itself reason for a possible division by zero error when passed a
-  specially formatted glob.
-  
-  Reported-by: GwanYeong Kim
-
-- configure: update the copyright year in the output
-
-- [ygrek brought this change]
-
-  BINDINGS: update SP-Forth and OCaml urls
-
-Michael Kaufmann (11 Jun 2017)
-- FindWin32CACert: Use a temporary buffer on the stack
-  
-  Don't malloc() the temporary buffer, and use the correct type:
-  SearchPath() works with TCHAR, but SearchPathA() works with char.
-  Set the buffer size to MAX_PATH, because the terminating null byte
-  is already included in MAX_PATH.
-  
-  Reviewed-by: Daniel Stenberg
-  Reviewed-by: Marcel Raad
-  
-  Closes #1548
-
-Dan Fandrich (11 Jun 2017)
-- test1521: fixed OOM handling
-
-Daniel Stenberg (9 Jun 2017)
-- RELEASE-PROCEDURE: updated future release dates
-
-- [Paul Harris brought this change]
-
-  gitignore: ignore all vim swap files
-  
-  Closes #1561
-
-- lib1521: fix compiler warnings on the use of bad 'long' values
-  
-  Reported-by: Marcel Raad
-  Bug: https://github.com/curl/curl/commit/cccac4fb2b20d6ed87da7978408c3ecacc464fe4#commitcomment-22453387
-
-- setopt: check CURLOPT_ADDRESS_SCOPE option range
-  
-  ... and return error instead of triggering an assert() when being way
-  out of range.
-
-Jay Satiro (8 Jun 2017)
-- [TheAssassin brought this change]
-
-  cmake: Fix inconsistency regarding mbed TLS include directory
-  
-  Previously, one had to set MBEDTLS_INCLUDE_DIR to make CMake find the
-  headers, but the system complained that mbed TLS wasn't found due to
-  MBEDTLS_INCLUDE_DIRS (note the trailing s) was not set. This commit
-  attempts to fix that.
-  
-  Closes https://github.com/curl/curl/pull/1541
-
-Daniel Stenberg (8 Jun 2017)
-- [Ryuichi KAWAMATA brought this change]
-
-  examples/multi-uv.c: fix deprecated symbol
-  
-  Closes #1557
-
-- asyn-ares: s/Curl_expire_latest/Curl_expire
-
-- expire: remove Curl_expire_latest()
-  
-  With the introduction of expire IDs and the fact that existing timers
-  can be removed now and thus never expire, the concept with adding a
-  "latest" timer is not working anymore as it risks to not expire at all.
-  
-  So, to be certain the timers actually are in line and will expire, the
-  plain Curl_expire() needs to be used. The _latest() function was added
-  as a sort of shortcut in the past that's quite simply not necessary
-  anymore.
-  
-  Follow-up to 31b39c40cf90
-  
-  Reported-by: Paul Harris
-  
-  Closes #1555
-
-- [Chris Carlmar brought this change]
-
-  configure: fix link with librtmp when specifying path
-  
-  Bug: https://curl.haxx.se/mail/lib-2017-06/0017.html
-
-- file: make speedcheck use current time for checks
-  
-  ... as it would previously just get the "now" timestamp before the
-  transfer starts and then not update it again.
-  
-  Closes #1550
-
-- metalink: remove unused printf() argument
-
-- travis: let some builds *not* use --enable-debug
-  
-  typecheck-gcc and other things require optimized builds
-  
-  Closes #1544
-
-- README.md: show the coverall coverage on github
-
-- lib1521: fix compiler warnings
-
-- test1521: make the code < 80 columns wide
-
-- test1121: use stricter types to work with typcheck-gcc
-
-- typecheck-gcc: allow CURLOPT_STDERR to be NULL too
-
-- test1521: test *all* curl_easy_setopt options
-  
-  mk-lib1521.pl generates a test program (lib1521.c) that calls
-  curl_easy_setopt() for every known option with a few typical values to
-  make sure they work (ignoring the return codes).
-  
-  Some small changes were necessary to avoid asserts and NULL accesses
-  when doing this.
-  
-  The perl script needs to be manually rerun when we add new options.
-  
-  Closes #1543
-
-Dan Fandrich (5 Jun 2017)
-- test1538: added "verbose logs" keyword
-  
-  These error messages are not displayed with --disable-verbose
-
-Daniel Stenberg (5 Jun 2017)
-- test1262: verify ftp download with -z for "if older than this"
-
-Marcel Raad (5 Jun 2017)
-- curl_ntlm_core: use Curl_raw_toupper instead of toupper
-  
-  This was the only remaining use of toupper in the entire source code.
-  
-  Suggested-by: Daniel Stenberg
-
-Daniel Stenberg (4 Jun 2017)
-- RELEASE-NOTES: synced with 65ba92650
-
-Marcel Raad (4 Jun 2017)
-- curl_ntlm_core: pass unsigned char to toupper
-  
-  Otherwise, clang on Cygwin64 warns:
-  curl_ntlm_core.c:525:35: error: array subscript is of type 'char'
-  [-Werror,-Wchar-subscripts]
-      dest[2 * i] = (unsigned char)(toupper(src[i]));
-                                    ^~~~~~~~~~~~~~~
-  /usr/include/ctype.h:152:25: note: expanded from macro 'toupper'
-        (void) __CTYPE_PTR[__x]; (toupper) (__x);})
-                          ^~~~
-
-Jay Satiro (3 Jun 2017)
-- [Mahmoud Samir Fayed brought this change]
-
-  BINDINGS: add Ring binding
-  
-  Closes https://github.com/curl/curl/pull/1539
-
-Daniel Stenberg (4 Jun 2017)
-- CONTRIBUTE.md: mention tests done on pull requests
-
-- travis: add coverage, distcheck and cmake builds
-  
-  Closes #1534
-
-Marcel Raad (3 Jun 2017)
-- libtest: fix int-in-bool-context warnings
-  
-  GCC 7 complained:
-  ‘*’ in boolean context, suggest ‘&&’ instead [-Wint-in-bool-context]
-
-- libtest: fix implicit-fallthrough warnings with GCC 7
-
-- x509asn1: fix implicit-fallthrough warning with GCC 7
-
-- curl_sasl: fix unused-variable warning
-  
-  This fixes the following warning with CURL_DISABLE_CRYPTO_AUTH,
-  as seen in the autobuilds:
-  
-  curl_sasl.c:417:9: warning: unused variable 'serverdata'
-  [-Wunused-variable]
-
-Daniel Stenberg (3 Jun 2017)
-- updatemanpages.pl: error out on too old git version
-
-Marcel Raad (3 Jun 2017)
-- cyassl: define build macros before including ssl.h
-  
-  cyassl/ssl.h needs the macros from cyassl/options.h, so define them
-  before including cyassl/ssl.h the first time, which happens in
-  urldata.h.
-  This broke the build on Ubuntu Xenial, which comes with WolfSSL 3.4.8
-  and therefore redefines the symbols from cyassl/options.h instead of
-  including the header.
-  
-  Closes https://github.com/curl/curl/pull/1536
-
-Daniel Stenberg (3 Jun 2017)
-- tool_util: remove unused tvdiff_secs and remove tool_ prefix
-  
-  Closes #1532
-
-- dedotdot: fixed output for ".." and "." only input
-  
-  Found when updating test 1395, which I did to increase test coverage of
-  this source file...
-  
-  Closes #1535
-
-Marcel Raad (2 Jun 2017)
-- mbedtls: make TU-local variable static
-  
-  mbedtls_x509_crt_profile_fr is only used locally.
-  This fixes a missing-variable-declarations warning with clang.
-
-- MD(4|5): silence cast-align clang warning
-  
-  Unaligned access is on purpose here and the warning is harmless on
-  affected architectures. GCC knows that, while clang warns on all
-  architectures.
-
-Daniel Stenberg (2 Jun 2017)
-- test1538: fix typo
-
-- test1538: verify the libcurl strerror API calls
-
-- curl_endian: remove unused functions
-  
-  Closes #1529
-
-- test1537: dedicated tests of the URL (un)escape API calls
-  
-  Closes #1530
-
-- coverage: run event tests too
-  
-  ... the torture ones are commented out only because they are slooooow.
-
-- build: provide easy code coverage measuring
-  
-  Closes #1528
-
-- typecheck-gcc.h: check CURLINFO_CERTINFO
-  
-  ... and update the certinfo.c example accordingly.
-  
-  Fixes https://github.com/curl/curl/issues/846
-
-- typecheck-gcc.h: check CURLINFO_TLS_SSL_PTR and CURLINFO_TLS_SESSION
-  
-  ... so that they get the required "struct curl_tlssessioninfo **"
-  arguments.
-
-- typecheck-gcc.h: separate getinfo slist checks from other pointers
-  
-  Fixes #1524
-
-Marcel Raad (1 Jun 2017)
-- curl-compilers.m4: escape square brackets in regex
-  
-  Otherwise, they are removed in the final configure file.
-  Also changed sed to "$SED" like in most other calls in this file.
-
-- curl-compilers.m4: fix compiler_num for clang
-  
-  "clang -dumpversion" always returns "4.2.1", the GCC version that clang
-  was initially compatible to. Use "clang -v" instead, which returns the
-  actual clang version.
-  
-  Fixes https://github.com/curl/curl/issues/1522
-  Closes https://github.com/curl/curl/pull/1523
-
-Daniel Stenberg (31 May 2017)
-- examples/externalsocket.c: s/closesocket/closecb
-  
-  ... since closesocket is a function in WinSock.
-  
-  Reported-by: Marcel Raad
-  Bug: https://github.com/curl/curl/commit/55fcb8485914700132fd1854c9509b66c955efbe#co
-  mmitcomment-22347818
-
-Marcel Raad (31 May 2017)
-- lib583: fix compiler warning
-  
-  Use CURLMcode for variable 'res' and cast to int where necessary
-  instead of the other way around. Other tests do the same.
-  
-  This fixes the following clang warning:
-  lib583.c:68:15: warning: cast from function call of type 'CURLMcode' to
-  non-matching type 'int' [-Wbad-function-cast]
-
-Daniel Stenberg (31 May 2017)
-- CURLOPT_SSH_KEY*.3: typos
-  
-  Reported-by: Gisle Vanem
-
-- CURLOPT_STREAM_DEPENDS.3: typo
-
-- CURLOPT_FNMATCH_FUNCTION.3: also modified example to avoid fcpp issues
-
-- CURLOPT_FNMATCH_DATA.3: modified example to avoid fcpp issues
-
-- opts: more than 100 more examples for man pages...
-
-- libtest/lib574.c: use correct callback proto
-
-- examples/sampleconv.c: indent changes, made callbacks static
-
-- example/externalsocket.c: make it use CLOSESOCKETFUNCTION too
-
-Marcel Raad (31 May 2017)
-- curl-compilers.m4: enable -Wshift-sign-overflow for clang
-  
-  clang 2.9+ supports -Wshift-sign-overflow, which warns about undefined
-  behavior on signed left shifts when shifting by too many places.
-  
-  Ref: https://github.com/curl/curl/issues/1516
-  Closes https://github.com/curl/curl/pull/1517
-
-Daniel Stenberg (31 May 2017)
-- CURLOPT_PROXY.3: fix test 1140 breakage
-
-Jay Satiro (31 May 2017)
-- build-wolfssl: Sync config with wolfSSL 3.11
-  
-  wolfSSL configure script relevant changes from 3.10 to 3.11:
-  
-  - Async threading support added; disabled by default without async
-    crypto, which continues to be disabled by default.
-  
-  wolfSSL configure script relevant changes from 3.11 to 3.11.1 (beta):
-  
-  - TLS 1.3 beta support added; disabled by default.
-  
-  For experimenting I put in a comment block the defines needed to enable
-  TLS 1.3 support (ie the equivalent of --enable-tls13).
-
-Daniel Stenberg (30 May 2017)
-- opts: more examples added to man pages
-
-- docs: clarify NO_PROXY further
-  
-  Fixes #1208
-
-- CURLOPT_PROXY.3: describe the environment variables more
-
-- transfer: init the infilesize from the postfields...
-  
-  ... with a strlen() if no size was set, and do this in the pretransfer
-  function so that the info is set early. Otherwise, the default strlen()
-  done on the POSTFIELDS data never sets state.infilesize.
-  
-  Reported-by: Vincas Razma
-  Bug: #1294
-
-Jay Satiro (29 May 2017)
-- test557: fix ubsan runtime error due to int left shift
-  
-  - Test curl_msnprintf negative int width arg using INT_MIN instead of
-    1 << 31 which is undefined behavior.
-  
-  Closes https://github.com/curl/curl/issues/1516
-
-- mbedtls: fix variable shadow warning
-  
-  vtls/mbedtls.c:804:69: warning: declaration of 'entropy' shadows a global declaration [-Wshadow]
-   CURLcode Curl_mbedtls_random(struct Curl_easy *data, unsigned char *entropy,
-                                                                       ^~~~~~~
-
-Daniel Stenberg (29 May 2017)
-- RELEASE-NOTES: synced with 3aaac8c2f
-
-Dan Fandrich (28 May 2017)
-- tests: removed some redundant empty <stdout> sections
-
-- runtests.pl: removed <precommand> feature
-  
-  This hasn't been used in over a decade. <precheck> can still be used to
-  run commands before the main test.
-
-Daniel Stenberg (27 May 2017)
-- opts: more examples added in option man pages
-
-Dan Fandrich (27 May 2017)
-- runtests.pl: removed unused arguments to valgrindparse
-
-Daniel Stenberg (25 May 2017)
-- TODO: 6.4 is done, send telnet data in chunks
-
-- [Phil Crump brought this change]
-
-  docs/CURLOPT_SSLVERSION.3: Correct define name in example
-  
-  Closes #1509
-
-- ssh: fix 'left' may be used uninitialized
-  
-  follow-up to f31760e63b4e
-  
-  Reported-by: Michael Kaufmann
-  Bug: https://github.com/curl/curl/pull/1495#issuecomment-303982793
-
-Michael Kaufmann (24 May 2017)
-- time: fix type conversions and compiler warnings
-  
-  Fix bugs and compiler warnings on systems with 32-bit long and
-  64-bit time_t.
-  
-  Reviewed-by: Daniel Stenberg
-  
-  Closes #1499
-
-Marcel Raad (24 May 2017)
-- examples: fix Wimplicit-fallthrough warnings
-  
-  This is contained in -Wextra with GCC 7.
-
-Daniel Stenberg (24 May 2017)
-- [Anatol Belski brought this change]
-
-  winbuild: fix the nghttp2 build
-  
-  Closes #1321
-
-GitHub (24 May 2017)
-- [Sergei Nikulov brought this change]
-
-  LDAP: documentation update per #878 changes (#1506)
-
-Daniel Stenberg (23 May 2017)
-- redirect: store the "would redirect to" URL when max redirs is reached
-  
-  Test 1261 added to verify.
-  
-  Reported-by: Lloyd Fournier
-  
-  Fixes #1489
-  Closes #1497
-
-GitHub (24 May 2017)
-- [Sergei Nikulov brought this change]
-
-  LDAP: fixed checksrc issue
-
-- [Sergei Nikulov brought this change]
-
-  LDAP: using ldap_bind_s on Windows with methods (#878)
-  
-  * LDAP: using ldap_bind_s on Windows with methods(BASIC/DIGEST/NTLM/AUTONEG)
-  
-  * ldap: updated per build options handling
-  
-  * ldap: fixed logic for auth selection
-
-Daniel Stenberg (23 May 2017)
-- [Akhil Kedia brought this change]
-
-  cmake: fix build on Ubuntu 14.04
-  
-  Fixed a syntax error with setting cache variables (The type and
-  docstring were missing), resulting in build errors.  Quoted the
-  CURL_CA_PATH and CURL_CA_BUNDLE otherwise the path was written without
-  quotes in C code, resulting in build errors.
-  
-  Closes #1503
-  
-  Signed-off-by: Akhil <akhil.kedia@samsung.com>
-
-- url: fix declaration of 'pipe' shadows a global declaration
-  
-  follow-up to 4cdb1be8246c
-
-Kamil Dudka (22 May 2017)
-- memdebug: fix compilation failure
-  
-  .... caused by a typo in the last commit (fixing issue #1504):
-  
-  memdebug.c: In function ‘curl_fclose’:
-  memdebug.c:444:3: error: implicit declaration of function
-  ‘DEBUGDEBUGASSERT’ [-Werror=implicit-function-declaration]
-
-Daniel Stenberg (22 May 2017)
-- assert: avoid, use DEBUGASSERT instead!
-  
-  ... as it does extra checks to actually work.
-  
-  Reported-by: jonrumsey at github
-  Fixes #1504
-
-- [Simon Warta brought this change]
-
-  cmake: remove unused variables: GNUTLS_ENABLED, NSS_ENABLED
-
-- [Simon Warta brought this change]
-
-  cmake: remove CURL_CA_BUNDLE from cmake TODO
-
-- [Simon Warta brought this change]
-
-  cmake: auto detection of CURL_CA_BUNDLE/CURL_CA_PATH
-  
-  Closes #1461
-
-- [Simon Warta brought this change]
-
-  cmake: add CURL_CA_BUNDLE/CURL_CA_FALLBACK/CURL_CA_PATH options
-
-- [Simon Warta brought this change]
-
-  cmake: Add CURL_CA_FALLBACK to curl_config.h.cmake
-  
-  This is for symmetry with the autoconf generated curl_config.h.in
-
-- RELEASE-NOTES: synced with 052a14e3c
-
-Michael Kaufmann (20 May 2017)
-- tests: stabilize test 1034
-  
-  Pass the invalid domain name on stdin. On some systems, the test
-  framework cannot pass invalid UTF-8 sequences on the command line.
-  
-  Closes #1488
-
-Daniel Stenberg (20 May 2017)
-- ssh: ignore timeouts during disconnect
-  
-  ... as otherwise it risks not cleaning up the libssh2 handle properly
-  which leads to memory leak!
-  
-  Assisted-by: Joel Depooter
-  
-  Closes #1495
-  Closes #1479
-  
-  Bug: https://curl.haxx.se/mail/lib-2017-04/0024.html
-
-- ghiper.c/hiperfifo.c: add comment about missing timer functionality
-  
-  It takes someone to read up on the APIs of these libraries to figure out
-  how to do this correctly.
-  
-  Reported-by: Michael Kaufmann
-  
-  Closes #1253
-
-- asiohiper.cpp / evhiperfifo.c: deal with negative timerfunction input
-  
-  That means delete the timer.
-  
-  Reported-by: Michael Kaufmann
-  Ref: #1253
-
-- cmdline-opts/write-out.d: s/-L/--location
-  
-  Since the man page generator wants the long option name version to
-  generate the proper output.
-
-- [Bernhard M. Wiedemann brought this change]
-
-  mkhelp.pl: do not add current time into curl binary
-  
-  ... as part of hugehelpgz rodata to make build reproducible.
-  
-  See https://reproducible-builds.org/ for why this is good
-  
-  Closes #1490
-
-- oauth2-bearer.d: mention the <token> argument
-
-Nick Zitzmann (16 May 2017)
-- darwinssl: Fix exception when processing a client-side certificate file
-  if no error was raised by the API but the SecIdentityRef was null
-  
-  Fixes #1450
-
-Daniel Stenberg (16 May 2017)
-- curl_sasl: fix build error with CURL_DISABLE_CRYPTO_AUTH + USE_NTLM
-  
-  Reported-by: wyattoday at github
-  Fixes #1487
-
-- docs/cmdline-opts/config.d: edit for language
-
-- RELEASE-NOTES: synced with eb16305e6
-
-- [Travis Burtrum brought this change]
-
-  SecureTransport/DarwinSSL: Implement public key pinning
-  
-  Closes #1400
-
-- man pages: fix example syntax errors
-  
-  follow-up to 5ddad099b42b50
-
-- docs/libcurl/opts: added more examples in man pages
-
-- CURLOPT_HTTPPROXYTUNNEL: clarify, add example
-
-- curl: show the libcurl release date in --version output
-  
-  ... and support and additional "security patched" date for those who
-  enhance older versions that way. Pass on the define CURL_PATCHSTAMP with
-  a date for that.
-  
-  Building with non-release headers shows the date as [unreleased].
-  
-  Also: this changes the date format generated in the curlver.h file to be
-  "YYYY-MM-DD" (no name of the day or month, no time, no time zone) to
-  make it easier on the eye and easier to parse. Example (new) date
-  string: 2017-05-09
-  
-  Suggested-by: Brian Childs
-  
-  Closes #1474
-
-Dan Fandrich (13 May 2017)
-- url.c: add a compile-time check that CURL_MAX_WRITE_SIZE is large enough
-  
-  Some code (e.g. Curl_fillreadbuffer) assumes that this buffer is not
-  exceedingly tiny and will break if it is. This same check is already
-  done at run time in the CURLOPT_BUFFERSIZE option.
-
-- lib510: don't write past the end of the buffer if it's too small
-
-- tests: added missing keywords "chunked Transfer-Encoding"
-
-Daniel Stenberg (13 May 2017)
-- THANKS: add a few missing names
-  
-  ... I found them in the commit logs from the early years
-
-Dan Fandrich (13 May 2017)
-- tests: made a couple of prechecks consistent with others
-  
-  Also removed a TODO suggesting caching the precheck results. Tests
-  showed this would save about 0.1 sec on the total test run time on a
-  relatively modern system, an unnoticeable gain at the cost of longer and
-  more complicated code. There would also be a danger that a cached test
-  result would be inappropriately returned, such as when other test
-  dependencies (like environment variables) are different or when the
-  precheck causes side effects (like filesystem changes).
-
-Daniel Stenberg (12 May 2017)
-- FAQ: add 7.4 to toc
-  
-  ... and delete trailing whitespace
-  
-  Fixes #1484
-
-- multi: remove leftover debug infof() calls from e9fd794a6
-
-- pipeline: fix mistakenly trying to pipeline POSTs
-  
-  The function IsPipeliningPossible() would return TRUE if either
-  pipelining OR HTTP/2 were possible on a connection, which would lead to
-  it returning TRUE even for POSTs on HTTP/1 connections.
-  
-  It now returns a bitmask so that the caller can differentiate which kind
-  the connection allows.
-  
-  Fixes #1481
-  Closes #1483
-  Reported-by: stootill at github
-
-Jay Satiro (12 May 2017)
-- [Ron Eldor brought this change]
-
-  mbedtls: Support server renegotiation request
-  
-  Tested with servers: IIS 7.5; OpenSSL 1.0.2.
-  
-  Closes https://github.com/curl/curl/pull/1475
-
-Marcel Raad (11 May 2017)
-- cookie_interface: fix -Wcomma warning
-  
-  clang 5.0 complains:
-  possible misuse of comma operator here [-Wcomma]
-
-- formdata: fix -Wcomma warning
-  
-  clang 5.0 complains:
-  possible misuse of comma operator here [-Wcomma]
-  
-  Change the comma to a semicolon to fix that.
-
-Daniel Stenberg (10 May 2017)
-- multi: use a fixed array of timers instead of malloc
-  
-  ... since the total amount is low this is faster, easier and reduces
-  memory overhead.
-  
-  Also, Curl_expire_done() can now mark an expire timeout as done so that
-  it never times out.
-  
-  Closes #1472
-
-- multi: assign IDs to all timers and make each timer singleton
-  
-   A) reduces the timeout lists drastically
-  
-   B) prevents a lot of superfluous loops for timers that expires "in vain"
-      when it has actually already been extended to fire later on
-
-- [Richard Hsu brought this change]
-
-  tests: remove superfluous test 1399
-  
-  @MarcelRaad noted that `test1399` causes infinite loop on MinGW.
-  Looking into this, seems like it is related to how Windows handles
-  CRLF. See https://github.com/curl/curl/commit/9e093f by @mback2k.
-  Removing `test1399` as it's identical to `test1326` then with such a
-  fix.
-  
-  Test 1399 was broughy by commit 862b02f8947039e
-  
-  Closes #1478
-
-Dan Fandrich (9 May 2017)
-- tests: make test file names more unique
-  
-  Include the test number in the names of files written out by tests to
-  reduce the chance of accidental duplication and to make it more clear
-  which test is associated with which file.
-
-- tests: removed redundant --trace-ascii arguments
-  
-  This is already added by the test suite; it's not clear why all these
-  tests had it, unless it's cargo-culting.
-
-Marcel Raad (9 May 2017)
-- tool: fix remaining -Wcast-qual warnings
-  
-  Avoid casting away low-level const.
-
-Daniel Stenberg (9 May 2017)
-- formboundary: convert assert into run-time check
-  
-  ... to really make sure the boundary fits in the target buffer.
-  
-  Fixes unused parameter 'buflen' warning.
-  
-  Reported-by: Michael Kaufmann
-  Bug: https://github.com/curl/curl/pull/1468#issuecomment-300078754
-
-Dan Fandrich (9 May 2017)
-- tests: list the primary server first in the server section
-
-Daniel Stenberg (8 May 2017)
-- curl: generate the --help output
-  
-  ... using the docs/cmdline-opts/gen.pl script, so that we get all the
-  command line option documentation from the same source.
-  
-  The generation of the list has to be done manually and pasted into the
-  source code.
-  
-  Closes #1465
-
-- tests: updated for modified fake random
-
-- [Jay Satiro brought this change]
-
-  rand: treat fake entropy the same regardless of endianness
-  
-  When the random seed is purposely made predictable for testing purposes
-  by using the CURL_ENTROPY environment variable, process that data in an
-  endian agnostic way so the the initial random seed is the same
-  regardless of endianness.
-  
-  - Change Curl_rand to write to a char array instead of int array.
-  
-  - Add Curl_rand_hex to write random hex characters to a buffer.
-  
-  Fixes #1315
-  Closes #1468
-  
-  Co-authored-by: Daniel Stenberg
-  Reported-by: Michael Kaufmann
-
-Dan Fandrich (8 May 2017)
-- tests: give each stunnel.conf file a unique name
-  
-  Otherwise, subsequent uses of stunnel overwrite the configuration file
-  of previous invocations so they can no longer be inspected.
-
-Marcel Raad (8 May 2017)
-- tool_msgs: remove wrong cast
-  
-  Commit 481e0de00a9003b9c5220b120e3fc302d9b0932d changed the variable
-  type from int to size_t, so don't cast the result of strlen to int
-  anymore.
-
-- tftpd: fix signed/unsigned mismatch warnings
-  
-  alarm's argument is unsigned.
-
-- libtest: fix MinGW-w64 warnings
-  
-  long is 32 bits while size_t is 64 bits on MinGW-w64, so
-  typecheck-gcc.h complains when using size_t for a long option.
-  Also, curl_socket_t is unsigned long long rather than int.
-
-Daniel Stenberg (8 May 2017)
-- curl.1: depend the build on the Makefile.inc too
-  
-  ... to also make it update when we remove files, like we did for
-  --environment in commit a8e388dd1095.
-
-- RELEASE-NOTES: synced with e3f84efc32d6b01a
-
-- runtests: fix "use of undefined value" warning in -R handling
-
-Marcel Raad (8 May 2017)
-- test537: use correct variable type
-  
-  Avoids narrowing conversion warnings because rlim_t is usually
-  unsigned long.
-  
-  Closes https://github.com/curl/curl/pull/1469
-
-- sendrecv: fix MinGW-w64 warning
-  
-  The first argument to select is an int, while curl_socket_t is
-  unsigned long long when using WinSock. It's ignored anyway [1].
-  
-  [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms740141.aspx
-
-- tool_parsecfg: fix -Wcast-qual warning
-  
-  Don't convert string literal to char * before assigning it to
-  const char *.
-
-- asyn-thread: fix unused macro warnings
-  
-  Don't do anything in this file if CURLRES_THREADED is not defined.
-
-- tftp: silence bad-function-cast warning
-  
-  The cases this warns about are handled elsewhere, so just use an
-  intermediate variable to silence the warning.
-
-Daniel Stenberg (7 May 2017)
-- [canavan at github brought this change]
-
-  buildconf: fix hang on IRIX
-  
-  Apparently, /usr/bin/m4 ignores the --version parameter and waits for
-  input from stdin.
-  
-  Fixes #1471
-
-- opts: fix bad example formatting \n => \\n
-  
-  ...to render properly nroff.
-
-- opts: examples added to 8 more libcurl option man pages
-
-- curl: remove tool_writeenv.[ch]
-  
-  ... and USE_ENVIRONMENT and --environment. It was once added for RISC OS
-  support and its platform specific behavior has been annoying ever
-  since. Added in commit c3c8bbd3b2688da8e, mostly unchanged since
-  then. Most probably not actually used for years.
-  
-  Closes #1463
-
-Dan Fandrich (6 May 2017)
-- runtests.pl: simplify the datacheck read section
-  
-  Also, document that numbered datacheck sections are possible.
-
-Marcel Raad (5 May 2017)
-- tests: fix -Wcast-qual warnings
-  
-  Avoid casting string literals to non-const char *.
-
-Daniel Stenberg (5 May 2017)
-- docs/opts: 24 more man pages now have examples
-
-- docs/opts: 23 more man pages now have examples
-
-- tests/server: run checksrc by default in debug-builds
-
-- curl_slist_append.3: clarify a NULL input creates a new list
-
-Marcel Raad (5 May 2017)
-- unit1305: fix compiler warning
-  
-  calloc and ai_addrlen expect different (usually unsigned) types.
-
-Daniel Stenberg (5 May 2017)
-- runtests: use -R for random order
-  
-  Suggested-by: Dan Fandrich
-
-- runtests: add -o to run test cases in scrambled order
-  
-  ... instead of numerical order.
-  
-  Closes #1466
-
-Dan Fandrich (4 May 2017)
-- sockfilt.c: shortened too long line
-
-Marcel Raad (4 May 2017)
-- tests/server: make string literals const
-  
-  assign string literals to const char * instead of char * in order to
-  avoid a lot of these warnings:
-  cast from 'const char *' to 'char *' drops const qualifier
-  [-Wcast-qual]
-
-Dan Fandrich (4 May 2017)
-- schannel: return a more specific error code for SEC_E_UNTRUSTED_ROOT
-
-- test557: set a known good numeric locale
-  
-  Windows does not allow setting the locale with environment variables (as
-  the test attempted to do), so the test failed when run with a user
-  locale that has a comma as radixchar. Changed the test to call
-  setlocale() explicitly to ensure that a known working locale is set even
-  on Windows.
-
-Daniel Stenberg (4 May 2017)
-- curl: fix warning "comma at end of enumerator list"
-
-- test559: verify use of minimum CURLOPT_BUFFERSIZE
-
-Marcel Raad (4 May 2017)
-- curl_setup_once: use SEND_QUAL_ARG2 for swrite
-  
-  SEND_QUAL_ARG2 had to be set, but was never used. Use it in swrite to
-  avoid warnings about casting away low-level const.
-  
-  Closes https://github.com/curl/curl/pull/1464
-
-Daniel Stenberg (4 May 2017)
-- CURLINFO_REDIRECT_URL.3: add example
-
-- CURLINFO_EFFECTIVE_URL.3: add example
-
-Marcel Raad (3 May 2017)
-- lib: fix compiler warnings
-  
-  Fix the following warnings when building the tests by using the correct
-  types:
-  cast from 'const char *' to 'void *' drops const qualifier
-  [-Wcast-qual]
-  implicit conversion changes signedness [-Wsign-conversion]
-
-- typecheck-gcc: add support for CURLINFO_SOCKET
-  
-  Closes https://github.com/curl/curl/pull/1452
-
-- typecheck-gcc: add missing string options
-  
-  Closes https://github.com/curl/curl/pull/1452
-
-Daniel Stenberg (3 May 2017)
-- abstract-unix-socket.d: shorten the help text to fit within 79 cols
-
-- RELEASE-NOTES: synced with 862b02f89
-
-- [Richard Hsu brought this change]
-
-  Telnet: Write full buffer instead of byte-by-byte
-  
-  Previous TODO wanting to write in chunks. We should support writing more
-  at once since some TELNET servers may respond immediately upon first
-  byte written such as WHOIS servers.
-  
-  Closes #1389
-
-- curl: non-boolean command line args reject --no- prefixes
-  
-  ... and instead properly respond with an error message to the user
-  instead of silently ignoring.
-  
-  Fixes #1453
-  Closes #1458
-
-Marcel Raad (2 May 2017)
-- testpart: remove _MPRINTF_REPLACE
-  
-  Support for _MPRINTF_REPLACE in mprintf.h was removed in
-  55452ebdff47f98bf3cc383f1dfc3623fcaefefd, replaced with curl_printf.h.
diff --git a/CMake/Utilities.cmake b/CMake/Utilities.cmake
index 8b6276d..005b166 100644
--- a/CMake/Utilities.cmake
+++ b/CMake/Utilities.cmake
@@ -19,7 +19,7 @@
   set(${LIST_NAME} "${NEW_LIST_SPACE}" PARENT_SCOPE)
 endfunction()
 
-# Convinience function that does the same as LIST(FIND ...) but with a TRUE/FALSE return value.
+# Convenience function that does the same as LIST(FIND ...) but with a TRUE/FALSE return value.
 # Ex: IN_STR_LIST(MY_LIST "Searched item" WAS_FOUND)
 function(IN_STR_LIST LIST_NAME ITEM_SEARCHED RETVAL)
   list(FIND ${LIST_NAME} ${ITEM_SEARCHED} FIND_POS)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 490cc19..bf25b1f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -232,16 +232,6 @@
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
 endif(BORLAND)
 
-if(CURL_WERROR)
-  if(MSVC_VERSION)
-    set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /WX")
-    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /WX")
-  else()
-    # this assumes clang or gcc style options
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
-  endif()
-endif(CURL_WERROR)
-
 # If we are on AIX, do the _ALL_SOURCE magic
 if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
   set(_ALL_SOURCE 1)
@@ -295,6 +285,7 @@
 if(WIN32)
   check_library_exists_concat("ws2_32" getch        HAVE_LIBWS2_32)
   check_library_exists_concat("winmm"  getch        HAVE_LIBWINMM)
+  list(APPEND CURL_LIBS "advapi32")
 endif()
 
 # check SSL libraries
@@ -521,6 +512,18 @@
   endif()
 endif()
 
+option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF)
+set(HAVE_BROTLI OFF)
+if(CURL_BROTLI)
+  find_package(BROTLI QUIET)
+  if(BROTLI_FOUND)
+    set(HAVE_BROTLI ON)
+    list(APPEND CURL_LIBS ${BROTLI_LIBRARIES})
+    include_directories(${BROTLI_INCLUDE_DIRS})
+    list(APPEND CMAKE_REQUIRED_INCLUDES ${BROTLI_INCLUDE_DIRS})
+  endif()
+endif()
+
 #libSSH2
 option(CMAKE_USE_LIBSSH2 "Use libSSH2" ON)
 mark_as_advanced(CMAKE_USE_LIBSSH2)
@@ -1115,6 +1118,15 @@
   endif(CMAKE_C_FLAGS MATCHES "/W[0-4]")
 endif(MSVC)
 
+if(CURL_WERROR)
+  if(MSVC_VERSION)
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
+  else()
+    # this assumes clang or gcc style options
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
+  endif()
+endif(CURL_WERROR)
+
 # Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
 function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
   file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
diff --git a/README.version b/README.version
index e54612c..a39a8a5 100644
--- a/README.version
+++ b/README.version
@@ -1,5 +1,5 @@
-URL: https://curl.haxx.se/download/curl-7.57.0.tar.gz
-Version: 7.57.0
+URL: https://curl.haxx.se/download/curl-7.60.0.tar.gz
+Version: 7.60.0
 License: MIT
 License File: NOTICE
 BugComponent: 31714
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index eefd0c3..482d4f1 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,100 +1,130 @@
-Curl and libcurl 7.58.0
+Curl and libcurl 7.60.0
 
- Public curl releases:         172
- Command line options:         211
- curl_easy_setopt() options:   249
+ Public curl releases:         174
+ Command line options:         214
+ curl_easy_setopt() options:   255
  Public functions in libcurl:  74
- Contributors:                 1685
+ Contributors:                 1741
 
 This release includes the following changes:
 
- o new libssh-powered SSH SCP/SFTP back-end
- o curl-config: add --ssl-backends [10]
+ o Add CURLOPT_HAPROXYPROTOCOL, support for the HAProxy PROXY protocol [10]
+ o Add --haproxy-protocol for the command line tool [10]
+ o Add CURLOPT_DNS_SHUFFLE_ADDRESSES, shuffle returned IP addresses [12]
 
 This release includes the following bugfixes:
 
- o http2: fix incorrect trailer buffer size [40]
- o http: prevent custom Authorization headers in redirects [55]
- o travis: add boringssl build [1]
- o examples/xmlstream.c: don't switch off CURL_GLOBAL_SSL [2]
- o SSL: Avoid magic allocation of SSL backend specific data [3]
- o lib: don't export all symbols, just everything curl_* [4]
- o libssh2: send the correct CURLE error code on scp file not found
- o libssh2: return CURLE_UPLOAD_FAILED on failure to upload
- o openssl: enable pkcs12 in boringssl builds [5]
- o libssh2: remove dead code from SSH_SFTP_QUOTE [6]
- o sasl_getmesssage: make sure we have a long enough string to pass [7]
- o conncache: fix several lock issues [8]
- o threaded-shared-conn.c: new example
- o conncache: only allow multiplexing within same multi handle [9]
- o configure: check for netinet/in6.h [11]
- o URL: tolerate backslash after drive letter for FILE: [12]
- o openldap: add commented out debug possibilities [13]
- o include: get netinet/in.h before linux/tcp.h [14]
- o CONNECT: keep close connection flag in http_connect_state struct [15]
- o BINDINGS: another PostgreSQL client
- o curl: limit -# update frequency for unknown total size [16]
- o configure: add AX_CODE_COVERAGE only if using gcc [17]
- o curl.h: remove incorrect comment about ERRORBUFFER
- o openssl: improve data-pending check for https proxy [18]
- o curl: remove __EMX__ #ifdefs [19]
- o CURLOPT_PRIVATE.3: fix grammar [20]
- o sftp: allow quoted commands to use relative paths [21]
- o CURLOPT_DNS_CACHE_TIMEOUT.3: see also CURLOPT_RESOLVE
- o RESOLVE: output verbose text when trying to set a duplicate name
- o openssl: Disable file buffering for Win32 SSLKEYLOGFILE [22]
- o multi_done: prune DNS cache [23]
- o tests: update .gitignore for libtests
- o tests: mark data files as non-executable in git
- o CURLOPT_DNS_LOCAL_IP4.3: fixed the "SEE ALSO" to not self-reference
- o curl.1: documented two missing valid exit codes
- o curl.1: mention http:// and https:// as valid proxy prefixes
- o vtls: replaced getenv() with curl_getenv() [24]
- o setopt: less *or equal* than INT_MAX/1000 should be fine [25]
- o examples/smtp-mail.c: use separate defines for options and mail
- o curl: support >256 bytes warning messsages [26]
- o conncache: fix a return code
- o krb5: fix a potential access of uninitialized memory
- o rand: add a clang-analyzer work-around
- o CURLOPT_READFUNCTION.3: refer to argument with correct name [27]
- o brotli: allow compiling with version 0.6.0
- o content_encoding: rework zlib_inflate [28]
- o curl_easy_reset: release mime-related data [29]
- o examples/rtsp: fix error handling macros [30]
- o build-openssl.bat: Added support for VC15
- o build-wolfssl.bat: Added support for VC15
- o build: Added Visual Studio 2017 project files
- o winbuild: Added support for VC15
- o curl: Support size modifiers for --max-filesize [32]
- o examples/cacertinmem: ignore cert-already-exists error [33]
- o brotli: data at the end of content can be lost [34]
- o curl_version_info.3: call the argument 'age' [35]
- o openssl: fix memory leak of SSLKEYLOGFILE filename
- o build: remove HAVE_LIMITS_H check [36]
- o --mail-rcpt: fix short-text description
- o scripts: allow all perl scripts to be run directly [37]
- o progress: calculate transfer speed on milliseconds if possible [38]
- o system.h: check __LONG_MAX__ for defining curl_off_t [31]
- o easy: fix connection ownership in curl_easy_pause [39]
- o setopt: reintroduce non-static Curl_vsetopt() for OS400 support [41]
- o setopt: fix SSLVERSION to allow CURL_SSLVERSION_MAX_ values [42]
- o configure.ac: append extra linker flags instead of prepending them [43]
- o HTTP: bail out on negative Content-Length: values [44]
- o docs: comment about CURLE_READ_ERROR returned by curl_mime_filedata
- o mime: clone mime tree upon easy handle duplication [45]
- o openssl: enable SSLKEYLOGFILE support by default [46]
- o smtp/pop3/imap_get_message: decrease the data length too... [47]
- o CURLOPT_TCP_NODELAY.3: fix typo [48]
- o SMB: fix numeric constant suffix and variable types [49]
- o ftp-wildcard: fix matching an empty string with "*[^a]" [50]
- o curl_fnmatch: only allow 5 '*' sections in a single pattern
- o openssl: fix potential memory leak in SSLKEYLOGFILE logic
- o SSH: Fix state machine for ssh-agent authentication [51]
- o examples/url2file.c: add missing curl_global_cleanup() call [52]
- o http2: don't close connection when single transfer is stopped [53]
- o libcurl-env.3: first version
- o curl: progress bar refresh, get width using ioctl() [54]
- o CONNECT_TO: fail attempt to set an IPv6 numerical without IPv6 support [56]
+ o FTP: shutdown response buffer overflow CVE-2018-1000300 [88]
+ o RTSP: bad headers buffer over-read CVE-2018-1000301 [89]
+ o FTP: fix typo in recursive callback detection for seeking [1]
+ o test1208: marked flaky
+ o HTTP: make header-less responses still count correct body size [2]
+ o user-agent.d:: mention --proxy-header as well [3]
+ o http2: fixes typo [4]
+ o cleanup: misc typos in strings and comments [5]
+ o rate-limit: use three second window to better handle high speeds [6]
+ o examples/hiperfifo.c: improved
+ o pause: when changing pause state, update socket state [7]
+ o multi: improved pending transfers handling => improved performance [8]
+ o curl_version_info.3: fix ssl_version description [9]
+ o add_handle/easy_perform: clear errorbuffer on start if set [11]
+ o darwinssl: fix iOS build [13]
+ o cmake: add support for brotli [14]
+ o parsedate: support UT timezone [15]
+ o vauth/ntlm.h: fix the #ifdef header guard
+ o lib/curl_path.h: added #ifdef header guard
+ o vauth/cleartext: fix integer overflow check [16]
+ o CURLINFO_COOKIELIST.3: made the example not leak memory
+ o cookie.d: mention that "-" as filename means stdin [17]
+ o CURLINFO_SSL_VERIFYRESULT.3: fixed the example [18]
+ o http2: read pending frames (including GOAWAY) in connection-check [19]
+ o timeval: remove compilation warning by casting [20]
+ o cmake: avoid warn-as-error during config checks [21]
+ o travis-ci: enable -Werror for CMake builds [22]
+ o openldap: fix for NULL return from ldap_get_attribute_ber() [23]
+ o threaded resolver: track resolver time and set suitable timeout values [24]
+ o cmake: Add advapi32 as explicit link library for win32 [25]
+ o docs: fix CURLINFO_*_T examples use of CURL_FORMAT_CURL_OFF_T [26]
+ o test1148: set a fixed locale for the test [27]
+ o cookies: when reading from a file, only remove_expired once [28]
+ o cookie: store cookies per top-level-domain-specific hash table [29]
+ o openssl: fix build with LibreSSL 2.7 [30]
+ o tls: fix mbedTLS 2.7.0 build + handle sha256 failures [31]
+ o openssl: RESTORED verify locations when verifypeer==0 [32]
+ o file: restore old behavior for file:////foo/bar URLs [33]
+ o FTP: allow PASV on IPv6 connections when a proxy is being used [34]
+ o build-openssl.bat: allow custom paths for VS and perl [35]
+ o winbuild: make the clean target work without build-type [36]
+ o build-openssl.bat: Refer to VS2017 as VC14.1 instead of VC15 [37]
+ o curl: retry on FTP 4xx, ignore other protocols [38]
+ o configure: detect (and use) sa_family_t [39]
+ o examples/sftpuploadresume: Fix Windows large file seek
+ o build: cleanup to fix clang warnings/errors [40]
+ o winbuild: updated the documentation [41]
+ o lib: silence null-dereference warnings [42]
+ o travis: bump to clang 6 and gcc 7 [43]
+ o travis: build libpsl and make builds use it [44]
+ o proxy: show getenv proxy use in verbose output [45]
+ o duphandle: make sure CURLOPT_RESOLVE is duplicated [46]
+ o all: Refactor malloc+memset to use calloc [47]
+ o checksrc: Fix typo [48]
+ o system.h: Add sparcv8plus to oracle/sunpro 32-bit detection [49]
+ o vauth: Fix typo [50]
+ o ssh: show libSSH2 error code when closing fails [51]
+ o test1148: tolerate progress updates better [52]
+ o urldata: make service names unconditional [53]
+ o configure: keep LD_LIBRARY_PATH changes local [54]
+ o ntlm_sspi: fix authentication using Credential Manager [55]
+ o schannel: add client certificate authentication [56]
+ o winbuild: Support custom devel paths for each dependency [57]
+ o schannel: add support for CURLOPT_CAINFO [58]
+ o http2: handle on_begin_headers() called more than once [59]
+ o openssl: support OpenSSL 1.1.1 verbose-mode trace messages [60]
+ o openssl: fix subjectAltName check on non-ASCII platforms [61]
+ o http2: avoid strstr() on data not zero terminated [62]
+ o http2: clear the "drain counter" when a stream is closed [63]
+ o http2: handle GOAWAY properly [64]
+ o tool_help: clarify --max-time unit of time is seconds
+ o curl.1: clarify that options and URLs can be mixed [65]
+ o http2: convert an assert to run-time check [66]
+ o curl_global_sslset: always provide available backends [67]
+ o ftplistparser: keep state between invokes [68]
+ o Curl_memchr: zero length input can't match
+ o examples/sftpuploadresume: typecast fseek argument to long
+ o examples/http2-upload: expand buffer to avoid silly warning
+ o ctype: restore character classification for non-ASCII platforms [69]
+ o mime: avoid NULL pointer dereference risk [70]
+ o cookies: ensure that we have cookies before writing jar [71]
+ o os400.c: fix checksrc warnings [72]
+ o configure: provide --with-wolfssl as an alias for --with-cyassl
+ o cyassl: adapt to libraries without TLS 1.0 support built-in
+ o http2: get rid of another strstr [73]
+ o checksrc: force indentation of lines after an else [74]
+ o cookies: remove unused macro [75]
+ o CURLINFO_PROTOCOL.3: mention the existing defined names
+ o tests: provide 'manual' as a feature to optionally require [76]
+ o travis: enable libssh2 on both macos and Linux [77]
+ o CURLOPT_URL.3: added ENCODING section
+ o wolfssl: Fix non-blocking connect [78]
+ o vtls: don't define MD5_DIGEST_LENGTH for wolfssl
+ o docs: remove extraneous commas in man pages [79]
+ o URL: fix ASCII dependency in strcpy_url and strlen_url [80]
+ o ssh-libssh.c: fix left shift compiler warning
+ o configure: only check for CA bundle for file-using SSL backends [81]
+ o travis: add an mbedtls build [82]
+ o http: don't set the "rewind" flag when not uploading anything [83]
+ o configure: put CURLDEBUG and DEBUGBUILD in lib/curl_config.h [84]
+ o transfer: don't unset writesockfd on setup of multiplexed conns [85]
+ o vtls: use unified "supports" bitfield member in backends [86]
+ o URLs: fix one more http url [87]
+ o travis: add a build using WolfSSL [90]
+ o openssl: change FILE ops to BIO ops [91]
+ o travis: add build using NSS [92]
+ o smb: reject negative file sizes [93]
+ o cookies: accept parameter names as cookie name [94]
+ o http2: getsock fix for uploads [95]
+ o all over: fixed format specifiers [96]
+ o http2: use the correct function pointer typedef [97]
 
 This release includes the following known bugs:
 
@@ -103,78 +133,120 @@
 This release would not have looked like this without help, code, reports and
 advice from friends like these:
 
-  ahodesuka on github, Andreas Schneider, Basuke Suzuki, Brad Spencer,
-  Chester Liu, cmfrolick on github, Craig de Stigter, Daniel Stenberg,
-  Dan Johnson, David Benjamin, Dima Tisnek, Dimitrios Apostolou,
-  Dmitry Kostjuchenko, Dominik Hölzl, Elliot Saba, Frank Gevaerts, Gisle Vanem,
-  guitared on github, Jan Ehrhardt, Johannes Schindelin, John DeHelian,
-  John Hascall, jonrumsey on github, jungle-boogie on github, Kartik Mahajan,
-  Martin Galvan, Matthew Kerwin, Mattias Fornander, Max Dymond, Michael Felt,
-  Michael Gmelin, Michael Kaufmann, Mikalai Ananenka, Nikos Mavrogiannopoulos,
-  Oleg Pudeyev, Patrick Dawson, Patrick Monnerat, Per Malmberg, Pete Lomax,
-  Rainer Canavan, Randall S. Becker, Ray Satiro, Richard Alcock, Robert Kolcun,
-  Sean MacLennan, Stanislav Zidek, Stepan Broz, Steve Holme,
-  Thomas van Hesteren, Tomas Mraz, W. Mark Kubacki, XhstormR on github,
-  Zachary Seguin, Zhouyihai Ding,
-  (54 contributors)
+  Adam Brown, Alex Baines, Anders Bakken, Anders Roxell, anshnd on github,
+  Bas van Schaik, Bernard Spil, Chris Araman, Christian Schmitz, Cyril B,
+  Dagobert Michelsen, Dan Fandrich, Daniel Gustafsson, Daniel Stenberg,
+  Dan McNulty, Dario Weisser, dasimx on github, David Garske, David L.,
+  Denis Ollier, Dmitry Mikhirev, Dongliang Mu, Don J Olmstead, Eric Gallager,
+  Ernst Sjöstrand, Frank Gevaerts, Gaurav Malhotra, Geeknik Labs, Howard Chu,
+  iz8mbw on github, Jakub Wilk, Jon DeVree, Kees Dekker, Kobi Gurkan,
+  Laurie Clark-Michalek, Lauri Kasanen, Lawrence Matthews, Luz Paz,
+  Marcel Raad, Max Dymond, Michael Kaufmann, Michael Kilburn,
+  Michał Janiszewski, Michal Trybus, Muz Dima, Nikos Tsipinakis, Ori Avtalion,
+  Oumph on github, patelvivekv1993 on github, Patrick Monnerat,
+  Philip Prindeville, Ray Satiro, Rick Deist, Rikard Falkeborn, Sergei Nikulov,
+  Stefan Agner, steini2000 on github, Stephan Mühlstrasser, Sunny Purushe,
+  Terry Wu, Vincas Razma, wncboy on github, Wyatt O'Day, 刘佩东,
+  (64 contributors)
 
         Thanks! (and sorry if I forgot to mention someone)
 
 References to bug reports and discussions on issues:
 
- [1] = https://curl.haxx.se/bug/?i=2118
- [2] = https://curl.haxx.se/mail/lib-2017-12/0000.html
- [3] = https://curl.haxx.se/bug/?i=2119
- [4] = https://curl.haxx.se/bug/?i=2127
- [5] = https://curl.haxx.se/bug/?i=2134
- [6] = https://curl.haxx.se/bug/?i=2143
- [7] = https://curl.haxx.se/bug/?i=2150
- [8] = https://curl.haxx.se/bug/?i=2132
- [9] = https://curl.haxx.se/bug/?i=2152
- [10] = https://curl.haxx.se/bug/?i=2128
- [11] = https://curl.haxx.se/bug/?i=2146
- [12] = https://curl.haxx.se/bug/?i=2154
- [13] = https://curl.haxx.se/bug/?i=2159
- [14] = https://curl.haxx.se/bug/?i=2160
- [15] = https://curl.haxx.se/bug/?i=2088
- [16] = https://curl.haxx.se/bug/?i=2158
- [17] = https://curl.haxx.se/bug/?i=2076
- [18] = https://curl.haxx.se/bug/?i=1916
- [19] = https://curl.haxx.se/bug/?i=2166
- [20] = https://curl.haxx.se/bug/?i=2168
- [21] = https://curl.haxx.se/bug/?i=1900
- [22] = https://github.com/curl/curl/pull/1346#issuecomment-350530901
- [23] = https://curl.haxx.se/bug/?i=2169
- [24] = https://curl.haxx.se/bug/?i=2171
- [25] = https://curl.haxx.se/bug/?i=2173
- [26] = https://curl.haxx.se/bug/?i=2174
- [27] = https://curl.haxx.se/bug/?i=2175
- [28] = https://curl.haxx.se/bug/?i=2068
- [29] = https://curl.haxx.se/mail/lib-2017-12/0060.html
- [30] = https://curl.haxx.se/bug/?i=2185
- [31] = https://curl.haxx.se/bug/?i=2216
- [32] = https://curl.haxx.se/bug/?i=2179
- [33] = https://curl.haxx.se/mail/lib-2017-12/0057.html
- [34] = https://curl.haxx.se/bug/?i=2194
- [35] = https://curl.haxx.se/mail/lib-2017-12/0074.html
- [36] = https://curl.haxx.se/bug/?i=2215
- [37] = https://curl.haxx.se/bug/?i=2222
- [38] = https://curl.haxx.se/bug/?i=2200
- [39] = https://curl.haxx.se/bug/?i=2217
- [40] = https://curl.haxx.se/docs/adv_2018-824a.html
- [41] = https://curl.haxx.se/bug/?i=2230
- [42] = https://curl.haxx.se/bug/?i=2225
- [43] = https://curl.haxx.se/bug/?i=2234
- [44] = https://curl.haxx.se/bug/?i=2212
- [45] = https://curl.haxx.se/bug/?i=2235
- [46] = https://curl.haxx.se/bug/?i=2210
- [47] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5206
- [48] = https://curl.haxx.se/bug/?i=2239
- [49] = https://curl.haxx.se/bug/?i=2211
- [50] = https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5251
- [51] = https://curl.haxx.se/bug/?i=2248
- [52] = https://curl.haxx.se/bug/?i=2245
- [53] = https://curl.haxx.se/bug/?i=2237
- [54] = https://curl.haxx.se/bug/?i=2242
- [55] = https://curl.haxx.se/docs/adv_2018-b3bf.html
- [56] = https://curl.haxx.se/mail/lib-2018-01/0087.html
+ [1] = https://curl.haxx.se/bug/?i=2380
+ [2] = https://curl.haxx.se/bug/?i=2382
+ [3] = https://curl.haxx.se/bug/?i=2381
+ [4] = https://curl.haxx.se/bug/?i=2387
+ [5] = https://curl.haxx.se/bug/?i=2389
+ [6] = https://curl.haxx.se/bug/?i=2386
+ [7] = https://curl.haxx.se/mail/lib-2018-03/0048.html
+ [8] = https://curl.haxx.se/bug/?i=2369
+ [9] = https://curl.haxx.se/bug/?i=2364
+ [10] = https://curl.haxx.se/bug/?i=2162
+ [11] = https://curl.haxx.se/bug/?i=2190
+ [12] = https://curl.haxx.se/bug/?i=1694
+ [13] = https://curl.haxx.se/bug/?i=2397
+ [14] = https://curl.haxx.se/bug/?i=2392
+ [15] = https://curl.haxx.se/bug/?i=2401
+ [16] = https://curl.haxx.se/bug/?i=2408
+ [17] = https://curl.haxx.se/bug/?i=2410
+ [18] = https://curl.haxx.se/bug/?i=2400
+ [19] = https://curl.haxx.se/bug/?i=1967
+ [20] = https://curl.haxx.se/bug/?i=2358
+ [21] = https://curl.haxx.se/bug/?i=2358
+ [22] = https://curl.haxx.se/bug/?i=2418
+ [23] = https://curl.haxx.se/bug/?i=2399
+ [24] = https://curl.haxx.se/bug/?i=2419
+ [25] = https://curl.haxx.se/bug/?i=2363
+ [26] = https://curl.haxx.se/mail/lib-2018-03/0140.html
+ [27] = https://curl.haxx.se/bug/?i=2436
+ [28] = https://curl.haxx.se/bug/?i=2441
+ [29] = https://curl.haxx.se/bug/?i=2440
+ [30] = https://curl.haxx.se/bug/?i=2319
+ [31] = https://curl.haxx.se/bug/?i=2453
+ [32] = https://curl.haxx.se/bug/?i=2451
+ [33] = https://curl.haxx.se/bug/?i=2438
+ [34] = https://curl.haxx.se/bug/?i=2432
+ [35] = https://curl.haxx.se/bug/?i=2430
+ [36] = https://curl.haxx.se/bug/?i=2455
+ [37] = https://curl.haxx.se/bug/?i=2189
+ [38] = https://curl.haxx.se/bug/?i=2462
+ [39] = https://curl.haxx.se/bug/?i=2463
+ [40] = https://curl.haxx.se/bug/?i=2466
+ [41] = https://curl.haxx.se/bug/?i=2472
+ [42] = https://curl.haxx.se/bug/?i=2463
+ [43] = https://curl.haxx.se/bug/?i=2478
+ [44] = https://curl.haxx.se/bug/?i=2471
+ [45] = https://curl.haxx.se/bug/?i=2480
+ [46] = https://curl.haxx.se/bug/?i=2485
+ [47] = https://curl.haxx.se/bug/?i=2497
+ [48] = https://curl.haxx.se/bug/?i=2498
+ [49] = https://curl.haxx.se/bug/?i=2491
+ [50] = https://curl.haxx.se/bug/?i=2496
+ [51] = https://curl.haxx.se/bug/?i=2500
+ [52] = https://curl.haxx.se/bug/?i=2446
+ [53] = https://curl.haxx.se/bug/?i=2479
+ [54] = https://curl.haxx.se/bug/?i=2490
+ [55] = https://curl.haxx.se/bug/?i=1622
+ [56] = https://curl.haxx.se/bug/?i=2376
+ [57] = https://curl.haxx.se/bug/?i=2474
+ [58] = https://curl.haxx.se/bug/?i=1325
+ [59] = https://curl.haxx.se/bug/?i=2507
+ [60] = https://curl.haxx.se/bug/?i=2403
+ [61] = https://curl.haxx.se/bug/?i=2493
+ [62] = https://curl.haxx.se/bug/?i=2513
+ [63] = https://curl.haxx.se/bug/?i=1680
+ [64] = https://curl.haxx.se/bug/?i=2416
+ [65] = https://curl.haxx.se/bug/?i=2515
+ [66] = https://curl.haxx.se/bug/?i=2514
+ [67] = https://curl.haxx.se/bug/?i=2499
+ [68] = https://curl.haxx.se/bug/?i=2445
+ [69] = https://curl.haxx.se/bug/?i=2494
+ [70] = https://curl.haxx.se/bug/?i=2527
+ [71] = https://curl.haxx.se/bug/?i=2529
+ [72] = https://curl.haxx.se/bug/?i=2525
+ [73] = https://curl.haxx.se/bug/?i=2534
+ [74] = https://curl.haxx.se/bug/?i=2532
+ [75] = https://curl.haxx.se/bug/?i=2537
+ [76] = https://curl.haxx.se/bug/?i=2533
+ [77] = https://curl.haxx.se/bug/?i=2541
+ [78] = https://curl.haxx.se/bug/?i=2542
+ [79] = https://curl.haxx.se/bug/?i=2544
+ [80] = https://curl.haxx.se/bug/?i=2535
+ [81] = https://curl.haxx.se/bug/?i=2180
+ [82] = https://curl.haxx.se/bug/?i=2531
+ [83] = https://curl.haxx.se/bug/?i=2546
+ [84] = https://curl.haxx.se/bug/?i=2548
+ [85] = https://curl.haxx.se/bug/?i=2520
+ [86] = https://curl.haxx.se/bug/?i=2547
+ [87] = https://curl.haxx.se/bug/?i=2550
+ [88] = https://curl.haxx.se/docs/adv_2018-82c2.html
+ [89] = https://curl.haxx.se/docs/adv_2018-b138.html
+ [90] = https://curl.haxx.se/bug/?i=2528
+ [91] = https://curl.haxx.se/bug/?i=2512
+ [92] = https://curl.haxx.se/bug/?i=2558
+ [93] = https://curl.haxx.se/bug/?i=2558
+ [94] = https://curl.haxx.se/bug/?i=2564
+ [95] = https://curl.haxx.se/bug/?i=2520
+ [96] = https://curl.haxx.se/bug/?i=2561
+ [97] = https://curl.haxx.se/bug/?i=2560
diff --git a/androidconfigure b/androidconfigure
index da59f54..2ea0df7 100755
--- a/androidconfigure
+++ b/androidconfigure
@@ -74,7 +74,7 @@
   --disable-dict
 
 
-  ### Enable HTTP, FTP and FILE explicitly. These are enabled by default but
+  ### Enable HTTP and FILE explicitly. These are enabled by default but
   # listed here as documentation.
   --enable-http
   --enable-file
diff --git a/config.guess b/config.guess
index 2e9ad7f..31e01ef 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2016-10-02'
+timestamp='2017-11-07'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -27,7 +27,7 @@
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
@@ -39,7 +39,7 @@
 
 Output the configuration name of the system \`$me' is run on.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -50,7 +50,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2017 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -244,6 +244,9 @@
 	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
 	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
 	exit ;;
+    *:MidnightBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE}
+	exit ;;
     *:ekkoBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
 	exit ;;
@@ -259,6 +262,9 @@
     *:Sortix:*:*)
 	echo ${UNAME_MACHINE}-unknown-sortix
 	exit ;;
+    *:Redox:*:*)
+	echo ${UNAME_MACHINE}-unknown-redox
+	exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	*4.0)
@@ -315,15 +321,6 @@
 	exitcode=$?
 	trap '' 0
 	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
     Amiga*:UNIX_System_V:4.0:*)
 	echo m68k-unknown-sysv4
 	exit ;;
@@ -485,13 +482,13 @@
 #endif
 	#if defined (host_mips) && defined (MIPSEB)
 	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	  printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
 	#endif
 	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	  printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
 	#endif
 	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	  printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
 	#endif
 	#endif
 	  exit (-1);
@@ -614,7 +611,7 @@
     *:AIX:*:*)
 	echo rs6000-ibm-aix
 	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
 	echo romp-ibm-bsd4.4
 	exit ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
@@ -635,8 +632,8 @@
     9000/[34678]??:HP-UX:*:*)
 	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
 	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/31?)            HP_ARCH=m68000 ;;
+	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
 		if [ -x /usr/bin/getconf ]; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
@@ -749,7 +746,7 @@
 		{ echo "$SYSTEM_NAME"; exit; }
 	echo unknown-hitachi-hiuxwe2
 	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
 	echo hppa1.1-hp-bsd
 	exit ;;
     9000/8??:4.3bsd:*:*)
@@ -758,7 +755,7 @@
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
 	echo hppa1.0-hp-mpeix
 	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
 	echo hppa1.1-hp-osf
 	exit ;;
     hp8??:OSF1:*:*)
@@ -837,10 +834,11 @@
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	case ${UNAME_PROCESSOR} in
 	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		UNAME_PROCESSOR=x86_64 ;;
+	    i386)
+		UNAME_PROCESSOR=i586 ;;
 	esac
+	echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
@@ -854,10 +852,6 @@
     *:MSYS*:*)
 	echo ${UNAME_MACHINE}-pc-msys
 	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
-	exit ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
@@ -873,27 +867,12 @@
 		echo ia64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
     i*:UWIN*:*)
 	echo ${UNAME_MACHINE}-pc-uwin
 	exit ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
 	echo x86_64-unknown-cygwin
 	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
-	exit ;;
     prep*:SunOS:5.*:*)
 	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
@@ -1096,7 +1075,7 @@
     i*86:*DOS:*:*)
 	echo ${UNAME_MACHINE}-pc-msdosdjgpp
 	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+    i*86:*:4.*:*)
 	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
 		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
@@ -1303,14 +1282,21 @@
 	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
 	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-		    grep IS_64BIT_ARCH >/dev/null
+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		       grep IS_64BIT_ARCH >/dev/null
 		then
 		    case $UNAME_PROCESSOR in
 			i386) UNAME_PROCESSOR=x86_64 ;;
 			powerpc) UNAME_PROCESSOR=powerpc64 ;;
 		    esac
 		fi
+		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		       grep IS_PPC >/dev/null
+		then
+		    UNAME_PROCESSOR=powerpc
+		fi
 	    fi
 	elif test "$UNAME_PROCESSOR" = i386 ; then
 	    # Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1334,15 +1320,18 @@
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
+    NEO-*:NONSTOP_KERNEL:*:*)
 	echo neo-tandem-nsk${UNAME_RELEASE}
 	exit ;;
     NSE-*:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
+    NSR-*:NONSTOP_KERNEL:*:*)
 	echo nsr-tandem-nsk${UNAME_RELEASE}
 	exit ;;
+    NSX-*:NONSTOP_KERNEL:*:*)
+	echo nsx-tandem-nsk${UNAME_RELEASE}
+	exit ;;
     *:NonStop-UX:*:*)
 	echo mips-compaq-nonstopux
 	exit ;;
@@ -1414,16 +1403,28 @@
 	exit ;;
 esac
 
+echo "$0: unable to guess system type" >&2
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in
+    mips:Linux | mips64:Linux)
+	# If we got here on MIPS GNU/Linux, output extra information.
+	cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+	;;
+esac
+
 cat >&2 <<EOF
-$0: unable to guess system type
 
 This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite
-config.guess and config.sub with the latest versions from:
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 If $0 has already been updated, send the following data and any
 information you think might be pertinent to config-patches@gnu.org to
@@ -1455,7 +1456,7 @@
 exit 1
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'write-file-functions 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
diff --git a/config.sub b/config.sub
index dd2ca93..00f68b8 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2016-11-04'
+timestamp='2017-11-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -33,7 +33,7 @@
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -57,7 +57,7 @@
 
 Canonicalize a configuration name.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -67,7 +67,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2017 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -229,9 +229,6 @@
 	-ptx*)
 		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
 		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
-		;;
 	-psos*)
 		os=-psos
 		;;
@@ -263,7 +260,7 @@
 	| fido | fr30 | frv | ft32 \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| hexagon \
-	| i370 | i860 | i960 | ia64 \
+	| i370 | i860 | i960 | ia16 | ia64 \
 	| ip2k | iq2000 \
 	| k1om \
 	| le32 | le64 \
@@ -315,7 +312,7 @@
 	| ubicom32 \
 	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| visium \
-	| we32k \
+	| wasm32 \
 	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
 		basic_machine=$basic_machine-unknown
@@ -388,7 +385,7 @@
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
+	| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
 	| ip2k-* | iq2000-* \
 	| k1om-* \
 	| le32-* | le64-* \
@@ -446,6 +443,7 @@
 	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
 	| vax-* \
 	| visium-* \
+	| wasm32-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
@@ -641,7 +639,7 @@
 		basic_machine=rs6000-bull
 		os=-bosx
 		;;
-	dpx2* | dpx2*-bull)
+	dpx2*)
 		basic_machine=m68k-bull
 		os=-sysv3
 		;;
@@ -903,7 +901,7 @@
 		basic_machine=v70-nec
 		os=-sysv
 		;;
-	next | m*-next )
+	next | m*-next)
 		basic_machine=m68k-next
 		case $os in
 		    -nextstep* )
@@ -948,6 +946,9 @@
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
+	nsx-tandem)
+		basic_machine=nsx-tandem
+		;;
 	op50n-* | op60c-*)
 		basic_machine=hppa1.1-oki
 		os=-proelf
@@ -1243,6 +1244,9 @@
 		basic_machine=a29k-wrs
 		os=-vxworks
 		;;
+	wasm32)
+		basic_machine=wasm32-unknown
+		;;
 	w65*)
 		basic_machine=w65-wdc
 		os=-none
@@ -1251,6 +1255,9 @@
 		basic_machine=hppa1.1-winbond
 		os=-proelf
 		;;
+	x64)
+		basic_machine=x86_64-pc
+		;;
 	xbox)
 		basic_machine=i686-pc
 		os=-mingw32
@@ -1358,8 +1365,8 @@
 if [ x"$os" != x"" ]
 then
 case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
+	# First match some system type aliases that might get confused
+	# with valid system types.
 	# -solaris* is a basic system type, with this one exception.
 	-auroraux)
 		os=-auroraux
@@ -1379,9 +1386,9 @@
 	-gnu/linux*)
 		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
 		;;
-	# First accept the basic system types.
+	# Now accept the basic system types.
 	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
+	# Each alternative MUST end in a * to match a version number.
 	# -sysv* is not here because it comes later, after sysvr4.
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
 	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
@@ -1397,7 +1404,7 @@
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
 	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
@@ -1409,7 +1416,7 @@
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
 	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-	      | -onefs* | -tirtos* | -phoenix* | -fuchsia*)
+	      | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1484,7 +1491,7 @@
 	-nova*)
 		os=-rtmk-nova
 		;;
-	-ns2 )
+	-ns2)
 		os=-nextstep2
 		;;
 	-nsk*)
@@ -1539,6 +1546,19 @@
 	-dicos*)
 		os=-dicos
 		;;
+	-pikeos*)
+		# Until real need of OS specific support for
+		# particular features comes up, bare metal
+		# configurations are quite functional.
+		case $basic_machine in
+		    arm*)
+			os=-eabi
+			;;
+		    *)
+			os=-elf
+			;;
+		esac
+		;;
 	-nacl*)
 		;;
 	-ios)
@@ -1638,6 +1658,9 @@
 	sparc-* | *-sun)
 		os=-sunos4.1.1
 		;;
+	pru-*)
+		os=-elf
+		;;
 	*-be)
 		os=-beos
 		;;
@@ -1683,7 +1706,7 @@
 	m88k-omron*)
 		os=-luna
 		;;
-	*-next )
+	*-next)
 		os=-nextstep
 		;;
 	*-sequent)
@@ -1818,7 +1841,7 @@
 exit
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'write-file-functions 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
diff --git a/configure b/configure
index cb90f42..fdb6522 100755
--- a/configure
+++ b/configure
@@ -233,9 +233,10 @@
   # When both counting methods give the same result we do not want to
   # chose one over the other, and consider auto-detection not possible.
   if test -z "$PATH_SEPARATOR"; then
-    # Stop dead until user provides 'PATH_SEPARATOR' definition.
-    echo "$xc_msg_err 'PATH_SEPARATOR' variable not set. $xc_msg_abrt" >&2
-    exit 1
+    # User should provide the correct 'PATH_SEPARATOR' definition.
+    # Until then, guess that it is colon!
+    echo "$xc_msg_warn path separator not determined, guessing colon" >&2
+    PATH_SEPARATOR=':'
   fi
 else
   # Separator with the greater directory count is the auto-detected one.
@@ -1178,6 +1179,7 @@
 with_polarssl
 with_mbedtls
 with_cyassl
+with_wolfssl
 with_nss
 with_axtls
 with_ca_bundle
@@ -1993,6 +1995,9 @@
   --with-cyassl=PATH      where to look for CyaSSL, PATH points to the
                           installation root (default: system lib default)
   --without-cyassl        disable CyaSSL detection
+  --with-wolfssl=PATH     where to look for WolfSSL, PATH points to the
+                          installation root (default: system lib default)
+  --without-wolfssl       disable WolfSSL detection
   --with-nss=PATH         where to look for NSS, PATH points to the
                           installation root
   --without-nss           disable NSS detection
@@ -3203,6 +3208,9 @@
       ;;
     *)
             want_debug="yes"
+
+$as_echo "#define DEBUGBUILD 1" >>confdefs.h
+
       ;;
   esac
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $want_debug" >&5
@@ -3306,6 +3314,9 @@
                                           if test "$want_debug" = "yes"; then
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5
 $as_echo "(assumed) yes" >&6; }
+
+$as_echo "#define CURLDEBUG 1" >>confdefs.h
+
       else
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -3315,6 +3326,9 @@
       ;;
     *)
                                                       want_curldebug="yes"
+
+$as_echo "#define CURLDEBUG 1" >>confdefs.h
+
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
       ;;
@@ -18042,6 +18056,21 @@
             tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion"
           fi
           #
+                    if test "$compiler_num" -ge "600"; then
+            tmp_CFLAGS="$tmp_CFLAGS -Wshift-negative-value"
+            tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2"
+            tmp_CFLAGS="$tmp_CFLAGS -Wnull-dereference"
+            tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-cond"
+          fi
+          #
+                    if test "$compiler_num" -ge "700"; then
+            tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-branches"
+            tmp_CFLAGS="$tmp_CFLAGS -Wrestrict"
+            tmp_CFLAGS="$tmp_CFLAGS -Walloc-zero"
+            tmp_CFLAGS="$tmp_CFLAGS -Wformat-overflow=2"
+            tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2"
+          fi
+          #
         fi
         #
                 if test "$compiler_num" -ge "300"; then
@@ -18577,15 +18606,6 @@
       want_curldebug="no"
     fi
   fi
-  #
-  if test "$want_curldebug" = "yes"; then
-    CPPFLAGS="-DCURLDEBUG $CPPFLAGS"
-    squeeze CPPFLAGS
-  fi
-  if test "$want_debug" = "yes"; then
-    CPPFLAGS="-DDEBUGBUILD $CPPFLAGS"
-    squeeze CPPFLAGS
-  fi
 
  if test x$want_curldebug = xyes; then
   CURLDEBUG_TRUE=
@@ -21227,10 +21247,10 @@
     if test -n "$DIR_BROTLI"; then
 
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_BROTLI"
-         export LD_LIBRARY_PATH
-         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_BROTLI to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $DIR_BROTLI to LD_LIBRARY_PATH" >&6;}
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI"
+         export CURL_LIBRARY_PATH
+         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_BROTLI to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_BROTLI to CURL_LIBRARY_PATH" >&6;}
        fi
     fi
   else
@@ -21971,28 +21991,27 @@
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if argv can be written to" >&5
 $as_echo_n "checking if argv can be written to... " >&6; }
-if test "$cross_compiling" = yes; then :
 
+
+   old=$LD_LIBRARY_PATH
+   LD_LIBRARY_PATH=$CURL_LIBRARY_PATH
+   if test "$cross_compiling" = yes; then :
   curl_cv_writable_argv=cross
 
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
 int main(int argc, char ** argv) {
-    argv[0][0] = ' ';
-    return (argv[0][0] == ' ')?0:1;
+    argv00 = ' ';
+    return (argv00 == ' ')?0:1;
 }
 
-
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-
   curl_cv_writable_argv=yes
 
 else
-
   curl_cv_writable_argv=no
 
 fi
@@ -22000,6 +22019,8 @@
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
+   LD_LIBRARY_PATH=$old # restore
+
 case $curl_cv_writable_argv in
 yes)
 
@@ -23058,10 +23079,10 @@
   if test "$OPENSSL_ENABLED" = "1"; then
     if test -n "$LIB_OPENSSL"; then
                             if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
-         export LD_LIBRARY_PATH
-         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $LIB_OPENSSL to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $LIB_OPENSSL to LD_LIBRARY_PATH" >&6;}
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_OPENSSL"
+         export CURL_LIBRARY_PATH
+         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&6;}
        fi
     fi
 
@@ -23142,6 +23163,7 @@
         ;;
     esac
     case $tst_api in
+      0x111) tst_show="1.1.1" ;;
       0x110) tst_show="1.1.0" ;;
       0x102) tst_show="1.0.2" ;;
       0x101) tst_show="1.0.1" ;;
@@ -23173,6 +23195,42 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL library version" >&5
 $as_echo_n "checking for OpenSSL library version... " >&6; }
   if test "$tst_api" = "unknown"; then
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+#define ERR_clear_last_mark innocuous_ERR_clear_last_mark
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef ERR_clear_last_mark
+#ifdef __cplusplus
+extern "C"
+#endif
+char ERR_clear_last_mark ();
+#if defined __stub_ERR_clear_last_mark || defined __stub___ERR_clear_last_mark
+choke me
+#endif
+
+int main (void)
+{
+return ERR_clear_last_mark ();
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+      tst_api="0x111"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  fi
+  if test "$tst_api" = "unknown"; then
     case $host in
       *-*-vms*)
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -23645,6 +23703,7 @@
     conftest$ac_exeext conftest.$ac_ext
   fi
   case $tst_api in
+    0x111) tst_show="1.1.1" ;;
     0x110) tst_show="1.1.0" ;;
     0x102) tst_show="1.0.2" ;;
     0x101) tst_show="1.0.1" ;;
@@ -23685,6 +23744,7 @@
 $as_echo "$as_me: WARNING: $tst_warns" >&2;}
   fi
 
+    check_for_ca_bundle=1
   fi
 
   test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
@@ -24052,13 +24112,13 @@
       if test "x$USE_GNUTLS" = "xyes"; then
         { $as_echo "$as_me:${as_lineno-$LINENO}: detected GnuTLS version $version" >&5
 $as_echo "$as_me: detected GnuTLS version $version" >&6;}
-
+        check_for_ca_bundle=1
         if test -n "$gtlslib"; then
                                                   if test "x$cross_compiling" != "xyes"; then
-            LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
-            export LD_LIBRARY_PATH
-            { $as_echo "$as_me:${as_lineno-$LINENO}: Added $gtlslib to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $gtlslib to LD_LIBRARY_PATH" >&6;}
+            CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$gtlslib"
+            export CURL_LIBRARY_PATH
+            { $as_echo "$as_me:${as_lineno-$LINENO}: Added $gtlslib to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $gtlslib to CURL_LIBRARY_PATH" >&6;}
           fi
         fi
         for ac_func in gnutls_certificate_set_x509_key_file2 gnutls_alpn_set_protocols gnutls_ocsp_req_init
@@ -24445,15 +24505,15 @@
     if test "x$USE_POLARSSL" = "xyes"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected PolarSSL" >&5
 $as_echo "$as_me: detected PolarSSL" >&6;}
-
+      check_for_ca_bundle=1
       LIBS="-lpolarssl $LIBS"
 
       if test -n "$polarssllib"; then
                                         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
-          export LD_LIBRARY_PATH
-          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $polarssllib to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $polarssllib to LD_LIBRARY_PATH" >&6;}
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$polarssllib"
+          export CURL_LIBRARY_PATH
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $polarssllib to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $polarssllib to CURL_LIBRARY_PATH" >&6;}
         fi
       fi
     fi
@@ -24606,15 +24666,16 @@
     if test "x$USE_MBEDTLS" = "xyes"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected mbedTLS" >&5
 $as_echo "$as_me: detected mbedTLS" >&6;}
+      check_for_ca_bundle=1
 
       LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
 
       if test -n "$mbedtlslib"; then
                                         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mbedtlslib"
-          export LD_LIBRARY_PATH
-          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $mbedtlslib to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $mbedtlslib to LD_LIBRARY_PATH" >&6;}
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$mbedtlslib"
+          export CURL_LIBRARY_PATH
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $mbedtlslib to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $mbedtlslib to CURL_LIBRARY_PATH" >&6;}
         fi
       fi
     fi
@@ -24635,6 +24696,13 @@
 fi
 
 
+
+# Check whether --with-wolfssl was given.
+if test "${with_wolfssl+set}" = set; then :
+  withval=$with_wolfssl; OPT_CYASSL=$withval
+fi
+
+
 if test -z "$ssl_backends" -o "x$OPT_CYASSL" != xno; then
   ssl_msg=
 
@@ -24839,6 +24907,7 @@
     if test "x$USE_CYASSL" = "xyes"; then
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected $cyassllibname" >&5
 $as_echo "$as_me: detected $cyassllibname" >&6;}
+      check_for_ca_bundle=1
 
             # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
@@ -24936,10 +25005,10 @@
 
       if test -n "$cyassllib"; then
                                         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
-          export LD_LIBRARY_PATH
-          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $cyassllib to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $cyassllib to LD_LIBRARY_PATH" >&6;}
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$cyassllib"
+          export CURL_LIBRARY_PATH
+          { $as_echo "$as_me:${as_lineno-$LINENO}: Added $cyassllib to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $cyassllib to CURL_LIBRARY_PATH" >&6;}
         fi
       fi
 
@@ -25361,14 +25430,24 @@
       { $as_echo "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5
 $as_echo "$as_me: detected NSS version $version" >&6;}
 
+                        ac_fn_c_check_func "$LINENO" "PK11_CreateManagedGenericObject" "ac_cv_func_PK11_CreateManagedGenericObject"
+if test "x$ac_cv_func_PK11_CreateManagedGenericObject" = xyes; then :
+
+
+$as_echo "#define HAVE_PK11_CREATEMANAGEDGENERICOBJECT 1" >>confdefs.h
+
+
+fi
+
+
             NSS_LIBS=$addlib
 
 
                               if test "x$cross_compiling" != "xyes"; then
-        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
-        export LD_LIBRARY_PATH
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH" >&6;}
+        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$nssprefix/lib$libsuff"
+        export CURL_LIBRARY_PATH
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH" >&6;}
       fi
 
     fi
@@ -25452,15 +25531,16 @@
       USE_AXTLS=1
 
       AXTLS_ENABLED=1
+      check_for_ca_bundle=1
       USE_AXTLS="yes"
       ssl_msg="axTLS"
       test axtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
 
       if test "x$cross_compiling" != "xyes"; then
-        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
-        export LD_LIBRARY_PATH
-        { $as_echo "$as_me:${as_lineno-$LINENO}: Added $LIB_AXTLS to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $LIB_AXTLS to LD_LIBRARY_PATH" >&6;}
+        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_AXTLS"
+        export CURL_LIBRARY_PATH
+        { $as_echo "$as_me:${as_lineno-$LINENO}: Added $LIB_AXTLS to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $LIB_AXTLS to CURL_LIBRARY_PATH" >&6;}
       fi
 
 else
@@ -25525,6 +25605,7 @@
 fi
 
 
+if test "$check_for_ca_bundle" -gt 0; then
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking default CA cert bundle/path" >&5
@@ -25684,6 +25765,7 @@
 
   fi
 
+fi
 
 
 
@@ -26396,10 +26478,10 @@
     if test -n "$DIR_SSH2"; then
 
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
-         export LD_LIBRARY_PATH
-         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH2 to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $DIR_SSH2 to LD_LIBRARY_PATH" >&6;}
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2"
+         export CURL_LIBRARY_PATH
+         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH2 to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_SSH2 to CURL_LIBRARY_PATH" >&6;}
        fi
     fi
   else
@@ -26640,10 +26722,10 @@
     if test -n "$DIR_SSH"; then
 
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH"
-         export LD_LIBRARY_PATH
-         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $DIR_SSH to LD_LIBRARY_PATH" >&6;}
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH"
+         export CURL_LIBRARY_PATH
+         { $as_echo "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $DIR_SSH to CURL_LIBRARY_PATH" >&6;}
        fi
     fi
   else
@@ -27491,10 +27573,10 @@
 
     curl_idn_msg="enabled (libidn2)"
     if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then
-      LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
-      export LD_LIBRARY_PATH
-      { $as_echo "$as_me:${as_lineno-$LINENO}: Added $IDN_DIR to LD_LIBRARY_PATH" >&5
-$as_echo "$as_me: Added $IDN_DIR to LD_LIBRARY_PATH" >&6;}
+      CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR"
+      export CURL_LIBRARY_PATH
+      { $as_echo "$as_me:${as_lineno-$LINENO}: Added $IDN_DIR to CURL_LIBRARY_PATH" >&5
+$as_echo "$as_me: Added $IDN_DIR to CURL_LIBRARY_PATH" >&6;}
     fi
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libraries for IDN support: IDN disabled" >&5
@@ -28843,6 +28925,79 @@
 fi
 
 
+# check for sa_family_t
+ac_fn_c_check_type "$LINENO" "sa_family_t" "ac_cv_type_sa_family_t" "
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+"
+if test "x$ac_cv_type_sa_family_t" = xyes; then :
+
+$as_echo "#define CURL_SA_FAMILY_T sa_family_t" >>confdefs.h
+
+else
+
+   # The windows name?
+   ac_fn_c_check_type "$LINENO" "ADDRESS_FAMILY" "ac_cv_type_ADDRESS_FAMILY" "
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+"
+if test "x$ac_cv_type_ADDRESS_FAMILY" = xyes; then :
+
+$as_echo "#define CURL_SA_FAMILY_T ADDRESS_FAMILY" >>confdefs.h
+
+else
+
+$as_echo "#define CURL_SA_FAMILY_T unsigned short" >>confdefs.h
+
+fi
+
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if time_t is unsigned" >&5
+$as_echo_n "checking if time_t is unsigned... " >&6; }
+
+
+   old=$LD_LIBRARY_PATH
+   LD_LIBRARY_PATH=$CURL_LIBRARY_PATH
+   if test "$cross_compiling" = yes; then :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <time.h>
+  #include <limits.h>
+  time_t t = -1;
+  return (t > 0);
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h
+
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+   LD_LIBRARY_PATH=$old # restore
+
+
 
 curl_includes_ws2tcpip="\
 /* includes start */
diff --git a/configure.ac b/configure.ac
index c223a04..5569a26 100755
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -1053,13 +1053,13 @@
   if test "$HAVE_BROTLI" = "1"; then
     if test -n "$DIR_BROTLI"; then
        dnl when the brotli shared libs were found in a path that the run-time
-       dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
+       dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH
        dnl to prevent further configure tests to fail due to this
 
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_BROTLI"
-         export LD_LIBRARY_PATH
-         AC_MSG_NOTICE([Added $DIR_BROTLI to LD_LIBRARY_PATH])
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI"
+         export CURL_LIBRARY_PATH
+         AC_MSG_NOTICE([Added $DIR_BROTLI to CURL_LIBRARY_PATH])
        fi
     fi
   else
@@ -1230,13 +1230,11 @@
 dnl **********************************************************************
 
 AC_MSG_CHECKING([if argv can be written to])
-AC_RUN_IFELSE([
-  AC_LANG_SOURCE([[
+CURL_RUN_IFELSE([
 int main(int argc, char ** argv) {
     argv[0][0] = ' ';
     return (argv[0][0] == ' ')?0:1;
 }
-  ]])
 ],[
   curl_cv_writable_argv=yes
 ],[
@@ -1811,15 +1809,16 @@
   if test "$OPENSSL_ENABLED" = "1"; then
     if test -n "$LIB_OPENSSL"; then
        dnl when the ssl shared libs were found in a path that the run-time
-       dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
+       dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH
        dnl to prevent further configure tests to fail due to this
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
-         export LD_LIBRARY_PATH
-         AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_OPENSSL"
+         export CURL_LIBRARY_PATH
+         AC_MSG_NOTICE([Added $LIB_OPENSSL to CURL_LIBRARY_PATH])
        fi
     fi
     CURL_CHECK_OPENSSL_API
+    check_for_ca_bundle=1
   fi
 
   test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg"
@@ -1969,16 +1968,16 @@
 
       if test "x$USE_GNUTLS" = "xyes"; then
         AC_MSG_NOTICE([detected GnuTLS version $version])
-
+        check_for_ca_bundle=1
         if test -n "$gtlslib"; then
           dnl when shared libs were found in a path that the run-time
           dnl linker doesn't search through, we need to add it to
-          dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+          dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
           dnl due to this
           if test "x$cross_compiling" != "xyes"; then
-            LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
-            export LD_LIBRARY_PATH
-            AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
+            CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$gtlslib"
+            export CURL_LIBRARY_PATH
+            AC_MSG_NOTICE([Added $gtlslib to CURL_LIBRARY_PATH])
           fi
         fi
         AC_CHECK_FUNCS([gnutls_certificate_set_x509_key_file2 gnutls_alpn_set_protocols gnutls_ocsp_req_init])
@@ -2103,18 +2102,18 @@
 
     if test "x$USE_POLARSSL" = "xyes"; then
       AC_MSG_NOTICE([detected PolarSSL])
-
+      check_for_ca_bundle=1
       LIBS="-lpolarssl $LIBS"
 
       if test -n "$polarssllib"; then
         dnl when shared libs were found in a path that the run-time
         dnl linker doesn't search through, we need to add it to
-        dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
         dnl due to this
         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
-          export LD_LIBRARY_PATH
-          AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$polarssllib"
+          export CURL_LIBRARY_PATH
+          AC_MSG_NOTICE([Added $polarssllib to CURL_LIBRARY_PATH])
         fi
       fi
     fi
@@ -2194,18 +2193,19 @@
 
     if test "x$USE_MBEDTLS" = "xyes"; then
       AC_MSG_NOTICE([detected mbedTLS])
+      check_for_ca_bundle=1
 
       LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
 
       if test -n "$mbedtlslib"; then
         dnl when shared libs were found in a path that the run-time
         dnl linker doesn't search through, we need to add it to
-        dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
         dnl due to this
         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mbedtlslib"
-          export LD_LIBRARY_PATH
-          AC_MSG_NOTICE([Added $mbedtlslib to LD_LIBRARY_PATH])
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$mbedtlslib"
+          export CURL_LIBRARY_PATH
+          AC_MSG_NOTICE([Added $mbedtlslib to CURL_LIBRARY_PATH])
         fi
       fi
     fi
@@ -2229,6 +2229,12 @@
 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
   OPT_CYASSL=$withval)
 
+dnl provide --with-wolfssl as an alias for --with-cyassl
+AC_ARG_WITH(wolfssl,dnl
+AC_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)])
+AC_HELP_STRING([--without-wolfssl], [disable WolfSSL detection]),
+  OPT_CYASSL=$withval)
+
 if test -z "$ssl_backends" -o "x$OPT_CYASSL" != xno; then
   ssl_msg=
 
@@ -2339,6 +2345,7 @@
 
     if test "x$USE_CYASSL" = "xyes"; then
       AC_MSG_NOTICE([detected $cyassllibname])
+      check_for_ca_bundle=1
 
       dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
       AC_CHECK_SIZEOF(long long)
@@ -2367,12 +2374,12 @@
       if test -n "$cyassllib"; then
         dnl when shared libs were found in a path that the run-time
         dnl linker doesn't search through, we need to add it to
-        dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+        dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
         dnl due to this
         if test "x$cross_compiling" != "xyes"; then
-          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
-          export LD_LIBRARY_PATH
-          AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
+          CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$cyassllib"
+          export CURL_LIBRARY_PATH
+          AC_MSG_NOTICE([Added $cyassllib to CURL_LIBRARY_PATH])
         fi
       fi
 
@@ -2483,18 +2490,27 @@
     if test "x$USE_NSS" = "xyes"; then
       AC_MSG_NOTICE([detected NSS version $version])
 
+      dnl PK11_CreateManagedGenericObject() was introduced in NSS 3.34 because
+      dnl PK11_DestroyGenericObject() does not release resources allocated by
+      dnl PK11_CreateGenericObject() early enough.
+      AC_CHECK_FUNC(PK11_CreateManagedGenericObject,
+        [
+          AC_DEFINE(HAVE_PK11_CREATEMANAGEDGENERICOBJECT, 1,
+                    [if you have the PK11_CreateManagedGenericObject function])
+        ])
+
       dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
       NSS_LIBS=$addlib
       AC_SUBST([NSS_LIBS])
 
       dnl when shared libs were found in a path that the run-time
       dnl linker doesn't search through, we need to add it to
-      dnl LD_LIBRARY_PATH to prevent further configure tests to fail
+      dnl CURL_LIBRARY_PATH to prevent further configure tests to fail
       dnl due to this
       if test "x$cross_compiling" != "xyes"; then
-        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
-        export LD_LIBRARY_PATH
-        AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
+        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$nssprefix/lib$libsuff"
+        export CURL_LIBRARY_PATH
+        AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH])
       fi
 
     fi dnl NSS found
@@ -2545,14 +2561,15 @@
       AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
       AC_SUBST(USE_AXTLS, [1])
       AXTLS_ENABLED=1
+      check_for_ca_bundle=1
       USE_AXTLS="yes"
       ssl_msg="axTLS"
       test axtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes
 
       if test "x$cross_compiling" != "xyes"; then
-        LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
-        export LD_LIBRARY_PATH
-        AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
+        CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_AXTLS"
+        export CURL_LIBRARY_PATH
+        AC_MSG_NOTICE([Added $LIB_AXTLS to CURL_LIBRARY_PATH])
       fi
       ],[
       LDFLAGS="$CLEANLDFLAGS"
@@ -2606,7 +2623,9 @@
 dnl Check for the CA bundle
 dnl **********************************************************************
 
-CURL_CHECK_CA_BUNDLE
+if test "$check_for_ca_bundle" -gt 0; then
+  CURL_CHECK_CA_BUNDLE
+fi
 
 dnl **********************************************************************
 dnl Check for libpsl
@@ -2793,13 +2812,13 @@
   if test "$LIBSSH2_ENABLED" = "1"; then
     if test -n "$DIR_SSH2"; then
        dnl when the libssh2 shared libs were found in a path that the run-time
-       dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
+       dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH
        dnl to prevent further configure tests to fail due to this
 
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
-         export LD_LIBRARY_PATH
-         AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2"
+         export CURL_LIBRARY_PATH
+         AC_MSG_NOTICE([Added $DIR_SSH2 to CURL_LIBRARY_PATH])
        fi
     fi
   else
@@ -2866,13 +2885,13 @@
   if test "$LIBSSH_ENABLED" = "1"; then
     if test -n "$DIR_SSH"; then
        dnl when the libssh shared libs were found in a path that the run-time
-       dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
+       dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH
        dnl to prevent further configure tests to fail due to this
 
        if test "x$cross_compiling" != "xyes"; then
-         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH"
-         export LD_LIBRARY_PATH
-         AC_MSG_NOTICE([Added $DIR_SSH to LD_LIBRARY_PATH])
+         CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH"
+         export CURL_LIBRARY_PATH
+         AC_MSG_NOTICE([Added $DIR_SSH to CURL_LIBRARY_PATH])
        fi
     fi
   else
@@ -3208,9 +3227,9 @@
     AC_SUBST([IDN_ENABLED], [1])
     curl_idn_msg="enabled (libidn2)"
     if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then
-      LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
-      export LD_LIBRARY_PATH
-      AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
+      CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR"
+      export CURL_LIBRARY_PATH
+      AC_MSG_NOTICE([Added $IDN_DIR to CURL_LIBRARY_PATH])
     fi
   else
     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
@@ -3483,6 +3502,43 @@
 #endif
 ])
 
+# check for sa_family_t
+AC_CHECK_TYPE(sa_family_t,
+   AC_DEFINE(CURL_SA_FAMILY_T, sa_family_t, [IP address type in sockaddr]),
+   [
+   # The windows name?
+   AC_CHECK_TYPE(ADDRESS_FAMILY,
+     AC_DEFINE(CURL_SA_FAMILY_T, ADDRESS_FAMILY, [IP address type in sockaddr]),
+     AC_DEFINE(CURL_SA_FAMILY_T, unsigned short, [IP address type in sockaddr]),
+    [
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+    ])
+   ],
+[
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+])
+
+AC_MSG_CHECKING([if time_t is unsigned])
+CURL_RUN_IFELSE(
+  [
+  #include <time.h>
+  #include <limits.h>
+  time_t t = -1;
+  return (t > 0);
+  ],[
+  AC_MSG_RESULT([yes])
+  AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned])
+],[
+  AC_MSG_RESULT([no])
+],[
+  dnl cross-compiling, most systems are unsigned
+  AC_MSG_RESULT([no])
+])
+
 CURL_CONFIGURE_CURL_SOCKLEN_T
 
 CURL_CONFIGURE_PULL_SYS_POLL
diff --git a/docs/BINDINGS.md b/docs/BINDINGS.md
index b2d50fb..024f169 100644
--- a/docs/BINDINGS.md
+++ b/docs/BINDINGS.md
@@ -87,7 +87,7 @@
 
 RPG, support for ILE/RPG on OS/400 is included in source distribution
 
-Ruby: [curb](http://curb.rubyforge.org/) written by Ross Bamford, [ruby-curl-multi](http://curl-multi.rubyforge.org/) written by Kristjan Petursson and Keith Rarick
+Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford
 
 [Rust](https://github.com/carllerche/curl-rust) curl-rust - by Carl Lerche
 
@@ -95,7 +95,7 @@
 
 [Scilab](https://help.scilab.org/docs/current/fr_FR/getURL.html) binding by Sylvestre Ledru
 
-[S-Lang](http://www.jedsoft.org/slang/modules/curl.html) by John E Davis
+[S-Lang](https://www.jedsoft.org/slang/modules/curl.html) by John E Davis
 
 [Smalltalk](http://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk
 
diff --git a/docs/BUGS b/docs/BUGS
index 33f06ce..7322d9b 100644
--- a/docs/BUGS
+++ b/docs/BUGS
@@ -68,7 +68,7 @@
   The curl project's process for handling security related issues is
   documented here:
 
-        https://curl.haxx.se/dev/security.html
+        https://curl.haxx.se/dev/secprocess.html
 
 1.4 What to report
 
diff --git a/docs/CHECKSRC.md b/docs/CHECKSRC.md
index b42de84..f246b57 100644
--- a/docs/CHECKSRC.md
+++ b/docs/CHECKSRC.md
@@ -69,7 +69,7 @@
 - `SPACEBEFOREPAREN`: there was a space before an open parenthesis, `if (`,
    where one was not expected
 
-- `SPACESEMILCOLON`: there was a space before semicolon, ` ;`.
+- `SPACESEMICOLON`: there was a space before semicolon, ` ;`.
 
 - `TABS`: TAB characters are not allowed!
 
diff --git a/docs/CODE_STYLE.md b/docs/CODE_STYLE.md
index ba5f710..2d275cd 100644
--- a/docs/CODE_STYLE.md
+++ b/docs/CODE_STYLE.md
@@ -9,8 +9,8 @@
 tastes satisfied.
 
 Our C code has a few style rules. Most of them are verified and upheld by the
-`lib/checksrc.pl` script. Invoked with `make checksrc` or even by default by
-the build system when built after `./configure --enable-debug` has been used.
+"lib/checksrc.pl" script. Invoked with "make checksrc" or even by default by
+the build system when built after "./configure --enable-debug" has been used.
 
 It is normally not a problem for anyone to follow the guidelines, as you just
 need to copy the style already used in the source code and there are no
@@ -44,8 +44,8 @@
 
 ## Comments
 
-Since we write C89 code, `//` comments are not allowed. They weren't
-introduced in the C standard until C99. We use only `/*` and `*/` comments:
+Since we write C89 code, **//** comments are not allowed. They weren't
+introduced in the C standard until C99. We use only **/* comments */**.
 
     /* this is a comment */
 
@@ -87,8 +87,8 @@
 
 ## 'else' on the following line
 
-When adding an `else` clause to a conditional expression using braces, we add
-it on a new line after the closing brace. Like this:
+When adding an **else** clause to a conditional expression using braces, we
+add it on a new line after the closing brace. Like this:
 
     if(age < 40) {
       /* clearly a youngster */
@@ -149,8 +149,8 @@
 
 ## Space around operators
 
-Please use spaces on both sides of operators in C expressions.  Postfix `(),
-[], ->, ., ++, --` and Unary `+, - !, ~, &` operators excluded they should
+Please use spaces on both sides of operators in C expressions.  Postfix **(),
+[], ->, ., ++, --** and Unary **+, - !, ~, &** operators excluded they should
 have no space.
 
 Examples:
@@ -167,63 +167,71 @@
     complement = ~bits;
     empty = (!*string) ? TRUE : FALSE;
 
+## No parentheses for return values
+
+We use the 'return' statement without extra parentheses around the value:
+
+    int works(void)
+    {
+      return TRUE;
+    }
+
+## Parentheses for sizeof arguments
+
+When using the sizeof operator in code, we prefer it to be written with
+parentheses around its argument:
+
+    int size = sizeof(int);
+
 ## Column alignment
 
-Some statements cannot be completed on a single line because the line would
-be too long, the statement too hard to read, or due to other style guidelines
+Some statements cannot be completed on a single line because the line would be
+too long, the statement too hard to read, or due to other style guidelines
 above. In such a case the statement will span multiple lines.
 
 If a continuation line is part of an expression or sub-expression then you
 should align on the appropriate column so that it's easy to tell what part of
 the statement it is. Operators should not start continuation lines. In other
-cases follow the 2-space indent guideline. Here are some examples from libcurl:
+cases follow the 2-space indent guideline. Here are some examples from
+libcurl:
 
-~~~c
     if(Curl_pipeline_wanted(handle->multi, CURLPIPE_HTTP1) &&
        (handle->set.httpversion != CURL_HTTP_VERSION_1_0) &&
        (handle->set.httpreq == HTTPREQ_GET ||
         handle->set.httpreq == HTTPREQ_HEAD))
       /* didn't ask for HTTP/1.0 and a GET or HEAD */
       return TRUE;
-~~~
 
-~~~c
-  case CURLOPT_KEEP_SENDING_ON_ERROR:
-    data->set.http_keep_sending_on_error = (0 != va_arg(param, long)) ?
-                                           TRUE : FALSE;
-    break;
-~~~
+If no parenthesis, use the default indent:
 
-~~~c
     data->set.http_disable_hostname_check_before_authentication =
       (0 != va_arg(param, long)) ? TRUE : FALSE;
-~~~
 
-~~~c
-  if(option) {
-    result = parse_login_details(option, strlen(option),
-                                 (userp ? &user : NULL),
-                                 (passwdp ? &passwd : NULL),
-                                 NULL);
-  }
-~~~
+Function invoke with an open parenthesis:
 
-~~~c
-        DEBUGF(infof(data, "Curl_pp_readresp_ %d bytes of trailing "
-                     "server response left\n",
-                     (int)clipamount));
-~~~
+    if(option) {
+      result = parse_login_details(option, strlen(option),
+                                   (userp ? &user : NULL),
+                                   (passwdp ? &passwd : NULL),
+                                   NULL);
+    }
+
+Align with the "current open" parenthesis:
+
+    DEBUGF(infof(data, "Curl_pp_readresp_ %d bytes of trailing "
+                 "server response left\n",
+                 (int)clipamount));
 
 ## Platform dependent code
 
-Use `#ifdef HAVE_FEATURE` to do conditional code. We avoid checking for
+Use **#ifdef HAVE_FEATURE** to do conditional code. We avoid checking for
 particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE
 shall be generated by the configure script for unix-like systems and they are
 hard-coded in the config-[system].h files for the others.
 
 We also encourage use of macros/functions that possibly are empty or defined
 to constants when libcurl is built without that feature, to make the code
-seamless. Like this style where the `magic()` function works differently
+seamless. Like this example where the **magic()** function works differently
 depending on a build-time conditional:
 
     #ifdef HAVE_MAGIC
diff --git a/docs/FAQ b/docs/FAQ
index 7ed5fa0..cb28c2a 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -218,9 +218,9 @@
   very well at the side. Curl's output can be piped into another program or
   redirected to another file for the next program to interpret.
 
-  We focus on protocol related issues and improvements. If you wanna do more
+  We focus on protocol related issues and improvements. If you want to do more
   magic with the supported protocols than curl currently does, chances are good
-  we will agree. If you wanna add more protocols, we may very well agree.
+  we will agree. If you want to add more protocols, we may very well agree.
 
   If you want someone else to do all the work while you wait for us to
   implement it for you, that is not a very friendly attitude. We spend a
@@ -998,7 +998,7 @@
   compilers or prior curl versions it may set a time that appears one hour off.
   This happens due to a flaw in how Windows stores and uses file modification
   times and it is not easily worked around. For more details read this:
-  http://www.codeproject.com/datetime/dstbugs.asp
+  https://www.codeproject.com/Articles/1144/Beating-the-Daylight-Savings-Time-bug-and-getting
 
   4.14 Redirects work in browser but not with curl!
 
diff --git a/docs/INSTALL.cmake b/docs/INSTALL.cmake
index abdfb46..0a8e439 100644
--- a/docs/INSTALL.cmake
+++ b/docs/INSTALL.cmake
@@ -34,7 +34,7 @@
    - Doesn't allow you to disable specific protocols from the build
    - Doesn't find or use krb4 or GSS
    - Rebuilds test files too eagerly, but still can't run the tests
-   - Does't detect the correct strerror_r flavor when cross-compiling (issue #1123)
+   - Doesn't detect the correct strerror_r flavor when cross-compiling (issue #1123)
 
 
 Command Line CMake
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 961a628..7389da6 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -27,6 +27,7 @@
  2.2 DER in keychain
  2.3 GnuTLS backend skips really long certificate fields
  2.4 DarwinSSL won't import PKCS#12 client certificates without a password
+ 2.5 Client cert handling with Issuer DN differs between backends
 
  3. Email protocols
  3.1 IMAP SEARCH ALL truncated response
@@ -38,6 +39,7 @@
  4.1 -J with %-encoded file nameas
  4.2 -J with -C - fails
  4.3 --retry and transfer timeouts
+ 4.4 --upload-file . hang if delay in STDIN
 
  5. Build and portability issues
  5.1 Windows Borland compiler
@@ -64,6 +66,7 @@
  7.6 FTP with NULs in URL parts
  7.7 FTP and empty path parts in the URL
  7.8 Premature transfer end but healthy control channel
+ 7.9 Passive transfer tries only one IP address
 
  8. TELNET
  8.1 TELNET and time limtiations don't work
@@ -83,6 +86,7 @@
  11.2 error buffer not set if connection to multiple addresses fails
  11.3 c-ares deviates from stock resolver on http://1346569778
  11.4 HTTP test server 'connection-monitor' problems
+ 11.5 Connection information when using TCP Fast Open
 
  12. LDAP and OpenLDAP
  12.1 OpenLDAP hangs after returning results
@@ -90,6 +94,8 @@
  13. TCP/IP
  13.1 --interface for ipv6 binds to unusable IP address
 
+ 14 DICT
+ 14.1 DICT responses show the underlying protocol
 
 ==============================================================================
 
@@ -221,6 +227,13 @@
  function rejects certificates that do not have a password.
  https://github.com/curl/curl/issues/1308
 
+2.5 Client cert handling with Issuer DN differs between backends
+
+ When the specified client certificate doesn't match any of the
+ server-specified DNs, the OpenSSL and GnuTLS backends behave differently.
+ The github discussion may contain a solution.
+
+ See https://github.com/curl/curl/issues/1411
 
 3. Email protocols
 
@@ -280,6 +293,13 @@
  https://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
  https://qa.mandriva.com/show_bug.cgi?id=22565
 
+4.4 --upload-file . hangs if delay in STDIN
+
+ "(echo start; sleep 1; echo end) | curl --upload-file . http://mywebsite -vv"
+
+ ... causes a hang when it shouldn't.
+
+ See https://github.com/curl/curl/issues/2051
 
 5. Build and portability issues
 
@@ -472,6 +492,18 @@
  alive even in this situation - but the current code doesn't. Fixing this would
  allow libcurl to reuse FTP connections better.
 
+7.9 Passive transfer tries only one IP address
+
+ When doing FTP operations through a proxy at localhost, the reported spotted
+ that curl only tried to connect once to the proxy, while it had mulitiple
+ addresses and a failed connect on one address should make it try the next.
+
+ After switching to passive mode (EPSV), curl should try all IP addresses for
+ "localhost". Currently it tries ::1, but it should also try 127.0.0.1.
+
+ See https://github.com/curl/curl/issues/1508
+
+
 8. TELNET
 
 8.1 TELNET and time limtiations don't work
@@ -559,6 +591,13 @@
 
  See https://github.com/curl/curl/issues/868
 
+11.5 Connection information when using TCP Fast Open
+
+ CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is
+ enabled.
+
+ See https://github.com/curl/curl/issues/1332
+
 
 12. LDAP and OpenLDAP
 
@@ -591,3 +630,12 @@
  locally scoped address as that is bound to fail.
 
  https://github.com/curl/curl/issues/686
+
+14. DICT
+
+14.1 DICT responses show the underlying protocol
+
+ When getting a DICT response, the protocol parts of DICT aren't stripped off
+ from the output.
+
+ https://github.com/curl/curl/issues/1809
diff --git a/docs/MAIL-ETIQUETTE b/docs/MAIL-ETIQUETTE
index 54f1090..effdcce 100644
--- a/docs/MAIL-ETIQUETTE
+++ b/docs/MAIL-ETIQUETTE
@@ -179,7 +179,7 @@
   or just remove them completely from the mail. Note that this includes base64
   encoded HTTP Basic auth headers.
 
-  This public nature of the curl mailing lists makes automaticly inserted mail
+  This public nature of the curl mailing lists makes automatically inserted mail
   footers about mails being "private" or "only meant for the receipient" or
   similar even more silly than usual. Because they are absolutely not private
   when sent to a public mailing list.
diff --git a/docs/MANUAL b/docs/MANUAL
index 0e3db0f..5df37e4 100644
--- a/docs/MANUAL
+++ b/docs/MANUAL
@@ -298,8 +298,7 @@
 
   How to post a form with curl, lesson #1:
 
-  Dig out all the <input> tags in the form that you want to fill in. (There's
-  a perl program called formfind.pl on the curl site that helps with this).
+  Dig out all the <input> tags in the form that you want to fill in.
 
   If there's a "normal" post, you use -d to post. -d takes a full "post
   string", which is in the format
diff --git a/docs/Makefile.am b/docs/Makefile.am
index ae5ceec..1cad062 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -43,7 +43,7 @@
 EXTRA_DIST = MANUAL BUGS CONTRIBUTE.md FAQ FEATURES INTERNALS.md SSLCERTS.md    \
  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS KNOWN_BUGS   \
  BINDINGS.md HISTORY.md INSTALL INSTALL.md LICENSE-MIXING.md     \
- README.netware MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY.md RELEASE-PROCEDURE    \
+ README.netware MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY-PROCESS.md RELEASE-PROCEDURE    \
  SSL-PROBLEMS.md HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md           \
  CHECKSRC.md CMakeLists.txt README.md CIPHERS.md INSTALL.cmake README.cmake     \
  $(noinst_man_MANS) HELP-US.md
diff --git a/docs/SECURITY-PROCESS.md b/docs/SECURITY-PROCESS.md
new file mode 100644
index 0000000..4991d5f
--- /dev/null
+++ b/docs/SECURITY-PROCESS.md
@@ -0,0 +1,139 @@
+curl security process
+=====================
+
+This document describes how security vulnerabilities should be handled in the
+curl project.
+
+Publishing Information
+----------------------
+
+All known and public curl or libcurl related vulnerabilities are listed on
+[the curl web site security page](https://curl.haxx.se/docs/security.html).
+
+Security vulnerabilities should not be entered in the project's public bug
+tracker unless the necessary configuration is in place to limit access to the
+issue to only the reporter and the project's security team.
+
+Vulnerability Handling
+----------------------
+
+The typical process for handling a new security vulnerability is as follows.
+
+No information should be made public about a vulnerability until it is
+formally announced at the end of this process. That means, for example that a
+bug tracker entry must NOT be created to track the issue since that will make
+the issue public and it should not be discussed on any of the project's public
+mailing lists. Also messages associated with any commits should not make
+any reference to the security nature of the commit if done prior to the public
+announcement.
+
+- The person discovering the issue, the reporter, reports the vulnerability
+  privately to `curl-security@haxx.se`. That's an email alias that reaches a
+  handful of selected and trusted people.
+
+- Messages that do not relate to the reporting or managing of an undisclosed
+  security vulnerability in curl or libcurl are ignored and no further action
+  is required.
+
+- A person in the security team sends an e-mail to the original reporter to
+  acknowledge the report.
+
+- The security team investigates the report and either rejects it or accepts
+  it.
+
+- If the report is rejected, the team writes to the reporter to explain why.
+
+- If the report is accepted, the team writes to the reporter to let him/her
+  know it is accepted and that they are working on a fix.
+
+- The security team discusses the problem, works out a fix, considers the
+  impact of the problem and suggests a release schedule. This discussion
+  should involve the reporter as much as possible.
+
+- The release of the information should be "as soon as possible" and is most
+  often synced with an upcoming release that contains the fix. If the
+  reporter, or anyone else, thinks the next planned release is too far away
+  then a separate earlier release for security reasons should be considered.
+
+- Write a security advisory draft about the problem that explains what the
+  problem is, its impact, which versions it affects, solutions or workarounds,
+  when the release is out and make sure to credit all contributors properly.
+  Figure out the CWE (Common Weakness Enumeration) number for the flaw.
+
+- Request a CVE number from
+  [distros@openwall](http://oss-security.openwall.org/wiki/mailing-lists/distros)
+  when also informing and preparing them for the upcoming public security
+  vulnerability announcement - attach the advisory draft for information. Note
+  that 'distros' won't accept an embargo longer than 14 days and they do not
+  care for Windows-specific flaws. For windows-specific flaws, request CVE
+  directly from MITRE.
+
+- Update the "security advisory" with the CVE number.
+
+- The security team commits the fix in a private branch. The commit message
+  should ideally contain the CVE number. This fix is usually also distributed
+  to the 'distros' mailing list to allow them to use the fix prior to the
+  public announcement.
+
+- No more than 48 hours before the release, the private branch is merged into
+  the master branch and pushed. Once pushed, the information is accessible to
+  the public and the actual release should follow suit immediately afterwards.
+  The time between the push and the release is used for final tests and
+  reviews.
+
+- The project team creates a release that includes the fix.
+
+- The project team announces the release and the vulnerability to the world in
+  the same manner we always announce releases. It gets sent to the
+  curl-announce, curl-library and curl-users mailing lists.
+
+- The security web page on the web site should get the new vulnerability
+  mentioned.
+
+Pre-notification
+----------------
+
+If you think you are or should be eligible for a pre-notification about
+upcoming security announcements for curl, we urge OS distros and similar
+vendors to primarily join the distros@openwall list as that is one of the
+purposes of that list - and not just for curl of course.
+
+If you are not a distro or otherwise not suitable for distros@openwall and yet
+want pre-notifications from us, contact the curl security team with a detailed
+and clear explanation why this is the case.
+
+curl-security (at haxx dot se)
+------------------------------
+
+Who is on this list? There are a couple of criteria you must meet, and then we
+might ask you to join the list or you can ask to join it. It really isn't very
+formal. We basically only require that you have a long-term presence in the
+curl project and you have shown an understanding for the project and its way
+of working. You must've been around for a good while and you should have no
+plans in vanishing in the near future.
+
+We do not make the list of participants public mostly because it tends to vary
+somewhat over time and a list somewhere will only risk getting outdated.
+
+Publishing Security Advisories
+------------------------------
+
+1. Write up the security advisory, using markdown syntax. Use the same
+   subtitles as last time to maintain consistency.
+
+2. Name the advisory file (and ultimately the URL to be used when the flaw
+   gets published), using a randomized component so that third parties that
+   are involved in the process for each individual flaw will not be given
+   insights about possible *other* flaws worked on in parallel.
+   `adv_YEAR_RANDOM.md` has been used before.
+
+3. Add a line on the top of the array in `curl-www/docs/vuln.pm'.
+
+4. Put the new advisory markdown file in the curl-www/docs/ directory. Add it
+   to the git repo.  Update the Makefile in the same directory to build the
+   HTML representation.
+
+5. Run `make` in your local web checkout and verify that things look fine.
+
+6. On security advisory release day, push the changes on the curl-www
+   repository's remote master branch.
diff --git a/docs/THANKS b/docs/THANKS
index 7d5cf07..540a59f 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -10,9 +10,11 @@
 Aaron Oneal
 Aaron Orenstein
 Abram Pousada
+Adam Brown
 Adam D. Moss
 Adam Langley
 Adam Light
+Adam Marcionek
 Adam Piggott
 Adam Sampson
 Adam Tkac
@@ -36,6 +38,7 @@
 Ales Novak
 Alessandro Ghedini
 Alessandro Vesely
+Alex Baines
 Alex Bligh
 Alex Chan
 Alex Fishman
@@ -137,6 +140,7 @@
 Armel Asselin
 Arnaud Compan
 Arnaud Ebalard
+Aron Bergman
 Artak Galoyan
 Arthur Murray
 Arve Knudsen
@@ -154,6 +158,7 @@
 Barry Abrahamson
 Bart Whiteley
 Bas Mevissen
+Bas van Schaik
 Basuke Suzuki
 Ben Boeckel
 Ben Darnell
@@ -216,6 +221,7 @@
 Bru Rom
 Bruce Mitchener
 Bruce Stephens
+Bruno Grasselli
 Bruno Thomsen
 Bruno de Carvalho
 Bryan Henderson
@@ -292,6 +298,7 @@
 Cris Bailiff
 Cristian Rodríguez
 Curt Bogmine
+Cyril B
 Cyrill Osterwalder
 Cédric Connes
 Cédric Deltheil
@@ -299,6 +306,7 @@
 Da-Yoon Chung
 Dag Ekengren
 Dagobert Michelsen
+Dair Grant
 Dambaev Alexander
 Damian Dixon
 Damien Adant
@@ -337,6 +345,7 @@
 Daniel Theron
 Daniel at touchtunes
 Daphne Luong
+Dario Weisser
 Darryl House
 Darshan Mody
 Darío Hereñú
@@ -356,6 +365,7 @@
 David Cohen
 David E. Narváez
 David Eriksson
+David Garske
 David Houlder
 David Hull
 David J Meyer
@@ -363,6 +373,7 @@
 David Kalnischkies
 David Kierznowski
 David Kimdon
+David L.
 David Lang
 David LeBlanc
 David Lord
@@ -383,6 +394,7 @@
 David Yan
 Dengminwen
 Denis Feklushkin
+Denis Ollier
 Dennis Clarke
 Derek Higgins
 Desmond O. Chang
@@ -410,6 +422,7 @@
 Dmitry Falko
 Dmitry Kostjuchenko
 Dmitry Kurochkin
+Dmitry Mikhirev
 Dmitry Popov
 Dmitry Rechkin
 Dmitry S. Baikov
@@ -418,11 +431,14 @@
 Dominick Meglio
 Dominik Hölzl
 Dominique Leuenberger
+Don J Olmstead
+Dongliang Mu
 Doug Kaufman
 Doug Porter
 Douglas Creager
 Douglas E. Wegscheid
 Douglas Kilpatrick
+Douglas Mencken
 Douglas R. Horner
 Douglas Steinwand
 Dov Murik
@@ -431,11 +447,13 @@
 Duncan Mac-Vicar Prett
 Dustin Boswell
 Dusty Mabe
+Duy Phan Thanh
 Dwarakanath Yadavalli
 Dylan Ellicott
 Dylan Salisbury
 Dániel Bakai
 Early Ehlinger
+Earnestly on github
 Ebenezer Ikonne
 Ed Morley
 Edin Kadribasic
@@ -460,6 +478,7 @@
 Enrik Berkhan
 Eramoto Masaya
 Eric Cooper
+Eric Gallager
 Eric Hu
 Eric Landes
 Eric Lavigne
@@ -478,6 +497,7 @@
 Erik Janssen
 Erik Johansson
 Ernest Beinrohr
+Ernst Sjöstrand
 Erwan Legrand
 Erwin Authried
 Ethan Glasser Camp
@@ -507,6 +527,7 @@
 Florin Petriuc
 Forrest Cahoon
 Francisco Moraes
+Francisco Sedano
 Francois Petitjean
 Frank Denis
 Frank Gevaerts
@@ -535,6 +556,7 @@
 Gavrie Philipson
 Gaz Iqbal
 Gaël Portay
+Geeknik Labs
 Geoff Beier
 Georg Horn
 Georg Huettenegger
@@ -608,6 +630,7 @@
 Henrik Gaßmann
 Henrik Storner
 Henry Ludemann
+Henry Roeland
 Herve Amblard
 Hidemoto Nakada
 Ho-chi Chen
@@ -839,6 +862,7 @@
 Katie Wang
 Kazuho Oku
 Kees Cook
+Kees Dekker
 Keith MacDonald
 Keith McGuigan
 Keith Mok
@@ -860,7 +884,9 @@
 Kimmo Kinnunen
 Kjell Ericson
 Kjetil Jacobsen
+Klaus Stein
 Klevtsov Vadim
+Kobi Gurkan
 Konstantin Isakov
 Kris Kennaway
 Krishnendu Majumdar
@@ -888,6 +914,8 @@
 Lau Hang Kin
 Laurent Rabret
 Lauri Kasanen
+Laurie Clark-Michalek
+Lawrence Matthews
 Lawrence Wagerfield
 Legoff Vincent
 Lehel Bernadt
@@ -928,6 +956,7 @@
 Luke Dashjr
 Luo Jinghua
 Luong Dinh Dung
+Luz Paz
 Luật Nguyễn
 Lyndon Hill
 Maciej Karpiuk
@@ -986,6 +1015,7 @@
 Martijn Koster
 Martin C. Martin
 Martin Drasar
+Martin Dreher
 Martin Frodl
 Martin Galvan
 Martin Hager
@@ -1043,6 +1073,7 @@
 Michael Jerris
 Michael Kalinin
 Michael Kaufmann
+Michael Kilburn
 Michael König
 Michael Maltese
 Michael Mealling
@@ -1054,8 +1085,10 @@
 Michael Wallner
 Michal Bonino
 Michal Marek
+Michal Trybus
 Michał Fita
 Michał Górny
+Michał Janiszewski
 Michał Kowalczyk
 Michał Piechowski
 Michel Promonet
@@ -1088,6 +1121,7 @@
 Mohun Biswas
 Mostyn Bramley-Moore
 Moti Avrahami
+Muz Dima
 Myk Taylor
 Nach M. S.
 Nagai H
@@ -1121,6 +1155,7 @@
 Niklas Angebrand
 Nikolai Kondrashov
 Nikos Mavrogiannopoulos
+Nikos Tsipinakis
 Ning Dong
 Nir Soffer
 Nis Jorgensen
@@ -1150,6 +1185,7 @@
 Ori Avtalion
 Oscar Koeroo
 Oscar Norlander
+Oumph on github
 P R Schaffner
 Palo Markovic
 Paolo Piacentini
@@ -1166,6 +1202,7 @@
 Patrick McManus
 Patrick Monnerat
 Patrick Rapin
+Patrick Schlangen
 Patrick Scott
 Patrick Smith
 Patrick Watson
@@ -1231,6 +1268,7 @@
 Philip Craig
 Philip Gladstone
 Philip Langdale
+Philip Prindeville
 Philippe Hameau
 Philippe Raoult
 Philippe Vaucher
@@ -1307,10 +1345,12 @@
 Richard Silverman
 Richard van den Berg
 Richy Kim
+Rick Deist
 Rick Jones
 Rick Richardson
 Ricki Hirner
 Rider Linden
+Rikard Falkeborn
 Rob Cotrone
 Rob Crittenden
 Rob Davies
@@ -1354,6 +1394,7 @@
 Rune Kleveland
 Ruslan Gazizov
 Rutger Hofman
+Ruurd Beerstra
 Ryan Braud
 Ryan Chan
 Ryan Nelson
@@ -1399,8 +1440,10 @@
 Sergei Kuzmin
 Sergei Nikulov
 Sergey Tatarincev
+Sergii Kavunenko
 Sergii Pylypenko
 Sergio Ballestrero
+Sergio Borghese
 Serj Kalichev
 Seshubabu Pasam
 Seth Mos
@@ -1421,6 +1464,7 @@
 Simon Josefsson
 Simon Liu
 Simon Warta
+Somnath Kundu
 Song Ma
 Sonia Subramanian
 Spacen Jasset
@@ -1430,6 +1474,7 @@
 Stan van de Burgt
 Stanislav Ivochkin
 Stanislav Zidek
+Stefan Agner
 Stefan Bühler
 Stefan Eissing
 Stefan Esser
@@ -1442,6 +1487,7 @@
 Steinar H. Gunderson
 Stepan Broz
 Stephan Bergmann
+Stephan Mühlstrasser
 Stephen Brokenshire
 Stephen Collyer
 Stephen Kick
@@ -1466,6 +1512,7 @@
 Stoned Elipot
 Stuart Henderson
 Sune Ahlgren
+Sunny Purushe
 Sven Anders
 Sven Neuhaus
 Sven Wegener
@@ -1482,7 +1529,8 @@
 Tatsuhiro Tsujikawa
 Temprimus
 Terri Oda
-TheAssassin at github
+Terry Wu
+TheAssassin on github
 Theodore Dubois
 Thomas Braun
 Thomas Glanzmann
@@ -1505,6 +1553,7 @@
 Tim Costello
 Tim Harder
 Tim Heckman
+Tim Mcdonough
 Tim Newsome
 Tim Rühsen
 Tim Sneddon
@@ -1575,7 +1624,7 @@
 Victor Snezhko
 Vijay Panghal
 Vikram Saxena
-Viktor Szakáts
+Viktor Szakats
 Ville Skyttä
 Vilmos Nebehaj
 Vincas Razma
@@ -1640,13 +1689,14 @@
 Zvi Har'El
 afrind on github
 ahodesuka on github
+anshnd on github
 arainchik on github
 asavah on github
 baumanj on github
 bsammon on github
-canavan on github
 cbartl on github
 cmfrolick on github
+dasimx on github
 destman on github
 dkjjr89 on github
 dpull on github
@@ -1655,6 +1705,7 @@
 guitared on github
 hsiao yi
 imilli on github
+iz8mbw on github
 jonrumsey on github
 joshhe on github
 jungle-boogie on github
@@ -1675,17 +1726,22 @@
 olesteban on github
 omau on github
 ovidiu-benea on github
+patelvivekv1993 on github
 paulharris on github
 silveja1 on github
+steelman on github
+steini2000 on github
 stootill on github
 swalkaus at yahoo.com
 tarek112 on github
 tommink[at]post.pl
 vanillajonathan on github
 wmsch on github
+wncboy on github
 wyattoday on github
 youngchopin on github
 zelinchen on github
 İsmail Dönmez
+Łukasz Domeradzki
 Štefan Kremeň
 Никита Дорохин
diff --git a/docs/TODO b/docs/TODO
index 25f860b..cd0d6f2 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -17,12 +17,13 @@
  All bugs documented in the KNOWN_BUGS document are subject for fixing!
 
  1. libcurl
+ 1.1 Option to refuse usernames in URLs
  1.2 More data sharing
  1.3 struct lifreq
  1.4 signal-based resolver timeouts
  1.5 get rid of PATH_MAX
  1.6 Modified buffer size approach
- 1.7 Detect when called from within callbacks
+ 1.7 Support HTTP/2 for HTTP(S) proxies
  1.8 CURLOPT_RESOLVE for any port number
  1.9 Cache negative name resolves
  1.10 auto-detect proxy
@@ -40,6 +41,9 @@
  1.23 Offer API to flush the connection pool
  1.24 TCP Fast Open for windows
  1.25 Expose tried IP addresses that failed
+ 1.26 CURL_REFUSE_CLEARTEXT
+ 1.27 hardcode the "localhost" addresses
+ 1.28 FD_CLOEXEC
 
  2. libcurl - multi interface
  2.1 More non-blocking
@@ -65,7 +69,6 @@
  5.1 Better persistency for HTTP 1.0
  5.2 support FF3 sqlite cookie files
  5.3 Rearrange request header order
- 5.4 HTTP Digest using SHA-256
  5.5 auth= in URLs
  5.6 Refuse "downgrade" redirects
  5.7 QUIC
@@ -103,16 +106,16 @@
  13. SSL
  13.1 Disable specific versions
  13.2 Provide mutex locking API
- 13.3 Evaluate SSL patches
+ 13.3 Support in-memory certs/ca certs/keys
  13.4 Cache/share OpenSSL contexts
  13.5 Export session ids
  13.6 Provide callback for cert verification
  13.7 improve configure --with-ssl
  13.8 Support DANE
- 13.10 Support SSLKEYLOGFILE
  13.11 Support intermediate & root pinning for PINNEDPUBLICKEY
  13.12 Support HSTS
  13.13 Support HPKP
+ 13.14 Support the clienthello extension
 
  14. GnuTLS
  14.1 SSL engine stuff
@@ -120,7 +123,6 @@
 
  15. WinSSL/SChannel
  15.1 Add support for client certificate authentication
- 15.2 Add support for custom server certificate validation
  15.3 Add support for the --ciphers option
 
  16. SASL
@@ -139,7 +141,9 @@
  18.2 glob posts
  18.3 prevent file overwriting
  18.4 simultaneous parallel transfers
+ 18.5 UTF-8 filenames in Content-Disposition
  18.6 warning when setting an option
+ 18.7 warning if curl version is not in sync with libcurl version
  18.8 offer color-coded HTTP header output
  18.9 Choose the name of file in braces for complex URLs
  18.10 improve how curl works in a windows console window
@@ -150,6 +154,8 @@
  18.15 --retry should resume
  18.16 send only part of --data
  18.17 consider file name from the redirected URL with -O ?
+ 18.18 retry on network is unreachable
+ 18.19 expand ~/ in config files
 
  19. Build
  19.1 roffit
@@ -182,11 +188,20 @@
 
 1. libcurl
 
+1.1 Option to refuse usernames in URLs
+
+ There's a certain risk for application in allowing user names in URLs. For
+ example: if the wrong person gets to set the URL and manages to set a user
+ name in there when .netrc is used, the application may send along a password
+ that otherwise the person couldn't provide.
+
+ A new libcurl option could be added to allow applications to switch off this
+ feature and thus avoid a potential risk.
+
 1.2 More data sharing
 
  curl_share_* functions already exist and work, and they can be extended to
- share more. For example, enable sharing of the ares channel and the
- connection cache.
+ share more. For example, enable sharing of the ares channel.
 
 1.3 struct lifreq
 
@@ -236,11 +251,9 @@
  Dynamically allocate buffer size depending on protocol in use in combination
  with freeing it after each individual transfer? Other suggestions?
 
-1.7 Detect when called from within callbacks
+1.7 Support HTTP/2 for HTTP(S) proxies
 
- We should set a state variable before calling callbacks, so that we
- subsequently can add code within libcurl that returns error if called within
- callbacks for when that's not supported.
+ Support for doing HTTP/2 to HTTP and HTTPS proxies is still missing.
 
 1.8 CURLOPT_RESOLVE for any port number
 
@@ -393,6 +406,40 @@
 
  https://github.com/curl/curl/issues/2126
 
+1.26 CURL_REFUSE_CLEARTEXT
+
+ An environment variable that when set will make libcurl refuse to use any
+ cleartext network protocol. That's all non-encrypted ones (FTP, HTTP, Gopher,
+ etc). By adding the check to libcurl and not just curl, this environment
+ variable can then help users to block all libcurl-using programs from
+ accessing the network using unsafe protocols.
+
+ The variable could be given some sort of syntax or different levels and be
+ used to also allow for example users to refuse libcurl to do transfers with
+ HTTPS certificate checks disabled.
+
+ It could also offer to refuse usernames in URLs (see TODO 1.1)
+
+1.27 hardcode the "localhost" addresses
+
+ There's this new spec getting adopted that says "localhost" should always and
+ unconditionally be a local address and not get resolved by a DNS server. A
+ fine way for curl to fix this would be to simply hard-code the response to
+ 127.0.0.1 and/or ::1 (depending on what IP versions that are requested). This
+ is what the browsers probably will do with this hostname.
+
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1220810
+
+ https://tools.ietf.org/html/draft-ietf-dnsop-let-localhost-be-localhost-02
+
+1.28 FD_CLOEXEC
+
+ It sets the close-on-exec flag for the file descriptor, which causes the file
+ descriptor to be automatically (and atomically) closed when any of the
+ exec-family functions succeed. Should probably be set by default?
+
+ https://github.com/curl/curl/issues/2252
+
 2. libcurl - multi interface
 
 2.1 More non-blocking
@@ -521,15 +568,6 @@
  headers use a default value so only headers that need to be moved have to be
  specified.
 
-5.4 HTTP Digest using SHA-256
-
- RFC 7616 introduces an update to the HTTP Digest authentication
- specification, which amongst other thing defines how new digest algorithms
- can be used instead of MD5 which is considered old and not recommended.
-
- See https://tools.ietf.org/html/rfc7616 and
- https://github.com/curl/curl/issues/1018
-
 5.5 auth= in URLs
 
  Add the ability to specify the preferred authentication mechanism to use by
@@ -676,10 +714,13 @@
  library, so that the same application code can use mutex-locking
  independently of OpenSSL or GnutTLS being used.
 
-13.3 Evaluate SSL patches
+13.3 Support in-memory certs/ca certs/keys
 
- Evaluate/apply Gertjan van Wingerde's SSL patches:
- https://curl.haxx.se/mail/lib-2004-03/0087.html
+ You can specify the private and public keys for SSH/SSL as file paths. Some
+ programs want to avoid using files and instead just pass them as in-memory
+ data blobs. There's probably a challenge to make this work across the
+ plethory of different TLS and SSH backends that curl supports.
+ https://github.com/curl/curl/issues/2310
 
 13.4 Cache/share OpenSSL contexts
 
@@ -731,16 +772,6 @@
  Björn Stenberg wrote a separate initial take on DANE that was never
  completed.
 
-13.10 Support SSLKEYLOGFILE
-
- When used, Firefox and Chrome dumps their master TLS keys to the file name
- this environment variable specifies. This allows tools like for example
- Wireshark to capture and decipher TLS traffic to/from those clients. libcurl
- could be made to support this more widely (presumably this already works when
- built with NSS). Peter Wu made a OpenSSL preload to make possible that can be
- used as inspiration and guidance
- https://git.lekensteyn.nl/peter/wireshark-notes/tree/src/sslkeylog.c
-
 13.11 Support intermediate & root pinning for PINNEDPUBLICKEY
 
  CURLOPT_PINNEDPUBLICKEY does not consider the hashes of intermediate & root
@@ -777,6 +808,16 @@
  Doc: https://developer.mozilla.org/de/docs/Web/Security/Public_Key_Pinning
  RFC: https://tools.ietf.org/html/draft-ietf-websec-key-pinning-21
 
+13.14 Support the clienthello extension
+
+ Certain stupid networks and middle boxes have a problem with SSL handshake
+ pakets that are within a certain size range because how that sets some bits
+ that previously (in older TLS version) were not set. The clienthello
+ extension adds padding to avoid that size range.
+
+ https://tools.ietf.org/html/rfc7685
+ https://github.com/curl/curl/issues/2299
+
 14. GnuTLS
 
 14.1 SSL engine stuff
@@ -801,17 +842,6 @@
  - Getting a Certificate for Schannel
    https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
 
-15.2 Add support for custom server certificate validation
-
- WinSSL/SChannel currently makes use of the OS-level system and user
- certificate trust store. This does not allow the application or user to
- customize the server certificate validation process using curl or libcurl.
-
- Therefore support for the existing --cacert or --capath options should be
- implemented by supplying a custom certificate to the SChannel APIs, see:
- - Getting a Certificate for Schannel
-   https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx
-
 15.3 Add support for the --ciphers option
 
  The cipher suites used by WinSSL/SChannel are configured on an OS-level
@@ -908,12 +938,26 @@
  Using the multi interface would also allow properly using parallel transfers
  with HTTP/2 and supporting HTTP/2 server push from the command line.
 
+18.5 UTF-8 filenames in Content-Disposition
+
+ RFC 6266 documents how UTF-8 names can be passed to a client in the
+ Content-Disposition header, and curl does not support this.
+
+ https://github.com/curl/curl/issues/1888
+
 18.6 warning when setting an option
 
  Display a warning when libcurl returns an error when setting an option.
  This can be useful to tell when support for a particular feature hasn't been
  compiled into the library.
 
+18.7 warning if curl version is not in sync with libcurl version
+
+ This is usually a sign of a funny, weird or unexpected install situations
+ that aren't always quickly nor easily detected by users. curl and libcurl are
+ always released in sync and should use the same version numbers unless very
+ special situations.
+
 18.8 offer color-coded HTTP header output
 
  By offering different color output on the header name and the header
@@ -1015,6 +1059,25 @@
 
  See https://github.com/curl/curl/issues/1241
 
+18.18 retry on network is unreachable
+
+ The --retry option retries transfers on "transient failures". We later added
+ --retry-connrefused to also retry for "connection refused" errors.
+
+ Suggestions have been brought to also allow retry on "network is unreachable"
+ errors and while totally reasonable, maybe we should consider a way to make
+ this more configurable than to add a new option for every new error people
+ want to retry for?
+
+ https://github.com/curl/curl/issues/1603
+
+18.19 expand ~/ in config files
+
+ For example .curlrc could benefit from being able to do this.
+
+ See https://github.com/curl/curl/issues/2317
+
+
 19. Build
 
 19.1 roffit
diff --git a/docs/cmdline-opts/Makefile.inc b/docs/cmdline-opts/Makefile.inc
index e8f4641..778149c 100644
--- a/docs/cmdline-opts/Makefile.inc
+++ b/docs/cmdline-opts/Makefile.inc
@@ -12,7 +12,9 @@
   form.d form-string.d ftp-account.d ftp-alternative-to-user.d          \
   ftp-create-dirs.d ftp-method.d ftp-pasv.d ftp-port.d ftp-pret.d       \
   ftp-skip-pasv-ip.d ftp-ssl-ccc.d ftp-ssl-ccc-mode.d ftp-ssl-control.d \
-  get.d globoff.d head.d header.d help.d hostpubmd5.d http1.0.d         \
+  get.d globoff.d                                                       \
+  happy-eyeballs-timeout-ms.d                                           \
+  head.d header.d help.d hostpubmd5.d http1.0.d                         \
   http1.1.d http2.d http2-prior-knowledge.d ignore-content-length.d     \
   include.d insecure.d interface.d ipv4.d ipv6.d junk-session-cookies.d \
   keepalive-time.d key.d key-type.d krb.d libcurl.d limit-rate.d        \
@@ -34,7 +36,7 @@
   remote-name-all.d remote-name.d remote-time.d request.d resolve.d     \
   retry-connrefused.d retry.d retry-delay.d retry-max-time.d sasl-ir.d  \
   service-name.d show-error.d silent.d socks4a.d socks4.d socks5.d      \
-  socks5-basic.d socks5-gssapi.d                                        \
+  socks5-basic.d socks5-gssapi.d proxy-pinnedpubkey.d                   \
   socks5-gssapi-nec.d socks5-gssapi-service.d socks5-hostname.d         \
   speed-limit.d speed-time.d ssl-allow-beast.d ssl.d ssl-no-revoke.d    \
   ssl-reqd.d sslv2.d sslv3.d stderr.d suppress-connect-headers.d        \
diff --git a/docs/cmdline-opts/cacert.d b/docs/cmdline-opts/cacert.d
index b2ecf90..073ad3a 100644
--- a/docs/cmdline-opts/cacert.d
+++ b/docs/cmdline-opts/cacert.d
@@ -25,4 +25,9 @@
 certificates in the system and user Keychain to verify the peer, which is the
 preferred method of verifying the peer's certificate chain.
 
+(Schannel/WinSSL only) This option is supported for WinSSL in Windows 7 or
+later with libcurl 7.60 or later. This option is supported for backward
+compatibility with other SSL engines; instead it is recommended to use Windows'
+store of root certificates (the default for WinSSL).
+
 If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/cert.d b/docs/cmdline-opts/cert.d
index 0cd5d53..adf62fc 100644
--- a/docs/cmdline-opts/cert.d
+++ b/docs/cmdline-opts/cert.d
@@ -29,4 +29,15 @@
 private key. If you want to use a file from the current directory, please
 precede it with "./" prefix, in order to avoid confusion with a nickname.
 
+(Schannel/WinSSL only) Client certificates must be specified by a path
+expression to a certificate store. (Loading PFX is not supported; you can
+import it to a store first). You can use
+"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
+in the system certificates store, for example,
+"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
+usually a SHA-1 hex string which you can see in certificate details. Following
+store locations are supported: CurrentUser, LocalMachine, CurrentService,
+Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
+LocalMachineEnterprise.
+
 If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/cookie.d b/docs/cmdline-opts/cookie.d
index 383adda..3ae6975 100644
--- a/docs/cmdline-opts/cookie.d
+++ b/docs/cmdline-opts/cookie.d
@@ -12,7 +12,8 @@
 to read previously stored cookie from. This option also activates the cookie
 engine which will make curl record incoming cookies, which may be handy if
 you're using this in combination with the --location option or do multiple URL
-transfers on the same invoke.
+transfers on the same invoke. If the file name is exactly a minus ("-"), curl
+will instead the contents from stdin.
 
 The file format of the file to read cookies from should be plain HTTP headers
 (Set-Cookie style) or the Netscape/Mozilla cookie file format.
diff --git a/docs/cmdline-opts/form.d b/docs/cmdline-opts/form.d
index d95d0cc..8d04d41 100644
--- a/docs/cmdline-opts/form.d
+++ b/docs/cmdline-opts/form.d
@@ -12,25 +12,35 @@
 For SMTP and IMAP protocols, this is the mean to compose a multipart mail
 message to transmit.
 
-This enables uploading of binary
-files etc. To force the 'content' part to be a file, prefix the file name with
-an @ sign. To just get the content part from a file, prefix the file name with
-the symbol <. The difference between @ and < is then that @ makes a file get
-attached in the post as a file upload, while the < makes a text field and just
-get the contents for that text field from a file.
+This enables uploading of binary files etc. To force the 'content' part to be
+a file, prefix the file name with an @ sign. To just get the content part from
+a file, prefix the file name with the symbol <. The difference between @ and <
+is then that @ makes a file get attached in the post as a file upload, while
+the < makes a text field and just get the contents for that text field from a
+file.
 
-Example: to send an image to an HTTP server, where \&'profile' is the name of
-the form-field to which portrait.jpg will be the input:
+Tell curl to read content from stdin instead of a file by using - as
+filename. This goes for both @ and < constructs. When stdin is used, the
+contents is buffered in memory first by curl to determine its size and allow a
+possible resend.  Defining a part's data from a named non-regular file (such
+as a named pipe or similar) is unfortunately not subject to buffering and will
+be effectively read at transmission time; since the full size is unknown
+before the transfer starts, such data is sent as chunks by HTTP and rejected
+by IMAP.
+
+Example: send an image to an HTTP server, where \&'profile' is the name of the
+form-field to which the file portrait.jpg will be the input:
 
  curl -F profile=@portrait.jpg https://example.com/upload.cgi
 
-To read content from stdin instead of a file, use - as the filename. This goes
-for both @ and < constructs. If stdin is not attached to a regular file, it is
-buffered first to determine its size and allow a possible resend. Defining a
-part's data from a named non-regular file (such as a named pipe or similar) is
-unfortunately not subject to buffering and will be effectively read at
-transmission time; since the full size is unknown before the transfer starts,
-data is sent as chunks by HTTP and rejected by IMAP.
+Example: send a your name and shoe size in two text fields to the server:
+
+ curl -F name=John -F shoesize=11 https://example.com/
+
+Example: send a your essay in a text field to the server. Send it as a plain
+text field, but get the contents for it from a local file:
+
+ curl -F "story=<hugefile.txt" https://example.com/
 
 You can also tell curl what Content-Type to use by using 'type=', in a manner
 similar to:
diff --git a/docs/cmdline-opts/ftp-port.d b/docs/cmdline-opts/ftp-port.d
index a852e90..e4b1456 100644
--- a/docs/cmdline-opts/ftp-port.d
+++ b/docs/cmdline-opts/ftp-port.d
@@ -12,11 +12,11 @@
 of:
 .RS
 .IP interface
-i.e "eth0" to specify which interface's IP address you want to use (Unix only)
+e.g. "eth0" to specify which interface's IP address you want to use (Unix only)
 .IP "IP address"
-i.e "192.168.10.1" to specify the exact IP address
+e.g. "192.168.10.1" to specify the exact IP address
 .IP "host name"
-i.e "my.host.domain" to specify the machine
+e.g. "my.host.domain" to specify the machine
 .IP "-"
 make curl pick the same IP address that is already used for the control
 connection
diff --git a/docs/cmdline-opts/happy-eyeballs-timeout-ms.d b/docs/cmdline-opts/happy-eyeballs-timeout-ms.d
new file mode 100644
index 0000000..ec9a8c2
--- /dev/null
+++ b/docs/cmdline-opts/happy-eyeballs-timeout-ms.d
@@ -0,0 +1,17 @@
+Long: happy-eyeballs-timeout-ms
+Arg: <milliseconds>
+Help: How long to wait in milliseconds for IPv6 before trying IPv4
+Added: 7.59.0
+---
+Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
+addresses for dual-stack hosts, preferring IPv6 first for the number of
+milliseconds. If the IPv6 address cannot be connected to within that time then
+a connection attempt is made to the IPv4 address in parallel. The first
+connection to be established is the one that is used.
+
+The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
+"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
+balance human factors against network load." libcurl currently defaults to
+200 ms. Firefox and Chrome currently default to 300 ms.
+
+If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/interface.d b/docs/cmdline-opts/interface.d
index bd08176..65827fb 100644
--- a/docs/cmdline-opts/interface.d
+++ b/docs/cmdline-opts/interface.d
@@ -12,5 +12,5 @@
 If this option is used several times, the last one will be used.
 
 On Linux it can be used to specify a VRF, but the binary needs to either
-have CAP_NET_RAW or to be ran as root. More information about Linux VRF:
+have CAP_NET_RAW or to be run as root. More information about Linux VRF:
 https://www.kernel.org/doc/Documentation/networking/vrf.txt
diff --git a/docs/cmdline-opts/max-time.d b/docs/cmdline-opts/max-time.d
index c22343d..0057f9d 100644
--- a/docs/cmdline-opts/max-time.d
+++ b/docs/cmdline-opts/max-time.d
@@ -1,6 +1,6 @@
 Long: max-time
 Short: m
-Arg: <time>
+Arg: <seconds>
 Help: Maximum time allowed for the transfer
 See-also: connect-timeout
 ---
diff --git a/docs/cmdline-opts/page-footer b/docs/cmdline-opts/page-footer
index 6006f46..89bface 100644
--- a/docs/cmdline-opts/page-footer
+++ b/docs/cmdline-opts/page-footer
@@ -21,17 +21,20 @@
 .IP "ALL_PROXY [protocol://]<host>[:port]"
 Sets the proxy server to use if no protocol-specific proxy is set.
 .IP "NO_PROXY <comma-separated list of hosts>"
-list of host names that shouldn't go through any proxy. If set to a asterisk
+list of host names that shouldn't go through any proxy. If set to an asterisk
 \&'*' only, it matches all hosts.
 
-Since 7.53.0, this environment variable disable the proxy even if specify
---proxy option. That is
+This environment variable disables use of the proxy even when specified with
+the --proxy option. That is
 .B NO_PROXY=direct.example.com curl -x http://proxy.example.com
 .B http://direct.example.com
 accesses the target URL directly, and
 .B NO_PROXY=direct.example.com curl -x http://proxy.example.com
 .B http://somewhere.example.com
-accesses the target URL through proxy.
+accesses the target URL through the proxy.
+
+The list of host names can also be include numerical IP addresses, and IPv6
+versions should then be given without enclosing brackets.
 
 .SH "PROXY PROTOCOL PREFIXES"
 Since curl version 7.21.7, the proxy string may be specified with a
@@ -42,9 +45,9 @@
 
 The supported proxy protocol prefixes are as follows:
 .IP "http://"
-Makes it use it as a HTTP proxy. The default if no scheme prefix is used.
+Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
 .IP "https://"
-Makes it treated as a \fBHTTPS\fP proxy.
+Makes it treated as an \fBHTTPS\fP proxy.
 .IP "socks4://"
 Makes it the equivalent of --socks4
 .IP "socks4a://"
diff --git a/docs/cmdline-opts/page-header b/docs/cmdline-opts/page-header
index ee5af14..51f45ed 100644
--- a/docs/cmdline-opts/page-header
+++ b/docs/cmdline-opts/page-header
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -26,8 +26,7 @@
 .SH NAME
 curl \- transfer a URL
 .SH SYNOPSIS
-.B curl [options]
-.I [URL...]
+.B curl [options / URLs]
 .SH DESCRIPTION
 .B curl
 is a tool to transfer data from or to a server, using one of the supported
@@ -65,7 +64,8 @@
   http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
 
 You can specify any amount of URLs on the command line. They will be fetched
-in a sequential manner in the specified order.
+in a sequential manner in the specified order. You can specify command line
+options and URLs mixed and in any order on the command line.
 
 You can specify a step counter for the ranges to get every Nth number or
 letter:
diff --git a/docs/cmdline-opts/progress-bar.d b/docs/cmdline-opts/progress-bar.d
index 11e95b4..f27de2d 100644
--- a/docs/cmdline-opts/progress-bar.d
+++ b/docs/cmdline-opts/progress-bar.d
@@ -7,5 +7,6 @@
 
 This progress bar draws a single line of '#' characters across the screen and
 shows a percentage if the transfer size is known. For transfers without a
-known size, it will instead output one '#' character for every 1024 bytes
-transferred.
+known size, there will be space ship (-=o=-) that moves back and forth but
+only while data is being transferred, with a set of flying hash sign symbols on
+top.
diff --git a/docs/cmdline-opts/proxy-cert-type.d b/docs/cmdline-opts/proxy-cert-type.d
index 8c9e788..906d2a1 100644
--- a/docs/cmdline-opts/proxy-cert-type.d
+++ b/docs/cmdline-opts/proxy-cert-type.d
@@ -1,6 +1,6 @@
 Long: proxy-cert-type
 Arg: <type>
 Added: 7.52.0
-Help: Client certificate type for HTTS proxy
+Help: Client certificate type for HTTPS proxy
 ---
 Same as --cert-type but used in HTTPS proxy context.
diff --git a/docs/cmdline-opts/proxy-pinnedpubkey.d b/docs/cmdline-opts/proxy-pinnedpubkey.d
new file mode 100644
index 0000000..abd6dc4
--- /dev/null
+++ b/docs/cmdline-opts/proxy-pinnedpubkey.d
@@ -0,0 +1,16 @@
+Long: proxy-pinnedpubkey
+Arg: <hashes>
+Help: FILE/HASHES public key to verify proxy with
+Protocols: TLS
+---
+Tells curl to use the specified public key file (or hashes) to verify the
+proxy. This can be a path to a file which contains a single public key in PEM
+or DER format, or any number of base64 encoded sha256 hashes preceded by
+\'sha256//\' and separated by \';\'
+
+When negotiating a TLS or SSL connection, the server sends a certificate
+indicating its identity. A public key is extracted from this certificate and
+if it does not exactly match the public key provided to this option, curl will
+abort the connection before sending or receiving any data.
+
+If this option is used several times, the last one will be used.
diff --git a/docs/cmdline-opts/proxytunnel.d b/docs/cmdline-opts/proxytunnel.d
index f2e8b80..42aee2b 100644
--- a/docs/cmdline-opts/proxytunnel.d
+++ b/docs/cmdline-opts/proxytunnel.d
@@ -1,6 +1,6 @@
 Long: proxytunnel
 Short: p
-Help: Operate through a HTTP proxy tunnel (using CONNECT)
+Help: Operate through an HTTP proxy tunnel (using CONNECT)
 See-also: proxy
 ---
 When an HTTP proxy is used --proxy, this option will cause non-HTTP protocols
diff --git a/docs/cmdline-opts/range.d b/docs/cmdline-opts/range.d
index 760d15e..b888dd1 100644
--- a/docs/cmdline-opts/range.d
+++ b/docs/cmdline-opts/range.d
@@ -4,7 +4,7 @@
 Arg: <range>
 Protocols: HTTP FTP SFTP FILE
 ---
-Retrieve a byte range (i.e a partial document) from a HTTP/1.1, FTP or SFTP
+Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
 server or a local FILE. Ranges can be specified in a number of ways.
 .RS
 .TP 10
diff --git a/docs/cmdline-opts/resolve.d b/docs/cmdline-opts/resolve.d
index 91539b8..9e1457b 100644
--- a/docs/cmdline-opts/resolve.d
+++ b/docs/cmdline-opts/resolve.d
@@ -1,5 +1,5 @@
 Long: resolve
-Arg: <host:port:address>
+Arg: <host:port:address[,address]...>
 Help: Resolve the host+port to this address
 Added: 7.21.3
 ---
@@ -16,4 +16,6 @@
 
 Support for providing the IP address within [brackets] was added in 7.57.0.
 
+Support for providing multiple IP addresses per entry was added in 7.59.0.
+
 This option can be used many times to add many host names to resolve.
diff --git a/docs/cmdline-opts/tlsauthtype.d b/docs/cmdline-opts/tlsauthtype.d
index 1b1481f..ede21c2 100644
--- a/docs/cmdline-opts/tlsauthtype.d
+++ b/docs/cmdline-opts/tlsauthtype.d
@@ -5,4 +5,6 @@
 ---
 Set TLS authentication type. Currently, the only supported option is "SRP",
 for TLS-SRP (RFC 5054). If --tlsuser and --tlspassword are specified but
---tlsauthtype is not, then this option defaults to "SRP".
+--tlsauthtype is not, then this option defaults to "SRP".  This option works
+only if the underlying libcurl is built with TLS-SRP support, which requires
+OpenSSL or GnuTLS with TLS-SRP support.
diff --git a/docs/cmdline-opts/user-agent.d b/docs/cmdline-opts/user-agent.d
index c98619d..de73f72 100644
--- a/docs/cmdline-opts/user-agent.d
+++ b/docs/cmdline-opts/user-agent.d
@@ -6,7 +6,7 @@
 ---
 
 Specify the User-Agent string to send to the HTTP server. To encode blanks in
-the string, surround the string with single quote marks. This can also be set
-with the --header option of course.
+the string, surround the string with single quote marks. This header can also
+be set with the --header or the --proxy-header options.
 
 If this option is used several times, the last one will be used.
diff --git a/docs/curl-config.1 b/docs/curl-config.1
index a9ac515..786fdb0 100644
--- a/docs/curl-config.1
+++ b/docs/curl-config.1
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl-config 1 "November 30, 2017" "Curl 7.58.0" "curl-config manual"
+.TH curl-config 1 "November 30, 2017" "Curl 7.60.0" "curl-config manual"
 
 .SH NAME
 curl-config \- Get information about a libcurl installation
diff --git a/docs/curl.1 b/docs/curl.1
index f03ad9d..9dfdaf7 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -22,13 +22,12 @@
 .\"
 .\" DO NOT EDIT. Generated by the curl project gen.pl man page generator.
 .\"
-.TH curl 1 "November 16, 2016" "Curl 7.58.0" "Curl Manual"
+.TH curl 1 "November 16, 2016" "Curl 7.60.0" "Curl Manual"
 
 .SH NAME
 curl \- transfer a URL
 .SH SYNOPSIS
-.B curl [options]
-.I [URL...]
+.B curl [options / URLs]
 .SH DESCRIPTION
 .B curl
 is a tool to transfer data from or to a server, using one of the supported
@@ -66,7 +65,8 @@
   http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
 
 You can specify any amount of URLs on the command line. They will be fetched
-in a sequential manner in the specified order.
+in a sequential manner in the specified order. You can specify command line
+options and URLs mixed and in any order on the command line.
 
 You can specify a step counter for the ranges to get every Nth number or
 letter:
@@ -197,6 +197,11 @@
 certificates in the system and user Keychain to verify the peer, which is the
 preferred method of verifying the peer's certificate chain.
 
+(Schannel/WinSSL only) This option is supported for WinSSL in Windows 7 or
+later with libcurl 7.60 or later. This option is supported for backward
+compatibility with other SSL engines; instead it is recommended to use Windows'
+store of root certificates (the default for WinSSL).
+
 If this option is used several times, the last one will be used.
 .IP "--capath <dir>"
 (TLS) Tells curl to use the specified certificate directory to verify the
@@ -252,6 +257,17 @@
 private key. If you want to use a file from the current directory, please
 precede it with "./" prefix, in order to avoid confusion with a nickname.
 
+(Schannel/WinSSL only) Client certificates must be specified by a path
+expression to a certificate store. (Loading PFX is not supported; you can
+import it to a store first). You can use
+"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
+in the system certificates store, for example,
+"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
+usually a SHA-1 hex string which you can see in certificate details. Following
+store locations are supported: CurrentUser, LocalMachine, CurrentService,
+Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
+LocalMachineEnterprise.
+
 If this option is used several times, the last one will be used.
 
 See also \fI--cert-type\fP and \fI--key\fP and \fI--key-type\fP.
@@ -395,7 +411,8 @@
 to read previously stored cookie from. This option also activates the cookie
 engine which will make curl record incoming cookies, which may be handy if
 you're using this in combination with the \fI-L, --location\fP option or do multiple URL
-transfers on the same invoke.
+transfers on the same invoke. If the file name is exactly a minus ("-"), curl
+will instead the contents from stdin.
 
 The file format of the file to read cookies from should be plain HTTP headers
 (Set-Cookie style) or the Netscape/Mozilla cookie file format.
@@ -669,25 +686,35 @@
 For SMTP and IMAP protocols, this is the mean to compose a multipart mail
 message to transmit.
 
-This enables uploading of binary
-files etc. To force the 'content' part to be a file, prefix the file name with
-an @ sign. To just get the content part from a file, prefix the file name with
-the symbol <. The difference between @ and < is then that @ makes a file get
-attached in the post as a file upload, while the < makes a text field and just
-get the contents for that text field from a file.
+This enables uploading of binary files etc. To force the 'content' part to be
+a file, prefix the file name with an @ sign. To just get the content part from
+a file, prefix the file name with the symbol <. The difference between @ and <
+is then that @ makes a file get attached in the post as a file upload, while
+the < makes a text field and just get the contents for that text field from a
+file.
 
-Example: to send an image to an HTTP server, where \&'profile' is the name of
-the form-field to which portrait.jpg will be the input:
+Tell curl to read content from stdin instead of a file by using - as
+filename. This goes for both @ and < constructs. When stdin is used, the
+contents is buffered in memory first by curl to determine its size and allow a
+possible resend.  Defining a part's data from a named non-regular file (such
+as a named pipe or similar) is unfortunately not subject to buffering and will
+be effectively read at transmission time; since the full size is unknown
+before the transfer starts, such data is sent as chunks by HTTP and rejected
+by IMAP.
+
+Example: send an image to an HTTP server, where \&'profile' is the name of the
+form-field to which the file portrait.jpg will be the input:
 
  curl -F profile=@portrait.jpg https://example.com/upload.cgi
 
-To read content from stdin instead of a file, use - as the filename. This goes
-for both @ and < constructs. If stdin is not attached to a regular file, it is
-buffered first to determine its size and allow a possible resend. Defining a
-part's data from a named non-regular file (such as a named pipe or similar) is
-unfortunately not subject to buffering and will be effectively read at
-transmission time; since the full size is unknown before the transfer starts,
-data is sent as chunks by HTTP and rejected by IMAP.
+Example: send a your name and shoe size in two text fields to the server:
+
+ curl -F name=John -F shoesize=11 https://example.com/
+
+Example: send a your essay in a text field to the server. Send it as a plain
+text field, but get the contents for it from a local file:
+
+ curl -F "story=<hugefile.txt" https://example.com/
 
 You can also tell curl what Content-Type to use by using 'type=', in a manner
 similar to:
@@ -844,11 +871,11 @@
 of:
 .RS
 .IP interface
-i.e "eth0" to specify which interface's IP address you want to use (Unix only)
+e.g. "eth0" to specify which interface's IP address you want to use (Unix only)
 .IP "IP address"
-i.e "192.168.10.1" to specify the exact IP address
+e.g. "192.168.10.1" to specify the exact IP address
 .IP "host name"
-i.e "my.host.domain" to specify the machine
+e.g. "my.host.domain" to specify the machine
 .IP "-"
 make curl pick the same IP address that is already used for the control
 connection
@@ -916,6 +943,30 @@
 you can specify URLs that contain the letters {}[] without having them being
 interpreted by curl itself. Note that these letters are not normal legal URL
 contents but they should be encoded according to the URI standard.
+.IP "--happy-eyeballs-timeout-ms <milliseconds>"
+Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
+addresses for dual-stack hosts, preferring IPv6 first for the number of
+milliseconds. If the IPv6 address cannot be connected to within that time then
+a connection attempt is made to the IPv4 address in parallel. The first
+connection to be established is the one that is used.
+
+The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says
+"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to
+balance human factors against network load." libcurl currently defaults to
+200 ms. Firefox and Chrome currently default to 300 ms.
+
+If this option is used several times, the last one will be used.
+
+Added in 7.59.0.
+.IP "--haproxy-protocol"
+(HTTP) Send a HAProxy PROXY protocol header at the beginning of the connection. This
+is used by some load balancers and reverse proxies to indicate the client's
+true IP address and port.
+
+This option is primarily useful when sending test requests to a service that
+expects this header.
+
+Added in 7.60.0.
 .IP "-I, --head"
 (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the command HEAD which this uses
 to get nothing but the header of a document. When used on an FTP or FILE file,
@@ -1023,7 +1074,7 @@
 If this option is used several times, the last one will be used.
 
 On Linux it can be used to specify a VRF, but the binary needs to either
-have CAP_NET_RAW or to be ran as root. More information about Linux VRF:
+have CAP_NET_RAW or to be run as root. More information about Linux VRF:
 https://www.kernel.org/doc/Documentation/networking/vrf.txt
 
 See also \fI--dns-interface\fP.
@@ -1212,7 +1263,7 @@
 unlimited.
 
 If this option is used several times, the last one will be used.
-.IP "-m, --max-time <time>"
+.IP "-m, --max-time <seconds>"
 Maximum time in seconds that you allow the whole operation to take.  This is
 useful for preventing your batch jobs from hanging for hours due to slow
 networks or links going down.  Since 7.32.0, this option accepts decimal
@@ -1492,8 +1543,9 @@
 
 This progress bar draws a single line of '#' characters across the screen and
 shows a percentage if the transfer size is known. For transfers without a
-known size, it will instead output one '#' character for every 1024 bytes
-transferred.
+known size, there will be space ship (-=o=-) that moves back and forth but
+only while data is being transferred, with a set of flying hash sign symbols on
+top.
 .IP "--proto-default <protocol>"
 Tells curl to use \fIprotocol\fP for any URL missing a scheme name.
 
@@ -1651,6 +1703,18 @@
 Same as \fI--pass\fP but used in HTTPS proxy context.
 
 Added in 7.52.0.
+.IP "--proxy-pinnedpubkey <hashes>"
+(TLS) Tells curl to use the specified public key file (or hashes) to verify the
+proxy. This can be a path to a file which contains a single public key in PEM
+or DER format, or any number of base64 encoded sha256 hashes preceded by
+\'sha256//\' and separated by \';\'
+
+When negotiating a TLS or SSL connection, the server sends a certificate
+indicating its identity. A public key is extracted from this certificate and
+if it does not exactly match the public key provided to this option, curl will
+abort the connection before sending or receiving any data.
+
+If this option is used several times, the last one will be used.
 .IP "--proxy-service-name <name>"
 This option allows you to change the service name for proxy negotiation.
 
@@ -1803,7 +1867,7 @@
 data. The data may be used to seed the random engine for SSL connections.  See
 also the \fI--egd-file\fP option.
 .IP "-r, --range <range>"
-(HTTP FTP SFTP FILE) Retrieve a byte range (i.e a partial document) from a HTTP/1.1, FTP or SFTP
+(HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP
 server or a local FILE. Ranges can be specified in a number of ways.
 .RS
 .TP 10
@@ -1944,7 +2008,7 @@
 Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0)
 
 If this option is used several times, the last one will be used.
-.IP "--resolve <host:port:address>"
+.IP "--resolve <host:port:address[,address]...>"
 Provide a custom address for a specific host and port pair. Using this, you
 can make the curl requests(s) use a specified address and prevent the
 otherwise normally resolved address to be used. Consider it a sort of
@@ -1958,6 +2022,8 @@
 
 Support for providing the IP address within [brackets] was added in 7.57.0.
 
+Support for providing multiple IP addresses per entry was added in 7.59.0.
+
 This option can be used many times to add many host names to resolve.
 
 Added in 7.21.3.
@@ -2263,7 +2329,9 @@
 .IP "--tlsauthtype <type>"
 Set TLS authentication type. Currently, the only supported option is "SRP",
 for TLS-SRP (RFC 5054). If \fI--tlsuser\fP and \fI--tlspassword\fP are specified but
-\fI--tlsauthtype\fP is not, then this option defaults to "SRP".
+\fI--tlsauthtype\fP is not, then this option defaults to "SRP".  This option works
+only if the underlying libcurl is built with TLS-SRP support, which requires
+OpenSSL or GnuTLS with TLS-SRP support.
 
 Added in 7.21.4.
 .IP "--tlspassword"
@@ -2383,8 +2451,8 @@
 .IP "-A, --user-agent <name>"
 (HTTP) 
 Specify the User-Agent string to send to the HTTP server. To encode blanks in
-the string, surround the string with single quote marks. This can also be set
-with the \fI-H, --header\fP option of course.
+the string, surround the string with single quote marks. This header can also
+be set with the \fI-H, --header\fP or the \fI--proxy-header\fP options.
 
 If this option is used several times, the last one will be used.
 .IP "-u, --user <user:password>"
@@ -2654,17 +2722,20 @@
 .IP "ALL_PROXY [protocol://]<host>[:port]"
 Sets the proxy server to use if no protocol-specific proxy is set.
 .IP "NO_PROXY <comma-separated list of hosts>"
-list of host names that shouldn't go through any proxy. If set to a asterisk
+list of host names that shouldn't go through any proxy. If set to an asterisk
 \&'*' only, it matches all hosts.
 
-Since 7.53.0, this environment variable disable the proxy even if specify
-\fI-x, --proxy\fP option. That is
+This environment variable disables use of the proxy even when specified with
+the \fI-x, --proxy\fP option. That is
 .B NO_PROXY=direct.example.com curl -x http://proxy.example.com
 .B http://direct.example.com
 accesses the target URL directly, and
 .B NO_PROXY=direct.example.com curl -x http://proxy.example.com
 .B http://somewhere.example.com
-accesses the target URL through proxy.
+accesses the target URL through the proxy.
+
+The list of host names can also be include numerical IP addresses, and IPv6
+versions should then be given without enclosing brackets.
 
 .SH "PROXY PROTOCOL PREFIXES"
 Since curl version 7.21.7, the proxy string may be specified with a
@@ -2675,9 +2746,9 @@
 
 The supported proxy protocol prefixes are as follows:
 .IP "http://"
-Makes it use it as a HTTP proxy. The default if no scheme prefix is used.
+Makes it use it as an HTTP proxy. The default if no scheme prefix is used.
 .IP "https://"
-Makes it treated as a \fBHTTPS\fP proxy.
+Makes it treated as an \fBHTTPS\fP proxy.
 .IP "socks4://"
 Makes it the equivalent of \fI--socks4\fP
 .IP "socks4a://"
diff --git a/docs/examples/Makefile.am b/docs/examples/Makefile.am
index afd35c2..e5ed222 100644
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -53,6 +53,9 @@
 LDADD = $(LIBDIR)/libcurl.la
 endif
 
+# This might hold -Werror
+CFLAGS += @CURL_CFLAG_EXTRAS@
+
 # Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
 include Makefile.inc
 
diff --git a/docs/examples/Makefile.inc b/docs/examples/Makefile.inc
index 9e4e1ff..e8aa9fa 100644
--- a/docs/examples/Makefile.inc
+++ b/docs/examples/Makefile.inc
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -34,7 +34,7 @@
   imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \
   http2-upload http2-serverpush getredirect ftpuploadfrommem               \
   ftpuploadresume sslbackend postit2-formadd multi-formadd                 \
-  shared-connection-cache
+  shared-connection-cache sftpuploadresume
 
 # These examples require external dependencies that may not be commonly
 # available on POSIX systems, so don't bother attempting to compile them here.
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
index 2aa10aa..3e47b46 100644
--- a/docs/examples/curlx.c
+++ b/docs/examples/curlx.c
@@ -183,7 +183,7 @@
 
 /* This is an application verification call back, it does not
    perform any addition verification but tries to find a URL
-   in the presented certificat. If found, this will become
+   in the presented certificate. If found, this will become
    the URL to be used in the POST.
 */
 
diff --git a/docs/examples/debug.c b/docs/examples/debug.c
index 554eb3e..48a3fd5 100644
--- a/docs/examples/debug.c
+++ b/docs/examples/debug.c
@@ -44,12 +44,12 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
-          text, (long)size, (long)size);
+  fprintf(stream, "%s, %10.10lu bytes (0x%8.8lx)\n",
+          text, size, size);
 
   for(i = 0; i<size; i += width) {
 
-    fprintf(stream, "%4.4lx: ", (long)i);
+    fprintf(stream, "%4.4lx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c
index 257c127..c0c230b 100644
--- a/docs/examples/evhiperfifo.c
+++ b/docs/examples/evhiperfifo.c
@@ -336,7 +336,6 @@
   CURLMcode rc;
 
   conn = calloc(1, sizeof(ConnInfo));
-  memset(conn, 0, sizeof(ConnInfo));
   conn->error[0]='\0';
 
   conn->easy = curl_easy_init();
diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c
index eb27c6a..f1706fb 100644
--- a/docs/examples/fopen.c
+++ b/docs/examples/fopen.c
@@ -237,12 +237,10 @@
   URL_FILE *file;
   (void)operation;
 
-  file = malloc(sizeof(URL_FILE));
+  file = calloc(1, sizeof(URL_FILE));
   if(!file)
     return NULL;
 
-  memset(file, 0, sizeof(URL_FILE));
-
   file->handle.file = fopen(url, operation);
   if(file->handle.file)
     file->type = CFTYPE_FILE; /* marked as URL */
diff --git a/docs/examples/ftpupload.c b/docs/examples/ftpupload.c
index 5fc41ef..bd77bb1 100644
--- a/docs/examples/ftpupload.c
+++ b/docs/examples/ftpupload.c
@@ -77,7 +77,7 @@
 
   /* get the file size of the local file */
   if(stat(LOCAL_FILE, &file_info)) {
-    printf("Couldnt open '%s': %s\n", LOCAL_FILE, strerror(errno));
+    printf("Couldn't open '%s': %s\n", LOCAL_FILE, strerror(errno));
     return 1;
   }
   fsize = (curl_off_t)file_info.st_size;
diff --git a/docs/examples/getinmemory.c b/docs/examples/getinmemory.c
index fb79478..776bbd2 100644
--- a/docs/examples/getinmemory.c
+++ b/docs/examples/getinmemory.c
@@ -100,7 +100,7 @@
      * Do something nice with it!
      */
 
-    printf("%lu bytes retrieved\n", (long)chunk.size);
+    printf("%lu bytes retrieved\n", chunk.size);
   }
 
   /* cleanup curl stuff */
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index 76bc6c1..fec62b8 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -66,10 +66,17 @@
 #include <sys/poll.h>
 #include <curl/curl.h>
 #include <event2/event.h>
+#include <event2/event_struct.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <errno.h>
+#include <sys/cdefs.h>
 
+#ifdef __GNUC__
+#define _Unused __attribute__((unused))
+#else
+#define _Unused
+#endif
 
 #define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
 
@@ -78,11 +85,12 @@
 typedef struct _GlobalInfo
 {
   struct event_base *evbase;
-  struct event *fifo_event;
-  struct event *timer_event;
+  struct event fifo_event;
+  struct event timer_event;
   CURLM *multi;
   int still_running;
   FILE *input;
+  int stopped;
 } GlobalInfo;
 
 
@@ -103,16 +111,42 @@
   CURL *easy;
   int action;
   long timeout;
-  struct event *ev;
-  int evset;
+  struct event ev;
   GlobalInfo *global;
 } SockInfo;
 
+#define __case(code) \
+  case code: s = __STRING(code)
+
+/* Die if we get a bad CURLMcode somewhere */
+static void mcode_or_die(const char *where, CURLMcode code)
+{
+  if(CURLM_OK != code) {
+    const char *s;
+    switch(code) {
+      __case(CURLM_BAD_HANDLE); break;
+      __case(CURLM_BAD_EASY_HANDLE); break;
+      __case(CURLM_OUT_OF_MEMORY); break;
+      __case(CURLM_INTERNAL_ERROR); break;
+      __case(CURLM_UNKNOWN_OPTION); break;
+      __case(CURLM_LAST); break;
+      default: s = "CURLM_unknown"; break;
+      __case(CURLM_BAD_SOCKET);
+      fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
+      /* ignore this error */
+      return;
+    }
+    fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
+    exit(code);
+  }
+}
+
+
 /* Update the event timer after curl_multi library calls */
-static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
+static int multi_timer_cb(CURLM *multi _Unused, long timeout_ms, GlobalInfo *g)
 {
   struct timeval timeout;
-  (void)multi; /* unused */
+  CURLMcode rc;
 
   timeout.tv_sec = timeout_ms/1000;
   timeout.tv_usec = (timeout_ms%1000)*1000;
@@ -127,35 +161,18 @@
    * for all other values of timeout_ms, this should set or *update*
    * the timer to the new value
    */
-  evtimer_add(g->timer_event, &timeout);
+  if(timeout_ms == 0) {
+    rc = curl_multi_socket_action(g->multi,
+                                  CURL_SOCKET_TIMEOUT, 0, &g->still_running);
+    mcode_or_die("multi_timer_cb: curl_multi_socket_action", rc);
+  }
+  else if(timeout_ms == -1)
+    evtimer_del(&g->timer_event);
+  else
+    evtimer_add(&g->timer_event, &timeout);
   return 0;
 }
 
-/* Die if we get a bad CURLMcode somewhere */
-static void mcode_or_die(const char *where, CURLMcode code)
-{
-  if(CURLM_OK != code) {
-    const char *s;
-    switch(code) {
-      case     CURLM_BAD_HANDLE:         s = "CURLM_BAD_HANDLE";         break;
-      case     CURLM_BAD_EASY_HANDLE:    s = "CURLM_BAD_EASY_HANDLE";    break;
-      case     CURLM_OUT_OF_MEMORY:      s = "CURLM_OUT_OF_MEMORY";      break;
-      case     CURLM_INTERNAL_ERROR:     s = "CURLM_INTERNAL_ERROR";     break;
-      case     CURLM_UNKNOWN_OPTION:     s = "CURLM_UNKNOWN_OPTION";     break;
-      case     CURLM_LAST:               s = "CURLM_LAST";               break;
-      default: s = "CURLM_unknown";
-        break;
-    case     CURLM_BAD_SOCKET:         s = "CURLM_BAD_SOCKET";
-      fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-      /* ignore this error */
-      return;
-    }
-    fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
-    exit(code);
-  }
-}
-
-
 
 /* Check for completed transfers, and remove their easy handles */
 static void check_multi_info(GlobalInfo *g)
@@ -181,6 +198,8 @@
       free(conn);
     }
   }
+  if(g->still_running == 0 && g->stopped)
+    event_base_loopbreak(g->evbase);
 }
 
 
@@ -201,8 +220,8 @@
   check_multi_info(g);
   if(g->still_running <= 0) {
     fprintf(MSG_OUT, "last transfer done, kill timeout\n");
-    if(evtimer_pending(g->timer_event, NULL)) {
-      evtimer_del(g->timer_event);
+    if(evtimer_pending(&g->timer_event, NULL)) {
+      evtimer_del(&g->timer_event);
     }
   }
 }
@@ -210,12 +229,10 @@
 
 
 /* Called by libevent when our timeout expires */
-static void timer_cb(int fd, short kind, void *userp)
+static void timer_cb(int fd _Unused, short kind _Unused, void *userp)
 {
   GlobalInfo *g = (GlobalInfo *)userp;
   CURLMcode rc;
-  (void)fd;
-  (void)kind;
 
   rc = curl_multi_socket_action(g->multi,
                                   CURL_SOCKET_TIMEOUT, 0, &g->still_running);
@@ -229,8 +246,7 @@
 static void remsock(SockInfo *f)
 {
   if(f) {
-    if(f->evset)
-      event_free(f->ev);
+    event_del(&f->ev);
     free(f);
   }
 }
@@ -247,11 +263,9 @@
   f->sockfd = s;
   f->action = act;
   f->easy = e;
-  if(f->evset)
-    event_free(f->ev);
-  f->ev = event_new(g->evbase, f->sockfd, kind, event_cb, g);
-  f->evset = 1;
-  event_add(f->ev, NULL);
+  event_del(&f->ev);
+  event_assign(&f->ev, g->evbase, f->sockfd, kind, event_cb, g);
+  event_add(&f->ev, NULL);
 }
 
 
@@ -297,23 +311,21 @@
 
 
 /* CURLOPT_WRITEFUNCTION */
-static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
+static size_t write_cb(void *ptr _Unused, size_t size, size_t nmemb,
+                       void *data)
 {
   size_t realsize = size * nmemb;
-  ConnInfo *conn = (ConnInfo*) data;
-  (void)ptr;
-  (void)conn;
+  ConnInfo *conn _Unused = (ConnInfo*) data;
+
   return realsize;
 }
 
 
 /* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb(void *p, double dltotal, double dlnow, double ult,
-                   double uln)
+static int prog_cb(void *p, double dltotal, double dlnow, double ult _Unused,
+                   double uln _Unused)
 {
   ConnInfo *conn = (ConnInfo *)p;
-  (void)ult;
-  (void)uln;
 
   fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
   return 0;
@@ -327,7 +339,6 @@
   CURLMcode rc;
 
   conn = calloc(1, sizeof(ConnInfo));
-  memset(conn, 0, sizeof(ConnInfo));
   conn->error[0]='\0';
 
   conn->easy = curl_easy_init();
@@ -346,6 +357,7 @@
   curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
   curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
+  curl_easy_setopt(conn->easy, CURLOPT_FOLLOWLOCATION, 1L);
   fprintf(MSG_OUT,
           "Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
   rc = curl_multi_add_handle(g->multi, conn->easy);
@@ -356,21 +368,25 @@
 }
 
 /* This gets called whenever data is received from the fifo */
-static void fifo_cb(int fd, short event, void *arg)
+static void fifo_cb(int fd _Unused, short event _Unused, void *arg)
 {
   char s[1024];
   long int rv = 0;
   int n = 0;
   GlobalInfo *g = (GlobalInfo *)arg;
-  (void)fd; /* unused */
-  (void)event; /* unused */
 
   do {
     s[0]='\0';
     rv = fscanf(g->input, "%1023s%n", s, &n);
     s[n]='\0';
     if(n && s[0]) {
-      new_conn(s, arg);  /* if we read a URL, go get it! */
+      if(!strcmp(s, "stop")) {
+        g->stopped = 1;
+        if(g->still_running == 0)
+          event_base_loopbreak(g->evbase);
+      }
+      else
+        new_conn(s, arg);  /* if we read a URL, go get it! */
     }
     else
       break;
@@ -405,29 +421,28 @@
   g->input = fdopen(sockfd, "r");
 
   fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
-  g->fifo_event = event_new(g->evbase, sockfd, EV_READ|EV_PERSIST, fifo_cb, g);
-  event_add(g->fifo_event, NULL);
+  event_assign(&g->fifo_event, g->evbase, sockfd, EV_READ|EV_PERSIST,
+               fifo_cb, g);
+  event_add(&g->fifo_event, NULL);
   return (0);
 }
 
 static void clean_fifo(GlobalInfo *g)
 {
-    event_free(g->fifo_event);
+    event_del(&g->fifo_event);
     fclose(g->input);
     unlink(fifo);
 }
 
-int main(int argc, char **argv)
+int main(int argc _Unused, char **argv _Unused)
 {
   GlobalInfo g;
-  (void)argc;
-  (void)argv;
 
   memset(&g, 0, sizeof(GlobalInfo));
   g.evbase = event_base_new();
   init_fifo(&g);
   g.multi = curl_multi_init();
-  g.timer_event = evtimer_new(g.evbase, timer_cb, &g);
+  evtimer_assign(&g.timer_event, g.evbase, timer_cb, &g);
 
   /* setup the generic multi interface options we want */
   curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
@@ -443,7 +458,7 @@
   /* this, of course, won't get called since only way to stop this program is
      via ctrl-C, but it is here to show how cleanup /would/ be done. */
   clean_fifo(&g);
-  event_free(g.timer_event);
+  event_del(&g.timer_event);
   event_base_free(g.evbase);
   curl_multi_cleanup(g.multi);
   return 0;
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
index 8515663..cc9ff2b 100644
--- a/docs/examples/http2-download.c
+++ b/docs/examples/http2-download.c
@@ -71,12 +71,12 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
-          num, text, (long)size, (long)size);
+  fprintf(stderr, "%d %s, %lu bytes (0x%lx)\n",
+          num, text, size, size);
 
   for(i = 0; i<size; i += width) {
 
-    fprintf(stderr, "%4.4lx: ", (long)i);
+    fprintf(stderr, "%4.4lx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
index 0162a8f..94c8db9 100644
--- a/docs/examples/http2-serverpush.c
+++ b/docs/examples/http2-serverpush.c
@@ -51,12 +51,12 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stderr, "%s, %ld bytes (0x%lx)\n",
-          text, (long)size, (long)size);
+  fprintf(stderr, "%s, %lu bytes (0x%lx)\n",
+          text, size, size);
 
   for(i = 0; i<size; i += width) {
 
-    fprintf(stderr, "%4.4lx: ", (long)i);
+    fprintf(stderr, "%4.4lx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
@@ -180,12 +180,12 @@
   /* write to this file */
   curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
 
-  fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n",
-          count, (int)num_headers);
+  fprintf(stderr, "**** push callback approves stream %u, got %lu headers!\n",
+          count, num_headers);
 
   for(i = 0; i<num_headers; i++) {
     headp = curl_pushheader_bynum(headers, i);
-    fprintf(stderr, "**** header %u: %s\n", (int)i, headp);
+    fprintf(stderr, "**** header %lu: %s\n", i, headp);
   }
 
   headp = curl_pushheader_byname(headers, ":path");
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
index d7aa320..827d172 100644
--- a/docs/examples/http2-upload.c
+++ b/docs/examples/http2-upload.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -72,12 +72,12 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stderr, "%d %s, %ld bytes (0x%lx)\n",
-          num, text, (long)size, (long)size);
+  fprintf(stderr, "%d %s, %lu bytes (0x%lx)\n",
+          num, text, size, size);
 
   for(i = 0; i<size; i += width) {
 
-    fprintf(stderr, "%4.4lx: ", (long)i);
+    fprintf(stderr, "%4.4lx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
@@ -113,7 +113,7 @@
              char *data, size_t size,
              void *userp)
 {
-  char timebuf[20];
+  char timebuf[60];
   const char *text;
   int num = hnd2num(handle);
   static time_t epoch_offset;
diff --git a/docs/examples/multi-debugcallback.c b/docs/examples/multi-debugcallback.c
index abb0de6..5de3ff3 100644
--- a/docs/examples/multi-debugcallback.c
+++ b/docs/examples/multi-debugcallback.c
@@ -51,12 +51,12 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
-          text, (long)size, (long)size);
+  fprintf(stream, "%s, %10.10lu bytes (0x%8.8lx)\n",
+          text, size, size);
 
   for(i = 0; i<size; i += width) {
 
-    fprintf(stream, "%4.4lx: ", (long)i);
+    fprintf(stream, "%4.4lx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c
index 024a0e1..86a813a 100644
--- a/docs/examples/sessioninfo.c
+++ b/docs/examples/sessioninfo.c
@@ -63,7 +63,7 @@
                gnutls_x509_crt_import(cert, &chainp[i], GNUTLS_X509_FMT_DER)) {
               if(GNUTLS_E_SUCCESS ==
                  gnutls_x509_crt_print(cert, GNUTLS_CRT_PRINT_FULL, &dn)) {
-                fprintf(stderr, "Certificate #%d: %.*s", i, dn.size, dn.data);
+                fprintf(stderr, "Certificate #%u: %.*s", i, dn.size, dn.data);
 
                 gnutls_free(dn.data);
               }
diff --git a/docs/examples/sftpuploadresume.c b/docs/examples/sftpuploadresume.c
new file mode 100644
index 0000000..6e60c1e
--- /dev/null
+++ b/docs/examples/sftpuploadresume.c
@@ -0,0 +1,134 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/* <DESC>
+ * Upload to SFTP, resuming a previously aborted transfer.
+ * </DESC>
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <curl/curl.h>
+
+/* read data to upload */
+static size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+  FILE *f = (FILE *)stream;
+  size_t n;
+
+  if(ferror(f))
+    return CURL_READFUNC_ABORT;
+
+  n = fread(ptr, size, nmemb, f) * size;
+
+  return n;
+}
+
+/*
+ * sftpGetRemoteFileSize returns the remote file size in byte; -1 on error
+ */
+static curl_off_t sftpGetRemoteFileSize(const char *i_remoteFile)
+{
+  CURLcode result = CURLE_GOT_NOTHING;
+  curl_off_t remoteFileSizeByte = -1;
+  CURL *curlHandlePtr = NULL;
+
+  curlHandlePtr = curl_easy_init();
+  curl_easy_setopt(curlHandlePtr, CURLOPT_VERBOSE, 1L);
+
+  curl_easy_setopt(curlHandlePtr, CURLOPT_URL, i_remoteFile);
+  curl_easy_setopt(curlHandlePtr, CURLOPT_NOPROGRESS, 1);
+  curl_easy_setopt(curlHandlePtr, CURLOPT_NOBODY, 1);
+  curl_easy_setopt(curlHandlePtr, CURLOPT_HEADER, 1);
+  curl_easy_setopt(curlHandlePtr, CURLOPT_FILETIME, 1);
+
+  result = curl_easy_perform(curlHandlePtr);
+  if(CURLE_OK == result) {
+    result = curl_easy_getinfo(curlHandlePtr,
+                               CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
+                               &remoteFileSizeByte);
+    printf("filesize: %" CURL_FORMAT_CURL_OFF_T "\n", remoteFileSizeByte);
+  }
+  curl_easy_cleanup(curlHandlePtr);
+
+  return remoteFileSizeByte;
+}
+
+
+static int sftpResumeUpload(CURL *curlhandle, const char *remotepath,
+                            const char *localpath)
+{
+  FILE *f = NULL;
+  CURLcode result = CURLE_GOT_NOTHING;
+
+  curl_off_t remoteFileSizeByte = sftpGetRemoteFileSize(remotepath);
+  if(-1 == remoteFileSizeByte) {
+    printf("Error reading the remote file size: unable to resume upload\n");
+    return -1;
+  }
+
+  f = fopen(localpath, "rb");
+  if(!f) {
+    perror(NULL);
+    return 0;
+  }
+
+  curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
+  curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
+  curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
+  curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
+
+#ifdef _WIN32
+  _fseeki64(f, remoteFileSizeByte, SEEK_SET);
+#else
+  fseek(f, (long)remoteFileSizeByte, SEEK_SET);
+#endif
+  curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
+  result = curl_easy_perform(curlhandle);
+
+  fclose(f);
+
+  if(result == CURLE_OK)
+    return 1;
+  else {
+    fprintf(stderr, "%s\n", curl_easy_strerror(result));
+    return 0;
+  }
+}
+
+int main(void)
+{
+  const char *remote = "sftp://user:pass@example.com/path/filename";
+  const char *filename = "filename";
+  CURL *curlhandle = NULL;
+
+  curl_global_init(CURL_GLOBAL_ALL);
+  curlhandle = curl_easy_init();
+
+  if(!sftpResumeUpload(curlhandle, remote, filename)) {
+    printf("resumed upload using curl %s failed\n", curl_version());
+  }
+
+  curl_easy_cleanup(curlhandle);
+  curl_global_cleanup();
+
+  return 0;
+}
diff --git a/docs/examples/shared-connection-cache.c b/docs/examples/shared-connection-cache.c
index a1aa0d6..91864d9 100644
--- a/docs/examples/shared-connection-cache.c
+++ b/docs/examples/shared-connection-cache.c
@@ -20,7 +20,7 @@
  *
  ***************************************************************************/
 /* <DESC>
- * Connection cache shared between easy handles with the share inteface
+ * Connection cache shared between easy handles with the share interface
  * </DESC>
  */
 #include <stdio.h>
diff --git a/docs/libcurl/Makefile.am b/docs/libcurl/Makefile.am
index 8a232e8..041f02e 100644
--- a/docs/libcurl/Makefile.am
+++ b/docs/libcurl/Makefile.am
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -38,7 +38,7 @@
 CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) $(man_DISTMANS) \
   libcurl-symbols.3
 
-EXTRA_DIST = $(man_MANS) index.html ABI symbols-in-versions symbols.pl  \
+EXTRA_DIST = $(man_MANS) ABI symbols-in-versions symbols.pl  \
   mksymbolsmanpage.pl CMakeLists.txt
 MAN2HTML= roffit --mandir=. $< >$@
 
diff --git a/docs/libcurl/Makefile.inc b/docs/libcurl/Makefile.inc
index 3ac5036..eea48c4 100644
--- a/docs/libcurl/Makefile.inc
+++ b/docs/libcurl/Makefile.inc
@@ -21,4 +21,5 @@
   curl_mime_init.3 curl_mime_free.3 curl_mime_addpart.3 curl_mime_name.3 \
   curl_mime_data.3 curl_mime_data_cb.3 curl_mime_filedata.3              \
   curl_mime_filename.3 curl_mime_subparts.3                              \
-  curl_mime_type.3 curl_mime_headers.3 curl_mime_encoder.3 libcurl-env.3
+  curl_mime_type.3 curl_mime_headers.3 curl_mime_encoder.3 libcurl-env.3 \
+  libcurl-security.3
diff --git a/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index 09d9f67..2990f59 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_cleanup 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_cleanup 3 "April 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_cleanup - End a libcurl easy handle
diff --git a/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index 0479179..61b3ec0 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_duphandle 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_duphandle 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_duphandle - Clone a libcurl session handle
diff --git a/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index 7d853ee..c21dc75 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_escape 3 "August 12, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_escape - URL encodes the given string
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index 62ebe46..3a93671 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_getinfo 3 "June 15, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_getinfo 3 "January 25, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_getinfo - extract information from a curl handle
@@ -55,8 +55,9 @@
 The http version used in the connection.
 See \fICURLINFO_HTTP_VERSION(3)\fP
 .IP CURLINFO_FILETIME
-Remote time of the retrieved document.
-See \fICURLINFO_FILETIME(3)\fP
+Remote time of the retrieved document. See \fICURLINFO_FILETIME(3)\fP
+.IP CURLINFO_FILETIME_T
+Remote time of the retrieved document. See \fICURLINFO_FILETIME_T(3)\fP
 .IP CURLINFO_TOTAL_TIME
 Total time of previous transfer.
 See \fICURLINFO_TOTAL_TIME(3)\fP
diff --git a/docs/libcurl/curl_easy_init.3 b/docs/libcurl/curl_easy_init.3
index eb2716b..d487d25 100644
--- a/docs/libcurl/curl_easy_init.3
+++ b/docs/libcurl/curl_easy_init.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_init 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_init - Start a libcurl easy session
diff --git a/docs/libcurl/curl_easy_pause.3 b/docs/libcurl/curl_easy_pause.3
index 64bf5fe..61e9ad2 100644
--- a/docs/libcurl/curl_easy_pause.3
+++ b/docs/libcurl/curl_easy_pause.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_pause 3 "May 01, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_pause - pause and unpause a connection
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index 12f718a..61a80c1 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_perform 3 "May 02, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_perform 3 "May 02, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_perform - perform a blocking file transfer
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index 1cb5325..52ad0ef 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_recv 3 "December 18, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_recv - receives raw data on an "easy" connection
diff --git a/docs/libcurl/curl_easy_reset.3 b/docs/libcurl/curl_easy_reset.3
index 7fb41d8..3f7cd56 100644
--- a/docs/libcurl/curl_easy_reset.3
+++ b/docs/libcurl/curl_easy_reset.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_reset 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_reset 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_reset - reset all options of a libcurl session handle
diff --git a/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index 5809723..0f38a87 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_send 3 "December 18, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_send - sends raw data over an "easy" connection
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 3d8039a..4e8572e 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_setopt 3 "September 02, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_setopt 3 "April 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_setopt \- set options for a curl easy handle
@@ -140,6 +140,10 @@
 Data pointer to pass to the wildcard matching callback. See \fICURLOPT_FNMATCH_DATA(3)\fP
 .IP CURLOPT_SUPPRESS_CONNECT_HEADERS
 Suppress proxy CONNECT response headers from user callbacks. See \fICURLOPT_SUPPRESS_CONNECT_HEADERS(3)\fP
+.IP CURLOPT_RESOLVER_START_FUNCTION
+Callback to be called before a new resolve request is started. See \fICURLOPT_RESOLVER_START_FUNCTION(3)\fP
+.IP CURLOPT_RESOLVER_START_DATA
+Data pointer to pass to resolver start callback. See \fICURLOPT_RESOLVER_START_DATA(3)\fP
 .SH ERROR OPTIONS
 .IP CURLOPT_ERRORBUFFER
 Error message buffer. See \fICURLOPT_ERRORBUFFER(3)\fP
@@ -182,6 +186,8 @@
 Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
 .IP CURLOPT_PROXY_SERVICE_NAME
 Proxy authentication service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
+.IP CURLOPT_HAPROXYPROTOCOL
+Send an HAProxy PROXY protocol header. See \fICURLOPT_HAPROXYPROTOCOL(3)\fP
 .IP CURLOPT_SERVICE_NAME
 Authentication service name. \fICURLOPT_SERVICE_NAME(3)\fP
 .IP CURLOPT_INTERFACE
@@ -269,9 +275,9 @@
 .IP CURLOPT_POSTREDIR
 How to act on redirects after POST. See \fICURLOPT_POSTREDIR(3)\fP
 .IP CURLOPT_PUT
-Issue a HTTP PUT request. See \fICURLOPT_PUT(3)\fP
+Issue an HTTP PUT request. See \fICURLOPT_PUT(3)\fP
 .IP CURLOPT_POST
-Issue a HTTP POST request. See \fICURLOPT_POST(3)\fP
+Issue an HTTP POST request. See \fICURLOPT_POST(3)\fP
 .IP CURLOPT_POSTFIELDS
 Send a POST with this data. See \fICURLOPT_POSTFIELDS(3)\fP
 .IP CURLOPT_POSTFIELDSIZE
@@ -305,7 +311,7 @@
 .IP CURLOPT_COOKIELIST
 Add or control cookies. See \fICURLOPT_COOKIELIST(3)\fP
 .IP CURLOPT_HTTPGET
-Do a HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
+Do an HTTP GET request. See \fICURLOPT_HTTPGET(3)\fP
 .IP CURLOPT_REQUEST_TARGET
 Set the request target. \fICURLOPT_REQUEST_TARGET(3)\fP
 .IP CURLOPT_HTTP_VERSION
@@ -422,6 +428,8 @@
 Make a time conditional request. See \fICURLOPT_TIMECONDITION(3)\fP
 .IP CURLOPT_TIMEVALUE
 Time value for the time conditional request. See \fICURLOPT_TIMEVALUE(3)\fP
+.IP CURLOPT_TIMEVALUE_LARGE
+Time value for the time conditional request. See \fICURLOPT_TIMEVALUE_LARGE(3)\fP
 .SH CONNECTION OPTIONS
 .IP CURLOPT_TIMEOUT
 Timeout for the entire request. See \fICURLOPT_TIMEOUT(3)\fP
@@ -461,8 +469,12 @@
 Bind name resolves to this IP6 address. See \fICURLOPT_DNS_LOCAL_IP6(3)\fP
 .IP CURLOPT_DNS_SERVERS
 Preferred DNS servers. See \fICURLOPT_DNS_SERVERS(3)\fP
+.IP CURLOPT_DNS_SHUFFLE_ADDRESSES
+Shuffle addresses before use. See \fICURLOPT_DNS_SHUFFLE_ADDRESSES(3)\fP
 .IP CURLOPT_ACCEPTTIMEOUT_MS
 Timeout for waiting for the server's connect back to be accepted. See \fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP
+.IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
+Timeout for happy eyeballs. See \fICURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS(3)\fP
 .SH SSL and SECURITY OPTIONS
 .IP CURLOPT_SSLCERT
 Client cert. See \fICURLOPT_SSLCERT(3)\fP
diff --git a/docs/libcurl/curl_easy_strerror.3 b/docs/libcurl/curl_easy_strerror.3
index e3505b4..45e0c33 100644
--- a/docs/libcurl/curl_easy_strerror.3
+++ b/docs/libcurl/curl_easy_strerror.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_strerror 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_strerror - return string describing error code
diff --git a/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index 5b6520e..61cf12e 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_easy_unescape 3 "October 04, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_easy_unescape - URL decodes the given string
diff --git a/docs/libcurl/curl_escape.3 b/docs/libcurl/curl_escape.3
index 6fee63d..c811e39 100644
--- a/docs/libcurl/curl_escape.3
+++ b/docs/libcurl/curl_escape.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_escape 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_escape 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_escape - URL encodes the given string
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index 5bd91e4..1b5e457 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_formadd 3 "October 08, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_formadd 3 "October 08, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_formadd - add a section to a multipart/formdata HTTP POST
diff --git a/docs/libcurl/curl_formfree.3 b/docs/libcurl/curl_formfree.3
index 9de81a2..c3a8bcb 100644
--- a/docs/libcurl/curl_formfree.3
+++ b/docs/libcurl/curl_formfree.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_formfree 3 "September 02, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_formfree 3 "September 02, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_formfree - free a previously build multipart/formdata HTTP POST chain
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index 5aaf075..7a6eea1 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_formget 3 "September 02, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_formget 3 "September 02, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_formget - serialize a previously built multipart/formdata HTTP POST chain
diff --git a/docs/libcurl/curl_free.3 b/docs/libcurl/curl_free.3
index 69fed2c..4103bb7 100644
--- a/docs/libcurl/curl_free.3
+++ b/docs/libcurl/curl_free.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_free 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_free 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_free - reclaim memory that has been obtained through a libcurl call
diff --git a/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index 9fe12bb..b0bf522 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_getdate 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_getdate 3 "January 18, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_getdate - Convert a date string to number of seconds
@@ -97,13 +97,15 @@
 This function returns -1 when it fails to parse the date string. Otherwise it
 returns the number of seconds as described.
 
-If the year is larger than 2037 on systems with 32 bit time_t, this function
-will return 0x7fffffff (since that is the largest possible signed 32 bit
-number).
+On systems with a signed 32 bit time_t: if the year is larger than 2037 or
+less than 1903, this function will return -1.
 
-Having a 64 bit time_t is not a guarantee that dates beyond 03:14:07 UTC,
-January 19, 2038 will work fine. On systems with a 64 bit time_t but with a
-crippled mktime(), \fIcurl_getdate(3)\fP will return -1 in this case.
+On systems with an unsigned 32 bit time_t: if the year is larger than 2106 or
+less than 1970, this function will return -1.
+
+On systems with 64 bit time_t: if the year is less than 1583, this function
+will return -1. (The Gregorian calendar was first introduced 1582 so no "real"
+dates in this way of doing dates existed before then.)
 .SH "SEE ALSO"
 .BR curl_easy_escape "(3), " curl_easy_unescape "(3), "
 .BR CURLOPT_TIMECONDITION "(3), " CURLOPT_TIMEVALUE "(3) "
diff --git a/docs/libcurl/curl_getenv.3 b/docs/libcurl/curl_getenv.3
index cfff00c..6b0b3a9 100644
--- a/docs/libcurl/curl_getenv.3
+++ b/docs/libcurl/curl_getenv.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_getenv 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_getenv 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_getenv - return value for environment name
diff --git a/docs/libcurl/curl_global_cleanup.3 b/docs/libcurl/curl_global_cleanup.3
index 2e2f489..f05c0e4 100644
--- a/docs/libcurl/curl_global_cleanup.3
+++ b/docs/libcurl/curl_global_cleanup.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_global_cleanup 3 "September 20, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_global_cleanup - global libcurl cleanup
diff --git a/docs/libcurl/curl_global_init.3 b/docs/libcurl/curl_global_init.3
index 5548640..714d7c6 100644
--- a/docs/libcurl/curl_global_init.3
+++ b/docs/libcurl/curl_global_init.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_global_init 3 "November 23, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_global_init 3 "April 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_global_init - Global libcurl initialisation
@@ -63,14 +63,14 @@
 \fBCURL_GLOBAL_ACK_EINTR\fP.
 
 .IP CURL_GLOBAL_SSL
-(This flag's presence or absense serves no meaning since 7.57.0. The
+(This flag's presence or absence serves no meaning since 7.57.0. The
 description below is for older libcurl versions.)
 
 Initialize SSL.
 
 The implication here is that if this bit is not set, the initialization of the
 SSL layer needs to be done by the application or at least outside of
-libcurl. The exact procedure how to do SSL initializtion depends on the TLS
+libcurl. The exact procedure how to do SSL initialization depends on the TLS
 backend libcurl uses.
 
 Doing TLS based transfers without having the TLS layer initialized may lead to
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index bb320f8..1c59d3f 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_global_init_mem 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_global_init_mem 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_global_init_mem - Global libcurl initialisation with memory callbacks
diff --git a/docs/libcurl/curl_global_sslset.3 b/docs/libcurl/curl_global_sslset.3
index 42b3fbf..3e93d00 100644
--- a/docs/libcurl/curl_global_sslset.3
+++ b/docs/libcurl/curl_global_sslset.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_global_sslset 3 "September 21, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_global_sslset 3 "April 15, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_global_sslset - Select SSL backend to use with libcurl
@@ -65,6 +65,9 @@
 NULL-terminated list of available backends. The available backends are those
 that this particular build of libcurl supports.
 
+Since libcurl 7.60.0, the \fIavail\fP pointer will always be set to the list
+of alternatives if non-NULL.
+
 Upon success, the function returns CURLSSLSET_OK.
 
 If the specified SSL backend is not available, the function returns
@@ -85,7 +88,7 @@
 .SH RETURN VALUE
 If this function returns CURLSSLSET_OK, the backend was successfully selected.
 
-If the chosen backend is unknown (or support for the chosed backend has not
+If the chosen backend is unknown (or support for the chosen backend has not
 been compiled into libcurl), the function returns \fICURLSSLSET_UNKNOWN_BACKEND\fP.
 
 If the backend had been configured previously, or if \fIcurl_global_init(3)\fP
diff --git a/docs/libcurl/curl_mime_addpart.3 b/docs/libcurl/curl_mime_addpart.3
index 7e85e32..e8333d4 100644
--- a/docs/libcurl/curl_mime_addpart.3
+++ b/docs/libcurl/curl_mime_addpart.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_addpart 3 "September 22, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_addpart - append a new empty part to a mime structure
diff --git a/docs/libcurl/curl_mime_data.3 b/docs/libcurl/curl_mime_data.3
index 6426d6f..e75ef7c 100644
--- a/docs/libcurl/curl_mime_data.3
+++ b/docs/libcurl/curl_mime_data.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_data 3 "September 22, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_data - set a mime part's body data from memory
diff --git a/docs/libcurl/curl_mime_data_cb.3 b/docs/libcurl/curl_mime_data_cb.3
index fee806b..fd80e51 100644
--- a/docs/libcurl/curl_mime_data_cb.3
+++ b/docs/libcurl/curl_mime_data_cb.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_data_cb 3 "January 14, 2018" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_data_cb 3 "April 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_data_cb - set a callback-based data source for a mime part's body
@@ -69,7 +69,7 @@
 in that memory area. Returning 0 will signal end-of-file to the library and
 cause it to stop the current transfer.
 
-If you stop the current transfer by returning 0 "pre-maturely" (i.e before the
+If you stop the current transfer by returning 0 "pre-maturely" (i.e. before the
 server expected it, like when you've said you will upload N bytes and you
 upload less than N bytes), you may experience that the server "hangs" waiting
 for the rest of the data that won't come.
diff --git a/docs/libcurl/curl_mime_encoder.3 b/docs/libcurl/curl_mime_encoder.3
index 410e5c2..02d50cf 100644
--- a/docs/libcurl/curl_mime_encoder.3
+++ b/docs/libcurl/curl_mime_encoder.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_encoder 3 "September 05, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_encoder - set a mime part's encoder and content transfer encoding
diff --git a/docs/libcurl/curl_mime_filedata.3 b/docs/libcurl/curl_mime_filedata.3
index f1853da..0765a62 100644
--- a/docs/libcurl/curl_mime_filedata.3
+++ b/docs/libcurl/curl_mime_filedata.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_filedata 3 "January 14, 2018" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_filedata 3 "April 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_filedata - set a mime part's body data from a file contents
@@ -31,7 +31,7 @@
 .ad
 .SH DESCRIPTION
 \fIcurl_mime_filedata(3)\fP sets a mime part's body content from the named
-file's contents. This is an alernative to \fIcurl_mime_data(3)\fP for setting
+file's contents. This is an alternative to \fIcurl_mime_data(3)\fP for setting
 data to a mime part.
 
 \fIpart\fP is the part's to assign contents to.
diff --git a/docs/libcurl/curl_mime_filename.3 b/docs/libcurl/curl_mime_filename.3
index 0f384d9..fa4cf0d 100644
--- a/docs/libcurl/curl_mime_filename.3
+++ b/docs/libcurl/curl_mime_filename.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_filename 3 "September 22, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_filename - set a mime part's remote file name
diff --git a/docs/libcurl/curl_mime_free.3 b/docs/libcurl/curl_mime_free.3
index e89edec..c6fc7bf 100644
--- a/docs/libcurl/curl_mime_free.3
+++ b/docs/libcurl/curl_mime_free.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_free 3 "September 04, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_free 3 "September 04, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_free - free a previously built mime structure
diff --git a/docs/libcurl/curl_mime_headers.3 b/docs/libcurl/curl_mime_headers.3
index 13e0921..e34240f 100644
--- a/docs/libcurl/curl_mime_headers.3
+++ b/docs/libcurl/curl_mime_headers.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_headers 3 "September 22, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_headers - set a mime part's custom headers
diff --git a/docs/libcurl/curl_mime_init.3 b/docs/libcurl/curl_mime_init.3
index fb11dfc..5b51ddc 100644
--- a/docs/libcurl/curl_mime_init.3
+++ b/docs/libcurl/curl_mime_init.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_init 3 "September 22, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_init - create a mime handle
diff --git a/docs/libcurl/curl_mime_name.3 b/docs/libcurl/curl_mime_name.3
index df74679..63a899e 100644
--- a/docs/libcurl/curl_mime_name.3
+++ b/docs/libcurl/curl_mime_name.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_name 3 "September 22, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_name - set a mime part's name
diff --git a/docs/libcurl/curl_mime_subparts.3 b/docs/libcurl/curl_mime_subparts.3
index a06b4dc..7477877 100644
--- a/docs/libcurl/curl_mime_subparts.3
+++ b/docs/libcurl/curl_mime_subparts.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_subparts 3 "September 05, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_subparts - set subparts of a multipart mime part
diff --git a/docs/libcurl/curl_mime_type.3 b/docs/libcurl/curl_mime_type.3
index 4227d39..60feadf 100644
--- a/docs/libcurl/curl_mime_type.3
+++ b/docs/libcurl/curl_mime_type.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_mime_type 3 "September 22, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_mime_type 3 "April 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_mime_type - set a mime part's content type
@@ -46,7 +46,7 @@
 .br
 - If set as a custom header, use this value.
 .br
-- application/form-data for a HTTP form post.
+- application/form-data for an HTTP form post.
 .br
 - If a remote file name is set, the mime type is taken from the file name
 extension, or application/octet-stream by default.
diff --git a/docs/libcurl/curl_mprintf.3 b/docs/libcurl/curl_mprintf.3
index 6b1e735..4a66db2 100644
--- a/docs/libcurl/curl_mprintf.3
+++ b/docs/libcurl/curl_mprintf.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_printf 3 "April 01, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_printf 3 "April 01, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_maprintf, curl_mfprintf, curl_mprintf, curl_msnprintf, curl_msprintf
diff --git a/docs/libcurl/curl_multi_add_handle.3 b/docs/libcurl/curl_multi_add_handle.3
index b0e5b2a..344cb5d 100644
--- a/docs/libcurl/curl_multi_add_handle.3
+++ b/docs/libcurl/curl_multi_add_handle.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_add_handle 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_add_handle 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_add_handle - add an easy handle to a multi session
diff --git a/docs/libcurl/curl_multi_assign.3 b/docs/libcurl/curl_multi_assign.3
index 4fe296e..b481f37 100644
--- a/docs/libcurl/curl_multi_assign.3
+++ b/docs/libcurl/curl_multi_assign.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_assign 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_assign \- set data to associate with an internal socket
diff --git a/docs/libcurl/curl_multi_cleanup.3 b/docs/libcurl/curl_multi_cleanup.3
index d36a52d..218d4b5 100644
--- a/docs/libcurl/curl_multi_cleanup.3
+++ b/docs/libcurl/curl_multi_cleanup.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_cleanup 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_cleanup 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_cleanup - close down a multi session
diff --git a/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3
index efca9fe..3aea440 100644
--- a/docs/libcurl/curl_multi_fdset.3
+++ b/docs/libcurl/curl_multi_fdset.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_fdset 3 "November 09, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_fdset - extracts file descriptor information from a multi handle
diff --git a/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index b71a72c..e6a9dc9 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_info_read 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_info_read - read multi stack informationals
diff --git a/docs/libcurl/curl_multi_init.3 b/docs/libcurl/curl_multi_init.3
index 10bddca..5ba50e3 100644
--- a/docs/libcurl/curl_multi_init.3
+++ b/docs/libcurl/curl_multi_init.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_init 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_init 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_init - create a multi handle
diff --git a/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index 3840960..39c8a5d 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_perform 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_perform - reads/writes available data from each easy handle
diff --git a/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index 11763d3..eb46ee8 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_remove_handle 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_remove_handle 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_remove_handle - remove an easy handle from a multi session
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index fd0cab7..3b379ac 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_setopt 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_setopt \- set options for a curl multi handle
diff --git a/docs/libcurl/curl_multi_socket.3 b/docs/libcurl/curl_multi_socket.3
index fd51957..0625d38 100644
--- a/docs/libcurl/curl_multi_socket.3
+++ b/docs/libcurl/curl_multi_socket.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_socket 3 "December 15, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_socket 3 "December 15, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_socket \- reads/writes available data
diff --git a/docs/libcurl/curl_multi_socket_action.3 b/docs/libcurl/curl_multi_socket_action.3
index c6491e6..e9a8630 100644
--- a/docs/libcurl/curl_multi_socket_action.3
+++ b/docs/libcurl/curl_multi_socket_action.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_socket_action 3 "June 07, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_socket_action 3 "June 07, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_socket_action \- reads/writes available data given an action
diff --git a/docs/libcurl/curl_multi_strerror.3 b/docs/libcurl/curl_multi_strerror.3
index f115e6e..b3037ed 100644
--- a/docs/libcurl/curl_multi_strerror.3
+++ b/docs/libcurl/curl_multi_strerror.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_strerror 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_strerror - return string describing error code
diff --git a/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index 5ddf896..c8e7c6a 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_timeout 3 "May 02, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_timeout 3 "May 02, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_timeout \- how long to wait for action before proceeding
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index 8d7b112..f04159e 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_multi_wait 3 "March 09, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_multi_wait 3 "March 09, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_multi_wait - polls on all easy handles in a multi handle
diff --git a/docs/libcurl/curl_share_cleanup.3 b/docs/libcurl/curl_share_cleanup.3
index 9f81f66..10b2f33 100644
--- a/docs/libcurl/curl_share_cleanup.3
+++ b/docs/libcurl/curl_share_cleanup.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_share_cleanup 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_share_cleanup 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_share_cleanup - Clean up a shared object
diff --git a/docs/libcurl/curl_share_init.3 b/docs/libcurl/curl_share_init.3
index 05a6bd2..e17d413 100644
--- a/docs/libcurl/curl_share_init.3
+++ b/docs/libcurl/curl_share_init.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_share_init 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_share_init 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_share_init - Create a shared object
diff --git a/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index 4ed695d..e0f7156 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_share_setopt 3 "December 05, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_share_setopt 3 "February 23, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_share_setopt - Set options for a shared object
@@ -63,8 +63,8 @@
 .IP CURL_LOCK_DATA_DNS
 Cached DNS hosts will be shared across the easy handles using this shared
 object. Note that when you use the multi interface, all easy handles added to
-the same multi handle will share DNS cache by default without this having to
-be used!
+the same multi handle will share DNS cache by default without using this
+option.
 .IP CURL_LOCK_DATA_SSL_SESSION
 SSL session IDs will be shared across the easy handles using this shared
 object. This will reduce the time spent in the SSL handshake when reconnecting
@@ -85,6 +85,9 @@
 
 Support for \fBCURL_LOCK_DATA_CONNECT\fP was added in 7.57.0, but the symbol
 existed before this.
+
+Note that when you use the multi interface, all easy handles added to the same
+multi handle will share connection cache by default without using this option.
 .RE
 .IP CURLSHOPT_UNSHARE
 This option does the opposite of \fICURLSHOPT_SHARE\fP. It specifies that
diff --git a/docs/libcurl/curl_share_strerror.3 b/docs/libcurl/curl_share_strerror.3
index 4cfbdbe..c43e981 100644
--- a/docs/libcurl/curl_share_strerror.3
+++ b/docs/libcurl/curl_share_strerror.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_share_strerror 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_share_strerror - return string describing error code
diff --git a/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index d242ebb..f89a3ab 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_slist_append 3 "May 05, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_slist_append 3 "May 05, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_slist_append - add a string to an slist
diff --git a/docs/libcurl/curl_slist_free_all.3 b/docs/libcurl/curl_slist_free_all.3
index d5edb1b..503420f 100644
--- a/docs/libcurl/curl_slist_free_all.3
+++ b/docs/libcurl/curl_slist_free_all.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_slist_free_all 3 "May 05, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_slist_free_all 3 "May 05, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_slist_free_all - free an entire curl_slist list
diff --git a/docs/libcurl/curl_strequal.3 b/docs/libcurl/curl_strequal.3
index 0b53ef7..bc59a1d 100644
--- a/docs/libcurl/curl_strequal.3
+++ b/docs/libcurl/curl_strequal.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_strequal 3 "June 29, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_strequal 3 "June 29, 2017" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_strequal, curl_strnequal - case insensitive string comparisons
diff --git a/docs/libcurl/curl_unescape.3 b/docs/libcurl/curl_unescape.3
index 6f853d7..5a82b5a 100644
--- a/docs/libcurl/curl_unescape.3
+++ b/docs/libcurl/curl_unescape.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_unescape 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_unescape 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_unescape - URL decodes the given string
diff --git a/docs/libcurl/curl_version.3 b/docs/libcurl/curl_version.3
index f2c3ea0..980aafb 100644
--- a/docs/libcurl/curl_version.3
+++ b/docs/libcurl/curl_version.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH curl_version 3 "February 03, 2016" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_version 3 "February 03, 2016" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_version - returns the libcurl version string
diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index 69ab408..9af0f0e 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH curl_version_info 3 "December 29, 2017" "libcurl 7.58.0" "libcurl Manual"
+.TH curl_version_info 3 "March 17, 2018" "libcurl 7.60.0" "libcurl Manual"
 
 .SH NAME
 curl_version_info - returns run-time libcurl version info
@@ -170,8 +170,9 @@
 .IP CURL_VERSION_BROTLI
 supports HTTP Brotli content encoding using libbrotlidec (Added in 7.57.0)
 .RE
-\fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl
-has no SSL support, this is NULL.
+\fIssl_version\fP is an ASCII string for the TLS library name + version
+used. If libcurl has no SSL support, this is NULL. For example "WinSSL",
+\&"SecureTransport" or "OpenSSL/1.1.0g".
 
 \fIssl_version_num\fP is always 0.
 
diff --git a/docs/libcurl/libcurl-easy.3 b/docs/libcurl/libcurl-easy.3
index c3a764d..700a718 100644
--- a/docs/libcurl/libcurl-easy.3
+++ b/docs/libcurl/libcurl-easy.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH libcurl 3 "February 03, 2016" "libcurl 7.58.0" "libcurl easy interface"
+.TH libcurl 3 "February 03, 2016" "libcurl 7.60.0" "libcurl easy interface"
 
 .SH NAME
 libcurl-easy \- easy interface overview
diff --git a/docs/libcurl/libcurl-env.3 b/docs/libcurl/libcurl-env.3
index 3e5c19e..9eb708b 100644
--- a/docs/libcurl/libcurl-env.3
+++ b/docs/libcurl/libcurl-env.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH libcurl-env 3 "January 23, 2018" "libcurl 7.58.0" "libcurl environment variables"
+.TH libcurl-env 3 "April 17, 2018" "libcurl 7.60.0" "libcurl environment variables"
 
 .SH NAME
 libcurl-env \- environment variables libcurl understands
@@ -37,7 +37,7 @@
 
 These proxy variables are also checked for in their uppercase versions, except
 the "http_proxy" one which is only used lowercase. Note also that some systems
-actually have a case insensitve handling of environment variables and then of
+actually have a case insensitive handling of environment variables and then of
 course "HTTP_PROXY" will still work...
 .IP ALL_PROXY
 This is a setting to set proxy for all URLs, independently of what scheme is
@@ -47,7 +47,7 @@
 When libcurl is built to support multiple SSL backends, it will select a
 specific backend at first use. If no selection is done by the program using
 libcurl, this variable's selection will be used. It should be set to the full
-SSL backend name to use (case insensitve).
+SSL backend name to use (case insensitive).
 .IP HOME
 When the netrc feature is used (\fICURLOPT_NETRC(3)\fP), this variable is
 checked as the primary way to find the "current" home directory in which
@@ -72,7 +72,7 @@
 User name to use when invoking the ntlm-wb tool, if NTLMUSER and LOGNAME
 weren't set.
 .SH "Debug Variables"
-There's a set of variables only recognized and used if libcurl was buillt
+There's a set of variables only recognized and used if libcurl was built
 "debug enabled", which should never be true for a library used in production.
 .IP "CURL_GETHOSTNAME"
 Debug-only variable.
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index c8f44e3..ea15c07 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-errors 3 "August 22, 2016" "libcurl 7.58.0" "libcurl errors"
+.TH libcurl-errors 3 "February 10, 2018" "libcurl 7.60.0" "libcurl errors"
 
 .SH NAME
 libcurl-errors \- error codes in libcurl
@@ -253,6 +253,8 @@
 Status returned failure when asked with \fICURLOPT_SSL_VERIFYSTATUS(3)\fP.
 .IP "CURLE_HTTP2_STREAM (92)"
 Stream error in the HTTP/2 framing layer.
+.IP "CURLE_RECURSIVE_API_CALL (93)"
+An API function was called from inside a callback.
 .IP "CURLE_OBSOLETE*"
 These error codes will never be returned. They were used in an old libcurl
 version and are currently unused.
@@ -286,6 +288,8 @@
 .IP "CURLM_ADDED_ALREADY (7)"
 An easy handle already added to a multi handle was attempted to get added a
 second time. (Added in 7.32.1)
+.IP "CURLM_RECURSIVE_API_CALL (8)"
+An API function was called from inside a callback.
 .SH "CURLSHcode"
 The "share" interface will return a CURLSHcode to indicate when an error has
 occurred.  Also consider \fIcurl_share_strerror(3)\fP.
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index c391cf1..a8abb64 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-multi 3 "June 07, 2017" "libcurl 7.58.0" "libcurl multi interface"
+.TH libcurl-multi 3 "June 07, 2017" "libcurl 7.60.0" "libcurl multi interface"
 
 .SH NAME
 libcurl-multi \- how to use the multi interface
diff --git a/docs/libcurl/libcurl-security.3 b/docs/libcurl/libcurl-security.3
new file mode 100644
index 0000000..15d1d02
--- /dev/null
+++ b/docs/libcurl/libcurl-security.3
@@ -0,0 +1,339 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH libcurl-security 3 "April 17, 2018" "libcurl 7.60.0" "libcurl security"
+
+.SH NAME
+libcurl-security \- security considerations when using libcurl
+.SH "Security"
+The libcurl project takes security seriously.  The library is written with
+caution and precautions are taken to mitigate many kinds of risks encountered
+while operating with potentially malicious servers on the Internet. It is a
+powerful library, however, which allows application writers to make trade-offs
+between ease of writing and exposure to potential risky operations. If used
+the right way, you can use libcurl to transfer data pretty safely.
+
+Many applications are used in closed networks where users and servers can
+(possibly) be trusted, but many others are used on arbitrary servers and are
+fed input from potentially untrusted users.  Following is a discussion about
+some risks in the ways in which applications commonly use libcurl and
+potential mitigations of those risks. It is by no means comprehensive, but
+shows classes of attacks that robust applications should consider. The Common
+Weakness Enumeration project at https://cwe.mitre.org/ is a good reference for
+many of these and similar types of weaknesses of which application writers
+should be aware.
+.SH "Command Lines"
+If you use a command line tool (such as curl) that uses libcurl, and you give
+options to the tool on the command line those options can very likely get read
+by other users of your system when they use 'ps' or other tools to list
+currently running processes.
+
+To avoid these problems, never feed sensitive things to programs using command
+line options. Write them to a protected file and use the \-K option to avoid
+this.
+.SH ".netrc"
+\&.netrc is a pretty handy file/feature that allows you to login quickly and
+automatically to frequently visited sites. The file contains passwords in
+clear text and is a real security risk. In some cases, your .netrc is also
+stored in a home directory that is NFS mounted or used on another network
+based file system, so the clear text password will fly through your network
+every time anyone reads that file!
+
+For applications that enable .netrc use, a user who manage to set the right
+URL might then be possible to pass on passwords.
+
+To avoid these problems, don't use .netrc files and never store passwords in
+plain text anywhere.
+.SH "Clear Text Passwords"
+Many of the protocols libcurl supports send name and password unencrypted as
+clear text (HTTP Basic authentication, FTP, TELNET etc). It is very easy for
+anyone on your network or a network nearby yours to just fire up a network
+analyzer tool and eavesdrop on your passwords. Don't let the fact that HTTP
+Basic uses base64 encoded passwords fool you. They may not look readable at a
+first glance, but they very easily "deciphered" by anyone within seconds.
+
+To avoid this problem, use an authentication mechanism or other protocol that
+doesn't let snoopers see your password: Digest, CRAM-MD5, Kerberos, SPNEGO or
+NTLM authentication. Or even better: use authenticated protocols that protect
+the entire connection and everything sent over it.
+.SH "Un-authenticated Connections"
+Protocols that don't have any form of cryptographic authentication cannot
+with any certainty know that they communicate with the right remote server.
+
+If your application is using a fixed scheme or fixed host name, it is not safe
+as long as the connection is un-authenticated. There can be a
+man-in-the-middle or in fact the whole server might have been replaced by an
+evil actor.
+
+Un-authenticated protocols are unsafe. The data that comes back to curl may
+have been injected by an attacker. The data that curl sends might be modified
+before it reaches the intended server. If it even reaches the intended server
+at all.
+
+Remedies include:
+ - Restrict operations to authenticated transfers
+ - Make sure the server's certificate etc is verified
+.SH "Redirects"
+The \fICURLOPT_FOLLOWLOCATION(3)\fP option automatically follows HTTP
+redirects sent by a remote server.  These redirects can refer to any kind of
+URL, not just HTTP. libcurl restricts the protocols allowed to be used in
+redirects for security reasons: FILE, SCP, SMB and SMBS are disabled by
+default. Applications are encouraged to restrict that set further.
+
+A redirect to a file: URL would cause the libcurl to read (or write) arbitrary
+files from the local filesystem.  If the application returns the data back to
+the user (as would happen in some kinds of CGI scripts), an attacker could
+leverage this to read otherwise forbidden data (e.g.
+file://localhost/etc/passwd).
+
+If authentication credentials are stored in the ~/.netrc file, or Kerberos
+is in use, any other URL type (not just file:) that requires
+authentication is also at risk.  A redirect such as
+ftp://some-internal-server/private-file would then return data even when
+the server is password protected.
+
+In the same way, if an unencrypted SSH private key has been configured for the
+user running the libcurl application, SCP: or SFTP: URLs could access password
+or private-key protected resources,
+e.g. sftp://user@some-internal-server/etc/passwd
+
+The \fICURLOPT_REDIR_PROTOCOLS(3)\fP and \fICURLOPT_NETRC(3)\fP options can be
+used to mitigate against this kind of attack.
+
+A redirect can also specify a location available only on the machine running
+libcurl, including servers hidden behind a firewall from the attacker.
+e.g. http://127.0.0.1/ or http://intranet/delete-stuff.cgi?delete=all or
+tftp://bootp-server/pc-config-data
+
+Applications can mitigate against this by disabling
+\fICURLOPT_FOLLOWLOCATION(3)\fP and handling redirects itself, sanitizing URLs
+as necessary. Alternately, an app could leave \fICURLOPT_FOLLOWLOCATION(3)\fP
+enabled but set \fICURLOPT_REDIR_PROTOCOLS(3)\fP and install a
+\fICURLOPT_OPENSOCKETFUNCTION(3)\fP callback function in which addresses are
+sanitized before use.
+.SH "Local Resources"
+A user who can control the DNS server of a domain being passed in within a URL
+can change the address of the host to a local, private address which a
+server-side libcurl-using application could then use. e.g. the innocuous URL
+http://fuzzybunnies.example.com/ could actually resolve to the IP address of a
+server behind a firewall, such as 127.0.0.1 or 10.1.2.3.  Applications can
+mitigate against this by setting a \fICURLOPT_OPENSOCKETFUNCTION(3)\fP and
+checking the address before a connection.
+
+All the malicious scenarios regarding redirected URLs apply just as well to
+non-redirected URLs, if the user is allowed to specify an arbitrary URL that
+could point to a private resource. For example, a web app providing a
+translation service might happily translate file://localhost/etc/passwd and
+display the result.  Applications can mitigate against this with the
+\fICURLOPT_PROTOCOLS(3)\fP option as well as by similar mitigation techniques
+for redirections.
+
+A malicious FTP server could in response to the PASV command return an IP
+address and port number for a server local to the app running libcurl but
+behind a firewall.  Applications can mitigate against this by using the
+\fICURLOPT_FTP_SKIP_PASV_IP(3)\fP option or \fICURLOPT_FTPPORT(3)\fP.
+
+Local servers sometimes assume local access comes from friends and trusted
+users. An application that expects http://example.com/file_to_read that and
+instead gets http://192.168.0.1/my_router_config might print a file that would
+otherwise be protected by the firewall.
+
+Allowing your application to connect to local hosts, be it the same machine
+that runs the application or a machine on the same local network, might be
+possible to exploit by an attacker who then perhaps can "port-scan" the
+particular hosts - depending on how the application and servers acts.
+.SH "IPv6 Addresses"
+libcurl will normally handle IPv6 addresses transparently and just as easily
+as IPv4 addresses. That means that a sanitizing function that filters out
+addresses like 127.0.0.1 isn't sufficient--the equivalent IPv6 addresses ::1,
+::, 0:00::0:1, ::127.0.0.1 and ::ffff:7f00:1 supplied somehow by an attacker
+would all bypass a naive filter and could allow access to undesired local
+resources.  IPv6 also has special address blocks like link-local and
+site-local that generally shouldn't be accessed by a server-side libcurl-using
+application.  A poorly-configured firewall installed in a data center,
+organization or server may also be configured to limit IPv4 connections but
+leave IPv6 connections wide open.  In some cases, setting
+\fICURLOPT_IPRESOLVE(3)\fP to CURL_IPRESOLVE_V4 can be used to limit resolved
+addresses to IPv4 only and bypass these issues.
+.SH Uploads
+When uploading, a redirect can cause a local (or remote) file to be
+overwritten. Applications must not allow any unsanitized URL to be passed in
+for uploads. Also, \fICURLOPT_FOLLOWLOCATION(3)\fP should not be used on
+uploads.  Instead, the applications should consider handling redirects itself,
+sanitizing each URL first.
+.SH Authentication
+Use of \fICURLOPT_UNRESTRICTED_AUTH(3)\fP could cause authentication
+information to be sent to an unknown second server.  Applications can mitigate
+against this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP and handling
+redirects itself, sanitizing where necessary.
+
+Use of the CURLAUTH_ANY option to \fICURLOPT_HTTPAUTH(3)\fP could result in
+user name and password being sent in clear text to an HTTP server.  Instead,
+use CURLAUTH_ANYSAFE which ensures that the password is encrypted over the
+network, or else fail the request.
+
+Use of the CURLUSESSL_TRY option to \fICURLOPT_USE_SSL(3)\fP could result in
+user name and password being sent in clear text to an FTP server.  Instead,
+use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or else
+fail the request.
+.SH Cookies
+If cookies are enabled and cached, then a user could craft a URL which
+performs some malicious action to a site whose authentication is already
+stored in a cookie. e.g. http://mail.example.com/delete-stuff.cgi?delete=all
+Applications can mitigate against this by disabling cookies or clearing them
+between requests.
+.SH "Dangerous SCP URLs"
+SCP URLs can contain raw commands within the scp: URL, which is a side effect
+of how the SCP protocol is designed. e.g.
+
+  scp://user:pass@host/a;date >/tmp/test;
+
+Applications must not allow unsanitized SCP: URLs to be passed in for
+downloads.
+.SH "file://"
+By default curl and libcurl support file:// URLs. Such a URL is always an
+access, or attempted access, to a local resource. If your application wants to
+avoid that, keep control of what URLs to use and/or prevent curl/libcurl from
+using the protocol.
+
+By default, libcurl prohibits redirects to file:// URLs.
+.SH "What if the user can set the URL"
+Applications may find it tempting to let users set the URL that it can work
+on. That's probably fine, but opens up for mischief and trickery that you as
+an application author may want to address or take precautions against.
+
+If your curl-using script allow a custom URL do you also, perhaps
+unintentionally, allow the user to pass other options to the curl command line
+if creative use of special characters are applied?
+
+If the user can set the URL, the user can also specify the scheme part to
+other protocols that you didn't intend for users to use and perhaps didn't
+consider. curl supports over 20 different URL schemes. "http://" might be what
+you thought, "ftp://" or "imap://" might be what the user gives your
+application. Also, cross-protocol operations might be done by using a
+particular scheme in the URL but point to a server doing a different protocol
+on a non-standard port.
+
+Remedies:
+
+ - curl command lines can use \fI--proto\fP to limit what schemes it accepts
+ - libcurl programs can use \fICURLOPT_PROTOCOLS(3)\fP
+ - consider not allowing the user to set the full URL
+ - consider strictly filtering input to only allow specific choices
+.SH "RFC 3986 vs WHATWG URL"
+curl supports URLs mostly according to how they are defined in RFC 3986, and
+has done so since the beginning.
+
+Web browsers mostly adhere to the WHATWG URL Specification.
+
+This deviance makes some URLs copied between browsers (or returned over HTTP
+for redirection) and curl not work the same way. This can mislead users into
+getting the wrong thing, connecting to the wrong host or otherwise not work
+identically.
+.SH "FTP uses two connections"
+When performing an FTP transfer, two TCP connections are used: one for setting
+up the transfer and one for the actual data.
+
+FTP is not only un-authenticated, but the setting up of the second transfer is
+also a weak spot. The second connection to use for data, is either setup with
+the PORT/EPRT command that makes the server connect back to the client on the
+given IP+PORT, or with PASV/EPSV that makes the server setup a port to listen
+to and tells the client to connect to a given IP+PORT.
+
+Again, un-authenticated means that the connection might be meddled with by a
+man-in-the-middle or that there's a malicious server pretending to be the
+right one.
+
+A malicious FTP server can respond to PASV commands with the IP+PORT of a
+totally different machine. Perhaps even a third party host, and when there are
+many clients trying to connect to that third party, it could create a
+Distributed Denial-Of-Service attack out of it! If the client makes an upload
+operation, it can make the client send the data to another site. If the
+attacker can affect what data the client uploads, it can be made to work as a
+HTTP request and then the client could be made to issue HTTP requests to third
+party hosts.
+
+An attacker that manages to control curl's command line options can tell curl
+to send an FTP PORT command to ask the server to connect to a third party host
+instead of back to curl.
+
+The fact that FTP uses two connections makes it vulnerable in a way that is
+hard to avoid.
+.SH "Denial of Service"
+A malicious server could cause libcurl to effectively hang by sending data
+very slowly, or even no data at all but just keeping the TCP connection open.
+This could effectively result in a denial-of-service attack. The
+\fICURLOPT_TIMEOUT(3)\fP and/or \fICURLOPT_LOW_SPEED_LIMIT(3)\fP options can
+be used to mitigate against this.
+
+A malicious server could cause libcurl to download an infinite amount of data,
+potentially causing all of memory or disk to be filled. Setting the
+\fICURLOPT_MAXFILESIZE_LARGE(3)\fP option is not sufficient to guard against
+this.  Instead, applications should monitor the amount of data received within
+the write or progress callback and abort once the limit is reached.
+
+A malicious HTTP server could cause an infinite redirection loop, causing a
+denial-of-service. This can be mitigated by using the
+\fICURLOPT_MAXREDIRS(3)\fP option.
+.SH "Arbitrary Headers"
+User-supplied data must be sanitized when used in options like
+\fICURLOPT_USERAGENT(3)\fP, \fICURLOPT_HTTPHEADER(3)\fP,
+\fICURLOPT_POSTFIELDS(3)\fP and others that are used to generate structured
+data. Characters like embedded carriage returns or ampersands could allow the
+user to create additional headers or fields that could cause malicious
+transactions.
+.SH "Server-supplied Names"
+A server can supply data which the application may, in some cases, use as a
+file name. The curl command-line tool does this with
+\fI--remote-header-name\fP, using the Content-disposition: header to generate
+a file name.  An application could also use \fICURLINFO_EFFECTIVE_URL(3)\fP to
+generate a file name from a server-supplied redirect URL. Special care must be
+taken to sanitize such names to avoid the possibility of a malicious server
+supplying one like "/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc".
+.SH "Server Certificates"
+A secure application should never use the \fICURLOPT_SSL_VERIFYPEER(3)\fP
+option to disable certificate validation. There are numerous attacks that are
+enabled by applications that fail to properly validate server TLS/SSL
+certificates, thus enabling a malicious server to spoof a legitimate
+one. HTTPS without validated certificates is potentially as insecure as a
+plain HTTP connection.
+.SH "Report Security Problems"
+Should you detect or just suspect a security problem in libcurl or curl,
+contact the project curl security team immediately. See the separate
+SECURITY.md document for details.
+.SH "Showing What You Do"
+Relatedly, be aware that in situations when you have problems with libcurl and
+ask someone for help, everything you reveal in order to get best possible help
+might also impose certain security related risks. Host names, user names,
+paths, operating system specifics, etc. (not to mention passwords of course)
+may in fact be used by intruders to gain additional information of a potential
+target.
+
+Be sure to limit access to application logs if they could hold private or
+security-related data.  Besides the obvious candidates like user names and
+passwords, things like URLs, cookies or even file names could also hold
+sensitive data.
+
+To avoid this problem, you must of course use your common sense. Often, you
+can just edit out the sensitive data or just search/replace your true
+information with faked data.
+
diff --git a/docs/libcurl/libcurl-share.3 b/docs/libcurl/libcurl-share.3
index bd82ece..d2efd6b 100644
--- a/docs/libcurl/libcurl-share.3
+++ b/docs/libcurl/libcurl-share.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH libcurl-share 3 "November 27, 2017" "libcurl 7.58.0" "libcurl share interface"
+.TH libcurl-share 3 "November 27, 2017" "libcurl 7.60.0" "libcurl share interface"
 
 .SH NAME
 libcurl-share \- how to use the share interface
diff --git a/docs/libcurl/libcurl-symbols.3 b/docs/libcurl/libcurl-symbols.3
index 955bf38..5853faa 100644
--- a/docs/libcurl/libcurl-symbols.3
+++ b/docs/libcurl/libcurl-symbols.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH libcurl-symbols 3 "jan 24, 2018" "libcurl 7.41.0" "libcurl symbols"
+.TH libcurl-symbols 3 "maj 16, 2018" "libcurl 7.41.0" "libcurl symbols"
 .SH NAME
 libcurl-symbols \- libcurl symbol version information
 .SH "libcurl symbols"
@@ -232,6 +232,8 @@
 Introduced in 7.1
 .IP CURLE_RECV_ERROR
 Introduced in 7.10
+.IP CURLE_RECURSIVE_API_CALL
+Introduced in 7.59.0
 .IP CURLE_REMOTE_ACCESS_DENIED
 Introduced in 7.17.0
 .IP CURLE_REMOTE_DISK_FULL
@@ -502,6 +504,8 @@
 Introduced in 7.9.6
 .IP CURLINFO_FILETIME
 Introduced in 7.5
+.IP CURLINFO_FILETIME_T
+Introduced in 7.59.0
 .IP CURLINFO_FTP_ENTRY_PATH
 Introduced in 7.15.4
 .IP CURLINFO_HEADER_IN
@@ -708,6 +712,8 @@
 Introduced in 7.9.6
 .IP CURLM_OUT_OF_MEMORY
 Introduced in 7.9.6
+.IP CURLM_RECURSIVE_API_CALL
+Introduced in 7.59.0
 .IP CURLM_UNKNOWN_OPTION
 Introduced in 7.15.4
 .IP CURLOPTTYPE_FUNCTIONPOINT
@@ -807,6 +813,8 @@
 Introduced in 7.33.0
 .IP CURLOPT_DNS_SERVERS
 Introduced in 7.24.0
+.IP CURLOPT_DNS_SHUFFLE_ADDRESSES
+Introduced in 7.60.0
 .IP CURLOPT_DNS_USE_GLOBAL_CACHE
 Introduced in 7.9.3
 Deprecated since 7.11.1
@@ -874,6 +882,10 @@
 Introduced in 7.20.0
 .IP CURLOPT_GSSAPI_DELEGATION
 Introduced in 7.22.0
+.IP CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS
+Introduced in 7.59.0
+.IP CURLOPT_HAPROXYPROTOCOL
+Introduced in 7.60.0
 .IP CURLOPT_HEADER
 Introduced in 7.1
 .IP CURLOPT_HEADERDATA
@@ -1266,6 +1278,8 @@
 Introduced in 7.16.2
 .IP CURLOPT_TIMEVALUE
 Introduced in 7.1
+.IP CURLOPT_TIMEVALUE_LARGE
+Introduced in 7.59.0
 .IP CURLOPT_TLSAUTH_PASSWORD
 Introduced in 7.21.4
 .IP CURLOPT_TLSAUTH_TYPE
@@ -1276,6 +1290,10 @@
 Introduced in 7.1.1
 .IP CURLOPT_TRANSFER_ENCODING
 Introduced in 7.21.6
+.IP CURLOPT_RESOLVER_START_FUNCTION
+Introduced in 7.59.0
+.IP CURLOPT_RESOLVER_START_DATA
+Introduced in 7.59.0
 .IP CURLOPT_UNIX_SOCKET_PATH
 Introduced in 7.40.0
 .IP CURLOPT_UNRESTRICTED_AUTH
@@ -1574,6 +1592,8 @@
 Introduced in 7.8
 .IP CURL_GLOBAL_WIN32
 Introduced in 7.8.1
+.IP CURL_HET_DEFAULT
+Introduced in 7.59.0
 .IP CURL_HTTPPOST_BUFFER
 Introduced in 7.46.0
 .IP CURL_HTTPPOST_CALLBACK
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
index 9fdcfdd..f8665c3 100644
--- a/docs/libcurl/libcurl-thread.3
+++ b/docs/libcurl/libcurl-thread.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-thread 3 "August 08, 2017" "libcurl 7.58.0" "libcurl thread safety"
+.TH libcurl-thread 3 "August 08, 2017" "libcurl 7.60.0" "libcurl thread safety"
 
 .SH NAME
 libcurl-thread \- libcurl thread safety
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 4af73e1..1b1f66c 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH libcurl-tutorial 3 "October 23, 2017" "libcurl 7.58.0" "libcurl programming"
+.TH libcurl-tutorial 3 "April 17, 2018" "libcurl 7.60.0" "libcurl programming"
 
 .SH NAME
 libcurl-tutorial \- libcurl programming tutorial
@@ -291,7 +291,7 @@
 
 .SH "Upload Data to a Remote Site"
 libcurl tries to keep a protocol independent approach to most transfers, thus
-uploading to a remote FTP site is very similar to uploading data to a HTTP
+uploading to a remote FTP site is very similar to uploading data to an HTTP
 server with a PUT request.
 
 Of course, first you either create an easy handle or you re-use one existing
@@ -518,7 +518,7 @@
 
 To post multiple files for a single form field, you must supply each file in
 a separate part, all with the same field name. Although function
-\fIcurl_mime_subparts(3)\fP implements nested muti-parts, this way of
+\fIcurl_mime_subparts(3)\fP implements nested multi-parts, this way of
 multiple files posting is deprecated by RFC 7578, chapter 4.3.
 
 To set the data source from an already opened FILE pointer, use:
@@ -792,12 +792,12 @@
 If you're using a SOCKS proxy, you may find that libcurl doesn't quite support
 all operations through it.
 
-For HTTP proxies: the fact that the proxy is a HTTP proxy puts certain
+For HTTP proxies: the fact that the proxy is an HTTP proxy puts certain
 restrictions on what can actually happen. A requested URL that might not be a
 HTTP URL will be still be passed to the HTTP proxy to deliver back to
 libcurl. This happens transparently, and an application may not need to
 know. I say "may", because at times it is very important to understand that
-all operations over a HTTP proxy use the HTTP protocol. For example, you
+all operations over an HTTP proxy use the HTTP protocol. For example, you
 can't invoke your own custom FTP commands or even proper FTP directory
 listings.
 
@@ -817,7 +817,7 @@
 \fICURLOPT_PROXYPORT(3)\fP.
 
 Tell libcurl what kind of proxy it is with \fICURLOPT_PROXYTYPE(3)\fP (if not,
-it will default to assume a HTTP proxy):
+it will default to assume an HTTP proxy):
 
  curl_easy_setopt(easyhandle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
 
@@ -853,11 +853,11 @@
 SSL is for secure point-to-point connections. This involves strong encryption
 and similar things, which effectively makes it impossible for a proxy to
 operate as a "man in between" which the proxy's task is, as previously
-discussed. Instead, the only way to have SSL work over a HTTP proxy is to ask
+discussed. Instead, the only way to have SSL work over an HTTP proxy is to ask
 the proxy to tunnel trough everything without being able to check or fiddle
 with the traffic.
 
-Opening an SSL connection over a HTTP proxy is therefor a matter of asking the
+Opening an SSL connection over an HTTP proxy is therefore a matter of asking the
 proxy for a straight connection to the target host on a specified port. This
 is made with the HTTP request CONNECT. ("please mr proxy, connect me to that
 remote host").
@@ -877,7 +877,7 @@
 
 As tunneling opens a direct connection from your application to the remote
 machine, it suddenly also re-introduces the ability to do non-HTTP
-operations over a HTTP proxy. You can in fact use things such as FTP
+operations over an HTTP proxy. You can in fact use things such as FTP
 upload or FTP custom commands this way.
 
 Again, this is often prevented by the administrators of proxies and is
@@ -1057,7 +1057,7 @@
 Not all protocols are HTTP-like, and thus the above may not help you when
 you want to make, for example, your FTP transfers to behave differently.
 
-Sending custom commands to a FTP server means that you need to send the
+Sending custom commands to an FTP server means that you need to send the
 commands exactly as the FTP server expects them (RFC959 is a good guide
 here), and you can only use commands that work on the control-connection
 alone. All kinds of commands that require data interchange and thus need
@@ -1101,7 +1101,7 @@
 content transfer will be performed.
 
 .IP "FTP Custom CUSTOMREQUEST"
-If you do want to list the contents of a FTP directory using your own defined
+If you do want to list the contents of an FTP directory using your own defined
 FTP command, \fICURLOPT_CUSTOMREQUEST(3)\fP will do just that. "NLST" is the
 default one for listing directories but you're free to pass in your idea of a
 good alternative.
@@ -1287,234 +1287,7 @@
 actually true headers, but in this case we pretend they are! ;-)
 
 .SH "Post Transfer Information"
-
- [ curl_easy_getinfo ]
-
-.SH "Security Considerations"
-
-The libcurl project takes security seriously.  The library is written with
-caution and precautions are taken to mitigate many kinds of risks encountered
-while operating with potentially malicious servers on the Internet.  It is a
-powerful library, however, which allows application writers to make trade offs
-between ease of writing and exposure to potential risky operations.  If
-used the right way, you can use libcurl to transfer data pretty safely.
-
-Many applications are used in closed networks where users and servers
-can be trusted, but many others are used on arbitrary servers and are fed
-input from potentially untrusted users.  Following is a discussion about
-some risks in the ways in which applications commonly use libcurl and
-potential mitigations of those risks. It is by no means comprehensive, but
-shows classes of attacks that robust applications should consider. The
-Common Weakness Enumeration project at https://cwe.mitre.org/ is a good
-reference for many of these and similar types of weaknesses of which
-application writers should be aware.
-
-.IP "Command Lines"
-If you use a command line tool (such as curl) that uses libcurl, and you give
-options to the tool on the command line those options can very likely get read
-by other users of your system when they use 'ps' or other tools to list
-currently running processes.
-
-To avoid this problem, never feed sensitive things to programs using command
-line options. Write them to a protected file and use the \-K option to
-avoid this.
-
-.IP ".netrc"
-\&.netrc is a pretty handy file/feature that allows you to login quickly and
-automatically to frequently visited sites. The file contains passwords in
-clear text and is a real security risk. In some cases, your .netrc is also
-stored in a home directory that is NFS mounted or used on another network
-based file system, so the clear text password will fly through your network
-every time anyone reads that file!
-
-To avoid this problem, don't use .netrc files and never store passwords in
-plain text anywhere.
-
-.IP "Clear Text Passwords"
-Many of the protocols libcurl supports send name and password unencrypted as
-clear text (HTTP Basic authentication, FTP, TELNET etc). It is very easy for
-anyone on your network or a network nearby yours to just fire up a network
-analyzer tool and eavesdrop on your passwords. Don't let the fact that HTTP
-Basic uses base64 encoded passwords fool you. They may not look readable at a
-first glance, but they very easily "deciphered" by anyone within seconds.
-
-To avoid this problem, use an authentication mechanism or other protocol that
-doesn't let snoopers see your password: Digest, CRAM-MD5, Kerberos, SPNEGO or
-NTLM authentication, HTTPS, FTPS, SCP and SFTP are a few examples.
-
-.IP "Redirects"
-The \fICURLOPT_FOLLOWLOCATION(3)\fP option automatically follows HTTP
-redirects sent by a remote server.  These redirects can refer to any kind of
-URL, not just HTTP. By default libcurl will allow all protocols on redirect
-except several disabled for security reasons: Since 7.19.4 FILE and SCP are
-disabled, and since 7.40.0 SMB and SMBS are also disabled.
-
-A redirect to a file: URL would cause the libcurl to read (or write) arbitrary
-files from the local filesystem.  If the application returns the data back to
-the user (as would happen in some kinds of CGI scripts), an attacker could
-leverage this to read otherwise forbidden data (e.g.
-file://localhost/etc/passwd).
-
-If authentication credentials are stored in the ~/.netrc file, or Kerberos
-is in use, any other URL type (not just file:) that requires
-authentication is also at risk.  A redirect such as
-ftp://some-internal-server/private-file would then return data even when
-the server is password protected.
-
-In the same way, if an unencrypted SSH private key has been configured for
-the user running the libcurl application, SCP: or SFTP: URLs could access
-password or private-key protected resources,
-e.g. sftp://user@some-internal-server/etc/passwd
-
-The \fICURLOPT_REDIR_PROTOCOLS(3)\fP and \fICURLOPT_NETRC(3)\fP options can be
-used to mitigate against this kind of attack.
-
-A redirect can also specify a location available only on the machine running
-libcurl, including servers hidden behind a firewall from the attacker.
-e.g. http://127.0.0.1/ or http://intranet/delete-stuff.cgi?delete=all or
-tftp://bootp-server/pc-config-data
-
-Apps can mitigate against this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP
-and handling redirects itself, sanitizing URLs as necessary. Alternately, an
-app could leave \fICURLOPT_FOLLOWLOCATION(3)\fP enabled but set
-\fICURLOPT_REDIR_PROTOCOLS(3)\fP and install a
-\fICURLOPT_OPENSOCKETFUNCTION(3)\fP callback function in which addresses are
-sanitized before use.
-
-.IP "Private Resources"
-A user who can control the DNS server of a domain being passed in within a URL
-can change the address of the host to a local, private address which a
-server-side libcurl-using application could then use. e.g. the innocuous URL
-http://fuzzybunnies.example.com/ could actually resolve to the IP address of a
-server behind a firewall, such as 127.0.0.1 or 10.1.2.3.  Apps can mitigate
-against this by setting a \fICURLOPT_OPENSOCKETFUNCTION(3)\fP and checking the
-address before a connection.
-
-All the malicious scenarios regarding redirected URLs apply just as well to
-non-redirected URLs, if the user is allowed to specify an arbitrary URL that
-could point to a private resource. For example, a web app providing a
-translation service might happily translate file://localhost/etc/passwd and
-display the result.  Apps can mitigate against this with the
-\fICURLOPT_PROTOCOLS(3)\fP option as well as by similar mitigation techniques
-for redirections.
-
-A malicious FTP server could in response to the PASV command return an IP
-address and port number for a server local to the app running libcurl but
-behind a firewall.  Apps can mitigate against this by using the
-\fICURLOPT_FTP_SKIP_PASV_IP(3)\fP option or \fICURLOPT_FTPPORT(3)\fP.
-
-.IP "IPv6 Addresses"
-libcurl will normally handle IPv6 addresses transparently and just as easily
-as IPv4 addresses. That means that a sanitizing function that filters out
-addresses like 127.0.0.1 isn't sufficient--the equivalent IPv6 addresses ::1,
-::, 0:00::0:1, ::127.0.0.1 and ::ffff:7f00:1 supplied somehow by an attacker
-would all bypass a naive filter and could allow access to undesired local
-resources.  IPv6 also has special address blocks like link-local and site-local
-that generally shouldn't be accessed by a server-side libcurl-using
-application.  A poorly-configured firewall installed in a data center,
-organization or server may also be configured to limit IPv4 connections but
-leave IPv6 connections wide open.  In some cases, the CURL_IPRESOLVE_V4 option
-can be used to limit resolved addresses to IPv4 only and bypass these issues.
-
-.IP Uploads
-When uploading, a redirect can cause a local (or remote) file to be
-overwritten.  Apps must not allow any unsanitized URL to be passed in for
-uploads.  Also, \fICURLOPT_FOLLOWLOCATION(3)\fP should not be used on uploads.
-Instead, the app should handle redirects itself, sanitizing each URL first.
-
-.IP Authentication
-Use of \fICURLOPT_UNRESTRICTED_AUTH(3)\fP could cause authentication
-information to be sent to an unknown second server.  Apps can mitigate against
-this by disabling \fICURLOPT_FOLLOWLOCATION(3)\fP and handling redirects
-itself, sanitizing where necessary.
-
-Use of the CURLAUTH_ANY option to \fICURLOPT_HTTPAUTH(3)\fP could result in
-user name and password being sent in clear text to an HTTP server.  Instead,
-use CURLAUTH_ANYSAFE which ensures that the password is encrypted over the
-network, or else fail the request.
-
-Use of the CURLUSESSL_TRY option to \fICURLOPT_USE_SSL(3)\fP could result in
-user name and password being sent in clear text to an FTP server.  Instead,
-use CURLUSESSL_CONTROL to ensure that an encrypted connection is used or else
-fail the request.
-
-.IP Cookies
-If cookies are enabled and cached, then a user could craft a URL which
-performs some malicious action to a site whose authentication is already
-stored in a cookie. e.g. http://mail.example.com/delete-stuff.cgi?delete=all
-Apps can mitigate against this by disabling cookies or clearing them
-between requests.
-
-.IP "Dangerous URLs"
-SCP URLs can contain raw commands within the scp: URL, which is a side effect
-of how the SCP protocol is designed. e.g.
-scp://user:pass@host/a;date >/tmp/test;
-Apps must not allow unsanitized SCP: URLs to be passed in for downloads.
-
-.IP "Denial of Service"
-A malicious server could cause libcurl to effectively hang by sending a
-trickle of data through, or even no data at all but just keeping the TCP
-connection open.  This could result in a denial-of-service attack. The
-\fICURLOPT_TIMEOUT(3)\fP and/or \fICURLOPT_LOW_SPEED_LIMIT(3)\fP options can
-be used to mitigate against this.
-
-A malicious server could cause libcurl to effectively hang by starting to send
-data, then severing the connection without cleanly closing the TCP connection.
-The app could install a \fICURLOPT_SOCKOPTFUNCTION(3)\fP callback function and
-set the TCP SO_KEEPALIVE option to mitigate against this.  Setting one of the
-timeout options would also work against this attack.
-
-A malicious server could cause libcurl to download an infinite amount of data,
-potentially causing all of memory or disk to be filled. Setting the
-\fICURLOPT_MAXFILESIZE_LARGE(3)\fP option is not sufficient to guard against
-this.  Instead, the app should monitor the amount of data received within the
-write or progress callback and abort once the limit is reached.
-
-A malicious HTTP server could cause an infinite redirection loop, causing a
-denial-of-service. This can be mitigated by using the
-\fICURLOPT_MAXREDIRS(3)\fP option.
-
-.IP "Arbitrary Headers"
-User-supplied data must be sanitized when used in options like
-\fICURLOPT_USERAGENT(3)\fP, \fICURLOPT_HTTPHEADER(3)\fP,
-\fICURLOPT_POSTFIELDS(3)\fP and others that are used to generate structured
-data. Characters like embedded carriage returns or ampersands could allow the
-user to create additional headers or fields that could cause malicious
-transactions.
-
-.IP "Server-supplied Names"
-A server can supply data which the application may, in some cases, use as
-a file name. The curl command-line tool does this with --remote-header-name,
-using the Content-disposition: header to generate a file name.  An application
-could also use CURLINFO_EFFECTIVE_URL to generate a file name from a
-server-supplied redirect URL. Special care must be taken to sanitize such
-names to avoid the possibility of a malicious server supplying one like
-"/etc/passwd", "\\autoexec.bat", "prn:" or even ".bashrc".
-
-.IP "Server Certificates"
-A secure application should never use the \fICURLOPT_SSL_VERIFYPEER(3)\fP
-option to disable certificate validation. There are numerous attacks that are
-enabled by apps that fail to properly validate server TLS/SSL certificates,
-thus enabling a malicious server to spoof a legitimate one. HTTPS without
-validated certificates is potentially as insecure as a plain HTTP connection.
-
-.IP "Showing What You Do"
-On a related issue, be aware that even in situations like when you have
-problems with libcurl and ask someone for help, everything you reveal in order
-to get best possible help might also impose certain security related
-risks. Host names, user names, paths, operating system specifics, etc. (not to
-mention passwords of course) may in fact be used by intruders to gain
-additional information of a potential target.
-
-Be sure to limit access to application logs if they could hold private or
-security-related data.  Besides the obvious candidates like user names and
-passwords, things like URLs, cookies or even file names could also hold
-sensitive data.
-
-To avoid this problem, you must of course use your common sense. Often, you
-can just edit out the sensitive data or just search/replace your true
-information with faked data.
-
+See \fIcurl_easy_getinfo(3)\fP.
 .SH "The multi Interface"
 The easy interface as described in detail in this document is a synchronous
 interface that transfers one file at a time and doesn't return until it is
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index 86bfbcf..2102484 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -19,7 +19,7 @@
 .\" * KIND, either express or implied.
 .\" *
 .\" **************************************************************************
-.TH libcurl 3 "July 15, 2017" "libcurl 7.58.0" "libcurl overview"
+.TH libcurl 3 "July 15, 2017" "libcurl 7.60.0" "libcurl overview"
 
 .SH NAME
 libcurl \- client-side URL transfers
diff --git a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
index 38c3f8d..0eb6a6f 100644
--- a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_ACTIVESOCKET 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_ACTIVESOCKET \- get the active socket
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
index 445e8ec..db7e441 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_APPCONNECT_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
diff --git a/docs/libcurl/opts/CURLINFO_CERTINFO.3 b/docs/libcurl/opts/CURLINFO_CERTINFO.3
index ebb94e7..f999d7a 100644
--- a/docs/libcurl/opts/CURLINFO_CERTINFO.3
+++ b/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CERTINFO 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CERTINFO 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CERTINFO \- get the TLS certificate chain
diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
index 6d7a3b4..d7737ba 100644
--- a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
+++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONDITION_UNMET 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONDITION_UNMET 3 "February 23, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
@@ -32,7 +32,7 @@
 Pass a pointer to a long to receive the number 1 if the condition provided in
 the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
 if this returns a 1 you know that the reason you didn't get data in return is
-because it didn't fulfill the condition. The long ths argument points to will
+because it didn't fulfill the condition. The long this argument points to will
 get a zero stored if the condition instead was met.
 .SH PROTOCOLS
 HTTP and some
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
index 7be728d..b37bc09 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONNECT_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONNECT_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONNECT_TIME \- get the time until connect
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
index cbe85c8..464e94b 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "June 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
index 556aee5..6b6dc78 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content-length of download
@@ -49,7 +49,7 @@
     curl_off_t cl;
     res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &cl);
     if(!res) {
-      printf("Size: " CURL_FORMAT_CURL_OFF_T "\\n", cl);
+      printf("Download size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl);
     }
   }
 }
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
index c60893a..e5b532c 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "June 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
index bdd3c7f..a449e69 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 31, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
@@ -48,7 +48,7 @@
     curl_off_t cl;
     res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &cl);
     if(!res) {
-      printf("Size: " CURL_FORMAT_CURL_OFF_T "\\n", cl);
+      printf("Upload size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl);
     }
   }
 }
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
index c6c9536..8f3fb9a 100644
--- a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_CONTENT_TYPE 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_CONTENT_TYPE \- get Content-Type
diff --git a/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
index 55931fb..d2f807b 100644
--- a/docs/libcurl/opts/CURLINFO_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_COOKIELIST 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_COOKIELIST 3 "March 20, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_COOKIELIST \- get all known cookies
@@ -57,9 +57,10 @@
     res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
     if(!res && cookies) {
       /* a linked list of cookies in cookie file format */
-      while(cookies) {
-        printf("%s", cookies->data);
-        cookies = cookies->next;
+      struct curl_slist *each = cookies;
+      while(each) {
+        printf("%s", each->data);
+        each = each->next;
       }
       /* we must free these cookies when we're done */
       curl_slist_free_all(cookies);
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
index 054f369..40a104d 100644
--- a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_EFFECTIVE_URL 3 "May 04, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_EFFECTIVE_URL \- get the last used URL
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME.3 b/docs/libcurl/opts/CURLINFO_FILETIME.3
index f6298c3..597610a 100644
--- a/docs/libcurl/opts/CURLINFO_FILETIME.3
+++ b/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_FILETIME 3 "April 03, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_FILETIME \- get the remote time of the retrieved document
@@ -35,9 +35,12 @@
 hide it or the server doesn't support the command that tells document time
 etc) and the time of the document is unknown.
 
-Note that you must tell the server to collect this information before the
-transfer is made, by using the \fICURLOPT_FILETIME(3)\fP option to
-\fIcurl_easy_setopt(3)\fP or you will unconditionally get a -1 back.
+You must tell libcurl to collect this information before the transfer is made,
+by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
+you will unconditionally get a -1 back.
+
+Consider using \fICURLINFO_FILETIME_T(3)\fP to be able to extract dates beyond
+the year 2038 on systems using 32 bit longs.
 .SH PROTOCOLS
 HTTP(S), FTP(S), SFTP
 .SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME_T.3 b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
new file mode 100644
index 0000000..6143ba1
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_FILETIME_T.3
@@ -0,0 +1,72 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_FILETIME 3 "January 25, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
+
+.SH NAME
+CURLINFO_FILETIME_T \- get the remote time of the retrieved document
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T, curl_off_t *timep);
+.SH DESCRIPTION
+Pass a pointer to a curl_off_t to receive the remote time of the retrieved
+document (in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If
+you get -1, it can be because of many reasons (it might be unknown, the server
+might hide it or the server doesn't support the command that tells document
+time etc) and the time of the document is unknown.
+
+You must ask libcurl to collect this information before the transfer is made,
+by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
+you will unconditionally get a -1 back.
+
+This option is an alternative to \fICURLINFO_FILETIME(3)\fP to allow systems
+with 32 bit long variables to extract dates outside of the 32bit timestamp
+range.
+.SH PROTOCOLS
+HTTP(S), FTP(S), SFTP
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, url);
+  /* Ask for filetime */
+  curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
+  res = curl_easy_perform(curl);
+  if(CURLE_OK == res) {
+    curl_off_t filetime;
+    res = curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
+    if((CURLE_OK == res) && (filetime >= 0)) {
+      time_t file_time = (time_t)filetime;
+      printf("filetime %s: %s", filename, ctime(&file_time));
+    }
+  }
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.59.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
index 50c3fcc..5e9400c 100644
--- a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
+++ b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
diff --git a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
index 8cdee66..008ca41 100644
--- a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_HEADER_SIZE 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HEADER_SIZE \- get size of retrieved headers
diff --git a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
index 9b478f2..72f2c46 100644
--- a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
index dca2652..e179306 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
index 05ea0ef..e4e0137 100644
--- a/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_HTTP_VERSION 3 "May 11, 2016" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_HTTP_VERSION 3 "May 11, 2016" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_HTTP_VERSION \- get the http version used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
index 6e971a7..c11f3fb 100644
--- a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
+++ b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_LASTSOCKET 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_LASTSOCKET \- get the last socket used
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
index 6bb0e3a..6588c7f 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_IP 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_LOCAL_IP \- get local IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
index 3b3db08..31f7223 100644
--- a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_LOCAL_PORT 3 "March 16, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_LOCAL_PORT \- get the latest local port number
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
index e7d7440..c5226da 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_NAMELOOKUP_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
diff --git a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
index 52791bc..ccc7fb0 100644
--- a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
+++ b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_NUM_CONNECTS 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_NUM_CONNECTS \- get number of created connections
diff --git a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
index e0e20f1..928f81a 100644
--- a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
+++ b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_OS_ERRNO 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_OS_ERRNO 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_OS_ERRNO \- get errno number from last connect failure
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
index fd66724..6c289bc 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRETRANSFER_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
index 524111d..83ddb7e 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_IP 3 "March 22, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRIMARY_IP \- get IP address of last connection
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
index 72e1905..b1ded4d 100644
--- a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIMARY_PORT 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRIMARY_PORT \- get the latest destination port number
diff --git a/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/docs/libcurl/opts/CURLINFO_PRIVATE.3
index 366803e..bc01868 100644
--- a/docs/libcurl/opts/CURLINFO_PRIVATE.3
+++ b/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PRIVATE 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PRIVATE \- get the private pointer
diff --git a/docs/libcurl/opts/CURLINFO_PROTOCOL.3 b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
index 07cfec9..ccdbf53 100644
--- a/docs/libcurl/opts/CURLINFO_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLINFO_PROTOCOL.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROTOCOL 3 "November 23, 2016" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROTOCOL 3 "April 27, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROTOCOL \- get the protocol used in the connection
@@ -29,8 +29,17 @@
 
 CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
 .SH DESCRIPTION
-Pass a pointer to a long to receive the version used in the last http connection.
-The returned value will be one of the CURLPROTO_* values.
+Pass a pointer to a long to receive the version used in the last http
+connection.  The returned value will be exactly one of the CURLPROTO_* values:
+
+.nf
+CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_FTP, CURLPROTO_FTPS,
+CURLPROTO_GOPHER, CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_IMAP,
+CURLPROTO_IMAPS, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_POP3,
+CURLPROTO_POP3S, CURLPROTO_RTMP, CURLPROTO_RTMPE, CURLPROTO_RTMPS,
+CURLPROTO_RTMPT, CURLPROTO_RTMPTE, CURLPROTO_RTMPTS, CURLPROTO_RTSP,
+CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_SMB, CURLPROTO_SMBS, CURLPROTO_SMTP,
+CURLPROTO_SMTPS, CURLPROTO_TELNET, CURLPROTO_TFTP
 .SH PROTOCOLS
 All
 .SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
index 4edb9f5..4e704c9 100644
--- a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
+++ b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "October 07, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
diff --git a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
index b317171..fa88afd 100644
--- a/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
index 4d3ea1d..d4963c8 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_COUNT 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_COUNT \- get the number of redirects
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
index 1061e31..5f55551 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
index 4430e27..c44cbe2 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_REDIRECT_URL 3 "June 24, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
diff --git a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
index 5bd4f8f..68002ee 100644
--- a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
+++ b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_REQUEST_SIZE 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_REQUEST_SIZE \- get size of sent request
diff --git a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
index c0d2acd..1298eb3 100644
--- a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
+++ b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_RESPONSE_CODE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RESPONSE_CODE \- get the last response code
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
index 31cd7c3..6308e3a 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
index 8a7eb49..851d927 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
index 6f28a3a..c6ccb38 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
index 41a58a4..4854ea9 100644
--- a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
diff --git a/docs/libcurl/opts/CURLINFO_SCHEME.3 b/docs/libcurl/opts/CURLINFO_SCHEME.3
index 897ba7d..98cec7a 100644
--- a/docs/libcurl/opts/CURLINFO_SCHEME.3
+++ b/docs/libcurl/opts/CURLINFO_SCHEME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SCHEME 3 "April 08, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
index 4c3724f..3d48396 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "June 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
index 514de89..ff6cea2 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_DOWNLOAD_T 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
@@ -50,7 +50,7 @@
     curl_off_t dl;
     res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD_T, &dl);
     if(!res) {
-      printf("Downloaded " CURL_FORMAT_CURL_OFF_T " bytes\\n", cl);
+      printf("Downloaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", dl);
     }
   }
 }
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
index 7b8431b..9f8d98e 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD 3 "June 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
index f342828..046dd3d 100644
--- a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SIZE_UPLOAD_T 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SIZE_UPLOAD_T 3 "March 31, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
@@ -46,7 +46,7 @@
     curl_off_t ul;
     res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD_T, &ul);
     if(!res) {
-      printf("Uploaded " CURL_FORMAT_CURL_OFF_T " bytes\\n", ul);
+      printf("Uploaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", ul);
     }
   }
 }
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
index 111f006..1324290 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "June 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_DOWNLOAD \- get download speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
index dcbf904..b9e6abf 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_DOWNLOAD_T 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 31, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_DOWNLOAD_T \- get download speed
@@ -45,7 +45,7 @@
     curl_off_t speed;
     res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD_T, &speed);
     if(!res) {
-      printf("Download speed " CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", ul);
+      printf("Download speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", speed);
     }
   }
 }
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
index 0b6cbef..ffb0740 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD 3 "June 15, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_UPLOAD \- get upload speed
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
index b16c817..f16fb50 100644
--- a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SPEED_UPLOAD_T 3 "June 15, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SPEED_UPLOAD_T 3 "March 31, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SPEED_UPLOAD_T \- get upload speed
@@ -45,7 +45,7 @@
     curl_off_t speed;
     res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed);
     if(!res) {
-      printf("Upload speed " CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", ul);
+      printf("Upload speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", speed);
     }
   }
 }
diff --git a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
index 831044a..dd82ae3 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_ENGINES 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
diff --git a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
index 0937d2f..2cbaab9 100644
--- a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
+++ b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_SSL_VERIFYRESULT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "March 21, 2018" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
@@ -32,6 +32,8 @@
 Pass a pointer to a long to receive the result of the server SSL certificate
 verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP
 option.
+
+0 is a positive result. Non-zero is an error.
 .SH PROTOCOLS
 All using TLS
 .SH EXAMPLE
@@ -44,12 +46,12 @@
   res = curl_easy_perform(curl);
   curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT, &verifyresult);
   printf("The peer verification said %s\\n", verifyresult?
-         "fine":"BAAAD");
+         "BAAAD":"fine");
   curl_easy_cleanup(curl);
 }
 .fi
 .SH AVAILABILITY
-Added in 7.5
+Added in 7.5. Only set by the OpenSSL/libressl/boringssl and NSS backends.
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
index 1f470f8..65939e5 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_STARTTRANSFER_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
index 040c303..a322ea1 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SESSION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TLS_SESSION \- get TLS session info
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
index 6290619..adb1075 100644
--- a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
+++ b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TLS_SSL_PTR 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_TLS_SSL_PTR 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
index bcee5c0..ed0224a 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TOTAL_TIME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_getinfo options"
+.TH CURLINFO_TOTAL_TIME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_getinfo options"
 
 .SH NAME
 CURLINFO_TOTAL_TIME \- get total time of previous transfer
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
index c104fc3..5052b71 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
index bb06a27..fbd3d88 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
index 1e3c4d5..8606ef7 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAXCONNECTS 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAXCONNECTS 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAXCONNECTS \- set size of connection cache
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index 5a8eb34..1b9dcc5 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_HOST_CONNECTIONS \- set max number of connections to a single host
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
index c130045..ea27b24 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
index ad3afa1..8b0b7d6 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index 79eea40..5df8a6e 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PIPELINING 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index 96d5336..614a0e6 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PIPELINING_SERVER_BL 3 "February 03, 2016" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SERVER_BL 3 "February 03, 2016" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PIPELINING_SERVER_BL \- pipelining server blacklist
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index 9407218..f5dd2d5 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PIPELINING_SITE_BL 3 "February 03, 2016" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_PIPELINING_SITE_BL 3 "February 03, 2016" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PIPELINING_SITE_BL \- pipelining host blacklist
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
index f69afa2..e773e4f9 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHDATA 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PUSHDATA \- pointer to pass to push callback
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
index 13272dd..2b35e2e 100644
--- a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_PUSHFUNCTION 3 "February 03, 2016" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
index f5b5690..61d63c6 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETDATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
index 249a201..c9f9531 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETFUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
index 2555c0d..6b911ef 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERDATA 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index 32ca192..0e3f8ee 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLMOPT_TIMERFUNCTION 3 "May 27, 2017" "libcurl 7.58.0" "curl_multi_setopt options"
+.TH CURLMOPT_TIMERFUNCTION 3 "May 27, 2017" "libcurl 7.60.0" "curl_multi_setopt options"
 
 .SH NAME
 CURLMOPT_TIMERFUNCTION \- set callback to receive timeout values
diff --git a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
index 63259c6..5228b37 100644
--- a/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "January 09, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ABSTRACT_UNIX_SOCKET \- set an abstract Unix domain socket
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
index 8384c71..b5de997 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 06, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
index 733f6fb..ef96297 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ACCEPT_ENCODING 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_ACCEPT_ENCODING 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ACCEPT_ENCODING \- enables automatic decompression of HTTP downloads
@@ -31,7 +31,7 @@
 .SH DESCRIPTION
 Pass a char * argument specifying what encoding you'd like.
 
-Sets the contents of the Accept-Encoding: header sent in a HTTP request, and
+Sets the contents of the Accept-Encoding: header sent in an HTTP request, and
 enables decoding of a response when a Content-Encoding: header is received.
 Three encodings are supported: \fIidentity\fP, meaning non-compressed,
 \fIdeflate\fP which requests the server to compress its response using the
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
index 60ccdeb..105cda0 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ADDRESS_SCOPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_ADDRESS_SCOPE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ADDRESS_SCOPE \- set scope for local IPv6 addresses
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
index 0a60ef6..6325bc2 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.3
+++ b/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_APPEND 3 "March 06, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_APPEND \- enable appending to the remote file
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
index 88c22fa..deaaf85 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_AUTOREFERER 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_AUTOREFERER \- automatically update the referer header
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
index cf8a781..7a03da9 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_BUFFERSIZE 3 "May 13, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_BUFFERSIZE \- set preferred receive buffer size
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index b73d129..04b0434 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CAINFO 3 "May 27, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CAINFO 3 "March 10, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
@@ -53,6 +53,11 @@
 certificates in the system and user Keychain to verify the peer, which is the
 preferred method of verifying the peer's certificate chain.
 
+(Schannel/WinSSL only) This option is supported for WinSSL in Windows 7 or
+later with libcurl 7.60 or later. This option is supported for backward
+compatibility with other SSL engines; instead it is recommended to use Windows'
+store of root certificates (the default for WinSSL).
+
 The application does not have to keep the string around after setting this
 option.
 .SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 1c4da8b..3bf9ccc 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CAPATH 3 "September 10, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CAPATH \- specify directory holding CA certificates
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index 5b439a2..f33fc87 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CERTINFO 3 "May 27, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CERTINFO 3 "May 27, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CERTINFO \- request SSL certificate information
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
index a7f4fce..0f1a9fb 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_BGN_FUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CHUNK_BGN_FUNCTION \- callback before a transfer with FTP wildcardmatch
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index 43f1317..db1b58c 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CHUNK_DATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_DATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
index 888eb2c..093373e 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CHUNK_END_FUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CHUNK_END_FUNCTION \- callback after a transfer with FTP wildcardmatch
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
index 862bd2e..01c4591 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CLOSESOCKETDATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETDATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CLOSESOCKETDATA \- pointer passed to the socket close callback
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
index 41ca8a1..bf7ef80 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CLOSESOCKETFUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CLOSESOCKETFUNCTION \- callback to socket close replacement function
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index 3abc547..3ea3980 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT 3 "October 03, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECTTIMEOUT \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index f2a2872..3af37f2 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 24, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECTTIMEOUT_MS 3 "September 24, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECTTIMEOUT_MS \- timeout for the connect phase
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
index aa4b01b..6eb0e10 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECT_ONLY 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_ONLY 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECT_ONLY \- stop when connected to target server
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
index 3747871..0cae7d3 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -9,7 +9,7 @@
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
 .\" *
 .\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
 .\" * copies of the Software, and permit persons to whom the Software is
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONNECT_TO 3 "May 20, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONNECT_TO 3 "May 05, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
@@ -71,7 +71,7 @@
 the request URL is the default behavior.
 
 If an HTTP proxy is used for a request having a special "connect to" host or
-port, and the "connect to" host or port differs from the requests's host and
+port, and the "connect to" host or port differs from the request's host and
 port, the HTTP proxy is automatically switched to tunnel mode for this
 specific request. This is necessary because it is not possible to connect to a
 specific host or port in normal (non-tunnel) mode.
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
index 7e7d456..5567ec2 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONV_FROM_NETWORK_FUNCTION \- convert data from network to host encoding
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
index 14b89a0..e546c34 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_FROM_UTF8_FUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONV_FROM_UTF8_FUNCTION \- convert data from UTF8 to host encoding
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
index 462a035..dfc8b5f 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CONV_TO_NETWORK_FUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CONV_TO_NETWORK_FUNCTION \- convert data to network from host encoding
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index 621ed49..4626d26 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIE 3 "December 21, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIE \- set contents of HTTP Cookie header
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
index 9ee6f66..c6d2d4c 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIEFILE 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEFILE 3 "March 13, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIEFILE \- file name to read cookies from
@@ -39,7 +39,8 @@
 
 Given an empty or non-existing file or by passing the empty string ("") to
 this option, you can enable the cookie engine without reading any initial
-cookies.
+cookies. If you tell libcurl the file name is "-" (just a single minus sign),
+libcurl will instead read from stdin.
 
 This option only \fBreads\fP cookies. To make libcurl write cookies to file,
 see \fICURLOPT_COOKIEJAR(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
index c6649de..a3e7132 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIEJAR 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIEJAR \- file name to store cookies to
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index 8cadbd3..438f7c0 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIELIST 3 "April 26, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIELIST \- add to or manipulate cookies held in memory
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
index 6c8bf03..bd1a674 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_COOKIESESSION 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COOKIESESSION \- start a new cookie session
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
index 46fead3..ca4fe1d 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_COPYPOSTFIELDS 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_COPYPOSTFIELDS \- have libcurl copy data to POST
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
index 917095a..72e7123 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.3
+++ b/docs/libcurl/opts/CURLOPT_CRLF.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLF 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CRLF \- enable/disable CRLF conversion
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
index 8980823..26c6c3b 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CRLFILE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CRLFILE \- specify a Certificate Revocation List file
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index 9e9a4d4..ab7bd6d 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_CUSTOMREQUEST 3 "June 21, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_CUSTOMREQUEST 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_CUSTOMREQUEST \- custom string for request
@@ -41,7 +41,7 @@
 This option can be used to specify the request:
 .IP HTTP
 Instead of GET or HEAD when performing HTTP based requests. This is
-particularly useful, for example, for performing a HTTP DELETE request.
+particularly useful, for example, for performing an HTTP DELETE request.
 
 For example:
 
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
index e229ec8..e3e279f 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGDATA 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DEBUGDATA \- custom pointer for debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
index e3c74a1..ffff4aa 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DEBUGFUNCTION 3 "October 06, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DEBUGFUNCTION \- debug callback
diff --git a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
index 0e50e48..a8fb7c0 100644
--- a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
+++ b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "December 21, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
index db312c4..406c08e 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DIRLISTONLY 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DIRLISTONLY \- ask for names only in a directory listing
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
index 8eff474..8f1a134 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_CACHE_TIMEOUT 3 "December 09, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_CACHE_TIMEOUT \- set life-time for DNS cache entries
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
index 3feaf05..0aecf02 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_INTERFACE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_INTERFACE \- set interface to speak DNS over
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
index dc309cb..8a9d4da 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP4 3 "December 10, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_LOCAL_IP4 \- IPv4 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
index 5430258..cf88905 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_LOCAL_IP6 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_LOCAL_IP6 \- IPv6 address to bind DNS resolves to
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
index bbe3842..14761e0 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_SERVERS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_SERVERS \- set preferred DNS servers
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
new file mode 100644
index 0000000..90b6036
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3
@@ -0,0 +1,70 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DNS_SHUFFLE_ADDRESSES 3 "March 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_DNS_SHUFFLE_ADDRESSES \- Shuffle addresses when a hostname returns more than one
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DNS_SHUFFLE_ADDRESSES, long onoff);
+.fi
+.SH DESCRIPTION
+When a name is resolved and more than one IP address is returned, shuffle the
+order of all returned addresses so that they will be used in a random order.
+This is similar to the ordering behavior of gethostbyname which is no longer
+used on most platforms.
+
+Addresses will not be reshuffled if a name resolution is completed using the
+DNS cache. \fICURLOPT_DNS_CACHE_TIMEOUT(3)\fP can be used together with this
+option to reduce DNS cache timeout or disable caching entirely if frequent
+reshuffling is needed.
+
+Since the addresses returned will be reordered randomly, their order will not
+be in accordance with RFC 3484 or any other deterministic order that may be
+generated by the system's name resolution implementation. This may have
+performance impacts and may cause IPv4 to be used before IPv6 or vice versa.
+.SH DEFAULT
+0 (disabled)
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+  curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, 1L);
+
+  curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.60.0
+.SH RETURN VALUE
+CURLE_OK or an error such as CURLE_UNKNOWN_OPTION.
+.SH "SEE ALSO"
+.BR CURLOPT_DNS_CACHE_TIMEOUT "(3), " CURLOPT_IPRESOLVE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
index bb35dfc..42878f0 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_DNS_USE_GLOBAL_CACHE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_DNS_USE_GLOBAL_CACHE \- enable/disable global DNS cache
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
index 1686b46..882f39e 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_EGDSOCKET 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_EGDSOCKET \- set EGD socket path
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index c0290f8..9d1ad29 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ERRORBUFFER 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_ERRORBUFFER 3 "March 13, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ERRORBUFFER \- set error buffer for error messages
@@ -29,8 +29,8 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ERRORBUFFER, char *buf);
 .SH DESCRIPTION
-Pass a char * to a buffer that the libcurl may store human readable error
-messages in on failures or problems. This may be more helpful than just the
+Pass a char * to a buffer that libcurl \fBmay\fP store human readable error
+messages on failures or problems. This may be more helpful than just the
 return code from \fIcurl_easy_perform(3)\fP and related functions. The buffer
 \fBmust be at least CURL_ERROR_SIZE bytes big\fP.
 
@@ -39,11 +39,13 @@
 will need it until you call \fIcurl_easy_cleanup(3)\fP or you set the same
 option again to use a different pointer.
 
+Do not rely on the contents of the buffer unless an error code was returned.
+Since 7.60.0 libcurl will initialize the contents of the error buffer to an
+empty string before performing the transfer. For earlier versions if an error
+code was returned but there was no error detail then the buffer is untouched.
+
 Consider \fICURLOPT_VERBOSE(3)\fP and \fICURLOPT_DEBUGFUNCTION(3)\fP to better
 debug and trace why errors happen.
-
-If the library does not return an error, the buffer may not have been
-touched. Do not rely on the contents in those cases.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
index 67e963d..a1d88f1 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_EXPECT_100_TIMEOUT_MS 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_EXPECT_100_TIMEOUT_MS \- timeout for Expect: 100-continue response
@@ -33,7 +33,7 @@
 .SH DESCRIPTION
 Pass a long to tell libcurl the number of \fImilliseconds\fP to wait for a
 server response with the HTTP status 100 (Continue), 417 (Expectation Failed)
-or similar after sending a HTTP request containing an Expect: 100-continue
+or similar after sending an HTTP request containing an Expect: 100-continue
 header. If this times out before a response is received, the request body is
 sent anyway.
 .SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index e8be62c..e87eab4 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FAILONERROR 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FAILONERROR 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FAILONERROR \- request failure on HTTP response >= 400
@@ -56,7 +56,7 @@
   curl_easy_setopt(curl, CURLOPT_FAILONERROR, 1L);
   ret = curl_easy_perform(curl);
   if(ret == CURLE_HTTP_RETURNED_ERROR) {
-    /* a HTTP response error problem */
+    /* an HTTP response error problem */
   }
 }
 .fi
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
index 16ba6cb..a07c6f0 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.3
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FILETIME 3 "April 03, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FILETIME \- get the modification time of the remote resource
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
index 3e73d6b..0242caf 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_DATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FNMATCH_DATA \- custom pointer to fnmatch callback
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
index 34a9e81..375b005 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FNMATCH_FUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FNMATCH_FUNCTION \- wildcard matching function callback
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
index 9cd4948..69ceb9c 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FOLLOWLOCATION 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FOLLOWLOCATION 3 "May 02, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
@@ -30,7 +30,7 @@
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
 .SH DESCRIPTION
 A long parameter set to 1 tells the library to follow any Location: header
-that the server sends as part of a HTTP header in a 3xx response. The
+that the server sends as part of an HTTP header in a 3xx response. The
 Location: header can specify a relative or an absolute URL to follow.
 
 libcurl will issue another request for the new URL and follow new Location:
@@ -78,4 +78,4 @@
 .SH "SEE ALSO"
 .BR CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_PROTOCOLS "(3), "
 .BR CURLOPT_POSTREDIR "(3), "
-.BR CURLINFO_REDIRECT_URL "(3), ", CURLINFO_REDIRECT_COUNT "(3), "
+.BR CURLINFO_REDIRECT_URL "(3), " CURLINFO_REDIRECT_COUNT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
index ea8fe10..bca2cbb 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FORBID_REUSE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FORBID_REUSE \- make connection get closed at once after use
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
index ae312c6..6cc511f 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FRESH_CONNECT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FRESH_CONNECT \- force a new connection to be used
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
index a06cd31..8a99d97 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.3
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPPORT 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTPPORT \- make FTP transfer active
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
index 802936c..28db721 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTPSSLAUTH 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTPSSLAUTH \- set order in which to attempt TLS vs SSL when using FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
index 3dd7812..a467d4a 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ACCOUNT 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_ACCOUNT \- set account info for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
index a737389..7d2f91c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_ALTERNATIVE_TO_USER 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_ALTERNATIVE_TO_USER \- command to use instead of USER with FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
index 9213504..559141b 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_CREATE_MISSING_DIRS 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_CREATE_MISSING_DIRS \- create missing dirs for FTP and SFTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
index e25c16d..6271476 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_FILEMETHOD 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_FILEMETHOD \- select directory traversing method for FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
index bc67025..bc3edc4 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_RESPONSE_TIMEOUT 3 "October 03, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_RESPONSE_TIMEOUT \- time allowed to wait for FTP response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
index 91b0273..13a236c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SKIP_PASV_IP 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_SKIP_PASV_IP \- ignore the IP address in the PASV response
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
index 800f739..d1864b2 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_SSL_CCC 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_SSL_CCC \- switch off SSL again with FTP after auth
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
index d8bd173..ea7a746 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPRT 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_USE_EPRT \- enable/disable use of EPRT with FTP
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
index 77c50c4..f6a5026 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_EPSV 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_USE_EPSV \- enable/disable use of EPSV
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
index a03374e..b253b38 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_FTP_USE_PRET 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_FTP_USE_PRET \- enable the PRET command
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
index 57c2d51..cb23b13 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_GSSAPI_DELEGATION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_GSSAPI_DELEGATION \- set allowed GSS-API delegation
diff --git a/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
new file mode 100644
index 0000000..ac9a564
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 3 "February 21, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS \- head start for ipv6 for happy eyeballs
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, long timeout);
+.SH DESCRIPTION
+Happy eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6
+addresses for dual-stack hosts, preferring IPv6 first for \fItimeout\fP
+milliseconds. If the IPv6 address cannot be connected to within that time then
+a connection attempt is made to the IPv4 address in parallel. The first
+connection to be established is the one that is used.
+
+The range of suggested useful values for \fItimeout\fP is limited. Happy
+Eyeballs RFC 6555 says "It is RECOMMENDED that connection attempts be paced
+150-250 ms apart to balance human factors against network load." libcurl
+currently defaults to 200 ms. Firefox and Chrome currently default to 300 ms.
+.SH DEFAULT
+CURL_HET_DEFAULT (currently defined as 200L)
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
+  curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, 300L);
+
+  curl_easy_perform(curl);
+
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.59.0
+.SH RETURN VALUE
+Returns CURLE_OK
diff --git a/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
new file mode 100644
index 0000000..e4c1870
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3
@@ -0,0 +1,58 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_HAPROXYPROTOCOL 3 "December 01, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_HAPROXYPROTOCOL \- send HAProxy PROXY protocol header
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HAPROXYPROTOCOL,
+                          long haproxy_protocol);
+.SH DESCRIPTION
+A long parameter set to 1 tells the library to send an HAProxy PROXY
+protocol header at beginning of the connection. The default action is not to
+send this header.
+
+This option is primarily useful when sending test requests to a service that
+expects this header.
+
+Most applications do not need this option.
+.SH DEFAULT
+0, do not send HAProxy PROXY protocol header
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  CURLcode ret;
+  curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
+  curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L);
+  ret = curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Along with HTTP. Added in 7.60.0.
+.SH RETURN VALUE
+Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index d941448..4f2a0ec 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADER 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADER 3 "February 16, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADER \- pass headers to the data stream
@@ -29,14 +29,20 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HEADER, long onoff);
 .SH DESCRIPTION
-Pass in \fIonoff\fP set to 1 to tell the library to include the header in the
-body output for requests with this \fIhandle\fP. This option is relevant for
-protocols that actually have headers or other meta-data (like HTTP and FTP).
+Pass the long value \fIonoff\fP set to 1 to ask libcurl to include the headers
+in the write callback (\fICURLOPT_WRITEFUNCTION(3)\fP). This option is
+relevant for protocols that actually have headers or other meta-data (like
+HTTP and FTP).
 
-When asking to get the header info passed to the same callback as the body, it
-is not possible to accurately separate them again without detailed knowledge
+When asking to get the headers passed to the same callback as the body, it is
+not possible to accurately separate them again without detailed knowledge
 about the protocol in use.
 
+Further: the \fCURLOPT_WRITEFUNCTION(3)\fP callback is limited to only ever
+get a maximum of \fICURL_MAX_WRITE_SIZE\fP bytes passed to it (16KB), while a
+header can be longer and the \fICURLOPT_HEADERFUNCTION(3)\fP supports getting
+called with headers up to \fICURL_MAX_HTTP_HEADER\fP bytes big (100KB).
+
 It is often better to use \fICURLOPT_HEADERFUNCTION(3)\fP to get the header
 data separately.
 
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
index 5cf72d3..efca41b 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERDATA 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADERDATA \- pointer to pass to header callback
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index 88be098..123c61c 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADERFUNCTION 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADERFUNCTION 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADERFUNCTION \- callback that receives header data
@@ -66,7 +66,7 @@
 HTTP status lines, for example, to delimit response boundaries.
 
 When a server sends a chunked encoded transfer, it may contain a trailer. That
-trailer is identical to a HTTP header and if such a trailer is received it is
+trailer is identical to an HTTP header and if such a trailer is received it is
 passed to the application using this callback as well. There are several ways
 to detect it being a trailer and not an ordinary header: 1) it comes after the
 response-body. 2) it comes after the final header line (CR LF) 3) a Trailer:
@@ -75,6 +75,11 @@
 
 For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get
 called with the server responses to the commands that libcurl sends.
+.SH LIMITATIONS
+libcurl does not unfold HTTP "folded headers" (deprecated since RFC 7230). A
+folded header is a header that continues on a subsequent line and starts with
+a whitespace. Such folds will be passed to the header callback as a separate
+one, although strictly it is just a continuation of the previous line.
 .SH DEFAULT
 Nothing.
 .SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index e255c98..332e6c8 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HEADEROPT 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HEADEROPT 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HEADEROPT \- set how to send HTTP headers
@@ -45,7 +45,7 @@
 headers only to the proxy and then \fICURLOPT_HTTPHEADER(3)\fP headers only to
 the server.
 .SH DEFAULT
-CURLHEADER_SEPARATE (changed in 7.42.1, ased CURLHEADER_UNIFIED before then)
+CURLHEADER_SEPARATE (changed in 7.42.1, used CURLHEADER_UNIFIED before then)
 .SH PROTOCOLS
 HTTP
 .SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index 64d8c21..f984435 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP200ALIASES 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP200ALIASES \- specify alternative matches for HTTP 200 OK
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
index 2bc354d..f431373 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPAUTH 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPAUTH 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPAUTH \- set HTTP server authentication methods to try
@@ -114,7 +114,7 @@
 .SH AVAILABILITY
 Option Added in 7.10.6.
 
-CURLAUTH_DIGEST_IE was added added in 7.19.3
+CURLAUTH_DIGEST_IE was added in 7.19.3
 
 CURLAUTH_ONLY was added in 7.21.3
 
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
index 4111932..db1c84c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.3
@@ -20,10 +20,10 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPGET 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPGET 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_HTTPGET \- ask for a HTTP GET request
+CURLOPT_HTTPGET \- ask for an HTTP GET request
 .SH SYNOPSIS
 #include <curl/curl.h>
 
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index 1a08ea1..f86b955 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPHEADER 3 "January 23, 2018" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPHEADER 3 "January 23, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPHEADER \- set custom HTTP headers
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
index 9a358f1..dcf5b77 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPOST 3 "September 02, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPPOST \- specify the multipart formpost content
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index 6e853da..0887321 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTPPROXYTUNNEL 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTPPROXYTUNNEL 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTPPROXYTUNNEL \- tunnel through HTTP proxy
@@ -33,7 +33,7 @@
 through the HTTP proxy (set with \fICURLOPT_PROXY(3)\fP). There is a big
 difference between using a proxy and to tunnel through it.
 
-Tunneling means that a HTTP CONNECT request is sent to the proxy, asking it
+Tunneling means that an HTTP CONNECT request is sent to the proxy, asking it
 to connect to a remote host on a specific port number and then the traffic is
 just passed through the proxy. Proxies tend to white-list specific port numbers
 it allows CONNECT requests to and often only port 80 and 443 are allowed.
@@ -44,7 +44,7 @@
 HTTP proxies can generally only speak HTTP (for obvious reasons), which makes
 libcurl convert non-HTTP requests to HTTP when using an HTTP proxy without
 this tunnel option set. For example, asking for an FTP URL and specifying an
-HTTP proxy will make libcurl send an FTP URL in a HTTP GET request to the
+HTTP proxy will make libcurl send an FTP URL in an HTTP GET request to the
 proxy. By instead tunneling through the proxy, you avoid that conversion (that
 rarely works through the proxy anyway).
 .SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
index f3fb434..0a10cc3 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_CONTENT_DECODING 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP_CONTENT_DECODING \- enable/disable HTTP content decoding
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
index ad1b0b2..07ec586 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_TRANSFER_DECODING 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP_TRANSFER_DECODING \- enable/disable HTTP transfer decoding
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index 8884c7c..e31cf71 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_HTTP_VERSION 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_HTTP_VERSION 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
@@ -73,7 +73,7 @@
   curl_easy_setopt(curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2TLS);
   ret = curl_easy_perform(curl);
   if(ret == CURLE_HTTP_RETURNED_ERROR) {
-    /* a HTTP response error problem */
+    /* an HTTP response error problem */
   }
 }
 .fi
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index 47167b0..501a45c 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index 9a7c6a6..0c21ced 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INFILESIZE \- set size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index cebdffc..a124a4c 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INFILESIZE_LARGE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_INFILESIZE_LARGE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INFILESIZE_LARGE \- set size of the input file to send off
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
index 0d78335..a69ba64 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INTERFACE 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERFACE 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INTERFACE \- source interface for outgoing traffic
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
index 4b65553..047b860 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEDATA 3 "September 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INTERLEAVEDATA \- custom pointer passed to RTSP interleave callback
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
index b9a5c89..e3e4465 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_INTERLEAVEFUNCTION 3 "September 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_INTERLEAVEFUNCTION 3 "September 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_INTERLEAVEFUNCTION \- callback function for RTSP interleaved data
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
index def24ff..b5e1695 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLDATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IOCTLDATA \- custom pointer passed to I/O callback
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
index 683fea8..18d4de9 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IOCTLFUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_IOCTLFUNCTION 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IOCTLFUNCTION \- callback for I/O operations
@@ -51,7 +51,7 @@
 This callback function gets called by libcurl when something special
 I/O-related needs to be done that the library can't do by itself. For now,
 rewinding the read data stream is the only action it can request. The
-rewinding of the read data stream may be necessary when doing a HTTP PUT or
+rewinding of the read data stream may be necessary when doing an HTTP PUT or
 POST with a multi-pass authentication method.
 
 The callback MUST return \fICURLIOE_UNKNOWNCMD\fP if the input \fIcmd\fP is
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
index 954f48c..f340a47 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_IPRESOLVE 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_IPRESOLVE \- specify which IP protocol version to use
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
index fd52be2..535f690 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_ISSUERCERT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_ISSUERCERT \- issuer SSL certificate filename
diff --git a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
index 6d5544b..a7f8858 100644
--- a/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
+++ b/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_KEEP_SENDING_ON_ERROR 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_KEEP_SENDING_ON_ERROR \- keep sending on early HTTP response >= 300
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
index 6677edb..866619a 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_KEYPASSWD 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_KEYPASSWD \- set passphrase to private key
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
index 4f44f36..e4e0026 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_KRBLEVEL 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_KRBLEVEL \- set FTP kerberos security level
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
index 02d9bf6..3f0a3ef 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOCALPORT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOCALPORT \- set local port number to use for socket
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
index b1296bc..113fbbe 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOCALPORTRANGE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_LOCALPORTRANGE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOCALPORTRANGE \- number of additional local ports to try
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
index 35b5634..80e8329 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_LOGIN_OPTIONS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOGIN_OPTIONS \- set login options
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
index 4a00f4b..5326f35 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_LIMIT 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOW_SPEED_LIMIT \- set low speed limit in bytes per second
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
index bde312d..2a2b875 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_LOW_SPEED_TIME 3 "May 06, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_LOW_SPEED_TIME \- set low speed limit time period
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
index 01dce88..92fb10e 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_AUTH 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_AUTH \- SMTP authentication address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
index 1ede927..e4ff2de 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_FROM 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_FROM \- SMTP sender address
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
index d0f93ae..0bc6dde 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAIL_RCPT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAIL_RCPT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAIL_RCPT \- list of SMTP mail recipients
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
index d2e428d..20802a2 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXCONNECTS 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXCONNECTS \- maximum connection cache size
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
index d1445ff..f5be48a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXFILESIZE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
index 25dd587..dbf7584 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXFILESIZE_LARGE 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXFILESIZE_LARGE \- maximum file size allowed to download
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
index b98e79f..0a1c042 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAXREDIRS 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAXREDIRS \- maximum number of redirects allowed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
index 03a1cfa..243eb47 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_RECV_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAX_RECV_SPEED_LARGE \- rate limit data download speed
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
index 6ebfb3e..dafb0fe 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MAX_SEND_SPEED_LARGE 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MAX_SEND_SPEED_LARGE \- rate limit data upload speed
diff --git a/docs/libcurl/opts/CURLOPT_MIMEPOST.3 b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
index 4b54c5f..39dea68 100644
--- a/docs/libcurl/opts/CURLOPT_MIMEPOST.3
+++ b/docs/libcurl/opts/CURLOPT_MIMEPOST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_MIMEPOST 3 "September 04, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_MIMEPOST \- set post/send data from mime structure
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
index b3fb955..5a85506 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NETRC 3 "August 02, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC 3 "May 02, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NETRC \- request that .netrc is used
@@ -81,4 +81,4 @@
 .SH RETURN VALUE
 Returns CURLE_OK
 .SH "SEE ALSO"
-.BR CURLOPT_USERPWD "(3), " CURLOPT_USERNAME "(3), ", CURLOPT_NETRC_FILE "(3), "
+.BR CURLOPT_USERPWD "(3), " CURLOPT_USERNAME "(3), " CURLOPT_NETRC_FILE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
index fd3a273..65b104d 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NETRC_FILE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NETRC_FILE \- file name to read .netrc info from
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
index f7f3aca..c84c0f5 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_DIRECTORY_PERMS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NEW_DIRECTORY_PERMS \- permissions for remotely created directories
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
index a5064b3..f3f25af 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NEW_FILE_PERMS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NEW_FILE_PERMS \- permissions for remotely created files
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
index b2b7a2c..2faf172 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NOBODY 3 "June 21, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOBODY \- do the download request without getting the body
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
index 0bfe9a5..5ee9340 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROGRESS 3 "October 09, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOPROGRESS \- switch off the progress meter
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
index b7a3cf3..e05a9e9 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOPROXY 3 "September 24, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NOPROXY 3 "March 03, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOPROXY \- disable proxy use for specific hosts
@@ -45,6 +45,11 @@
 Setting the noproxy string to "" (an empty string) will explicitly enable the
 proxy for all host names, even if there is an environment variable set for it.
 
+Enter IPv6 numerical addresses in the list of host names without enclosing
+brackets:
+
+ "example.com,::1,localhost"
+
 The application does not have to keep the string around after setting this
 option.
 .SH "Environment variables"
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
index efcc22c..bc5150e 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_NOSIGNAL 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_NOSIGNAL \- skip all signal handling
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
index 5e8d8f2..ac9e9e7 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETDATA 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_OPENSOCKETDATA \- custom pointer passed to open socket callback
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index 6401eab..e2bb7fb 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_OPENSOCKETFUNCTION 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_OPENSOCKETFUNCTION \- set callback for opening sockets
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
index e243edb..d0514b0 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PASSWORD 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PASSWORD 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PASSWORD \- password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
index 3596616..74da2df 100644
--- a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PATH_AS_IS 3 "February 14, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PATH_AS_IS 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
@@ -57,7 +57,7 @@
 }
 .fi
 .SH AVAILABILITY
-Aded in 7.42.0
+Added in 7.42.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
index a525c14..0dd8fa9 100644
--- a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PINNEDPUBLICKEY 3 "April 17, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PINNEDPUBLICKEY 3 "January 25, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PINNEDPUBLICKEY \- set pinned public key
@@ -96,7 +96,9 @@
 .SH AVAILABILITY
 PEM/DER support:
 
-  7.39.0: OpenSSL, GnuTLS and GSKit
+  7.39.0: OpenSSL, GnuTLS
+
+  7.39.0-7.48.0,7.58.1+: GSKit
 
   7.43.0: NSS and wolfSSL/CyaSSL
 
@@ -106,6 +108,8 @@
 
   7.54.1: SecureTransport/DarwinSSL on macOS 10.7+/iOS 10+
 
+  7.58.1: SChannel/WinSSL
+
 sha256 support:
 
   7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL
@@ -116,6 +120,8 @@
 
   7.54.1: SecureTransport/DarwinSSL on macOS 10.7+/iOS 10+
 
+  7.58.1: SChannel/WinSSL Windows XP SP3+
+
 Other SSL backends not supported.
 .SH RETURN VALUE
 Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
index 087a89b..8f21f2f 100644
--- a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PIPEWAIT 3 "May 01, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PIPEWAIT \- wait for pipelining/multiplexing
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
index 08aa4b4..8aa935f 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.3
+++ b/docs/libcurl/opts/CURLOPT_PORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PORT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PORT \- set remote port number to work with
diff --git a/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
index 2a95881..8d6bd96 100644
--- a/docs/libcurl/opts/CURLOPT_POST.3
+++ b/docs/libcurl/opts/CURLOPT_POST.3
@@ -20,10 +20,10 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POST 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_POST 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_POST \- request a HTTP POST
+CURLOPT_POST \- request an HTTP POST
 .SH SYNOPSIS
 #include <curl/curl.h>
 
@@ -52,7 +52,7 @@
 Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
 You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
 
-If you use POST to a HTTP 1.1 server, you can send data without knowing the
+If you use POST to an HTTP 1.1 server, you can send data without knowing the
 size before starting the POST if you use chunked encoding. You enable this by
 adding a header like "Transfer-Encoding: chunked" with
 \fICURLOPT_HTTPHEADER(3)\fP. With HTTP 1.0 or without chunked transfer, you
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index b290d2b..18fcacc 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTFIELDS 3 "July 07, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDS 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTFIELDS \- specify data to POST to server
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTFIELDS, char *postdata);
 .SH DESCRIPTION
-Pass a char * as parameter, pointing to the full data to send in a HTTP POST
+Pass a char * as parameter, pointing to the full data to send in an HTTP POST
 operation. You must make sure that the data is formatted the way you want the
 server to receive it. libcurl will not convert or encode it for you in any
 way. For example, the web server may assume that this data is url-encoded.
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
index 235f7a1..153ef09 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTFIELDSIZE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
index 3e68afe..f8a1358 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTFIELDSIZE_LARGE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTFIELDSIZE_LARGE \- size of POST data pointed to
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
index 2bb557e..e23d556 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTQUOTE 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_POSTQUOTE \- (S)FTP commands to run after the transfer
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
index 2455e67..af58bdf 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.3
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -20,10 +20,10 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_POSTREDIR 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_POSTREDIR 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_POSTREDIR \- how to act on a HTTP POST redirect
+CURLOPT_POSTREDIR \- how to act on an HTTP POST redirect
 .SH SYNOPSIS
 .nf
 #include <curl/curl.h>
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
index 22da38a..1718c16 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PREQUOTE 3 "June 18, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PREQUOTE \- commands to run before an FTP transfer
diff --git a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
index 83329ae..d8330de 100644
--- a/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PRE_PROXY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PRE_PROXY 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PRE_PROXY 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PRE_PROXY \- set pre-proxy to use
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index 5acf993..b73bc07 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PRIVATE 3 "December 08, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PRIVATE \- store a private pointer
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
index ae01402..dea3be8 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSDATA 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROGRESSDATA \- custom pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
index 8557117..c738cc6 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROGRESSFUNCTION 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROGRESSFUNCTION \- callback to progress meter function
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
index 02febae..bc1418a 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROTOCOLS 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROTOCOLS \- set allowed protocols
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
index 687c88d..4bf0452 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY 3 "September 24, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY \- set proxy to use
@@ -59,7 +59,7 @@
 Without a scheme prefix, \fICURLOPT_PROXYTYPE(3)\fP can be used to specify
 which kind of proxy the string identifies.
 
-When you tell the library to use a HTTP proxy, libcurl will transparently
+When you tell the library to use an HTTP proxy, libcurl will transparently
 convert operations to HTTP even if you specify an FTP URL etc. This may have
 an impact on what other features of the library you can use, such as
 \fICURLOPT_QUOTE(3)\fP and similar FTP specifics that don't work unless you
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
index ad8d9af..3eae9e3 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYAUTH 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYAUTH \- set HTTP proxy authentication methods to try
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
index e69e594..0df1083 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYHEADER 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYHEADER \- custom HTTP headers to pass to proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
index 7750d7c..fe56ae9 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPASSWORD 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYPASSWORD \- password to use with proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
index 15088c5..5769069 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYPORT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYPORT \- port number the proxy listens on
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
index 9a7e7da..87b35c6 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYTYPE 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYTYPE \- proxy protocol type
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
index d451553..6fa706f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERNAME 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYUSERNAME \- user name to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
index e610aa8..cbbb118 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXYUSERPWD 3 "May 30, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXYUSERPWD \- user name and password to use for proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
index 4bb98de..ff54d71 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CAINFO 3 "May 30, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAINFO 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CAINFO \- path to proxy Certificate Authority (CA) bundle
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CAINFO, char *path);
 .SH DESCRIPTION
-This option is for connecting to a HTTPS proxy, not a HTTPS server.
+This option is for connecting to an HTTPS proxy, not an HTTPS server.
 
 Pass a char * to a zero terminated string naming a file holding one or more
 certificates to verify the HTTPS proxy with.
@@ -61,7 +61,7 @@
 CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-  /* using a HTTPS proxy */
+  /* using an HTTPS proxy */
   curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443");
   curl_easy_setopt(curl, CURLOPT_PROXY_CAINFO, "/etc/certs/cabundle.pem");
   ret = curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
index 6753c17..8ef27f2 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CAPATH 3 "September 10, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CAPATH 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CAPATH \- specify directory holding proxy CA certificates
@@ -46,7 +46,7 @@
 CURL *curl = curl_easy_init();
 if(curl) {
   curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
-  /* using a HTTPS proxy */
+  /* using an HTTPS proxy */
   curl_easy_setopt(curl, CURLOPT_PROXY, "https://localhost:443");
   curl_easy_setopt(curl, CURLOPT_PROXY_CAPATH, "/etc/cert-dir");
   ret = curl_easy_perform(curl);
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
index a887744..e3513a4 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_CRLFILE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_CRLFILE 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_CRLFILE \- specify a proxy Certificate Revocation List file
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_CRLFILE, char *file);
 .SH DESCRIPTION
-This option is for connecting to a HTTPS proxy, not a HTTPS server.
+This option is for connecting to an HTTPS proxy, not an HTTPS server.
 
 Pass a char * to a zero terminated string naming a \fIfile\fP with the
 concatenation of CRL (in PEM format) to use in the certificate validation that
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
index 36b58d1..ddc770d 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_KEYPASSWD 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_KEYPASSWD 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_KEYPASSWD \- set passphrase to proxy private key
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_KEYPASSWD, char *pwd);
 .SH DESCRIPTION
-This option is for connecting to a HTTPS proxy, not a HTTPS server.
+This option is for connecting to an HTTPS proxy, not an HTTPS server.
 
 Pass a pointer to a zero terminated string as parameter. It will be used as
 the password required to use the \fICURLOPT_PROXY_SSLKEY(3)\fP private key.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
index dc8b000..cea21f7 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_PINNEDPUBLICKEY 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_PINNEDPUBLICKEY \- set pinned public key for https proxy
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
index 6303345..e0e367a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
index eecfee4..9c759f2 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLCERT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERT 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLCERT \- set SSL proxy client certificate
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERT, char *cert);
 .SH DESCRIPTION
-This option is for connecting to a HTTPS proxy, not a HTTPS server.
+This option is for connecting to an HTTPS proxy, not an HTTPS server.
 
 Pass a pointer to a zero terminated string as parameter. The string should be
 the file name of your client certificate used to connect to the HTTPS proxy.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
index 8cd1049..24eda85 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLCERTTYPE 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLCERTTYPE \- specify type of the proxy client SSL certificate
@@ -30,7 +30,7 @@
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLCERTTYPE, char *type);
 .SH DESCRIPTION
 Pass a pointer to a zero terminated string as parameter. The string should be
-the format of your client certificate used when connecting to a HTTPS proxy.
+the format of your client certificate used when connecting to an HTTPS proxy.
 
 Supported formats are "PEM" and "DER", except with Secure Transport. OpenSSL
 (versions 0.9.3 and later) and Secure Transport (on iOS 5 or later, or OS X
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
index 502338a..06e0783 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEY 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLKEY \- specify private keyfile for TLS and SSL proxy client cert
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
index 3eba850..80036ad 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLKEYTYPE 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLKEYTYPE \- set type of the proxy private key file
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SSLKEYTYPE, char *type);
 .SH DESCRIPTION
-This option is for connecting to a HTTPS proxy, not a HTTPS server.
+This option is for connecting to an HTTPS proxy, not an HTTPS server.
 
 Pass a pointer to a zero terminated string as parameter. The string should be
 the format of your private key. Supported formats are "PEM", "DER" and "ENG".
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
index 4b17026..b09477a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSLVERSION 3 "January 10, 2018" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSLVERSION 3 "January 10, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSLVERSION \- set preferred proxy TLS/SSL version
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
index d9dd67a..95d8716 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_CIPHER_LIST 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_CIPHER_LIST \- specify ciphers to use for proxy TLS
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
index 35e87b6..5097e15 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_OPTIONS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_OPTIONS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_OPTIONS \- set proxy SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
index 635c1fa..3a5b30f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "December 16, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYHOST 3 "May 02, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_VERIFYHOST \- verify the proxy certificate's name against host
@@ -57,7 +57,7 @@
 .SH DEFAULT
 2
 .SH PROTOCOLS
-All protocols when used over a HTTPS proxy.
+All protocols when used over an HTTPS proxy.
 .SH EXAMPLE
 .nf
 CURL *curl = curl_easy_init();
@@ -79,5 +79,5 @@
 
 If 1 is set as argument, \fICURLE_BAD_FUNCTION_ARGUMENT\fP is returned.
 .SH "SEE ALSO"
-.BR CURLOPT_PROXY_SSL_VERIFYPEER "(3), " CURLOPT_PROXY_CAINFO "(3), ",
-.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_CAINFO "(3), ",
+.BR CURLOPT_PROXY_SSL_VERIFYPEER "(3), " CURLOPT_PROXY_CAINFO "(3), "
+.BR CURLOPT_SSL_VERIFYPEER "(3), " CURLOPT_CAINFO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
index faeb544..0621797 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_SSL_VERIFYPEER 3 "December 16, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_SSL_VERIFYPEER \- verify the proxy's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
index 41283f4..dea77c0 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLSAUTH_PASSWORD \- password to use for proxy TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
index 3a88bbf..cb89cac 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLSAUTH_TYPE \- set proxy TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
index f1c14b2..35a65a1 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TLSAUTH_USERNAME \- user name to use for proxy TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
index a7d379f..fb34e20 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PROXY_TRANSFER_MODE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PROXY_TRANSFER_MODE 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_PROXY_TRANSFER_MODE \- append FTP transfer mode to URL for proxy
@@ -30,7 +30,7 @@
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_TRANSFER_MODE, long enabled);
 .SH DESCRIPTION
 Pass a long. If the value is set to 1 (one), it tells libcurl to set the
-transfer mode (binary or ASCII) for FTP transfers done via a HTTP proxy, by
+transfer mode (binary or ASCII) for FTP transfers done via an HTTP proxy, by
 appending ;type=a or ;type=i to the URL. Without this setting, or it being set
 to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT(3)\fP has no effect when
 doing FTP via a proxy. Beware that not all proxies support this feature.
diff --git a/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
index 8129f0f..0c57a8c 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.3
+++ b/docs/libcurl/opts/CURLOPT_PUT.3
@@ -20,10 +20,10 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_PUT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_PUT 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_PUT \- make a HTTP PUT request
+CURLOPT_PUT \- make an HTTP PUT request
 .SH SYNOPSIS
 #include <curl/curl.h>
 
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
index 5fc8774..911b789 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_QUOTE 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_QUOTE 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_QUOTE \- (S)FTP commands to run before transfer
@@ -35,7 +35,7 @@
 list of 'struct curl_slist' structs properly filled in with text strings. Use
 \fIcurl_slist_append(3)\fP to append strings (commands) to the list, and clear
 the entire list afterwards with \fIcurl_slist_free_all(3)\fP. Disable this
-operation again by setting a NULL to this option. When speaking to a FTP
+operation again by setting a NULL to this option. When speaking to an FTP
 server, prefix the command with an asterisk (*) to make libcurl continue even
 if the command fails as by default libcurl will stop at first failure.
 
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
index 3eed82a..eb7a418 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RANDOM_FILE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RANDOM_FILE \- specify a source for random data
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
index 4940bb1..e1dd867 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.3
+++ b/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RANGE 3 "December 21, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RANGE \- set byte range to request
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index ef96689..c8743fc 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_READDATA 3 "May 01, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_READDATA 3 "May 01, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_READDATA \- custom pointer passed to the read callback
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index 618a205..e147b0b 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_READFUNCTION 3 "December 13, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_READFUNCTION 3 "December 13, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_READFUNCTION \- read callback for data uploads
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
index 3e85f0b..257f569 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_REDIR_PROTOCOLS 3 "September 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_REDIR_PROTOCOLS 3 "September 21, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_REDIR_PROTOCOLS \- set protocols allowed to redirect to
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index 80dd3b0..d3e9afb 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_REFERER 3 "December 21, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_REFERER \- set the HTTP referer header
diff --git a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
index 8ad9de8..babfdaf 100644
--- a/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
+++ b/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_REQUEST_TARGET 3 "June 21, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_REQUEST_TARGET \- specify an alternative target for this request
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index d1be30a..b362721 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESOLVE 3 "November 17, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RESOLVE 3 "January 30, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESOLVE \- provide custom host name to IP address resolves
@@ -38,10 +38,12 @@
 to clean up an entire list.
 
 Each single name resolve string should be written using the format
-HOST:PORT:ADDRESS where HOST is the name libcurl will try to resolve, PORT is
-the port number of the service where libcurl wants to connect to the HOST and
-ADDRESS is the numerical IP address. If libcurl is built to support IPv6,
-ADDRESS can of course be either IPv4 or IPv6 style addressing.
+HOST:PORT:ADDRESS[,ADDRESS]... where HOST is the name libcurl will try
+to resolve, PORT is the port number of the service where libcurl wants
+to connect to the HOST and ADDRESS is one or more numerical IP
+addresses. If you specify multiple ip addresses they need to be
+separated by comma. If libcurl is built to support IPv6, each of the
+ADDRESS entries can of course be either IPv4 or IPv6 style addressing.
 
 This option effectively pre-populates the DNS cache with entries for the
 host+port pair so redirects and everything that operations against the
@@ -58,6 +60,8 @@
 and port number must exactly match what was already added previously.
 
 Support for providing the ADDRESS within [brackets] was added in 7.57.0.
+
+Support for providing multiple IP addresses per entry was added in 7.59.0.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
new file mode 100644
index 0000000..b8f2d15
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3
@@ -0,0 +1,64 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RESOLVER_START_DATA 3 "February 14, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_RESOLVER_START_DATA \- custom pointer passed to the resolver start callback
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RESOLVER_START_DATA, void *pointer);
+.SH DESCRIPTION
+Pass a \fIpointer\fP that will be untouched by libcurl and passed as the third
+argument in the resolver start callback set with
+\fICURLOPT_RESOLVER_START_FUNCTION(3)\fP.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+static int resolver_start_cb(void *resolver_state, void *reserved,
+                             void *userdata)
+{
+  (void)reserved;
+  printf("Received resolver_state=%p userdata=%p\\n",
+         resolver_state, userdata);
+  return 0;
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_start_cb);
+  curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, curl);
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+  curl_easy_perform(curl);
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.59.0
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_RESOLVER_START_FUNCTION "(3) "
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
new file mode 100644
index 0000000..6ffe4ec
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3
@@ -0,0 +1,84 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_RESOLVER_START_FUNCTION 3 "February 14, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_RESOLVER_START_FUNCTION \- set callback to be called before a new resolve request is started
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+int resolver_start_cb(void *resolver_state, void *reserved, void *userdata);
+
+CURLcode curl_easy_setopt(CURL *handle,
+                          CURLOPT_RESOLVER_START_FUNCTION,
+                          resolver_start_cb);
+.SH DESCRIPTION
+Pass a pointer to your callback function, which should match the prototype
+shown above.
+
+This callback function gets called by libcurl every time before a new resolve
+request is started.
+
+\fIresolver_state\fP points to a backend-specific resolver state. Currently
+only the ares resolver backend has a resolver state. It can be used to set up
+any desired option on the ares channel before it's used, for example setting up
+socket callback options.
+
+\fIreserved\fP is reserved.
+
+\fIuserdata\fP is the user pointer set with the
+\fICURLOPT_RESOLVER_START_DATA(3)\fP option.
+
+The callback must return 0 on success. Returning a non-zero value will cause
+the resolve to fail.
+.SH DEFAULT
+NULL (No callback)
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+static int resolver_start_cb(void *resolver_state, void *reserved,
+                             void *userdata)
+{
+  (void)reserved;
+  printf("Received resolver_state=%p userdata=%p\\n",
+         resolver_state, userdata);
+  return 0;
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_start_cb);
+  curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, curl);
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+  curl_easy_perform(curl);
+  curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.59.0
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_RESOLVER_START_DATA "(3) "
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
index 6c0355e..08982f2 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESUME_FROM \- set a point to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
index b71cbb9..0d2c541 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RESUME_FROM_LARGE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RESUME_FROM_LARGE \- set a point to resume transfer from
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
index 51eff78..f20020a 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_CLIENT_CSEQ 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_CLIENT_CSEQ \- set the RTSP client CSEQ number
@@ -29,7 +29,7 @@
 
 CURLcode curl_easy_setopt(CURL *handle, CURLOPT_RTSP_CLIENT_CSEQ, long cseq);
 .SH DESCRIPTION
-Pass a long to set the the CSEQ number to issue for the next RTSP
+Pass a long to set the CSEQ number to issue for the next RTSP
 request. Useful if the application is resuming a previously broken
 connection. The CSEQ will increment from this new number henceforth.
 .SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
index f0aa924..ee7f052 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_REQUEST 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_REQUEST 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_REQUEST \- specify RTSP request
@@ -47,7 +47,7 @@
 When sent by a client, this method changes the description of the session. For
 example, if a client is using the server to record a meeting, the client can
 use Announce to inform the server of all the meta-information about the
-session.  ANNOUNCE acts like a HTTP PUT or POST just like
+session.  ANNOUNCE acts like an HTTP PUT or POST just like
 \fICURL_RTSPREQ_SET_PARAMETER\fP
 .IP CURL_RTSPREQ_SETUP
 Setup is used to initialize the transport layer for the session. The
@@ -69,16 +69,16 @@
 .IP CURL_RTSPREQ_GET_PARAMETER
 Retrieve a parameter from the server. By default, libcurl will automatically
 include a \fIContent-Type: text/parameters\fP header on all non-empty requests
-unless a custom one is set. GET_PARAMETER acts just like a HTTP PUT or POST
+unless a custom one is set. GET_PARAMETER acts just like an HTTP PUT or POST
 (see \fICURL_RTSPREQ_SET_PARAMETER\fP).
 Applications wishing to send a heartbeat message (e.g. in the presence of a
 server-specified timeout) should send use an empty GET_PARAMETER request.
 .IP CURL_RTSPREQ_SET_PARAMETER
 Set a parameter on the server. By default, libcurl will automatically include
 a \fIContent-Type: text/parameters\fP header unless a custom one is set. The
-interaction with SET_PARAMETER is much like a HTTP PUT or POST. An application
+interaction with SET_PARAMETER is much like an HTTP PUT or POST. An application
 may either use \fICURLOPT_UPLOAD(3)\fP with \fICURLOPT_READDATA(3)\fP like a
-HTTP PUT, or it may use \fICURLOPT_POSTFIELDS(3)\fP like a HTTP POST. No
+HTTP PUT, or it may use \fICURLOPT_POSTFIELDS(3)\fP like an HTTP POST. No
 chunked transfers are allowed, so the application must set the
 \fICURLOPT_INFILESIZE(3)\fP in the former and \fICURLOPT_POSTFIELDSIZE(3)\fP
 in the latter. Also, there is no use of multi-part POSTs within RTSP.
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
index f0ec2a9..0caf541 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SERVER_CSEQ 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_SERVER_CSEQ \- set the RTSP server CSEQ number
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
index dd41d43..6d19ad9 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_SESSION_ID 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_SESSION_ID \- set RTSP session ID
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
index 8a05150..addfa60 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_STREAM_URI 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_STREAM_URI 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_STREAM_URI \- set RTSP stream URI
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
index 2d26db5..f4a3f42 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_RTSP_TRANSPORT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_RTSP_TRANSPORT \- set RTSP Transport: header
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
index dd91f4c..293a30b 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SASL_IR 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SASL_IR \- enable sending initial response in first packet
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
index a42aabb..b749b9a 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SEEKDATA 3 "August 12, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKDATA 3 "August 12, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SEEKDATA \- custom pointer passed to the seek callback
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index 6d90bac..8fad409c7 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SEEKFUNCTION 3 "August 12, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SEEKFUNCTION 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SEEKFUNCTION \- user callback for seeking in input stream
@@ -46,7 +46,7 @@
 (instead of reading all uploaded bytes with the normal read
 function/callback). It is also called to rewind a stream when data has already
 been sent to the server and needs to be sent again. This may happen when doing
-a HTTP PUT or POST with a multi-pass authentication method, or when an
+an HTTP PUT or POST with a multi-pass authentication method, or when an
 existing HTTP connection is reused too late and the server closes the
 connection. The function shall work like fseek(3) or lseek(3) and it gets
 SEEK_SET, SEEK_CUR or SEEK_END as argument for \fIorigin\fP, although libcurl
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
index 2094d98..1fd3421 100644
--- a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SERVICE_NAME 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SERVICE_NAME \- authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
index 8191445..ac258b4 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLOPT_SHARE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SHARE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SHARE \- specify share handle to use
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
index 7d00ab4..9f3c3f8 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTDATA 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKOPTDATA \- custom pointer to pass to sockopt callback
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
index 43f3b7e..1fcd671 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKOPTFUNCTION 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKOPTFUNCTION \- set callback for setting socket options
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
index 114d847..08488b1 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_AUTH 3 "April 27, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKS5_AUTH \- set allowed methods for SOCKS5 proxy authentication
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
index 015869d..5b1f940 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_NEC 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKS5_GSSAPI_NEC \- set socks proxy gssapi negotiation protection
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
index 1e2cd2c..90a3dbb 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
index 81b7b76..7229e4d 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_AUTH_TYPES 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_AUTH_TYPES \- set desired auth types for SFTP and SCP
diff --git a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
index d69023f..00cb833 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_COMPRESSION 3 "August 17, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_COMPRESSION 3 "August 17, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_COMPRESSION \- enables automatic decompression of HTTP downloads
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
index 8b12f0f..85ea413 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 \- checksum of SSH server public key
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
index 12b8e3d..d2b953e 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYDATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_KEYDATA \- pointer to pass to the SSH key callback
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
index fbfacb8..94f61a9 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KEYFUNCTION 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_KEYFUNCTION \- callback for known host matching logic
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
index 48a9297..a6174de 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_KNOWNHOSTS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_KNOWNHOSTS \- file name holding the SSH known hosts
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
index 4500140..a7d4f26 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PRIVATE_KEYFILE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_PRIVATE_KEYFILE \- set private key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
index 0e298fd..3fe56fc 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSH_PUBLIC_KEYFILE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSH_PUBLIC_KEYFILE \- set public key file for SSH auth
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
index 4236cde..660eb92 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLCERT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERT 3 "April 18, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLCERT \- set SSL client certificate
@@ -39,6 +39,17 @@
 want to use a file from the current directory, please precede it with "./"
 prefix, in order to avoid confusion with a nickname.
 
+(Schannel/WinSSL only) Client certificates must be specified by a path
+expression to a certificate store. (Loading PFX is not supported; you can
+import it to a store first). You can use
+"<store location>\\<store name>\\<thumbprint>" to refer to a certificate
+in the system certificates store, for example,
+"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is
+usually a SHA-1 hex string which you can see in certificate details. Following
+store locations are supported: CurrentUser, LocalMachine, CurrentService,
+Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy,
+LocalMachineEnterprise.
+
 When using a client certificate, you most likely also need to provide a
 private key with \fICURLOPT_SSLKEY(3)\fP.
 
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
index c882d33..8718a31 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLCERTTYPE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLCERTTYPE \- specify type of the client SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
index 4defaf1..368e097 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLENGINE \- set SSL engine identifier
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
index 4de68b5..66f971c 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLENGINE_DEFAULT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
index 750ae10..49b0927 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEY 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLKEY \- specify private keyfile for TLS and SSL client cert
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
index 72402fb..04dc3ea 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLKEYTYPE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLKEYTYPE \- set type of the private key file
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
index c9f89a1..7ce1682 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSLVERSION 3 "January 10, 2018" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSLVERSION 3 "January 10, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSLVERSION \- set preferred TLS/SSL version
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
index 26ad375..d14e9ab 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_CIPHER_LIST 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CIPHER_LIST 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_CIPHER_LIST \- specify ciphers to use for TLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 2eaaa39..1cf26ff 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_CTX_DATA 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_DATA 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_CTX_DATA \- custom pointer passed to ssl_ctx callback
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index 821cf2d..69c3217 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_CTX_FUNCTION 3 "December 19, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_CTX_FUNCTION 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_CTX_FUNCTION \- SSL context callback for OpenSSL, wolfSSL/CyaSSL or mbedTLS
@@ -57,7 +57,7 @@
 To use this properly, a non-trivial amount of knowledge of your SSL library is
 necessary. For example, you can use this function to call library-specific
 callbacks to add additional validation code for certificates, and even to
-change the actual URI of a HTTPS request.
+change the actual URI of an HTTPS request.
 .SH DEFAULT
 NULL
 .SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
index 8cb1ae8..2245435 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_ALPN 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_ENABLE_ALPN \- enable ALPN
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
index a71a2d2..80a4733 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_ENABLE_NPN 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_ENABLE_NPN \- enable NPN
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
index 817dfe1..3da74ca 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_FALSESTART 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_FALSESTART \- enable TLS false start
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index 14ab34e..b24caae 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_OPTIONS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_OPTIONS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_OPTIONS \- set SSL behavior options
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
index e48b84b..2f7f1bb 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_SESSIONID_CACHE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_SESSIONID_CACHE \- enable/disable use of the SSL session-ID cache
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index 8b08e5d..3182e38 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYHOST 3 "February 02, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_VERIFYHOST \- verify the certificate's name against host
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index e48c220..1247f3f 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_VERIFYPEER 3 "February 09, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYPEER 3 "February 09, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_VERIFYPEER \- verify the peer's SSL certificate
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
index a748666..123d1db 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SSL_VERIFYSTATUS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SSL_VERIFYSTATUS \- verify the certificate's status
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index fb60bd8..d50b30c 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_STDERR 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STDERR \- redirect stderr to another stream
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
index 22b32b0..855c3be 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
index 5390e54..697d95c 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -20,10 +20,10 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STREAM_DEPENDS_E 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
-CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on execlusively
+CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on exclusively
 .SH SYNOPSIS
 #include <curl/curl.h>
 
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
index 9b1da58..f7b3a1a 100644
--- a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
+++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_STREAM_WEIGHT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_STREAM_WEIGHT 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_STREAM_WEIGHT \- set numerical stream weight
@@ -37,7 +37,7 @@
 connections, which thus implies that you use \fICURLMOPT_PIPELINING(3)\fP.
 
 This option can be set during transfer and will then cause the updated weight
-info get sent to the server the next time a HTTP/2 frame is sent to the
+info get sent to the server the next time an HTTP/2 frame is sent to the
 server.
 
 See section 5.3 of RFC 7540 for protocol details:
diff --git a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
index 6cc174d..da75a2b 100644
--- a/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
+++ b/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_SUPPRESS_CONNECT_HEADERS 3 "April 28, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_SUPPRESS_CONNECT_HEADERS \- Suppress proxy CONNECT response headers from user callbacks
diff --git a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
index a9db106..b4bcaa4 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_FASTOPEN 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index ddc4d3f..4e202a8 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPALIVE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_KEEPALIVE \- enable TCP keep-alive probing
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index 50345e6..71171ab 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPIDLE 3 "January 02, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_KEEPIDLE \- set TCP keep-alive idle time wait
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index a00234e..401b78f 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_KEEPINTVL 3 "January 02, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_KEEPINTVL \- set TCP keep-alive interval
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
index 32f5465..d59e643 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TCP_NODELAY 3 "January 15, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TCP_NODELAY \- set the TCP_NODELAY option
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
index 9d2b8ae..76415a7 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TELNETOPTIONS 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TELNETOPTIONS \- custom telnet options
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
index a669d20..a05880a 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_BLKSIZE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TFTP_BLKSIZE \- TFTP block size
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
index 8d8c6a7..86b24d1 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "April 06, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
index 7a25421..21f9ea2 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMECONDITION 3 "April 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMECONDITION \- select condition for a time request
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 5253b0d..38ca816 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT 3 "October 03, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEOUT \- set maximum time the request is allowed to take
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index a9fb963..39c504b 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEOUT_MS 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEOUT_MS 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEOUT_MS \- set maximum time the request is allowed to take
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
index c4192a0..27f25c4 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TIMEVALUE 3 "April 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TIMEVALUE 3 "January 25, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TIMEVALUE \- set time value for conditional
@@ -32,6 +32,9 @@
 Pass a long \fIval\fP as parameter. This should be the time counted as seconds
 since 1 Jan 1970, and the time will be used in a condition as specified with
 \fICURLOPT_TIMECONDITION(3)\fP.
+
+On systems with 32 bit 'long' variables, this option cannot set dates beyond
+the year 2038. Consider \fICURLOPT_TIMEVALUE_LARGE(3)\fP instead.
 .SH DEFAULT
 0
 .SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
new file mode 100644
index 0000000..fce2c82
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3
@@ -0,0 +1,65 @@
+.\" **************************************************************************
+.\" *                                  _   _ ____  _
+.\" *  Project                     ___| | | |  _ \| |
+.\" *                             / __| | | | |_) | |
+.\" *                            | (__| |_| |  _ <| |___
+.\" *                             \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TIMEVALUE_LARGE 3 "January 25, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
+
+.SH NAME
+CURLOPT_TIMEVALUE_LARGE \- set time value for conditional
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TIMEVALUE_LARGE, curl_off_t val);
+.SH DESCRIPTION
+Pass a curl_off_t \fIval\fP as parameter. This should be the time counted as
+seconds since 1 Jan 1970, and the time will be used in a condition as
+specified with \fICURLOPT_TIMECONDITION(3)\fP.
+
+The difference between this option and \fICURLOPT_TIMEVALUE(3)\fP is the type
+of the argument. On systems where 'long' is only 32 bit wide, this option has
+to be used to set dates beyond the year 2038.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+HTTP, FTP, RTSP, and FILE
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+  /* January 1, 2020 is 1577833200 */
+  curl_easy_setopt(curl, CURLOPT_TIMEVALUE_LARGE, (curl_off_t)1577833200);
+
+  /* If-Modified-Since the above time stamp */
+  curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+  /* Perform the request */
+  curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.59.0.
+.SH RETURN VALUE
+Returns CURLE_OK
+.SH "SEE ALSO"
+.BR CURLOPT_TIMECONDITION "(3), "
+.BR CURLOPT_TIMEVALUE_LARGE "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
index b38dcfb..bc073e2 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_PASSWORD 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLSAUTH_PASSWORD \- password to use for TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
index 8fc43bc..bff28e4 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_TYPE 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
index 4dc8c30..0caa449 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TLSAUTH_USERNAME 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TLSAUTH_USERNAME \- user name to use for TLS authentication
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
index 233e51c..aeeb511 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFERTEXT 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TRANSFERTEXT \- request a text based transfer for FTP
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
index ec6101e..fe3ea3b 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_TRANSFER_ENCODING 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_TRANSFER_ENCODING \- ask for HTTP Transfer Encoding
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
index 1955832..a3a2b0b 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UNIX_SOCKET_PATH 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_UNIX_SOCKET_PATH 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UNIX_SOCKET_PATH \- set Unix domain socket
@@ -57,7 +57,7 @@
 POP3 and SMTP should in particular work (including their SSL/TLS variants).
 .SH EXAMPLE
 Given that you have an nginx server running, listening on /tmp/nginx.sock, you
-can request a HTTP resource with:
+can request an HTTP resource with:
 
 .nf
     curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, "/tmp/nginx.sock");
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
index a3cb4cb..88c8094 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_UNRESTRICTED_AUTH 3 "May 15, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UNRESTRICTED_AUTH \- send credentials to other hosts too
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
index da7ac91..defb432 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_UPLOAD 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_UPLOAD 3 "April 17, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_UPLOAD \- enable data upload
@@ -38,7 +38,7 @@
 Using PUT with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
 You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP as usual.
 
-If you use PUT to a HTTP 1.1 server, you can upload data without knowing the
+If you use PUT to an HTTP 1.1 server, you can upload data without knowing the
 size before starting the transfer if you use chunked encoding. You enable this
 by adding a header like "Transfer-Encoding: chunked" with
 \fICURLOPT_HTTPHEADER(3)\fP. With HTTP 1.0 or without chunked transfer, you
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index 1071a45..c1f5390 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_URL 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_URL 3 "April 30, 2018" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_URL \- provide the URL to use in the request
@@ -109,7 +109,7 @@
 given below this list is not conclusive:
 
 .IP HTTP
-The path part of a HTTP request specifies the file to retrieve and from what
+The path part of an HTTP request specifies the file to retrieve and from what
 directory. If the directory is not specified then the web server's root
 directory is used. If the file is omitted then the default document will be
 retrieved for either the directory specified or the root directory. The exact
@@ -287,6 +287,16 @@
 
 The application does not have to keep the string around after setting this
 option.
+.SH ENCODING
+The string pointed to in the \fICURLOPT_URL(3)\fP argument is generally
+expected to be a sequence of characters using an ASCII compatible encoding.
+
+If libcurl is built with IDN support, the server name part of the URL can use
+an "international name" by using the current encoding (according to locale) or
+UTF-8 (when winidn is used).
+
+If libcurl is built without IDN support, the server name is used exactly as
+specified when passed to the name resolver functions.
 .SH DEFAULT
 There is no default URL. If this option isn't set, no transfer can be
 performed.
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index bc7b380..c726204 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_USERAGENT 3 "December 21, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USERAGENT \- set HTTP user-agent header
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
index be5dfb6..d675cca 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_USERNAME 3 "May 05, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USERNAME \- user name to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
index dcbb159..46b90fc 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_USERPWD 3 "August 24, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USERPWD \- user name and password to use in authentication
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
index 7d709c6..7865a17 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.3
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_USE_SSL 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_USE_SSL 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_USE_SSL \- request using SSL / TLS for the transfer
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
index 56c9ffd..03af183 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.3
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_VERBOSE 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_VERBOSE \- set verbose mode on/off
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
index a2b4355..fbddc68 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_WILDCARDMATCH 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_WILDCARDMATCH 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_WILDCARDMATCH \- enable directory wildcard transfers
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index af3caa5..43c15f5 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_WRITEDATA 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEDATA 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_WRITEDATA \- custom pointer passed to the write callback
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
index 47cab25..aa60468 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_WRITEFUNCTION 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_WRITEFUNCTION 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_WRITEFUNCTION \- set callback for writing received data
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
index 936617d..5519579 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFODATA 3 "October 09, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_XFERINFODATA \- custom pointer passed to the progress callback
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
index a6712e5..760238b 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_XFERINFOFUNCTION 3 "February 03, 2016" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_XFERINFOFUNCTION \- callback to progress meter function
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
index 7d4e65f..8499433 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLOPT_XOAUTH2_BEARER 3 "May 31, 2017" "libcurl 7.58.0" "curl_easy_setopt options"
+.TH CURLOPT_XOAUTH2_BEARER 3 "May 31, 2017" "libcurl 7.60.0" "curl_easy_setopt options"
 
 .SH NAME
 CURLOPT_XOAUTH2_BEARER \- specify OAuth 2.0 access token
diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc
index f710b5e..80488bf 100644
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@ -14,6 +14,7 @@
   CURLINFO_COOKIELIST.3                         \
   CURLINFO_EFFECTIVE_URL.3                      \
   CURLINFO_FILETIME.3                           \
+  CURLINFO_FILETIME_T.3                         \
   CURLINFO_FTP_ENTRY_PATH.3                     \
   CURLINFO_HEADER_SIZE.3                        \
   CURLINFO_HTTPAUTH_AVAIL.3                     \
@@ -111,6 +112,7 @@
   CURLOPT_DNS_LOCAL_IP4.3                       \
   CURLOPT_DNS_LOCAL_IP6.3                       \
   CURLOPT_DNS_SERVERS.3                         \
+  CURLOPT_DNS_SHUFFLE_ADDRESSES.3               \
   CURLOPT_DNS_USE_GLOBAL_CACHE.3                \
   CURLOPT_EGDSOCKET.3                           \
   CURLOPT_ERRORBUFFER.3                         \
@@ -135,6 +137,8 @@
   CURLOPT_FTP_USE_EPSV.3                        \
   CURLOPT_FTP_USE_PRET.3                        \
   CURLOPT_GSSAPI_DELEGATION.3                   \
+  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3           \
+  CURLOPT_HAPROXYPROTOCOL.3                     \
   CURLOPT_HEADER.3                              \
   CURLOPT_HEADERDATA.3                          \
   CURLOPT_HEADERFUNCTION.3                      \
@@ -240,6 +244,8 @@
   CURLOPT_REFERER.3                             \
   CURLOPT_REQUEST_TARGET.3                      \
   CURLOPT_RESOLVE.3                             \
+  CURLOPT_RESOLVER_START_DATA.3                 \
+  CURLOPT_RESOLVER_START_FUNCTION.3             \
   CURLOPT_RESUME_FROM.3                         \
   CURLOPT_RESUME_FROM_LARGE.3                   \
   CURLOPT_RTSP_CLIENT_CSEQ.3                    \
@@ -301,6 +307,7 @@
   CURLOPT_TIMEOUT.3                             \
   CURLOPT_TIMEOUT_MS.3                          \
   CURLOPT_TIMEVALUE.3                           \
+  CURLOPT_TIMEVALUE_LARGE.3                     \
   CURLOPT_TLSAUTH_PASSWORD.3                    \
   CURLOPT_TLSAUTH_TYPE.3                        \
   CURLOPT_TLSAUTH_USERNAME.3                    \
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index ab899b9..52e8407 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -101,6 +101,7 @@
 CURLE_RANGE_ERROR               7.17.0
 CURLE_READ_ERROR                7.1
 CURLE_RECV_ERROR                7.10
+CURLE_RECURSIVE_API_CALL        7.59.0
 CURLE_REMOTE_ACCESS_DENIED      7.17.0
 CURLE_REMOTE_DISK_FULL          7.17.0
 CURLE_REMOTE_FILE_EXISTS        7.17.0
@@ -220,6 +221,7 @@
 CURLINFO_EFFECTIVE_URL          7.4
 CURLINFO_END                    7.9.6
 CURLINFO_FILETIME               7.5
+CURLINFO_FILETIME_T             7.59.0
 CURLINFO_FTP_ENTRY_PATH         7.15.4
 CURLINFO_HEADER_IN              7.9.6
 CURLINFO_HEADER_OUT             7.9.6
@@ -322,6 +324,7 @@
 CURLM_INTERNAL_ERROR            7.9.6
 CURLM_OK                        7.9.6
 CURLM_OUT_OF_MEMORY             7.9.6
+CURLM_RECURSIVE_API_CALL        7.59.0
 CURLM_UNKNOWN_OPTION            7.15.4
 CURLOPTTYPE_FUNCTIONPOINT       7.1
 CURLOPTTYPE_LONG                7.1
@@ -370,6 +373,7 @@
 CURLOPT_DNS_LOCAL_IP4           7.33.0
 CURLOPT_DNS_LOCAL_IP6           7.33.0
 CURLOPT_DNS_SERVERS             7.24.0
+CURLOPT_DNS_SHUFFLE_ADDRESSES   7.60.0
 CURLOPT_DNS_USE_GLOBAL_CACHE    7.9.3         7.11.1
 CURLOPT_EGDSOCKET               7.7
 CURLOPT_ENCODING                7.10
@@ -400,6 +404,8 @@
 CURLOPT_FTP_USE_EPSV            7.9.2
 CURLOPT_FTP_USE_PRET            7.20.0
 CURLOPT_GSSAPI_DELEGATION       7.22.0
+CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS 7.59.0
+CURLOPT_HAPROXYPROTOCOL         7.60.0
 CURLOPT_HEADER                  7.1
 CURLOPT_HEADERDATA              7.10
 CURLOPT_HEADERFUNCTION          7.7.2
@@ -587,11 +593,14 @@
 CURLOPT_TIMEOUT                 7.1
 CURLOPT_TIMEOUT_MS              7.16.2
 CURLOPT_TIMEVALUE               7.1
+CURLOPT_TIMEVALUE_LARGE         7.59.0
 CURLOPT_TLSAUTH_PASSWORD        7.21.4
 CURLOPT_TLSAUTH_TYPE            7.21.4
 CURLOPT_TLSAUTH_USERNAME        7.21.4
 CURLOPT_TRANSFERTEXT            7.1.1
 CURLOPT_TRANSFER_ENCODING       7.21.6
+CURLOPT_RESOLVER_START_FUNCTION 7.59.0
+CURLOPT_RESOLVER_START_DATA     7.59.0
 CURLOPT_UNIX_SOCKET_PATH        7.40.0
 CURLOPT_UNRESTRICTED_AUTH       7.10.4
 CURLOPT_UPLOAD                  7.1
@@ -737,6 +746,7 @@
 CURL_GLOBAL_NOTHING             7.8
 CURL_GLOBAL_SSL                 7.8
 CURL_GLOBAL_WIN32               7.8.1
+CURL_HET_DEFAULT                7.59.0
 CURL_HTTPPOST_BUFFER            7.46.0
 CURL_HTTPPOST_CALLBACK          7.46.0
 CURL_HTTPPOST_FILENAME          7.46.0
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 7680acd..3fd4ca8 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -245,7 +245,9 @@
                                       size_t nitems,
                                       void *outstream);
 
-
+/* This callback will be called when a new resolver request is made */
+typedef int (*curl_resolver_start_callback)(void *resolver_state,
+                                            void *reserved, void *userdata);
 
 /* enumeration of file types */
 typedef enum {
@@ -577,6 +579,8 @@
   CURLE_SSL_INVALIDCERTSTATUS,   /* 91 - invalid certificate status */
   CURLE_HTTP2_STREAM,            /* 92 - stream error in HTTP/2 framing layer
                                     */
+  CURLE_RECURSIVE_API_CALL,      /* 93 - an api function was called from
+                                    inside a callback */
   CURL_LAST /* never use! */
 } CURLcode;
 
@@ -789,6 +793,11 @@
    SSL backends where such behavior is present. */
 #define CURLSSLOPT_NO_REVOKE (1<<1)
 
+/* The default connection attempt delay in milliseconds for happy eyeballs.
+   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document
+   this value, keep them in sync. */
+#define CURL_HET_DEFAULT 200L
+
 #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all
                           the obsolete stuff removed! */
 
@@ -1662,7 +1671,7 @@
    * Only supported by the c-ares DNS backend */
   CINIT(DNS_LOCAL_IP4, STRINGPOINT, 222),
 
-  /* Set the local IPv4 address to use for outgoing DNS requests.
+  /* Set the local IPv6 address to use for outgoing DNS requests.
    * Only supported by the c-ares DNS backend */
   CINIT(DNS_LOCAL_IP6, STRINGPOINT, 223),
 
@@ -1819,6 +1828,25 @@
   /* Post MIME data. */
   CINIT(MIMEPOST, OBJECTPOINT, 269),
 
+  /* Time to use with the CURLOPT_TIMECONDITION. Specified in number of
+     seconds since 1 Jan 1970. */
+  CINIT(TIMEVALUE_LARGE, OFF_T, 270),
+
+  /* Head start in milliseconds to give happy eyeballs. */
+  CINIT(HAPPY_EYEBALLS_TIMEOUT_MS, LONG, 271),
+
+  /* Function that will be called before a resolver request is made */
+  CINIT(RESOLVER_START_FUNCTION, FUNCTIONPOINT, 272),
+
+  /* User data to pass to the resolver start callback. */
+  CINIT(RESOLVER_START_DATA, OBJECTPOINT, 273),
+
+  /* send HAProxy PROXY protocol header? */
+  CINIT(HAPROXYPROTOCOL, LONG, 274),
+
+  /* shuffle addresses before use when DNS returns multiple */
+  CINIT(DNS_SHUFFLE_ADDRESSES, LONG, 275),
+
   CURLOPT_LASTENTRY /* the last unused */
 } CURLoption;
 
@@ -2459,6 +2487,7 @@
   CURLINFO_REQUEST_SIZE     = CURLINFO_LONG   + 12,
   CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG   + 13,
   CURLINFO_FILETIME         = CURLINFO_LONG   + 14,
+  CURLINFO_FILETIME_T       = CURLINFO_OFF_T  + 14,
   CURLINFO_CONTENT_LENGTH_DOWNLOAD   = CURLINFO_DOUBLE + 15,
   CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T  + 15,
   CURLINFO_CONTENT_LENGTH_UPLOAD     = CURLINFO_DOUBLE + 16,
diff --git a/include/curl/curlver.h b/include/curl/curlver.h
index 6d93cc1..1783102 100644
--- a/include/curl/curlver.h
+++ b/include/curl/curlver.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,16 +26,16 @@
    a script at release-time. This was made its own header file in 7.11.2 */
 
 /* This is the global package copyright */
-#define LIBCURL_COPYRIGHT "1996 - 2017 Daniel Stenberg, <daniel@haxx.se>."
+#define LIBCURL_COPYRIGHT "1996 - 2018 Daniel Stenberg, <daniel@haxx.se>."
 
 /* This is the version number of the libcurl package from which this header
    file origins: */
-#define LIBCURL_VERSION "7.58.0"
+#define LIBCURL_VERSION "7.60.0"
 
 /* The numeric version number is also available "in parts" by using these
    defines: */
 #define LIBCURL_VERSION_MAJOR 7
-#define LIBCURL_VERSION_MINOR 58
+#define LIBCURL_VERSION_MINOR 60
 #define LIBCURL_VERSION_PATCH 0
 
 /* This is the numeric version of the libcurl version number, meant for easier
@@ -57,7 +57,7 @@
    CURL_VERSION_BITS() macro since curl's own configure script greps for it
    and needs it to contain the full number.
 */
-#define LIBCURL_VERSION_NUM 0x073a00
+#define LIBCURL_VERSION_NUM 0x073c00
 
 /*
  * This is the date and time when the full source package was created. The
@@ -68,7 +68,7 @@
  *
  * "2007-11-23"
  */
-#define LIBCURL_TIMESTAMP "2018-01-24"
+#define LIBCURL_TIMESTAMP "2018-05-16"
 
 #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|z)
 #define CURL_AT_LEAST_VERSION(x,y,z) \
diff --git a/include/curl/multi.h b/include/curl/multi.h
index 911c91d..b19dbaf 100644
--- a/include/curl/multi.h
+++ b/include/curl/multi.h
@@ -70,6 +70,8 @@
   CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */
   CURLM_ADDED_ALREADY,   /* an easy handle already added to a multi handle was
                             attempted to get added - again */
+  CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
+                               callback */
   CURLM_LAST
 } CURLMcode;
 
@@ -184,8 +186,8 @@
   *
   * Returns: CURLMcode type, general multi error code. *NOTE* that this only
   *          returns errors etc regarding the whole multi stack. There might
-  *          still have occurred problems on invidual transfers even when this
-  *          returns OK.
+  *          still have occurred problems on individual transfers even when
+  *          this returns OK.
   */
 CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
                                          int *running_handles);
diff --git a/include/curl/system.h b/include/curl/system.h
index 07bbd9c..eac4cfe 100644
--- a/include/curl/system.h
+++ b/include/curl/system.h
@@ -300,7 +300,9 @@
 
 #elif defined(__SUNPRO_C) /* Oracle Solaris Studio */
 #  if !defined(__LP64) && (defined(__ILP32) ||                          \
-                           defined(__i386) || defined(__sparcv8))
+                           defined(__i386) ||                           \
+                           defined(__sparcv8) ||                        \
+                           defined(__sparcv8plus))
 #    define CURL_TYPEOF_CURL_OFF_T     long long
 #    define CURL_FORMAT_CURL_OFF_T     "lld"
 #    define CURL_FORMAT_CURL_OFF_TU    "llu"
diff --git a/include/curl/typecheck-gcc.h b/include/curl/typecheck-gcc.h
index 10c74c7..3a0f253 100644
--- a/include/curl/typecheck-gcc.h
+++ b/include/curl/typecheck-gcc.h
@@ -54,6 +54,9 @@
     if(_curl_is_write_cb_option(_curl_opt))                                   \
       if(!_curl_is_write_cb(value))                                           \
         _curl_easy_setopt_err_write_callback();                               \
+    if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION)                        \
+      if(!_curl_is_resolver_start_callback(value))                            \
+        _curl_easy_setopt_err_resolver_start_callback();                      \
     if((_curl_opt) == CURLOPT_READFUNCTION)                                   \
       if(!_curl_is_read_cb(value))                                            \
         _curl_easy_setopt_err_read_cb();                                      \
@@ -170,6 +173,10 @@
   )
 _CURL_WARNING(_curl_easy_setopt_err_write_callback,
   "curl_easy_setopt expects a curl_write_callback argument for this option")
+_CURL_WARNING(_curl_easy_setopt_err_resolver_start_callback,
+              "curl_easy_setopt expects a "
+              "curl_resolver_start_callback argument for this option"
+  )
 _CURL_WARNING(_curl_easy_setopt_err_read_cb,
   "curl_easy_setopt expects a curl_read_callback argument for this option")
 _CURL_WARNING(_curl_easy_setopt_err_ioctl_cb,
@@ -354,6 +361,7 @@
    (option) == CURLOPT_SSH_KEYDATA ||                                         \
    (option) == CURLOPT_SSL_CTX_DATA ||                                        \
    (option) == CURLOPT_WRITEDATA ||                                           \
+   (option) == CURLOPT_RESOLVER_START_DATA ||                                 \
    0)
 
 /* evaluates to true if option takes a POST data argument (void* or char*) */
@@ -504,6 +512,11 @@
   (__builtin_types_compatible_p(__typeof__(func), type) ||                    \
    __builtin_types_compatible_p(__typeof__(func) *, type))
 
+/* evaluates to true if expr is of type curl_resolver_start_callback */
+#define _curl_is_resolver_start_callback(expr)       \
+  (_curl_is_NULL(expr) || \
+   _curl_callback_compatible((expr), curl_resolver_start_callback))
+
 /* evaluates to true if expr is of type curl_read_callback or "similar" */
 #define _curl_is_read_cb(expr)                                          \
   (_curl_is_NULL(expr) ||                                                     \
diff --git a/lib/Makefile.inc b/lib/Makefile.inc
index 61e80cf..61c2341 100644
--- a/lib/Makefile.inc
+++ b/lib/Makefile.inc
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -29,8 +29,8 @@
 
 LIB_VTLS_CFILES = vtls/openssl.c vtls/gtls.c vtls/vtls.c vtls/nss.c     \
   vtls/polarssl.c vtls/polarssl_threadlock.c vtls/axtls.c               \
-  vtls/cyassl.c vtls/schannel.c vtls/darwinssl.c vtls/gskit.c           \
-  vtls/mbedtls.c
+  vtls/cyassl.c vtls/schannel.c vtls/schannel_verify.c                  \
+  vtls/darwinssl.c vtls/gskit.c vtls/mbedtls.c
 
 LIB_VTLS_HFILES = vtls/openssl.h vtls/vtls.h vtls/gtls.h                \
   vtls/nssg.h vtls/polarssl.h vtls/polarssl_threadlock.h vtls/axtls.h   \
@@ -46,7 +46,7 @@
   http_digest.c md4.c md5.c http_negotiate.c inet_pton.c strtoofft.c    \
   strerror.c amigaos.c hostasyn.c hostip4.c hostip6.c hostsyn.c         \
   inet_ntop.c parsedate.c select.c tftp.c splay.c strdup.c socks.c      \
-  ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c            \
+  ssh.c ssh-libssh.c curl_addrinfo.c socks_gssapi.c socks_sspi.c        \
   curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c pop3.c smtp.c    \
   pingpong.c rtsp.c curl_threads.c warnless.c hmac.c curl_rtmp.c        \
   openldap.c curl_gethostname.c gopher.c idn_win32.c                    \
@@ -54,7 +54,7 @@
   http_ntlm.c curl_ntlm_wb.c curl_ntlm_core.c curl_sasl.c rand.c        \
   curl_multibyte.c hostcheck.c conncache.c pipeline.c dotdot.c          \
   x509asn1.c http2.c smb.c curl_endian.c curl_des.c system_win32.c      \
-  mime.c sha256.c setopt.c curl_path.c
+  mime.c sha256.c setopt.c curl_path.c curl_ctype.c curl_range.c
 
 LIB_HFILES = arpa_telnet.h netrc.h file.h timeval.h hostip.h progress.h \
   formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h if2ip.h         \
@@ -74,7 +74,7 @@
   curl_setup_once.h multihandle.h setup-vms.h pipeline.h dotdot.h       \
   x509asn1.h http2.h sigpipe.h smb.h curl_endian.h curl_des.h           \
   curl_printf.h system_win32.h rand.h mime.h curl_sha256.h setopt.h     \
-  curl_path.h
+  curl_path.h curl_ctype.h curl_range.h
 
 LIB_RCFILES = libcurl.rc
 
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
index 1ac3fc8..b11fab2 100644
--- a/lib/asyn-thread.c
+++ b/lib/asyn-thread.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -79,6 +79,10 @@
 #include "curl_memory.h"
 #include "memdebug.h"
 
+struct resdata {
+  struct curltime start;
+};
+
 /*
  * Curl_resolver_global_init()
  * Called from curl_global_init() to initialize global resolver environment.
@@ -102,11 +106,13 @@
  * Curl_resolver_init()
  * Called from curl_easy_init() -> Curl_open() to initialize resolver
  * URL-state specific environment ('resolver' member of the UrlState
- * structure).  Does nothing here.
+ * structure).
  */
 CURLcode Curl_resolver_init(void **resolver)
 {
-  (void)resolver;
+  *resolver = calloc(1, sizeof(struct resdata));
+  if(!*resolver)
+    return CURLE_OUT_OF_MEMORY;
   return CURLE_OK;
 }
 
@@ -114,24 +120,22 @@
  * Curl_resolver_cleanup()
  * Called from curl_easy_cleanup() -> Curl_close() to cleanup resolver
  * URL-state specific environment ('resolver' member of the UrlState
- * structure).  Does nothing here.
+ * structure).
  */
 void Curl_resolver_cleanup(void *resolver)
 {
-  (void)resolver;
+  free(resolver);
 }
 
 /*
  * Curl_resolver_duphandle()
  * Called from curl_easy_duphandle() to duplicate resolver URL state-specific
- * environment ('resolver' member of the UrlState structure).  Does nothing
- * here.
+ * environment ('resolver' member of the UrlState structure).
  */
 int Curl_resolver_duphandle(void **to, void *from)
 {
-  (void)to;
   (void)from;
-  return CURLE_OK;
+  return Curl_resolver_init(to);
 }
 
 static void destroy_async_data(struct Curl_async *);
@@ -561,9 +565,22 @@
                           curl_socket_t *socks,
                           int numsocks)
 {
-  (void)conn;
+  time_t milli;
+  timediff_t ms;
+  struct Curl_easy *data = conn->data;
+  struct resdata *reslv = (struct resdata *)data->state.resolver;
   (void)socks;
   (void)numsocks;
+  ms = Curl_timediff(Curl_now(), reslv->start);
+  if(ms < 10)
+    milli = ms/3;
+  else if(ms <= 50)
+    milli = 10;
+  else if(ms <= 250)
+    milli = 50;
+  else
+    milli = 200;
+  Curl_expire(data, milli, EXPIRE_ASYNC_NAME);
   return 0;
 }
 
@@ -577,6 +594,8 @@
                                          int *waitp)
 {
   struct in_addr in;
+  struct Curl_easy *data = conn->data;
+  struct resdata *reslv = (struct resdata *)data->state.resolver;
 
   *waitp = 0; /* default to synchronous response */
 
@@ -584,14 +603,17 @@
     /* This is a dotted IP address 123.123.123.123-style */
     return Curl_ip2addr(AF_INET, &in, hostname, port);
 
+  reslv->start = Curl_now();
+
   /* fire up a new resolver thread! */
   if(init_resolve_thread(conn, hostname, port, NULL)) {
     *waitp = 1; /* expect asynchronous response */
     return NULL;
   }
 
-  /* fall-back to blocking version */
-  return Curl_ipv4_resolve_r(hostname, port);
+  failf(conn->data, "getaddrinfo() thread failed\n");
+
+  return NULL;
 }
 
 #else /* !HAVE_GETADDRINFO */
@@ -605,10 +627,10 @@
                                          int *waitp)
 {
   struct addrinfo hints;
-  Curl_addrinfo *res;
-  int error;
   char sbuf[12];
   int pf = PF_INET;
+  struct Curl_easy *data = conn->data;
+  struct resdata *reslv = (struct resdata *)data->state.resolver;
 
   *waitp = 0; /* default to synchronous response */
 
@@ -658,27 +680,16 @@
 
   snprintf(sbuf, sizeof(sbuf), "%d", port);
 
+  reslv->start = Curl_now();
   /* fire up a new resolver thread! */
   if(init_resolve_thread(conn, hostname, port, &hints)) {
     *waitp = 1; /* expect asynchronous response */
     return NULL;
   }
 
-  /* fall-back to blocking version */
-  infof(conn->data, "init_resolve_thread() failed for %s; %s\n",
-        hostname, Curl_strerror(conn, errno));
+  failf(data, "getaddrinfo() thread failed to start\n");
+  return NULL;
 
-  error = Curl_getaddrinfo_ex(hostname, sbuf, &hints, &res);
-  if(error) {
-    infof(conn->data, "getaddrinfo() failed for %s:%d; %s\n",
-          hostname, port, Curl_strerror(conn, SOCKERRNO));
-    return NULL;
-  }
-  else {
-    Curl_addrinfo_set_port(res, port);
-  }
-
-  return res;
 }
 
 #endif /* !HAVE_GETADDRINFO */
diff --git a/lib/checksrc.pl b/lib/checksrc.pl
index 92af900..c90e245 100755
--- a/lib/checksrc.pl
+++ b/lib/checksrc.pl
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 2011 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -26,7 +26,7 @@
 
 my $warnings;
 my $errors;
-my $supressed; # whitelisted problems
+my $suppressed; # whitelisted problems
 my $file;
 my $dir=".";
 my $wlist;
@@ -35,10 +35,10 @@
 my %whitelist;
 
 my %warnings = (
-    'LONGLINE' =>         "Line longer than $max_column",
-    'TABS' =>             'TAB characters not allowed',
-    'TRAILINGSPACE' =>    'Trailing white space on the line',
-    'CPPCOMMENTS' =>      '// comment detected',
+    'LONGLINE'         => "Line longer than $max_column",
+    'TABS'             => 'TAB characters not allowed',
+    'TRAILINGSPACE'    => 'Trailing white space on the line',
+    'CPPCOMMENTS'      => '// comment detected',
     'SPACEBEFOREPAREN' => 'space before an open parenthesis',
     'SPACEAFTERPAREN'  => 'space after open parenthesis',
     'SPACEBEFORECLOSE' => 'space before a close parenthesis',
@@ -47,7 +47,7 @@
     'COMMANOSPACE'     => 'comma without following space',
     'BRACEELSE'        => '} else on the same line',
     'PARENBRACE'       => '){ without sufficient space',
-    'SPACESEMILCOLON'  => 'space before semicolon',
+    'SPACESEMICOLON'   => 'space before semicolon',
     'BANNEDFUNC'       => 'a banned function was used',
     'FOPENMODE'        => 'fopen needs a macro for the mode string',
     'BRACEPOS'         => 'wrong position for an open brace',
@@ -58,9 +58,9 @@
     'OPENCOMMENT'      => 'file ended with a /* comment still "open"',
     'ASTERISKSPACE'    => 'pointer declared with space after asterisk',
     'ASTERISKNOSPACE'  => 'pointer declared without space before asterisk',
-    'ASSIGNWITHINCONDITION'  => 'assignment within conditional expression',
+    'ASSIGNWITHINCONDITION' => 'assignment within conditional expression',
     'EQUALSNOSPACE'    => 'equals sign without following space',
-    'NOSPACEEQUALS'    => 'equals sign without preceeding space',
+    'NOSPACEEQUALS'    => 'equals sign without preceding space',
     'SEMINOSPACE'      => 'semicolon without following space',
     'MULTISPACE'       => 'multiple spaces used when not suitable',
     );
@@ -101,7 +101,7 @@
     }
 
     if($nowarn) {
-        $supressed++;
+        $suppressed++;
         if($w) {
             $swarnings++;
         }
@@ -142,6 +142,16 @@
         $file = shift @ARGV;
         next;
     }
+    elsif($file =~ /-i([1-9])/) {
+        $indent = $1 + 0;
+        $file = shift @ARGV;
+        next;
+    }
+    elsif($file =~ /-m([0-9]+)/) {
+        $max_column = $1 + 0;
+        $file = shift @ARGV;
+        next;
+    }
     elsif($file =~ /^(-h|--help)/) {
         undef $file;
         last;
@@ -156,6 +166,8 @@
     print "  -D[DIR]   Directory to prepend file names\n";
     print "  -h        Show help output\n";
     print "  -W[file]  Whitelist the given file - ignore all its flaws\n";
+    print "  -i<n>     Indent spaces. Default: 2\n";
+    print "  -m<n>     Maximum line length. Default: 79\n";
     print "\nDetects and warns for these problems:\n";
     for(sort keys %warnings) {
         printf (" %-18s: %s\n", $_, $warnings{$_});
@@ -422,7 +434,7 @@
                 # There is a quote here, figure out whether the comma is
                 # within a string or '' or not.
                 if($pref =~ /\"/) {
-                    # withing a string
+                    # within a string
                 }
                 elsif($pref =~ /\'$/) {
                     # a single letter
@@ -450,14 +462,14 @@
 
         # check for space before the semicolon last in a line
         if($l =~ /^(.*[^ ].*) ;$/) {
-            checkwarn("SPACESEMILCOLON",
+            checkwarn("SPACESEMICOLON",
                       $line, length($1), $file, $ol, "space before last semicolon");
         }
 
         # scan for use of banned functions
         if($l =~ /^(.*\W)
                    (gets|
-	            strtok|
+                    strtok|
                     v?sprintf|
                     (str|_mbs|_tcs|_wcs)n?cat|
                     LoadLibrary(Ex)?(A|W)?)
@@ -487,9 +499,9 @@
         }
 
         # if the previous line starts with if/while/for AND ends with an open
-        # brace, check that this line is indented $indent more steps, if not
-        # a cpp line
-        if($prevl =~ /^( *)(if|while|for)\(.*\{\z/) {
+        # brace, or an else statement, check that this line is indented $indent
+        # more steps, if not a cpp line
+        if($prevl =~ /^( *)((if|while|for)\(.*\{|else)\z/) {
             my $first = length($1);
 
             # this line has some character besides spaces
@@ -499,7 +511,7 @@
                 if($expect != $second) {
                     my $diff = $second - $first;
                     checkwarn("INDENTATION", $line, length($1), $file, $ol,
-                              "not indented $indent steps, uses $diff)");
+                              "not indented $indent steps (uses $diff)");
 
                 }
             }
@@ -561,7 +573,7 @@
         if($nostr =~ /(.*)\;[a-z0-9]/i) {
             checkwarn("SEMINOSPACE",
                       $line, length($1)+1, $file, $ol,
-                      "no space after semilcolon");
+                      "no space after semicolon");
         }
 
         # check for more than one consecutive space before open brace or
@@ -596,7 +608,7 @@
 
 if($errors || $warnings || $verbose) {
     printf "checksrc: %d errors and %d warnings\n", $errors, $warnings;
-    if($supressed) {
+    if($suppressed) {
         printf "checksrc: %d errors and %d warnings suppressed\n",
         $serrors,
         $swarnings;
diff --git a/lib/config-win32.h b/lib/config-win32.h
index 3e5567d..fdac6f9 100644
--- a/lib/config-win32.h
+++ b/lib/config-win32.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -708,6 +708,11 @@
 /* Define to use the Windows crypto library. */
 #define USE_WIN32_CRYPTO
 
+/* Define to use Unix sockets. */
+#if defined(_MSC_VER) && _MSC_VER >= 1900
+/* #define USE_UNIX_SOCKETS */
+#endif
+
 /* ---------------------------------------------------------------- */
 /*                       ADDITIONAL DEFINITIONS                     */
 /* ---------------------------------------------------------------- */
diff --git a/lib/connect.c b/lib/connect.c
index 3edb71e..1a27ae1 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -619,8 +619,8 @@
 
 /* retrieves ip address and port from a sockaddr structure.
    note it calls Curl_inet_ntop which sets errno on fail, not SOCKERRNO. */
-static bool getaddressinfo(struct sockaddr *sa, char *addr,
-                           long *port)
+bool Curl_getaddressinfo(struct sockaddr *sa, char *addr,
+                         long *port)
 {
   unsigned short us_port;
   struct sockaddr_in *si = NULL;
@@ -700,16 +700,16 @@
       return;
     }
 
-    if(!getaddressinfo((struct sockaddr*)&ssrem,
-                        conn->primary_ip, &conn->primary_port)) {
+    if(!Curl_getaddressinfo((struct sockaddr*)&ssrem,
+                            conn->primary_ip, &conn->primary_port)) {
       failf(data, "ssrem inet_ntop() failed with errno %d: %s",
             errno, Curl_strerror(conn, errno));
       return;
     }
     memcpy(conn->ip_addr_str, conn->primary_ip, MAX_IPADR_LEN);
 
-    if(!getaddressinfo((struct sockaddr*)&ssloc,
-                       conn->local_ip, &conn->local_port)) {
+    if(!Curl_getaddressinfo((struct sockaddr*)&ssloc,
+                            conn->local_ip, &conn->local_port)) {
       failf(data, "ssloc inet_ntop() failed with errno %d: %s",
             errno, Curl_strerror(conn, errno));
       return;
@@ -783,7 +783,8 @@
 
       /* should we try another protocol family? */
       if(i == 0 && conn->tempaddr[1] == NULL &&
-         Curl_timediff(now, conn->connecttime) >= HAPPY_EYEBALLS_TIMEOUT) {
+         (Curl_timediff(now, conn->connecttime) >=
+          data->set.happy_eyeballs_timeout)) {
         trynextip(conn, sockindex, 1);
       }
     }
@@ -1005,8 +1006,8 @@
     return CURLE_OK;
 
   /* store remote address and port used in this connection attempt */
-  if(!getaddressinfo((struct sockaddr*)&addr.sa_addr,
-                     ipaddress, &port)) {
+  if(!Curl_getaddressinfo((struct sockaddr*)&addr.sa_addr,
+                          ipaddress, &port)) {
     /* malformed address or bug in inet_ntop, try next address */
     failf(data, "sa_addr inet_ntop() failed with errno %d: %s",
           errno, Curl_strerror(conn, errno));
@@ -1033,9 +1034,11 @@
 
   if(data->set.fsockopt) {
     /* activate callback for setting socket options */
+    Curl_set_in_callback(data, true);
     error = data->set.fsockopt(data->set.sockopt_client,
                                sockfd,
                                CURLSOCKTYPE_IPCXN);
+    Curl_set_in_callback(data, false);
 
     if(error == CURL_SOCKOPT_ALREADY_CONNECTED)
       isconnected = TRUE;
@@ -1204,7 +1207,8 @@
   }
 
   data->info.numconnects++; /* to track the number of connections made */
-  Curl_expire(conn->data, HAPPY_EYEBALLS_TIMEOUT, EXPIRE_HAPPY_EYEBALLS);
+  Curl_expire(conn->data, data->set.happy_eyeballs_timeout,
+              EXPIRE_HAPPY_EYEBALLS);
 
   return CURLE_OK;
 }
@@ -1311,8 +1315,12 @@
          status */
       conn->sock_accepted[SECONDARYSOCKET] = FALSE;
     else {
+      int rc;
       Curl_multi_closed(conn, sock);
-      return conn->fclosesocket(conn->closesocket_client, sock);
+      Curl_set_in_callback(conn->data, true);
+      rc = conn->fclosesocket(conn->closesocket_client, sock);
+      Curl_set_in_callback(conn->data, false);
+      return rc;
     }
   }
 
@@ -1363,7 +1371,7 @@
      addr->addrlen = sizeof(struct Curl_sockaddr_storage);
   memcpy(&addr->sa_addr, ai->ai_addr, addr->addrlen);
 
-  if(data->set.fopensocket)
+  if(data->set.fopensocket) {
    /*
     * If the opensocket callback is set, all the destination address
     * information is passed to the callback. Depending on this information the
@@ -1373,9 +1381,12 @@
     * might have been changed and this 'new' address will actually be used
     * here to connect.
     */
+    Curl_set_in_callback(data, true);
     *sockfd = data->set.fopensocket(data->set.opensocket_client,
                                     CURLSOCKTYPE_IPCXN,
                                     (struct curl_sockaddr *)addr);
+    Curl_set_in_callback(data, false);
+  }
   else
     /* opensocket callback not set, so simply create the socket now */
     *sockfd = socket(addr->family, addr->socktype, addr->protocol);
diff --git a/lib/connect.h b/lib/connect.h
index 3974486..193dc63 100644
--- a/lib/connect.h
+++ b/lib/connect.h
@@ -41,8 +41,6 @@
                          bool duringconnect);
 
 #define DEFAULT_CONNECT_TIMEOUT 300000 /* milliseconds == five minutes */
-#define HAPPY_EYEBALLS_TIMEOUT     200 /* milliseconds to wait between
-                                          IPv4/IPv6 connection attempts */
 
 /*
  * Used to extract socket and connectdata struct for the most recent
@@ -78,6 +76,11 @@
 int Curl_closesocket(struct connectdata *conn, curl_socket_t sock);
 
 /*
+ * Get presentation format IP address and port from a sockaddr.
+ */
+bool Curl_getaddressinfo(struct sockaddr *sa, char *addr, long *port);
+
+/*
  * The Curl_sockaddr_ex structure is basically libcurl's external API
  * curl_sockaddr structure with enough space available to directly hold any
  * protocol-specific address structures. The variable declared here will be
diff --git a/lib/content_encoding.c b/lib/content_encoding.c
index 46bef0c..7c979ef 100644
--- a/lib/content_encoding.c
+++ b/lib/content_encoding.c
@@ -726,7 +726,7 @@
 
 static const content_encoding identity_encoding = {
   "identity",
-  NULL,
+  "none",
   identity_init_writer,
   identity_unencode_write,
   identity_close_writer,
@@ -873,10 +873,9 @@
                                              contenc_writer *downstream)
 {
   size_t sz = offsetof(contenc_writer, params) + handler->paramsize;
-  contenc_writer *writer = (contenc_writer *) malloc(sz);
+  contenc_writer *writer = (contenc_writer *) calloc(1, sz);
 
   if(writer) {
-    memset(writer, 0, sz);
     writer->handler = handler;
     writer->downstream = downstream;
     if(handler->init_writer(conn, writer)) {
diff --git a/lib/cookie.c b/lib/cookie.c
index c7afc7a..29f627f 100644
--- a/lib/cookie.c
+++ b/lib/cookie.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -143,6 +143,28 @@
 }
 
 /*
+ * Return true if the given string is an IP(v4|v6) address.
+ */
+static bool isip(const char *domain)
+{
+  struct in_addr addr;
+#ifdef ENABLE_IPV6
+  struct in6_addr addr6;
+#endif
+
+  if(Curl_inet_pton(AF_INET, domain, &addr)
+#ifdef ENABLE_IPV6
+     || Curl_inet_pton(AF_INET6, domain, &addr6)
+#endif
+    ) {
+    /* domain name given as IP address */
+    return TRUE;
+  }
+
+  return FALSE;
+}
+
+/*
  * matching cookie path and url path
  * RFC6265 5.1.4 Paths and Path-Match
  */
@@ -218,6 +240,62 @@
 }
 
 /*
+ * Return the top-level domain, for optimal hashing.
+ */
+static const char *get_top_domain(const char * const domain, size_t *outlen)
+{
+  size_t len;
+  const char *first = NULL, *last;
+
+  if(!domain)
+    return NULL;
+
+  len = strlen(domain);
+  last = memrchr(domain, '.', len);
+  if(last) {
+    first = memrchr(domain, '.', (size_t) (last - domain));
+    if(first)
+      len -= (size_t) (++first - domain);
+  }
+
+  if(outlen)
+    *outlen = len;
+
+  return first? first: domain;
+}
+
+/*
+ * A case-insensitive hash for the cookie domains.
+ */
+static size_t cookie_hash_domain(const char *domain, const size_t len)
+{
+  const char *end = domain + len;
+  size_t h = 5381;
+
+  while(domain < end) {
+    h += h << 5;
+    h ^= Curl_raw_toupper(*domain++);
+  }
+
+  return (h % COOKIE_HASH_SIZE);
+}
+
+/*
+ * Hash this domain.
+ */
+static size_t cookiehash(const char * const domain)
+{
+  const char *top;
+  size_t len;
+
+  if(!domain || isip(domain))
+    return 0;
+
+  top = get_top_domain(domain, &len);
+  return cookie_hash_domain(top, len);
+}
+
+/*
  * cookie path sanitize
  */
 static char *sanitize_cookie_path(const char *cookie_path)
@@ -303,50 +381,31 @@
 {
   struct Cookie *co, *nx, *pv;
   curl_off_t now = (curl_off_t)time(NULL);
+  unsigned int i;
 
-  co = cookies->cookies;
-  pv = NULL;
-  while(co) {
-    nx = co->next;
-    if(co->expires && co->expires < now) {
-      if(!pv) {
-        cookies->cookies = co->next;
+  for(i = 0; i < COOKIE_HASH_SIZE; i++) {
+    co = cookies->cookies[i];
+    pv = NULL;
+    while(co) {
+      nx = co->next;
+      if(co->expires && co->expires < now) {
+        if(!pv) {
+          cookies->cookies[i] = co->next;
+        }
+        else {
+          pv->next = co->next;
+        }
+        cookies->numcookies--;
+        freecookie(co);
       }
       else {
-        pv->next = co->next;
+        pv = co;
       }
-      cookies->numcookies--;
-      freecookie(co);
+      co = nx;
     }
-    else {
-      pv = co;
-    }
-    co = nx;
   }
 }
 
-/*
- * Return true if the given string is an IP(v4|v6) address.
- */
-static bool isip(const char *domain)
-{
-  struct in_addr addr;
-#ifdef ENABLE_IPV6
-  struct in6_addr addr6;
-#endif
-
-  if(Curl_inet_pton(AF_INET, domain, &addr)
-#ifdef ENABLE_IPV6
-     || Curl_inet_pton(AF_INET6, domain, &addr6)
-#endif
-    ) {
-    /* domain name given as IP address */
-    return TRUE;
-  }
-
-  return FALSE;
-}
-
 /****************************************************************************
  *
  * Curl_cookie_add()
@@ -368,6 +427,7 @@
 
                 struct CookieInfo *c,
                 bool httpheader, /* TRUE if HTTP header-style line */
+                bool noexpire, /* if TRUE, skip remove_expired() */
                 char *lineptr,   /* first character of the line */
                 const char *domain, /* default domain */
                 const char *path)   /* full path used when this cookie is set,
@@ -380,6 +440,7 @@
   time_t now = time(NULL);
   bool replace_old = FALSE;
   bool badcookie = FALSE; /* cookies are good by default. mmmmm yummy */
+  size_t myhash;
 
 #ifdef USE_LIBPSL
   const psl_ctx_t *psl;
@@ -430,9 +491,6 @@
         size_t nlen = strlen(name);
         const char *endofn = &ptr[ nlen ];
 
-        infof(data, "cookie size: name/val %d + %d bytes\n",
-              nlen, len);
-
         if(nlen >= (MAX_NAME-1) || len >= (MAX_NAME-1) ||
            ((nlen + len) > MAX_NAME)) {
           /* too long individual name or contents, or too long combination of
@@ -470,10 +528,16 @@
         while(*whatptr && ISBLANK(*whatptr))
           whatptr++;
 
-        if(!co->name && sep) {
+        if(!co->name) {
           /* The very first name/value pair is the actual cookie name */
+          if(!sep) {
+            /* Bad name/value pair. */
+            badcookie = TRUE;
+            break;
+          }
           co->name = strdup(name);
           co->value = strdup(whatptr);
+          done = TRUE;
           if(!co->name || !co->value) {
             badcookie = TRUE;
             break;
@@ -822,7 +886,8 @@
      the same domain and path as this */
 
   /* at first, remove expired cookies */
-  remove_expired(c);
+  if(!noexpire)
+    remove_expired(c);
 
 #ifdef USE_LIBPSL
   /* Check if the domain is a Public Suffix and if yes, ignore the cookie.
@@ -839,7 +904,8 @@
   }
 #endif
 
-  clist = c->cookies;
+  myhash = cookiehash(co->domain);
+  clist = c->cookies[myhash];
   replace_old = FALSE;
   while(clist) {
     if(strcasecompare(clist->name, co->name)) {
@@ -925,7 +991,7 @@
     if(lastc)
       lastc->next = co;
     else
-      c->cookies = co;
+      c->cookies[myhash] = co;
     c->numcookies++; /* one more cookie in the jar */
   }
 
@@ -1029,9 +1095,10 @@
       while(*lineptr && ISBLANK(*lineptr))
         lineptr++;
 
-      Curl_cookie_add(data, c, headerline, lineptr, NULL, NULL);
+      Curl_cookie_add(data, c, headerline, TRUE, lineptr, NULL, NULL);
     }
     free(line); /* free the line buffer */
+    remove_expired(c); /* run this once, not on every cookie */
 
     if(fromfile)
       fclose(fp);
@@ -1137,8 +1204,9 @@
   struct Cookie *mainco = NULL;
   size_t matches = 0;
   bool is_ip;
+  const size_t myhash = cookiehash(host);
 
-  if(!c || !c->cookies)
+  if(!c || !c->cookies[myhash])
     return NULL; /* no cookie struct or no cookies in the struct */
 
   /* at first, remove expired cookies */
@@ -1147,7 +1215,7 @@
   /* check if host is an IP(v4|v6) address */
   is_ip = isip(host);
 
-  co = c->cookies;
+  co = c->cookies[myhash];
 
   while(co) {
     /* only process this cookie if it is not expired or had no expire
@@ -1235,8 +1303,11 @@
 void Curl_cookie_clearall(struct CookieInfo *cookies)
 {
   if(cookies) {
-    Curl_cookie_freelist(cookies->cookies);
-    cookies->cookies = NULL;
+    unsigned int i;
+    for(i = 0; i < COOKIE_HASH_SIZE; i++) {
+      Curl_cookie_freelist(cookies->cookies[i]);
+      cookies->cookies[i] = NULL;
+    }
     cookies->numcookies = 0;
   }
 }
@@ -1270,31 +1341,37 @@
 void Curl_cookie_clearsess(struct CookieInfo *cookies)
 {
   struct Cookie *first, *curr, *next, *prev = NULL;
+  unsigned int i;
 
-  if(!cookies || !cookies->cookies)
+  if(!cookies)
     return;
 
-  first = curr = prev = cookies->cookies;
+  for(i = 0; i < COOKIE_HASH_SIZE; i++) {
+    if(!cookies->cookies[i])
+      continue;
 
-  for(; curr; curr = next) {
-    next = curr->next;
-    if(!curr->expires) {
-      if(first == curr)
-        first = next;
+    first = curr = prev = cookies->cookies[i];
 
-      if(prev == curr)
-        prev = next;
+    for(; curr; curr = next) {
+      next = curr->next;
+      if(!curr->expires) {
+        if(first == curr)
+          first = next;
+
+        if(prev == curr)
+          prev = next;
+        else
+          prev->next = next;
+
+        freecookie(curr);
+        cookies->numcookies--;
+      }
       else
-        prev->next = next;
-
-      freecookie(curr);
-      cookies->numcookies--;
+        prev = curr;
     }
-    else
-      prev = curr;
-  }
 
-  cookies->cookies = first;
+    cookies->cookies[i] = first;
+  }
 }
 
 
@@ -1307,9 +1384,12 @@
  ****************************************************************************/
 void Curl_cookie_cleanup(struct CookieInfo *c)
 {
+  unsigned int i;
+
   if(c) {
     free(c->filename);
-    Curl_cookie_freelist(c->cookies);
+    for(i = 0; i < COOKIE_HASH_SIZE; i++)
+      Curl_cookie_freelist(c->cookies[i]);
     free(c); /* free the base struct as well */
   }
 }
@@ -1358,6 +1438,7 @@
   FILE *out;
   bool use_stdout = FALSE;
   char *format_ptr;
+  unsigned int i;
 
   if((NULL == c) || (0 == c->numcookies))
     /* If there are no known cookies, we don't write or even create any
@@ -1367,6 +1448,10 @@
   /* at first, remove expired cookies */
   remove_expired(c);
 
+  /* make sure we still have cookies after expiration */
+  if(0 == c->numcookies)
+    return 0;
+
   if(!strcmp("-", dumphere)) {
     /* use stdout */
     out = stdout;
@@ -1383,18 +1468,20 @@
         "# This file was generated by libcurl! Edit at your own risk.\n\n",
         out);
 
-  for(co = c->cookies; co; co = co->next) {
-    if(!co->domain)
-      continue;
-    format_ptr = get_netscape_format(co);
-    if(format_ptr == NULL) {
-      fprintf(out, "#\n# Fatal libcurl error\n");
-      if(!use_stdout)
-        fclose(out);
-      return 1;
+  for(i = 0; i < COOKIE_HASH_SIZE; i++) {
+    for(co = c->cookies[i]; co; co = co->next) {
+      if(!co->domain)
+        continue;
+      format_ptr = get_netscape_format(co);
+      if(format_ptr == NULL) {
+        fprintf(out, "#\n# Fatal libcurl error\n");
+        if(!use_stdout)
+          fclose(out);
+        return 1;
+      }
+      fprintf(out, "%s\n", format_ptr);
+      free(format_ptr);
     }
-    fprintf(out, "%s\n", format_ptr);
-    free(format_ptr);
   }
 
   if(!use_stdout)
@@ -1409,26 +1496,29 @@
   struct curl_slist *beg;
   struct Cookie *c;
   char *line;
+  unsigned int i;
 
   if((data->cookies == NULL) ||
       (data->cookies->numcookies == 0))
     return NULL;
 
-  for(c = data->cookies->cookies; c; c = c->next) {
-    if(!c->domain)
-      continue;
-    line = get_netscape_format(c);
-    if(!line) {
-      curl_slist_free_all(list);
-      return NULL;
+  for(i = 0; i < COOKIE_HASH_SIZE; i++) {
+    for(c = data->cookies->cookies[i]; c; c = c->next) {
+      if(!c->domain)
+        continue;
+      line = get_netscape_format(c);
+      if(!line) {
+        curl_slist_free_all(list);
+        return NULL;
+      }
+      beg = Curl_slist_append_nodup(list, line);
+      if(!beg) {
+        free(line);
+        curl_slist_free_all(list);
+        return NULL;
+      }
+      list = beg;
     }
-    beg = Curl_slist_append_nodup(list, line);
-    if(!beg) {
-      free(line);
-      curl_slist_free_all(list);
-      return NULL;
-    }
-    list = beg;
   }
 
   return list;
diff --git a/lib/cookie.h b/lib/cookie.h
index cb50b71..79b5928 100644
--- a/lib/cookie.h
+++ b/lib/cookie.h
@@ -45,9 +45,11 @@
   bool httponly;     /* true if the httponly directive is present */
 };
 
+#define COOKIE_HASH_SIZE 256
+
 struct CookieInfo {
   /* linked list of cookies we know of */
-  struct Cookie *cookies;
+  struct Cookie *cookies[COOKIE_HASH_SIZE];
 
   char *filename;  /* file we read from/write to */
   bool running;    /* state info, for cookie adding information */
@@ -67,7 +69,6 @@
 
 */
 #define MAX_COOKIE_LINE 5000
-#define MAX_COOKIE_LINE_TXT "4999"
 
 /* This is the maximum length of a cookie name or content we deal with: */
 #define MAX_NAME 4096
@@ -80,7 +81,8 @@
  */
 
 struct Cookie *Curl_cookie_add(struct Curl_easy *data,
-                               struct CookieInfo *, bool header, char *lineptr,
+                               struct CookieInfo *, bool header, bool noexpiry,
+                               char *lineptr,
                                const char *domain, const char *path);
 
 struct Cookie *Curl_cookie_getlist(struct CookieInfo *, const char *,
diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c
index ec76f75..55d5a39 100644
--- a/lib/curl_addrinfo.c
+++ b/lib/curl_addrinfo.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -50,6 +50,10 @@
 #  define in_addr_t unsigned long
 #endif
 
+#if defined(WIN32) && defined(USE_UNIX_SOCKETS)
+#include <afunix.h>
+#endif
+
 #include <stddef.h>
 
 #include "curl_addrinfo.h"
@@ -341,7 +345,7 @@
       addr = (void *)ai->ai_addr; /* storage area for this info */
 
       memcpy(&addr->sin_addr, curr, sizeof(struct in_addr));
-      addr->sin_family = (unsigned short)(he->h_addrtype);
+      addr->sin_family = (CURL_SA_FAMILY_T)(he->h_addrtype);
       addr->sin_port = htons((unsigned short)port);
       break;
 
@@ -350,7 +354,7 @@
       addr6 = (void *)ai->ai_addr; /* storage area for this info */
 
       memcpy(&addr6->sin6_addr, curr, sizeof(struct in6_addr));
-      addr6->sin6_family = (unsigned short)(he->h_addrtype);
+      addr6->sin6_family = (CURL_SA_FAMILY_T)(he->h_addrtype);
       addr6->sin6_port = htons((unsigned short)port);
       break;
 #endif
diff --git a/lib/curl_config.h b/lib/curl_config.h
index 90a2a58..77587eb 100644
--- a/lib/curl_config.h
+++ b/lib/curl_config.h
@@ -1,6 +1,9 @@
 /* lib/curl_config.h.  Generated from curl_config.h.in by configure.  */
 /* lib/curl_config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* to enable curl debug memory tracking */
+/* #undef CURLDEBUG */
+
 /* Location of default ca bundle */
 /* #undef CURL_CA_BUNDLE */
 
@@ -76,9 +79,15 @@
 /* Definition to make a library symbol externally visible. */
 #define CURL_EXTERN_SYMBOL __attribute__ ((__visibility__ ("default")))
 
+/* IP address type in sockaddr */
+#define CURL_SA_FAMILY_T sa_family_t
+
 /* built with multiple SSL backends */
 /* #undef CURL_WITH_MULTI_SSL */
 
+/* enable debug build options */
+/* #undef DEBUGBUILD */
+
 /* your Entropy Gathering Daemon socket pathname */
 /* #undef EGD_SOCKET */
 
@@ -143,10 +152,7 @@
 /* #undef HAVE_BUILTIN_AVAILABLE */
 
 /* Define to 1 if you have the clock_gettime function and monotonic timer. */
-#if !defined(__APPLE__)
-/* CLOCK_MONOTONIC is not defined in mac when building for the host. */
 #define HAVE_CLOCK_GETTIME_MONOTONIC 1
-#endif
 
 /* Define to 1 if you have the closesocket function. */
 /* #undef HAVE_CLOSESOCKET */
@@ -436,9 +442,7 @@
 #define HAVE_LIBZ 1
 
 /* Define to 1 if you have the <linux/tcp.h> header file. */
-#if !defined(__APPLE__)
 #define HAVE_LINUX_TCP_H 1
-#endif
 
 /* if your compiler supports LL */
 #define HAVE_LL 1
@@ -462,14 +466,10 @@
 #define HAVE_MEMORY_H 1
 
 /* Define to 1 if you have the memrchr function or macro. */
-#if !defined(__APPLE__)
 #define HAVE_MEMRCHR 1
-#endif
 
 /* Define to 1 if you have the MSG_NOSIGNAL flag. */
-#if !defined(__APPLE__)
 #define HAVE_MSG_NOSIGNAL 1
-#endif
 
 /* Define to 1 if you have the <netdb.h> header file. */
 #define HAVE_NETDB_H 1
@@ -526,6 +526,9 @@
 /* Define to 1 if you have the `pipe' function. */
 #define HAVE_PIPE 1
 
+/* if you have the PK11_CreateManagedGenericObject function */
+/* #undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT */
+
 /* Define to 1 if you have a working poll function. */
 #define HAVE_POLL 1
 
@@ -739,6 +742,9 @@
 /* Define to 1 if you have the <time.h> header file. */
 #define HAVE_TIME_H 1
 
+/* Define this if time_t is unsigned */
+/* #undef HAVE_TIME_T_UNSIGNED */
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #define HAVE_UNISTD_H 1
 
diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake
index e640cc6..4b12083 100644
--- a/lib/curl_config.h.cmake
+++ b/lib/curl_config.h.cmake
@@ -398,6 +398,9 @@
 /* if zlib is available */
 #cmakedefine HAVE_LIBZ 1
 
+/* if brotli is available */
+#cmakedefine HAVE_BROTLI 1
+
 /* if your compiler supports LL */
 #cmakedefine HAVE_LL 1
 
diff --git a/lib/curl_config.h.in b/lib/curl_config.h.in
index d7ed28d..f603215 100644
--- a/lib/curl_config.h.in
+++ b/lib/curl_config.h.in
@@ -1,5 +1,8 @@
 /* lib/curl_config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* to enable curl debug memory tracking */
+#undef CURLDEBUG
+
 /* Location of default ca bundle */
 #undef CURL_CA_BUNDLE
 
@@ -75,9 +78,15 @@
 /* Definition to make a library symbol externally visible. */
 #undef CURL_EXTERN_SYMBOL
 
+/* IP address type in sockaddr */
+#undef CURL_SA_FAMILY_T
+
 /* built with multiple SSL backends */
 #undef CURL_WITH_MULTI_SSL
 
+/* enable debug build options */
+#undef DEBUGBUILD
+
 /* your Entropy Gathering Daemon socket pathname */
 #undef EGD_SOCKET
 
@@ -516,6 +525,9 @@
 /* Define to 1 if you have the `pipe' function. */
 #undef HAVE_PIPE
 
+/* if you have the PK11_CreateManagedGenericObject function */
+#undef HAVE_PK11_CREATEMANAGEDGENERICOBJECT
+
 /* Define to 1 if you have a working poll function. */
 #undef HAVE_POLL
 
@@ -729,6 +741,9 @@
 /* Define to 1 if you have the <time.h> header file. */
 #undef HAVE_TIME_H
 
+/* Define this if time_t is unsigned */
+#undef HAVE_TIME_T_UNSIGNED
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
diff --git a/lib/curl_ctype.c b/lib/curl_ctype.c
new file mode 100644
index 0000000..1a47fb5
--- /dev/null
+++ b/lib/curl_ctype.c
@@ -0,0 +1,133 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifndef CURL_DOES_CONVERSIONS
+
+#undef _U
+#define _U (1<<0) /* upper case */
+#undef _L
+#define _L (1<<1) /* lower case */
+#undef _N
+#define _N (1<<2) /* decimal numerical digit */
+#undef _S
+#define _S (1<<3) /* space */
+#undef _P
+#define _P (1<<4) /* punctuation */
+#undef _C
+#define _C (1<<5) /* control */
+#undef _X
+#define _X (1<<6) /* hexadecimal letter */
+#undef _B
+#define _B (1<<7) /* blank */
+
+static const unsigned char ascii[128] = {
+  _C,   _C,     _C,     _C,     _C,     _C,     _C,     _C,
+  _C,   _C|_S,  _C|_S,  _C|_S,  _C|_S,  _C|_S,  _C,     _C,
+  _C,   _C,     _C,     _C,     _C,     _C,     _C,     _C,
+  _C,   _C,     _C,     _C,     _C,     _C,     _C,     _C,
+  _S|_B, _P,    _P,     _P,     _P,     _P,     _P,     _P,
+  _P,   _P,     _P,     _P,     _P,     _P,     _P,     _P,
+  _N,   _N,     _N,     _N,     _N,     _N,     _N,     _N,
+  _N,   _N,     _P,     _P,     _P,     _P,     _P,     _P,
+  _P,   _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U,
+  _U,   _U,     _U,     _U,     _U,     _U,     _U,     _U,
+  _U,   _U,     _U,     _U,     _U,     _U,     _U,     _U,
+  _U,   _U,     _U,     _P,     _P,     _P,     _P,     _P,
+  _P,   _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L,
+  _L,   _L,     _L,     _L,     _L,     _L,     _L,     _L,
+  _L,   _L,     _L,     _L,     _L,     _L,     _L,     _L,
+  _L,   _L,     _L,     _P,     _P,     _P,     _P,     _C
+};
+
+int Curl_isspace(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & _S);
+}
+
+int Curl_isdigit(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & _N);
+}
+
+int Curl_isalnum(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_N|_U|_L));
+}
+
+int Curl_isxdigit(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_N|_X));
+}
+
+int Curl_isgraph(int c)
+{
+  if((c < 0) || (c >= 0x80) || (c == ' '))
+    return FALSE;
+  return (ascii[c] & (_N|_X|_U|_L|_P|_S));
+}
+
+int Curl_isprint(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_N|_X|_U|_L|_P|_S));
+}
+
+int Curl_isalpha(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_U|_L));
+}
+
+int Curl_isupper(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_U));
+}
+
+int Curl_islower(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_L));
+}
+
+int Curl_iscntrl(int c)
+{
+  if((c < 0) || (c >= 0x80))
+    return FALSE;
+  return (ascii[c] & (_C));
+}
+
+#endif /* !CURL_DOES_CONVERSIONS */
diff --git a/lib/curl_ctype.h b/lib/curl_ctype.h
new file mode 100644
index 0000000..6e94bb1
--- /dev/null
+++ b/lib/curl_ctype.h
@@ -0,0 +1,81 @@
+#ifndef HEADER_CURL_CTYPE_H
+#define HEADER_CURL_CTYPE_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+
+#ifdef CURL_DOES_CONVERSIONS
+
+/*
+ * Uppercase macro versions of ANSI/ISO is*() functions/macros which
+ * avoid negative number inputs with argument byte codes > 127.
+ *
+ * For non-ASCII platforms the C library character classification routines
+ * are used despite being locale-dependent, because this is better than
+ * not to work at all.
+ */
+#include <ctype.h>
+
+#define ISSPACE(x)  (isspace((int)  ((unsigned char)x)))
+#define ISDIGIT(x)  (isdigit((int)  ((unsigned char)x)))
+#define ISALNUM(x)  (isalnum((int)  ((unsigned char)x)))
+#define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
+#define ISGRAPH(x)  (isgraph((int)  ((unsigned char)x)))
+#define ISALPHA(x)  (isalpha((int)  ((unsigned char)x)))
+#define ISPRINT(x)  (isprint((int)  ((unsigned char)x)))
+#define ISUPPER(x)  (isupper((int)  ((unsigned char)x)))
+#define ISLOWER(x)  (islower((int)  ((unsigned char)x)))
+#define ISCNTRL(x)  (iscntrl((int)  ((unsigned char)x)))
+#define ISASCII(x)  (isascii((int)  ((unsigned char)x)))
+
+#else
+
+int Curl_isspace(int c);
+int Curl_isdigit(int c);
+int Curl_isalnum(int c);
+int Curl_isxdigit(int c);
+int Curl_isgraph(int c);
+int Curl_isprint(int c);
+int Curl_isalpha(int c);
+int Curl_isupper(int c);
+int Curl_islower(int c);
+int Curl_iscntrl(int c);
+
+#define ISSPACE(x)  (Curl_isspace((int)  ((unsigned char)x)))
+#define ISDIGIT(x)  (Curl_isdigit((int)  ((unsigned char)x)))
+#define ISALNUM(x)  (Curl_isalnum((int)  ((unsigned char)x)))
+#define ISXDIGIT(x) (Curl_isxdigit((int) ((unsigned char)x)))
+#define ISGRAPH(x)  (Curl_isgraph((int)  ((unsigned char)x)))
+#define ISALPHA(x)  (Curl_isalpha((int)  ((unsigned char)x)))
+#define ISPRINT(x)  (Curl_isprint((int)  ((unsigned char)x)))
+#define ISUPPER(x)  (Curl_isupper((int)  ((unsigned char)x)))
+#define ISLOWER(x)  (Curl_islower((int)  ((unsigned char)x)))
+#define ISCNTRL(x)  (Curl_iscntrl((int)  ((unsigned char)x)))
+#define ISASCII(x)  (((x) >= 0) && ((x) <= 0x80))
+
+#endif
+
+#define ISBLANK(x)  (int)((((unsigned char)x) == ' ') ||        \
+                          (((unsigned char)x) == '\t'))
+
+#endif /* HEADER_CURL_CTYPE_H */
diff --git a/lib/curl_fnmatch.c b/lib/curl_fnmatch.c
index f33bba1..0179a4f 100644
--- a/lib/curl_fnmatch.c
+++ b/lib/curl_fnmatch.c
@@ -47,14 +47,7 @@
 #define CURLFNM_UPPER   (CURLFNM_CHARSET_LEN + 10)
 
 typedef enum {
-  CURLFNM_LOOP_DEFAULT = 0,
-  CURLFNM_LOOP_BACKSLASH
-} loop_state;
-
-typedef enum {
   CURLFNM_SCHS_DEFAULT = 0,
-  CURLFNM_SCHS_MAYRANGE,
-  CURLFNM_SCHS_MAYRANGE2,
   CURLFNM_SCHS_RIGHTBR,
   CURLFNM_SCHS_RIGHTBRLEFTBR
 } setcharset_state;
@@ -64,6 +57,13 @@
   CURLFNM_PKW_DDOT
 } parsekey_state;
 
+typedef enum {
+  CCLASS_OTHER = 0,
+  CCLASS_DIGIT,
+  CCLASS_UPPER,
+  CCLASS_LOWER
+} char_class;
+
 #define SETCHARSET_OK     1
 #define SETCHARSET_FAIL   0
 
@@ -81,12 +81,12 @@
       return SETCHARSET_FAIL;
     switch(state) {
     case CURLFNM_PKW_INIT:
-      if(ISALPHA(c) && ISLOWER(c))
+      if(ISLOWER(c))
         keyword[i] = c;
       else if(c == ':')
         state = CURLFNM_PKW_DDOT;
       else
-        return 0;
+        return SETCHARSET_FAIL;
       break;
     case CURLFNM_PKW_DDOT:
       if(c == ']')
@@ -123,14 +123,48 @@
   return SETCHARSET_OK;
 }
 
+/* Return the character class. */
+static char_class charclass(unsigned char c)
+{
+  if(ISUPPER(c))
+    return CCLASS_UPPER;
+  if(ISLOWER(c))
+    return CCLASS_LOWER;
+  if(ISDIGIT(c))
+    return CCLASS_DIGIT;
+  return CCLASS_OTHER;
+}
+
+/* Include a character or a range in set. */
+static void setcharorrange(unsigned char **pp, unsigned char *charset)
+{
+  unsigned char *p = (*pp)++;
+  unsigned char c = *p++;
+
+  charset[c] = 1;
+  if(ISALNUM(c) && *p++ == '-') {
+    char_class cc = charclass(c);
+    unsigned char endrange = *p++;
+
+    if(endrange == '\\')
+      endrange = *p++;
+    if(endrange >= c && charclass(endrange) == cc) {
+      while(c++ != endrange)
+        if(charclass(c) == cc)  /* Chars in class may be not consecutive. */
+          charset[c] = 1;
+      *pp = p;
+    }
+  }
+}
+
 /* returns 1 (true) if pattern is OK, 0 if is bad ("p" is pattern pointer) */
 static int setcharset(unsigned char **p, unsigned char *charset)
 {
   setcharset_state state = CURLFNM_SCHS_DEFAULT;
-  unsigned char rangestart = 0;
-  unsigned char lastchar   = 0;
   bool something_found = FALSE;
   unsigned char c;
+
+  memset(charset, 0, CURLFNM_CHSET_SIZE);
   for(;;) {
     c = **p;
     if(!c)
@@ -138,14 +172,7 @@
 
     switch(state) {
     case CURLFNM_SCHS_DEFAULT:
-      if(ISALNUM(c)) { /* ASCII value */
-        rangestart = c;
-        charset[c] = 1;
-        (*p)++;
-        state = CURLFNM_SCHS_MAYRANGE;
-        something_found = TRUE;
-      }
-      else if(c == ']') {
+      if(c == ']') {
         if(something_found)
           return SETCHARSET_OK;
         something_found = TRUE;
@@ -154,26 +181,16 @@
         (*p)++;
       }
       else if(c == '[') {
-        char c2 = *((*p) + 1);
-        if(c2 == ':') { /* there has to be a keyword */
-          (*p) += 2;
-          if(parsekeyword(p, charset)) {
-            state = CURLFNM_SCHS_DEFAULT;
-          }
-          else
-            return SETCHARSET_FAIL;
-        }
+        unsigned char *pp = *p + 1;
+
+        if(*pp++ == ':' && parsekeyword(&pp, charset))
+          *p = pp;
         else {
           charset[c] = 1;
           (*p)++;
         }
         something_found = TRUE;
       }
-      else if(c == '?' || c == '*') {
-        something_found = TRUE;
-        charset[c] = 1;
-        (*p)++;
-      }
       else if(c == '^' || c == '!') {
         if(!something_found) {
           if(charset[CURLFNM_NEGATE]) {
@@ -189,81 +206,16 @@
       }
       else if(c == '\\') {
         c = *(++(*p));
-        if(ISPRINT((c))) {
-          something_found = TRUE;
-          state = CURLFNM_SCHS_MAYRANGE;
-          charset[c] = 1;
-          rangestart = c;
-          (*p)++;
-        }
+        if(c)
+          setcharorrange(p, charset);
         else
-          return SETCHARSET_FAIL;
-      }
-      else {
-        charset[c] = 1;
-        (*p)++;
+          charset['\\'] = 1;
         something_found = TRUE;
       }
-      break;
-    case CURLFNM_SCHS_MAYRANGE:
-      if(c == '-') {
-        charset[c] = 1;
-        (*p)++;
-        lastchar = '-';
-        state = CURLFNM_SCHS_MAYRANGE2;
+      else {
+        setcharorrange(p, charset);
+        something_found = TRUE;
       }
-      else if(c == '[') {
-        state = CURLFNM_SCHS_DEFAULT;
-      }
-      else if(ISALNUM(c)) {
-        charset[c] = 1;
-        (*p)++;
-      }
-      else if(c == '\\') {
-        c = *(++(*p));
-        if(ISPRINT(c)) {
-          charset[c] = 1;
-          (*p)++;
-        }
-        else
-          return SETCHARSET_FAIL;
-      }
-      else if(c == ']') {
-        return SETCHARSET_OK;
-      }
-      else
-        return SETCHARSET_FAIL;
-      break;
-    case CURLFNM_SCHS_MAYRANGE2:
-      if(c == ']') {
-        return SETCHARSET_OK;
-      }
-      else if(c == '\\') {
-        c = *(++(*p));
-        if(ISPRINT(c)) {
-          charset[c] = 1;
-          state = CURLFNM_SCHS_DEFAULT;
-          (*p)++;
-        }
-        else
-          return SETCHARSET_FAIL;
-      }
-      else if(c >= rangestart) {
-        if((ISLOWER(c) && ISLOWER(rangestart)) ||
-           (ISDIGIT(c) && ISDIGIT(rangestart)) ||
-           (ISUPPER(c) && ISUPPER(rangestart))) {
-          charset[lastchar] = 0;
-          rangestart++;
-          while(rangestart++ <= c)
-            charset[rangestart-1] = 1;
-          (*p)++;
-          state = CURLFNM_SCHS_DEFAULT;
-        }
-        else
-          return SETCHARSET_FAIL;
-      }
-      else
-        return SETCHARSET_FAIL;
       break;
     case CURLFNM_SCHS_RIGHTBR:
       if(c == '[') {
@@ -286,14 +238,11 @@
         goto fail;
       break;
     case CURLFNM_SCHS_RIGHTBRLEFTBR:
-      if(c == ']') {
+      if(c == ']')
         return SETCHARSET_OK;
-      }
-      else {
-        state  = CURLFNM_SCHS_DEFAULT;
-        charset[c] = 1;
-        (*p)++;
-      }
+      state  = CURLFNM_SCHS_DEFAULT;
+      charset[c] = 1;
+      (*p)++;
       break;
     }
   }
@@ -304,107 +253,93 @@
 static int loop(const unsigned char *pattern, const unsigned char *string,
                 int maxstars)
 {
-  loop_state state = CURLFNM_LOOP_DEFAULT;
   unsigned char *p = (unsigned char *)pattern;
   unsigned char *s = (unsigned char *)string;
   unsigned char charset[CURLFNM_CHSET_SIZE] = { 0 };
-  int rc = 0;
 
   for(;;) {
-    switch(state) {
-    case CURLFNM_LOOP_DEFAULT:
-      if(*p == '*') {
-        if(!maxstars)
-          return CURL_FNMATCH_NOMATCH;
-        while(*(p + 1) == '*') /* eliminate multiple stars */
-          p++;
-        if(*s == '\0' && *(p + 1) == '\0')
-          return CURL_FNMATCH_MATCH;
-        rc = loop(p + 1, s, maxstars - 1); /* *.txt matches .txt <=>
-                                              .txt matches .txt */
-        if(rc == CURL_FNMATCH_MATCH)
-          return CURL_FNMATCH_MATCH;
-        if(*s) /* let the star eat up one character */
-          s++;
-        else
-          return CURL_FNMATCH_NOMATCH;
-      }
-      else if(*p == '?') {
-        if(ISPRINT(*s)) {
-          s++;
-          p++;
-        }
-        else if(*s == '\0')
-          return CURL_FNMATCH_NOMATCH;
-        else
-          return CURL_FNMATCH_FAIL; /* cannot deal with other character */
-      }
-      else if(*p == '\0') {
-        if(*s == '\0')
-          return CURL_FNMATCH_MATCH;
+    unsigned char *pp;
+
+    switch(*p) {
+    case '*':
+      if(!maxstars)
         return CURL_FNMATCH_NOMATCH;
-      }
-      else if(*p == '\\') {
-        state = CURLFNM_LOOP_BACKSLASH;
-        p++;
-      }
-      else if(*p == '[') {
-        unsigned char *pp = p + 1; /* cannot handle with pointer to register */
-        if(setcharset(&pp, charset)) {
-          int found = FALSE;
-          if(charset[(unsigned int)*s])
-            found = TRUE;
-          else if(charset[CURLFNM_ALNUM])
-            found = ISALNUM(*s);
-          else if(charset[CURLFNM_ALPHA])
-            found = ISALPHA(*s);
-          else if(charset[CURLFNM_DIGIT])
-            found = ISDIGIT(*s);
-          else if(charset[CURLFNM_XDIGIT])
-            found = ISXDIGIT(*s);
-          else if(charset[CURLFNM_PRINT])
-            found = ISPRINT(*s);
-          else if(charset[CURLFNM_SPACE])
-            found = ISSPACE(*s);
-          else if(charset[CURLFNM_UPPER])
-            found = ISUPPER(*s);
-          else if(charset[CURLFNM_LOWER])
-            found = ISLOWER(*s);
-          else if(charset[CURLFNM_BLANK])
-            found = ISBLANK(*s);
-          else if(charset[CURLFNM_GRAPH])
-            found = ISGRAPH(*s);
-
-          if(charset[CURLFNM_NEGATE])
-            found = !found;
-
-          if(found) {
-            p = pp + 1;
-            if(*s)
-              /* don't advance if we're matching on an empty string */
-              s++;
-            memset(charset, 0, CURLFNM_CHSET_SIZE);
-          }
-          else
+      /* Regroup consecutive stars and question marks. This can be done because
+         '*?*?*' can be expressed as '??*'. */
+      for(;;) {
+        if(*++p == '\0')
+          return CURL_FNMATCH_MATCH;
+        if(*p == '?') {
+          if(!*s++)
             return CURL_FNMATCH_NOMATCH;
         }
-        else
-          return CURL_FNMATCH_FAIL;
+        else if(*p != '*')
+          break;
       }
-      else {
-        if(*p++ != *s++)
-          return CURL_FNMATCH_NOMATCH;
+      /* Skip string characters until we find a match with pattern suffix. */
+      for(maxstars--; *s; s++) {
+        if(loop(p, s, maxstars) == CURL_FNMATCH_MATCH)
+          return CURL_FNMATCH_MATCH;
       }
+      return CURL_FNMATCH_NOMATCH;
+    case '?':
+      if(!*s)
+        return CURL_FNMATCH_NOMATCH;
+      s++;
+      p++;
       break;
-    case CURLFNM_LOOP_BACKSLASH:
-      if(ISPRINT(*p)) {
-        if(*p++ == *s++)
-          state = CURLFNM_LOOP_DEFAULT;
-        else
+    case '\0':
+      return *s? CURL_FNMATCH_NOMATCH: CURL_FNMATCH_MATCH;
+    case '\\':
+      if(p[1])
+        p++;
+      if(*s++ != *p++)
+        return CURL_FNMATCH_NOMATCH;
+      break;
+    case '[':
+      pp = p + 1; /* Copy in case of syntax error in set. */
+      if(setcharset(&pp, charset)) {
+        int found = FALSE;
+        if(!*s)
           return CURL_FNMATCH_NOMATCH;
+        if(charset[(unsigned int)*s])
+          found = TRUE;
+        else if(charset[CURLFNM_ALNUM])
+          found = ISALNUM(*s);
+        else if(charset[CURLFNM_ALPHA])
+          found = ISALPHA(*s);
+        else if(charset[CURLFNM_DIGIT])
+          found = ISDIGIT(*s);
+        else if(charset[CURLFNM_XDIGIT])
+          found = ISXDIGIT(*s);
+        else if(charset[CURLFNM_PRINT])
+          found = ISPRINT(*s);
+        else if(charset[CURLFNM_SPACE])
+          found = ISSPACE(*s);
+        else if(charset[CURLFNM_UPPER])
+          found = ISUPPER(*s);
+        else if(charset[CURLFNM_LOWER])
+          found = ISLOWER(*s);
+        else if(charset[CURLFNM_BLANK])
+          found = ISBLANK(*s);
+        else if(charset[CURLFNM_GRAPH])
+          found = ISGRAPH(*s);
+
+        if(charset[CURLFNM_NEGATE])
+          found = !found;
+
+        if(!found)
+          return CURL_FNMATCH_NOMATCH;
+        p = pp + 1;
+        s++;
+        break;
       }
-      else
-        return CURL_FNMATCH_FAIL;
+
+      /* Syntax error in set: this must be taken as a regular character. */
+      /* FALLTHROUGH */
+    default:
+      if(*p++ != *s++)
+        return CURL_FNMATCH_NOMATCH;
       break;
     }
   }
diff --git a/lib/curl_gssapi.c b/lib/curl_gssapi.c
index 83f3fa0..f007986 100644
--- a/lib/curl_gssapi.c
+++ b/lib/curl_gssapi.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2011 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -27,6 +27,11 @@
 #include "curl_gssapi.h"
 #include "sendf.h"
 
+/* The last 3 #include files should be in this order */
+#include "curl_printf.h"
+#include "curl_memory.h"
+#include "memdebug.h"
+
 static char spnego_oid_bytes[] = "\x2b\x06\x01\x05\x05\x02";
 gss_OID_desc Curl_spnego_mech_oid = { 6, &spnego_oid_bytes };
 static char krb5_oid_bytes[] = "\x2a\x86\x48\x86\xf7\x12\x01\x02\x02";
diff --git a/lib/curl_memrchr.c b/lib/curl_memrchr.c
index c521497..eeb3044 100644
--- a/lib/curl_memrchr.c
+++ b/lib/curl_memrchr.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -44,17 +44,18 @@
 void *
 Curl_memrchr(const void *s, int c, size_t n)
 {
-  const unsigned char *p = s;
-  const unsigned char *q = s;
+  if(n > 0) {
+    const unsigned char *p = s;
+    const unsigned char *q = s;
 
-  p += n - 1;
+    p += n - 1;
 
-  while(p >= q) {
-    if(*p == (unsigned char)c)
-      return (void *)p;
-    p--;
+    while(p >= q) {
+      if(*p == (unsigned char)c)
+        return (void *)p;
+      p--;
+    }
   }
-
   return NULL;
 }
 
diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c
index e896276..e27cab3 100644
--- a/lib/curl_ntlm_core.c
+++ b/lib/curl_ntlm_core.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -646,15 +646,6 @@
   return CURLE_OK;
 }
 
-#ifndef SIZE_T_MAX
-/* some limits.h headers have this defined, some don't */
-#if defined(SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > 4)
-#define SIZE_T_MAX 18446744073709551615U
-#else
-#define SIZE_T_MAX 4294967295U
-#endif
-#endif
-
 /* This creates the NTLMv2 hash by using NTLM hash as the key and Unicode
  * (uppercase UserName + Domain) as the data
  */
@@ -754,12 +745,10 @@
   len = NTLM_HMAC_MD5_LEN + NTLMv2_BLOB_LEN;
 
   /* Allocate the response */
-  ptr = malloc(len);
+  ptr = calloc(1, len);
   if(!ptr)
     return CURLE_OUT_OF_MEMORY;
 
-  memset(ptr, 0, len);
-
   /* Create the BLOB structure */
   snprintf((char *)ptr + NTLM_HMAC_MD5_LEN, NTLMv2_BLOB_LEN,
            "%c%c%c%c"   /* NTLMv2_BLOB_SIGNATURE */
diff --git a/lib/curl_ntlm_wb.c b/lib/curl_ntlm_wb.c
index 03f47a3..353a656 100644
--- a/lib/curl_ntlm_wb.c
+++ b/lib/curl_ntlm_wb.c
@@ -364,7 +364,7 @@
   case NTLMSTATE_TYPE1:
   default:
     /* Use Samba's 'winbind' daemon to support NTLM authentication,
-     * by delegating the NTLM challenge/response protocal to a helper
+     * by delegating the NTLM challenge/response protocol to a helper
      * in ntlm_auth.
      * http://devel.squid-cache.org/ntlm/squid_helper_protocol.html
      * https://www.samba.org/samba/docs/man/manpages-3/winbindd.8.html
diff --git a/lib/curl_path.h b/lib/curl_path.h
index f9d4327..5ee4ff3 100644
--- a/lib/curl_path.h
+++ b/lib/curl_path.h
@@ -1,3 +1,5 @@
+#ifndef HEADER_CURL_PATH_H
+#define HEADER_CURL_PATH_H
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
@@ -5,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -42,3 +44,4 @@
                              char **path);
 
 CURLcode Curl_get_pathname(const char **cpp, char **path, char *homedir);
+#endif
diff --git a/lib/curl_range.c b/lib/curl_range.c
new file mode 100644
index 0000000..aa3c493
--- /dev/null
+++ b/lib/curl_range.c
@@ -0,0 +1,95 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+#include <curl/curl.h>
+#include "curl_range.h"
+#include "sendf.h"
+#include "strtoofft.h"
+
+/* Only include this function if one or more of FTP, FILE are enabled. */
+#if !defined(CURL_DISABLE_FTP) || !defined(CURL_DISABLE_FILE)
+
+ /*
+  Check if this is a range download, and if so, set the internal variables
+  properly.
+ */
+CURLcode Curl_range(struct connectdata *conn)
+{
+  curl_off_t from, to;
+  char *ptr;
+  char *ptr2;
+  struct Curl_easy *data = conn->data;
+
+  if(data->state.use_range && data->state.range) {
+    CURLofft from_t;
+    CURLofft to_t;
+    from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
+    if(from_t == CURL_OFFT_FLOW)
+      return CURLE_RANGE_ERROR;
+    while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
+      ptr++;
+    to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
+    if(to_t == CURL_OFFT_FLOW)
+      return CURLE_RANGE_ERROR;
+    if((to_t == CURL_OFFT_INVAL) && !from_t) {
+      /* X - */
+      data->state.resume_from = from;
+      DEBUGF(infof(data, "RANGE %" CURL_FORMAT_CURL_OFF_T " to end of file\n",
+                   from));
+    }
+    else if((from_t == CURL_OFFT_INVAL) && !to_t) {
+      /* -Y */
+      data->req.maxdownload = to;
+      data->state.resume_from = -to;
+      DEBUGF(infof(data, "RANGE the last %" CURL_FORMAT_CURL_OFF_T " bytes\n",
+                   to));
+    }
+    else {
+      /* X-Y */
+      curl_off_t totalsize;
+
+      /* Ensure the range is sensible - to should follow from. */
+      if(from > to)
+        return CURLE_RANGE_ERROR;
+
+      totalsize = to - from;
+      if(totalsize == CURL_OFF_T_MAX)
+        return CURLE_RANGE_ERROR;
+
+      data->req.maxdownload = totalsize + 1; /* include last byte */
+      data->state.resume_from = from;
+      DEBUGF(infof(data, "RANGE from %" CURL_FORMAT_CURL_OFF_T
+                   " getting %" CURL_FORMAT_CURL_OFF_T " bytes\n",
+                   from, data->req.maxdownload));
+    }
+    DEBUGF(infof(data, "range-download from %" CURL_FORMAT_CURL_OFF_T
+                 " to %" CURL_FORMAT_CURL_OFF_T ", totally %"
+                 CURL_FORMAT_CURL_OFF_T " bytes\n",
+                 from, to, data->req.maxdownload));
+  }
+  else
+    data->req.maxdownload = -1;
+  return CURLE_OK;
+}
+
+#endif
diff --git a/lib/curl_range.h b/lib/curl_range.h
new file mode 100644
index 0000000..2350df9
--- /dev/null
+++ b/lib/curl_range.h
@@ -0,0 +1,30 @@
+#ifndef HEADER_CURL_RANGE_H
+#define HEADER_CURL_RANGE_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+#include "curl_setup.h"
+#include "urldata.h"
+
+CURLcode Curl_range(struct connectdata *conn);
+
+#endif /* HEADER_CURL_RANGE_H */
diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c
index 550433d..e54e487 100644
--- a/lib/curl_sasl.c
+++ b/lib/curl_sasl.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -265,7 +265,7 @@
   const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
     conn->host.name;
   const long int port = SSL_IS_PROXY() ? conn->port : conn->remote_port;
-#if defined(USE_KERBEROS5)
+#if defined(USE_KERBEROS5) || defined(USE_NTLM)
   const char *service = data->set.str[STRING_SERVICE_NAME] ?
     data->set.str[STRING_SERVICE_NAME] :
     sasl->params->service;
@@ -333,7 +333,10 @@
       if(force_ir || data->set.sasl_ir)
         result = Curl_auth_create_ntlm_type1_message(data,
                                                      conn->user, conn->passwd,
-                                                     &conn->ntlm, &resp, &len);
+                                                     service,
+                                                     hostname,
+                                                     &conn->ntlm, &resp,
+                                                     &len);
       }
     else
 #endif
@@ -361,15 +364,6 @@
                                                        conn->oauth_bearer,
                                                        &resp, &len);
     }
-    else if(enabledmechs & SASL_MECH_LOGIN) {
-      mech = SASL_MECH_STRING_LOGIN;
-      state1 = SASL_LOGIN;
-      state2 = SASL_LOGIN_PASSWD;
-      sasl->authused = SASL_MECH_LOGIN;
-
-      if(force_ir || data->set.sasl_ir)
-        result = Curl_auth_create_login_message(data, conn->user, &resp, &len);
-    }
     else if(enabledmechs & SASL_MECH_PLAIN) {
       mech = SASL_MECH_STRING_PLAIN;
       state1 = SASL_PLAIN;
@@ -379,6 +373,15 @@
         result = Curl_auth_create_plain_message(data, conn->user, conn->passwd,
                                                 &resp, &len);
     }
+    else if(enabledmechs & SASL_MECH_LOGIN) {
+      mech = SASL_MECH_STRING_LOGIN;
+      state1 = SASL_LOGIN;
+      state2 = SASL_LOGIN_PASSWD;
+      sasl->authused = SASL_MECH_LOGIN;
+
+      if(force_ir || data->set.sasl_ir)
+        result = Curl_auth_create_login_message(data, conn->user, &resp, &len);
+    }
   }
 
   if(!result && mech) {
@@ -419,13 +422,11 @@
   char *chlg = NULL;
   size_t chlglen = 0;
 #endif
-#if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5)
+#if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \
+    defined(USE_NTLM)
   const char *service = data->set.str[STRING_SERVICE_NAME] ?
                         data->set.str[STRING_SERVICE_NAME] :
                         sasl->params->service;
-#endif
-#if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \
-    defined(USE_NTLM)
   char *serverdata;
 #endif
   size_t len = 0;
@@ -496,6 +497,7 @@
     /* Create the type-1 message */
     result = Curl_auth_create_ntlm_type1_message(data,
                                                  conn->user, conn->passwd,
+                                                 service, hostname,
                                                  &conn->ntlm, &resp, &len);
     newstate = SASL_NTLM_TYPE2MSG;
     break;
diff --git a/lib/curl_setup.h b/lib/curl_setup.h
index 609ee9e..5593a3b 100644
--- a/lib/curl_setup.h
+++ b/lib/curl_setup.h
@@ -389,6 +389,11 @@
 #  define LSEEK_ERROR (off_t)-1
 #endif
 
+#ifndef SIZEOF_TIME_T
+/* assume default size of time_t to be 32 bit */
+#define SIZEOF_TIME_T 4
+#endif
+
 /*
  * Default sizeof(off_t) in case it hasn't been defined in config file.
  */
@@ -424,6 +429,33 @@
 #endif
 #define CURL_OFF_T_MIN (-CURL_OFF_T_MAX - CURL_OFF_T_C(1))
 
+#if (SIZEOF_TIME_T == 4)
+#  ifdef HAVE_TIME_T_UNSIGNED
+#  define TIME_T_MAX UINT_MAX
+#  define TIME_T_MIN 0
+#  else
+#  define TIME_T_MAX INT_MAX
+#  define TIME_T_MIN INT_MIN
+#  endif
+#else
+#  ifdef HAVE_TIME_T_UNSIGNED
+#  define TIME_T_MAX 0xFFFFFFFFFFFFFFFF
+#  define TIME_T_MIN 0
+#  else
+#  define TIME_T_MAX 0x7FFFFFFFFFFFFFFF
+#  define TIME_T_MIN (-TIME_T_MAX - 1)
+#  endif
+#endif
+
+#ifndef SIZE_T_MAX
+/* some limits.h headers have this defined, some don't */
+#if defined(SIZEOF_SIZE_T) && (SIZEOF_SIZE_T > 4)
+#define SIZE_T_MAX 18446744073709551615U
+#else
+#define SIZE_T_MAX 4294967295U
+#endif
+#endif
+
 /*
  * Arg 2 type for gethostname in case it hasn't been defined in config file.
  */
@@ -607,11 +639,6 @@
 #error "Both libidn2 and WinIDN are enabled, choose one."
 #endif
 
-#ifndef SIZEOF_TIME_T
-/* assume default size of time_t to be 32 bit */
-#define SIZEOF_TIME_T 4
-#endif
-
 #define LIBIDN_REQUIRED_VERSION "0.4.1"
 
 #if defined(USE_GNUTLS) || defined(USE_OPENSSL) || defined(USE_NSS) || \
@@ -751,11 +778,11 @@
 #  if defined(WIN32) || defined(__CYGWIN__)
 #    define USE_RECV_BEFORE_SEND_WORKAROUND
 #  endif
-#else  /* DONT_USE_RECV_BEFORE_SEND_WORKAROUNDS */
+#else  /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */
 #  ifdef USE_RECV_BEFORE_SEND_WORKAROUND
 #    undef USE_RECV_BEFORE_SEND_WORKAROUND
 #  endif
-#endif /* DONT_USE_RECV_BEFORE_SEND_WORKAROUNDS */
+#endif /* DONT_USE_RECV_BEFORE_SEND_WORKAROUND */
 
 /* Detect Windows App environment which has a restricted access
  * to the Win32 APIs. */
@@ -768,4 +795,9 @@
 #  endif
 # endif
 
+/* for systems that don't detect this in configure, use a sensible default */
+#ifndef CURL_SA_FAMILY_T
+#define CURL_SA_FAMILY_T unsigned short
+#endif
+
 #endif /* HEADER_CURL_SETUP_H */
diff --git a/lib/curl_setup_once.h b/lib/curl_setup_once.h
index a5b542c..6d01ea1 100644
--- a/lib/curl_setup_once.h
+++ b/lib/curl_setup_once.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -101,7 +101,6 @@
 #  endif
 #endif
 
-
 /*
  * Definition of timeval struct for platforms that don't have it.
  */
@@ -274,25 +273,6 @@
 #  define sfcntl  fcntl
 #endif
 
-/*
- * Uppercase macro versions of ANSI/ISO is*() functions/macros which
- * avoid negative number inputs with argument byte codes > 127.
- */
-
-#define ISSPACE(x)  (isspace((int)  ((unsigned char)x)))
-#define ISDIGIT(x)  (isdigit((int)  ((unsigned char)x)))
-#define ISALNUM(x)  (isalnum((int)  ((unsigned char)x)))
-#define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
-#define ISGRAPH(x)  (isgraph((int)  ((unsigned char)x)))
-#define ISALPHA(x)  (isalpha((int)  ((unsigned char)x)))
-#define ISPRINT(x)  (isprint((int)  ((unsigned char)x)))
-#define ISUPPER(x)  (isupper((int)  ((unsigned char)x)))
-#define ISLOWER(x)  (islower((int)  ((unsigned char)x)))
-#define ISASCII(x)  (isascii((int)  ((unsigned char)x)))
-
-#define ISBLANK(x)  (int)((((unsigned char)x) == ' ') || \
-                          (((unsigned char)x) == '\t'))
-
 #define TOLOWER(x)  (tolower((int)  ((unsigned char)x)))
 
 
@@ -347,6 +327,7 @@
 #define FALSE false
 #endif
 
+#include "curl_ctype.h"
 
 /*
  * Macro WHILE_FALSE may be used to build single-iteration do-while loops,
diff --git a/lib/easy.c b/lib/easy.c
index edc716d..6b91435 100644
--- a/lib/easy.c
+++ b/lib/easy.c
@@ -61,6 +61,7 @@
 #include "strdup.h"
 #include "progress.h"
 #include "easyif.h"
+#include "multiif.h"
 #include "select.h"
 #include "sendf.h" /* for failf function prototype */
 #include "connect.h" /* for Curl_getconnectinfo */
@@ -73,6 +74,7 @@
 #include "sigpipe.h"
 #include "ssh.h"
 #include "setopt.h"
+#include "http_digest.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -744,6 +746,10 @@
   if(!data)
     return CURLE_BAD_FUNCTION_ARGUMENT;
 
+  if(data->set.errorbuffer)
+    /* clear this as early as possible */
+    data->set.errorbuffer[0] = 0;
+
   if(data->multi) {
     failf(data, "easy handle already used in multi handle");
     return CURLE_FAILED_INIT;
@@ -760,6 +766,9 @@
     data->multi_easy = multi;
   }
 
+  if(multi->in_callback)
+    return CURLE_RECURSIVE_API_CALL;
+
   /* Copy the MAXCONNECTS option to the multi handle */
   curl_multi_setopt(multi, CURLMOPT_MAXCONNECTS, data->set.maxconnects);
 
@@ -883,6 +892,9 @@
   /* Duplicate mime data. */
   result = Curl_mime_duppart(&dst->set.mimepost, &src->set.mimepost);
 
+  if(src->set.resolve)
+    dst->change.resolve = dst->set.resolve;
+
   return result;
 }
 
@@ -1017,6 +1029,7 @@
   /* zero out authentication data: */
   memset(&data->state.authhost, 0, sizeof(struct auth));
   memset(&data->state.authproxy, 0, sizeof(struct auth));
+  Curl_digest_cleanup(data);
 }
 
 /*
@@ -1028,6 +1041,9 @@
  * the pausing, you may get your write callback called at this point.
  *
  * Action is a bitmask consisting of CURLPAUSE_* bits in curl/curl.h
+ *
+ * NOTE: This is one of few API functions that are allowed to be called from
+ * within a callback.
  */
 CURLcode curl_easy_pause(struct Curl_easy *data, int action)
 {
@@ -1070,10 +1086,8 @@
       /* even if one function returns error, this loops through and frees all
          buffers */
       if(!result)
-        result = Curl_client_chop_write(conn,
-                                        writebuf[i].type,
-                                        writebuf[i].buf,
-                                        writebuf[i].len);
+        result = Curl_client_write(conn, writebuf[i].type, writebuf[i].buf,
+                                   writebuf[i].len);
       free(writebuf[i].buf);
     }
 
@@ -1092,6 +1106,10 @@
       (KEEP_RECV_PAUSE|KEEP_SEND_PAUSE)) )
     Curl_expire(data, 0, EXPIRE_RUN_NOW); /* get this handle going again */
 
+  /* This transfer may have been moved in or out of the bundle, update
+     the corresponding socket callback, if used */
+  Curl_updatesocket(data);
+
   return result;
 }
 
@@ -1132,6 +1150,9 @@
   ssize_t n1;
   struct connectdata *c;
 
+  if(Curl_is_in_callback(data))
+    return CURLE_RECURSIVE_API_CALL;
+
   result = easy_connection(data, &sfd, &c);
   if(result)
     return result;
@@ -1159,6 +1180,9 @@
   ssize_t n1;
   struct connectdata *c = NULL;
 
+  if(Curl_is_in_callback(data))
+    return CURLE_RECURSIVE_API_CALL;
+
   result = easy_connection(data, &sfd, &c);
   if(result)
     return result;
diff --git a/lib/file.c b/lib/file.c
index 0bbc0e1..db04cc2 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -61,6 +61,7 @@
 #include "url.h"
 #include "parsedate.h" /* for the week day and month names */
 #include "warnless.h"
+#include "curl_range.h"
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
 #include "curl_memory.h"
@@ -125,65 +126,6 @@
   return CURLE_OK;
 }
 
- /*
-  Check if this is a range download, and if so, set the internal variables
-  properly. This code is copied from the FTP implementation and might as
-  well be factored out.
- */
-static CURLcode file_range(struct connectdata *conn)
-{
-  curl_off_t from, to;
-  curl_off_t totalsize = -1;
-  char *ptr;
-  char *ptr2;
-  struct Curl_easy *data = conn->data;
-
-  if(data->state.use_range && data->state.range) {
-    CURLofft from_t;
-    CURLofft to_t;
-    from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
-    if(from_t == CURL_OFFT_FLOW)
-      return CURLE_RANGE_ERROR;
-    while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
-      ptr++;
-    to_t = curlx_strtoofft(ptr, &ptr2, 0, &to);
-    if(to_t == CURL_OFFT_FLOW)
-      return CURLE_RANGE_ERROR;
-    if((to_t == CURL_OFFT_INVAL) && !from_t) {
-      /* X - */
-      data->state.resume_from = from;
-      DEBUGF(infof(data, "RANGE %" CURL_FORMAT_CURL_OFF_T " to end of file\n",
-                   from));
-    }
-    else if((from_t == CURL_OFFT_INVAL) && !to_t) {
-      /* -Y */
-      data->req.maxdownload = to;
-      data->state.resume_from = -to;
-      DEBUGF(infof(data, "RANGE the last %" CURL_FORMAT_CURL_OFF_T " bytes\n",
-                   to));
-    }
-    else {
-      /* X-Y */
-      totalsize = to-from;
-      if(totalsize == CURL_OFF_T_MAX)
-        /* this is too big to increase, so bail out */
-        return CURLE_RANGE_ERROR;
-      data->req.maxdownload = totalsize + 1; /* include last byte */
-      data->state.resume_from = from;
-      DEBUGF(infof(data, "RANGE from %" CURL_FORMAT_CURL_OFF_T
-                   " getting %" CURL_FORMAT_CURL_OFF_T " bytes\n",
-                   from, data->req.maxdownload));
-    }
-    DEBUGF(infof(data, "range-download from %" CURL_FORMAT_CURL_OFF_T
-                 " to %" CURL_FORMAT_CURL_OFF_T ", totally %"
-                 CURL_FORMAT_CURL_OFF_T " bytes\n",
-                 from, to, data->req.maxdownload));
-  }
-  else
-    data->req.maxdownload = -1;
-  return CURLE_OK;
-}
-
 /*
  * file_connect() gets called from Curl_protocol_connect() to allow us to
  * do protocol-specific actions at connect-time.  We emulate a
@@ -461,12 +403,12 @@
     /* we could stat it, then read out the size */
     expected_size = statbuf.st_size;
     /* and store the modification time */
-    data->info.filetime = (long)statbuf.st_mtime;
+    data->info.filetime = statbuf.st_mtime;
     fstated = TRUE;
   }
 
   if(fstated && !data->state.range && data->set.timecondition) {
-    if(!Curl_meets_timecondition(data, (time_t)data->info.filetime)) {
+    if(!Curl_meets_timecondition(data, data->info.filetime)) {
       *done = TRUE;
       return CURLE_OK;
     }
@@ -514,7 +456,9 @@
   }
 
   /* Check whether file range has been specified */
-  file_range(conn);
+  result = Curl_range(conn);
+  if(result)
+    return result;
 
   /* Adjust the start offset in case we want to get the N last bytes
    * of the stream iff the filesize could be determined */
diff --git a/lib/fileinfo.c b/lib/fileinfo.c
index 3872988..4e72e1e 100644
--- a/lib/fileinfo.c
+++ b/lib/fileinfo.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -33,14 +33,11 @@
   return calloc(1, sizeof(struct fileinfo));
 }
 
-void Curl_fileinfo_dtor(void *user, void *element)
+void Curl_fileinfo_cleanup(struct fileinfo *finfo)
 {
-  struct fileinfo *finfo = element;
-  (void) user;
   if(!finfo)
     return;
 
   Curl_safefree(finfo->info.b_data);
-
   free(finfo);
 }
diff --git a/lib/fileinfo.h b/lib/fileinfo.h
index c5d0ee5..f4d8f3b 100644
--- a/lib/fileinfo.h
+++ b/lib/fileinfo.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,7 +31,6 @@
 };
 
 struct fileinfo *Curl_fileinfo_alloc(void);
-
-void Curl_fileinfo_dtor(void *, void *);
+void Curl_fileinfo_cleanup(struct fileinfo *finfo);
 
 #endif /* HEADER_CURL_FILEINFO_H */
diff --git a/lib/formdata.c b/lib/formdata.c
index d0579c5..f912410 100644
--- a/lib/formdata.c
+++ b/lib/formdata.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -155,60 +155,6 @@
 
 /***************************************************************************
  *
- * ContentTypeForFilename()
- *
- * Provides content type for filename if one of the known types (else
- * (either the prevtype or the default is returned).
- *
- * Returns some valid contenttype for filename.
- *
- ***************************************************************************/
-static const char *ContentTypeForFilename(const char *filename,
-                                          const char *prevtype)
-{
-  const char *contenttype = NULL;
-  unsigned int i;
-  /*
-   * No type was specified, we scan through a few well-known
-   * extensions and pick the first we match!
-   */
-  struct ContentType {
-    const char *extension;
-    const char *type;
-  };
-  static const struct ContentType ctts[]={
-    {".gif",  "image/gif"},
-    {".jpg",  "image/jpeg"},
-    {".jpeg", "image/jpeg"},
-    {".txt",  "text/plain"},
-    {".html", "text/html"},
-    {".xml", "application/xml"}
-  };
-
-  if(prevtype)
-    /* default to the previously set/used! */
-    contenttype = prevtype;
-  else
-    contenttype = HTTPPOST_CONTENTTYPE_DEFAULT;
-
-  if(filename) { /* in case a NULL was passed in */
-    for(i = 0; i<sizeof(ctts)/sizeof(ctts[0]); i++) {
-      if(strlen(filename) >= strlen(ctts[i].extension)) {
-        if(strcasecompare(filename +
-                          strlen(filename) - strlen(ctts[i].extension),
-                          ctts[i].extension)) {
-          contenttype = ctts[i].type;
-          break;
-        }
-      }
-    }
-  }
-  /* we have a contenttype by now */
-  return contenttype;
-}
-
-/***************************************************************************
- *
  * FormAdd()
  *
  * Stores a formpost parameter and builds the appropriate linked list.
@@ -627,9 +573,15 @@
          !form->contenttype) {
         char *f = form->flags & HTTPPOST_BUFFER?
           form->showfilename : form->value;
+        char const *type;
+        type = Curl_mime_contenttype(f);
+        if(!type)
+          type = prevtype;
+        if(!type)
+          type = FILE_CONTENTTYPE_DEFAULT;
 
         /* our contenttype is missing */
-        form->contenttype = strdup(ContentTypeForFilename(f, prevtype));
+        form->contenttype = strdup(type);
         if(!form->contenttype) {
           return_value = CURL_FORMADD_MEMORY;
           break;
diff --git a/lib/ftp.c b/lib/ftp.c
index 8042edf..4e074a1 100644
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -59,6 +59,7 @@
 #include "ftp.h"
 #include "fileinfo.h"
 #include "ftplistparser.h"
+#include "curl_range.h"
 #include "curl_sec.h"
 #include "strtoofft.h"
 #include "strcase.h"
@@ -310,9 +311,11 @@
     int error = 0;
 
     /* activate callback for setting socket options */
+    Curl_set_in_callback(data, true);
     error = data->set.fsockopt(data->set.sockopt_client,
                                s,
                                CURLSOCKTYPE_ACCEPT);
+    Curl_set_in_callback(data, false);
 
     if(error) {
       close_secondarysocket(conn);
@@ -1471,7 +1474,7 @@
       slashPos = strrchr(inpath, '/');
       n = slashPos - inpath;
     }
-    result = Curl_urldecode(data, inpath, n, &lstArg, NULL, FALSE);
+    result = Curl_urldecode(data, inpath, n, &lstArg, NULL, TRUE);
     if(result)
       return result;
   }
@@ -1535,7 +1538,7 @@
      date. */
   if(data->set.opt_no_body && ftpc->file &&
      ftp_need_type(conn, data->set.prefer_ascii)) {
-    /* The SIZE command is _not_ RFC 959 specified, and therefor many servers
+    /* The SIZE command is _not_ RFC 959 specified, and therefore many servers
        may not support it! It is however the only way we have to get a file's
        size! */
 
@@ -1615,8 +1618,10 @@
 
     /* Let's read off the proper amount of bytes from the input. */
     if(conn->seek_func) {
+      Curl_set_in_callback(data, true);
       seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
                                 SEEK_SET);
+      Curl_set_in_callback(data, false);
     }
 
     if(seekerr != CURL_SEEKFUNC_OK) {
@@ -1783,7 +1788,7 @@
 {
   CURLcode result = CURLE_OK;
 
-  if(conn->bits.ipv6) {
+  if(conn->bits.ipv6 && !(conn->bits.tunnel_proxy || conn->bits.socksproxy)) {
     /* We can't disable EPSV when doing IPv6, so this is instead a fail */
     failf(conn->data, "Failed EPSV attempt, exiting\n");
     return CURLE_WEIRD_SERVER_REPLY;
@@ -1905,13 +1910,13 @@
     if(data->set.ftp_skip_ip) {
       /* told to ignore the remotely given IP but instead use the host we used
          for the control connection */
-      infof(data, "Skip %d.%d.%d.%d for data connection, re-use %s instead\n",
+      infof(data, "Skip %u.%u.%u.%u for data connection, re-use %s instead\n",
             ip[0], ip[1], ip[2], ip[3],
             conn->host.name);
       ftpc->newhost = strdup(control_address(conn));
     }
     else
-      ftpc->newhost = aprintf("%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
+      ftpc->newhost = aprintf("%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]);
 
     if(!ftpc->newhost)
       return CURLE_OUT_OF_MEMORY;
@@ -2060,7 +2065,7 @@
                  "%04d%02d%02d %02d:%02d:%02d GMT",
                  year, month, day, hour, minute, second);
         /* now, convert this into a time() value: */
-        data->info.filetime = (long)curl_getdate(timebuf, &secs);
+        data->info.filetime = curl_getdate(timebuf, &secs);
       }
 
 #ifdef CURL_FTP_HTTPSTYLE_HEAD
@@ -2072,7 +2077,7 @@
          data->set.get_filetime &&
          (data->info.filetime >= 0) ) {
         char headerbuf[128];
-        time_t filetime = (time_t)data->info.filetime;
+        time_t filetime = data->info.filetime;
         struct tm buffer;
         const struct tm *tm = &buffer;
 
@@ -3180,14 +3185,16 @@
 
   if(data->state.wildcardmatch) {
     if(data->set.chunk_end && ftpc->file) {
+      Curl_set_in_callback(data, true);
       data->set.chunk_end(data->wildcard.customptr);
+      Curl_set_in_callback(data, false);
     }
     ftpc->known_filesize = -1;
   }
 
   if(!result)
     /* get the "raw" path */
-    result = Curl_urldecode(data, path_to_use, 0, &path, NULL, FALSE);
+    result = Curl_urldecode(data, path_to_use, 0, &path, NULL, TRUE);
   if(result) {
     /* We can limp along anyway (and should try to since we may already be in
      * the error path) */
@@ -3463,62 +3470,6 @@
 #endif
 
 /*
-  Check if this is a range download, and if so, set the internal variables
-  properly.
- */
-
-static CURLcode ftp_range(struct connectdata *conn)
-{
-  curl_off_t from, to;
-  char *ptr;
-  struct Curl_easy *data = conn->data;
-  struct ftp_conn *ftpc = &conn->proto.ftpc;
-
-  if(data->state.use_range && data->state.range) {
-    CURLofft from_t;
-    CURLofft to_t;
-    from_t = curlx_strtoofft(data->state.range, &ptr, 0, &from);
-    if(from_t == CURL_OFFT_FLOW)
-      return CURLE_RANGE_ERROR;
-    while(*ptr && (ISSPACE(*ptr) || (*ptr == '-')))
-      ptr++;
-    to_t = curlx_strtoofft(ptr, NULL, 0, &to);
-    if(to_t == CURL_OFFT_FLOW)
-      return CURLE_RANGE_ERROR;
-    if((to_t == CURL_OFFT_INVAL) && !from_t) {
-      /* X - */
-      data->state.resume_from = from;
-      DEBUGF(infof(conn->data, "FTP RANGE %" CURL_FORMAT_CURL_OFF_T
-                   " to end of file\n", from));
-    }
-    else if(!to_t && (from_t == CURL_OFFT_INVAL)) {
-      /* -Y */
-      data->req.maxdownload = to;
-      data->state.resume_from = -to;
-      DEBUGF(infof(conn->data, "FTP RANGE the last %" CURL_FORMAT_CURL_OFF_T
-                   " bytes\n", to));
-    }
-    else {
-      /* X-Y */
-      data->req.maxdownload = (to - from) + 1; /* include last byte */
-      data->state.resume_from = from;
-      DEBUGF(infof(conn->data, "FTP RANGE from %" CURL_FORMAT_CURL_OFF_T
-                   " getting %" CURL_FORMAT_CURL_OFF_T " bytes\n",
-                   from, data->req.maxdownload));
-    }
-    DEBUGF(infof(conn->data, "range-download from %" CURL_FORMAT_CURL_OFF_T
-                 " to %" CURL_FORMAT_CURL_OFF_T ", totally %"
-                 CURL_FORMAT_CURL_OFF_T " bytes\n",
-                 from, to, data->req.maxdownload));
-    ftpc->dont_check = TRUE; /* don't check for successful transfer */
-  }
-  else
-    data->req.maxdownload = -1;
-  return CURLE_OK;
-}
-
-
-/*
  * ftp_do_more()
  *
  * This function shall be called when the second FTP (data) connection is
@@ -3640,7 +3591,13 @@
       /* download */
       ftp->downloadsize = -1; /* unknown as of yet */
 
-      result = ftp_range(conn);
+      result = Curl_range(conn);
+
+      if(result == CURLE_OK && data->req.maxdownload >= 0) {
+        /* Don't check for successful transfer */
+        ftpc->dont_check = TRUE;
+      }
+
       if(result)
         ;
       else if(data->set.ftp_list_only || !ftpc->file) {
@@ -3730,10 +3687,10 @@
 
 static void wc_data_dtor(void *ptr)
 {
-  struct ftp_wc_tmpdata *tmp = ptr;
-  if(tmp)
-    Curl_ftp_parselist_data_free(&tmp->parser);
-  free(tmp);
+  struct ftp_wc *ftpwc = ptr;
+  if(ftpwc && ftpwc->parser)
+    Curl_ftp_parselist_data_free(&ftpwc->parser);
+  free(ftpwc);
 }
 
 static CURLcode init_wc_data(struct connectdata *conn)
@@ -3742,7 +3699,7 @@
   char *path = conn->data->state.path;
   struct WildcardData *wildcard = &(conn->data->wildcard);
   CURLcode result = CURLE_OK;
-  struct ftp_wc_tmpdata *ftp_tmp;
+  struct ftp_wc *ftpwc = NULL;
 
   last_slash = strrchr(conn->data->state.path, '/');
   if(last_slash) {
@@ -3774,23 +3731,22 @@
   /* program continues only if URL is not ending with slash, allocate needed
      resources for wildcard transfer */
 
-  /* allocate ftp protocol specific temporary wildcard data */
-  ftp_tmp = calloc(1, sizeof(struct ftp_wc_tmpdata));
-  if(!ftp_tmp) {
-    Curl_safefree(wildcard->pattern);
-    return CURLE_OUT_OF_MEMORY;
+  /* allocate ftp protocol specific wildcard data */
+  ftpwc = calloc(1, sizeof(struct ftp_wc));
+  if(!ftpwc) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto fail;
   }
 
   /* INITIALIZE parselist structure */
-  ftp_tmp->parser = Curl_ftp_parselist_data_alloc();
-  if(!ftp_tmp->parser) {
-    Curl_safefree(wildcard->pattern);
-    free(ftp_tmp);
-    return CURLE_OUT_OF_MEMORY;
+  ftpwc->parser = Curl_ftp_parselist_data_alloc();
+  if(!ftpwc->parser) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto fail;
   }
 
-  wildcard->tmp = ftp_tmp; /* put it to the WildcardData tmp pointer */
-  wildcard->tmp_dtor = wc_data_dtor;
+  wildcard->protdata = ftpwc; /* put it to the WildcardData tmp pointer */
+  wildcard->dtor = wc_data_dtor;
 
   /* wildcard does not support NOCWD option (assert it?) */
   if(conn->data->set.ftp_filemethod == FTPFILE_NOCWD)
@@ -3799,33 +3755,36 @@
   /* try to parse ftp url */
   result = ftp_parse_url_path(conn);
   if(result) {
-    Curl_safefree(wildcard->pattern);
-    wildcard->tmp_dtor(wildcard->tmp);
-    wildcard->tmp_dtor = ZERO_NULL;
-    wildcard->tmp = NULL;
-    return result;
+    goto fail;
   }
 
   wildcard->path = strdup(conn->data->state.path);
   if(!wildcard->path) {
-    Curl_safefree(wildcard->pattern);
-    wildcard->tmp_dtor(wildcard->tmp);
-    wildcard->tmp_dtor = ZERO_NULL;
-    wildcard->tmp = NULL;
-    return CURLE_OUT_OF_MEMORY;
+    result = CURLE_OUT_OF_MEMORY;
+    goto fail;
   }
 
   /* backup old write_function */
-  ftp_tmp->backup.write_function = conn->data->set.fwrite_func;
+  ftpwc->backup.write_function = conn->data->set.fwrite_func;
   /* parsing write function */
   conn->data->set.fwrite_func = Curl_ftp_parselist;
   /* backup old file descriptor */
-  ftp_tmp->backup.file_descriptor = conn->data->set.out;
+  ftpwc->backup.file_descriptor = conn->data->set.out;
   /* let the writefunc callback know what curl pointer is working with */
   conn->data->set.out = conn;
 
   infof(conn->data, "Wildcard - Parsing started\n");
   return CURLE_OK;
+
+  fail:
+  if(ftpwc) {
+    Curl_ftp_parselist_data_free(&ftpwc->parser);
+    free(ftpwc);
+  }
+  Curl_safefree(wildcard->pattern);
+  wildcard->dtor = ZERO_NULL;
+  wildcard->protdata = NULL;
+  return result;
 }
 
 /* This is called recursively */
@@ -3846,14 +3805,14 @@
   case CURLWC_MATCHING: {
     /* In this state is LIST response successfully parsed, so lets restore
        previous WRITEFUNCTION callback and WRITEDATA pointer */
-    struct ftp_wc_tmpdata *ftp_tmp = wildcard->tmp;
-    conn->data->set.fwrite_func = ftp_tmp->backup.write_function;
-    conn->data->set.out = ftp_tmp->backup.file_descriptor;
-    ftp_tmp->backup.write_function = ZERO_NULL;
-    ftp_tmp->backup.file_descriptor = NULL;
+    struct ftp_wc *ftpwc = wildcard->protdata;
+    conn->data->set.fwrite_func = ftpwc->backup.write_function;
+    conn->data->set.out = ftpwc->backup.file_descriptor;
+    ftpwc->backup.write_function = ZERO_NULL;
+    ftpwc->backup.file_descriptor = NULL;
     wildcard->state = CURLWC_DOWNLOADING;
 
-    if(Curl_ftp_parselist_geterror(ftp_tmp->parser)) {
+    if(Curl_ftp_parselist_geterror(ftpwc->parser)) {
       /* error found in LIST parsing */
       wildcard->state = CURLWC_CLEAN;
       return wc_statemach(conn);
@@ -3883,8 +3842,11 @@
 
     infof(conn->data, "Wildcard - START of \"%s\"\n", finfo->filename);
     if(conn->data->set.chunk_bgn) {
-      long userresponse = conn->data->set.chunk_bgn(
+      long userresponse;
+      Curl_set_in_callback(conn->data, true);
+      userresponse = conn->data->set.chunk_bgn(
         finfo, wildcard->customptr, (int)wildcard->filelist.size);
+      Curl_set_in_callback(conn->data, false);
       switch(userresponse) {
       case CURL_CHUNK_BGN_FUNC_SKIP:
         infof(conn->data, "Wildcard - \"%s\" skipped by user\n",
@@ -3920,8 +3882,11 @@
   } break;
 
   case CURLWC_SKIP: {
-    if(conn->data->set.chunk_end)
+    if(conn->data->set.chunk_end) {
+      Curl_set_in_callback(conn->data, true);
       conn->data->set.chunk_end(conn->data->wildcard.customptr);
+      Curl_set_in_callback(conn->data, false);
+    }
     Curl_llist_remove(&wildcard->filelist, wildcard->filelist.head, NULL);
     wildcard->state = (wildcard->filelist.size == 0) ?
                       CURLWC_CLEAN : CURLWC_DOWNLOADING;
@@ -3929,10 +3894,10 @@
   }
 
   case CURLWC_CLEAN: {
-    struct ftp_wc_tmpdata *ftp_tmp = wildcard->tmp;
+    struct ftp_wc *ftpwc = wildcard->protdata;
     result = CURLE_OK;
-    if(ftp_tmp)
-      result = Curl_ftp_parselist_geterror(ftp_tmp->parser);
+    if(ftpwc)
+      result = Curl_ftp_parselist_geterror(ftpwc->parser);
 
     wildcard->state = result ? CURLWC_ERROR : CURLWC_DONE;
   } break;
@@ -3940,6 +3905,8 @@
   case CURLWC_DONE:
   case CURLWC_ERROR:
   case CURLWC_CLEAR:
+    if(wildcard->dtor)
+      wildcard->dtor(wildcard->protdata);
     break;
   }
 
@@ -4192,7 +4159,7 @@
       result = Curl_urldecode(conn->data, slash_pos ? cur_pos : "/",
                               slash_pos ? dirlen : 1,
                               &ftpc->dirs[0], NULL,
-                              FALSE);
+                              TRUE);
       if(result) {
         freedirs(ftpc);
         return result;
@@ -4299,7 +4266,7 @@
     size_t dlen;
     char *path;
     CURLcode result =
-      Curl_urldecode(conn->data, data->state.path, 0, &path, &dlen, FALSE);
+      Curl_urldecode(conn->data, data->state.path, 0, &path, &dlen, TRUE);
     if(result) {
       freedirs(ftpc);
       return result;
diff --git a/lib/ftp.h b/lib/ftp.h
index e4aa63f..7ec3391 100644
--- a/lib/ftp.h
+++ b/lib/ftp.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -81,7 +81,7 @@
 
 struct ftp_parselist_data; /* defined later in ftplistparser.c */
 
-struct ftp_wc_tmpdata {
+struct ftp_wc {
   struct ftp_parselist_data *parser;
 
   struct {
diff --git a/lib/ftplistparser.c b/lib/ftplistparser.c
index 262ac03..249fe09 100644
--- a/lib/ftplistparser.c
+++ b/lib/ftplistparser.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -49,6 +49,7 @@
 #include "ftplistparser.h"
 #include "curl_fnmatch.h"
 #include "curl_memory.h"
+#include "multiif.h"
 /* The last #include file should be: */
 #include "memdebug.h"
 
@@ -184,10 +185,13 @@
 }
 
 
-void Curl_ftp_parselist_data_free(struct ftp_parselist_data **pl_data)
+void Curl_ftp_parselist_data_free(struct ftp_parselist_data **parserp)
 {
-  free(*pl_data);
-  *pl_data = NULL;
+  struct ftp_parselist_data *parser = *parserp;
+  if(parser)
+    Curl_fileinfo_cleanup(parser->file_data);
+  free(parser);
+  *parserp = NULL;
 }
 
 
@@ -269,9 +273,9 @@
 {
   curl_fnmatch_callback compare;
   struct WildcardData *wc = &conn->data->wildcard;
-  struct ftp_wc_tmpdata *tmpdata = wc->tmp;
+  struct ftp_wc *ftpwc = wc->protdata;
   struct curl_llist *llist = &wc->filelist;
-  struct ftp_parselist_data *parser = tmpdata->parser;
+  struct ftp_parselist_data *parser = ftpwc->parser;
   bool add = TRUE;
   struct curl_fileinfo *finfo = &infop->info;
 
@@ -294,6 +298,7 @@
     compare = Curl_fnmatch;
 
   /* filter pattern-corresponding filenames */
+  Curl_set_in_callback(conn->data, true);
   if(compare(conn->data->set.fnmatch_data, wc->pattern,
              finfo->filename) == 0) {
     /* discard symlink which is containing multiple " -> " */
@@ -305,15 +310,16 @@
   else {
     add = FALSE;
   }
+  Curl_set_in_callback(conn->data, false);
 
   if(add) {
     Curl_llist_insert_next(llist, llist->tail, finfo, &infop->list);
   }
   else {
-    Curl_fileinfo_dtor(NULL, finfo);
+    Curl_fileinfo_cleanup(infop);
   }
 
-  tmpdata->parser->file_data = NULL;
+  ftpwc->parser->file_data = NULL;
   return CURLE_OK;
 }
 
@@ -322,8 +328,8 @@
 {
   size_t bufflen = size*nmemb;
   struct connectdata *conn = (struct connectdata *)connptr;
-  struct ftp_wc_tmpdata *tmpdata = conn->data->wildcard.tmp;
-  struct ftp_parselist_data *parser = tmpdata->parser;
+  struct ftp_wc *ftpwc = conn->data->wildcard.protdata;
+  struct ftp_parselist_data *parser = ftpwc->parser;
   struct fileinfo *infop;
   struct curl_fileinfo *finfo;
   unsigned long i = 0;
@@ -378,7 +384,7 @@
         finfo->b_data = tmp;
       }
       else {
-        Curl_fileinfo_dtor(NULL, parser->file_data);
+        Curl_fileinfo_cleanup(parser->file_data);
         parser->file_data = NULL;
         parser->error = CURLE_OUT_OF_MEMORY;
         goto fail;
@@ -1000,12 +1006,13 @@
 
     i++;
   }
+  return retsize;
 
 fail:
 
   /* Clean up any allocated memory. */
   if(parser->file_data) {
-    Curl_fileinfo_dtor(NULL, parser->file_data);
+    Curl_fileinfo_cleanup(parser->file_data);
     parser->file_data = NULL;
   }
 
diff --git a/lib/getinfo.c b/lib/getinfo.c
index 862ced0..d280eeb 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -156,7 +156,12 @@
     *param_longp = data->info.httpproxycode;
     break;
   case CURLINFO_FILETIME:
-    *param_longp = data->info.filetime;
+    if(data->info.filetime > LONG_MAX)
+      *param_longp = LONG_MAX;
+    else if(data->info.filetime < LONG_MIN)
+      *param_longp = LONG_MIN;
+    else
+      *param_longp = (long)data->info.filetime;
     break;
   case CURLINFO_HEADER_SIZE:
     *param_longp = data->info.header_size;
@@ -253,6 +258,9 @@
                              curl_off_t *param_offt)
 {
   switch(info) {
+  case CURLINFO_FILETIME_T:
+    *param_offt = (curl_off_t)data->info.filetime;
+    break;
   case CURLINFO_SIZE_UPLOAD_T:
     *param_offt = data->progress.uploaded;
     break;
diff --git a/lib/hash.c b/lib/hash.c
index c99b1b6..15a128f 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -261,11 +261,11 @@
 {
   const char *key_str = (const char *) key;
   const char *end = key_str + key_length;
-  unsigned long h = 5381;
+  size_t h = 5381;
 
   while(key_str < end) {
     h += h << 5;
-    h ^= (unsigned long) *key_str++;
+    h ^= *key_str++;
   }
 
   return (h % slots_num);
diff --git a/lib/hostcheck.c b/lib/hostcheck.c
index 37bcc12..c9d8112 100644
--- a/lib/hostcheck.c
+++ b/lib/hostcheck.c
@@ -25,7 +25,7 @@
 #if defined(USE_OPENSSL)                                \
   || defined(USE_AXTLS)                                 \
   || defined(USE_GSKIT)                                 \
-  || (defined(USE_SCHANNEL) && defined(_WIN32_WCE))
+  || defined(USE_SCHANNEL)
 /* these backends use functions from this file */
 
 #ifdef HAVE_NETINET_IN_H
diff --git a/lib/hostip.c b/lib/hostip.c
index 886aeec..c2f9def 100644
--- a/lib/hostip.c
+++ b/lib/hostip.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -54,10 +54,12 @@
 #include "sendf.h"
 #include "hostip.h"
 #include "hash.h"
+#include "rand.h"
 #include "share.h"
 #include "strerror.h"
 #include "url.h"
 #include "inet_ntop.h"
+#include "multiif.h"
 #include "warnless.h"
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -366,6 +368,70 @@
 }
 
 /*
+ * Curl_shuffle_addr() shuffles the order of addresses in a 'Curl_addrinfo'
+ * struct by re-linking its linked list.
+ *
+ * The addr argument should be the address of a pointer to the head node of a
+ * `Curl_addrinfo` list and it will be modified to point to the new head after
+ * shuffling.
+ *
+ * Not declared static only to make it easy to use in a unit test!
+ *
+ * @unittest: 1608
+ */
+CURLcode Curl_shuffle_addr(struct Curl_easy *data, Curl_addrinfo **addr)
+{
+  CURLcode result = CURLE_OK;
+  const int num_addrs = Curl_num_addresses(*addr);
+
+  if(num_addrs > 1) {
+    Curl_addrinfo **nodes;
+    infof(data, "Shuffling %i addresses", num_addrs);
+
+    nodes = malloc(num_addrs*sizeof(*nodes));
+    if(nodes) {
+      int i;
+      unsigned int *rnd;
+      const size_t rnd_size = num_addrs * sizeof(*rnd);
+
+      /* build a plain array of Curl_addrinfo pointers */
+      nodes[0] = *addr;
+      for(i = 1; i < num_addrs; i++) {
+        nodes[i] = nodes[i-1]->ai_next;
+      }
+
+      rnd = malloc(rnd_size);
+      if(rnd) {
+        /* Fisher-Yates shuffle */
+        if(Curl_rand(data, (unsigned char *)rnd, rnd_size) == CURLE_OK) {
+          Curl_addrinfo *swap_tmp;
+          for(i = num_addrs - 1; i > 0; i--) {
+            swap_tmp = nodes[rnd[i] % (i + 1)];
+            nodes[rnd[i] % (i + 1)] = nodes[i];
+            nodes[i] = swap_tmp;
+          }
+
+          /* relink list in the new order */
+          for(i = 1; i < num_addrs; i++) {
+            nodes[i-1]->ai_next = nodes[i];
+          }
+
+          nodes[num_addrs-1]->ai_next = NULL;
+          *addr = nodes[0];
+        }
+        free(rnd);
+      }
+      else
+        result = CURLE_OUT_OF_MEMORY;
+      free(nodes);
+    }
+    else
+      result = CURLE_OUT_OF_MEMORY;
+  }
+  return result;
+}
+
+/*
  * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
  *
  * When calling Curl_resolv() has resulted in a response with a returned
@@ -385,6 +451,13 @@
   struct Curl_dns_entry *dns;
   struct Curl_dns_entry *dns2;
 
+  /* shuffle addresses if requested */
+  if(data->set.dns_shuffle_addresses) {
+    CURLcode result = Curl_shuffle_addr(data, &addr);
+    if(!result)
+      return NULL;
+  }
+
   /* Create an entry id, based upon the hostname and port */
   entry_id = create_hostcache_id(hostname, port);
   /* If we can't create the entry id, fail */
@@ -481,6 +554,17 @@
     if(!Curl_ipvalid(conn))
       return CURLRESOLV_ERROR;
 
+    /* notify the resolver start callback */
+    if(data->set.resolver_start) {
+      int st;
+      Curl_set_in_callback(data, true);
+      st = data->set.resolver_start(data->state.resolver, NULL,
+                                    data->set.resolver_start_client);
+      Curl_set_in_callback(data, false);
+      if(st)
+        return CURLRESOLV_ERROR;
+    }
+
     /* If Curl_getaddrinfo() returns NULL, 'respwait' might be set to a
        non-zero value indicating that we need to wait for the response to the
        resolve call */
@@ -781,7 +865,7 @@
 {
   struct curl_slist *hostp;
   char hostname[256];
-  int port;
+  int port = 0;
 
   for(hostp = data->change.resolve; hostp; hostp = hostp->next) {
     if(!hostp->data)
@@ -819,32 +903,95 @@
     }
     else {
       struct Curl_dns_entry *dns;
-      Curl_addrinfo *addr;
+      Curl_addrinfo *head = NULL, *tail = NULL;
       char *entry_id;
       size_t entry_len;
-      char buffer[256];
-      char *address = &buffer[0];
+      char address[64];
+      char *addresses = NULL;
+      char *addr_begin;
+      char *addr_end;
+      char *port_ptr;
+      char *end_ptr;
+      char *host_end;
+      unsigned long tmp_port;
+      bool error = true;
 
-      if(3 != sscanf(hostp->data, "%255[^:]:%d:%255s", hostname, &port,
-                     address)) {
+      host_end = strchr(hostp->data, ':');
+      if(!host_end ||
+         ((host_end - hostp->data) >= (ptrdiff_t)sizeof(hostname)))
+        goto err;
+
+      memcpy(hostname, hostp->data, host_end - hostp->data);
+      hostname[host_end - hostp->data] = '\0';
+
+      port_ptr = host_end + 1;
+      tmp_port = strtoul(port_ptr, &end_ptr, 10);
+      if(tmp_port > USHRT_MAX || end_ptr == port_ptr || *end_ptr != ':')
+        goto err;
+
+      port = (int)tmp_port;
+      addresses = end_ptr + 1;
+
+      while(*end_ptr) {
+        size_t alen;
+        Curl_addrinfo *ai;
+
+        addr_begin = end_ptr + 1;
+        addr_end = strchr(addr_begin, ',');
+        if(!addr_end)
+          addr_end = addr_begin + strlen(addr_begin);
+        end_ptr = addr_end;
+
+        /* allow IP(v6) address within [brackets] */
+        if(*addr_begin == '[') {
+          if(addr_end == addr_begin || *(addr_end - 1) != ']')
+            goto err;
+          ++addr_begin;
+          --addr_end;
+        }
+
+        alen = addr_end - addr_begin;
+        if(!alen)
+          continue;
+
+        if(alen >= sizeof(address))
+          goto err;
+
+        memcpy(address, addr_begin, alen);
+        address[alen] = '\0';
+
+#ifndef ENABLE_IPV6
+        if(strchr(address, ':')) {
+          infof(data, "Ignoring resolve address '%s', missing IPv6 support.\n",
+                address);
+          continue;
+        }
+#endif
+
+        ai = Curl_str2addr(address, port);
+        if(!ai) {
+          infof(data, "Resolve address '%s' found illegal!\n", address);
+          goto err;
+        }
+
+        if(tail) {
+          tail->ai_next = ai;
+          tail = tail->ai_next;
+        }
+        else {
+          head = tail = ai;
+        }
+      }
+
+      if(!head)
+        goto err;
+
+      error = false;
+   err:
+      if(error) {
         infof(data, "Couldn't parse CURLOPT_RESOLVE entry '%s'!\n",
               hostp->data);
-        continue;
-      }
-
-      /* allow IP(v6) address within [brackets] */
-      if(address[0] == '[') {
-        size_t alen = strlen(address);
-        if(address[alen-1] != ']')
-          /* it needs to also end with ] to be valid */
-          continue;
-        address[alen-1] = 0; /* zero terminate there */
-        address++; /* pass the open bracket */
-      }
-
-      addr = Curl_str2addr(address, port);
-      if(!addr) {
-        infof(data, "Address in '%s' found illegal!\n", hostp->data);
+        Curl_freeaddrinfo(head);
         continue;
       }
 
@@ -852,10 +999,9 @@
       entry_id = create_hostcache_id(hostname, port);
       /* If we can't create the entry id, fail */
       if(!entry_id) {
-        Curl_freeaddrinfo(addr);
+        Curl_freeaddrinfo(head);
         return CURLE_OUT_OF_MEMORY;
       }
-
       entry_len = strlen(entry_id);
 
       if(data->share)
@@ -869,7 +1015,7 @@
 
       if(!dns) {
         /* if not in the cache already, put this host in the cache */
-        dns = Curl_cache_addr(data, addr, hostname, port);
+        dns = Curl_cache_addr(data, head, hostname, port);
         if(dns) {
           dns->timestamp = 0; /* mark as added by CURLOPT_RESOLVE */
           /* release the returned reference; the cache itself will keep the
@@ -880,19 +1026,19 @@
       else {
         /* this is a duplicate, free it again */
         infof(data, "RESOLVE %s:%d is already cached, %s not stored!\n",
-              hostname, port, address);
-        Curl_freeaddrinfo(addr);
+              hostname, port, addresses);
+        Curl_freeaddrinfo(head);
       }
 
       if(data->share)
         Curl_share_unlock(data, CURL_LOCK_DATA_DNS);
 
       if(!dns) {
-        Curl_freeaddrinfo(addr);
+        Curl_freeaddrinfo(head);
         return CURLE_OUT_OF_MEMORY;
       }
       infof(data, "Added %s:%d:%s to DNS cache\n",
-            hostname, port, address);
+            hostname, port, addresses);
     }
   }
   data->change.resolve = NULL; /* dealt with now */
diff --git a/lib/hostip.h b/lib/hostip.h
index 298eeee..1de4bee 100644
--- a/lib/hostip.h
+++ b/lib/hostip.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -182,6 +182,17 @@
 Curl_fetch_addr(struct connectdata *conn,
                 const char *hostname,
                 int port);
+
+/*
+ * Curl_shuffle_addr() shuffles the order of addresses in a 'Curl_addrinfo'
+ * struct by re-linking its linked list.
+ *
+ * The addr argument should be the address of a pointer to the head node of a
+ * `Curl_addrinfo` list and it will be modified to point to the new head after
+ * shuffling.
+ */
+CURLcode Curl_shuffle_addr(struct Curl_easy *data, Curl_addrinfo **addr);
+
 /*
  * Curl_cache_addr() stores a 'Curl_addrinfo' struct in the DNS cache.
  *
diff --git a/lib/http.c b/lib/http.c
index a500767..ff1d681 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -92,6 +92,8 @@
                            int numsocks);
 static int http_should_fail(struct connectdata *conn);
 
+static CURLcode add_haproxy_protocol_header(struct connectdata *conn);
+
 #ifdef USE_SSL
 static CURLcode https_connecting(struct connectdata *conn, bool *done);
 static int https_getsock(struct connectdata *conn,
@@ -177,9 +179,9 @@
  * if proxy headers are not available, then it will lookup into http header
  * link list
  *
- * It takes a connectdata struct as input instead of the Curl_easy simply
- * to know if this is a proxy request or not, as it then might check a
- * different header list.
+ * It takes a connectdata struct as input instead of the Curl_easy simply to
+ * know if this is a proxy request or not, as it then might check a different
+ * header list. Provide the header prefix without colon!.
  */
 char *Curl_checkProxyheaders(const struct connectdata *conn,
                              const char *thisheader)
@@ -191,7 +193,8 @@
   for(head = (conn->bits.proxy && data->set.sep_headers) ?
         data->set.proxyheaders : data->set.headers;
       head; head = head->next) {
-    if(strncasecompare(head->data, thisheader, thislen))
+    if(strncasecompare(head->data, thisheader, thislen) &&
+       Curl_headersep(head->data[thislen]))
       return head->data;
   }
 
@@ -211,8 +214,6 @@
   char *value;
   size_t len;
 
-  DEBUGASSERT(header);
-
   /* Find the end of the header name */
   while(*header && (*header != ':'))
     ++header;
@@ -432,7 +433,7 @@
            data left to send, keep on sending. */
 
         /* rewind data when completely done sending! */
-        if(!conn->bits.authneg) {
+        if(!conn->bits.authneg && (conn->writesockfd != CURL_SOCKET_BAD)) {
           conn->bits.rewindaftersend = TRUE;
           infof(data, "Rewind stream after send\n");
         }
@@ -614,9 +615,9 @@
   if(authstatus->picked == CURLAUTH_BASIC) {
     /* Basic */
     if((proxy && conn->bits.proxy_user_passwd &&
-        !Curl_checkProxyheaders(conn, "Proxy-authorization:")) ||
+        !Curl_checkProxyheaders(conn, "Proxy-authorization")) ||
        (!proxy && conn->bits.user_passwd &&
-        !Curl_checkheaders(conn, "Authorization:"))) {
+        !Curl_checkheaders(conn, "Authorization"))) {
       auth = "Basic";
       result = http_output_basic(conn, proxy);
       if(result)
@@ -1357,6 +1358,13 @@
     /* nothing else to do except wait right now - we're not done here. */
     return CURLE_OK;
 
+  if(conn->data->set.haproxyprotocol) {
+    /* add HAProxy PROXY protocol header */
+    result = add_haproxy_protocol_header(conn);
+    if(result)
+      return result;
+  }
+
   if(conn->given->protocol & CURLPROTO_HTTPS) {
     /* perform SSL initialization */
     result = https_connecting(conn, done);
@@ -1382,6 +1390,47 @@
   return GETSOCK_WRITESOCK(0);
 }
 
+static CURLcode add_haproxy_protocol_header(struct connectdata *conn)
+{
+  char proxy_header[128];
+  Curl_send_buffer *req_buffer;
+  CURLcode result;
+  char tcp_version[5];
+
+  /* Emit the correct prefix for IPv6 */
+  if(conn->bits.ipv6) {
+    strcpy(tcp_version, "TCP6");
+  }
+  else {
+    strcpy(tcp_version, "TCP4");
+  }
+
+  snprintf(proxy_header,
+           sizeof proxy_header,
+           "PROXY %s %s %s %li %li\r\n",
+           tcp_version,
+           conn->data->info.conn_local_ip,
+           conn->data->info.conn_primary_ip,
+           conn->data->info.conn_local_port,
+           conn->data->info.conn_primary_port);
+
+  req_buffer = Curl_add_buffer_init();
+  if(!req_buffer)
+    return CURLE_OUT_OF_MEMORY;
+
+  result = Curl_add_bufferf(req_buffer, proxy_header);
+  if(result)
+    return result;
+
+  result = Curl_add_buffer_send(req_buffer,
+                                conn,
+                                &conn->data->info.request_size,
+                                0,
+                                FIRSTSOCKET);
+
+  return result;
+}
+
 #ifdef USE_SSL
 static CURLcode https_connecting(struct connectdata *conn, bool *done)
 {
@@ -1533,7 +1582,7 @@
     /* if not doing HTTP 1.0 or version 2, or disabled explicitly, we add an
        Expect: 100-continue to the headers which actually speeds up post
        operations (as there is one packet coming back from the web server) */
-    ptr = Curl_checkheaders(conn, "Expect:");
+    ptr = Curl_checkheaders(conn, "Expect");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
@@ -1598,7 +1647,32 @@
     headers = h[i];
 
     while(headers) {
+      char *semicolonp = NULL;
       ptr = strchr(headers->data, ':');
+      if(!ptr) {
+        char *optr;
+        /* no colon, semicolon? */
+        ptr = strchr(headers->data, ';');
+        if(ptr) {
+          optr = ptr;
+          ptr++; /* pass the semicolon */
+          while(*ptr && ISSPACE(*ptr))
+            ptr++;
+
+          if(*ptr) {
+            /* this may be used for something else in the future */
+            optr = NULL;
+          }
+          else {
+            if(*(--ptr) == ';') {
+              /* send no-value custom header if terminated by semicolon */
+              *ptr = ':';
+              semicolonp = ptr;
+            }
+          }
+          ptr = optr;
+        }
+      }
       if(ptr) {
         /* we require a colon for this to be a true header */
 
@@ -1606,8 +1680,9 @@
         while(*ptr && ISSPACE(*ptr))
           ptr++;
 
-        if(*ptr) {
-          /* only send this if the contents was non-blank */
+        if(*ptr || semicolonp) {
+          /* only send this if the contents was non-blank or done special */
+          CURLcode result = CURLE_OK;
 
           if(conn->allocptr.host &&
              /* a Host: header was sent already, don't pass on any custom Host:
@@ -1645,40 +1720,12 @@
                    !strcasecompare(data->state.first_host, conn->host.name)))
             ;
           else {
-            CURLcode result = Curl_add_bufferf(req_buffer, "%s\r\n",
-                                               headers->data);
-            if(result)
-              return result;
+            result = Curl_add_bufferf(req_buffer, "%s\r\n", headers->data);
           }
-        }
-      }
-      else {
-        ptr = strchr(headers->data, ';');
-        if(ptr) {
-
-          ptr++; /* pass the semicolon */
-          while(*ptr && ISSPACE(*ptr))
-            ptr++;
-
-          if(*ptr) {
-            /* this may be used for something else in the future */
-          }
-          else {
-            if(*(--ptr) == ';') {
-              CURLcode result;
-
-              /* send no-value custom header if terminated by semicolon */
-              *ptr = ':';
-              result = Curl_add_bufferf(req_buffer, "%s\r\n",
-                                        headers->data);
-
-              /* restore the previous value */
-              *ptr = ';';
-
-              if(result)
-                return result;
-            }
-          }
+          if(semicolonp)
+            *semicolonp = ';'; /* put back the semicolon */
+          if(result)
+            return result;
         }
       }
       headers = headers->next;
@@ -1869,7 +1916,7 @@
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(conn, "User-Agent:")) {
+  if(Curl_checkheaders(conn, "User-Agent")) {
     free(conn->allocptr.uagent);
     conn->allocptr.uagent = NULL;
   }
@@ -1890,7 +1937,7 @@
     conn->bits.authneg = FALSE;
 
   Curl_safefree(conn->allocptr.ref);
-  if(data->change.referer && !Curl_checkheaders(conn, "Referer:")) {
+  if(data->change.referer && !Curl_checkheaders(conn, "Referer")) {
     conn->allocptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
     if(!conn->allocptr.ref)
       return CURLE_OUT_OF_MEMORY;
@@ -1899,11 +1946,11 @@
     conn->allocptr.ref = NULL;
 
 #if !defined(CURL_DISABLE_COOKIES)
-  if(data->set.str[STRING_COOKIE] && !Curl_checkheaders(conn, "Cookie:"))
+  if(data->set.str[STRING_COOKIE] && !Curl_checkheaders(conn, "Cookie"))
     addcookies = data->set.str[STRING_COOKIE];
 #endif
 
-  if(!Curl_checkheaders(conn, "Accept-Encoding:") &&
+  if(!Curl_checkheaders(conn, "Accept-Encoding") &&
      data->set.str[STRING_ENCODING]) {
     Curl_safefree(conn->allocptr.accept_encoding);
     conn->allocptr.accept_encoding =
@@ -1919,22 +1966,29 @@
 #ifdef HAVE_LIBZ
   /* we only consider transfer-encoding magic if libz support is built-in */
 
-  if(!Curl_checkheaders(conn, "TE:") &&
+  if(!Curl_checkheaders(conn, "TE") &&
      data->set.http_transfer_encoding) {
     /* When we are to insert a TE: header in the request, we must also insert
        TE in a Connection: header, so we need to merge the custom provided
        Connection: header and prevent the original to get sent. Note that if
        the user has inserted his/hers own TE: header we don't do this magic
        but then assume that the user will handle it all! */
-    char *cptr = Curl_checkheaders(conn, "Connection:");
+    char *cptr = Curl_checkheaders(conn, "Connection");
 #define TE_HEADER "TE: gzip\r\n"
 
     Curl_safefree(conn->allocptr.te);
 
-    /* Create the (updated) Connection: header */
-    conn->allocptr.te = cptr? aprintf("%s, TE\r\n" TE_HEADER, cptr):
-      strdup("Connection: TE\r\n" TE_HEADER);
+    if(cptr) {
+      cptr = Curl_copy_header_value(cptr);
+      if(!cptr)
+        return CURLE_OUT_OF_MEMORY;
+    }
 
+    /* Create the (updated) Connection: header */
+    conn->allocptr.te = aprintf("Connection: %s%sTE\r\n" TE_HEADER,
+                                cptr ? cptr : "", (cptr && *cptr) ? ", ":"");
+
+    free(cptr);
     if(!conn->allocptr.te)
       return CURLE_OUT_OF_MEMORY;
   }
@@ -1958,7 +2012,7 @@
   }
 
   if(http->sendit) {
-    const char *cthdr = Curl_checkheaders(conn, "Content-Type:");
+    const char *cthdr = Curl_checkheaders(conn, "Content-Type");
 
     /* Read and seek body only. */
     http->sendit->flags |= MIME_BODY_ONLY;
@@ -1982,7 +2036,7 @@
     http->postsize = Curl_mime_size(http->sendit);
   }
 
-  ptr = Curl_checkheaders(conn, "Transfer-Encoding:");
+  ptr = Curl_checkheaders(conn, "Transfer-Encoding");
   if(ptr) {
     /* Some kind of TE is requested, check if 'chunked' is chosen */
     data->req.upload_chunky =
@@ -2016,7 +2070,7 @@
 
   Curl_safefree(conn->allocptr.host);
 
-  ptr = Curl_checkheaders(conn, "Host:");
+  ptr = Curl_checkheaders(conn, "Host");
   if(ptr && (!data->state.this_is_a_follow ||
              strcasecompare(data->state.first_host, conn->host.name))) {
 #if !defined(CURL_DISABLE_COOKIES)
@@ -2055,7 +2109,7 @@
 #endif
 
     if(strcmp("Host:", ptr)) {
-      conn->allocptr.host = aprintf("%s\r\n", ptr);
+      conn->allocptr.host = aprintf("Host:%s\r\n", &ptr[5]);
       if(!conn->allocptr.host)
         return CURLE_OUT_OF_MEMORY;
     }
@@ -2078,7 +2132,7 @@
                                     host,
                                     conn->bits.ipv6_ip?"]":"");
     else
-      conn->allocptr.host = aprintf("Host: %s%s%s:%hu\r\n",
+      conn->allocptr.host = aprintf("Host: %s%s%s:%d\r\n",
                                     conn->bits.ipv6_ip?"[":"",
                                     host,
                                     conn->bits.ipv6_ip?"]":"",
@@ -2164,7 +2218,7 @@
   }
 #endif /* CURL_DISABLE_PROXY */
 
-  http->p_accept = Curl_checkheaders(conn, "Accept:")?NULL:"Accept: */*\r\n";
+  http->p_accept = Curl_checkheaders(conn, "Accept")?NULL:"Accept: */*\r\n";
 
   if((HTTPREQ_POST == httpreq || HTTPREQ_PUT == httpreq) &&
      data->state.resume_from) {
@@ -2191,8 +2245,10 @@
       /* Now, let's read off the proper amount of bytes from the
          input. */
       if(conn->seek_func) {
+        Curl_set_in_callback(data, true);
         seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
                                   SEEK_SET);
+        Curl_set_in_callback(data, false);
       }
 
       if(seekerr != CURL_SEEKFUNC_OK) {
@@ -2243,14 +2299,14 @@
      * ones if any such are specified.
      */
     if(((httpreq == HTTPREQ_GET) || (httpreq == HTTPREQ_HEAD)) &&
-       !Curl_checkheaders(conn, "Range:")) {
+       !Curl_checkheaders(conn, "Range")) {
       /* if a line like this was already allocated, free the previous one */
       free(conn->allocptr.rangeline);
       conn->allocptr.rangeline = aprintf("Range: bytes=%s\r\n",
                                          data->state.range);
     }
     else if((httpreq == HTTPREQ_POST || httpreq == HTTPREQ_PUT) &&
-            !Curl_checkheaders(conn, "Content-Range:")) {
+            !Curl_checkheaders(conn, "Content-Range")) {
 
       /* if a line like this was already allocated, free the previous one */
       free(conn->allocptr.rangeline);
@@ -2352,7 +2408,7 @@
                      conn->allocptr.ref:"" /* Referer: <data> */,
                      (conn->bits.httpproxy &&
                       !conn->bits.tunnel_proxy &&
-                      !Curl_checkProxyheaders(conn, "Proxy-Connection:"))?
+                      !Curl_checkProxyheaders(conn, "Proxy-Connection"))?
                      "Proxy-Connection: Keep-Alive\r\n":"",
                      te
       );
@@ -2453,7 +2509,7 @@
       postsize = data->state.infilesize;
 
     if((postsize != -1) && !data->req.upload_chunky &&
-       (conn->bits.authneg || !Curl_checkheaders(conn, "Content-Length:"))) {
+       (conn->bits.authneg || !Curl_checkheaders(conn, "Content-Length"))) {
       /* only add Content-Length if not uploading chunked */
       result = Curl_add_bufferf(req_buffer,
                                 "Content-Length: %" CURL_FORMAT_CURL_OFF_T
@@ -2515,7 +2571,7 @@
        we don't upload data chunked, as RFC2616 forbids us to set both
        kinds of headers (Transfer-Encoding: chunked and Content-Length) */
     if(postsize != -1 && !data->req.upload_chunky &&
-       (conn->bits.authneg || !Curl_checkheaders(conn, "Content-Length:"))) {
+       (conn->bits.authneg || !Curl_checkheaders(conn, "Content-Length"))) {
       /* we allow replacing this header if not during auth negotiation,
          although it isn't very wise to actually set your own */
       result = Curl_add_bufferf(req_buffer,
@@ -2540,7 +2596,7 @@
        the somewhat bigger ones we allow the app to disable it. Just make
        sure that the expect100header is always set to the preferred value
        here. */
-    ptr = Curl_checkheaders(conn, "Expect:");
+    ptr = Curl_checkheaders(conn, "Expect");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
@@ -2594,7 +2650,7 @@
        we don't upload data chunked, as RFC2616 forbids us to set both
        kinds of headers (Transfer-Encoding: chunked and Content-Length) */
     if((postsize != -1) && !data->req.upload_chunky &&
-       (conn->bits.authneg || !Curl_checkheaders(conn, "Content-Length:"))) {
+       (conn->bits.authneg || !Curl_checkheaders(conn, "Content-Length"))) {
       /* we allow replacing this header if not during auth negotiation,
          although it isn't very wise to actually set your own */
       result = Curl_add_bufferf(req_buffer,
@@ -2604,7 +2660,7 @@
         return result;
     }
 
-    if(!Curl_checkheaders(conn, "Content-Type:")) {
+    if(!Curl_checkheaders(conn, "Content-Type")) {
       result = Curl_add_bufferf(req_buffer,
                                 "Content-Type: application/"
                                 "x-www-form-urlencoded\r\n");
@@ -2616,7 +2672,7 @@
        the somewhat bigger ones we allow the app to disable it. Just make
        sure that the expect100header is always set to the preferred value
        here. */
-    ptr = Curl_checkheaders(conn, "Expect:");
+    ptr = Curl_checkheaders(conn, "Expect");
     if(ptr) {
       data->state.expect100header =
         Curl_compareheader(ptr, "Expect:", "100-continue");
@@ -2878,20 +2934,19 @@
                               struct SingleRequest *k,
                               size_t length)
 {
-  if(k->hbuflen + length >= data->state.headersize) {
+  size_t newsize = k->hbuflen + length;
+  if(newsize > CURL_MAX_HTTP_HEADER) {
+    /* The reason to have a max limit for this is to avoid the risk of a bad
+       server feeding libcurl with a never-ending header that will cause
+       reallocs infinitely */
+    failf(data, "Rejected %zd bytes header (max is %d)!", newsize,
+          CURL_MAX_HTTP_HEADER);
+    return CURLE_OUT_OF_MEMORY;
+  }
+  if(newsize >= data->state.headersize) {
     /* We enlarge the header buffer as it is too small */
     char *newbuff;
     size_t hbufp_index;
-    size_t newsize;
-
-    if(k->hbuflen + length > CURL_MAX_HTTP_HEADER) {
-      /* The reason to have a max limit for this is to avoid the risk of a bad
-         server feeding libcurl with a never-ending header that will cause
-         reallocs infinitely */
-      failf(data, "Avoided giant realloc for header (max is %d)!",
-            CURL_MAX_HTTP_HEADER);
-      return CURLE_OUT_OF_MEMORY;
-    }
 
     newsize = CURLMAX((k->hbuflen + length) * 3 / 2, data->state.headersize*2);
     hbufp_index = k->hbufp - data->state.headerbuff;
@@ -2959,6 +3014,8 @@
 {
   CURLcode result;
   struct SingleRequest *k = &data->req;
+  ssize_t onread = *nread;
+  char *ostr = k->str;
 
   /* header line within buffer loop */
   do {
@@ -3023,7 +3080,9 @@
         else {
           /* this was all we read so it's all a bad header */
           k->badheader = HEADER_ALLBAD;
-          *nread = (ssize_t)rest_length;
+          *nread = onread;
+          k->str = ostr;
+          return CURLE_OK;
         }
         break;
       }
@@ -3677,7 +3736,7 @@
       Curl_share_lock(data, CURL_LOCK_DATA_COOKIE,
                       CURL_LOCK_ACCESS_SINGLE);
       Curl_cookie_add(data,
-                      data->cookies, TRUE, k->p + 11,
+                      data->cookies, TRUE, FALSE, k->p + 11,
                       /* If there is a custom-set Host: name, use it
                          here, or else use real peer host name. */
                       conn->allocptr.cookiehost?
@@ -3692,7 +3751,7 @@
       k->timeofdoc = curl_getdate(k->p + strlen("Last-Modified:"),
                                   &secs);
       if(data->set.get_filetime)
-        data->info.filetime = (long)k->timeofdoc;
+        data->info.filetime = k->timeofdoc;
     }
     else if((checkprefix("WWW-Authenticate:", k->p) &&
              (401 == k->httpcode)) ||
diff --git a/lib/http.h b/lib/http.h
index d2781bc..1d373e8 100644
--- a/lib/http.h
+++ b/lib/http.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -104,7 +104,7 @@
 
    This value used to be fairly big (100K), but we must take into account that
    if the server rejects the POST due for authentication reasons, this data
-   will always be uncondtionally sent and thus it may not be larger than can
+   will always be unconditionally sent and thus it may not be larger than can
    always be afforded to send twice.
 
    It must not be greater than 64K to work on VMS.
@@ -172,8 +172,6 @@
   size_t pauselen; /* the number of bytes left in data */
   bool closed; /* TRUE on HTTP2 stream close */
   bool close_handled; /* TRUE if stream closure is handled by libcurl */
-  uint32_t error_code; /* HTTP/2 error code */
-
   char *mem;     /* points to a buffer in memory to store received data */
   size_t len;    /* size of the buffer 'mem' points to */
   size_t memlen; /* size of data copied to mem */
@@ -188,9 +186,6 @@
 #endif
 };
 
-typedef int (*sending)(void); /* Curl_send */
-typedef int (*recving)(void); /* Curl_recv */
-
 #ifdef USE_NGHTTP2
 /* h2 settings for this connection */
 struct h2settings {
@@ -199,15 +194,14 @@
 };
 #endif
 
-
 struct http_conn {
 #ifdef USE_NGHTTP2
 #define H2_BINSETTINGS_LEN 80
   nghttp2_session *h2;
   uint8_t binsettings[H2_BINSETTINGS_LEN];
   size_t  binlen; /* length of the binsettings data */
-  sending send_underlying; /* underlying send Curl_send callback */
-  recving recv_underlying; /* underlying recv Curl_recv callback */
+  Curl_send *send_underlying; /* underlying send Curl_send callback */
+  Curl_recv *recv_underlying; /* underlying recv Curl_recv callback */
   char *inbuf; /* buffer to receive data from underlying socket */
   size_t inbuflen; /* number of bytes filled in inbuf */
   size_t nread_inbuf; /* number of bytes read from in inbuf */
@@ -226,6 +220,7 @@
   /* list of settings that will be sent */
   nghttp2_settings_entry local_settings[3];
   size_t local_settings_num;
+  uint32_t error_code; /* HTTP/2 error code */
 #else
   int unused; /* prevent a compiler warning */
 #endif
diff --git a/lib/http2.c b/lib/http2.c
index 6992879..da001df 100644
--- a/lib/http2.c
+++ b/lib/http2.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -41,6 +41,7 @@
 #include "curl_memory.h"
 #include "memdebug.h"
 
+#define H2_BUFSIZE 32768
 #define MIN(x,y) ((x)<(y)?(x):(y))
 
 #if (NGHTTP2_VERSION_NUM < 0x010000)
@@ -65,6 +66,22 @@
 
 #define HTTP2_HUGE_WINDOW_SIZE (1 << 30)
 
+#ifdef DEBUG_HTTP2
+#define H2BUGF(x) x
+#else
+#define H2BUGF(x) do { } WHILE_FALSE
+#endif
+
+
+static ssize_t http2_recv(struct connectdata *conn, int sockindex,
+                          char *mem, size_t len, CURLcode *err);
+static bool http2_connisdead(struct connectdata *conn);
+static int h2_session_send(struct Curl_easy *data,
+                           nghttp2_session *h2);
+static int h2_process_pending_input(struct connectdata *conn,
+                                    struct http_conn *httpc,
+                                    CURLcode *err);
+
 /*
  * Curl_http2_init_state() is called when the easy handle is created and
  * allows for HTTP/2 specific init of state.
@@ -91,6 +108,7 @@
                                  int numsocks)
 {
   const struct http_conn *c = &conn->proto.httpc;
+  struct SingleRequest *k = &conn->data->req;
   int bitmap = GETSOCK_BLANK;
   (void)numsocks;
 
@@ -102,7 +120,9 @@
      always be ready for one */
   bitmap |= GETSOCK_READSOCK(FIRSTSOCKET);
 
-  if(nghttp2_session_want_write(c->h2))
+  /* we're still uploading or the HTTP/2 layer wants to send data */
+  if(((k->keepon & (KEEP_SEND|KEEP_SEND_PAUSE)) == KEEP_SEND) ||
+     nghttp2_session_want_write(c->h2))
     bitmap |= GETSOCK_WRITESOCK(FIRSTSOCKET);
 
   return bitmap;
@@ -140,13 +160,14 @@
   struct http_conn *c = &conn->proto.httpc;
   (void)dead_connection;
 
-  DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT starts now\n"));
+  H2BUGF(infof(conn->data, "HTTP/2 DISCONNECT starts now\n"));
 
   nghttp2_session_del(c->h2);
   Curl_safefree(c->inbuf);
   http2_stream_free(conn->data->req.protop);
+  conn->data->state.drain = 0;
 
-  DEBUGF(infof(conn->data, "HTTP/2 DISCONNECT done\n"));
+  H2BUGF(infof(conn->data, "HTTP/2 DISCONNECT done\n"));
 
   return CURLE_OK;
 }
@@ -158,29 +179,54 @@
  * Instead, if it is readable, run Curl_connalive() to peek at the socket
  * and distinguish between closed and data.
  */
-static bool http2_connisdead(struct connectdata *check)
+static bool http2_connisdead(struct connectdata *conn)
 {
   int sval;
-  bool ret_val = TRUE;
+  bool dead = TRUE;
 
-  sval = SOCKET_READABLE(check->sock[FIRSTSOCKET], 0);
+  if(conn->bits.close)
+    return TRUE;
+
+  sval = SOCKET_READABLE(conn->sock[FIRSTSOCKET], 0);
   if(sval == 0) {
     /* timeout */
-    ret_val = FALSE;
+    dead = FALSE;
   }
   else if(sval & CURL_CSELECT_ERR) {
     /* socket is in an error state */
-    ret_val = TRUE;
+    dead = TRUE;
   }
   else if(sval & CURL_CSELECT_IN) {
     /* readable with no error. could still be closed */
-    ret_val = !Curl_connalive(check);
+    dead = !Curl_connalive(conn);
+    if(!dead) {
+      /* This happens before we've sent off a request and the connection is
+         not in use by any other thransfer, there shouldn't be any data here,
+         only "protocol frames" */
+      CURLcode result;
+      struct http_conn *httpc = &conn->proto.httpc;
+      ssize_t nread = -1;
+      if(httpc->recv_underlying)
+        /* if called "too early", this pointer isn't setup yet! */
+        nread = ((Curl_recv *)httpc->recv_underlying)(
+          conn, FIRSTSOCKET, httpc->inbuf, H2_BUFSIZE, &result);
+      if(nread != -1) {
+        infof(conn->data,
+              "%d bytes stray data read before trying h2 connection\n",
+              (int)nread);
+        httpc->nread_inbuf = 0;
+        httpc->inbuflen = nread;
+        (void)h2_process_pending_input(conn, httpc, &result);
+      }
+      else
+        /* the read failed so let's say this is dead anyway */
+        dead = TRUE;
+    }
   }
 
-  return ret_val;
+  return dead;
 }
 
-
 static unsigned int http2_conncheck(struct connectdata *check,
                                     unsigned int checks_to_perform)
 {
@@ -204,7 +250,6 @@
   http->status_code = -1;
   http->pausedata = NULL;
   http->pauselen = 0;
-  http->error_code = NGHTTP2_NO_ERROR;
   http->closed = FALSE;
   http->close_handled = FALSE;
   http->mem = data->state.buffer;
@@ -217,6 +262,7 @@
 {
   conn->proto.httpc.settings.max_concurrent_streams =
     DEFAULT_MAX_CONCURRENT_STREAMS;
+  conn->proto.httpc.error_code = NGHTTP2_NO_ERROR;
 }
 
 /*
@@ -428,7 +474,7 @@
                         const nghttp2_push_promise *frame)
 {
   int rv;
-  DEBUGF(infof(data, "PUSH_PROMISE received, stream %u!\n",
+  H2BUGF(infof(data, "PUSH_PROMISE received, stream %u!\n",
                frame->promised_stream_id));
   if(data->multi->push_cb) {
     struct HTTP *stream;
@@ -448,7 +494,7 @@
     heads.data = data;
     heads.frame = frame;
     /* ask the application */
-    DEBUGF(infof(data, "Got PUSH_PROMISE, ask application!\n"));
+    H2BUGF(infof(data, "Got PUSH_PROMISE, ask application!\n"));
 
     stream = data->req.protop;
     if(!stream) {
@@ -458,9 +504,11 @@
       goto fail;
     }
 
+    Curl_set_in_callback(data, true);
     rv = data->multi->push_cb(data, newhandle,
                               stream->push_headers_used, &heads,
                               data->multi->push_userp);
+    Curl_set_in_callback(data, false);
 
     /* free the headers again */
     for(i = 0; i<stream->push_headers_used; i++)
@@ -497,7 +545,7 @@
                                          frame->promised_stream_id, newhandle);
   }
   else {
-    DEBUGF(infof(data, "Got PUSH_PROMISE, ignore it!\n"));
+    H2BUGF(infof(data, "Got PUSH_PROMISE, ignore it!\n"));
     rv = 1;
   }
   fail:
@@ -511,7 +559,6 @@
   struct http_conn *httpc = &conn->proto.httpc;
   struct Curl_easy *data_s = NULL;
   struct HTTP *stream = NULL;
-  static int lastStream = -1;
   int rv;
   size_t left, ncopy;
   int32_t stream_id = frame->hd.stream_id;
@@ -520,32 +567,30 @@
     /* stream ID zero is for connection-oriented stuff */
     if(frame->hd.type == NGHTTP2_SETTINGS) {
       uint32_t max_conn = httpc->settings.max_concurrent_streams;
-      DEBUGF(infof(conn->data, "Got SETTINGS\n"));
+      H2BUGF(infof(conn->data, "Got SETTINGS\n"));
       httpc->settings.max_concurrent_streams =
         nghttp2_session_get_remote_settings(
           session, NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS);
       httpc->settings.enable_push =
         nghttp2_session_get_remote_settings(
           session, NGHTTP2_SETTINGS_ENABLE_PUSH);
-      DEBUGF(infof(conn->data, "MAX_CONCURRENT_STREAMS == %d\n",
+      H2BUGF(infof(conn->data, "MAX_CONCURRENT_STREAMS == %d\n",
                    httpc->settings.max_concurrent_streams));
-      DEBUGF(infof(conn->data, "ENABLE_PUSH == %s\n",
+      H2BUGF(infof(conn->data, "ENABLE_PUSH == %s\n",
                    httpc->settings.enable_push?"TRUE":"false"));
       if(max_conn != httpc->settings.max_concurrent_streams) {
         /* only signal change if the value actually changed */
         infof(conn->data,
-              "Connection state changed (MAX_CONCURRENT_STREAMS updated)!\n");
+              "Connection state changed (MAX_CONCURRENT_STREAMS == %d)!\n",
+              httpc->settings.max_concurrent_streams);
         Curl_multi_connchanged(conn->data->multi);
       }
     }
     return 0;
   }
   data_s = nghttp2_session_get_stream_user_data(session, stream_id);
-  if(lastStream != stream_id) {
-    lastStream = stream_id;
-  }
   if(!data_s) {
-    DEBUGF(infof(conn->data,
+    H2BUGF(infof(conn->data,
                  "No Curl_easy associated with stream: %x\n",
                  stream_id));
     return 0;
@@ -553,12 +598,12 @@
 
   stream = data_s->req.protop;
   if(!stream) {
-    DEBUGF(infof(conn->data, "No proto pointer for stream: %x\n",
+    H2BUGF(infof(data_s, "No proto pointer for stream: %x\n",
                  stream_id));
     return NGHTTP2_ERR_CALLBACK_FAILURE;
   }
 
-  DEBUGF(infof(data_s, "on_frame_recv() header %x stream %x\n",
+  H2BUGF(infof(data_s, "on_frame_recv() header %x stream %x\n",
                frame->hd.type, stream_id));
 
   switch(frame->hd.type) {
@@ -581,8 +626,10 @@
     }
 
     /* nghttp2 guarantees that :status is received, and we store it to
-       stream->status_code */
-    DEBUGASSERT(stream->status_code != -1);
+       stream->status_code. Fuzzing has proven this can still be reached
+       without status code having been set. */
+    if(stream->status_code == -1)
+      return NGHTTP2_ERR_CALLBACK_FAILURE;
 
     /* Only final status code signals the end of header */
     if(stream->status_code / 100 != 1) {
@@ -600,7 +647,7 @@
            ncopy);
     stream->nread_header_recvbuf += ncopy;
 
-    DEBUGF(infof(data_s, "Store %zu bytes headers from stream %u at %p\n",
+    H2BUGF(infof(data_s, "Store %zu bytes headers from stream %u at %p\n",
                  ncopy, stream_id, stream->mem));
 
     stream->len -= ncopy;
@@ -629,7 +676,7 @@
     }
     break;
   default:
-    DEBUGF(infof(conn->data, "Got frame type %x for stream %u!\n",
+    H2BUGF(infof(data_s, "Got frame type %x for stream %u!\n",
                  frame->hd.type, stream_id));
     break;
   }
@@ -642,13 +689,13 @@
 {
   struct Curl_easy *data_s = NULL;
   (void)userp;
-#if !defined(DEBUGBUILD) || defined(CURL_DISABLE_VERBOSE_STRINGS)
+#if !defined(DEBUG_HTTP2) || defined(CURL_DISABLE_VERBOSE_STRINGS)
   (void)lib_error_code;
 #endif
 
   data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
   if(data_s) {
-    DEBUGF(infof(data_s,
+    H2BUGF(infof(data_s,
                  "on_invalid_frame_recv() was called, error=%d:%s\n",
                  lib_error_code, nghttp2_strerror(lib_error_code)));
   }
@@ -693,7 +740,7 @@
   if(conn->data != data_s)
     Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
 
-  DEBUGF(infof(data_s, "%zu data received for stream %u "
+  H2BUGF(infof(data_s, "%zu data received for stream %u "
                "(%zu left in buffer %p, total %zu)\n",
                nread, stream_id,
                stream->len, stream->mem,
@@ -702,7 +749,7 @@
   if(nread < len) {
     stream->pausedata = data + nread;
     stream->pauselen = len - nread;
-    DEBUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - %zu bytes out of buffer"
+    H2BUGF(infof(data_s, "NGHTTP2_ERR_PAUSE - %zu bytes out of buffer"
                  ", stream %u\n",
                  len - nread, stream_id));
     data_s->easy_conn->proto.httpc.pause_stream_id = stream_id;
@@ -730,7 +777,7 @@
 
   data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
   if(data_s) {
-    DEBUGF(infof(data_s, "before_frame_send() was called\n"));
+    H2BUGF(infof(data_s, "before_frame_send() was called\n"));
   }
 
   return 0;
@@ -744,7 +791,7 @@
 
   data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
   if(data_s) {
-    DEBUGF(infof(data_s, "on_frame_send() was called, length = %zd\n",
+    H2BUGF(infof(data_s, "on_frame_send() was called, length = %zd\n",
                  frame->hd.length));
   }
   return 0;
@@ -755,13 +802,13 @@
 {
   struct Curl_easy *data_s;
   (void)userp;
-#if !defined(DEBUGBUILD) || defined(CURL_DISABLE_VERBOSE_STRINGS)
+#if !defined(DEBUG_HTTP2) || defined(CURL_DISABLE_VERBOSE_STRINGS)
   (void)lib_error_code;
 #endif
 
   data_s = nghttp2_session_get_stream_user_data(session, frame->hd.stream_id);
   if(data_s) {
-    DEBUGF(infof(data_s,
+    H2BUGF(infof(data_s,
                  "on_frame_not_send() was called, lib_error_code = %d\n",
                  lib_error_code));
   }
@@ -777,6 +824,7 @@
   (void)stream_id;
 
   if(stream_id) {
+    struct http_conn *httpc;
     /* get the stream from the hash based on Stream ID, stream ID zero is for
        connection-oriented stuff */
     data_s = nghttp2_session_get_stream_user_data(session, stream_id);
@@ -785,20 +833,21 @@
          decided to reject stream (e.g., PUSH_PROMISE). */
       return 0;
     }
-    DEBUGF(infof(data_s, "on_stream_close(), %s (err %d), stream %u\n",
+    H2BUGF(infof(data_s, "on_stream_close(), %s (err %d), stream %u\n",
                  Curl_http2_strerror(error_code), error_code, stream_id));
     stream = data_s->req.protop;
     if(!stream)
       return NGHTTP2_ERR_CALLBACK_FAILURE;
 
-    stream->error_code = error_code;
     stream->closed = TRUE;
     data_s->state.drain++;
-    conn->proto.httpc.drain_total++;
+    httpc = &conn->proto.httpc;
+    httpc->drain_total++;
+    httpc->error_code = error_code;
 
     /* remove the entry from the hash as the stream is now gone */
     nghttp2_session_set_stream_user_data(session, stream_id, 0);
-    DEBUGF(infof(data_s, "Removed stream %u hash!\n", stream_id));
+    H2BUGF(infof(data_s, "Removed stream %u hash!\n", stream_id));
   }
   return 0;
 }
@@ -815,7 +864,7 @@
     return 0;
   }
 
-  DEBUGF(infof(data_s, "on_begin_headers() was called\n"));
+  H2BUGF(infof(data_s, "on_begin_headers() was called\n"));
 
   if(frame->hd.type != NGHTTP2_HEADERS) {
     return 0;
@@ -826,16 +875,12 @@
     return 0;
   }
 
-  /* This is trailer HEADERS started.  Allocate buffer for them. */
-  DEBUGF(infof(data_s, "trailer field started\n"));
-
-  DEBUGASSERT(stream->trailer_recvbuf == NULL);
-
-  stream->trailer_recvbuf = Curl_add_buffer_init();
   if(!stream->trailer_recvbuf) {
-    return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+    stream->trailer_recvbuf = Curl_add_buffer_init();
+    if(!stream->trailer_recvbuf) {
+      return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+    }
   }
-
   return 0;
 }
 
@@ -928,7 +973,7 @@
     /* 4 is for ": " and "\r\n". */
     uint32_t n = (uint32_t)(namelen + valuelen + 4);
 
-    DEBUGF(infof(data_s, "h2 trailer: %.*s: %.*s\n", namelen, name, valuelen,
+    H2BUGF(infof(data_s, "h2 trailer: %.*s: %.*s\n", namelen, name, valuelen,
                  value));
 
     Curl_add_buffer(stream->trailer_recvbuf, &n, sizeof(n));
@@ -956,7 +1001,7 @@
     if(conn->data != data_s)
       Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
 
-    DEBUGF(infof(data_s, "h2 status: HTTP/2 %03d (easy %p)\n",
+    H2BUGF(infof(data_s, "h2 status: HTTP/2 %03d (easy %p)\n",
                  stream->status_code, data_s));
     return 0;
   }
@@ -972,7 +1017,7 @@
   if(conn->data != data_s)
     Curl_expire(data_s, 0, EXPIRE_RUN_NOW);
 
-  DEBUGF(infof(data_s, "h2 header: %.*s: %.*s\n", namelen, name, valuelen,
+  H2BUGF(infof(data_s, "h2 header: %.*s: %.*s\n", namelen, name, valuelen,
                value));
 
   return 0; /* 0 is successful */
@@ -1021,15 +1066,13 @@
   else if(nread == 0)
     return NGHTTP2_ERR_DEFERRED;
 
-  DEBUGF(infof(data_s, "data_source_read_callback: "
+  H2BUGF(infof(data_s, "data_source_read_callback: "
                "returns %zu bytes stream %u\n",
                nread, stream_id));
 
   return nread;
 }
 
-#define H2_BUFSIZE 32768
-
 #ifdef NGHTTP2_HAS_ERROR_CALLBACK
 static int error_callback(nghttp2_session *session,
                           const char *msg,
@@ -1067,7 +1110,6 @@
   struct http_conn *httpc = &conn->proto.httpc;
 
   if(http->header_recvbuf) {
-    DEBUGF(infof(data, "free header_recvbuf!!\n"));
     Curl_add_buffer_free(http->header_recvbuf);
     http->header_recvbuf = NULL; /* clear the pointer */
     Curl_add_buffer_free(http->trailer_recvbuf);
@@ -1216,22 +1258,20 @@
     !nghttp2_session_want_write(httpc->h2);
 }
 
-static int h2_session_send(struct Curl_easy *data,
-                           nghttp2_session *h2);
-
 /*
  * h2_process_pending_input() processes pending input left in
  * httpc->inbuf.  Then, call h2_session_send() to send pending data.
  * This function returns 0 if it succeeds, or -1 and error code will
  * be assigned to *err.
  */
-static int h2_process_pending_input(struct Curl_easy *data,
+static int h2_process_pending_input(struct connectdata *conn,
                                     struct http_conn *httpc,
                                     CURLcode *err)
 {
   ssize_t nread;
   char *inbuf;
   ssize_t rv;
+  struct Curl_easy *data = conn->data;
 
   nread = httpc->inbuflen - httpc->nread_inbuf;
   inbuf = httpc->inbuf + httpc->nread_inbuf;
@@ -1246,7 +1286,7 @@
   }
 
   if(nread == rv) {
-    DEBUGF(infof(data,
+    H2BUGF(infof(data,
                  "h2_process_pending_input: All data in connection buffer "
                  "processed\n"));
     httpc->inbuflen = 0;
@@ -1254,7 +1294,7 @@
   }
   else {
     httpc->nread_inbuf += rv;
-    DEBUGF(infof(data,
+    H2BUGF(infof(data,
                  "h2_process_pending_input: %zu bytes left in connection "
                  "buffer\n",
                  httpc->inbuflen - httpc->nread_inbuf));
@@ -1267,9 +1307,15 @@
   }
 
   if(should_close_session(httpc)) {
-    DEBUGF(infof(data,
+    H2BUGF(infof(data,
                  "h2_process_pending_input: nothing to do in this session\n"));
-    *err = CURLE_HTTP2;
+    if(httpc->error_code)
+      *err = CURLE_HTTP2;
+    else {
+      /* not an error per se, but should still close the connection */
+      connclose(conn, "GOAWAY received");
+      *err = CURLE_OK;
+    }
     return -1;
   }
 
@@ -1300,7 +1346,7 @@
          that it can signal EOF to nghttp2 */
       (void)nghttp2_session_resume_data(h2, stream->stream_id);
 
-      (void)h2_process_pending_input(conn->data, httpc, &result);
+      (void)h2_process_pending_input(conn, httpc, &result);
     }
   }
   return result;
@@ -1324,7 +1370,7 @@
   data->state.drain = 0;
 
   if(httpc->pause_stream_id == 0) {
-    if(h2_process_pending_input(data, httpc, err) != 0) {
+    if(h2_process_pending_input(conn, httpc, err) != 0) {
       return -1;
     }
   }
@@ -1333,17 +1379,25 @@
 
   /* Reset to FALSE to prevent infinite loop in readwrite_data function. */
   stream->closed = FALSE;
-  if(stream->error_code != NGHTTP2_NO_ERROR) {
+  if(httpc->error_code == NGHTTP2_REFUSED_STREAM) {
+    H2BUGF(infof(data, "REFUSED_STREAM (%d), try again on a new connection!\n",
+                 stream->stream_id));
+    connclose(conn, "REFUSED_STREAM"); /* don't use this anymore */
+    data->state.refused_stream = TRUE;
+    *err = CURLE_RECV_ERROR; /* trigger Curl_retry_request() later */
+    return -1;
+  }
+  else if(httpc->error_code != NGHTTP2_NO_ERROR) {
     failf(data, "HTTP/2 stream %u was not closed cleanly: %s (err %d)",
-          stream->stream_id, Curl_http2_strerror(stream->error_code),
-          stream->error_code);
+          stream->stream_id, Curl_http2_strerror(httpc->error_code),
+          httpc->error_code);
     *err = CURLE_HTTP2_STREAM;
     return -1;
   }
 
   if(!stream->bodystarted) {
     failf(data, "HTTP/2 stream %u was closed cleanly, but before getting "
-          " all response header fields, teated as error",
+          " all response header fields, treated as error",
           stream->stream_id);
     *err = CURLE_HTTP2_STREAM;
     return -1;
@@ -1370,7 +1424,7 @@
 
   stream->close_handled = TRUE;
 
-  DEBUGF(infof(data, "http2_recv returns 0, http2_handle_stream_close\n"));
+  H2BUGF(infof(data, "http2_recv returns 0, http2_handle_stream_close\n"));
   return 0;
 }
 
@@ -1411,7 +1465,7 @@
 
     h2_pri_spec(data, &pri_spec);
 
-    DEBUGF(infof(data, "Queuing PRIORITY on stream %u (easy %p)\n",
+    H2BUGF(infof(data, "Queuing PRIORITY on stream %u (easy %p)\n",
                  stream->stream_id, data));
     rv = nghttp2_submit_priority(h2, NGHTTP2_FLAG_NONE, stream->stream_id,
                                  &pri_spec);
@@ -1435,7 +1489,7 @@
   (void)sockindex; /* we always do HTTP2 on sockindex 0 */
 
   if(should_close_session(httpc)) {
-    DEBUGF(infof(data,
+    H2BUGF(infof(data,
                  "http2_recv: nothing to do in this session\n"));
     *err = CURLE_HTTP2;
     return -1;
@@ -1461,16 +1515,16 @@
            ncopy);
     stream->nread_header_recvbuf += ncopy;
 
-    DEBUGF(infof(data, "http2_recv: Got %d bytes from header_recvbuf\n",
+    H2BUGF(infof(data, "http2_recv: Got %d bytes from header_recvbuf\n",
                  (int)ncopy));
     return ncopy;
   }
 
-  DEBUGF(infof(data, "http2_recv: easy %p (stream %u)\n",
+  H2BUGF(infof(data, "http2_recv: easy %p (stream %u)\n",
                data, stream->stream_id));
 
   if((data->state.drain) && stream->memlen) {
-    DEBUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u!! (%p => %p)\n",
+    H2BUGF(infof(data, "http2_recv: DRAIN %zu bytes stream %u!! (%p => %p)\n",
                  stream->memlen, stream->stream_id,
                  stream->mem, mem));
     if(mem != stream->mem) {
@@ -1484,7 +1538,7 @@
       /* We have paused nghttp2, but we have no pause data (see
          on_data_chunk_recv). */
       httpc->pause_stream_id = 0;
-      if(h2_process_pending_input(data, httpc, &result) != 0) {
+      if(h2_process_pending_input(conn, httpc, &result) != 0) {
         *err = result;
         return -1;
       }
@@ -1500,7 +1554,7 @@
 
     infof(data, "%zu data bytes written\n", nread);
     if(stream->pauselen == 0) {
-      DEBUGF(infof(data, "Unpaused by stream %u\n", stream->stream_id));
+      H2BUGF(infof(data, "Unpaused by stream %u\n", stream->stream_id));
       DEBUGASSERT(httpc->pause_stream_id == stream->stream_id);
       httpc->pause_stream_id = 0;
 
@@ -1514,12 +1568,12 @@
          frames, then we have to call it again with 0-length data.
          Without this, on_stream_close callback will not be called,
          and stream could be hanged. */
-      if(h2_process_pending_input(data, httpc, &result) != 0) {
+      if(h2_process_pending_input(conn, httpc, &result) != 0) {
         *err = result;
         return -1;
       }
     }
-    DEBUGF(infof(data, "http2_recv: returns unpaused %zd bytes on stream %u\n",
+    H2BUGF(infof(data, "http2_recv: returns unpaused %zd bytes on stream %u\n",
                  nread, stream->stream_id));
     return nread;
   }
@@ -1532,7 +1586,7 @@
        socket is not read.  But it seems that usually streams are
        notified with its drain property, and socket is read again
        quickly. */
-    DEBUGF(infof(data, "stream %x is paused, pause id: %x\n",
+    H2BUGF(infof(data, "stream %x is paused, pause id: %x\n",
                  stream->stream_id, httpc->pause_stream_id));
     *err = CURLE_AGAIN;
     return -1;
@@ -1561,12 +1615,12 @@
       }
 
       if(nread == 0) {
-        failf(data, "Unexpected EOF");
-        *err = CURLE_RECV_ERROR;
-        return -1;
+        H2BUGF(infof(data, "end of stream\n"));
+        *err = CURLE_OK;
+        return 0;
       }
 
-      DEBUGF(infof(data, "nread=%zd\n", nread));
+      H2BUGF(infof(data, "nread=%zd\n", nread));
 
       httpc->inbuflen = nread;
       inbuf = httpc->inbuf;
@@ -1575,7 +1629,7 @@
       nread = httpc->inbuflen - httpc->nread_inbuf;
       inbuf = httpc->inbuf + httpc->nread_inbuf;
 
-      DEBUGF(infof(data, "Use data left in connection buffer, nread=%zd\n",
+      H2BUGF(infof(data, "Use data left in connection buffer, nread=%zd\n",
                    nread));
     }
     rv = nghttp2_session_mem_recv(httpc->h2, (const uint8_t *)inbuf, nread);
@@ -1586,15 +1640,15 @@
       *err = CURLE_RECV_ERROR;
       return -1;
     }
-    DEBUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", rv));
+    H2BUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", rv));
     if(nread == rv) {
-      DEBUGF(infof(data, "All data in connection buffer processed\n"));
+      H2BUGF(infof(data, "All data in connection buffer processed\n"));
       httpc->inbuflen = 0;
       httpc->nread_inbuf = 0;
     }
     else {
       httpc->nread_inbuf += rv;
-      DEBUGF(infof(data, "%zu bytes left in connection buffer\n",
+      H2BUGF(infof(data, "%zu bytes left in connection buffer\n",
                    httpc->inbuflen - httpc->nread_inbuf));
     }
     /* Always send pending frames in nghttp2 session, because
@@ -1606,21 +1660,21 @@
     }
 
     if(should_close_session(httpc)) {
-      DEBUGF(infof(data, "http2_recv: nothing to do in this session\n"));
+      H2BUGF(infof(data, "http2_recv: nothing to do in this session\n"));
       *err = CURLE_HTTP2;
       return -1;
     }
   }
   if(stream->memlen) {
     ssize_t retlen = stream->memlen;
-    DEBUGF(infof(data, "http2_recv: returns %zd for stream %u\n",
+    H2BUGF(infof(data, "http2_recv: returns %zd for stream %u\n",
                  retlen, stream->stream_id));
     stream->memlen = 0;
 
     if(httpc->pause_stream_id == stream->stream_id) {
       /* data for this stream is returned now, but this stream caused a pause
          already so we need it called again asap */
-      DEBUGF(infof(data, "Data returned for PAUSED stream %u\n",
+      H2BUGF(infof(data, "Data returned for PAUSED stream %u\n",
                    stream->stream_id));
     }
     else if(!stream->closed) {
@@ -1637,7 +1691,7 @@
     return http2_handle_stream_close(conn, data, stream, err);
   }
   *err = CURLE_AGAIN;
-  DEBUGF(infof(data, "http2_recv returns AGAIN for stream %u\n",
+  H2BUGF(infof(data, "http2_recv returns AGAIN for stream %u\n",
                stream->stream_id));
   return -1;
 }
@@ -1739,7 +1793,7 @@
 
   (void)sockindex;
 
-  DEBUGF(infof(conn->data, "http2_send len=%zu\n", len));
+  H2BUGF(infof(conn->data, "http2_send len=%zu\n", len));
 
   if(stream->stream_id != -1) {
     if(stream->close_handled) {
@@ -1768,7 +1822,7 @@
     stream->upload_len = 0;
 
     if(should_close_session(httpc)) {
-      DEBUGF(infof(conn->data, "http2_send: nothing to do in this session\n"));
+      H2BUGF(infof(conn->data, "http2_send: nothing to do in this session\n"));
       *err = CURLE_HTTP2;
       return -1;
     }
@@ -1781,7 +1835,7 @@
       nghttp2_session_resume_data(h2, stream->stream_id);
     }
 
-    DEBUGF(infof(conn->data, "http2_send returns %zu for stream %u\n", len,
+    H2BUGF(infof(conn->data, "http2_send returns %zu for stream %u\n", len,
                  stream->stream_id));
     return len;
   }
@@ -1809,8 +1863,11 @@
     return -1;
   }
 
-  /* Extract :method, :path from request line */
-  line_end = strstr(hdbuf, "\r\n");
+  /* Extract :method, :path from request line
+     We do line endings with CRLF so checking for CR is enough */
+  line_end = memchr(hdbuf, '\r', len);
+  if(!line_end)
+    goto fail;
 
   /* Method does not contain spaces */
   end = memchr(hdbuf, ' ', line_end - hdbuf);
@@ -1868,8 +1925,10 @@
 
     hdbuf = line_end + 2;
 
-    line_end = strstr(hdbuf, "\r\n");
-    if(line_end == hdbuf)
+    /* check for next CR, but only within the piece of data left in the given
+       buffer */
+    line_end = memchr(hdbuf, '\r', len - (hdbuf - (char *)mem));
+    if(!line_end || (line_end == hdbuf))
       goto fail;
 
     /* header continuation lines are not supported */
@@ -1937,7 +1996,7 @@
     for(i = 0; i < nheader; ++i) {
       acc += nva[i].namelen + nva[i].valuelen;
 
-      DEBUGF(infof(conn->data, "h2 header: %.*s:%.*s\n",
+      H2BUGF(infof(conn->data, "h2 header: %.*s:%.*s\n",
                    nva[i].namelen, nva[i].name,
                    nva[i].valuelen, nva[i].value));
     }
@@ -1975,7 +2034,7 @@
   Curl_safefree(nva);
 
   if(stream_id < 0) {
-    DEBUGF(infof(conn->data, "http2_send() send error\n"));
+    H2BUGF(infof(conn->data, "http2_send() send error\n"));
     *err = CURLE_SEND_ERROR;
     return -1;
   }
@@ -1994,7 +2053,7 @@
   }
 
   if(should_close_session(httpc)) {
-    DEBUGF(infof(conn->data, "http2_send: nothing to do in this session\n"));
+    H2BUGF(infof(conn->data, "http2_send: nothing to do in this session\n"));
     *err = CURLE_HTTP2;
     return -1;
   }
@@ -2078,8 +2137,8 @@
   if(result)
     return result;
 
-  httpc->recv_underlying = (recving)conn->recv[FIRSTSOCKET];
-  httpc->send_underlying = (sending)conn->send[FIRSTSOCKET];
+  httpc->recv_underlying = conn->recv[FIRSTSOCKET];
+  httpc->send_underlying = conn->send[FIRSTSOCKET];
   conn->recv[FIRSTSOCKET] = http2_recv;
   conn->send[FIRSTSOCKET] = http2_send;
 
@@ -2152,7 +2211,7 @@
     return CURLE_HTTP2;
   }
 
-  DEBUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", nproc));
+  H2BUGF(infof(data, "nghttp2_session_mem_recv() returns %zd\n", nproc));
 
   if((ssize_t)nread == nproc) {
     httpc->inbuflen = 0;
@@ -2172,7 +2231,7 @@
   }
 
   if(should_close_session(httpc)) {
-    DEBUGF(infof(data,
+    H2BUGF(infof(data,
                  "nghttp2_session_send(): nothing to do in this session\n"));
     return CURLE_HTTP2;
   }
diff --git a/lib/http_chunks.c b/lib/http_chunks.c
index 1616429..18dfcb2 100644
--- a/lib/http_chunks.c
+++ b/lib/http_chunks.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -74,14 +74,18 @@
 
  */
 
+#ifdef CURL_DOES_CONVERSIONS
 /* Check for an ASCII hex digit.
- We avoid the use of isxdigit to accommodate non-ASCII hosts. */
-static bool Curl_isxdigit(char digit)
+   We avoid the use of ISXDIGIT to accommodate non-ASCII hosts. */
+static bool Curl_isxdigit_ascii(char digit)
 {
-  return ( (digit >= 0x30 && digit <= 0x39) /* 0-9 */
+  return (digit >= 0x30 && digit <= 0x39) /* 0-9 */
         || (digit >= 0x41 && digit <= 0x46) /* A-F */
-        || (digit >= 0x61 && digit <= 0x66) /* a-f */) ? TRUE : FALSE;
+        || (digit >= 0x61 && digit <= 0x66); /* a-f */
 }
+#else
+#define Curl_isxdigit_ascii(x) Curl_isxdigit(x)
+#endif
 
 void Curl_httpchunk_init(struct connectdata *conn)
 {
@@ -128,7 +132,7 @@
   while(length) {
     switch(ch->state) {
     case CHUNK_HEX:
-      if(Curl_isxdigit(*datap)) {
+      if(Curl_isxdigit_ascii(*datap)) {
         if(ch->hexindex < MAXNUM_SIZE) {
           ch->hexbuffer[ch->hexindex] = *datap;
           datap++;
@@ -187,15 +191,15 @@
       piece = curlx_sotouz((ch->datasize >= length)?length:ch->datasize);
 
       /* Write the data portion available */
-      if(conn->data->set.http_ce_skip || !k->writer_stack) {
-        if(!k->ignorebody)
+      if(!conn->data->set.http_te_skip && !k->ignorebody) {
+        if(!conn->data->set.http_ce_skip && k->writer_stack)
+          result = Curl_unencode_write(conn, k->writer_stack, datap, piece);
+        else
           result = Curl_client_write(conn, CLIENTWRITE_BODY, datap, piece);
-      }
-      else
-        result = Curl_unencode_write(conn, k->writer_stack, datap, piece);
 
-      if(result)
-        return CHUNKE_WRITE_ERROR;
+        if(result)
+          return CHUNKE_WRITE_ERROR;
+      }
 
       *wrote += piece;
       ch->datasize -= piece; /* decrease amount left to expect */
diff --git a/lib/http_negotiate.c b/lib/http_negotiate.c
index 51375e8..ddcd65b 100644
--- a/lib/http_negotiate.c
+++ b/lib/http_negotiate.c
@@ -89,7 +89,7 @@
     }
   }
 
-  /* Initilise the security context and decode our challenge */
+  /* Initialize the security context and decode our challenge */
   result = Curl_auth_decode_spnego_message(data, userp, passwdp, service,
                                            host, header, neg_ctx);
 
diff --git a/lib/http_ntlm.c b/lib/http_ntlm.c
index 0f1edcf..fd5540b 100644
--- a/lib/http_ntlm.c
+++ b/lib/http_ntlm.c
@@ -121,9 +121,11 @@
      server, which is for a plain host or for a HTTP proxy */
   char **allocuserpwd;
 
-  /* point to the name and password for this */
+  /* point to the username, password, service and host */
   const char *userp;
   const char *passwdp;
+  const char *service = NULL;
+  const char *hostname = NULL;
 
   /* point to the correct struct with this */
   struct ntlmdata *ntlm;
@@ -141,6 +143,9 @@
     allocuserpwd = &conn->allocptr.proxyuserpwd;
     userp = conn->http_proxy.user;
     passwdp = conn->http_proxy.passwd;
+    service = conn->data->set.str[STRING_PROXY_SERVICE_NAME] ?
+              conn->data->set.str[STRING_PROXY_SERVICE_NAME] : "HTTP";
+    hostname = conn->http_proxy.host.name;
     ntlm = &conn->proxyntlm;
     authp = &conn->data->state.authproxy;
   }
@@ -148,6 +153,9 @@
     allocuserpwd = &conn->allocptr.userpwd;
     userp = conn->user;
     passwdp = conn->passwd;
+    service = conn->data->set.str[STRING_SERVICE_NAME] ?
+              conn->data->set.str[STRING_SERVICE_NAME] : "HTTP";
+    hostname = conn->host.name;
     ntlm = &conn->ntlm;
     authp = &conn->data->state.authhost;
   }
@@ -174,7 +182,9 @@
   default: /* for the weird cases we (re)start here */
     /* Create a type-1 message */
     result = Curl_auth_create_ntlm_type1_message(conn->data, userp, passwdp,
-                                                 ntlm, &base64, &len);
+                                                 service, hostname,
+                                                 ntlm, &base64,
+                                                 &len);
     if(result)
       return result;
 
diff --git a/lib/http_proxy.c b/lib/http_proxy.c
index 7f50405..e10a488 100644
--- a/lib/http_proxy.c
+++ b/lib/http_proxy.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -221,7 +221,7 @@
       if(!req_buffer)
         return CURLE_OUT_OF_MEMORY;
 
-      host_port = aprintf("%s:%hu", hostname, remote_port);
+      host_port = aprintf("%s:%d", hostname, remote_port);
       if(!host_port) {
         Curl_add_buffer_free(req_buffer);
         return CURLE_OUT_OF_MEMORY;
@@ -245,14 +245,14 @@
         if(hostname != conn->host.name)
           ipv6_ip = (strchr(hostname, ':') != NULL);
         hostheader = /* host:port with IPv6 support */
-          aprintf("%s%s%s:%hu", ipv6_ip?"[":"", hostname, ipv6_ip?"]":"",
+          aprintf("%s%s%s:%d", ipv6_ip?"[":"", hostname, ipv6_ip?"]":"",
                   remote_port);
         if(!hostheader) {
           Curl_add_buffer_free(req_buffer);
           return CURLE_OUT_OF_MEMORY;
         }
 
-        if(!Curl_checkProxyheaders(conn, "Host:")) {
+        if(!Curl_checkProxyheaders(conn, "Host")) {
           host = aprintf("Host: %s\r\n", hostheader);
           if(!host) {
             free(hostheader);
@@ -260,10 +260,10 @@
             return CURLE_OUT_OF_MEMORY;
           }
         }
-        if(!Curl_checkProxyheaders(conn, "Proxy-Connection:"))
+        if(!Curl_checkProxyheaders(conn, "Proxy-Connection"))
           proxyconn = "Proxy-Connection: Keep-Alive\r\n";
 
-        if(!Curl_checkProxyheaders(conn, "User-Agent:") &&
+        if(!Curl_checkProxyheaders(conn, "User-Agent") &&
            data->set.str[STRING_USERAGENT])
           useragent = conn->allocptr.uagent;
 
diff --git a/lib/krb5.c b/lib/krb5.c
index 35a4ca0..8b5a247 100644
--- a/lib/krb5.c
+++ b/lib/krb5.c
@@ -85,7 +85,7 @@
 
   enc.value = buf;
   enc.length = len;
-  maj = gss_unseal(&min, *context, &enc, &dec, NULL, NULL);
+  maj = gss_unwrap(&min, *context, &enc, &dec, NULL, NULL);
   if(maj != GSS_S_COMPLETE) {
     if(len >= 4)
       strcpy(buf, "599 ");
@@ -119,11 +119,11 @@
   int len;
 
   /* NOTE that the cast is safe, neither of the krb5, gnu gss and heimdal
-   * libraries modify the input buffer in gss_seal()
+   * libraries modify the input buffer in gss_wrap()
    */
   dec.value = (void *)from;
   dec.length = length;
-  maj = gss_seal(&min, *context,
+  maj = gss_wrap(&min, *context,
                  level == PROT_PRIVATE,
                  GSS_C_QOP_DEFAULT,
                  &dec, &state, &enc);
diff --git a/lib/libcurl.plist b/lib/libcurl.plist
index 5b02d28..0410ad1 100644
--- a/lib/libcurl.plist
+++ b/lib/libcurl.plist
@@ -15,7 +15,7 @@
 	<string>se.haxx.curl.libcurl</string>
 
 	<key>CFBundleVersion</key>
-	<string>7.58.0</string>
+	<string>7.60.0</string>
 
 	<key>CFBundleName</key>
 	<string>libcurl</string>
@@ -27,9 +27,9 @@
 	<string>????</string>
 
 	<key>CFBundleShortVersionString</key>
-	<string>libcurl 7.58.0</string>
+	<string>libcurl 7.60.0</string>
 
 	<key>CFBundleGetInfoString</key>
-	<string>libcurl.plist 7.58.0</string>
+	<string>libcurl.plist 7.60.0</string>
 </dict>
 </plist>
diff --git a/lib/md5.c b/lib/md5.c
index 80301a1..3096602 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -484,6 +484,11 @@
 
 #endif /* CRYPTO LIBS */
 
+/* Disable this picky gcc-8 compiler warning */
+#if defined(__GNUC__) && (__GNUC__ >= 8)
+#pragma GCC diagnostic ignored "-Wcast-function-type"
+#endif
+
 const HMAC_params Curl_HMAC_MD5[] = {
   {
     (HMAC_hinit_func) MD5_Init,           /* Hash initialization function. */
diff --git a/lib/mime.c b/lib/mime.c
index e0853a9..4c0d2ee 100644
--- a/lib/mime.c
+++ b/lib/mime.c
@@ -51,10 +51,6 @@
 #endif
 
 
-#define FILE_CONTENTTYPE_DEFAULT        "application/octet-stream"
-#define MULTIPART_CONTENTTYPE_DEFAULT   "multipart/mixed"
-#define DISPOSITION_DEFAULT             "attachment"
-
 #define READ_ERROR                      ((size_t) -1)
 
 /* Encoders. */
@@ -245,7 +241,7 @@
 static char *Curl_basename(char *path)
 {
   /* Ignore all the details above for now and make a quick and simple
-     implementaion here */
+     implementation here */
   char *s1;
   char *s2;
 
@@ -1197,7 +1193,10 @@
   }
 
   /* Duplicate other fields. */
-  dst->encoder = src->encoder;
+  if(dst != NULL)
+    dst->encoder = src->encoder;
+  else
+    res = CURLE_WRITE_ERROR;
   if(!res)
     res = curl_mime_type(dst, src->mimetype);
   if(!res)
@@ -1206,7 +1205,7 @@
     res = curl_mime_filename(dst, src->filename);
 
   /* If an error occurred, rollback. */
-  if(res)
+  if(res && dst)
     Curl_mime_cleanpart(dst);
 
   return res;
@@ -1642,8 +1641,7 @@
                               boundary? boundary: "");
 }
 
-
-static const char *ContentTypeForFilename(const char *filename)
+const char *Curl_mime_contenttype(const char *filename)
 {
   unsigned int i;
 
@@ -1715,14 +1713,14 @@
       contenttype = MULTIPART_CONTENTTYPE_DEFAULT;
       break;
     case MIMEKIND_FILE:
-      contenttype = ContentTypeForFilename(part->filename);
+      contenttype = Curl_mime_contenttype(part->filename);
       if(!contenttype)
-        contenttype = ContentTypeForFilename(part->data);
+        contenttype = Curl_mime_contenttype(part->data);
       if(!contenttype && part->filename)
         contenttype = FILE_CONTENTTYPE_DEFAULT;
       break;
     default:
-      contenttype = ContentTypeForFilename(part->filename);
+      contenttype = Curl_mime_contenttype(part->filename);
       break;
     }
   }
diff --git a/lib/mime.h b/lib/mime.h
index 920a8a7..4d5c704 100644
--- a/lib/mime.h
+++ b/lib/mime.h
@@ -30,6 +30,10 @@
 #define MIME_USERHEADERS_OWNER  (1 << 0)
 #define MIME_BODY_ONLY          (1 << 1)
 
+#define FILE_CONTENTTYPE_DEFAULT        "application/octet-stream"
+#define MULTIPART_CONTENTTYPE_DEFAULT   "multipart/mixed"
+#define DISPOSITION_DEFAULT             "attachment"
+
 /* Part source kinds. */
 enum mimekind {
   MIMEKIND_NONE = 0,            /* Part not set. */
@@ -134,5 +138,6 @@
                       void *instream);
 CURLcode Curl_mime_rewind(curl_mimepart *part);
 CURLcode Curl_mime_add_header(struct curl_slist **slp, const char *fmt, ...);
+const char *Curl_mime_contenttype(const char *filename);
 
 #endif /* HEADER_CURL_MIME_H */
diff --git a/lib/mk-ca-bundle.vbs b/lib/mk-ca-bundle.vbs
index a9b983e..8da2792 100755
--- a/lib/mk-ca-bundle.vbs
+++ b/lib/mk-ca-bundle.vbs
@@ -314,7 +314,7 @@
   Set objRegExp = New RegExp                    ' create a regular expression.

   objRegExp.Pattern = SearchPattern             ' sets the search pattern.

   objRegExp.IgnoreCase = TRUE                   ' set to ignores case.

-  objRegExp.Global = TRUE                       ' set to gloabal search.

+  objRegExp.Global = TRUE                       ' set to global search.

   Set Matches = objRegExp.Execute(TheString)    ' do the search.

   If (Matches.Count) Then

     RegExprFirst = Matches(0).SubMatches(0)     ' return first match.

diff --git a/lib/multi.c b/lib/multi.c
index 43823cc..f852846 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -77,6 +77,7 @@
                                   struct Curl_easy *d);
 static CURLMcode multi_timeout(struct Curl_multi *multi,
                                long *timeout_ms);
+static void process_pending_handles(struct Curl_multi *multi);
 
 #ifdef DEBUGBUILD
 static const char * const statename[]={
@@ -366,6 +367,9 @@
   if(data->multi)
     return CURLM_ADDED_ALREADY;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   /* Initialize timeout list for this handle */
   Curl_llist_init(&data->state.timeoutlist, NULL);
 
@@ -375,6 +379,8 @@
    * potential multi's connection cache growing which won't be undone in this
    * function no matter what.
    */
+  if(data->set.errorbuffer)
+    data->set.errorbuffer[0] = 0;
 
   /* set the easy handle */
   multistate(data, CURLM_STATE_INIT);
@@ -535,13 +541,14 @@
       result = CURLE_ABORTED_BY_CALLBACK;
   }
 
-  if(conn->send_pipe.size + conn->recv_pipe.size != 0 &&
-     !data->set.reuse_forbid &&
-     !conn->bits.close) {
-    /* Stop if pipeline is not empty and we do not have to close
-       connection. */
+  process_pending_handles(data->multi); /* connection / multiplex */
+
+  if(conn->send_pipe.size || conn->recv_pipe.size) {
+    /* Stop if pipeline is not empty . */
     data->easy_conn = NULL;
-    DEBUGF(infof(data, "Connection still in use, no more multi_done now!\n"));
+    DEBUGF(infof(data, "Connection still in use %d/%d, "
+                 "no more multi_done now!\n",
+                 conn->send_pipe.size, conn->recv_pipe.size));
     return CURLE_OK;
   }
 
@@ -640,6 +647,9 @@
   if(!data->multi)
     return CURLM_OK; /* it is already removed so let's say it is fine! */
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   premature = (data->mstate < CURLM_STATE_COMPLETED) ? TRUE : FALSE;
   easy_owns_conn = (data->easy_conn && (data->easy_conn->data == easy)) ?
     TRUE : FALSE;
@@ -650,10 +660,6 @@
     /* this handle is "alive" so we need to count down the total number of
        alive connections when this is removed */
     multi->num_alive--;
-
-    /* When this handle gets removed, other handles may be able to get the
-       connection */
-    Curl_multi_process_pending_handles(multi);
   }
 
   if(data->easy_conn &&
@@ -903,6 +909,9 @@
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   data = multi->easyp;
   while(data) {
     bitmap = multi_getsock(data, sockbunch, MAX_SOCKSPEREASYHANDLE);
@@ -956,6 +965,9 @@
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   /* If the internally desired timeout is actually shorter than requested from
      the outside, then use the shorter time! But only if the internal timer
      is actually larger than -1! */
@@ -1121,6 +1133,9 @@
 {
   CURLMcode rc;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   rc = curl_multi_add_handle(multi, data);
   if(!rc) {
     struct SingleRequest *k = &data->req;
@@ -1327,7 +1342,7 @@
 
     if(multi_ischanged(multi, TRUE)) {
       DEBUGF(infof(data, "multi changed, check CONNECT_PEND queue!\n"));
-      Curl_multi_process_pending_handles(multi);
+      process_pending_handles(multi); /* pipelined/multiplexed */
     }
 
     if(data->easy_conn && data->mstate > CURLM_STATE_CONNECT &&
@@ -1773,16 +1788,17 @@
     case CURLM_STATE_DO_DONE:
       /* Move ourselves from the send to recv pipeline */
       Curl_move_handle_from_send_to_recv_pipe(data, data->easy_conn);
-      /* Check if we can move pending requests to send pipe */
-      Curl_multi_process_pending_handles(multi);
+
+      if(data->easy_conn->bits.multiplex || data->easy_conn->send_pipe.size)
+        /* Check if we can move pending requests to send pipe */
+        process_pending_handles(multi); /*  pipelined/multiplexed */
 
       /* Only perform the transfer if there's a good socket to work with.
          Having both BAD is a signal to skip immediately to DONE */
       if((data->easy_conn->sockfd != CURL_SOCKET_BAD) ||
          (data->easy_conn->writesockfd != CURL_SOCKET_BAD))
         multistate(data, CURLM_STATE_WAITPERFORM);
-      else
-      {
+      else {
         if(data->state.wildcardmatch &&
            ((data->easy_conn->handler->flags & PROTOPT_WILDCARD) == 0)) {
            data->wildcard.state = CURLWC_DONE;
@@ -1811,22 +1827,26 @@
       if(!result) {
         send_timeout_ms = 0;
         if(data->set.max_send_speed > 0)
-          send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded,
-                                data->progress.ul_limit_size,
-                                data->set.max_send_speed,
-                                data->progress.ul_limit_start,
-                                now);
+          send_timeout_ms =
+            Curl_pgrsLimitWaitTime(data->progress.uploaded,
+                                   data->progress.ul_limit_size,
+                                   data->set.max_send_speed,
+                                   data->progress.ul_limit_start,
+                                   now);
 
         recv_timeout_ms = 0;
         if(data->set.max_recv_speed > 0)
-          recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded,
-                                data->progress.dl_limit_size,
-                                data->set.max_recv_speed,
-                                data->progress.dl_limit_start,
-                                now);
+          recv_timeout_ms =
+            Curl_pgrsLimitWaitTime(data->progress.downloaded,
+                                   data->progress.dl_limit_size,
+                                   data->set.max_recv_speed,
+                                   data->progress.dl_limit_start,
+                                   now);
 
-        if(send_timeout_ms <= 0 && recv_timeout_ms <= 0)
+        if(!send_timeout_ms && !recv_timeout_ms) {
           multistate(data, CURLM_STATE_PERFORM);
+          Curl_ratelimit(data, now);
+        }
         else if(send_timeout_ms >= recv_timeout_ms)
           Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
         else
@@ -1858,7 +1878,8 @@
                                                  data->progress.dl_limit_start,
                                                  now);
 
-      if(send_timeout_ms > 0 || recv_timeout_ms > 0) {
+      if(send_timeout_ms || recv_timeout_ms) {
+        Curl_ratelimit(data, now);
         multistate(data, CURLM_STATE_TOOFAST);
         if(send_timeout_ms >= recv_timeout_ms)
           Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
@@ -1926,9 +1947,6 @@
         if(data->easy_conn->recv_pipe.head)
           Curl_expire(data->easy_conn->recv_pipe.head->ptr, 0, EXPIRE_RUN_NOW);
 
-        /* Check if we can move pending requests to send pipe */
-        Curl_multi_process_pending_handles(multi);
-
         /* When we follow redirects or is set to retry the connection, we must
            to go back to the CONNECT state */
         if(data->req.newurl || retry) {
@@ -1985,8 +2003,10 @@
 
         /* Remove ourselves from the receive pipeline, if we are there. */
         Curl_removeHandleFromPipeline(data, &data->easy_conn->recv_pipe);
-        /* Check if we can move pending requests to send pipe */
-        Curl_multi_process_pending_handles(multi);
+
+        if(data->easy_conn->bits.multiplex || data->easy_conn->send_pipe.size)
+          /* Check if we can move pending requests to connection */
+          process_pending_handles(multi); /* pipelined/multiplexing */
 
         /* post-transfer command */
         res = multi_done(&data->easy_conn, result, FALSE);
@@ -2054,7 +2074,7 @@
         data->state.pipe_broke = FALSE;
 
         /* Check if we can move pending requests to send pipe */
-        Curl_multi_process_pending_handles(multi);
+        process_pending_handles(multi); /* connection */
 
         if(data->easy_conn) {
           /* if this has a connection, unsubscribe from the pipelines */
@@ -2127,6 +2147,9 @@
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   data = multi->easyp;
   while(data) {
     CURLMcode result;
@@ -2174,6 +2197,9 @@
   struct Curl_easy *nextdata;
 
   if(GOOD_MULTI_HANDLE(multi)) {
+    if(multi->in_callback)
+      return CURLM_RECURSIVE_API_CALL;
+
     multi->type = 0; /* not good anymore */
 
     /* Firsrt remove all remaining easy handles */
@@ -2234,7 +2260,9 @@
 
   *msgs_in_queue = 0; /* default to none */
 
-  if(GOOD_MULTI_HANDLE(multi) && Curl_llist_count(&multi->msglist)) {
+  if(GOOD_MULTI_HANDLE(multi) &&
+     !multi->in_callback &&
+     Curl_llist_count(&multi->msglist)) {
     /* there is one or more messages in the list */
     struct curl_llist_element *e;
 
@@ -2396,6 +2424,12 @@
   data->numsocks = num;
 }
 
+void Curl_updatesocket(struct Curl_easy *data)
+{
+  singlesocket(data->multi, data);
+}
+
+
 /*
  * Curl_multi_closed()
  *
@@ -2624,6 +2658,9 @@
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   va_start(param, option);
 
   switch(option) {
@@ -2688,7 +2725,10 @@
 CURLMcode curl_multi_socket(struct Curl_multi *multi, curl_socket_t s,
                             int *running_handles)
 {
-  CURLMcode result = multi_socket(multi, FALSE, s, 0, running_handles);
+  CURLMcode result;
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+  result = multi_socket(multi, FALSE, s, 0, running_handles);
   if(CURLM_OK >= result)
     update_timer(multi);
   return result;
@@ -2697,8 +2737,10 @@
 CURLMcode curl_multi_socket_action(struct Curl_multi *multi, curl_socket_t s,
                                    int ev_bitmask, int *running_handles)
 {
-  CURLMcode result = multi_socket(multi, FALSE, s,
-                                  ev_bitmask, running_handles);
+  CURLMcode result;
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+  result = multi_socket(multi, FALSE, s, ev_bitmask, running_handles);
   if(CURLM_OK >= result)
     update_timer(multi);
   return result;
@@ -2707,8 +2749,10 @@
 CURLMcode curl_multi_socket_all(struct Curl_multi *multi, int *running_handles)
 
 {
-  CURLMcode result = multi_socket(multi, TRUE, CURL_SOCKET_BAD, 0,
-                                  running_handles);
+  CURLMcode result;
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+  result = multi_socket(multi, TRUE, CURL_SOCKET_BAD, 0, running_handles);
   if(CURLM_OK >= result)
     update_timer(multi);
   return result;
@@ -2760,6 +2804,9 @@
   if(!GOOD_MULTI_HANDLE(multi))
     return CURLM_BAD_HANDLE;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   return multi_timeout(multi, timeout_ms);
 }
 
@@ -2992,6 +3039,9 @@
 {
   struct Curl_sh_entry *there = NULL;
 
+  if(multi->in_callback)
+    return CURLM_RECURSIVE_API_CALL;
+
   there = sh_getentry(&multi->sockhash, s);
 
   if(!there)
@@ -3032,28 +3082,38 @@
   return &multi->pipelining_server_bl;
 }
 
-void Curl_multi_process_pending_handles(struct Curl_multi *multi)
+static void process_pending_handles(struct Curl_multi *multi)
 {
   struct curl_llist_element *e = multi->pending.head;
-
-  while(e) {
+  if(e) {
     struct Curl_easy *data = e->ptr;
-    struct curl_llist_element *next = e->next;
 
-    if(data->mstate == CURLM_STATE_CONNECT_PEND) {
-      multistate(data, CURLM_STATE_CONNECT);
+    DEBUGASSERT(data->mstate == CURLM_STATE_CONNECT_PEND);
 
-      /* Remove this node from the list */
-      Curl_llist_remove(&multi->pending, e, NULL);
+    multistate(data, CURLM_STATE_CONNECT);
 
-      /* Make sure that the handle will be processed soonish. */
-      Curl_expire(data, 0, EXPIRE_RUN_NOW);
-    }
+    /* Remove this node from the list */
+    Curl_llist_remove(&multi->pending, e, NULL);
 
-    e = next; /* operate on next handle */
+    /* Make sure that the handle will be processed soonish. */
+    Curl_expire(data, 0, EXPIRE_RUN_NOW);
   }
 }
 
+void Curl_set_in_callback(struct Curl_easy *easy, bool value)
+{
+  if(easy->multi_easy)
+    easy->multi_easy->in_callback = value;
+  else if(easy->multi)
+      easy->multi->in_callback = value;
+}
+
+bool Curl_is_in_callback(struct Curl_easy *easy)
+{
+  return ((easy->multi && easy->multi->in_callback) ||
+          (easy->multi_easy && easy->multi_easy->in_callback));
+}
+
 #ifdef DEBUGBUILD
 void Curl_multi_dump(struct Curl_multi *multi)
 {
diff --git a/lib/multihandle.h b/lib/multihandle.h
index de9a7cf..1a5017f 100644
--- a/lib/multihandle.h
+++ b/lib/multihandle.h
@@ -146,6 +146,7 @@
   void *timer_userp;
   struct curltime timer_lastcall; /* the fixed time for the timeout for the
                                     previous callback */
+  bool in_callback;            /* true while executing a callback */
 };
 
 #endif /* HEADER_CURL_MULTIHANDLE_H */
diff --git a/lib/multiif.h b/lib/multiif.h
index a877571..c8fb5ca 100644
--- a/lib/multiif.h
+++ b/lib/multiif.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,11 +26,14 @@
  * Prototypes for library-wide functions provided by multi.c
  */
 
+void Curl_updatesocket(struct Curl_easy *data);
 void Curl_expire(struct Curl_easy *data, time_t milli, expire_id);
 void Curl_expire_clear(struct Curl_easy *data);
 void Curl_expire_done(struct Curl_easy *data, expire_id id);
 bool Curl_pipeline_wanted(const struct Curl_multi* multi, int bits);
 void Curl_multi_handlePipeBreak(struct Curl_easy *data);
+void Curl_set_in_callback(struct Curl_easy *data, bool value);
+bool Curl_is_in_callback(struct Curl_easy *easy);
 
 /* Internal version of curl_multi_init() accepts size parameters for the
    socket and connection hashes */
@@ -56,8 +59,6 @@
 void Curl_multi_dump(struct Curl_multi *multi);
 #endif
 
-void Curl_multi_process_pending_handles(struct Curl_multi *multi);
-
 /* Return the value of the CURLMOPT_MAX_HOST_CONNECTIONS option */
 size_t Curl_multi_max_host_connections(struct Curl_multi *multi);
 
diff --git a/lib/non-ascii.c b/lib/non-ascii.c
index 92b2f8d..1414324 100644
--- a/lib/non-ascii.c
+++ b/lib/non-ascii.c
@@ -30,6 +30,7 @@
 #include "formdata.h"
 #include "sendf.h"
 #include "urldata.h"
+#include "multiif.h"
 
 #include "curl_memory.h"
 /* The last #include file should be: */
@@ -84,7 +85,10 @@
 {
   if(data && data->set.convtonetwork) {
     /* use translation callback */
-    CURLcode result = data->set.convtonetwork(buffer, length);
+    CURLcode result;
+    Curl_set_in_callback(data, true);
+    result = data->set.convtonetwork(buffer, length);
+    Curl_set_in_callback(data, false);
     if(result) {
       failf(data,
             "CURLOPT_CONV_TO_NETWORK_FUNCTION callback returned %d: %s",
@@ -147,7 +151,10 @@
 {
   if(data && data->set.convfromnetwork) {
     /* use translation callback */
-    CURLcode result = data->set.convfromnetwork(buffer, length);
+    CURLcode result;
+    Curl_set_in_callback(data, true);
+    result = data->set.convfromnetwork(buffer, length);
+    Curl_set_in_callback(data, false);
     if(result) {
       failf(data,
             "CURLOPT_CONV_FROM_NETWORK_FUNCTION callback returned %d: %s",
@@ -210,7 +217,10 @@
 {
   if(data && data->set.convfromutf8) {
     /* use translation callback */
-    CURLcode result = data->set.convfromutf8(buffer, length);
+    CURLcode result;
+    Curl_set_in_callback(data, true);
+    result = data->set.convfromutf8(buffer, length);
+    Curl_set_in_callback(data, false);
     if(result) {
       failf(data,
             "CURLOPT_CONV_FROM_UTF8_FUNCTION callback returned %d: %s",
diff --git a/lib/nwlib.c b/lib/nwlib.c
index 290cbe3..215d933 100644
--- a/lib/nwlib.c
+++ b/lib/nwlib.c
@@ -186,11 +186,9 @@
 
     app_data = (libdata_t *) get_app_data(id);
     if(!app_data) {
-      app_data = malloc(sizeof(libdata_t));
+      app_data = calloc(1, sizeof(libdata_t));
 
       if(app_data) {
-        memset(app_data, 0, sizeof(libdata_t));
-
         app_data->tenbytes = malloc(10);
         app_data->lock     = NXMutexAlloc(0, 0, &liblock);
 
diff --git a/lib/objnames.inc b/lib/objnames.inc
index 6a5b2a8..e362f6e 100644
--- a/lib/objnames.inc
+++ b/lib/objnames.inc
@@ -86,7 +86,7 @@
 # curl_8char_object_name
 #
 # Same as curl_10char_object_name() description and details above, except
-# that object name is limited to 8 charcters maximum.
+# that object name is limited to 8 characters maximum.
 #
 
 curl_8char_object_name() {
diff --git a/lib/openldap.c b/lib/openldap.c
index f2ffdfe..c6cb794 100644
--- a/lib/openldap.c
+++ b/lib/openldap.c
@@ -5,8 +5,8 @@
  *                | (__| |_| |  _ <| |___
  *                 \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010, 2017, Howard Chu, <hyc@openldap.org>
- * Copyright (C) 2011 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010, Howard Chu, <hyc@openldap.org>
+ * Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -221,7 +221,7 @@
   if(conn->handler->flags & PROTOPT_SSL)
     *ptr++ = 's';
   snprintf(ptr, sizeof(hosturl)-(ptr-hosturl), "://%s:%d",
-    conn->host.name, conn->remote_port);
+           conn->host.name, conn->remote_port);
 
 #ifdef CURL_OPENLDAP_DEBUG
   static int do_trace = 0;
@@ -286,7 +286,7 @@
 
   tvp = &tv;
 
-retry:
+  retry:
   if(!li->didbind) {
     char *binddn;
     struct berval passwd;
@@ -472,8 +472,8 @@
     return ret;
 
   for(ent = ldap_first_message(li->ld, msg); ent;
-    ent = ldap_next_message(li->ld, ent)) {
-    struct berval bv, *bvals, **bvp = &bvals;
+      ent = ldap_next_message(li->ld, ent)) {
+    struct berval bv, *bvals;
     int binary = 0, msgtype;
     CURLcode writeerr;
 
@@ -535,18 +535,40 @@
     }
     data->req.bytecount += bv.bv_len + 5;
 
-    for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp);
-      rc == LDAP_SUCCESS;
-      rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, bvp)) {
+    for(rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals);
+        rc == LDAP_SUCCESS;
+        rc = ldap_get_attribute_ber(li->ld, ent, ber, &bv, &bvals)) {
       int i;
 
-      if(bv.bv_val == NULL) break;
+      if(bv.bv_val == NULL)
+        break;
 
       if(bv.bv_len > 7 && !strncmp(bv.bv_val + bv.bv_len - 7, ";binary", 7))
         binary = 1;
       else
         binary = 0;
 
+      if(bvals == NULL) {
+        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
+        if(writeerr) {
+          *err = writeerr;
+          return -1;
+        }
+        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
+                                     bv.bv_len);
+        if(writeerr) {
+          *err = writeerr;
+          return -1;
+        }
+        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":\n", 2);
+        if(writeerr) {
+          *err = writeerr;
+          return -1;
+        }
+        data->req.bytecount += bv.bv_len + 3;
+        continue;
+      }
+
       for(i = 0; bvals[i].bv_val != NULL; i++) {
         int binval = 0;
         writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\t", 1);
@@ -555,24 +577,24 @@
           return -1;
         }
 
-       writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
-                                    bv.bv_len);
-       if(writeerr) {
-         *err = writeerr;
-         return -1;
-       }
+        writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)bv.bv_val,
+                                     bv.bv_len);
+        if(writeerr) {
+          *err = writeerr;
+          return -1;
+        }
 
         writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)":", 1);
-       if(writeerr) {
-         *err = writeerr;
-         return -1;
-       }
+        if(writeerr) {
+          *err = writeerr;
+          return -1;
+        }
         data->req.bytecount += bv.bv_len + 2;
 
         if(!binary) {
           /* check for leading or trailing whitespace */
           if(ISSPACE(bvals[i].bv_val[0]) ||
-              ISSPACE(bvals[i].bv_val[bvals[i].bv_len-1]))
+             ISSPACE(bvals[i].bv_val[bvals[i].bv_len-1]))
             binval = 1;
           else {
             /* check for unprintable characters */
@@ -610,7 +632,7 @@
           data->req.bytecount += 2;
           if(val_b64_sz > 0) {
             writeerr = Curl_client_write(conn, CLIENTWRITE_BODY, val_b64,
-                                     val_b64_sz);
+                                         val_b64_sz);
             if(writeerr) {
               *err = writeerr;
               return -1;
diff --git a/lib/parsedate.c b/lib/parsedate.c
index 0fabbd2..3d3c00b 100644
--- a/lib/parsedate.c
+++ b/lib/parsedate.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -119,6 +119,7 @@
 #define tDAYZONE -60       /* offset for daylight savings time */
 static const struct tzinfo tz[]= {
   {"GMT", 0},              /* Greenwich Mean */
+  {"UT",  0},              /* Universal Time */
   {"UTC", 0},              /* Universal (Coordinated) */
   {"WET", 0},              /* Western European */
   {"BST", 0 tDAYZONE},     /* British Summer */
@@ -276,26 +277,23 @@
   int tm_hour;
   int tm_mday;
   int tm_mon;
-  int tm_year;
+  int tm_year; /* full year */
 };
 
 /* struct tm to time since epoch in GMT time zone.
  * This is similar to the standard mktime function but for GMT only, and
  * doesn't suffer from the various bugs and portability problems that
  * some systems' implementations have.
+ *
+ * Returns 0 on success, otherwise non-zero.
  */
-static time_t my_timegm(struct my_tm *tm)
+static void my_timegm(struct my_tm *tm, time_t *t)
 {
   static const int month_days_cumulative [12] =
     { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
   int month, year, leap_days;
 
-  if(tm->tm_year < 70)
-    /* we don't support years before 1970 as they will cause this function
-       to return a negative value */
-    return -1;
-
-  year = tm->tm_year + 1900;
+  year = tm->tm_year;
   month = tm->tm_mon;
   if(month < 0) {
     year += (11 - month) / 12;
@@ -310,9 +308,9 @@
   leap_days = ((leap_days / 4) - (leap_days / 100) + (leap_days / 400)
                - (1969 / 4) + (1969 / 100) - (1969 / 400));
 
-  return ((((time_t) (year - 1970) * 365
-            + leap_days + month_days_cumulative [month] + tm->tm_mday - 1) * 24
-           + tm->tm_hour) * 60 + tm->tm_min) * 60 + tm->tm_sec;
+  *t = ((((time_t) (year - 1970) * 365
+          + leap_days + month_days_cumulative[month] + tm->tm_mday - 1) * 24
+         + tm->tm_hour) * 60 + tm->tm_min) * 60 + tm->tm_sec;
 }
 
 /*
@@ -436,7 +434,7 @@
           tzoff = (val/100 * 60 + val%100)*60;
 
           /* the + and - prefix indicates the local time compared to GMT,
-             this we need ther reversed math to get what we want */
+             this we need their reversed math to get what we want */
           tzoff = date[-1]=='+'?-tzoff:tzoff;
         }
 
@@ -462,7 +460,7 @@
         if(!found && (dignext == DATE_YEAR) && (yearnum == -1)) {
           yearnum = val;
           found = TRUE;
-          if(yearnum < 1900) {
+          if(yearnum < 100) {
             if(yearnum > 70)
               yearnum += 1900;
             else
@@ -491,18 +489,39 @@
     /* lacks vital info, fail */
     return PARSEDATE_FAIL;
 
-#if SIZEOF_TIME_T < 5
-  /* 32 bit time_t can only hold dates to the beginning of 2038 */
-  if(yearnum > 2037) {
-    *output = 0x7fffffff;
-    return PARSEDATE_LATER;
+#ifdef HAVE_TIME_T_UNSIGNED
+  if(yearnum < 1970) {
+    /* only positive numbers cannot return earlier */
+    *output = TIME_T_MIN;
+    return PARSEDATE_SOONER;
   }
 #endif
 
-  if(yearnum < 1970) {
-    *output = 0;
+#if (SIZEOF_TIME_T < 5)
+
+#ifdef HAVE_TIME_T_UNSIGNED
+  /* an unsigned 32 bit time_t can only hold dates to 2106 */
+  if(yearnum > 2105) {
+    *output = TIME_T_MAX;
+    return PARSEDATE_LATER;
+  }
+#else
+  /* a signed 32 bit time_t can only hold dates to the beginning of 2038 */
+  if(yearnum > 2037) {
+    *output = TIME_T_MAX;
+    return PARSEDATE_LATER;
+  }
+  if(yearnum < 1903) {
+    *output = TIME_T_MIN;
     return PARSEDATE_SOONER;
   }
+#endif
+
+#else
+  /* The Gregorian calendar was introduced 1582 */
+  if(yearnum < 1583)
+    return PARSEDATE_FAIL;
+#endif
 
   if((mdaynum > 31) || (monnum > 11) ||
      (hournum > 23) || (minnum > 59) || (secnum > 60))
@@ -513,31 +532,25 @@
   tm.tm_hour = hournum;
   tm.tm_mday = mdaynum;
   tm.tm_mon = monnum;
-  tm.tm_year = yearnum - 1900;
+  tm.tm_year = yearnum;
 
-  /* my_timegm() returns a time_t. time_t is often 32 bits, even on many
-     architectures that feature 64 bit 'long'.
-
-     Some systems have 64 bit time_t and deal with years beyond 2038. However,
-     even on some of the systems with 64 bit time_t mktime() returns -1 for
-     dates beyond 03:14:07 UTC, January 19, 2038. (Such as AIX 5100-06)
+  /* my_timegm() returns a time_t. time_t is often 32 bits, sometimes even on
+     architectures that feature 64 bit 'long' but ultimately time_t is the
+     correct data type to use.
   */
-  t = my_timegm(&tm);
+  my_timegm(&tm, &t);
 
-  /* time zone adjust (cast t to int to compare to negative one) */
-  if(-1 != (int)t) {
+  /* Add the time zone diff between local time zone and GMT. */
+  if(tzoff == -1)
+    tzoff = 0;
 
-    /* Add the time zone diff between local time zone and GMT. */
-    long delta = (long)(tzoff!=-1?tzoff:0);
-
-    if((delta>0) && (t > LONG_MAX - delta)) {
-      *output = 0x7fffffff;
-      return PARSEDATE_LATER; /* time_t overflow */
-    }
-
-    t += delta;
+  if((tzoff > 0) && (t > TIME_T_MAX - tzoff)) {
+    *output = TIME_T_MAX;
+    return PARSEDATE_LATER; /* time_t overflow */
   }
 
+  t += tzoff;
+
   *output = t;
 
   return PARSEDATE_OK;
@@ -549,10 +562,10 @@
   int rc = parsedate(p, &parsed);
   (void)now; /* legacy argument from the past that we ignore */
 
-  switch(rc) {
-  case PARSEDATE_OK:
-  case PARSEDATE_LATER:
-  case PARSEDATE_SOONER:
+  if(rc == PARSEDATE_OK) {
+    if(parsed == -1)
+      /* avoid returning -1 for a working scenario */
+      parsed++;
     return parsed;
   }
   /* everything else is fail */
diff --git a/lib/pingpong.c b/lib/pingpong.c
index 438856a..ad370ee 100644
--- a/lib/pingpong.c
+++ b/lib/pingpong.c
@@ -304,7 +304,10 @@
        * it would have been populated with something of size int to begin
        * with, even though its datatype may be larger than an int.
        */
-      DEBUGASSERT((ptr + pp->cache_size) <= (buf + data->set.buffer_size + 1));
+      if((ptr + pp->cache_size) > (buf + data->set.buffer_size + 1)) {
+        failf(data, "cached response data too big to handle");
+        return CURLE_RECV_ERROR;
+      }
       memcpy(ptr, pp->cache, pp->cache_size);
       gotbytes = (ssize_t)pp->cache_size;
       free(pp->cache);    /* free the cache */
diff --git a/lib/progress.c b/lib/progress.c
index cc5e8be..f59faa3 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -24,9 +24,13 @@
 
 #include "urldata.h"
 #include "sendf.h"
+#include "multiif.h"
 #include "progress.h"
 #include "curl_printf.h"
 
+/* check rate limits within this many recent milliseconds, at minimum. */
+#define MIN_RATE_LIMIT_PERIOD 3000
+
 /* Provide a string that is 2 + 1 + 2 + 1 + 2 = 8 letters long (plus the zero
    byte) */
 static void time2str(char *r, curl_off_t seconds)
@@ -234,11 +238,12 @@
   data->progress.dl_limit_start.tv_usec = 0;
   /* clear all bits except HIDE and HEADERS_OUT */
   data->progress.flags &= PGRS_HIDE|PGRS_HEADERS_OUT;
+  Curl_ratelimit(data, data->progress.start);
 }
 
 /*
- * This is used to handle speed limits, calculating how much milliseconds we
- * need to wait until we're back under the speed limit, if needed.
+ * This is used to handle speed limits, calculating how many milliseconds to
+ * wait until we're back under the speed limit, if needed.
  *
  * The way it works is by having a "starting point" (time & amount of data
  * transferred by then) used in the speed computation, to be used instead of
@@ -250,73 +255,87 @@
  * the starting point, the limit (in bytes/s), the time of the starting point
  * and the current time.
  *
- * Returns -1 if no waiting is needed (not enough data transferred since
- * starting point yet), 0 when no waiting is needed but the starting point
- * should be reset (to current), or the number of milliseconds to wait to get
- * back under the speed limit.
+ * Returns 0 if no waiting is needed or when no waiting is needed but the
+ * starting point should be reset (to current); or the number of milliseconds
+ * to wait to get back under the speed limit.
  */
-long Curl_pgrsLimitWaitTime(curl_off_t cursize,
-                            curl_off_t startsize,
-                            curl_off_t limit,
-                            struct curltime start,
-                            struct curltime now)
+timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize,
+                                  curl_off_t startsize,
+                                  curl_off_t limit,
+                                  struct curltime start,
+                                  struct curltime now)
 {
   curl_off_t size = cursize - startsize;
   time_t minimum;
   time_t actual;
 
-  /* we don't have a starting point yet -- return 0 so it gets (re)set */
-  if(start.tv_sec == 0 && start.tv_usec == 0)
+  if(!limit || !size)
     return 0;
 
-  /* not enough data yet */
-  if(size < limit)
-    return -1;
+  /*
+   * 'minimum' is the number of milliseconds 'size' should take to download to
+   * stay below 'limit'.
+   */
+  if(size < CURL_OFF_T_MAX/1000)
+    minimum = (time_t) (CURL_OFF_T_C(1000) * size / limit);
+  else {
+    minimum = (time_t) (size / limit);
+    if(minimum < TIME_T_MAX/1000)
+      minimum *= 1000;
+    else
+      minimum = TIME_T_MAX;
+  }
 
-  minimum = (time_t) (CURL_OFF_T_C(1000) * size / limit);
+  /*
+   * 'actual' is the time in milliseconds it took to actually download the
+   * last 'size' bytes.
+   */
   actual = Curl_timediff(now, start);
-
-  if(actual < minimum)
-    /* this is a conversion on some systems (64bit time_t => 32bit long) */
-    return (long)(minimum - actual);
+  if(actual < minimum) {
+    /* if it downloaded the data faster than the limit, make it wait the
+       difference */
+    return (minimum - actual);
+  }
 
   return 0;
 }
 
+/*
+ * Set the number of downloaded bytes so far.
+ */
 void Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size)
 {
-  struct curltime now = Curl_now();
-
   data->progress.downloaded = size;
+}
 
-  /* download speed limit */
-  if((data->set.max_recv_speed > 0) &&
-     (Curl_pgrsLimitWaitTime(data->progress.downloaded,
-                             data->progress.dl_limit_size,
-                             data->set.max_recv_speed,
-                             data->progress.dl_limit_start,
-                             now) == 0)) {
-    data->progress.dl_limit_start = now;
-    data->progress.dl_limit_size = size;
+/*
+ * Update the timestamp and sizestamp to use for rate limit calculations.
+ */
+void Curl_ratelimit(struct Curl_easy *data, struct curltime now)
+{
+  /* don't set a new stamp unless the time since last update is long enough */
+  if(data->set.max_recv_speed > 0) {
+    if(Curl_timediff(now, data->progress.dl_limit_start) >=
+       MIN_RATE_LIMIT_PERIOD) {
+      data->progress.dl_limit_start = now;
+      data->progress.dl_limit_size = data->progress.downloaded;
+    }
+  }
+  if(data->set.max_send_speed > 0) {
+    if(Curl_timediff(now, data->progress.ul_limit_start) >=
+       MIN_RATE_LIMIT_PERIOD) {
+      data->progress.ul_limit_start = now;
+      data->progress.ul_limit_size = data->progress.uploaded;
+    }
   }
 }
 
+/*
+ * Set the number of uploaded bytes so far.
+ */
 void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size)
 {
-  struct curltime now = Curl_now();
-
   data->progress.uploaded = size;
-
-  /* upload speed limit */
-  if((data->set.max_send_speed > 0) &&
-     (Curl_pgrsLimitWaitTime(data->progress.uploaded,
-                             data->progress.ul_limit_size,
-                             data->set.max_send_speed,
-                             data->progress.ul_limit_start,
-                             now) == 0)) {
-    data->progress.ul_limit_start = now;
-    data->progress.ul_limit_size = size;
-  }
 }
 
 void Curl_pgrsSetDownloadSize(struct Curl_easy *data, curl_off_t size)
@@ -461,22 +480,26 @@
 
     if(data->set.fxferinfo) {
       /* There's a callback set, call that */
+      Curl_set_in_callback(data, true);
       result = data->set.fxferinfo(data->set.progress_client,
                                    data->progress.size_dl,
                                    data->progress.downloaded,
                                    data->progress.size_ul,
                                    data->progress.uploaded);
+      Curl_set_in_callback(data, false);
       if(result)
         failf(data, "Callback aborted");
       return result;
     }
     if(data->set.fprogress) {
       /* The older deprecated callback is set, call that */
+      Curl_set_in_callback(data, true);
       result = data->set.fprogress(data->set.progress_client,
                                    (double)data->progress.size_dl,
                                    (double)data->progress.downloaded,
                                    (double)data->progress.size_ul,
                                    (double)data->progress.uploaded);
+      Curl_set_in_callback(data, false);
       if(result)
         failf(data, "Callback aborted");
       return result;
diff --git a/lib/progress.h b/lib/progress.h
index 9333ab2..2baa925 100644
--- a/lib/progress.h
+++ b/lib/progress.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -46,14 +46,15 @@
 void Curl_pgrsSetUploadSize(struct Curl_easy *data, curl_off_t size);
 void Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size);
 void Curl_pgrsSetUploadCounter(struct Curl_easy *data, curl_off_t size);
+void Curl_ratelimit(struct Curl_easy *data, struct curltime now);
 int Curl_pgrsUpdate(struct connectdata *);
 void Curl_pgrsResetTransferSizes(struct Curl_easy *data);
 void Curl_pgrsTime(struct Curl_easy *data, timerid timer);
-long Curl_pgrsLimitWaitTime(curl_off_t cursize,
-                            curl_off_t startsize,
-                            curl_off_t limit,
-                            struct curltime start,
-                            struct curltime now);
+timediff_t Curl_pgrsLimitWaitTime(curl_off_t cursize,
+                                  curl_off_t startsize,
+                                  curl_off_t limit,
+                                  struct curltime start,
+                                  struct curltime now);
 
 /* Don't show progress for sizes smaller than: */
 #define LEAST_SIZE_PROGRESS BUFSIZE
diff --git a/lib/rtsp.c b/lib/rtsp.c
index 925da2c..41f3000 100644
--- a/lib/rtsp.c
+++ b/lib/rtsp.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -47,7 +47,7 @@
  *  -incoming server requests
  *      -server CSeq counter
  *  -digest authentication
- *  -connect thru proxy
+ *  -connect through proxy
  *  -pipelining?
  */
 
@@ -357,7 +357,7 @@
   }
 
   /* Transport Header for SETUP requests */
-  p_transport = Curl_checkheaders(conn, "Transport:");
+  p_transport = Curl_checkheaders(conn, "Transport");
   if(rtspreq == RTSPREQ_SETUP && !p_transport) {
     /* New Transport: setting? */
     if(data->set.str[STRING_RTSP_TRANSPORT]) {
@@ -381,11 +381,11 @@
   /* Accept Headers for DESCRIBE requests */
   if(rtspreq == RTSPREQ_DESCRIBE) {
     /* Accept Header */
-    p_accept = Curl_checkheaders(conn, "Accept:")?
+    p_accept = Curl_checkheaders(conn, "Accept")?
       NULL:"Accept: application/sdp\r\n";
 
     /* Accept-Encoding header */
-    if(!Curl_checkheaders(conn, "Accept-Encoding:") &&
+    if(!Curl_checkheaders(conn, "Accept-Encoding") &&
        data->set.str[STRING_ENCODING]) {
       Curl_safefree(conn->allocptr.accept_encoding);
       conn->allocptr.accept_encoding =
@@ -402,11 +402,11 @@
      it might have been used in the proxy connect, but if we have got a header
      with the user-agent string specified, we erase the previously made string
      here. */
-  if(Curl_checkheaders(conn, "User-Agent:") && conn->allocptr.uagent) {
+  if(Curl_checkheaders(conn, "User-Agent") && conn->allocptr.uagent) {
     Curl_safefree(conn->allocptr.uagent);
     conn->allocptr.uagent = NULL;
   }
-  else if(!Curl_checkheaders(conn, "User-Agent:") &&
+  else if(!Curl_checkheaders(conn, "User-Agent") &&
           data->set.str[STRING_USERAGENT]) {
     p_uagent = conn->allocptr.uagent;
   }
@@ -421,7 +421,7 @@
 
   /* Referrer */
   Curl_safefree(conn->allocptr.ref);
-  if(data->change.referer && !Curl_checkheaders(conn, "Referer:"))
+  if(data->change.referer && !Curl_checkheaders(conn, "Referer"))
     conn->allocptr.ref = aprintf("Referer: %s\r\n", data->change.referer);
   else
     conn->allocptr.ref = NULL;
@@ -438,7 +438,7 @@
      (rtspreq  & (RTSPREQ_PLAY | RTSPREQ_PAUSE | RTSPREQ_RECORD))) {
 
     /* Check to see if there is a range set in the custom headers */
-    if(!Curl_checkheaders(conn, "Range:") && data->state.range) {
+    if(!Curl_checkheaders(conn, "Range") && data->state.range) {
       Curl_safefree(conn->allocptr.rangeline);
       conn->allocptr.rangeline = aprintf("Range: %s\r\n", data->state.range);
       p_range = conn->allocptr.rangeline;
@@ -448,11 +448,11 @@
   /*
    * Sanity check the custom headers
    */
-  if(Curl_checkheaders(conn, "CSeq:")) {
+  if(Curl_checkheaders(conn, "CSeq")) {
     failf(data, "CSeq cannot be set as a custom header.");
     return CURLE_RTSP_CSEQ_ERROR;
   }
-  if(Curl_checkheaders(conn, "Session:")) {
+  if(Curl_checkheaders(conn, "Session")) {
     failf(data, "Session ID cannot be set as a custom header.");
     return CURLE_BAD_FUNCTION_ARGUMENT;
   }
@@ -542,7 +542,7 @@
     if(putsize > 0 || postsize > 0) {
       /* As stated in the http comments, it is probably not wise to
        * actually set a custom Content-Length in the headers */
-      if(!Curl_checkheaders(conn, "Content-Length:")) {
+      if(!Curl_checkheaders(conn, "Content-Length")) {
         result = Curl_add_bufferf(req_buffer,
             "Content-Length: %" CURL_FORMAT_CURL_OFF_T"\r\n",
             (data->set.upload ? putsize : postsize));
@@ -552,7 +552,7 @@
 
       if(rtspreq == RTSPREQ_SET_PARAMETER ||
          rtspreq == RTSPREQ_GET_PARAMETER) {
-        if(!Curl_checkheaders(conn, "Content-Type:")) {
+        if(!Curl_checkheaders(conn, "Content-Type")) {
           result = Curl_add_bufferf(req_buffer,
               "Content-Type: text/parameters\r\n");
           if(result)
@@ -561,7 +561,7 @@
       }
 
       if(rtspreq == RTSPREQ_ANNOUNCE) {
-        if(!Curl_checkheaders(conn, "Content-Type:")) {
+        if(!Curl_checkheaders(conn, "Content-Type")) {
           result = Curl_add_bufferf(req_buffer,
               "Content-Type: application/sdp\r\n");
           if(result)
@@ -764,13 +764,14 @@
     writeit = data->set.fwrite_rtp;
     user_ptr = data->set.rtp_out;
   }
-  else
-  {
+  else {
     writeit = data->set.fwrite_func;
     user_ptr = data->set.out;
   }
 
+  Curl_set_in_callback(data, true);
   wrote = writeit(ptr, 1, len, user_ptr);
+  Curl_set_in_callback(data, false);
 
   if(CURL_WRITEFUNC_PAUSE == wrote) {
     failf(data, "Cannot pause RTP");
diff --git a/lib/sendf.c b/lib/sendf.c
index 027f97c..27c0ccc 100644
--- a/lib/sendf.c
+++ b/lib/sendf.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -37,6 +37,7 @@
 #include "connect.h"
 #include "vtls/vtls.h"
 #include "ssh.h"
+#include "easyif.h"
 #include "multiif.h"
 #include "non-ascii.h"
 #include "strerror.h"
@@ -388,7 +389,7 @@
       (WSAEWOULDBLOCK == err)
 #else
       /* errno may be EWOULDBLOCK or on some systems EAGAIN when it returned
-         due to its inability to send off data without blocking. We therefor
+         due to its inability to send off data without blocking. We therefore
          treat both error codes the same here */
       (EWOULDBLOCK == err) || (EAGAIN == err) || (EINTR == err) ||
       (EINPROGRESS == err)
@@ -455,7 +456,7 @@
       (WSAEWOULDBLOCK == err)
 #else
       /* errno may be EWOULDBLOCK or on some systems EAGAIN when it returned
-         due to its inability to send off data without blocking. We therefor
+         due to its inability to send off data without blocking. We therefore
          treat both error codes the same here */
       (EWOULDBLOCK == err) || (EAGAIN == err) || (EINTR == err)
 #endif
@@ -540,18 +541,20 @@
 }
 
 
-/* Curl_client_chop_write() writes chunks of data not larger than
- * CURL_MAX_WRITE_SIZE via client write callback(s) and
- * takes care of pause requests from the callbacks.
+/* chop_write() writes chunks of data not larger than CURL_MAX_WRITE_SIZE via
+ * client write callback(s) and takes care of pause requests from the
+ * callbacks.
  */
-CURLcode Curl_client_chop_write(struct connectdata *conn,
-                                int type,
-                                char *ptr,
-                                size_t len)
+static CURLcode chop_write(struct connectdata *conn,
+                           int type,
+                           char *optr,
+                           size_t olen)
 {
   struct Curl_easy *data = conn->data;
   curl_write_callback writeheader = NULL;
   curl_write_callback writebody = NULL;
+  char *ptr = optr;
+  size_t len = olen;
 
   if(!len)
     return CURLE_OK;
@@ -597,25 +600,30 @@
       }
     }
 
-    if(writeheader) {
-      size_t wrote = writeheader(ptr, 1, chunklen, data->set.writeheader);
-
-      if(CURL_WRITEFUNC_PAUSE == wrote)
-        /* here we pass in the HEADER bit only since if this was body as well
-           then it was passed already and clearly that didn't trigger the
-           pause, so this is saved for later with the HEADER bit only */
-        return pausewrite(data, CLIENTWRITE_HEADER, ptr, len);
-
-      if(wrote != chunklen) {
-        failf(data, "Failed writing header");
-        return CURLE_WRITE_ERROR;
-      }
-    }
-
     ptr += chunklen;
     len -= chunklen;
   }
 
+  if(writeheader) {
+    size_t wrote;
+    ptr = optr;
+    len = olen;
+    Curl_set_in_callback(data, true);
+    wrote = writeheader(ptr, 1, len, data->set.writeheader);
+    Curl_set_in_callback(data, false);
+
+    if(CURL_WRITEFUNC_PAUSE == wrote)
+      /* here we pass in the HEADER bit only since if this was body as well
+         then it was passed already and clearly that didn't trigger the
+         pause, so this is saved for later with the HEADER bit only */
+      return pausewrite(data, CLIENTWRITE_HEADER, ptr, len);
+
+    if(wrote != len) {
+      failf(data, "Failed writing header");
+      return CURLE_WRITE_ERROR;
+    }
+  }
+
   return CURLE_OK;
 }
 
@@ -657,7 +665,7 @@
 #endif /* CURL_DO_LINEEND_CONV */
     }
 
-  return Curl_client_chop_write(conn, type, ptr, len);
+  return chop_write(conn, type, ptr, len);
 }
 
 CURLcode Curl_read_plain(curl_socket_t sockfd,
@@ -798,8 +806,11 @@
   }
 #endif /* CURL_DOES_CONVERSIONS */
 
-  if(data->set.fdebug)
+  if(data->set.fdebug) {
+    Curl_set_in_callback(data, true);
     rc = (*data->set.fdebug)(data, type, ptr, size, data->set.debugdata);
+    Curl_set_in_callback(data, false);
+  }
   else {
     switch(type) {
     case CURLINFO_TEXT:
diff --git a/lib/sendf.h b/lib/sendf.h
index fbe4f99..7c9134d 100644
--- a/lib/sendf.h
+++ b/lib/sendf.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -51,8 +51,6 @@
 #define CLIENTWRITE_HEADER (1<<1)
 #define CLIENTWRITE_BOTH   (CLIENTWRITE_BODY|CLIENTWRITE_HEADER)
 
-CURLcode Curl_client_chop_write(struct connectdata *conn, int type, char *ptr,
-                                size_t len) WARN_UNUSED_RESULT;
 CURLcode Curl_client_write(struct connectdata *conn, int type, char *ptr,
                            size_t len) WARN_UNUSED_RESULT;
 
diff --git a/lib/setopt.c b/lib/setopt.c
index a5ef75c..af53ee3 100644
--- a/lib/setopt.c
+++ b/lib/setopt.c
@@ -43,6 +43,7 @@
 #include "sendf.h"
 #include "http2.h"
 #include "setopt.h"
+#include "multiif.h"
 
 /* The last 3 #include files should be in this order */
 #include "curl_printf.h"
@@ -361,6 +362,14 @@
     data->set.timevalue = (time_t)va_arg(param, long);
     break;
 
+  case CURLOPT_TIMEVALUE_LARGE:
+    /*
+     * This is the value to compare with the remote document with the
+     * method set with CURLOPT_TIMECONDITION
+     */
+    data->set.timevalue = (time_t)va_arg(param, curl_off_t);
+    break;
+
   case CURLOPT_SSLVERSION:
   case CURLOPT_PROXY_SSLVERSION:
     /*
@@ -772,11 +781,13 @@
 
         if(checkprefix("Set-Cookie:", argptr))
           /* HTTP Header format line */
-          Curl_cookie_add(data, data->cookies, TRUE, argptr + 11, NULL, NULL);
+          Curl_cookie_add(data, data->cookies, TRUE, FALSE, argptr + 11, NULL,
+                          NULL);
 
         else
           /* Netscape format line */
-          Curl_cookie_add(data, data->cookies, FALSE, argptr, NULL, NULL);
+          Curl_cookie_add(data, data->cookies, FALSE, FALSE, argptr, NULL,
+                          NULL);
 
         Curl_share_unlock(data, CURL_LOCK_DATA_COOKIE);
         free(argptr);
@@ -1028,6 +1039,7 @@
      */
     data->set.socks5_gssapi_nec = (0 != va_arg(param, long)) ? TRUE : FALSE;
     break;
+#endif
 
   case CURLOPT_SOCKS5_GSSAPI_SERVICE:
   case CURLOPT_PROXY_SERVICE_NAME:
@@ -1037,10 +1049,7 @@
     result = Curl_setstropt(&data->set.str[STRING_PROXY_SERVICE_NAME],
                             va_arg(param, char *));
     break;
-#endif
 
-#if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) ||     \
-  defined(USE_SPNEGO)
   case CURLOPT_SERVICE_NAME:
     /*
      * Set authentication service name for DIGEST-MD5, Kerberos 5 and SPNEGO
@@ -1049,8 +1058,6 @@
                             va_arg(param, char *));
     break;
 
-#endif
-
   case CURLOPT_HEADERDATA:
     /*
      * Custom pointer to pass the header write callback function
@@ -1594,6 +1601,13 @@
     data->set.crlf = (0 != va_arg(param, long)) ? TRUE : FALSE;
     break;
 
+  case CURLOPT_HAPROXYPROTOCOL:
+    /*
+     * Set to send the HAProxy Proxy Protocol header
+     */
+    data->set.haproxyprotocol = (0 != va_arg(param, long)) ? TRUE : FALSE;
+    break;
+
   case CURLOPT_INTERFACE:
     /*
      * Set what interface or address/hostname to bind the socket to when
@@ -1734,7 +1748,7 @@
      * Set a SSL_CTX callback
      */
 #ifdef USE_SSL
-    if(Curl_ssl->have_ssl_ctx)
+    if(Curl_ssl->supports & SSLSUPP_SSL_CTX)
       data->set.ssl.fsslctx = va_arg(param, curl_ssl_ctx_callback);
     else
 #endif
@@ -1745,7 +1759,7 @@
      * Set a SSL_CTX callback parameter pointer
      */
 #ifdef USE_SSL
-    if(Curl_ssl->have_ssl_ctx)
+    if(Curl_ssl->supports & SSLSUPP_SSL_CTX)
       data->set.ssl.fsslctxp = va_arg(param, void *);
     else
 #endif
@@ -1764,7 +1778,7 @@
     break;
   case CURLOPT_CERTINFO:
 #ifdef USE_SSL
-    if(Curl_ssl->have_certinfo)
+    if(Curl_ssl->supports & SSLSUPP_CERTINFO)
       data->set.ssl.certinfo = (0 != va_arg(param, long)) ? TRUE : FALSE;
     else
 #endif
@@ -1776,7 +1790,7 @@
      * Specify file name of the public key in DER format.
      */
 #ifdef USE_SSL
-    if(Curl_ssl->have_pinnedpubkey)
+    if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY)
       result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG],
                               va_arg(param, char *));
     else
@@ -1789,7 +1803,7 @@
      * Specify file name of the public key in DER format.
      */
 #ifdef USE_SSL
-    if(Curl_ssl->have_pinnedpubkey)
+    if(Curl_ssl->supports & SSLSUPP_PINNEDPUBKEY)
       result = Curl_setstropt(&data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY],
                               va_arg(param, char *));
     else
@@ -1817,7 +1831,7 @@
      * certificates which have been prepared using openssl c_rehash utility.
      */
 #ifdef USE_SSL
-    if(Curl_ssl->have_ca_path)
+    if(Curl_ssl->supports & SSLSUPP_CA_PATH)
       /* This does not work on windows. */
       result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_ORIG],
                               va_arg(param, char *));
@@ -1831,7 +1845,7 @@
      * CA certificates which have been prepared using openssl c_rehash utility.
      */
 #ifdef USE_SSL
-    if(Curl_ssl->have_ca_path)
+    if(Curl_ssl->supports & SSLSUPP_CA_PATH)
       /* This does not work on windows. */
       result = Curl_setstropt(&data->set.str[STRING_SSL_CAPATH_PROXY],
                               va_arg(param, char *));
@@ -2101,6 +2115,21 @@
     data->set.fclosesocket = va_arg(param, curl_closesocket_callback);
     break;
 
+  case CURLOPT_RESOLVER_START_FUNCTION:
+    /*
+     * resolver start callback function: called before a new resolver request
+     * is started
+     */
+    data->set.resolver_start = va_arg(param, curl_resolver_start_callback);
+    break;
+
+  case CURLOPT_RESOLVER_START_DATA:
+    /*
+     * resolver start callback data pointer. Might be NULL.
+     */
+    data->set.resolver_start_client = va_arg(param, void *);
+    break;
+
   case CURLOPT_CLOSESOCKETDATA:
     /*
      * socket callback data pointer. Might be NULL.
@@ -2524,6 +2553,15 @@
   case CURLOPT_SSH_COMPRESSION:
     data->set.ssh_compression = (0 != va_arg(param, long))?TRUE:FALSE;
     break;
+  case CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS:
+    arg = va_arg(param, long);
+    if(arg < 0)
+      return CURLE_BAD_FUNCTION_ARGUMENT;
+    data->set.happy_eyeballs_timeout = arg;
+    break;
+  case CURLOPT_DNS_SHUFFLE_ADDRESSES:
+    data->set.dns_shuffle_addresses = (0 != va_arg(param, long)) ? TRUE:FALSE;
+    break;
   default:
     /* unknown tag and its companion, just ignore: */
     result = CURLE_UNKNOWN_OPTION;
@@ -2536,6 +2574,9 @@
 /*
  * curl_easy_setopt() is the external interface for setting options on an
  * easy handle.
+ *
+ * NOTE: This is one of few API functions that are allowed to be called from
+ * within a callback.
  */
 
 #undef curl_easy_setopt
diff --git a/lib/sha256.c b/lib/sha256.c
index cd81c02..55716c6 100644
--- a/lib/sha256.c
+++ b/lib/sha256.c
@@ -29,9 +29,17 @@
 
 #if defined(USE_OPENSSL)
 
+#include <openssl/opensslv.h>
+
+#if (OPENSSL_VERSION_NUMBER >= 0x0090800fL)
+#define USE_OPENSSL_SHA256
+#endif
+
+#endif
+
+#ifdef USE_OPENSSL_SHA256
 /* When OpenSSL is available we use the SHA256-function from OpenSSL */
 #include <openssl/sha.h>
-
 #else
 
 /* When no other crypto library is available we use this code segment */
@@ -234,7 +242,7 @@
     sha256_compress(md, md->buf);
     md->curlen = 0;
   }
-  /* pad upto 56 bytes of zeroes */
+  /* pad up to 56 bytes of zeroes */
   while(md->curlen < 56) {
     md->buf[md->curlen++] = (unsigned char)0;
   }
diff --git a/lib/smb.c b/lib/smb.c
index 6cb4083..9ac6150 100644
--- a/lib/smb.c
+++ b/lib/smb.c
@@ -709,14 +709,21 @@
 }
 
 /*
- * Convert a timestamp from the Windows world (100 nsec units from
- * 1 Jan 1601) to Posix time.
+ * Convert a timestamp from the Windows world (100 nsec units from 1 Jan 1601)
+ * to Posix time. Cap the output to fit within a time_t.
  */
-static void get_posix_time(long *out, curl_off_t timestamp)
+static void get_posix_time(time_t *out, curl_off_t timestamp)
 {
   timestamp -= 116444736000000000;
   timestamp /= 10000000;
-  *out = (long) timestamp;
+#if SIZEOF_TIME_T < SIZEOF_CURL_OFF_T
+  if(timestamp > TIME_T_MAX)
+    *out = TIME_T_MAX;
+  else if(timestamp < TIME_T_MIN)
+    *out = TIME_T_MIN;
+  else
+#endif
+    *out = (time_t) timestamp;
 }
 
 static CURLcode smb_request_state(struct connectdata *conn, bool *done)
@@ -783,10 +790,16 @@
     else {
       smb_m = (const struct smb_nt_create_response*) msg;
       conn->data->req.size = smb_swap64(smb_m->end_of_file);
-      Curl_pgrsSetDownloadSize(conn->data, conn->data->req.size);
-      if(conn->data->set.get_filetime)
-        get_posix_time(&conn->data->info.filetime, smb_m->last_change_time);
-      next_state = SMB_DOWNLOAD;
+      if(conn->data->req.size < 0) {
+        req->result = CURLE_WEIRD_SERVER_REPLY;
+        next_state = SMB_CLOSE;
+      }
+      else {
+        Curl_pgrsSetDownloadSize(conn->data, conn->data->req.size);
+        if(conn->data->set.get_filetime)
+          get_posix_time(&conn->data->info.filetime, smb_m->last_change_time);
+        next_state = SMB_DOWNLOAD;
+      }
     }
     break;
 
diff --git a/lib/smtp.c b/lib/smtp.c
index d9f1a85..3f3b45a 100644
--- a/lib/smtp.c
+++ b/lib/smtp.c
@@ -1289,6 +1289,11 @@
   /* Store the first recipient (or NULL if not specified) */
   smtp->rcpt = data->set.mail_rcpt;
 
+  /* Initial data character is the first character in line: it is implicitly
+     preceded by a virtual CRLF. */
+  smtp->trailing_crlf = TRUE;
+  smtp->eob = 2;
+
   /* Start the first command in the DO phase */
   if((data->set.upload || data->set.mimepost.kind) && data->set.mail_rcpt)
     /* MAIL transfer */
diff --git a/lib/ssh-libssh.c b/lib/ssh-libssh.c
index 56775d7..34ef490 100644
--- a/lib/ssh-libssh.c
+++ b/lib/ssh-libssh.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2017 Red Hat, Inc.
+ * Copyright (C) 2017 - 2018 Red Hat, Inc.
  *
  * Authors: Nikos Mavrogiannopoulos, Tomas Mraz, Stanislav Zidek,
  *          Robert Kolcun, Andreas Schneider
@@ -383,8 +383,10 @@
     }
 
     /* we don't have anything equivalent to knownkey. Always NULL */
+    Curl_set_in_callback(data, true);
     rc = func(data, NULL, &foundkey, /* from the remote host */
               keymatch, data->set.ssh_keyfunc_userp);
+    Curl_set_in_callback(data, false);
 
     switch(rc) {
       case CURLKHSTAT_FINE_ADD_TO_FILE:
@@ -1046,7 +1048,7 @@
 
       attrs = sftp_stat(sshc->sftp_session, protop->path);
       if(attrs != 0) {
-        data->info.filetime = (long)attrs->mtime;
+        data->info.filetime = attrs->mtime;
         sftp_attributes_free(attrs);
       }
 
@@ -1128,8 +1130,10 @@
       if(data->state.resume_from > 0) {
         /* Let's read off the proper amount of bytes from the input. */
         if(conn->seek_func) {
+          Curl_set_in_callback(data, true);
           seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
                                     SEEK_SET);
+          Curl_set_in_callback(data, false);
         }
 
         if(seekerr != CURL_SEEKFUNC_OK) {
@@ -2421,8 +2425,7 @@
   ssize_t nread;
   (void)sockindex;
 
-  if(len >= (size_t)1<<32)
-    len = (size_t)(1<<31)-1;
+  DEBUGASSERT(len < CURL_MAX_READ_SIZE);
 
   switch(conn->proto.sshc.sftp_recv_state) {
     case 0:
diff --git a/lib/ssh.c b/lib/ssh.c
index a86ed70..bf7bd54 100644
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -342,6 +342,7 @@
     "SSH_AUTH_HOST",
     "SSH_AUTH_KEY_INIT",
     "SSH_AUTH_KEY",
+    "SSH_AUTH_GSSAPI",
     "SSH_AUTH_DONE",
     "SSH_SFTP_INIT",
     "SSH_SFTP_REALPATH",
@@ -376,6 +377,7 @@
     "SSH_SCP_TRANS_INIT",
     "SSH_SCP_UPLOAD_INIT",
     "SSH_SCP_DOWNLOAD_INIT",
+    "SSH_SCP_DOWNLOAD",
     "SSH_SCP_DONE",
     "SSH_SCP_SEND_EOF",
     "SSH_SCP_WAIT_EOF",
@@ -386,6 +388,9 @@
     "QUIT"
   };
 
+  /* a precaution to make sure the lists are in sync */
+  DEBUGASSERT(sizeof(names)/sizeof(names[0]) == SSH_LAST);
+
   if(sshc->state != nowstate) {
     infof(conn->data, "SFTP %p state change from %s to %s\n",
           (void *)sshc, names[sshc->state], names[nowstate]);
@@ -523,9 +528,11 @@
       keymatch = (enum curl_khmatch)keycheck;
 
       /* Ask the callback how to behave */
+      Curl_set_in_callback(data, true);
       rc = func(data, knownkeyp, /* from the knownhosts file */
                 &foundkey, /* from the remote host */
                 keymatch, data->set.ssh_keyfunc_userp);
+      Curl_set_in_callback(data, false);
     }
     else
       /* no remotekey means failure! */
@@ -777,8 +784,8 @@
          * This is done by simply passing sshc->rsa_pub = NULL.
          */
         if(data->set.str[STRING_SSH_PUBLIC_KEY]
-            /* treat empty string the same way as NULL */
-            && data->set.str[STRING_SSH_PUBLIC_KEY][0]) {
+           /* treat empty string the same way as NULL */
+           && data->set.str[STRING_SSH_PUBLIC_KEY][0]) {
           sshc->rsa_pub = strdup(data->set.str[STRING_SSH_PUBLIC_KEY]);
           if(!sshc->rsa_pub)
             out_of_memory = TRUE;
@@ -832,7 +839,7 @@
         state(conn, SSH_AUTH_DONE);
       }
       else {
-        char *err_msg;
+        char *err_msg = NULL;
         (void)libssh2_session_last_error(sshc->ssh_session,
                                          &err_msg, NULL, 0);
         infof(data, "SSH public key authentication failed: %s\n", err_msg);
@@ -1039,7 +1046,7 @@
        */
       sshc->sftp_session = libssh2_sftp_init(sshc->ssh_session);
       if(!sshc->sftp_session) {
-        char *err_msg;
+        char *err_msg = NULL;
         if(libssh2_session_last_errno(sshc->ssh_session) ==
            LIBSSH2_ERROR_EAGAIN) {
           rc = LIBSSH2_ERROR_EAGAIN;
@@ -1246,7 +1253,7 @@
           break;
         }
         if(strncasecompare(cmd, "ln ", 3) ||
-                strncasecompare(cmd, "symlink ", 8)) {
+           strncasecompare(cmd, "symlink ", 8)) {
           /* symbolic linking */
           /* sshc->quote_path1 is the source */
           /* get the destination */
@@ -1627,7 +1634,7 @@
         break;
       }
       if(rc == 0) {
-        data->info.filetime = (long)attrs.mtime;
+        data->info.filetime = attrs.mtime;
       }
 
       state(conn, SSH_SFTP_TRANS_INIT);
@@ -1747,8 +1754,10 @@
       if(data->state.resume_from > 0) {
         /* Let's read off the proper amount of bytes from the input. */
         if(conn->seek_func) {
+          Curl_set_in_callback(data, true);
           seekerr = conn->seek_func(conn->seek_client, data->state.resume_from,
                                     SEEK_SET);
+          Curl_set_in_callback(data, false);
         }
 
         if(seekerr != CURL_SEEKFUNC_OK) {
@@ -1765,9 +1774,12 @@
               (size_t)data->set.buffer_size :
               curlx_sotouz(data->state.resume_from - passed);
 
-            size_t actuallyread =
-              data->state.fread_func(data->state.buffer, 1,
-                                     readthisamountnow, data->state.in);
+            size_t actuallyread;
+            Curl_set_in_callback(data, true);
+            actuallyread = data->state.fread_func(data->state.buffer, 1,
+                                                  readthisamountnow,
+                                                  data->state.in);
+            Curl_set_in_callback(data, false);
 
             passed += actuallyread;
             if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
@@ -2131,8 +2143,8 @@
         break;
       }
       if(rc ||
-              !(attrs.flags & LIBSSH2_SFTP_ATTR_SIZE) ||
-              (attrs.filesize == 0)) {
+         !(attrs.flags & LIBSSH2_SFTP_ATTR_SIZE) ||
+         (attrs.filesize == 0)) {
         /*
          * libssh2_sftp_open() didn't return an error, so maybe the server
          * just doesn't support stat()
@@ -2264,7 +2276,10 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to close libssh2 file\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to close libssh2 file: %d %s\n", rc, err_msg);
         }
         sshc->sftp_handle = NULL;
       }
@@ -2298,7 +2313,10 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to close libssh2 file\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session, &err_msg,
+                                           NULL, 0);
+          infof(data, "Failed to close libssh2 file: %d %s\n", rc, err_msg);
         }
         sshc->sftp_handle = NULL;
       }
@@ -2353,7 +2371,7 @@
                  data->state.infilesize);
       if(!sshc->ssh_channel) {
         int ssh_err;
-        char *err_msg;
+        char *err_msg = NULL;
 
         if(libssh2_session_last_errno(sshc->ssh_session) ==
            LIBSSH2_ERROR_EAGAIN) {
@@ -2407,9 +2425,9 @@
        * be set in sb
        */
 
-       /*
-        * If support for >2GB files exists, use it.
-        */
+      /*
+       * If support for >2GB files exists, use it.
+       */
 
       /* get a fresh new channel from the ssh layer */
 #if LIBSSH2_VERSION_NUM < 0x010700
@@ -2426,7 +2444,7 @@
 
       if(!sshc->ssh_channel) {
         int ssh_err;
-        char *err_msg;
+        char *err_msg = NULL;
 
         if(libssh2_session_last_errno(sshc->ssh_session) ==
            LIBSSH2_ERROR_EAGAIN) {
@@ -2479,7 +2497,11 @@
           break;
         }
         if(rc) {
-          infof(data, "Failed to send libssh2 channel EOF\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to send libssh2 channel EOF: %d %s\n",
+                rc, err_msg);
         }
       }
       state(conn, SSH_SCP_WAIT_EOF);
@@ -2492,7 +2514,10 @@
           break;
         }
         if(rc) {
-          infof(data, "Failed to get channel EOF: %d\n", rc);
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to get channel EOF: %d %s\n", rc, err_msg);
         }
       }
       state(conn, SSH_SCP_WAIT_CLOSE);
@@ -2505,7 +2530,10 @@
           break;
         }
         if(rc) {
-          infof(data, "Channel failed to close: %d\n", rc);
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Channel failed to close: %d %s\n", rc, err_msg);
         }
       }
       state(conn, SSH_SCP_CHANNEL_FREE);
@@ -2518,7 +2546,11 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to free libssh2 scp subsystem\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to free libssh2 scp subsystem: %d %s\n",
+                rc, err_msg);
         }
         sshc->ssh_channel = NULL;
       }
@@ -2540,7 +2572,11 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to free libssh2 scp subsystem\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to free libssh2 scp subsystem: %d %s\n",
+                rc, err_msg);
         }
         sshc->ssh_channel = NULL;
       }
@@ -2551,7 +2587,11 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to disconnect libssh2 session\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to disconnect libssh2 session: %d %s\n",
+                rc, err_msg);
         }
       }
 
@@ -2576,7 +2616,11 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to disconnect from libssh2 agent\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to disconnect from libssh2 agent: %d %s\n",
+                rc, err_msg);
         }
         libssh2_agent_free(sshc->ssh_agent);
         sshc->ssh_agent = NULL;
@@ -2594,7 +2638,10 @@
           break;
         }
         if(rc < 0) {
-          infof(data, "Failed to free libssh2 session\n");
+          char *err_msg = NULL;
+          (void)libssh2_session_last_error(sshc->ssh_session,
+                                           &err_msg, NULL, 0);
+          infof(data, "Failed to free libssh2 session: %d %s\n", rc, err_msg);
         }
         sshc->ssh_session = NULL;
       }
diff --git a/lib/strerror.c b/lib/strerror.c
index 83a96dd..0295d6c 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -312,6 +312,9 @@
   case CURLE_HTTP2_STREAM:
     return "Stream error in the HTTP/2 framing layer";
 
+  case CURLE_RECURSIVE_API_CALL:
+    return "API function called from within callback";
+
     /* error codes not used by current libcurl */
   case CURLE_OBSOLETE20:
   case CURLE_OBSOLETE24:
@@ -380,6 +383,9 @@
   case CURLM_ADDED_ALREADY:
     return "The easy handle is already added to a multi handle";
 
+  case CURLM_RECURSIVE_API_CALL:
+    return "API function called from within callback";
+
   case CURLM_LAST:
     break;
   }
diff --git a/lib/strtoofft.c b/lib/strtoofft.c
index 3636477..546a3ff 100644
--- a/lib/strtoofft.c
+++ b/lib/strtoofft.c
@@ -220,8 +220,6 @@
   errno = 0;
   *num = 0; /* clear by default */
 
-  DEBUGASSERT(str);
-
   while(*str && ISSPACE(*str))
     str++;
   if('-' == *str) {
diff --git a/lib/telnet.c b/lib/telnet.c
index 48b134e..d71c8e0 100644
--- a/lib/telnet.c
+++ b/lib/telnet.c
@@ -1203,8 +1203,7 @@
           CURL_SB_ACCUM(tn, c);
           tn->telrcv_state = CURL_TS_SB;
         }
-        else
-        {
+        else {
           CURL_SB_ACCUM(tn, CURL_IAC);
           CURL_SB_ACCUM(tn, CURL_SE);
           tn->subpointer -= 2;
@@ -1460,7 +1459,8 @@
           if(n == 0)                        /* no bytes */
             break;
 
-          readfile_read = (DWORD)n; /* fall thru with number of bytes read */
+          /* fall through with number of bytes read */
+          readfile_read = (DWORD)n;
         }
         else {
           /* read from stdin */
diff --git a/lib/tftp.c b/lib/tftp.c
index 20dc600..b32960f 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1010,7 +1010,7 @@
   state->requested_blksize = blksize;
 
   ((struct sockaddr *)&state->local_addr)->sa_family =
-    (unsigned short)(conn->ip_addr->ai_family);
+    (CURL_SA_FAMILY_T)(conn->ip_addr->ai_family);
 
   tftp_set_timeouts(state);
 
diff --git a/lib/timeval.c b/lib/timeval.c
index 66f923a..f4bf835 100644
--- a/lib/timeval.c
+++ b/lib/timeval.c
@@ -110,7 +110,7 @@
   usecs /= 1000;
 
   cnow.tv_sec = usecs / 1000000;
-  cnow.tv_usec = usecs % 1000000;
+  cnow.tv_usec = (int)(usecs % 1000000);
 
   return cnow;
 }
@@ -128,7 +128,7 @@
   struct curltime ret;
   (void)gettimeofday(&now, NULL);
   ret.tv_sec = now.tv_sec;
-  ret.tv_usec = now.tv_usec;
+  ret.tv_usec = (int)now.tv_usec;
   return ret;
 }
 
diff --git a/lib/transfer.c b/lib/transfer.c
index 8f15b1a..131f2dc 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -85,7 +85,7 @@
     !defined(CURL_DISABLE_IMAP)
 /*
  * checkheaders() checks the linked list of custom headers for a
- * particular header (prefix).
+ * particular header (prefix). Provide the prefix without colon!
  *
  * Returns a pointer to the first matching header or NULL if none matched.
  */
@@ -97,7 +97,8 @@
   struct Curl_easy *data = conn->data;
 
   for(head = data->set.headers; head; head = head->next) {
-    if(strncasecompare(head->data, thisheader, thislen))
+    if(strncasecompare(head->data, thisheader, thislen) &&
+       Curl_headersep(head->data[thislen]) )
       return head->data;
   }
 
@@ -135,8 +136,10 @@
 
   /* this function returns a size_t, so we typecast to int to prevent warnings
      with picky compilers */
+  Curl_set_in_callback(data, true);
   nread = (int)data->state.fread_func(data->req.upload_fromhere, 1,
                                       buffersize, data->state.in);
+  Curl_set_in_callback(data, false);
 
   if(nread == CURL_READFUNC_ABORT) {
     failf(data, "operation aborted by callback");
@@ -302,7 +305,9 @@
     if(data->set.seek_func) {
       int err;
 
+      Curl_set_in_callback(data, true);
       err = (data->set.seek_func)(data->set.seek_client, 0, SEEK_SET);
+      Curl_set_in_callback(data, false);
       if(err) {
         failf(data, "seek callback returned error %d", (int)err);
         return CURLE_SEND_FAIL_REWIND;
@@ -311,8 +316,10 @@
     else if(data->set.ioctl_func) {
       curlioerr err;
 
+      Curl_set_in_callback(data, true);
       err = (data->set.ioctl_func)(data, CURLIOCMD_RESTARTREAD,
                                    data->set.ioctl_client);
+      Curl_set_in_callback(data, false);
       infof(data, "the ioctl callback returned %d\n", (int)err);
 
       if(err) {
@@ -710,7 +717,7 @@
 #endif   /* CURL_DISABLE_HTTP */
 
       /* Account for body content stored in the header buffer */
-      if(k->badheader && !k->ignorebody) {
+      if((k->badheader == HEADER_PARTHEADER) && !k->ignorebody) {
         DEBUGF(infof(data, "Increasing bytecount by %zu from hbuflen\n",
                      k->hbuflen));
         k->bytecount += k->hbuflen;
@@ -801,10 +808,15 @@
 
     } /* if(!header and data to read) */
 
-    if(conn->handler->readwrite &&
-       (excess > 0 && !conn->bits.stream_was_rewound)) {
+    if(conn->handler->readwrite && excess && !conn->bits.stream_was_rewound) {
       /* Parse the excess data */
       k->str += nread;
+
+      if(&k->str[excess] > &k->buf[data->set.buffer_size]) {
+        /* the excess amount was too excessive(!), make sure
+           it doesn't read out of buffer */
+        excess = &k->buf[data->set.buffer_size] - k->str;
+      }
       nread = (ssize_t)excess;
 
       result = conn->handler->readwrite(data, conn, &nread, &readmore);
@@ -1435,6 +1447,16 @@
 }
 
 /*
+ * Decide in an encoding-independent manner whether a character in an
+ * URL must be escaped. The same criterion must be used in strlen_url()
+ * and strcpy_url().
+ */
+static bool urlchar_needs_escaping(int c)
+{
+    return !(ISCNTRL(c) || ISSPACE(c) || ISGRAPH(c));
+}
+
+/*
  * strlen_url() returns the length of the given URL if the spaces within the
  * URL were properly URL encoded.
  * URL encoding should be skipped for host names, otherwise IDN resolution
@@ -1462,7 +1484,7 @@
       left = FALSE;
       /* fall through */
     default:
-      if(*ptr >= 0x80)
+      if(urlchar_needs_escaping(*ptr))
         newlen += 2;
       newlen++;
       break;
@@ -1507,7 +1529,7 @@
       left = FALSE;
       /* fall through */
     default:
-      if(*iptr >= 0x80) {
+      if(urlchar_needs_escaping(*iptr)) {
         snprintf(optr, 4, "%%%02x", *iptr);
         optr += 3;
       }
@@ -1914,7 +1936,7 @@
                             char **url)
 {
   struct Curl_easy *data = conn->data;
-
+  bool retry = FALSE;
   *url = NULL;
 
   /* if we're talking upload, we can't do the checks below, unless the protocol
@@ -1927,7 +1949,7 @@
       conn->bits.reuse &&
       (!data->set.opt_no_body
         || (conn->handler->protocol & PROTO_FAMILY_HTTP)) &&
-      (data->set.rtspreq != RTSPREQ_RECEIVE)) {
+      (data->set.rtspreq != RTSPREQ_RECEIVE))
     /* We got no data, we attempted to re-use a connection. For HTTP this
        can be a retry so we try again regardless if we expected a body.
        For other protocols we only try again only if we expected a body.
@@ -1935,6 +1957,19 @@
        This might happen if the connection was left alive when we were
        done using it before, but that was closed when we wanted to read from
        it again. Bad luck. Retry the same request on a fresh connect! */
+    retry = TRUE;
+  else if(data->state.refused_stream &&
+          (data->req.bytecount + data->req.headerbytecount == 0) ) {
+    /* This was sent on a refused stream, safe to rerun. A refused stream
+       error can typically only happen on HTTP/2 level if the stream is safe
+       to issue again, but the nghttp2 API can deliver the message to other
+       streams as well, which is why this adds the check the data counters
+       too. */
+    infof(conn->data, "REFUSED_STREAM, retrying a fresh connect\n");
+    data->state.refused_stream = FALSE; /* clear again */
+    retry = TRUE;
+  }
+  if(retry) {
     infof(conn->data, "Connection died, retrying a fresh connect\n");
     *url = strdup(conn->data->change.url);
     if(!*url)
@@ -1983,11 +2018,19 @@
 
   DEBUGASSERT((sockindex <= 1) && (sockindex >= -1));
 
-  /* now copy all input parameters */
-  conn->sockfd = sockindex == -1 ?
+  if(conn->bits.multiplex || conn->httpversion == 20) {
+    /* when multiplexing, the read/write sockets need to be the same! */
+    conn->sockfd = sockindex == -1 ?
+      ((writesockindex == -1 ? CURL_SOCKET_BAD : conn->sock[writesockindex])) :
+      conn->sock[sockindex];
+    conn->writesockfd = conn->sockfd;
+  }
+  else {
+    conn->sockfd = sockindex == -1 ?
       CURL_SOCKET_BAD : conn->sock[sockindex];
-  conn->writesockfd = writesockindex == -1 ?
+    conn->writesockfd = writesockindex == -1 ?
       CURL_SOCKET_BAD:conn->sock[writesockindex];
+  }
   k->getheader = getheader;
 
   k->size = size;
@@ -2006,10 +2049,10 @@
   /* we want header and/or body, if neither then don't do this! */
   if(k->getheader || !data->set.opt_no_body) {
 
-    if(conn->sockfd != CURL_SOCKET_BAD)
+    if(sockindex != -1)
       k->keepon |= KEEP_RECV;
 
-    if(conn->writesockfd != CURL_SOCKET_BAD) {
+    if(writesockindex != -1) {
       struct HTTP *http = data->req.protop;
       /* HTTP 1.1 magic:
 
@@ -2040,7 +2083,7 @@
         /* enable the write bit when we're not waiting for continue */
         k->keepon |= KEEP_SEND;
       }
-    } /* if(conn->writesockfd != CURL_SOCKET_BAD) */
+    } /* if(writesockindex != -1) */
   } /* if(k->getheader || !data->set.opt_no_body) */
 
 }
diff --git a/lib/transfer.h b/lib/transfer.h
index 72526a8..9ba398d 100644
--- a/lib/transfer.h
+++ b/lib/transfer.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,6 +22,7 @@
  *
  ***************************************************************************/
 
+#define Curl_headersep(x) ((((x)==':') || ((x)==';')))
 char *Curl_checkheaders(const struct connectdata *conn,
                         const char *thisheader);
 
diff --git a/lib/url.c b/lib/url.c
index 74813e8..701f83a 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -488,25 +488,33 @@
   set->socks5_gssapi_nec = FALSE;
 #endif
 
-  /* This is our preferred CA cert bundle/path since install time */
+  /* Set the default CA cert bundle/path detected/specified at build time.
+   *
+   * If Schannel (WinSSL) is the selected SSL backend then these locations
+   * are ignored. We allow setting CA location for schannel only when
+   * explicitly specified by the user via CURLOPT_CAINFO / --cacert.
+   */
+  if(Curl_ssl_backend() != CURLSSLBACKEND_SCHANNEL) {
 #if defined(CURL_CA_BUNDLE)
-  result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_ORIG], CURL_CA_BUNDLE);
-  if(result)
-    return result;
+    result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_ORIG], CURL_CA_BUNDLE);
+    if(result)
+      return result;
 
-  result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY], CURL_CA_BUNDLE);
-  if(result)
-    return result;
+    result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY],
+                            CURL_CA_BUNDLE);
+    if(result)
+      return result;
 #endif
 #if defined(CURL_CA_PATH)
-  result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_ORIG], CURL_CA_PATH);
-  if(result)
-    return result;
+    result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_ORIG], CURL_CA_PATH);
+    if(result)
+      return result;
 
-  result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], CURL_CA_PATH);
-  if(result)
-    return result;
+    result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], CURL_CA_PATH);
+    if(result)
+      return result;
 #endif
+  }
 
   set->wildcard_enabled = FALSE;
   set->chunk_bgn      = ZERO_NULL;
@@ -527,6 +535,7 @@
   set->expect_100_timeout = 1000L; /* Wait for a second by default. */
   set->sep_headers = TRUE; /* separated header lists by default */
   set->buffer_size = READBUFFER_SIZE;
+  set->happy_eyeballs_timeout = CURL_HET_DEFAULT;
 
   Curl_http2_init_userset(set);
   return result;
@@ -2066,15 +2075,6 @@
       return CURLE_URL_MALFORMAT;
     }
 
-    if(url_has_scheme && path[0] == '/' && path[1] == '/' &&
-       path[2] == '/' && path[3] == '/') {
-      /* This appears to be a UNC string (usually indicating a SMB share).
-       * We don't do SMB in file: URLs. (TODO?)
-       */
-      failf(data, "SMB shares are not supported in file: URLs.");
-      return CURLE_URL_MALFORMAT;
-    }
-
     /* Extra handling URLs with an authority component (i.e. that start with
      * "file://")
      *
@@ -2113,25 +2113,6 @@
         ptr += 9; /* now points to the slash after the host */
       }
 
-      /*
-       * RFC 8089, Appendix D, Section D.1, says:
-       *
-       * > In a POSIX file system, the root of the file system is represented
-       * > as a directory with a zero-length name, usually written as "/"; the
-       * > presence of this root in a file URI can be taken as given by the
-       * > initial slash in the "path-absolute" rule.
-       *
-       * i.e. the first slash is part of the path.
-       *
-       * However in RFC 1738 the "/" between the host (or port) and the
-       * URL-path was NOT part of the URL-path.  Any agent that followed the
-       * older spec strictly, and wanted to refer to a file with an absolute
-       * path, would have included a second slash.  So if there are two
-       * slashes, swallow one.
-       */
-      if('/' == ptr[1]) /* note: the only way ptr[0]!='/' is if ptr[1]==':' */
-        ptr++;
-
       /* This cannot be done with strcpy, as the memory chunks overlap! */
       memmove(path, ptr, strlen(ptr) + 1);
     }
@@ -2573,7 +2554,15 @@
     /* NO_PROXY was specified and it wasn't just an asterisk */
 
     no_proxy_len = strlen(no_proxy);
-    endptr = strchr(name, ':');
+    if(name[0] == '[') {
+      /* IPv6 numerical address */
+      endptr = strchr(name, ']');
+      if(!endptr)
+        return FALSE;
+      name++;
+    }
+    else
+      endptr = strchr(name, ':');
     if(endptr)
       namelen = endptr - name;
     else
@@ -2681,13 +2670,20 @@
     prox = curl_getenv(proxy_env);
   }
 
-  if(prox)
+  envp = proxy_env;
+  if(prox) {
     proxy = prox; /* use this */
-  else {
-    proxy = curl_getenv("all_proxy"); /* default proxy to use */
-    if(!proxy)
-      proxy = curl_getenv("ALL_PROXY");
   }
+  else {
+    envp = (char *)"all_proxy";
+    proxy = curl_getenv(envp); /* default proxy to use */
+    if(!proxy) {
+      envp = (char *)"ALL_PROXY";
+      proxy = curl_getenv(envp);
+    }
+  }
+  if(proxy)
+    infof(conn->data, "Uses proxy env variable %s == '%s'\n", envp, proxy);
 
   return proxy;
 }
@@ -2744,7 +2740,7 @@
     proxyptr = proxy; /* No xxx:// head: It's a HTTP proxy */
 
 #ifdef USE_SSL
-  if(!Curl_ssl->support_https_proxy)
+  if(!(Curl_ssl->supports & SSLSUPP_HTTPS_PROXY))
 #endif
     if(proxytype == CURLPROXY_HTTPS) {
       failf(data, "Unsupported proxy \'%s\', libcurl is built without the "
@@ -2972,9 +2968,15 @@
   }
 
   if(!data->set.str[STRING_NOPROXY]) {
-    no_proxy = curl_getenv("no_proxy");
-    if(!no_proxy)
-      no_proxy = curl_getenv("NO_PROXY");
+    const char *p = "no_proxy";
+    no_proxy = curl_getenv(p);
+    if(!no_proxy) {
+      p = "NO_PROXY";
+      no_proxy = curl_getenv(p);
+    }
+    if(no_proxy) {
+      infof(conn->data, "Uses proxy env variable %s == '%s'\n", p, no_proxy);
+    }
   }
 
   if(check_noproxy(conn->host.name, data->set.str[STRING_NOPROXY] ?
@@ -3417,7 +3419,7 @@
        * stripped off. It would be better to work directly from the original
        * URL and simply replace the port part of it.
        */
-      url = aprintf("%s://%s%s%s:%hu%s%s%s", conn->given->scheme,
+      url = aprintf("%s://%s%s%s:%d%s%s%s", conn->given->scheme,
                     conn->bits.ipv6_ip?"[":"", conn->host.name,
                     conn->bits.ipv6_ip?"]":"", conn->remote_port,
                     data->state.slash_removed?"/":"", data->state.path,
@@ -4116,7 +4118,7 @@
    *************************************************************/
   if(prot_missing) {
     /* We're guessing prefixes here and if we're told to use a proxy or if
-       we're gonna follow a Location: later or... then we need the protocol
+       we're going to follow a Location: later or... then we need the protocol
        part added so that we have a valid URL. */
     char *reurl;
     char *ch_lower;
diff --git a/lib/urldata.h b/lib/urldata.h
index 5c04ad1..7fae00f 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -98,6 +98,20 @@
 #include "hash.h"
 #include "splay.h"
 
+/* return the count of bytes sent, or -1 on error */
+typedef ssize_t (Curl_send)(struct connectdata *conn, /* connection data */
+                            int sockindex,            /* socketindex */
+                            const void *buf,          /* data to write */
+                            size_t len,               /* max amount to write */
+                            CURLcode *err);           /* error to return */
+
+/* return the count of bytes read, or -1 on error */
+typedef ssize_t (Curl_recv)(struct connectdata *conn, /* connection data */
+                            int sockindex,            /* socketindex */
+                            char *buf,                /* store data here */
+                            size_t len,               /* max amount to read */
+                            CURLcode *err);           /* error to return */
+
 #include "mime.h"
 #include "imap.h"
 #include "pop3.h"
@@ -328,6 +342,7 @@
   BYTE *output_token;
   BYTE *input_token;
   size_t input_token_len;
+  TCHAR *spn;
 #else
   unsigned int flags;
   unsigned char nonce[8];
@@ -703,20 +718,6 @@
 #define CONNRESULT_NONE 0                /* No extra information. */
 #define CONNRESULT_DEAD (1<<0)           /* The connection is dead. */
 
-/* return the count of bytes sent, or -1 on error */
-typedef ssize_t (Curl_send)(struct connectdata *conn, /* connection data */
-                            int sockindex,            /* socketindex */
-                            const void *buf,          /* data to write */
-                            size_t len,               /* max amount to write */
-                            CURLcode *err);           /* error to return */
-
-/* return the count of bytes read, or -1 on error */
-typedef ssize_t (Curl_recv)(struct connectdata *conn, /* connection data */
-                            int sockindex,            /* socketindex */
-                            char *buf,                /* store data here */
-                            size_t len,               /* max amount to read */
-                            CURLcode *err);           /* error to return */
-
 #ifdef USE_RECV_BEFORE_SEND_WORKAROUND
 struct postponed_data {
   char *buffer;          /* Temporal store for received data during
@@ -895,7 +896,7 @@
                                 well be the same we read from.
                                 CURL_SOCKET_BAD disables */
 
-  /** Dynamicly allocated strings, MUST be freed before this **/
+  /** Dynamically allocated strings, MUST be freed before this **/
   /** struct is killed.                                      **/
   struct dynamically_allocated_data {
     char *proxyuserpwd;
@@ -1024,10 +1025,8 @@
   int httpcode;  /* Recent HTTP, FTP, RTSP or SMTP response code */
   int httpproxycode; /* response code from proxy when received separate */
   int httpversion; /* the http version number X.Y = X*10+Y */
-  long filetime; /* If requested, this is might get set. Set to -1 if the time
-                    was unretrievable. We cannot have this of type time_t,
-                    since time_t is unsigned on several platforms such as
-                    OpenVMS. */
+  time_t filetime; /* If requested, this is might get set. Set to -1 if the
+                      time was unretrievable. */
   bool timecond;  /* set to TRUE if the time condition didn't match, which
                      thus made the document NOT get fetched */
   long header_size;  /* size of read header(s) in bytes */
@@ -1168,7 +1167,7 @@
 };
 
 /*
- * This struct is for holding data that was attemped to get sent to the user's
+ * This struct is for holding data that was attempted to get sent to the user's
  * callback but is held due to pausing. One instance per type (BOTH, HEADER,
  * BODY).
  */
@@ -1227,7 +1226,7 @@
   curl_off_t current_speed;  /* the ProgressShow() function sets this,
                                 bytes / second */
   bool this_is_a_follow; /* this is a followed Location: request */
-
+  bool refused_stream; /* this was refused, try again */
   char *first_host; /* host name of the first (not followed) request.
                        if set, this should be the host name that we will
                        sent authorization to, no else. Used to make Location:
@@ -1424,13 +1423,8 @@
   STRING_SSH_HOST_PUBLIC_KEY_MD5, /* md5 of host public key in ascii hex */
   STRING_SSH_KNOWNHOSTS,  /* file name of knownhosts file */
 #endif
-#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   STRING_PROXY_SERVICE_NAME, /* Proxy service name */
-#endif
-#if !defined(CURL_DISABLE_CRYPTO_AUTH) || defined(USE_KERBEROS5) || \
-  defined(USE_SPNEGO) || defined(HAVE_GSSAPI)
   STRING_SERVICE_NAME,    /* Service name */
-#endif
   STRING_MAIL_FROM,
   STRING_MAIL_AUTH,
 
@@ -1522,6 +1516,7 @@
   long timeout;         /* in milliseconds, 0 means no timeout */
   long connecttimeout;  /* in milliseconds, 0 means no timeout */
   long accepttimeout;   /* in milliseconds, 0 means no timeout */
+  long happy_eyeballs_timeout; /* in milliseconds, 0 is a valid value */
   long server_response_timeout; /* in milliseconds, 0 means no timeout */
   long tftp_blksize;    /* in bytes, 0 means use default */
   bool tftp_no_options; /* do not send TFTP options requests */
@@ -1675,13 +1670,21 @@
   bool suppress_connect_headers;  /* suppress proxy CONNECT response headers
                                      from user callbacks */
 
+  bool dns_shuffle_addresses; /* whether to shuffle addresses before use */
+
   struct Curl_easy *stream_depends_on;
   bool stream_depends_e; /* set or don't set the Exclusive bit */
   int stream_weight;
 
+  bool haproxyprotocol; /* whether to send HAProxy PROXY protocol header */
+
   struct Curl_http2_dep *stream_dependents;
 
   bool abstract_unix_socket;
+
+  curl_resolver_start_callback resolver_start; /* optional callback called
+                                                  before resolver start */
+  void *resolver_start_client; /* pointer to pass to resolver start callback */
 };
 
 struct Names {
diff --git a/lib/vauth/cleartext.c b/lib/vauth/cleartext.c
index a761ae7..5d61ce6 100644
--- a/lib/vauth/cleartext.c
+++ b/lib/vauth/cleartext.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -73,16 +73,10 @@
   ulen = strlen(userp);
   plen = strlen(passwdp);
 
-  /* Compute binary message length, checking for overflows. */
-  plainlen = 2 * ulen;
-  if(plainlen < ulen)
+  /* Compute binary message length. Check for overflows. */
+  if((ulen > SIZE_T_MAX/2) || (plen > (SIZE_T_MAX/2 - 2)))
     return CURLE_OUT_OF_MEMORY;
-  plainlen += plen;
-  if(plainlen < plen)
-    return CURLE_OUT_OF_MEMORY;
-  plainlen += 2;
-  if(plainlen < 2)
-    return CURLE_OUT_OF_MEMORY;
+  plainlen = 2 * ulen + plen + 2;
 
   plainauth = malloc(plainlen);
   if(!plainauth)
diff --git a/lib/vauth/krb5_sspi.c b/lib/vauth/krb5_sspi.c
index 1b4cef4..9afb971 100644
--- a/lib/vauth/krb5_sspi.c
+++ b/lib/vauth/krb5_sspi.c
@@ -135,7 +135,7 @@
   }
 
   if(!krb5->credentials) {
-    /* Do we have credientials to use or are we using single sign-on? */
+    /* Do we have credentials to use or are we using single sign-on? */
     if(userp && *userp) {
       /* Populate our identity structure */
       result = Curl_create_sspi_identity(userp, passwdp, &krb5->identity);
@@ -150,12 +150,10 @@
       krb5->p_identity = NULL;
 
     /* Allocate our credentials handle */
-    krb5->credentials = malloc(sizeof(CredHandle));
+    krb5->credentials = calloc(1, sizeof(CredHandle));
     if(!krb5->credentials)
       return CURLE_OUT_OF_MEMORY;
 
-    memset(krb5->credentials, 0, sizeof(CredHandle));
-
     /* Acquire our credentials handle */
     status = s_pSecFn->AcquireCredentialsHandle(NULL,
                                                 (TCHAR *)
@@ -167,11 +165,9 @@
       return CURLE_LOGIN_DENIED;
 
     /* Allocate our new context handle */
-    krb5->context = malloc(sizeof(CtxtHandle));
+    krb5->context = calloc(1, sizeof(CtxtHandle));
     if(!krb5->context)
       return CURLE_OUT_OF_MEMORY;
-
-    memset(krb5->context, 0, sizeof(CtxtHandle));
   }
 
   if(chlg64 && *chlg64) {
diff --git a/lib/vauth/ntlm.c b/lib/vauth/ntlm.c
index 1e0d479..cdb8d8f 100644
--- a/lib/vauth/ntlm.c
+++ b/lib/vauth/ntlm.c
@@ -63,9 +63,9 @@
 /* "NTLMSSP" signature is always in ASCII regardless of the platform */
 #define NTLMSSP_SIGNATURE "\x4e\x54\x4c\x4d\x53\x53\x50"
 
-#define SHORTPAIR(x) ((x) & 0xff), (((x) >> 8) & 0xff)
-#define LONGQUARTET(x) ((x) & 0xff), (((x) >> 8) & 0xff), \
-  (((x) >> 16) & 0xff), (((x) >> 24) & 0xff)
+#define SHORTPAIR(x) ((int)((x) & 0xff)), ((int)(((x) >> 8) & 0xff))
+#define LONGQUARTET(x) ((int)((x) & 0xff)), ((int)(((x) >> 8) & 0xff)), \
+  ((int)(((x) >> 16) & 0xff)), ((int)(((x) >> 24) & 0xff))
 
 #if DEBUG_ME
 # define DEBUG_OUT(x) x
@@ -355,6 +355,8 @@
  * data    [in]     - The session handle.
  * userp   [in]     - The user name in the format User or Domain\User.
  * passdwp [in]     - The user's password.
+ * service [in]     - The service type such as http, smtp, pop or imap.
+ * host    [in]     - The host name.
  * ntlm    [in/out] - The NTLM data struct being used and modified.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
@@ -365,6 +367,8 @@
 CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
                                              const char *userp,
                                              const char *passwdp,
+                                             const char *service,
+                                             const char *hostname,
                                              struct ntlmdata *ntlm,
                                              char **outptr, size_t *outlen)
 {
@@ -394,6 +398,8 @@
                                          domain are empty */
   (void)userp;
   (void)passwdp;
+  (void)service,
+  (void)hostname,
 
   /* Clean up any former leftovers and initialise to defaults */
   Curl_auth_ntlm_cleanup(ntlm);
diff --git a/lib/vauth/ntlm.h b/lib/vauth/ntlm.h
index f906a3c..1136b0f 100644
--- a/lib/vauth/ntlm.h
+++ b/lib/vauth/ntlm.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_CURL_NTLM_H
-#define HEADER_CURL_NTLM_H
+#ifndef HEADER_VAUTH_NTLM_H
+#define HEADER_VAUTH_NTLM_H
 /***************************************************************************
  *                                  _   _ ____  _
  *  Project                     ___| | | |  _ \| |
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -140,4 +140,4 @@
 
 #endif /* USE_NTLM */
 
-#endif /* HEADER_CURL_NTLM_H */
+#endif /* HEADER_VAUTH_NTLM_H */
diff --git a/lib/vauth/ntlm_sspi.c b/lib/vauth/ntlm_sspi.c
index e748ce3..089c1a6 100644
--- a/lib/vauth/ntlm_sspi.c
+++ b/lib/vauth/ntlm_sspi.c
@@ -70,6 +70,8 @@
  * data    [in]     - The session handle.
  * userp   [in]     - The user name in the format User or Domain\User.
  * passdwp [in]     - The user's password.
+ * service [in]     - The service type such as http, smtp, pop or imap.
+ * host    [in]     - The host name.
  * ntlm    [in/out] - The NTLM data struct being used and modified.
  * outptr  [in/out] - The address where a pointer to newly allocated memory
  *                    holding the result will be stored upon completion.
@@ -80,6 +82,8 @@
 CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
                                              const char *userp,
                                              const char *passwdp,
+                                             const char *service,
+                                             const char *host,
                                              struct ntlmdata *ntlm,
                                              char **outptr, size_t *outlen)
 {
@@ -125,12 +129,10 @@
     ntlm->p_identity = NULL;
 
   /* Allocate our credentials handle */
-  ntlm->credentials = malloc(sizeof(CredHandle));
+  ntlm->credentials = calloc(1, sizeof(CredHandle));
   if(!ntlm->credentials)
     return CURLE_OUT_OF_MEMORY;
 
-  memset(ntlm->credentials, 0, sizeof(CredHandle));
-
   /* Acquire our credentials handle */
   status = s_pSecFn->AcquireCredentialsHandle(NULL,
                                               (TCHAR *) TEXT(SP_NAME_NTLM),
@@ -141,11 +143,13 @@
     return CURLE_LOGIN_DENIED;
 
   /* Allocate our new context handle */
-  ntlm->context = malloc(sizeof(CtxtHandle));
+  ntlm->context = calloc(1, sizeof(CtxtHandle));
   if(!ntlm->context)
     return CURLE_OUT_OF_MEMORY;
 
-  memset(ntlm->context, 0, sizeof(CtxtHandle));
+  ntlm->spn = Curl_auth_build_spn(service, host, NULL);
+  if(!ntlm->spn)
+    return CURLE_OUT_OF_MEMORY;
 
   /* Setup the type-1 "output" security buffer */
   type_1_desc.ulVersion = SECBUFFER_VERSION;
@@ -157,7 +161,7 @@
 
   /* Generate our type-1 message */
   status = s_pSecFn->InitializeSecurityContext(ntlm->credentials, NULL,
-                                               (TCHAR *) TEXT(""),
+                                               ntlm->spn,
                                                0, 0, SECURITY_NETWORK_DREP,
                                                NULL, 0,
                                                ntlm->context, &type_1_desc,
@@ -275,7 +279,7 @@
   /* Generate our type-3 message */
   status = s_pSecFn->InitializeSecurityContext(ntlm->credentials,
                                                ntlm->context,
-                                               (TCHAR *) TEXT(""),
+                                               ntlm->spn,
                                                0, 0, SECURITY_NETWORK_DREP,
                                                &type_2_desc,
                                                0, ntlm->context,
@@ -333,6 +337,8 @@
 
   /* Reset any variables */
   ntlm->token_max = 0;
+
+  Curl_safefree(ntlm->spn);
 }
 
 #endif /* USE_WINDOWS_SSPI && USE_NTLM */
diff --git a/lib/vauth/spnego_sspi.c b/lib/vauth/spnego_sspi.c
index a6797cd..1fe19e3 100644
--- a/lib/vauth/spnego_sspi.c
+++ b/lib/vauth/spnego_sspi.c
@@ -138,7 +138,7 @@
  }
 
   if(!nego->credentials) {
-    /* Do we have credientials to use or are we using single sign-on? */
+    /* Do we have credentials to use or are we using single sign-on? */
     if(user && *user) {
       /* Populate our identity structure */
       result = Curl_create_sspi_identity(user, password, &nego->identity);
@@ -153,12 +153,10 @@
       nego->p_identity = NULL;
 
     /* Allocate our credentials handle */
-    nego->credentials = malloc(sizeof(CredHandle));
+    nego->credentials = calloc(1, sizeof(CredHandle));
     if(!nego->credentials)
       return CURLE_OUT_OF_MEMORY;
 
-    memset(nego->credentials, 0, sizeof(CredHandle));
-
     /* Acquire our credentials handle */
     nego->status =
       s_pSecFn->AcquireCredentialsHandle(NULL,
@@ -170,11 +168,9 @@
       return CURLE_LOGIN_DENIED;
 
     /* Allocate our new context handle */
-    nego->context = malloc(sizeof(CtxtHandle));
+    nego->context = calloc(1, sizeof(CtxtHandle));
     if(!nego->context)
       return CURLE_OUT_OF_MEMORY;
-
-    memset(nego->context, 0, sizeof(CtxtHandle));
   }
 
   if(chlg64 && *chlg64) {
diff --git a/lib/vauth/vauth.c b/lib/vauth/vauth.c
index b995f34..502d443 100644
--- a/lib/vauth/vauth.c
+++ b/lib/vauth/vauth.c
@@ -115,8 +115,8 @@
 * User@Domain (User Principal Name)
 *
 * Note: The user name may be empty when using a GSS-API library or Windows SSPI
-* as the user and domain are either obtained from the credientals cache when
-* using GSS-API or via the currently logged in user's credientals when using
+* as the user and domain are either obtained from the credentials cache when
+* using GSS-API or via the currently logged in user's credentials when using
 * Windows SSPI.
 *
 * Parameters:
@@ -138,7 +138,7 @@
   }
 #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
   else
-    /* User and domain are obtained from the GSS-API credientials cache or the
+    /* User and domain are obtained from the GSS-API credentials cache or the
        currently logged in user from Windows */
     valid = TRUE;
 #endif
diff --git a/lib/vauth/vauth.h b/lib/vauth/vauth.h
index dfaf985..f430642 100644
--- a/lib/vauth/vauth.h
+++ b/lib/vauth/vauth.h
@@ -122,6 +122,8 @@
 CURLcode Curl_auth_create_ntlm_type1_message(struct Curl_easy *data,
                                              const char *userp,
                                              const char *passwdp,
+                                             const char *service,
+                                             const char *host,
                                              struct ntlmdata *ntlm,
                                              char **outptr,
                                              size_t *outlen);
diff --git a/lib/version.c b/lib/version.c
index 1752e14..5b0d05a 100644
--- a/lib/version.c
+++ b/lib/version.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -399,7 +399,7 @@
 #ifdef USE_SSL
   Curl_ssl_version(ssl_buffer, sizeof(ssl_buffer));
   version_info.ssl_version = ssl_buffer;
-  if(Curl_ssl->support_https_proxy)
+  if(Curl_ssl->supports & SSLSUPP_HTTPS_PROXY)
     version_info.features |= CURL_VERSION_HTTPS_PROXY;
   else
     version_info.features &= ~CURL_VERSION_HTTPS_PROXY;
diff --git a/lib/vtls/axtls.c b/lib/vtls/axtls.c
index 9294f49..5ed898b 100644
--- a/lib/vtls/axtls.c
+++ b/lib/vtls/axtls.c
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010, DirecTV, Contact: Eric Hu, <ehu@directv.com>.
- * Copyright (C) 2010 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -703,13 +703,7 @@
 
 const struct Curl_ssl Curl_ssl_axtls = {
   { CURLSSLBACKEND_AXTLS, "axtls" }, /* info */
-
-  0, /* have_ca_path */
-  0, /* have_certinfo */
-  0, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  0, /* support_https_proxy */
-
+  0, /* no fancy stuff */
   sizeof(struct ssl_backend_data),
 
   /*
diff --git a/lib/vtls/cyassl.c b/lib/vtls/cyassl.c
index 46b71bf..20ce460 100644
--- a/lib/vtls/cyassl.c
+++ b/lib/vtls/cyassl.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -187,8 +187,13 @@
     use_sni(TRUE);
     break;
   case CURL_SSLVERSION_TLSv1_0:
+#ifdef WOLFSSL_ALLOW_TLSV10
     req_method = TLSv1_client_method();
     use_sni(TRUE);
+#else
+    failf(data, "CyaSSL does not support TLS 1.0");
+    return CURLE_NOT_BUILT_IN;
+#endif
     break;
   case CURL_SSLVERSION_TLSv1_1:
     req_method = TLSv1_1_client_method();
@@ -199,8 +204,14 @@
     use_sni(TRUE);
     break;
   case CURL_SSLVERSION_TLSv1_3:
+#ifdef WOLFSSL_TLS13
+    req_method = wolfTLSv1_3_client_method();
+    use_sni(TRUE);
+    break;
+#else
     failf(data, "CyaSSL: TLS 1.3 is not yet supported");
     return CURLE_SSL_CONNECT_ERROR;
+#endif
   case CURL_SSLVERSION_SSLv3:
 #ifdef WOLFSSL_ALLOW_SSLV3
     req_method = SSLv3_client_method();
@@ -245,7 +256,11 @@
     */
     if((wolfSSL_CTX_SetMinVersion(BACKEND->ctx, WOLFSSL_TLSV1) != 1) &&
        (wolfSSL_CTX_SetMinVersion(BACKEND->ctx, WOLFSSL_TLSV1_1) != 1) &&
-       (wolfSSL_CTX_SetMinVersion(BACKEND->ctx, WOLFSSL_TLSV1_2) != 1)) {
+       (wolfSSL_CTX_SetMinVersion(BACKEND->ctx, WOLFSSL_TLSV1_2) != 1)
+#ifdef WOLFSSL_TLS13
+       && (wolfSSL_CTX_SetMinVersion(BACKEND->ctx, WOLFSSL_TLSV1_3) != 1)
+#endif
+      ) {
       failf(data, "SSL: couldn't set the minimum protocol version");
       return CURLE_SSL_CONNECT_ERROR;
     }
@@ -956,7 +971,7 @@
   return CURLE_OK;
 }
 
-static void Curl_cyassl_sha256sum(const unsigned char *tmp, /* input */
+static CURLcode Curl_cyassl_sha256sum(const unsigned char *tmp, /* input */
                                   size_t tmplen,
                                   unsigned char *sha256sum /* output */,
                                   size_t unused)
@@ -966,6 +981,7 @@
   InitSha256(&SHA256pw);
   Sha256Update(&SHA256pw, tmp, (word32)tmplen);
   Sha256Final(&SHA256pw, sha256sum);
+  return CURLE_OK;
 }
 
 static void *Curl_cyassl_get_internals(struct ssl_connect_data *connssl,
@@ -978,15 +994,10 @@
 const struct Curl_ssl Curl_ssl_cyassl = {
   { CURLSSLBACKEND_WOLFSSL, "WolfSSL" }, /* info */
 
-  0, /* have_ca_path */
-  0, /* have_certinfo */
 #ifdef KEEP_PEER_CERT
-  1, /* have_pinnedpubkey */
-#else
-  0, /* have_pinnedpubkey */
+  SSLSUPP_PINNEDPUBKEY |
 #endif
-  1, /* have_ssl_ctx */
-  0, /* support_https_proxy */
+  SSLSUPP_SSL_CTX,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/darwinssl.c b/lib/vtls/darwinssl.c
index 53a7ec3..45fe49d 100644
--- a/lib/vtls/darwinssl.c
+++ b/lib/vtls/darwinssl.c
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>.
- * Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1135,28 +1135,79 @@
      raise linker errors when used on that cat for some reason. */
 #if CURL_BUILD_MAC_10_7 || CURL_BUILD_IOS
   if(CFURLCreateDataAndPropertiesFromResource(NULL, pkcs_url, &pkcs_data,
-    NULL, NULL, &status)) {
+   NULL, NULL, &status)) {
+    CFArrayRef items = NULL;
+
+  /* On iOS SecPKCS12Import will never add the client certificate to the
+   * Keychain.
+   *
+   * It gives us back a SecIdentityRef that we can use directly. */
+#if CURL_BUILD_IOS
     const void *cKeys[] = {kSecImportExportPassphrase};
     const void *cValues[] = {password};
     CFDictionaryRef options = CFDictionaryCreate(NULL, cKeys, cValues,
       password ? 1L : 0L, NULL, NULL);
-    CFArrayRef items = NULL;
 
-    /* Here we go: */
-    status = SecPKCS12Import(pkcs_data, options, &items);
+    if(options != NULL) {
+      status = SecPKCS12Import(pkcs_data, options, &items);
+      CFRelease(options);
+    }
+
+
+  /* On macOS SecPKCS12Import will always add the client certificate to
+   * the Keychain.
+   *
+   * As this doesn't match iOS, and apps may not want to see their client
+   * certificate saved in the the user's keychain, we use SecItemImport
+   * with a NULL keychain to avoid importing it.
+   *
+   * This returns a SecCertificateRef from which we can construct a
+   * SecIdentityRef.
+   */
+#elif CURL_BUILD_MAC_10_7
+    SecItemImportExportKeyParameters keyParams;
+    SecExternalFormat inputFormat = kSecFormatPKCS12;
+    SecExternalItemType inputType = kSecItemTypeCertificate;
+
+    memset(&keyParams, 0x00, sizeof(keyParams));
+    keyParams.version    = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION;
+    keyParams.passphrase = password;
+
+    status = SecItemImport(pkcs_data, NULL, &inputFormat, &inputType,
+                           0, &keyParams, NULL, &items);
+#endif
+
+
+    /* Extract the SecIdentityRef */
     if(status == errSecSuccess && items && CFArrayGetCount(items)) {
-      CFDictionaryRef identity_and_trust = CFArrayGetValueAtIndex(items, 0L);
-      const void *temp_identity = CFDictionaryGetValue(identity_and_trust,
-        kSecImportItemIdentity);
+      CFIndex i, count;
+      count = CFArrayGetCount(items);
 
-      /* Retain the identity; we don't care about any other data... */
-      CFRetain(temp_identity);
-      *out_cert_and_key = (SecIdentityRef)temp_identity;
+      for(i = 0; i < count; i++) {
+        CFTypeRef item = (CFTypeRef) CFArrayGetValueAtIndex(items, i);
+        CFTypeID  itemID = CFGetTypeID(item);
+
+        if(itemID == CFDictionaryGetTypeID()) {
+          CFTypeRef identity = (CFTypeRef) CFDictionaryGetValue(
+                                                 (CFDictionaryRef) item,
+                                                 kSecImportItemIdentity);
+          CFRetain(identity);
+          *out_cert_and_key = (SecIdentityRef) identity;
+          break;
+        }
+#if CURL_BUILD_MAC_10_7
+        else if(itemID == SecCertificateGetTypeID()) {
+          status = SecIdentityCreateWithCertificate(NULL,
+                                                 (SecCertificateRef) item,
+                                                 out_cert_and_key);
+          break;
+        }
+#endif
+      }
     }
 
     if(items)
       CFRelease(items);
-    CFRelease(options);
     CFRelease(pkcs_data);
   }
 #endif /* CURL_BUILD_MAC_10_7 || CURL_BUILD_IOS */
@@ -1340,7 +1391,7 @@
 #endif /* CURL_BUILD_MAC */
 
 #if CURL_BUILD_MAC_10_8 || CURL_BUILD_IOS
-  if(SSLCreateContext != NULL) {  /* use the newer API if avaialble */
+  if(SSLCreateContext != NULL) {  /* use the newer API if available */
     if(BACKEND->ssl_ctx)
       CFRelease(BACKEND->ssl_ctx);
     BACKEND->ssl_ctx = SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType);
@@ -2843,13 +2894,14 @@
   return CURLE_OK;
 }
 
-static void Curl_darwinssl_sha256sum(const unsigned char *tmp, /* input */
+static CURLcode Curl_darwinssl_sha256sum(const unsigned char *tmp, /* input */
                                      size_t tmplen,
                                      unsigned char *sha256sum, /* output */
                                      size_t sha256len)
 {
   assert(sha256len >= CURL_SHA256_DIGEST_LENGTH);
   (void)CC_SHA256(tmp, (CC_LONG)tmplen, sha256sum);
+  return CURLE_OK;
 }
 
 static bool Curl_darwinssl_false_start(void)
@@ -2977,15 +3029,11 @@
 const struct Curl_ssl Curl_ssl_darwinssl = {
   { CURLSSLBACKEND_DARWINSSL, "darwinssl" }, /* info */
 
-  0, /* have_ca_path */
-  0, /* have_certinfo */
 #ifdef DARWIN_SSL_PINNEDPUBKEY
-  1, /* have_pinnedpubkey */
+  SSLSUPP_PINNEDPUBKEY,
 #else
-  0, /* have_pinnedpubkey */
+  0,
 #endif /* DARWIN_SSL_PINNEDPUBKEY */
-  0, /* have_ssl_ctx */
-  0, /* support_https_proxy */
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/gskit.c b/lib/vtls/gskit.c
index 8f0cc0b..b0856cd 100644
--- a/lib/vtls/gskit.c
+++ b/lib/vtls/gskit.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -1353,12 +1353,8 @@
 const struct Curl_ssl Curl_ssl_gskit = {
   { CURLSSLBACKEND_GSKIT, "gskit" }, /* info */
 
-  0, /* have_ca_path */
-  1, /* have_certinfo */
-  0, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  /* TODO: convert to 1 and fix test #1014 (if need) */
-  0, /* support_https_proxy */
+  SSLSUPP_CERTINFO |
+  SSLSUPP_PINNEDPUBKEY,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
index 30b255b..207b0fd 100644
--- a/lib/vtls/gtls.c
+++ b/lib/vtls/gtls.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -60,15 +60,6 @@
 /* The last #include file should be: */
 #include "memdebug.h"
 
-#ifndef GNUTLS_POINTER_TO_SOCKET_CAST
-#define GNUTLS_POINTER_TO_SOCKET_CAST(p) \
-  ((curl_socket_t) ((char *)(p) - (char *)NULL))
-#endif
-#ifndef GNUTLS_SOCKET_TO_POINTER_CAST
-#define GNUTLS_SOCKET_TO_POINTER_CAST(s) \
-  ((void *) ((char *)NULL + (s)))
-#endif
-
 /* Enable GnuTLS debugging by defining GTLSDEBUG */
 /*#define GTLSDEBUG */
 
@@ -161,7 +152,8 @@
 
 static ssize_t Curl_gtls_push(void *s, const void *buf, size_t len)
 {
-  ssize_t ret = swrite(GNUTLS_POINTER_TO_SOCKET_CAST(s), buf, len);
+  curl_socket_t sock = *(curl_socket_t *)s;
+  ssize_t ret = swrite(sock, buf, len);
 #if defined(USE_WINSOCK) && !defined(GNUTLS_MAPS_WINSOCK_ERRORS)
   if(ret < 0)
     gnutls_transport_set_global_errno(gtls_mapped_sockerrno());
@@ -171,7 +163,8 @@
 
 static ssize_t Curl_gtls_pull(void *s, void *buf, size_t len)
 {
-  ssize_t ret = sread(GNUTLS_POINTER_TO_SOCKET_CAST(s), buf, len);
+  curl_socket_t sock = *(curl_socket_t *)s;
+  ssize_t ret = sread(sock, buf, len);
 #if defined(USE_WINSOCK) && !defined(GNUTLS_MAPS_WINSOCK_ERRORS)
   if(ret < 0)
     gnutls_transport_set_global_errno(gtls_mapped_sockerrno());
@@ -857,7 +850,7 @@
   }
   else {
     /* file descriptor for the socket */
-    transport_ptr = GNUTLS_SOCKET_TO_POINTER_CAST(conn->sock[sockindex]);
+    transport_ptr = &conn->sock[sockindex];
     gnutls_transport_push = Curl_gtls_push;
     gnutls_transport_pull = Curl_gtls_pull;
   }
@@ -1770,7 +1763,7 @@
   return CURLE_OK;
 }
 
-static void Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
+static CURLcode Curl_gtls_sha256sum(const unsigned char *tmp, /* input */
                                 size_t tmplen,
                                 unsigned char *sha256sum, /* output */
                                 size_t sha256len)
@@ -1787,6 +1780,7 @@
   memcpy(sha256sum, gcry_md_read(SHA256pw, 0), sha256len);
   gcry_md_close(SHA256pw);
 #endif
+  return CURLE_OK;
 }
 
 static bool Curl_gtls_cert_status_request(void)
@@ -1808,11 +1802,10 @@
 const struct Curl_ssl Curl_ssl_gnutls = {
   { CURLSSLBACKEND_GNUTLS, "gnutls" }, /* info */
 
-  1, /* have_ca_path */
-  1, /* have_certinfo */
-  1, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  1, /* support_https_proxy */
+  SSLSUPP_CA_PATH  |
+  SSLSUPP_CERTINFO |
+  SSLSUPP_PINNEDPUBKEY |
+  SSLSUPP_HTTPS_PROXY,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/mbedtls.c b/lib/vtls/mbedtls.c
index 28251a3..d7759dc 100644
--- a/lib/vtls/mbedtls.c
+++ b/lib/vtls/mbedtls.c
@@ -6,7 +6,7 @@
  *                             \___|\___/|_| \_\_____|
  *
  * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
- * Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -815,7 +815,7 @@
 static size_t Curl_mbedtls_version(char *buffer, size_t size)
 {
   unsigned int version = mbedtls_version_get_number();
-  return snprintf(buffer, size, "mbedTLS/%d.%d.%d", version>>24,
+  return snprintf(buffer, size, "mbedTLS/%u.%u.%u", version>>24,
                   (version>>16)&0xff, (version>>8)&0xff);
 }
 
@@ -1023,13 +1023,20 @@
   return mbedtls_ssl_get_bytes_avail(&BACKEND->ssl) != 0;
 }
 
-static void Curl_mbedtls_sha256sum(const unsigned char *input,
+static CURLcode Curl_mbedtls_sha256sum(const unsigned char *input,
                                     size_t inputlen,
                                     unsigned char *sha256sum,
                                     size_t sha256len UNUSED_PARAM)
 {
   (void)sha256len;
+#if MBEDTLS_VERSION_NUMBER < 0x02070000
   mbedtls_sha256(input, inputlen, sha256sum, 0);
+#else
+  /* returns 0 on success, otherwise failure */
+  if(mbedtls_sha256_ret(input, inputlen, sha256sum, 0) != 0)
+    return CURLE_BAD_FUNCTION_ARGUMENT;
+#endif
+  return CURLE_OK;
 }
 
 static void *Curl_mbedtls_get_internals(struct ssl_connect_data *connssl,
@@ -1042,11 +1049,9 @@
 const struct Curl_ssl Curl_ssl_mbedtls = {
   { CURLSSLBACKEND_MBEDTLS, "mbedtls" }, /* info */
 
-  1, /* have_ca_path */
-  0, /* have_certinfo */
-  1, /* have_pinnedpubkey */
-  1, /* have_ssl_ctx */
-  0, /* support_https_proxy */
+  SSLSUPP_CA_PATH |
+  SSLSUPP_PINNEDPUBKEY |
+  SSLSUPP_SSL_CTX,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c
index a3ef37a..7cd450c 100644
--- a/lib/vtls/nss.c
+++ b/lib/vtls/nss.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -440,7 +440,17 @@
     PK11_SETATTRS(attrs, attr_cnt, CKA_TRUST, pval, sizeof(*pval));
   }
 
-  obj = PK11_CreateGenericObject(slot, attrs, attr_cnt, PR_FALSE);
+  /* PK11_CreateManagedGenericObject() was introduced in NSS 3.34 because
+   * PK11_DestroyGenericObject() does not release resources allocated by
+   * PK11_CreateGenericObject() early enough.  */
+  obj =
+#ifdef HAVE_PK11_CREATEMANAGEDGENERICOBJECT
+    PK11_CreateManagedGenericObject
+#else
+    PK11_CreateGenericObject
+#endif
+    (slot, attrs, attr_cnt, PR_FALSE);
+
   PK11_FreeSlot(slot);
   if(!obj)
     return result;
@@ -2304,7 +2314,7 @@
   return CURLE_OK;
 }
 
-static void Curl_nss_sha256sum(const unsigned char *tmp, /* input */
+static CURLcode Curl_nss_sha256sum(const unsigned char *tmp, /* input */
                                size_t tmplen,
                                unsigned char *sha256sum, /* output */
                                size_t sha256len)
@@ -2315,6 +2325,8 @@
   PK11_DigestOp(SHA256pw, tmp, curlx_uztoui(tmplen));
   PK11_DigestFinal(SHA256pw, sha256sum, &SHA256out, curlx_uztoui(sha256len));
   PK11_DestroyContext(SHA256pw, PR_TRUE);
+
+  return CURLE_OK;
 }
 
 static bool Curl_nss_cert_status_request(void)
@@ -2345,11 +2357,10 @@
 const struct Curl_ssl Curl_ssl_nss = {
   { CURLSSLBACKEND_NSS, "nss" }, /* info */
 
-  1, /* have_ca_path */
-  1, /* have_certinfo */
-  1, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  1, /* support_https_proxy */
+  SSLSUPP_CA_PATH |
+  SSLSUPP_CERTINFO |
+  SSLSUPP_PINNEDPUBKEY |
+  SSLSUPP_HTTPS_PROXY,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index 93faa6f..f6a4bd3 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -104,13 +104,22 @@
 #endif
 
 #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && /* OpenSSL 1.1.0+ */ \
-  !defined(LIBRESSL_VERSION_NUMBER)
+    !(defined(LIBRESSL_VERSION_NUMBER) && \
+      LIBRESSL_VERSION_NUMBER < 0x20700000L)
 #define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
 #define HAVE_X509_GET0_EXTENSIONS 1 /* added in 1.1.0 -pre1 */
 #define HAVE_OPAQUE_EVP_PKEY 1 /* since 1.1.0 -pre3 */
 #define HAVE_OPAQUE_RSA_DSA_DH 1 /* since 1.1.0 -pre5 */
 #define CONST_EXTS const
 #define HAVE_ERR_REMOVE_THREAD_STATE_DEPRECATED 1
+
+/* funny typecast define due to difference in API */
+#ifdef LIBRESSL_VERSION_NUMBER
+#define ARG2_X509_signature_print (X509_ALGOR *)
+#else
+#define ARG2_X509_signature_print
+#endif
+
 #else
 /* For OpenSSL before 1.1.0 */
 #define ASN1_STRING_get0_data(x) ASN1_STRING_data(x)
@@ -128,7 +137,8 @@
 #endif
 
 #if (OPENSSL_VERSION_NUMBER >= 0x1000200fL) && /* 1.0.2 or later */ \
-  !defined(LIBRESSL_VERSION_NUMBER)
+    !(defined(LIBRESSL_VERSION_NUMBER) && \
+      LIBRESSL_VERSION_NUMBER < 0x20700000L)
 #define HAVE_X509_GET0_SIGNATURE 1
 #endif
 
@@ -147,7 +157,7 @@
  * Whether SSL_CTX_set_keylog_callback is available.
  * OpenSSL: supported since 1.1.1 https://github.com/openssl/openssl/pull/2287
  * BoringSSL: supported since d28f59c27bac (committed 2015-11-19)
- * LibreSSL: unsupported in at least 2.5.1 (explicitly check for it since it
+ * LibreSSL: unsupported in at least 2.7.2 (explicitly check for it since it
  *           lies and pretends to be OpenSSL 2.0.0).
  */
 #if (OPENSSL_VERSION_NUMBER >= 0x10101000L && \
@@ -259,7 +269,9 @@
   if(!session || !keylog_file_fp)
     return;
 
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && \
+    !(defined(LIBRESSL_VERSION_NUMBER) && \
+      LIBRESSL_VERSION_NUMBER < 0x20700000L)
   /* ssl->s3 is not checked in openssl 1.1.0-pre6, but let's assume that
    * we have a valid SSL context if we have a non-NULL session. */
   SSL_get_client_random(ssl, client_random, SSL3_RANDOM_SIZE);
@@ -649,18 +661,28 @@
 
     case SSL_FILETYPE_PKCS12:
     {
-      FILE *f;
-      PKCS12 *p12;
+      BIO *fp = NULL;
+      PKCS12 *p12 = NULL;
       EVP_PKEY *pri;
       STACK_OF(X509) *ca = NULL;
 
-      f = fopen(cert_file, "rb");
-      if(!f) {
-        failf(data, "could not open PKCS12 file '%s'", cert_file);
+      fp = BIO_new(BIO_s_file());
+      if(fp == NULL) {
+        failf(data,
+              "BIO_new return NULL, " OSSL_PACKAGE
+              " error %s",
+              ossl_strerror(ERR_get_error(), error_buffer,
+                            sizeof(error_buffer)) );
         return 0;
       }
-      p12 = d2i_PKCS12_fp(f, NULL);
-      fclose(f);
+
+      if(BIO_read_filename(fp, cert_file) <= 0) {
+        failf(data, "could not open PKCS12 file '%s'", cert_file);
+        BIO_free(fp);
+        return 0;
+      }
+      p12 = d2i_PKCS12_bio(fp, NULL);
+      BIO_free(fp);
 
       if(!p12) {
         failf(data, "error reading PKCS12 file '%s'", cert_file);
@@ -1311,6 +1333,51 @@
 
 /* ====================================================== */
 
+/*
+ * Match subjectAltName against the host name. This requires a conversion
+ * in CURL_DOES_CONVERSIONS builds.
+ */
+static bool subj_alt_hostcheck(struct Curl_easy *data,
+                               const char *match_pattern, const char *hostname,
+                               const char *dispname)
+#ifdef CURL_DOES_CONVERSIONS
+{
+  bool res = FALSE;
+
+  /* Curl_cert_hostcheck uses host encoding, but we get ASCII from
+     OpenSSl.
+   */
+  char *match_pattern2 = strdup(match_pattern);
+
+  if(match_pattern2) {
+    if(Curl_convert_from_network(data, match_pattern2,
+                                strlen(match_pattern2)) == CURLE_OK) {
+      if(Curl_cert_hostcheck(match_pattern2, hostname)) {
+        res = TRUE;
+        infof(data,
+                " subjectAltName: host \"%s\" matched cert's \"%s\"\n",
+                dispname, match_pattern2);
+      }
+    }
+    free(match_pattern2);
+  }
+  else {
+    failf(data,
+        "SSL: out of memory when allocating temporary for subjectAltName");
+  }
+  return res;
+}
+#else
+{
+  if(Curl_cert_hostcheck(match_pattern, hostname)) {
+    infof(data, " subjectAltName: host \"%s\" matched cert's \"%s\"\n",
+                  dispname, match_pattern);
+    return TRUE;
+  }
+  return FALSE;
+}
+#endif
+
 
 /* Quote from RFC2818 section 3.1 "Server Identity"
 
@@ -1410,11 +1477,8 @@
           if((altlen == strlen(altptr)) &&
              /* if this isn't true, there was an embedded zero in the name
                 string and we cannot match it. */
-             Curl_cert_hostcheck(altptr, hostname)) {
+             subj_alt_hostcheck(data, altptr, hostname, dispname)) {
             dnsmatched = TRUE;
-            infof(data,
-                  " subjectAltName: host \"%s\" matched cert's \"%s\"\n",
-                  dispname, altptr);
           }
           break;
 
@@ -1725,13 +1789,40 @@
       case SSL3_MT_CERTIFICATE_STATUS:
         return "Certificate Status";
 #endif
+#ifdef SSL3_MT_ENCRYPTED_EXTENSIONS
+      case SSL3_MT_ENCRYPTED_EXTENSIONS:
+        return "Encrypted Extensions";
+#endif
+#ifdef SSL3_MT_END_OF_EARLY_DATA
+      case SSL3_MT_END_OF_EARLY_DATA:
+        return "End of early data";
+#endif
+#ifdef SSL3_MT_KEY_UPDATE
+      case SSL3_MT_KEY_UPDATE:
+        return "Key update";
+#endif
+#ifdef SSL3_MT_NEXT_PROTO
+      case SSL3_MT_NEXT_PROTO:
+        return "Next protocol";
+#endif
+#ifdef SSL3_MT_MESSAGE_HASH
+      case SSL3_MT_MESSAGE_HASH:
+        return "Message hash";
+#endif
     }
   }
   return "Unknown";
 }
 
-static const char *tls_rt_type(int type)
+static const char *tls_rt_type(int type, const void *buf, size_t buflen)
 {
+  (void)buf;
+  (void)buflen;
+#ifdef SSL3_RT_INNER_CONTENT_TYPE
+  if(type == SSL3_RT_INNER_CONTENT_TYPE && buf && buflen >= 1)
+    type = *(unsigned char *)buf;
+#endif
+
   switch(type) {
 #ifdef SSL3_RT_HEADER
   case SSL3_RT_HEADER:
@@ -1759,10 +1850,7 @@
                           void *userp)
 {
   struct Curl_easy *data;
-  const char *msg_name, *tls_rt_name;
-  char ssl_buf[1024];
   char unknown[32];
-  int msg_type, txt_len;
   const char *verstr = NULL;
   struct connectdata *conn = userp;
 
@@ -1810,6 +1898,10 @@
   }
 
   if(ssl_ver) {
+    const char *msg_name, *tls_rt_name;
+    char ssl_buf[1024];
+    int msg_type, txt_len;
+
     /* the info given when the version is zero is not that useful for us */
 
     ssl_ver >>= 8; /* check the upper 8 bits only below */
@@ -1819,17 +1911,28 @@
      * is at 'buf[0]'.
      */
     if(ssl_ver == SSL3_VERSION_MAJOR && content_type)
-      tls_rt_name = tls_rt_type(content_type);
+      tls_rt_name = tls_rt_type(content_type, buf, len);
     else
       tls_rt_name = "";
 
-    msg_type = *(char *)buf;
-    msg_name = ssl_msg_type(ssl_ver, msg_type);
+#ifdef SSL3_RT_INNER_CONTENT_TYPE
+    if(content_type == SSL3_RT_INNER_CONTENT_TYPE) {
+      msg_type = 0;
+      msg_name = "[no content]";
+    }
+    else
+#endif
+    {
+      msg_type = *(char *)buf;
+      msg_name = ssl_msg_type(ssl_ver, msg_type);
+    }
 
     txt_len = snprintf(ssl_buf, sizeof(ssl_buf), "%s (%s), %s, %s (%d):\n",
                        verstr, direction?"OUT":"IN",
                        tls_rt_name, msg_name, msg_type);
-    Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
+    if(0 <= txt_len && (unsigned)txt_len < sizeof(ssl_buf)) {
+      Curl_debug(data, CURLINFO_TEXT, ssl_buf, (size_t)txt_len, NULL);
+    }
   }
 
   Curl_debug(data, (direction == 1) ? CURLINFO_SSL_DATA_OUT :
@@ -2082,8 +2185,7 @@
   case CURL_SSLVERSION_TLSv1_2:
   case CURL_SSLVERSION_TLSv1_3:
     /* it will be handled later with the context options */
-#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \
-    !defined(LIBRESSL_VERSION_NUMBER)
+#if (OPENSSL_VERSION_NUMBER >= 0x10100000L)
     req_method = TLS_client_method();
 #else
     req_method = SSLv23_client_method();
@@ -2800,7 +2902,7 @@
       ASN1_STRING *a = ASN1_STRING_new();
       if(a) {
         X509_get0_signature(&psig, &palg, x);
-        X509_signature_print(mem, palg, a);
+        X509_signature_print(mem, ARG2_X509_signature_print palg, a);
         ASN1_STRING_free(a);
 
         if(palg) {
@@ -3035,7 +3137,8 @@
   long lerr, len;
   struct Curl_easy *data = conn->data;
   X509 *issuer;
-  FILE *fp;
+  BIO *fp = NULL;
+  char error_buffer[256]="";
   char buffer[2048];
   const char *ptr;
   long * const certverifyresult = SSL_IS_PROXY() ?
@@ -3046,8 +3149,20 @@
     /* we've been asked to gather certificate info! */
     (void)get_cert_chain(conn, connssl);
 
+  fp = BIO_new(BIO_s_file());
+  if(fp == NULL) {
+    failf(data,
+          "BIO_new return NULL, " OSSL_PACKAGE
+          " error %s",
+          ossl_strerror(ERR_get_error(), error_buffer,
+                        sizeof(error_buffer)) );
+    BIO_free(mem);
+    return 0;
+  }
+
   BACKEND->server_cert = SSL_get_peer_certificate(BACKEND->handle);
   if(!BACKEND->server_cert) {
+    BIO_free(fp);
     BIO_free(mem);
     if(!strict)
       return CURLE_OK;
@@ -3077,6 +3192,7 @@
   if(SSL_CONN_CONFIG(verifyhost)) {
     result = verifyhost(conn, BACKEND->server_cert);
     if(result) {
+      BIO_free(fp);
       X509_free(BACKEND->server_cert);
       BACKEND->server_cert = NULL;
       return result;
@@ -3098,35 +3214,35 @@
 
     /* e.g. match issuer name with provided issuer certificate */
     if(SSL_SET_OPTION(issuercert)) {
-      fp = fopen(SSL_SET_OPTION(issuercert), FOPEN_READTEXT);
-      if(!fp) {
+      if(BIO_read_filename(fp, SSL_SET_OPTION(issuercert)) <= 0) {
         if(strict)
           failf(data, "SSL: Unable to open issuer cert (%s)",
                 SSL_SET_OPTION(issuercert));
+        BIO_free(fp);
         X509_free(BACKEND->server_cert);
         BACKEND->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
 
-      issuer = PEM_read_X509(fp, NULL, ZERO_NULL, NULL);
+      issuer = PEM_read_bio_X509(fp, NULL, ZERO_NULL, NULL);
       if(!issuer) {
         if(strict)
           failf(data, "SSL: Unable to read issuer cert (%s)",
                 SSL_SET_OPTION(issuercert));
-        X509_free(BACKEND->server_cert);
+        BIO_free(fp);
         X509_free(issuer);
-        fclose(fp);
+        X509_free(BACKEND->server_cert);
+        BACKEND->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
 
-      fclose(fp);
-
       if(X509_check_issued(issuer, BACKEND->server_cert) != X509_V_OK) {
         if(strict)
           failf(data, "SSL: Certificate issuer check failed (%s)",
                 SSL_SET_OPTION(issuercert));
-        X509_free(BACKEND->server_cert);
+        BIO_free(fp);
         X509_free(issuer);
+        X509_free(BACKEND->server_cert);
         BACKEND->server_cert = NULL;
         return CURLE_SSL_ISSUER_ERROR;
       }
@@ -3161,6 +3277,7 @@
   if(SSL_CONN_CONFIG(verifystatus)) {
     result = verifystatus(conn, connssl);
     if(result) {
+      BIO_free(fp);
       X509_free(BACKEND->server_cert);
       BACKEND->server_cert = NULL;
       return result;
@@ -3180,6 +3297,7 @@
       failf(data, "SSL: public key does not match pinned public key!");
   }
 
+  BIO_free(fp);
   X509_free(BACKEND->server_cert);
   BACKEND->server_cert = NULL;
   connssl->connecting_state = ssl_connect_done;
@@ -3580,25 +3698,34 @@
                                  unsigned char *md5sum /* output */,
                                  size_t unused)
 {
-  MD5_CTX MD5pw;
-  (void)unused;
-  MD5_Init(&MD5pw);
-  MD5_Update(&MD5pw, tmp, tmplen);
-  MD5_Final(md5sum, &MD5pw);
+  EVP_MD_CTX *mdctx;
+  unsigned int len = 0;
+  (void) unused;
+
+  mdctx = EVP_MD_CTX_create();
+  EVP_DigestInit_ex(mdctx, EVP_md5(), NULL);
+  EVP_DigestUpdate(mdctx, tmp, tmplen);
+  EVP_DigestFinal_ex(mdctx, md5sum, &len);
+  EVP_MD_CTX_destroy(mdctx);
   return CURLE_OK;
 }
 
 #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) && !defined(OPENSSL_NO_SHA256)
-static void Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
+static CURLcode Curl_ossl_sha256sum(const unsigned char *tmp, /* input */
                                 size_t tmplen,
                                 unsigned char *sha256sum /* output */,
                                 size_t unused)
 {
-  SHA256_CTX SHA256pw;
-  (void)unused;
-  SHA256_Init(&SHA256pw);
-  SHA256_Update(&SHA256pw, tmp, tmplen);
-  SHA256_Final(sha256sum, &SHA256pw);
+  EVP_MD_CTX *mdctx;
+  unsigned int len = 0;
+  (void) unused;
+
+  mdctx =  EVP_MD_CTX_create();
+  EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL);
+  EVP_DigestUpdate(mdctx, tmp, tmplen);
+  EVP_DigestFinal_ex(mdctx, sha256sum, &len);
+  EVP_MD_CTX_destroy(mdctx);
+  return CURLE_OK;
 }
 #endif
 
@@ -3623,11 +3750,11 @@
 const struct Curl_ssl Curl_ssl_openssl = {
   { CURLSSLBACKEND_OPENSSL, "openssl" }, /* info */
 
-  1, /* have_ca_path */
-  1, /* have_certinfo */
-  1, /* have_pinnedpubkey */
-  1, /* have_ssl_ctx */
-  1, /* support_https_proxy */
+  SSLSUPP_CA_PATH |
+  SSLSUPP_CERTINFO |
+  SSLSUPP_PINNEDPUBKEY |
+  SSLSUPP_SSL_CTX |
+  SSLSUPP_HTTPS_PROXY,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/polarssl.c b/lib/vtls/polarssl.c
index df29fa9..604cb4c 100644
--- a/lib/vtls/polarssl.c
+++ b/lib/vtls/polarssl.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  * Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com>
  *
  * This software is licensed as described in the file COPYING, which
@@ -620,12 +620,10 @@
     ssl_session *our_ssl_sessionid;
     void *old_ssl_sessionid = NULL;
 
-    our_ssl_sessionid = malloc(sizeof(ssl_session));
+    our_ssl_sessionid = calloc(1, sizeof(ssl_session));
     if(!our_ssl_sessionid)
       return CURLE_OUT_OF_MEMORY;
 
-    memset(our_ssl_sessionid, 0, sizeof(ssl_session));
-
     ret = ssl_get_session(&BACKEND->ssl, our_ssl_sessionid);
     if(ret) {
       failf(data, "ssl_get_session returned -0x%x", -ret);
@@ -882,13 +880,14 @@
   return ssl_get_bytes_avail(&BACKEND->ssl) != 0;
 }
 
-static void Curl_polarssl_sha256sum(const unsigned char *input,
+static CURLcode Curl_polarssl_sha256sum(const unsigned char *input,
                                     size_t inputlen,
                                     unsigned char *sha256sum,
                                     size_t sha256len UNUSED_PARAM)
 {
   (void)sha256len;
   sha256(input, inputlen, sha256sum, 0);
+  return CURLE_OK;
 }
 
 static void *Curl_polarssl_get_internals(struct ssl_connect_data *connssl,
@@ -901,11 +900,8 @@
 const struct Curl_ssl Curl_ssl_polarssl = {
   { CURLSSLBACKEND_POLARSSL, "polarssl" }, /* info */
 
-  1, /* have_ca_path */
-  0, /* have_certinfo */
-  1, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  0, /* support_https_proxy */
+  SSLSUPP_CA_PATH |
+  SSLSUPP_PINNEDPUBKEY,
 
   sizeof(struct ssl_backend_data),
 
diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c
index 85c64cf..2cfd5c1 100644
--- a/lib/vtls/schannel.c
+++ b/lib/vtls/schannel.c
@@ -7,7 +7,7 @@
  *
  * Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
  * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
- * Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -42,13 +42,12 @@
 
 #ifdef USE_SCHANNEL
 
+#define EXPOSE_SCHANNEL_INTERNAL_STRUCTS
+
 #ifndef USE_WINDOWS_SSPI
 #  error "Can't compile SCHANNEL support without SSPI."
 #endif
 
-#include <schnlsp.h>
-#include <schannel.h>
-#include "curl_sspi.h"
 #include "schannel.h"
 #include "vtls.h"
 #include "sendf.h"
@@ -61,7 +60,6 @@
 #include "x509asn1.h"
 #include "curl_printf.h"
 #include "system_win32.h"
-#include "hostcheck.h"
 
  /* The last #include file should be: */
 #include "curl_memory.h"
@@ -92,6 +90,12 @@
 #endif
 #endif
 
+#ifdef UNICODE
+#define CURL_CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W
+#else
+#define CURL_CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_A
+#endif
+
 #ifndef SP_PROT_SSL2_CLIENT
 #define SP_PROT_SSL2_CLIENT             0x00000008
 #endif
@@ -124,50 +128,25 @@
 #define CURL_SCHANNEL_BUFFER_INIT_SIZE   4096
 #define CURL_SCHANNEL_BUFFER_FREE_SIZE   1024
 
+#define CERT_THUMBPRINT_STR_LEN 40
+#define CERT_THUMBPRINT_DATA_LEN 20
+
 /* Uncomment to force verbose output
  * #define infof(x, y, ...) printf(y, __VA_ARGS__)
  * #define failf(x, y, ...) printf(y, __VA_ARGS__)
  */
 
-/* Structs to store Schannel handles */
-struct curl_schannel_cred {
-  CredHandle cred_handle;
-  TimeStamp time_stamp;
-  int refcount;
-};
-
-struct curl_schannel_ctxt {
-  CtxtHandle ctxt_handle;
-  TimeStamp time_stamp;
-};
-
-struct ssl_backend_data {
-  struct curl_schannel_cred *cred;
-  struct curl_schannel_ctxt *ctxt;
-  SecPkgContext_StreamSizes stream_sizes;
-  size_t encdata_length, decdata_length;
-  size_t encdata_offset, decdata_offset;
-  unsigned char *encdata_buffer, *decdata_buffer;
-  /* encdata_is_incomplete: if encdata contains only a partial record that
-     can't be decrypted without another Curl_read_plain (that is, status is
-     SEC_E_INCOMPLETE_MESSAGE) then set this true. after Curl_read_plain writes
-     more bytes into encdata then set this back to false. */
-  bool encdata_is_incomplete;
-  unsigned long req_flags, ret_flags;
-  CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
-  bool recv_sspi_close_notify; /* true if connection closed by close_notify */
-  bool recv_connection_closed; /* true if connection closed, regardless how */
-  bool use_alpn; /* true if ALPN is used for this connection */
-};
+#ifndef CALG_SHA_256
+#  define CALG_SHA_256 0x0000800c
+#endif
 
 #define BACKEND connssl->backend
 
 static Curl_recv schannel_recv;
 static Curl_send schannel_send;
 
-#ifdef _WIN32_WCE
-static CURLcode verify_certificate(struct connectdata *conn, int sockindex);
-#endif
+static CURLcode pkp_pin_peer_pubkey(struct connectdata *conn, int sockindex,
+                                    const char *pinnedpubkey);
 
 static void InitSecBuffer(SecBuffer *buffer, unsigned long BufType,
                           void *BufDataPtr, unsigned long BufByteSize)
@@ -221,6 +200,56 @@
 }
 
 static CURLcode
+get_cert_location(TCHAR *path, DWORD *store_name, TCHAR **store_path,
+                  TCHAR **thumbprint)
+{
+  TCHAR *sep;
+  size_t store_name_len;
+
+  sep = _tcschr(path, TEXT('\\'));
+  if(sep == NULL)
+    return CURLE_SSL_CONNECT_ERROR;
+
+  store_name_len = sep - path;
+
+  if(_tcsnccmp(path, TEXT("CurrentUser"), store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_CURRENT_USER;
+  else if(_tcsnccmp(path, TEXT("LocalMachine"), store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE;
+  else if(_tcsnccmp(path, TEXT("CurrentService"), store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_CURRENT_SERVICE;
+  else if(_tcsnccmp(path, TEXT("Services"), store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_SERVICES;
+  else if(_tcsnccmp(path, TEXT("Users"), store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_USERS;
+  else if(_tcsnccmp(path, TEXT("CurrentUserGroupPolicy"),
+                    store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY;
+  else if(_tcsnccmp(path, TEXT("LocalMachineGroupPolicy"),
+                    store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY;
+  else if(_tcsnccmp(path, TEXT("LocalMachineEnterprise"),
+                    store_name_len) == 0)
+    *store_name = CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE;
+  else
+    return CURLE_SSL_CONNECT_ERROR;
+
+  *store_path = sep + 1;
+
+  sep = _tcschr(*store_path, TEXT('\\'));
+  if(sep == NULL)
+    return CURLE_SSL_CONNECT_ERROR;
+
+  *sep = 0;
+
+  *thumbprint = sep + 1;
+  if(_tcslen(*thumbprint) != CERT_THUMBPRINT_STR_LEN)
+    return CURLE_SSL_CONNECT_ERROR;
+
+  return CURLE_OK;
+}
+
+static CURLcode
 schannel_connect_step1(struct connectdata *conn, int sockindex)
 {
   ssize_t written = -1;
@@ -234,6 +263,7 @@
   unsigned char alpn_buffer[128];
 #endif
   SCHANNEL_CRED schannel_cred;
+  PCCERT_CONTEXT client_certs[1] = { NULL };
   SECURITY_STATUS sspi_status = SEC_E_OK;
   struct curl_schannel_cred *old_cred = NULL;
   struct in_addr addr;
@@ -268,6 +298,26 @@
   BACKEND->use_alpn = false;
 #endif
 
+#ifdef _WIN32_WCE
+  /* certificate validation on CE doesn't seem to work right; we'll
+   * do it following a more manual process. */
+  BACKEND->use_manual_cred_validation = true;
+#else
+  if(SSL_CONN_CONFIG(CAfile)) {
+    if(Curl_verify_windows_version(6, 1, PLATFORM_WINNT,
+                                   VERSION_GREATER_THAN_EQUAL)) {
+      BACKEND->use_manual_cred_validation = true;
+    }
+    else {
+      failf(data, "schannel: this version of Windows is too old to support "
+            "certificate verification via CA bundle file.");
+      return CURLE_SSL_CACERT_BADFILE;
+    }
+  }
+  else
+    BACKEND->use_manual_cred_validation = false;
+#endif
+
   BACKEND->cred = NULL;
 
   /* check for an existing re-usable credential handle */
@@ -291,26 +341,23 @@
     schannel_cred.dwVersion = SCHANNEL_CRED_VERSION;
 
     if(conn->ssl_config.verifypeer) {
-#ifdef _WIN32_WCE
-      /* certificate validation on CE doesn't seem to work right; we'll
-         do it following a more manual process. */
-      schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
-        SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
-        SCH_CRED_IGNORE_REVOCATION_OFFLINE;
-#else
-      schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;
-      /* TODO s/data->set.ssl.no_revoke/SSL_SET_OPTION(no_revoke)/g */
-      if(data->set.ssl.no_revoke)
-        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
-                                 SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+      if(BACKEND->use_manual_cred_validation)
+        schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION;
       else
-        schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
-#endif
-      if(data->set.ssl.no_revoke)
+        schannel_cred.dwFlags = SCH_CRED_AUTO_CRED_VALIDATION;
+
+      /* TODO s/data->set.ssl.no_revoke/SSL_SET_OPTION(no_revoke)/g */
+      if(data->set.ssl.no_revoke) {
+        schannel_cred.dwFlags |= SCH_CRED_IGNORE_NO_REVOCATION_CHECK |
+          SCH_CRED_IGNORE_REVOCATION_OFFLINE;
+
         infof(data, "schannel: disabled server certificate revocation "
                     "checks\n");
-      else
+      }
+      else {
+        schannel_cred.dwFlags |= SCH_CRED_REVOCATION_CHECK_CHAIN;
         infof(data, "schannel: checking server certificate revocation\n");
+      }
     }
     else {
       schannel_cred.dwFlags = SCH_CRED_MANUAL_CRED_VALIDATION |
@@ -354,14 +401,70 @@
       return CURLE_SSL_CONNECT_ERROR;
     }
 
+    /* client certificate */
+    if(data->set.ssl.cert) {
+      DWORD cert_store_name;
+      TCHAR *cert_store_path;
+      TCHAR *cert_thumbprint_str;
+      CRYPT_HASH_BLOB cert_thumbprint;
+      BYTE cert_thumbprint_data[CERT_THUMBPRINT_DATA_LEN];
+      HCERTSTORE cert_store;
+
+      TCHAR *cert_path = Curl_convert_UTF8_to_tchar(data->set.ssl.cert);
+      if(!cert_path)
+        return CURLE_OUT_OF_MEMORY;
+
+      result = get_cert_location(cert_path, &cert_store_name,
+                                 &cert_store_path, &cert_thumbprint_str);
+      if(result != CURLE_OK) {
+        Curl_unicodefree(cert_path);
+        return result;
+      }
+
+      cert_store = CertOpenStore(CURL_CERT_STORE_PROV_SYSTEM, 0,
+                                 (HCRYPTPROV)NULL,
+                                 cert_store_name, cert_store_path);
+      if(!cert_store) {
+        Curl_unicodefree(cert_path);
+        return CURLE_SSL_CONNECT_ERROR;
+      }
+
+      cert_thumbprint.pbData = cert_thumbprint_data;
+      cert_thumbprint.cbData = CERT_THUMBPRINT_DATA_LEN;
+
+      if(!CryptStringToBinary(cert_thumbprint_str, CERT_THUMBPRINT_STR_LEN,
+                              CRYPT_STRING_HEX,
+                              cert_thumbprint_data, &cert_thumbprint.cbData,
+                              NULL, NULL)) {
+        Curl_unicodefree(cert_path);
+        return CURLE_SSL_CONNECT_ERROR;
+      }
+
+      client_certs[0] = CertFindCertificateInStore(
+        cert_store, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 0,
+        CERT_FIND_HASH, &cert_thumbprint, NULL);
+
+      Curl_unicodefree(cert_path);
+
+      if(client_certs[0]) {
+        schannel_cred.cCreds = 1;
+        schannel_cred.paCred = client_certs;
+      }
+
+      CertCloseStore(cert_store, 0);
+    }
+
     /* allocate memory for the re-usable credential handle */
     BACKEND->cred = (struct curl_schannel_cred *)
-      malloc(sizeof(struct curl_schannel_cred));
+      calloc(1, sizeof(struct curl_schannel_cred));
     if(!BACKEND->cred) {
       failf(data, "schannel: unable to allocate memory");
+
+      if(client_certs[0])
+        CertFreeCertificateContext(client_certs[0]);
+
       return CURLE_OUT_OF_MEMORY;
     }
-    memset(BACKEND->cred, 0, sizeof(struct curl_schannel_cred));
     BACKEND->cred->refcount = 1;
 
     /* https://msdn.microsoft.com/en-us/library/windows/desktop/aa374716.aspx
@@ -373,6 +476,9 @@
                                          &BACKEND->cred->cred_handle,
                                          &BACKEND->cred->time_stamp);
 
+    if(client_certs[0])
+      CertFreeCertificateContext(client_certs[0]);
+
     if(sspi_status != SEC_E_OK) {
       if(sspi_status == SEC_E_WRONG_PRINCIPAL)
         failf(data, "schannel: SNI or certificate check failed: %s",
@@ -438,8 +544,7 @@
     InitSecBuffer(&inbuf, SECBUFFER_APPLICATION_PROTOCOLS, alpn_buffer, cur);
     InitSecBufferDesc(&inbuf_desc, &inbuf, 1);
   }
-  else
-  {
+  else {
     InitSecBuffer(&inbuf, SECBUFFER_EMPTY, NULL, 0);
     InitSecBufferDesc(&inbuf_desc, &inbuf, 1);
   }
@@ -459,12 +564,11 @@
 
   /* allocate memory for the security context handle */
   BACKEND->ctxt = (struct curl_schannel_ctxt *)
-    malloc(sizeof(struct curl_schannel_ctxt));
+    calloc(1, sizeof(struct curl_schannel_ctxt));
   if(!BACKEND->ctxt) {
     failf(data, "schannel: unable to allocate memory");
     return CURLE_OUT_OF_MEMORY;
   }
-  memset(BACKEND->ctxt, 0, sizeof(struct curl_schannel_ctxt));
 
   host_name = Curl_convert_UTF8_to_tchar(hostname);
   if(!host_name)
@@ -542,6 +646,7 @@
   bool doread;
   char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name :
     conn->host.name;
+  const char *pubkey_ptr;
 
   doread = (connssl->connecting_state != ssl_connect_2_writing) ? TRUE : FALSE;
 
@@ -761,12 +866,20 @@
     infof(data, "schannel: SSL/TLS handshake complete\n");
   }
 
-#ifdef _WIN32_WCE
-  /* Windows CE doesn't do any server certificate validation.
-     We have to do it manually. */
-  if(conn->ssl_config.verifypeer)
+  pubkey_ptr = SSL_IS_PROXY() ?
+    data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] :
+    data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG];
+  if(pubkey_ptr) {
+    result = pkp_pin_peer_pubkey(conn, sockindex, pubkey_ptr);
+    if(result) {
+      failf(data, "SSL: public key does not match pinned public key!");
+      return result;
+    }
+  }
+
+  if(conn->ssl_config.verifypeer && BACKEND->use_manual_cred_validation) {
     return verify_certificate(conn, sockindex);
-#endif
+  }
 
   return CURLE_OK;
 }
@@ -1669,145 +1782,136 @@
   return CURLE_OK;
 }
 
-#ifdef _WIN32_WCE
-static CURLcode verify_certificate(struct connectdata *conn, int sockindex)
+static CURLcode pkp_pin_peer_pubkey(struct connectdata *conn, int sockindex,
+                                    const char *pinnedpubkey)
 {
   SECURITY_STATUS status;
   struct Curl_easy *data = conn->data;
   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
-  CURLcode result = CURLE_OK;
   CERT_CONTEXT *pCertContextServer = NULL;
-  const CERT_CHAIN_CONTEXT *pChainContext = NULL;
-  const char * const conn_hostname = SSL_IS_PROXY() ?
-    conn->http_proxy.host.name :
-    conn->host.name;
+  const char *x509_der;
+  DWORD x509_der_len;
+  curl_X509certificate x509_parsed;
+  curl_asn1Element *pubkey;
 
-  status = s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
-                                            SECPKG_ATTR_REMOTE_CERT_CONTEXT,
-                                            &pCertContextServer);
+  /* Result is returned to caller */
+  CURLcode result = CURLE_SSL_PINNEDPUBKEYNOTMATCH;
 
-  if((status != SEC_E_OK) || (pCertContextServer == NULL)) {
-    failf(data, "schannel: Failed to read remote certificate context: %s",
-          Curl_sspi_strerror(conn, status));
-    result = CURLE_PEER_FAILED_VERIFICATION;
-  }
+  /* if a path wasn't specified, don't pin */
+  if(!pinnedpubkey)
+    return CURLE_OK;
 
-  if(result == CURLE_OK) {
-    CERT_CHAIN_PARA ChainPara;
-    memset(&ChainPara, 0, sizeof(ChainPara));
-    ChainPara.cbSize = sizeof(ChainPara);
+  do {
+    status = s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
+                                              SECPKG_ATTR_REMOTE_CERT_CONTEXT,
+                                              &pCertContextServer);
 
-    if(!CertGetCertificateChain(NULL,
-                                pCertContextServer,
-                                NULL,
-                                pCertContextServer->hCertStore,
-                                &ChainPara,
-                                (data->set.ssl.no_revoke ? 0 :
-                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
-                                NULL,
-                                &pChainContext)) {
-      failf(data, "schannel: CertGetCertificateChain failed: %s",
-            Curl_sspi_strerror(conn, GetLastError()));
-      pChainContext = NULL;
-      result = CURLE_PEER_FAILED_VERIFICATION;
+    if((status != SEC_E_OK) || (pCertContextServer == NULL)) {
+      failf(data, "schannel: Failed to read remote certificate context: %s",
+            Curl_sspi_strerror(conn, status));
+      break; /* failed */
     }
 
-    if(result == CURLE_OK) {
-      CERT_SIMPLE_CHAIN *pSimpleChain = pChainContext->rgpChain[0];
-      DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);
-      dwTrustErrorMask &= pSimpleChain->TrustStatus.dwErrorStatus;
-      if(dwTrustErrorMask) {
-        if(dwTrustErrorMask & CERT_TRUST_IS_REVOKED)
-          failf(data, "schannel: CertGetCertificateChain trust error"
-                " CERT_TRUST_IS_REVOKED");
-        else if(dwTrustErrorMask & CERT_TRUST_IS_PARTIAL_CHAIN)
-          failf(data, "schannel: CertGetCertificateChain trust error"
-                " CERT_TRUST_IS_PARTIAL_CHAIN");
-        else if(dwTrustErrorMask & CERT_TRUST_IS_UNTRUSTED_ROOT)
-          failf(data, "schannel: CertGetCertificateChain trust error"
-                " CERT_TRUST_IS_UNTRUSTED_ROOT");
-        else if(dwTrustErrorMask & CERT_TRUST_IS_NOT_TIME_VALID)
-          failf(data, "schannel: CertGetCertificateChain trust error"
-                " CERT_TRUST_IS_NOT_TIME_VALID");
-        else
-          failf(data, "schannel: CertGetCertificateChain error mask: 0x%08x",
-                dwTrustErrorMask);
-        result = CURLE_PEER_FAILED_VERIFICATION;
-      }
+
+    if(!(((pCertContextServer->dwCertEncodingType & X509_ASN_ENCODING) != 0) &&
+       (pCertContextServer->cbCertEncoded > 0)))
+      break;
+
+    x509_der = (const char *)pCertContextServer->pbCertEncoded;
+    x509_der_len = pCertContextServer->cbCertEncoded;
+    memset(&x509_parsed, 0, sizeof x509_parsed);
+    if(Curl_parseX509(&x509_parsed, x509_der, x509_der + x509_der_len))
+      break;
+
+    pubkey = &x509_parsed.subjectPublicKeyInfo;
+    if(!pubkey->header || pubkey->end <= pubkey->header) {
+      failf(data, "SSL: failed retrieving public key from server certificate");
+      break;
     }
-  }
 
-  if(result == CURLE_OK) {
-    if(conn->ssl_config.verifyhost) {
-      TCHAR cert_hostname_buff[256];
-      DWORD len;
-
-      /* TODO: Fix this for certificates with multiple alternative names.
-      Right now we're only asking for the first preferred alternative name.
-      Instead we'd need to do all via CERT_NAME_SEARCH_ALL_NAMES_FLAG
-      (if WinCE supports that?) and run this section in a loop for each.
-      https://msdn.microsoft.com/en-us/library/windows/desktop/aa376086.aspx
-      curl: (51) schannel: CertGetNameString() certificate hostname
-      (.google.com) did not match connection (google.com)
-      */
-      len = CertGetNameString(pCertContextServer,
-                              CERT_NAME_DNS_TYPE,
-                              CERT_NAME_DISABLE_IE4_UTF8_FLAG,
-                              NULL,
-                              cert_hostname_buff,
-                              256);
-      if(len > 0) {
-        const char *cert_hostname;
-
-        /* Comparing the cert name and the connection hostname encoded as UTF-8
-         * is acceptable since both values are assumed to use ASCII
-         * (or some equivalent) encoding
-         */
-        cert_hostname = Curl_convert_tchar_to_UTF8(cert_hostname_buff);
-        if(!cert_hostname) {
-          result = CURLE_OUT_OF_MEMORY;
-        }
-        else{
-          int match_result;
-
-          match_result = Curl_cert_hostcheck(cert_hostname, conn->host.name);
-          if(match_result == CURL_HOST_MATCH) {
-            infof(data,
-                  "schannel: connection hostname (%s) validated "
-                  "against certificate name (%s)\n",
-                  conn->host.name,
-                  cert_hostname);
-            result = CURLE_OK;
-          }
-          else{
-            failf(data,
-                  "schannel: connection hostname (%s) "
-                  "does not match certificate name (%s)",
-                  conn->host.name,
-                  cert_hostname);
-            result = CURLE_PEER_FAILED_VERIFICATION;
-          }
-          Curl_unicodefree(cert_hostname);
-        }
-      }
-      else {
-        failf(data,
-              "schannel: CertGetNameString did not provide any "
-              "certificate name information");
-        result = CURLE_PEER_FAILED_VERIFICATION;
-      }
+    result = Curl_pin_peer_pubkey(data,
+                                  pinnedpubkey,
+                                  (const unsigned char *)pubkey->header,
+                                  (size_t)(pubkey->end - pubkey->header));
+    if(result) {
+      failf(data, "SSL: public key does not match pinned public key!");
     }
-  }
-
-  if(pChainContext)
-    CertFreeCertificateChain(pChainContext);
+  } while(0);
 
   if(pCertContextServer)
     CertFreeCertificateContext(pCertContextServer);
 
   return result;
 }
-#endif /* _WIN32_WCE */
+
+static void Curl_schannel_checksum(const unsigned char *input,
+                      size_t inputlen,
+                      unsigned char *checksum,
+                      size_t checksumlen,
+                      DWORD provType,
+                      const unsigned int algId)
+{
+  HCRYPTPROV hProv = 0;
+  HCRYPTHASH hHash = 0;
+  DWORD cbHashSize = 0;
+  DWORD dwHashSizeLen = (DWORD)sizeof(cbHashSize);
+  DWORD dwChecksumLen = (DWORD)checksumlen;
+
+  /* since this can fail in multiple ways, zero memory first so we never
+   * return old data
+   */
+  memset(checksum, 0, checksumlen);
+
+  if(!CryptAcquireContext(&hProv, NULL, NULL, provType,
+                          CRYPT_VERIFYCONTEXT))
+    return; /* failed */
+
+  do {
+    if(!CryptCreateHash(hProv, algId, 0, 0, &hHash))
+      break; /* failed */
+
+    if(!CryptHashData(hHash, (const BYTE*)input, (DWORD)inputlen, 0))
+      break; /* failed */
+
+    /* get hash size */
+    if(!CryptGetHashParam(hHash, HP_HASHSIZE, (BYTE *)&cbHashSize,
+                          &dwHashSizeLen, 0))
+      break; /* failed */
+
+    /* check hash size */
+    if(checksumlen < cbHashSize)
+      break; /* failed */
+
+    if(CryptGetHashParam(hHash, HP_HASHVAL, checksum, &dwChecksumLen, 0))
+      break; /* failed */
+  } while(0);
+
+  if(hHash)
+    CryptDestroyHash(hHash);
+
+  if(hProv)
+    CryptReleaseContext(hProv, 0);
+}
+
+static CURLcode Curl_schannel_md5sum(unsigned char *input,
+                                     size_t inputlen,
+                                     unsigned char *md5sum,
+                                     size_t md5len)
+{
+    Curl_schannel_checksum(input, inputlen, md5sum, md5len,
+                           PROV_RSA_FULL, CALG_MD5);
+    return CURLE_OK;
+}
+
+static CURLcode Curl_schannel_sha256sum(const unsigned char *input,
+                                    size_t inputlen,
+                                    unsigned char *sha256sum,
+                                    size_t sha256len)
+{
+    Curl_schannel_checksum(input, inputlen, sha256sum, sha256len,
+                           PROV_RSA_AES, CALG_SHA_256);
+    return CURLE_OK;
+}
 
 static void *Curl_schannel_get_internals(struct ssl_connect_data *connssl,
                                          CURLINFO info UNUSED_PARAM)
@@ -1819,11 +1923,8 @@
 const struct Curl_ssl Curl_ssl_schannel = {
   { CURLSSLBACKEND_SCHANNEL, "schannel" }, /* info */
 
-  0, /* have_ca_path */
-  1, /* have_certinfo */
-  0, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  0, /* support_https_proxy */
+  SSLSUPP_CERTINFO |
+  SSLSUPP_PINNEDPUBKEY,
 
   sizeof(struct ssl_backend_data),
 
@@ -1845,8 +1946,8 @@
   Curl_none_set_engine_default,      /* set_engine_default */
   Curl_none_engines_list,            /* engines_list */
   Curl_none_false_start,             /* false_start */
-  Curl_none_md5sum,                  /* md5sum */
-  NULL                               /* sha256sum */
+  Curl_schannel_md5sum,              /* md5sum */
+  Curl_schannel_sha256sum            /* sha256sum */
 };
 
 #endif /* USE_SCHANNEL */
diff --git a/lib/vtls/schannel.h b/lib/vtls/schannel.h
index 932103d..4476900 100644
--- a/lib/vtls/schannel.h
+++ b/lib/vtls/schannel.h
@@ -26,9 +26,49 @@
 
 #ifdef USE_SCHANNEL
 
+#include <schnlsp.h>
+#include <schannel.h>
+#include "curl_sspi.h"
+
 #include "urldata.h"
 
 extern const struct Curl_ssl Curl_ssl_schannel;
 
+CURLcode verify_certificate(struct connectdata *conn, int sockindex);
+
+/* structs to expose only in schannel.c and schannel_verify.c */
+#ifdef EXPOSE_SCHANNEL_INTERNAL_STRUCTS
+struct curl_schannel_cred {
+  CredHandle cred_handle;
+  TimeStamp time_stamp;
+  int refcount;
+};
+
+struct curl_schannel_ctxt {
+  CtxtHandle ctxt_handle;
+  TimeStamp time_stamp;
+};
+
+struct ssl_backend_data {
+  struct curl_schannel_cred *cred;
+  struct curl_schannel_ctxt *ctxt;
+  SecPkgContext_StreamSizes stream_sizes;
+  size_t encdata_length, decdata_length;
+  size_t encdata_offset, decdata_offset;
+  unsigned char *encdata_buffer, *decdata_buffer;
+  /* encdata_is_incomplete: if encdata contains only a partial record that
+     can't be decrypted without another Curl_read_plain (that is, status is
+     SEC_E_INCOMPLETE_MESSAGE) then set this true. after Curl_read_plain writes
+     more bytes into encdata then set this back to false. */
+  bool encdata_is_incomplete;
+  unsigned long req_flags, ret_flags;
+  CURLcode recv_unrecoverable_err; /* schannel_recv had an unrecoverable err */
+  bool recv_sspi_close_notify; /* true if connection closed by close_notify */
+  bool recv_connection_closed; /* true if connection closed, regardless how */
+  bool use_alpn; /* true if ALPN is used for this connection */
+  bool use_manual_cred_validation; /* true if manual cred validation is used */
+};
+#endif /* EXPOSE_SCHANNEL_INTERNAL_STRUCTS */
+
 #endif /* USE_SCHANNEL */
 #endif /* HEADER_CURL_SCHANNEL_H */
diff --git a/lib/vtls/schannel_verify.c b/lib/vtls/schannel_verify.c
new file mode 100644
index 0000000..db187dd
--- /dev/null
+++ b/lib/vtls/schannel_verify.c
@@ -0,0 +1,551 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de>
+ * Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com>
+ * Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+
+/*
+ * Source file for SChannel-specific certificate verification. This code should
+ * only be invoked by code in schannel.c.
+ */
+
+#include "curl_setup.h"
+
+#ifdef USE_SCHANNEL
+
+#define EXPOSE_SCHANNEL_INTERNAL_STRUCTS
+
+#ifndef USE_WINDOWS_SSPI
+#  error "Can't compile SCHANNEL support without SSPI."
+#endif
+
+#include "schannel.h"
+#include "vtls.h"
+#include "sendf.h"
+#include "strerror.h"
+#include "curl_multibyte.h"
+#include "curl_printf.h"
+#include "hostcheck.h"
+#include "system_win32.h"
+
+/* The last #include file should be: */
+#include "curl_memory.h"
+#include "memdebug.h"
+
+#define BACKEND connssl->backend
+
+#define MAX_CAFILE_SIZE 1048576 /* 1 MiB */
+#define BEGIN_CERT "-----BEGIN CERTIFICATE-----\n"
+#define END_CERT "\n-----END CERTIFICATE-----"
+
+typedef struct {
+  DWORD cbSize;
+  HCERTSTORE hRestrictedRoot;
+  HCERTSTORE hRestrictedTrust;
+  HCERTSTORE hRestrictedOther;
+  DWORD cAdditionalStore;
+  HCERTSTORE *rghAdditionalStore;
+  DWORD dwFlags;
+  DWORD dwUrlRetrievalTimeout;
+  DWORD MaximumCachedCertificates;
+  DWORD CycleDetectionModulus;
+  HCERTSTORE hExclusiveRoot;
+  HCERTSTORE hExclusiveTrustedPeople;
+} CERT_CHAIN_ENGINE_CONFIG_WIN7, *PCERT_CHAIN_ENGINE_CONFIG_WIN7;
+
+
+static CURLcode add_certs_to_store(HCERTSTORE trust_store,
+                                   const char *ca_file,
+                                   struct connectdata *conn)
+{
+  CURLcode result;
+  struct Curl_easy *data = conn->data;
+  HANDLE ca_file_handle = INVALID_HANDLE_VALUE;
+  LARGE_INTEGER file_size;
+  char *ca_file_buffer = NULL;
+  char *current_ca_file_ptr = NULL;
+  const TCHAR *ca_file_tstr = NULL;
+  size_t ca_file_bufsize = 0;
+  DWORD total_bytes_read = 0;
+  bool more_certs = 0;
+  int num_certs = 0;
+  size_t END_CERT_LEN;
+
+  ca_file_tstr = Curl_convert_UTF8_to_tchar(ca_file);
+  if(!ca_file_tstr) {
+    failf(data,
+          "schannel: invalid path name for CA file '%s': %s",
+          ca_file, Curl_strerror(conn, GetLastError()));
+    result = CURLE_SSL_CACERT_BADFILE;
+    goto cleanup;
+  }
+
+  /*
+   * Read the CA file completely into memory before parsing it. This
+   * optimizes for the common case where the CA file will be relatively
+   * small ( < 1 MiB ).
+   */
+  ca_file_handle = CreateFile(ca_file_tstr,
+                              GENERIC_READ,
+                              0,
+                              NULL,
+                              OPEN_EXISTING,
+                              FILE_ATTRIBUTE_NORMAL,
+                              NULL);
+  if(ca_file_handle == INVALID_HANDLE_VALUE) {
+    failf(data,
+          "schannel: failed to open CA file '%s': %s",
+          ca_file, Curl_strerror(conn, GetLastError()));
+    result = CURLE_SSL_CACERT_BADFILE;
+    goto cleanup;
+  }
+
+  if(!GetFileSizeEx(ca_file_handle, &file_size)) {
+    failf(data,
+          "schannel: failed to determine size of CA file '%s': %s",
+          ca_file, Curl_strerror(conn, GetLastError()));
+    result = CURLE_SSL_CACERT_BADFILE;
+    goto cleanup;
+  }
+
+  if(file_size.QuadPart > MAX_CAFILE_SIZE) {
+    failf(data,
+          "schannel: CA file exceeds max size of %u bytes",
+          MAX_CAFILE_SIZE);
+    result = CURLE_OUT_OF_MEMORY;
+    goto cleanup;
+  }
+
+  ca_file_bufsize = (size_t)file_size.QuadPart;
+  ca_file_buffer = (char *)malloc(ca_file_bufsize + 1);
+  if(!ca_file_buffer) {
+    result = CURLE_OUT_OF_MEMORY;
+    goto cleanup;
+  }
+
+  result = CURLE_OK;
+  while(total_bytes_read < ca_file_bufsize) {
+    DWORD bytes_to_read = (DWORD)(ca_file_bufsize - total_bytes_read);
+    DWORD bytes_read = 0;
+
+    if(!ReadFile(ca_file_handle, ca_file_buffer + total_bytes_read,
+                 bytes_to_read, &bytes_read, NULL)) {
+
+      failf(data,
+            "schannel: failed to read from CA file '%s': %s",
+            ca_file, Curl_strerror(conn, GetLastError()));
+      result = CURLE_SSL_CACERT_BADFILE;
+      goto cleanup;
+    }
+    if(bytes_read == 0) {
+      /* Premature EOF -- adjust the bufsize to the new value */
+      ca_file_bufsize = total_bytes_read;
+    }
+    else {
+      total_bytes_read += bytes_read;
+    }
+  }
+
+  /* Null terminate the buffer */
+  ca_file_buffer[ca_file_bufsize] = '\0';
+
+  if(result != CURLE_OK) {
+    goto cleanup;
+  }
+
+  END_CERT_LEN = strlen(END_CERT);
+
+  more_certs = 1;
+  current_ca_file_ptr = ca_file_buffer;
+  while(more_certs && *current_ca_file_ptr != '\0') {
+    char *begin_cert_ptr = strstr(current_ca_file_ptr, BEGIN_CERT);
+    if(!begin_cert_ptr) {
+      more_certs = 0;
+    }
+    else {
+      char *end_cert_ptr = strstr(begin_cert_ptr, END_CERT);
+      if(!end_cert_ptr) {
+        failf(data,
+              "schannel: CA file '%s' is not correctly formatted",
+              ca_file);
+        result = CURLE_SSL_CACERT_BADFILE;
+        more_certs = 0;
+      }
+      else {
+        CERT_BLOB cert_blob;
+        CERT_CONTEXT *cert_context = NULL;
+        BOOL add_cert_result = FALSE;
+        DWORD actual_content_type = 0;
+        DWORD cert_size = (DWORD)
+          ((end_cert_ptr + END_CERT_LEN) - begin_cert_ptr);
+
+        cert_blob.pbData = (BYTE *)begin_cert_ptr;
+        cert_blob.cbData = cert_size;
+        if(!CryptQueryObject(CERT_QUERY_OBJECT_BLOB,
+                             &cert_blob,
+                             CERT_QUERY_CONTENT_FLAG_CERT,
+                             CERT_QUERY_FORMAT_FLAG_ALL,
+                             0,
+                             NULL,
+                             &actual_content_type,
+                             NULL,
+                             NULL,
+                             NULL,
+                             &cert_context)) {
+
+          failf(data,
+                "schannel: failed to extract certificate from CA file "
+                "'%s': %s",
+                ca_file, Curl_strerror(conn, GetLastError()));
+          result = CURLE_SSL_CACERT_BADFILE;
+          more_certs = 0;
+        }
+        else {
+          current_ca_file_ptr = begin_cert_ptr + cert_size;
+
+          /* Sanity check that the cert_context object is the right type */
+          if(CERT_QUERY_CONTENT_CERT != actual_content_type) {
+            failf(data,
+                  "schannel: unexpected content type '%d' when extracting "
+                  "certificate from CA file '%s'",
+                  actual_content_type, ca_file);
+            result = CURLE_SSL_CACERT_BADFILE;
+            more_certs = 0;
+          }
+          else {
+            add_cert_result =
+              CertAddCertificateContextToStore(trust_store,
+                                               cert_context,
+                                               CERT_STORE_ADD_ALWAYS,
+                                               NULL);
+            CertFreeCertificateContext(cert_context);
+            if(!add_cert_result) {
+              failf(data,
+                    "schannel: failed to add certificate from CA file '%s'"
+                    "to certificate store: %s",
+                    ca_file, Curl_strerror(conn, GetLastError()));
+              result = CURLE_SSL_CACERT_BADFILE;
+              more_certs = 0;
+            }
+            else {
+              num_certs++;
+            }
+          }
+        }
+      }
+    }
+  }
+
+  if(result == CURLE_OK) {
+    if(!num_certs) {
+      infof(data,
+            "schannel: did not add any certificates from CA file '%s'\n",
+            ca_file);
+    }
+    else {
+      infof(data,
+            "schannel: added %d certificate(s) from CA file '%s'\n",
+            num_certs, ca_file);
+    }
+  }
+
+cleanup:
+  if(ca_file_handle != INVALID_HANDLE_VALUE) {
+    CloseHandle(ca_file_handle);
+  }
+  Curl_safefree(ca_file_buffer);
+  Curl_unicodefree(ca_file_tstr);
+
+  return result;
+}
+
+static CURLcode verify_host(struct Curl_easy *data,
+                            CERT_CONTEXT *pCertContextServer,
+                            const char * const conn_hostname)
+{
+  CURLcode result = CURLE_PEER_FAILED_VERIFICATION;
+  TCHAR *cert_hostname_buff = NULL;
+  size_t cert_hostname_buff_index = 0;
+  DWORD len = 0;
+  DWORD actual_len = 0;
+
+  /* CertGetNameString will provide the 8-bit character string without
+   * any decoding */
+  DWORD name_flags = CERT_NAME_DISABLE_IE4_UTF8_FLAG;
+
+#ifdef CERT_NAME_SEARCH_ALL_NAMES_FLAG
+  name_flags |= CERT_NAME_SEARCH_ALL_NAMES_FLAG;
+#endif
+
+  /* Determine the size of the string needed for the cert hostname */
+  len = CertGetNameString(pCertContextServer,
+                          CERT_NAME_DNS_TYPE,
+                          name_flags,
+                          NULL,
+                          NULL,
+                          0);
+  if(len == 0) {
+    failf(data,
+          "schannel: CertGetNameString() returned no "
+          "certificate name information");
+    result = CURLE_PEER_FAILED_VERIFICATION;
+    goto cleanup;
+  }
+
+  /* CertGetNameString guarantees that the returned name will not contain
+   * embedded null bytes. This appears to be undocumented behavior.
+   */
+  cert_hostname_buff = (LPTSTR)malloc(len * sizeof(TCHAR));
+  actual_len = CertGetNameString(pCertContextServer,
+                                 CERT_NAME_DNS_TYPE,
+                                 name_flags,
+                                 NULL,
+                                 (LPTSTR) cert_hostname_buff,
+                                 len);
+
+  /* Sanity check */
+  if(actual_len != len) {
+    failf(data,
+          "schannel: CertGetNameString() returned certificate "
+          "name information of unexpected size");
+    result = CURLE_PEER_FAILED_VERIFICATION;
+    goto cleanup;
+  }
+
+  /* If HAVE_CERT_NAME_SEARCH_ALL_NAMES is available, the output
+   * will contain all DNS names, where each name is null-terminated
+   * and the last DNS name is double null-terminated. Due to this
+   * encoding, use the length of the buffer to iterate over all names.
+   */
+  result = CURLE_PEER_FAILED_VERIFICATION;
+  while(cert_hostname_buff_index < len &&
+        cert_hostname_buff[cert_hostname_buff_index] != TEXT('\0') &&
+        result == CURLE_PEER_FAILED_VERIFICATION) {
+
+    char *cert_hostname;
+
+    /* Comparing the cert name and the connection hostname encoded as UTF-8
+     * is acceptable since both values are assumed to use ASCII
+     * (or some equivalent) encoding
+     */
+    cert_hostname = Curl_convert_tchar_to_UTF8(
+        &cert_hostname_buff[cert_hostname_buff_index]);
+    if(!cert_hostname) {
+      result = CURLE_OUT_OF_MEMORY;
+    }
+    else {
+      int match_result;
+
+      match_result = Curl_cert_hostcheck(cert_hostname, conn_hostname);
+      if(match_result == CURL_HOST_MATCH) {
+        infof(data,
+              "schannel: connection hostname (%s) validated "
+              "against certificate name (%s)\n",
+              conn_hostname, cert_hostname);
+        result = CURLE_OK;
+      }
+      else {
+        size_t cert_hostname_len;
+
+        infof(data,
+              "schannel: connection hostname (%s) did not match "
+              "against certificate name (%s)\n",
+              conn_hostname, cert_hostname);
+
+        cert_hostname_len = _tcslen(
+            &cert_hostname_buff[cert_hostname_buff_index]);
+
+        /* Move on to next cert name */
+        cert_hostname_buff_index += cert_hostname_len + 1;
+
+        result = CURLE_PEER_FAILED_VERIFICATION;
+      }
+      Curl_unicodefree(cert_hostname);
+    }
+  }
+
+  if(result == CURLE_PEER_FAILED_VERIFICATION) {
+    failf(data,
+          "schannel: CertGetNameString() failed to match "
+          "connection hostname (%s) against server certificate names",
+          conn_hostname);
+  }
+  else if(result != CURLE_OK)
+    failf(data, "schannel: server certificate name verification failed");
+
+cleanup:
+  Curl_unicodefree(cert_hostname_buff);
+
+  return result;
+}
+
+CURLcode verify_certificate(struct connectdata *conn, int sockindex)
+{
+  SECURITY_STATUS status;
+  struct Curl_easy *data = conn->data;
+  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+  CURLcode result = CURLE_OK;
+  CERT_CONTEXT *pCertContextServer = NULL;
+  const CERT_CHAIN_CONTEXT *pChainContext = NULL;
+  HCERTCHAINENGINE cert_chain_engine = NULL;
+  HCERTSTORE trust_store = NULL;
+  const char * const conn_hostname = SSL_IS_PROXY() ?
+    conn->http_proxy.host.name :
+    conn->host.name;
+
+  status = s_pSecFn->QueryContextAttributes(&BACKEND->ctxt->ctxt_handle,
+                                            SECPKG_ATTR_REMOTE_CERT_CONTEXT,
+                                            &pCertContextServer);
+
+  if((status != SEC_E_OK) || (pCertContextServer == NULL)) {
+    failf(data, "schannel: Failed to read remote certificate context: %s",
+          Curl_sspi_strerror(conn, status));
+    result = CURLE_PEER_FAILED_VERIFICATION;
+  }
+
+  if(result == CURLE_OK && SSL_CONN_CONFIG(CAfile) &&
+      BACKEND->use_manual_cred_validation) {
+    /*
+     * Create a chain engine that uses the certificates in the CA file as
+     * trusted certificates. This is only supported on Windows 7+.
+     */
+
+    if(Curl_verify_windows_version(6, 1, PLATFORM_WINNT, VERSION_LESS_THAN)) {
+      failf(data, "schannel: this version of Windows is too old to support "
+            "certificate verification via CA bundle file.");
+      result = CURLE_SSL_CACERT_BADFILE;
+    }
+    else {
+      /* Open the certificate store */
+      trust_store = CertOpenStore(CERT_STORE_PROV_MEMORY,
+                                  0,
+                                  (HCRYPTPROV)NULL,
+                                  CERT_STORE_CREATE_NEW_FLAG,
+                                  NULL);
+      if(!trust_store) {
+        failf(data, "schannel: failed to create certificate store: %s",
+              Curl_strerror(conn, GetLastError()));
+        result = CURLE_SSL_CACERT_BADFILE;
+      }
+      else {
+        result = add_certs_to_store(trust_store, SSL_CONN_CONFIG(CAfile),
+                                    conn);
+      }
+    }
+
+    if(result == CURLE_OK) {
+      CERT_CHAIN_ENGINE_CONFIG_WIN7 engine_config;
+      BOOL create_engine_result;
+
+      memset(&engine_config, 0, sizeof(engine_config));
+      engine_config.cbSize = sizeof(engine_config);
+      engine_config.hExclusiveRoot = trust_store;
+
+      /* CertCreateCertificateChainEngine will check the expected size of the
+       * CERT_CHAIN_ENGINE_CONFIG structure and fail if the specified size
+       * does not match the expected size. When this occurs, it indicates that
+       * CAINFO is not supported on the version of Windows in use.
+       */
+      create_engine_result =
+        CertCreateCertificateChainEngine(
+          (CERT_CHAIN_ENGINE_CONFIG *)&engine_config, &cert_chain_engine);
+      if(!create_engine_result) {
+        failf(data,
+              "schannel: failed to create certificate chain engine: %s",
+              Curl_strerror(conn, GetLastError()));
+        result = CURLE_SSL_CACERT_BADFILE;
+      }
+    }
+  }
+
+  if(result == CURLE_OK) {
+    CERT_CHAIN_PARA ChainPara;
+
+    memset(&ChainPara, 0, sizeof(ChainPara));
+    ChainPara.cbSize = sizeof(ChainPara);
+
+    if(!CertGetCertificateChain(cert_chain_engine,
+                                pCertContextServer,
+                                NULL,
+                                pCertContextServer->hCertStore,
+                                &ChainPara,
+                                (data->set.ssl.no_revoke ? 0 :
+                                 CERT_CHAIN_REVOCATION_CHECK_CHAIN),
+                                NULL,
+                                &pChainContext)) {
+      failf(data, "schannel: CertGetCertificateChain failed: %s",
+            Curl_sspi_strerror(conn, GetLastError()));
+      pChainContext = NULL;
+      result = CURLE_PEER_FAILED_VERIFICATION;
+    }
+
+    if(result == CURLE_OK) {
+      CERT_SIMPLE_CHAIN *pSimpleChain = pChainContext->rgpChain[0];
+      DWORD dwTrustErrorMask = ~(DWORD)(CERT_TRUST_IS_NOT_TIME_NESTED);
+      dwTrustErrorMask &= pSimpleChain->TrustStatus.dwErrorStatus;
+      if(dwTrustErrorMask) {
+        if(dwTrustErrorMask & CERT_TRUST_IS_REVOKED)
+          failf(data, "schannel: CertGetCertificateChain trust error"
+                " CERT_TRUST_IS_REVOKED");
+        else if(dwTrustErrorMask & CERT_TRUST_IS_PARTIAL_CHAIN)
+          failf(data, "schannel: CertGetCertificateChain trust error"
+                " CERT_TRUST_IS_PARTIAL_CHAIN");
+        else if(dwTrustErrorMask & CERT_TRUST_IS_UNTRUSTED_ROOT)
+          failf(data, "schannel: CertGetCertificateChain trust error"
+                " CERT_TRUST_IS_UNTRUSTED_ROOT");
+        else if(dwTrustErrorMask & CERT_TRUST_IS_NOT_TIME_VALID)
+          failf(data, "schannel: CertGetCertificateChain trust error"
+                " CERT_TRUST_IS_NOT_TIME_VALID");
+        else if(dwTrustErrorMask & CERT_TRUST_REVOCATION_STATUS_UNKNOWN)
+          failf(data, "schannel: CertGetCertificateChain trust error"
+                " CERT_TRUST_REVOCATION_STATUS_UNKNOWN");
+        else
+          failf(data, "schannel: CertGetCertificateChain error mask: 0x%08x",
+                dwTrustErrorMask);
+        result = CURLE_PEER_FAILED_VERIFICATION;
+      }
+    }
+  }
+
+  if(result == CURLE_OK) {
+    if(SSL_CONN_CONFIG(verifyhost)) {
+      result = verify_host(conn->data, pCertContextServer, conn_hostname);
+    }
+  }
+
+  if(cert_chain_engine) {
+    CertFreeCertificateChainEngine(cert_chain_engine);
+  }
+
+  if(trust_store) {
+    CertCloseStore(trust_store, 0);
+  }
+
+  if(pChainContext)
+    CertFreeCertificateChain(pChainContext);
+
+  if(pCertContextServer)
+    CertFreeCertificateContext(pCertContextServer);
+
+  return result;
+}
+
+#endif /* USE_SCHANNEL */
diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
index def1d30..ee5bc7a 100644
--- a/lib/vtls/vtls.c
+++ b/lib/vtls/vtls.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -211,7 +211,7 @@
      !conn->proxy_ssl[sockindex].use) {
     struct ssl_backend_data *pbdata;
 
-    if(!Curl_ssl->support_https_proxy)
+    if(!(Curl_ssl->supports & SSLSUPP_HTTPS_PROXY))
       return CURLE_NOT_BUILT_IN;
 
     /* The pointers to the ssl backend data, which is opaque here, are swapped
@@ -511,7 +511,7 @@
 
 #if defined(USE_OPENSSL) || defined(USE_GNUTLS) || defined(USE_SCHANNEL) || \
   defined(USE_DARWINSSL) || defined(USE_POLARSSL) || defined(USE_NSS) || \
-  defined(USE_MBEDTLS)
+  defined(USE_MBEDTLS) || defined(USE_CYASSL)
 int Curl_ssl_getsock(struct connectdata *conn, curl_socket_t *socks,
                      int numsocks)
 {
@@ -831,8 +831,12 @@
     sha256sumdigest = malloc(CURL_SHA256_DIGEST_LENGTH);
     if(!sha256sumdigest)
       return CURLE_OUT_OF_MEMORY;
-    Curl_ssl->sha256sum(pubkey, pubkeylen,
+    encode = Curl_ssl->sha256sum(pubkey, pubkeylen,
                         sha256sumdigest, CURL_SHA256_DIGEST_LENGTH);
+
+    if(encode != CURLE_OK)
+      return encode;
+
     encode = Curl_base64_encode(data, (char *)sha256sumdigest,
                                 CURL_SHA256_DIGEST_LENGTH, &encoded,
                                 &encodedlen);
@@ -1127,13 +1131,7 @@
 
 static const struct Curl_ssl Curl_ssl_multi = {
   { CURLSSLBACKEND_NONE, "multi" },  /* info */
-
-  0, /* have_ca_path */
-  0, /* have_certinfo */
-  0, /* have_pinnedpubkey */
-  0, /* have_ssl_ctx */
-  0, /* support_https_proxy */
-
+  0, /* supports nothing */
   (size_t)-1, /* something insanely large to be on the safe side */
 
   Curl_multissl_init,                /* init */
@@ -1300,6 +1298,9 @@
 {
   int i;
 
+  if(avail)
+    *avail = (const curl_ssl_backend **)&available_backends;
+
   if(Curl_ssl != &Curl_ssl_multi)
     return id == Curl_ssl->info.id ? CURLSSLSET_OK : CURLSSLSET_TOO_LATE;
 
@@ -1311,8 +1312,6 @@
     }
   }
 
-  if(avail)
-    *avail = (const curl_ssl_backend **)&available_backends;
   return CURLSSLSET_UNKNOWN_BACKEND;
 }
 
diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
index c5f9d4a..e7b87c4 100644
--- a/lib/vtls/vtls.h
+++ b/lib/vtls/vtls.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,20 +26,19 @@
 struct connectdata;
 struct ssl_connect_data;
 
+#define SSLSUPP_CA_PATH      (1<<0) /* supports CAPATH */
+#define SSLSUPP_CERTINFO     (1<<1) /* supports CURLOPT_CERTINFO */
+#define SSLSUPP_PINNEDPUBKEY (1<<2) /* supports CURLOPT_PINNEDPUBLICKEY */
+#define SSLSUPP_SSL_CTX      (1<<3) /* supports CURLOPT_SSL_CTX */
+#define SSLSUPP_HTTPS_PROXY  (1<<4) /* supports access via HTTPS proxies */
+
 struct Curl_ssl {
   /*
    * This *must* be the first entry to allow returning the list of available
    * backends in curl_global_sslset().
    */
   curl_ssl_backend info;
-
-  unsigned have_ca_path:1;      /* supports CAPATH */
-  unsigned have_certinfo:1;     /* supports CURLOPT_CERTINFO */
-  unsigned have_pinnedpubkey:1; /* supports CURLOPT_PINNEDPUBLICKEY */
-  unsigned have_ssl_ctx:1;      /* supports CURLOPT_SSL_CTX_* */
-
-  unsigned support_https_proxy:1; /* supports access via HTTPS proxies */
-
+  unsigned int supports; /* bitfield, see above */
   size_t sizeof_ssl_backend_data;
 
   int (*init)(void);
@@ -72,7 +71,7 @@
 
   CURLcode (*md5sum)(unsigned char *input, size_t inputlen,
                      unsigned char *md5sum, size_t md5sumlen);
-  void (*sha256sum)(const unsigned char *input, size_t inputlen,
+  CURLcode (*sha256sum)(const unsigned char *input, size_t inputlen,
                     unsigned char *sha256sum, size_t sha256sumlen);
 };
 
@@ -113,8 +112,10 @@
 #endif
 
 #ifndef MD5_DIGEST_LENGTH
+#ifndef LIBWOLFSSL_VERSION_HEX /* because WolfSSL borks this */
 #define MD5_DIGEST_LENGTH 16 /* fixed size */
 #endif
+#endif
 
 #ifndef CURL_SHA256_DIGEST_LENGTH
 #define CURL_SHA256_DIGEST_LENGTH 32 /* fixed size */
diff --git a/lib/warnless.h b/lib/warnless.h
index ab6d299..f6a2d74 100644
--- a/lib/warnless.h
+++ b/lib/warnless.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
diff --git a/lib/wildcard.c b/lib/wildcard.c
index af45c79..8ba0989 100644
--- a/lib/wildcard.c
+++ b/lib/wildcard.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -30,9 +30,15 @@
 #include "curl_memory.h"
 #include "memdebug.h"
 
+static void fileinfo_dtor(void *user, void *element)
+{
+  (void)user;
+  Curl_fileinfo_cleanup(element);
+}
+
 CURLcode Curl_wildcard_init(struct WildcardData *wc)
 {
-  Curl_llist_init(&wc->filelist, Curl_fileinfo_dtor);
+  Curl_llist_init(&wc->filelist, fileinfo_dtor);
   wc->state = CURLWC_INIT;
 
   return CURLE_OK;
@@ -43,12 +49,12 @@
   if(!wc)
     return;
 
-  if(wc->tmp_dtor) {
-    wc->tmp_dtor(wc->tmp);
-    wc->tmp_dtor = ZERO_NULL;
-    wc->tmp = NULL;
+  if(wc->dtor) {
+    wc->dtor(wc->protdata);
+    wc->dtor = ZERO_NULL;
+    wc->protdata = NULL;
   }
-  DEBUGASSERT(wc->tmp == NULL);
+  DEBUGASSERT(wc->protdata == NULL);
 
   Curl_llist_destroy(&wc->filelist, NULL);
 
diff --git a/lib/wildcard.h b/lib/wildcard.h
index 8a5e4b7..b782612 100644
--- a/lib/wildcard.h
+++ b/lib/wildcard.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2010 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -40,7 +40,7 @@
                    will end */
 } curl_wildcard_states;
 
-typedef void (*curl_wildcard_tmp_dtor)(void *ptr);
+typedef void (*curl_wildcard_dtor)(void *ptr);
 
 /* struct keeping information about wildcard download process */
 struct WildcardData {
@@ -48,8 +48,8 @@
   char *path; /* path to the directory, where we trying wildcard-match */
   char *pattern; /* wildcard pattern */
   struct curl_llist filelist; /* llist with struct Curl_fileinfo */
-  void *tmp; /* pointer to protocol specific temporary data */
-  curl_wildcard_tmp_dtor tmp_dtor;
+  void *protdata; /* pointer to protocol specific temporary data */
+  curl_wildcard_dtor dtor;
   void *customptr;  /* for CURLOPT_CHUNK_DATA pointer */
 };
 
diff --git a/local-configure.patch b/local-configure.patch
index ddeab80..68ad1c6 100644
--- a/local-configure.patch
+++ b/local-configure.patch
@@ -2,32 +2,15 @@
 index f9aef69e2..f5ba92735 100644
 --- a/lib/curl_config.h
 +++ b/lib/curl_config.h
-@@ -143,7 +143,10 @@
- /* #undef HAVE_BUILTIN_AVAILABLE */
- 
- /* Define to 1 if you have the clock_gettime function and monotonic timer. */
-+#if !defined(__APPLE__)
-+/* CLOCK_MONOTONIC is not defined in mac when building for the host. */
- #define HAVE_CLOCK_GETTIME_MONOTONIC 1
-+#endif
- 
- /* Define to 1 if you have the closesocket function. */
- /* #undef HAVE_CLOSESOCKET */
-@@ -454,10 +457,14 @@
- #define HAVE_MEMORY_H 1
- 
- /* Define to 1 if you have the memrchr function or macro. */
-+#if !defined(__APPLE__)
- #define HAVE_MEMRCHR 1
-+#endif
- 
- /* Define to 1 if you have the MSG_NOSIGNAL flag. */
-+#if !defined(__APPLE__)
- #define HAVE_MSG_NOSIGNAL 1
-+#endif
- 
- /* Define to 1 if you have the <netdb.h> header file. */
+@@ -473,7 +473,7 @@
  #define HAVE_NETDB_H 1
+ 
+ /* Define to 1 if you have the <netinet/in6.h> header file. */
+-#define HAVE_NETINET_IN6_H 1
++/* #undef HAVE_NETINET_IN6_H */
+ 
+ /* Define to 1 if you have the <netinet/in.h> header file. */
+ #define HAVE_NETINET_IN_H 1
 @@ -808,9 +815,6 @@
  /* Define absolute filename for winbind's ntlm_auth helper. */
  /* #undef NTLM_WB_FILE */
diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4
index 422946e..c1ae6a5 100644
--- a/m4/curl-compilers.m4
+++ b/m4/curl-compilers.m4
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -1044,6 +1044,23 @@
             tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion"
           fi
           #
+          dnl Only gcc 6 or later
+          if test "$compiler_num" -ge "600"; then
+            tmp_CFLAGS="$tmp_CFLAGS -Wshift-negative-value"
+            tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2"
+            tmp_CFLAGS="$tmp_CFLAGS -Wnull-dereference"
+            tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-cond"
+          fi
+          #
+          dnl Only gcc 7 or later
+          if test "$compiler_num" -ge "700"; then
+            tmp_CFLAGS="$tmp_CFLAGS -Wduplicated-branches"
+            tmp_CFLAGS="$tmp_CFLAGS -Wrestrict"
+            tmp_CFLAGS="$tmp_CFLAGS -Walloc-zero"
+            tmp_CFLAGS="$tmp_CFLAGS -Wformat-overflow=2"
+            tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2"
+          fi
+          #
         fi
         #
         dnl Do not issue warnings for code in system include paths.
@@ -1282,15 +1299,6 @@
       want_curldebug="no"
     fi
   fi
-  #
-  if test "$want_curldebug" = "yes"; then
-    CPPFLAGS="-DCURLDEBUG $CPPFLAGS"
-    squeeze CPPFLAGS
-  fi
-  if test "$want_debug" = "yes"; then
-    CPPFLAGS="-DDEBUGBUILD $CPPFLAGS"
-    squeeze CPPFLAGS
-  fi
 ])
 
 
diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4
index 6dcd0f1..ad6acd8 100644
--- a/m4/curl-confopts.m4
+++ b/m4/curl-confopts.m4
@@ -114,6 +114,7 @@
       dnl as a request to disable curldebug.
       if test "$want_debug" = "yes"; then
         AC_MSG_RESULT([(assumed) yes])
+        AC_DEFINE(CURLDEBUG, 1, [to enable curl debug memory tracking])
       else
         AC_MSG_RESULT([no])
       fi
@@ -130,6 +131,7 @@
       dnl --disable-curldebug had been given setting shell variable
       dnl want_curldebug to 'no'.
       want_curldebug="yes"
+      AC_DEFINE(CURLDEBUG, 1, [to enable curl debug memory tracking])
       AC_MSG_RESULT([yes])
       ;;
   esac
@@ -164,6 +166,7 @@
     *)
       dnl --enable-debug option used
       want_debug="yes"
+      AC_DEFINE(DEBUGBUILD, 1, [enable debug build options])
       ;;
   esac
   AC_MSG_RESULT([$want_debug])
diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
index dde7fe2..1bbde9e 100644
--- a/m4/curl-functions.m4
+++ b/m4/curl-functions.m4
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -7008,3 +7008,19 @@
     curl_cv_func_writev="no"
   fi
 ])
+
+dnl CURL_RUN_IFELSE
+dnl -------------------------------------------------
+dnl Wrapper macro to use instead of AC_RUN_IFELSE. It
+dnl sets LD_LIBRARY_PATH locally for this run only, from the
+dnl CURL_LIBRARY_PATH variable. It keeps the LD_LIBRARY_PATH
+dnl changes contained within this macro.
+
+AC_DEFUN([CURL_RUN_IFELSE], [
+   AC_REQUIRE([AC_RUN_IFELSE])dnl
+
+   old=$LD_LIBRARY_PATH
+   LD_LIBRARY_PATH=$CURL_LIBRARY_PATH
+   AC_RUN_IFELSE([AC_LANG_SOURCE([$1])], $2, $3, $4)
+   LD_LIBRARY_PATH=$old # restore
+])
diff --git a/m4/curl-openssl.m4 b/m4/curl-openssl.m4
index 20c3126..d558278 100644
--- a/m4/curl-openssl.m4
+++ b/m4/curl-openssl.m4
@@ -29,7 +29,7 @@
 dnl Find out OpenSSL headers API version, as reported
 dnl by OPENSSL_VERSION_NUMBER. No runtime checks
 dnl allowed here for cross-compilation support.
-dnl HAVE_OPENSSL_API_HEADERS is defined as apprpriate
+dnl HAVE_OPENSSL_API_HEADERS is defined as appropriate
 dnl only for systems which actually run the configure
 dnl script. Config files generated manually or in any
 dnl other way shall not define this.
@@ -66,6 +66,7 @@
         ;;
     esac
     case $tst_api in
+      0x111) tst_show="1.1.1" ;;
       0x110) tst_show="1.1.0" ;;
       0x102) tst_show="1.0.2" ;;
       0x101) tst_show="1.0.1" ;;
@@ -102,7 +103,7 @@
 dnl only link tests in order to avoid getting fooled
 dnl by mismatched OpenSSL headers. No runtime checks
 dnl allowed here for cross-compilation support.
-dnl HAVE_OPENSSL_API_LIBRARY is defined as apprpriate
+dnl HAVE_OPENSSL_API_LIBRARY is defined as appropriate
 dnl only for systems which actually run the configure
 dnl script. Config files generated manually or in any
 dnl other way shall not define this.
@@ -122,6 +123,13 @@
   #
   AC_MSG_CHECKING([for OpenSSL library version])
   if test "$tst_api" = "unknown"; then
+    AC_LINK_IFELSE([
+      AC_LANG_FUNC_LINK_TRY([ERR_clear_last_mark])
+    ],[
+      tst_api="0x111"
+    ])
+  fi
+  if test "$tst_api" = "unknown"; then
     case $host in
       *-*-vms*)
         AC_LINK_IFELSE([
@@ -217,6 +225,7 @@
     ])
   fi
   case $tst_api in
+    0x111) tst_show="1.1.1" ;;
     0x110) tst_show="1.1.0" ;;
     0x102) tst_show="1.0.2" ;;
     0x101) tst_show="1.0.1" ;;
diff --git a/m4/zz40-xc-ovr.m4 b/m4/zz40-xc-ovr.m4
index 0e3b1cb..3d6e695 100644
--- a/m4/zz40-xc-ovr.m4
+++ b/m4/zz40-xc-ovr.m4
@@ -2,7 +2,7 @@
 #
 # zz40-xc-ovr.m4
 #
-# Copyright (c) 2013 Daniel Stenberg <daniel@haxx.se>
+# Copyright (c) 2013 - 2018 Daniel Stenberg <daniel@haxx.se>
 #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
@@ -18,9 +18,6 @@
 #
 #---------------------------------------------------------------------------
 
-# serial 1
-
-
 dnl The funny name of this file is intentional in order to make it
 dnl sort alphabetically after any libtool, autoconf or automake
 dnl provided .m4 macro file that might get copied into this same
@@ -398,9 +395,10 @@
   # When both counting methods give the same result we do not want to
   # chose one over the other, and consider auto-detection not possible.
   if test -z "$PATH_SEPARATOR"; then
-    # Stop dead until user provides 'PATH_SEPARATOR' definition.
-    echo "$xc_msg_err 'PATH_SEPARATOR' variable not set. $xc_msg_abrt" >&2
-    exit 1
+    # User should provide the correct 'PATH_SEPARATOR' definition.
+    # Until then, guess that it is colon!
+    echo "$xc_msg_warn path separator not determined, guessing colon" >&2
+    PATH_SEPARATOR=':'
   fi
 else
   # Separator with the greater directory count is the auto-detected one.
diff --git a/packages/DOS/README b/packages/DOS/README
index c2ab9b9..5278f2c 100644
--- a/packages/DOS/README
+++ b/packages/DOS/README
@@ -4,7 +4,7 @@
 'make djgpp' in the root curl dir should build it fine.
 
 Note 1: djgpp 2.04 beta has a sscanf() bug so the URL parsing isn't
-        done proberly. Use djgpp 2.03 until they fix it.
+        done properly. Use djgpp 2.03 until they fix it.
 
 Note 2: Compile Watt-32 (and OpenSSL) with the same version of djgpp.
         Otherwise things go wrong because things like FS-extensions and
diff --git a/packages/OS400/README.OS400 b/packages/OS400/README.OS400
index f9817b4..c766a1f 100644
--- a/packages/OS400/README.OS400
+++ b/packages/OS400/README.OS400
@@ -183,8 +183,8 @@
         CURLINFO_COOKIELIST
 Lists returned should be released with curl_slist_free_all() after use.
   Option CURLINFO_CERTINFO is followed by a struct curl_certinfo * * and a
-CCSID. Returned structures sould be free'ed using curl_certinfo_free_all() after
-use.
+CCSID. Returned structures should be free'ed using curl_certinfo_free_all()
+after use.
   Other options are processed like in curl_easy_getinfo().
 
 _ curl_pushheader_bynum_cssid() and curl_pushheader_byname_ccsid()
@@ -243,7 +243,7 @@
 _ Likewise, if SCP and SFTP protocols have to be compiled in, LIBSSH2
   developent environment must be installed.
 _ Install the curl source directory in IFS. Do NOT install it in the
-  installation target directory (wich defaults to /curl).
+  installation target directory (which defaults to /curl).
 _ Enter shell (QSH)
 _ Change current directory to the curl installation directory
 _ Change current directory to ./packages/OS400
diff --git a/packages/OS400/curl.inc.in b/packages/OS400/curl.inc.in
index 03603e2..b2ff6d6 100644
--- a/packages/OS400/curl.inc.in
+++ b/packages/OS400/curl.inc.in
@@ -1322,6 +1322,18 @@
      d                 c                   00268
      d  CURLOPT_MIMEPOST...
      d                 c                   10269
+     d  CURLOPT_TIMEVALUE_LARGE...
+     d                 c                   30270
+     d  CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS...
+     d                 c                   00271
+     d  CURLOPT_RESOLVER_START_FUNCTION...
+     d                 c                   20272
+     d  CURLOPT_RESOLVER_START_DATA...
+     d                 c                   10273
+     d  CURLOPT_HAPROXYPROTOCOL...
+     d                 c                   00274
+     d  CURLOPT_DNS_SHUFFLE_ADDRESSES...
+     d                 c                   00275
       *
       /if not defined(CURL_NO_OLDIES)
      d  CURLOPT_FILE   c                   10001
@@ -1960,6 +1972,9 @@
      d curl_closesocket_callback...
      d                 s               *   based(######ptr######) procptr
       *
+     d curl_resolver_start_callback...
+     d                 s               *   based(######ptr######) procptr
+      *
       **************************************************************************
       *                              Prototypes
       **************************************************************************
diff --git a/packages/OS400/os400sys.c b/packages/OS400/os400sys.c
index 8ae635e..c80f010 100644
--- a/packages/OS400/os400sys.c
+++ b/packages/OS400/os400sys.c
@@ -140,11 +140,12 @@
     return buf->buf;
 
   if(!buf->buf) {
-    if((buf->buf = malloc(size)))
+    buf->buf = malloc(size);
+    if(buf->buf)
       buf->size = size;
 
     return buf->buf;
-    }
+  }
 
   if((unsigned long) size <= buf->size) {
     /* Shorten the buffer only if it frees a significant byte count. This
@@ -152,14 +153,15 @@
 
     if(buf->size - size < MIN_BYTE_GAIN)
       return buf->buf;
-    }
+  }
 
   /* Resize the buffer. */
 
-  if((cp = realloc(buf->buf, size))) {
+  cp = realloc(buf->buf, size);
+  if(cp) {
     buf->buf = cp;
     buf->size = size;
-    }
+  }
   else if(size <= buf->size)
     cp = buf->buf;
 
@@ -193,14 +195,15 @@
 
     /* Allocate buffer descriptors for the current thread. */
 
-    if(!(bufs = calloc((size_t) LK_LAST, sizeof *bufs)))
+    bufs = calloc((size_t) LK_LAST, sizeof *bufs);
+    if(!bufs)
       return (char *) NULL;
 
     if(pthread_setspecific(thdkey, (void *) bufs)) {
       free(bufs);
       return (char *) NULL;
-      }
     }
+  }
 
   return get_buffer(bufs + key, size);
 }
@@ -273,15 +276,19 @@
   enodename = (char *) NULL;
   eservname = (char *) NULL;
 
-  if(nodename && nodenamelen)
-    if(!(enodename = malloc(nodenamelen)))
+  if(nodename && nodenamelen) {
+    enodename = malloc(nodenamelen);
+    if(!enodename)
       return EAI_MEMORY;
+  }
 
-  if(servname && servnamelen)
-    if(!(eservname = malloc(servnamelen))) {
+  if(servname && servnamelen) {
+    eservname = malloc(servnamelen);
+    if(!eservname) {
       free(enodename);
       return EAI_MEMORY;
-      }
+    }
+  }
 
   status = getnameinfo(sa, salen, enodename, nodenamelen,
                        eservname, servnamelen, flags);
@@ -323,24 +330,26 @@
   if(nodename) {
     i = strlen(nodename);
 
-    if(!(enodename = malloc(i + 1)))
+    enodename = malloc(i + 1);
+    if(!enodename)
       return EAI_MEMORY;
 
     i = QadrtConvertA2E(enodename, nodename, i, i);
     enodename[i] = '\0';
-    }
+  }
 
   if(servname) {
     i = strlen(servname);
 
-    if(!(eservname = malloc(i + 1))) {
+    eservname = malloc(i + 1);
+    if(!eservname) {
       free(enodename);
       return EAI_MEMORY;
-      }
+    }
 
     QadrtConvertA2E(eservname, servname, i, i);
     eservname[i] = '\0';
-    }
+  }
 
   status = getaddrinfo(enodename, eservname, hints, res);
   free(enodename);
@@ -385,10 +394,12 @@
 
   if(!my_env_handle)
     return GSK_OS400_ERROR_INVALID_POINTER;
-  if(!(p = (struct Curl_gsk_descriptor *) malloc(sizeof *p)))
+  p = (struct Curl_gsk_descriptor *) malloc(sizeof *p);
+  if(!p)
     return GSK_INSUFFICIENT_STORAGE;
   p->strlist = (struct gskstrlist *) NULL;
-  if((rc = gsk_environment_open(&p->h)) != GSK_OK)
+  rc = gsk_environment_open(&p->h);
+  if(rc != GSK_OK)
     free(p);
   else
     *my_env_handle = (gsk_handle) p;
@@ -410,10 +421,12 @@
   if(!my_session_handle)
     return GSK_OS400_ERROR_INVALID_POINTER;
   h = ((struct Curl_gsk_descriptor *) my_env_handle)->h;
-  if(!(p = (struct Curl_gsk_descriptor *) malloc(sizeof *p)))
+  p = (struct Curl_gsk_descriptor *) malloc(sizeof *p);
+  if(!p)
     return GSK_INSUFFICIENT_STORAGE;
   p->strlist = (struct gskstrlist *) NULL;
-  if((rc = gsk_secure_soc_open(h, &p->h)) != GSK_OK)
+  rc = gsk_secure_soc_open(h, &p->h);
+  if(rc != GSK_OK)
     free(p);
   else
     *my_session_handle = (gsk_handle) p;
@@ -448,7 +461,8 @@
   if(!*my_env_handle)
     return GSK_INVALID_HANDLE;
   p = (struct Curl_gsk_descriptor *) *my_env_handle;
-  if((rc = gsk_environment_close(&p->h)) == GSK_OK) {
+  rc = gsk_environment_close(&p->h);
+  if(rc == GSK_OK) {
     gsk_free_handle(p);
     *my_env_handle = (gsk_handle) NULL;
   }
@@ -468,7 +482,8 @@
   if(!*my_session_handle)
     return GSK_INVALID_HANDLE;
   p = (struct Curl_gsk_descriptor *) *my_session_handle;
-  if((rc = gsk_secure_soc_close(&p->h)) == GSK_OK) {
+  rc = gsk_secure_soc_close(&p->h);
+  if(rc == GSK_OK) {
     gsk_free_handle(p);
     *my_session_handle = (gsk_handle) NULL;
   }
@@ -520,8 +535,9 @@
   p = (struct Curl_gsk_descriptor *) my_gsk_handle;
   if(!bufSize)
     bufSize = strlen(buffer);
-  if(!(ebcdicbuf = malloc(bufSize + 1)))
-      return GSK_INSUFFICIENT_STORAGE;
+  ebcdicbuf = malloc(bufSize + 1);
+  if(!ebcdicbuf)
+    return GSK_INSUFFICIENT_STORAGE;
   QadrtConvertA2E(ebcdicbuf, buffer, bufSize, bufSize);
   ebcdicbuf[bufSize] = '\0';
   rc = gsk_attribute_set_buffer(p->h, bufID, ebcdicbuf, bufSize);
@@ -586,9 +602,11 @@
     if(sp->ebcdicstr == ebcdicbuf)
       break;
   if(!sp) {
-    if(!(sp = (struct gskstrlist *) malloc(sizeof *sp)))
+    sp = (struct gskstrlist *) malloc(sizeof *sp);
+    if(!sp)
       return GSK_INSUFFICIENT_STORAGE;
-    if(!(asciibuf = malloc(bufsize + 1))) {
+    asciibuf = malloc(bufsize + 1);
+    if(!asciibuf) {
       free(sp);
       return GSK_INSUFFICIENT_STORAGE;
     }
@@ -619,9 +637,11 @@
   if(!buffer || !bufSize)
     return GSK_OS400_ERROR_INVALID_POINTER;
   p = (struct Curl_gsk_descriptor *) my_gsk_handle;
-  if((rc = gsk_attribute_get_buffer(p->h, bufID, &mybuf, &mylen)) != GSK_OK)
+  rc = gsk_attribute_get_buffer(p->h, bufID, &mybuf, &mylen);
+  if(rc != GSK_OK)
     return rc;
-  if((rc = cachestring(p, mybuf, mylen, buffer)) == GSK_OK)
+  rc = cachestring(p, mybuf, mylen, buffer);
+  if(rc == GSK_OK)
     *bufSize = mylen;
   return rc;
 }
@@ -756,19 +776,20 @@
   i = buf->length;
 
   if(i) {
-    if(!(t = malloc(i))) {
+    t = malloc(i);
+    if(!t) {
       gss_release_buffer(minor_status, buf);
 
       if(minor_status)
         *minor_status = ENOMEM;
 
       return -1;
-      }
+    }
 
     QadrtConvertE2A(t, buf->value, i, i);
     memcpy(buf->value, t, i);
     free(t);
-    }
+  }
 
   return 0;
 }
@@ -789,12 +810,13 @@
   memcpy((char *) &in, (char *) in_name, sizeof in);
   i = in.length;
 
-  if(!(in.value = malloc(i + 1))) {
+  in.value = malloc(i + 1);
+  if(!in.value) {
     if(minor_status)
       *minor_status = ENOMEM;
 
     return GSS_S_FAILURE;
-    }
+  }
 
   QadrtConvertA2E(in.value, in_name->value, i, i);
   ((char *) in.value)[i] = '\0';
@@ -849,23 +871,26 @@
   gss_buffer_t inp;
 
   in.value = NULL;
+  inp = input_token;
 
-  if((inp = input_token))
+  if(inp) {
     if(inp->length && inp->value) {
       i = inp->length;
 
-      if(!(in.value = malloc(i + 1))) {
+      in.value = malloc(i + 1);
+      if(!in.value) {
         if(minor_status)
           *minor_status = ENOMEM;
 
         return GSS_S_FAILURE;
-        }
+      }
 
       QadrtConvertA2E(in.value, input_token->value, i, i);
       ((char *) in.value)[i] = '\0';
       in.length = i;
       inp = &in;
-      }
+    }
+  }
 
   rc = gss_init_sec_context(minor_status, cred_handle, context_handle,
                              target_name, mech_type, req_flags, time_req,
@@ -932,7 +957,8 @@
 
   i = strlen(host);
 
-  if(!(ehost = malloc(i + 1)))
+  ehost = malloc(i + 1);
+  if(!ehost)
     return (void *) NULL;
 
   QadrtConvertA2E(ehost, host, i, i);
@@ -957,24 +983,26 @@
   if(dn) {
     i = strlen(dn);
 
-    if(!(edn = malloc(i + 1)))
+    edn = malloc(i + 1);
+    if(!edn)
       return LDAP_NO_MEMORY;
 
     QadrtConvertA2E(edn, dn, i, i);
     edn[i] = '\0';
-    }
+  }
 
   if(passwd) {
     i = strlen(passwd);
 
-    if(!(epasswd = malloc(i + 1))) {
+    epasswd = malloc(i + 1);
+    if(!epasswd) {
       free(edn);
       return LDAP_NO_MEMORY;
-      }
+    }
 
     QadrtConvertA2E(epasswd, passwd, i, i);
     epasswd[i] = '\0';
-    }
+  }
 
   i = ldap_simple_bind_s(ld, edn, epasswd);
   free(epasswd);
@@ -1003,39 +1031,43 @@
   if(base) {
     i = strlen(base);
 
-    if(!(ebase = malloc(i + 1)))
+    ebase = malloc(i + 1);
+    if(!ebase)
       status = LDAP_NO_MEMORY;
     else {
       QadrtConvertA2E(ebase, base, i, i);
       ebase[i] = '\0';
-      }
     }
+  }
 
   if(filter && status == LDAP_SUCCESS) {
     i = strlen(filter);
 
-    if(!(efilter = malloc(i + 1)))
+    efilter = malloc(i + 1);
+    if(!efilter)
       status = LDAP_NO_MEMORY;
     else {
       QadrtConvertA2E(efilter, filter, i, i);
       efilter[i] = '\0';
-      }
     }
+  }
 
   if(attrs && status == LDAP_SUCCESS) {
     for(i = 0; attrs[i++];)
       ;
 
-    if(!(eattrs = calloc(i, sizeof *eattrs)))
+    eattrs = calloc(i, sizeof *eattrs);
+    if(!eattrs)
       status = LDAP_NO_MEMORY;
     else {
       for(j = 0; attrs[j]; j++) {
         i = strlen(attrs[j]);
 
-        if(!(eattrs[j] = malloc(i + 1))) {
+        eattrs[j] = malloc(i + 1);
+        if(!eattrs[j]) {
           status = LDAP_NO_MEMORY;
           break;
-          }
+        }
 
         QadrtConvertA2E(eattrs[j], attrs[j], i, i);
         eattrs[j][i] = '\0';
@@ -1073,15 +1105,16 @@
   if(attr) {
     int i = strlen(attr);
 
-    if(!(cp = malloc(i + 1))) {
+    cp = malloc(i + 1);
+    if(!cp) {
       ldap_set_lderrno(ld, LDAP_NO_MEMORY, NULL,
                        ldap_err2string(LDAP_NO_MEMORY));
       return (struct berval * *) NULL;
-      }
+    }
 
     QadrtConvertA2E(cp, attr, i, i);
     cp[i] = '\0';
-    }
+  }
 
   result = ldap_get_values_len(ld, entry, cp);
   free(cp);
@@ -1116,7 +1149,8 @@
 
   i = strlen(cp);
 
-  if(!(cp2 = malloc(i + 1)))
+  cp2 = malloc(i + 1);
+  if(!cp2)
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
@@ -1148,7 +1182,8 @@
 
   i = strlen(cp);
 
-  if(!(cp2 = malloc(i + 1)))
+  cp2 = malloc(i + 1);
+  if(!cp2)
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
@@ -1180,7 +1215,8 @@
 
   i = strlen(cp);
 
-  if(!(cp2 = malloc(i + 1)))
+  cp2 = malloc(i + 1);
+  if(!cp2)
     return cp2;
 
   QadrtConvertE2A(cp2, cp, i, i);
diff --git a/packages/Symbian/group/libcurl.mmp b/packages/Symbian/group/libcurl.mmp
index 942e23f..ba70de3 100644
--- a/packages/Symbian/group/libcurl.mmp
+++ b/packages/Symbian/group/libcurl.mmp
@@ -31,7 +31,7 @@
   http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c        \
   hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c     \
   select.c vtls/gtls.c vtls/vtls.c tftp.c splay.c strdup.c socks.c     \
-  ssh.c vtls/nss.c strcase.c curl_addrinfo.c socks_gssapi.c             \
+  ssh.c vtls/nss.c strcase.c curl_addrinfo.c socks_gssapi.c            \
   socks_sspi.c curl_sspi.c slist.c nonblock.c curl_memrchr.c imap.c    \
   pop3.c smtp.c pingpong.c rtsp.c curl_threads.c warnless.c hmac.c     \
   vtls/polarssl.c curl_rtmp.c openldap.c curl_gethostname.c gopher.c   \
@@ -39,7 +39,7 @@
   asyn-ares.c asyn-thread.c curl_gssapi.c http_ntlm.c curl_ntlm_wb.c   \
   curl_ntlm_core.c curl_sasl.c vtls/schannel.c curl_multibyte.c        \
   vtls/darwinssl.c conncache.c curl_sasl_sspi.c smb.c curl_endian.c    \
-  curl_des.c system_win32.c sha256.c                                   \
+  curl_des.c curl_range.c system_win32.c sha256.c                      \
   vauth/vauth.c vauth/cleartext.c vauth/cram.c vauth/digest.c          \
   vauth/digest_sspi.c vauth/krb5_gssapi.c vauth/krb5_sspi.c            \
   vauth/ntlm.c vauth/ntlm_sspi.c vauth/oauth2.c vauth/spnego_gssapi.c  \
diff --git a/packages/vms/config_h.com b/packages/vms/config_h.com
index 2a5503f..0f1fa0f 100644
--- a/packages/vms/config_h.com
+++ b/packages/vms/config_h.com
@@ -1382,7 +1382,7 @@
 $			severity = '$severity'
 $		    endif
 $!
-$!		    Unix compatability routines
+$!		    Unix compatibility routines
 $!---------------------------------------------
 $		    if severity .ne. 1
 $		    then
diff --git a/projects/README b/projects/README
index 60b8c87..99b1d7a 100644
--- a/projects/README
+++ b/projects/README
@@ -74,9 +74,6 @@
    If you require support for Internationalized Domain Names via Windows IDN
    then you will need either:
 
-    * Microsoft Internationalized Domain Name (IDN) Mitigation APIs:
-      https://www.microsoft.com/en-us/download/details.aspx?id=734
-
     * Microsoft Windows SDK Update for Windows Vista:
       https://www.microsoft.com/en-us/download/details.aspx?id=23719
 
@@ -108,7 +105,7 @@
 
    ... where 'Path to DLL` is the configuration specific path. For example the
    following configurations in Visual Studio 2010 might be:
-   
+
    DLL Debug - DLL OpenSSL (Win32):
    PATH=..\..\..\..\..\openssl\build\Win32\VC10\DLL Debug;C:\Windows\system32;
         C:\Windows;C:\Windows\System32\Wbem
@@ -133,7 +130,7 @@
 =====
 
    The following keywords have been used in the directory hierarchy:
-   
+
    <platform>      - The platform (For example: Windows)
    <ide>           - The IDE (For example: VC6, VC10, BCC5)
    <architecture>  - The platform architecture (For example: Win32, Win64)
@@ -142,12 +139,12 @@
 
    If you are using the source code from the git repository, rather than a
    release archive or nightly build, you will need to generate the project
-   files. Please run "generate -help" for usage details. 
+   files. Please run "generate -help" for usage details.
 
    Should you wish to help out with some of the items on the TODO list, or
    find bugs in the project files that need correcting, and would like to
    submit updated files back then please note that, whilst the solution files
-   can be edited directly, the templates for the project files (which are 
+   can be edited directly, the templates for the project files (which are
    stored in the git repositoty) will need to be modified rather than the
    generated project files that Visual Studio uses.
 
diff --git a/projects/Windows/VC10/lib/libcurl.vcxproj b/projects/Windows/VC10/lib/libcurl.vcxproj
index c966c06..abb05bc 100644
--- a/projects/Windows/VC10/lib/libcurl.vcxproj
+++ b/projects/Windows/VC10/lib/libcurl.vcxproj
@@ -2332,6 +2332,7 @@
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />

     <ClCompile Include="..\..\..\..\lib\cookie.c" />

     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\curl_des.c" />

     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />

     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />

@@ -2342,6 +2343,7 @@
     <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />

     <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />

     <ClCompile Include="..\..\..\..\lib\curl_path.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />

     <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />

@@ -2452,6 +2454,7 @@
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />

+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />

   </ItemGroup>

   <ItemGroup>

@@ -2465,6 +2468,7 @@
     <ClInclude Include="..\..\..\..\lib\cookie.h" />

     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />

     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_des.h" />

     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />

     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />

@@ -2481,6 +2485,7 @@
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />

     <ClInclude Include="..\..\..\..\lib\curl_path.h" />

     <ClInclude Include="..\..\..\..\lib\curl_printf.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />

     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />

diff --git a/projects/Windows/VC10/src/curl.vcxproj b/projects/Windows/VC10/src/curl.vcxproj
index 7f80d2f..c4082ad 100644
--- a/projects/Windows/VC10/src/curl.vcxproj
+++ b/projects/Windows/VC10/src/curl.vcxproj
@@ -2627,6 +2627,7 @@
     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\nonblock.c" />

     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />

     <ClCompile Include="..\..\..\..\lib\warnless.c" />

@@ -2644,6 +2645,7 @@
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />

     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />

     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />

+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />

     <ClCompile Include="..\..\..\..\src\tool_formparse.c" />

     <ClCompile Include="..\..\..\..\src\tool_getparam.c" />

     <ClCompile Include="..\..\..\..\src\tool_getpass.c" />

@@ -2671,6 +2673,7 @@
   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="..\..\..\..\lib\config-win32.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_setup.h" />

     <ClInclude Include="..\..\..\..\lib\nonblock.h" />

     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />

@@ -2689,6 +2692,7 @@
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />

     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />

     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />

+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />

     <ClInclude Include="..\..\..\..\src\tool_formparse.h" />

     <ClInclude Include="..\..\..\..\src\tool_getparam.h" />

     <ClInclude Include="..\..\..\..\src\tool_getpass.h" />

diff --git a/projects/Windows/VC11/lib/libcurl.vcxproj b/projects/Windows/VC11/lib/libcurl.vcxproj
index 88609a0..2f95261 100644
--- a/projects/Windows/VC11/lib/libcurl.vcxproj
+++ b/projects/Windows/VC11/lib/libcurl.vcxproj
@@ -2388,6 +2388,7 @@
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />

     <ClCompile Include="..\..\..\..\lib\cookie.c" />

     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\curl_des.c" />

     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />

     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />

@@ -2398,6 +2399,7 @@
     <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />

     <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />

     <ClCompile Include="..\..\..\..\lib\curl_path.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />

     <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />

@@ -2508,6 +2510,7 @@
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />

+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />

   </ItemGroup>

   <ItemGroup>

@@ -2521,6 +2524,7 @@
     <ClInclude Include="..\..\..\..\lib\cookie.h" />

     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />

     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_des.h" />

     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />

     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />

@@ -2537,6 +2541,7 @@
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />

     <ClInclude Include="..\..\..\..\lib\curl_path.h" />

     <ClInclude Include="..\..\..\..\lib\curl_printf.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />

     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />

diff --git a/projects/Windows/VC11/src/curl.vcxproj b/projects/Windows/VC11/src/curl.vcxproj
index 9387617..1682373 100644
--- a/projects/Windows/VC11/src/curl.vcxproj
+++ b/projects/Windows/VC11/src/curl.vcxproj
@@ -2683,6 +2683,7 @@
     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\nonblock.c" />

     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />

     <ClCompile Include="..\..\..\..\lib\warnless.c" />

@@ -2700,6 +2701,7 @@
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />

     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />

     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />

+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />

     <ClCompile Include="..\..\..\..\src\tool_formparse.c" />

     <ClCompile Include="..\..\..\..\src\tool_getparam.c" />

     <ClCompile Include="..\..\..\..\src\tool_getpass.c" />

@@ -2727,6 +2729,7 @@
   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="..\..\..\..\lib\config-win32.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_setup.h" />

     <ClInclude Include="..\..\..\..\lib\nonblock.h" />

     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />

@@ -2745,6 +2748,7 @@
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />

     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />

     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />

+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />

     <ClInclude Include="..\..\..\..\src\tool_formparse.h" />

     <ClInclude Include="..\..\..\..\src\tool_getparam.h" />

     <ClInclude Include="..\..\..\..\src\tool_getpass.h" />

diff --git a/projects/Windows/VC12/lib/libcurl.vcxproj b/projects/Windows/VC12/lib/libcurl.vcxproj
index eaa54c1..2568c8b 100644
--- a/projects/Windows/VC12/lib/libcurl.vcxproj
+++ b/projects/Windows/VC12/lib/libcurl.vcxproj
@@ -2388,6 +2388,7 @@
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />

     <ClCompile Include="..\..\..\..\lib\cookie.c" />

     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\curl_des.c" />

     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />

     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />

@@ -2398,6 +2399,7 @@
     <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />

     <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />

     <ClCompile Include="..\..\..\..\lib\curl_path.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />

     <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />

@@ -2508,6 +2510,7 @@
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />

+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />

   </ItemGroup>

   <ItemGroup>

@@ -2521,6 +2524,7 @@
     <ClInclude Include="..\..\..\..\lib\cookie.h" />

     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />

     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_des.h" />

     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />

     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />

@@ -2537,6 +2541,7 @@
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />

     <ClInclude Include="..\..\..\..\lib\curl_path.h" />

     <ClInclude Include="..\..\..\..\lib\curl_printf.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />

     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />

diff --git a/projects/Windows/VC12/src/curl.vcxproj b/projects/Windows/VC12/src/curl.vcxproj
index ae41b39..8a86503 100644
--- a/projects/Windows/VC12/src/curl.vcxproj
+++ b/projects/Windows/VC12/src/curl.vcxproj
@@ -2683,6 +2683,7 @@
     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\nonblock.c" />

     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />

     <ClCompile Include="..\..\..\..\lib\warnless.c" />

@@ -2700,6 +2701,7 @@
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />

     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />

     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />

+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />

     <ClCompile Include="..\..\..\..\src\tool_formparse.c" />

     <ClCompile Include="..\..\..\..\src\tool_getparam.c" />

     <ClCompile Include="..\..\..\..\src\tool_getpass.c" />

@@ -2727,6 +2729,7 @@
   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="..\..\..\..\lib\config-win32.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_setup.h" />

     <ClInclude Include="..\..\..\..\lib\nonblock.h" />

     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />

@@ -2745,6 +2748,7 @@
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />

     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />

     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />

+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />

     <ClInclude Include="..\..\..\..\src\tool_formparse.h" />

     <ClInclude Include="..\..\..\..\src\tool_getparam.h" />

     <ClInclude Include="..\..\..\..\src\tool_getpass.h" />

diff --git a/projects/Windows/VC14/lib/libcurl.vcxproj b/projects/Windows/VC14/lib/libcurl.vcxproj
index e83c10a..d22cd6b 100644
--- a/projects/Windows/VC14/lib/libcurl.vcxproj
+++ b/projects/Windows/VC14/lib/libcurl.vcxproj
@@ -2388,6 +2388,7 @@
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />

     <ClCompile Include="..\..\..\..\lib\cookie.c" />

     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\curl_des.c" />

     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />

     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />

@@ -2398,6 +2399,7 @@
     <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />

     <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />

     <ClCompile Include="..\..\..\..\lib\curl_path.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />

     <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />

@@ -2508,6 +2510,7 @@
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />

+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />

   </ItemGroup>

   <ItemGroup>

@@ -2521,6 +2524,7 @@
     <ClInclude Include="..\..\..\..\lib\cookie.h" />

     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />

     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_des.h" />

     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />

     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />

@@ -2537,6 +2541,7 @@
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />

     <ClInclude Include="..\..\..\..\lib\curl_path.h" />

     <ClInclude Include="..\..\..\..\lib\curl_printf.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />

     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />

diff --git a/projects/Windows/VC14/src/curl.vcxproj b/projects/Windows/VC14/src/curl.vcxproj
index 869a1b9..481e0be 100644
--- a/projects/Windows/VC14/src/curl.vcxproj
+++ b/projects/Windows/VC14/src/curl.vcxproj
@@ -2683,6 +2683,7 @@
     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\nonblock.c" />

     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />

     <ClCompile Include="..\..\..\..\lib\warnless.c" />

@@ -2700,6 +2701,7 @@
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />

     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />

     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />

+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />

     <ClCompile Include="..\..\..\..\src\tool_formparse.c" />

     <ClCompile Include="..\..\..\..\src\tool_getparam.c" />

     <ClCompile Include="..\..\..\..\src\tool_getpass.c" />

@@ -2727,6 +2729,7 @@
   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="..\..\..\..\lib\config-win32.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_setup.h" />

     <ClInclude Include="..\..\..\..\lib\nonblock.h" />

     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />

@@ -2745,6 +2748,7 @@
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />

     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />

     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />

+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />

     <ClInclude Include="..\..\..\..\src\tool_formparse.h" />

     <ClInclude Include="..\..\..\..\src\tool_getparam.h" />

     <ClInclude Include="..\..\..\..\src\tool_getpass.h" />

diff --git a/projects/Windows/VC15/curl-all.sln b/projects/Windows/VC15/curl-all.sln
index 02bccc5..d4576a1 100644
--- a/projects/Windows/VC15/curl-all.sln
+++ b/projects/Windows/VC15/curl-all.sln
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 12.00

-# Visual Studio 2015

+# Visual Studio 15

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "src\curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"

 	ProjectSection(ProjectDependencies) = postProject

 		{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB} = {DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}

diff --git a/projects/Windows/VC15/lib/libcurl.sln b/projects/Windows/VC15/lib/libcurl.sln
index f768b6d..4de796c 100644
--- a/projects/Windows/VC15/lib/libcurl.sln
+++ b/projects/Windows/VC15/lib/libcurl.sln
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 12.00

-# Visual Studio 2015

+# Visual Studio 15

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcurl", "libcurl.vcxproj", "{DA6F56B4-06A4-441D-AD70-AC5A7D51FADB}"

 EndProject

 Global

diff --git a/projects/Windows/VC15/lib/libcurl.vcxproj b/projects/Windows/VC15/lib/libcurl.vcxproj
index 2dcab41..af11d1f 100644
--- a/projects/Windows/VC15/lib/libcurl.vcxproj
+++ b/projects/Windows/VC15/lib/libcurl.vcxproj
@@ -2388,6 +2388,7 @@
     <ClCompile Include="..\..\..\..\lib\content_encoding.c" />

     <ClCompile Include="..\..\..\..\lib\cookie.c" />

     <ClCompile Include="..\..\..\..\lib\curl_addrinfo.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\curl_des.c" />

     <ClCompile Include="..\..\..\..\lib\curl_endian.c" />

     <ClCompile Include="..\..\..\..\lib\curl_fnmatch.c" />

@@ -2398,6 +2399,7 @@
     <ClCompile Include="..\..\..\..\lib\curl_ntlm_core.c" />

     <ClCompile Include="..\..\..\..\lib\curl_ntlm_wb.c" />

     <ClCompile Include="..\..\..\..\lib\curl_path.c" />

+    <ClCompile Include="..\..\..\..\lib\curl_range.c" />

     <ClCompile Include="..\..\..\..\lib\curl_rtmp.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sasl.c" />

     <ClCompile Include="..\..\..\..\lib\curl_sspi.c" />

@@ -2508,6 +2510,7 @@
     <ClCompile Include="..\..\..\..\lib\vtls\polarssl.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\polarssl_threadlock.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\schannel.c" />

+    <ClCompile Include="..\..\..\..\lib\vtls\schannel_verify.c" />

     <ClCompile Include="..\..\..\..\lib\vtls\vtls.c" />

   </ItemGroup>

   <ItemGroup>

@@ -2521,6 +2524,7 @@
     <ClInclude Include="..\..\..\..\lib\cookie.h" />

     <ClInclude Include="..\..\..\..\lib\curl_addrinfo.h" />

     <ClInclude Include="..\..\..\..\lib\curl_base64.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_des.h" />

     <ClInclude Include="..\..\..\..\lib\curl_endian.h" />

     <ClInclude Include="..\..\..\..\lib\curl_fnmatch.h" />

@@ -2537,6 +2541,7 @@
     <ClInclude Include="..\..\..\..\lib\curl_ntlm_wb.h" />

     <ClInclude Include="..\..\..\..\lib\curl_path.h" />

     <ClInclude Include="..\..\..\..\lib\curl_printf.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_range.h" />

     <ClInclude Include="..\..\..\..\lib\curl_rtmp.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sasl.h" />

     <ClInclude Include="..\..\..\..\lib\curl_sec.h" />

diff --git a/projects/Windows/VC15/src/curl.sln b/projects/Windows/VC15/src/curl.sln
index ca123ed..16d2296 100644
--- a/projects/Windows/VC15/src/curl.sln
+++ b/projects/Windows/VC15/src/curl.sln
@@ -1,5 +1,5 @@
 Microsoft Visual Studio Solution File, Format Version 12.00

-# Visual Studio 2015

+# Visual Studio 15

 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl", "curl.vcxproj", "{5228E9CE-A216-422F-A5E6-58E95E2DD71D}"

 EndProject

 Global

diff --git a/projects/Windows/VC15/src/curl.vcxproj b/projects/Windows/VC15/src/curl.vcxproj
index 9c79dd6..92043d4 100644
--- a/projects/Windows/VC15/src/curl.vcxproj
+++ b/projects/Windows/VC15/src/curl.vcxproj
@@ -2683,6 +2683,7 @@
     </Link>

   </ItemDefinitionGroup>

   <ItemGroup>

+    <ClCompile Include="..\..\..\..\lib\curl_ctype.c" />

     <ClCompile Include="..\..\..\..\lib\nonblock.c" />

     <ClCompile Include="..\..\..\..\lib\strtoofft.c" />

     <ClCompile Include="..\..\..\..\lib\warnless.c" />

@@ -2700,6 +2701,7 @@
     <ClCompile Include="..\..\..\..\src\tool_dirhie.c" />

     <ClCompile Include="..\..\..\..\src\tool_doswin.c" />

     <ClCompile Include="..\..\..\..\src\tool_easysrc.c" />

+    <ClCompile Include="..\..\..\..\src\tool_filetime.c" />

     <ClCompile Include="..\..\..\..\src\tool_formparse.c" />

     <ClCompile Include="..\..\..\..\src\tool_getparam.c" />

     <ClCompile Include="..\..\..\..\src\tool_getpass.c" />

@@ -2727,6 +2729,7 @@
   </ItemGroup>

   <ItemGroup>

     <ClInclude Include="..\..\..\..\lib\config-win32.h" />

+    <ClInclude Include="..\..\..\..\lib\curl_ctype.h" />

     <ClInclude Include="..\..\..\..\lib\curl_setup.h" />

     <ClInclude Include="..\..\..\..\lib\nonblock.h" />

     <ClInclude Include="..\..\..\..\lib\strtoofft.h" />

@@ -2745,6 +2748,7 @@
     <ClInclude Include="..\..\..\..\src\tool_dirhie.h" />

     <ClInclude Include="..\..\..\..\src\tool_doswin.h" />

     <ClInclude Include="..\..\..\..\src\tool_easysrc.h" />

+    <ClInclude Include="..\..\..\..\src\tool_filetime.h" />

     <ClInclude Include="..\..\..\..\src\tool_formparse.h" />

     <ClInclude Include="..\..\..\..\src\tool_getparam.h" />

     <ClInclude Include="..\..\..\..\src\tool_getpass.h" />

diff --git a/projects/Windows/VC6/lib/libcurl.dsp b/projects/Windows/VC6/lib/libcurl.dsp
index 8814cb7..3aa74de 100644
--- a/projects/Windows/VC6/lib/libcurl.dsp
+++ b/projects/Windows/VC6/lib/libcurl.dsp
@@ -766,6 +766,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\curl_ctype.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\curl_des.c

 # End Source File

 # Begin Source File

@@ -806,6 +810,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\curl_range.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\curl_rtmp.c

 # End Source File

 # Begin Source File

@@ -1246,6 +1254,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\vtls\schannel_verify.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\vtls\vtls.c

 # End Source File

 # End Group

@@ -1294,6 +1306,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\curl_ctype.h

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\curl_des.h

 # End Source File

 # Begin Source File

@@ -1358,6 +1374,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\curl_range.h

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\curl_rtmp.h

 # End Source File

 # Begin Source File

diff --git a/projects/Windows/VC6/src/curl.dsp b/projects/Windows/VC6/src/curl.dsp
index b276b1a..05dd73c 100644
--- a/projects/Windows/VC6/src/curl.dsp
+++ b/projects/Windows/VC6/src/curl.dsp
@@ -679,6 +679,10 @@
 # PROP Default_Filter ""

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\curl_ctype.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\nonblock.c

 # End Source File

 # Begin Source File

@@ -747,6 +751,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\src\tool_filetime.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\src\tool_formparse.c

 # End Source File

 # Begin Source File

@@ -851,6 +859,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\lib\curl_ctype.h

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\lib\curl_setup.h

 # End Source File

 # Begin Source File

@@ -923,6 +935,10 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\..\..\src\tool_filetime.h

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\..\..\src\tool_formparse.h

 # End Source File

 # Begin Source File

diff --git a/projects/Windows/VC7.1/lib/libcurl.vcproj b/projects/Windows/VC7.1/lib/libcurl.vcproj
index 3423bb4..f5c437a 100644
--- a/projects/Windows/VC7.1/lib/libcurl.vcproj
+++ b/projects/Windows/VC7.1/lib/libcurl.vcproj
@@ -1283,6 +1283,9 @@
 				RelativePath="..\..\..\..\lib\curl_addrinfo.c">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.c">

 			</File>

 			<File

@@ -1313,6 +1316,9 @@
 				RelativePath="..\..\..\..\lib\curl_path.c">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.c">

 			</File>

 			<File

@@ -1608,6 +1614,9 @@
 				RelativePath="..\..\..\..\lib\curl_base64.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.h">

 			</File>

 			<File

@@ -1656,6 +1665,9 @@
 				RelativePath="..\..\..\..\lib\curl_printf.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.h">

 			</File>

 			<File

@@ -1994,6 +2006,9 @@
 					RelativePath="..\..\..\..\lib\vtls\schannel.c">

 				</File>

 				<File

+					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">

+				</File>

+				<File

 					RelativePath="..\..\..\..\lib\vtls\vtls.c">

 				</File>

 			</Filter>

diff --git a/projects/Windows/VC7.1/src/curl.vcproj b/projects/Windows/VC7.1/src/curl.vcproj
index baedf5e..8fecea6 100644
--- a/projects/Windows/VC7.1/src/curl.vcproj
+++ b/projects/Windows/VC7.1/src/curl.vcproj
@@ -1362,6 +1362,9 @@
 			Name="Source Files"

 			Filter="">

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\nonblock.c">

 			</File>

 			<File

@@ -1413,6 +1416,9 @@
 				RelativePath="..\..\..\..\src\tool_easysrc.c">

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.c">

 			</File>

 			<File

@@ -1492,6 +1498,9 @@
 				RelativePath="..\..\..\..\lib\config-win32.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_setup.h">

 			</File>

 			<File

@@ -1546,6 +1555,9 @@
 				RelativePath="..\..\..\..\src\tool_easysrc.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.h">

 			</File>

 			<File

diff --git a/projects/Windows/VC7/lib/libcurl.vcproj b/projects/Windows/VC7/lib/libcurl.vcproj
index 5023f5d..4fe5377 100644
--- a/projects/Windows/VC7/lib/libcurl.vcproj
+++ b/projects/Windows/VC7/lib/libcurl.vcproj
@@ -1137,6 +1137,9 @@
 				RelativePath="..\..\..\..\lib\curl_addrinfo.c">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.c">

 			</File>

 			<File

@@ -1167,6 +1170,9 @@
 				RelativePath="..\..\..\..\lib\curl_path.c">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.c">

 			</File>

 			<File

@@ -1462,6 +1468,9 @@
 				RelativePath="..\..\..\..\lib\curl_base64.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.h">

 			</File>

 			<File

@@ -1510,6 +1519,9 @@
 				RelativePath="..\..\..\..\lib\curl_printf.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.h">

 			</File>

 			<File

@@ -1848,6 +1860,9 @@
 					RelativePath="..\..\..\..\lib\vtls\schannel.c">

 				</File>

 				<File

+					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c">

+				</File>

+				<File

 					RelativePath="..\..\..\..\lib\vtls\vtls.c">

 				</File>

 			</Filter>

diff --git a/projects/Windows/VC7/src/curl.vcproj b/projects/Windows/VC7/src/curl.vcproj
index 3de1b94..821aebc 100644
--- a/projects/Windows/VC7/src/curl.vcproj
+++ b/projects/Windows/VC7/src/curl.vcproj
@@ -1216,6 +1216,9 @@
 			Name="Source Files"

 			Filter="">

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\nonblock.c">

 			</File>

 			<File

@@ -1267,6 +1270,9 @@
 				RelativePath="..\..\..\..\src\tool_easysrc.c">

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.c">

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.c">

 			</File>

 			<File

@@ -1346,6 +1352,9 @@
 				RelativePath="..\..\..\..\lib\config-win32.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_setup.h">

 			</File>

 			<File

@@ -1400,6 +1409,9 @@
 				RelativePath="..\..\..\..\src\tool_easysrc.h">

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.h">

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.h">

 			</File>

 			<File

diff --git a/projects/Windows/VC8/lib/libcurl.vcproj b/projects/Windows/VC8/lib/libcurl.vcproj
index 92c9687..e89ed39 100644
--- a/projects/Windows/VC8/lib/libcurl.vcproj
+++ b/projects/Windows/VC8/lib/libcurl.vcproj
@@ -3653,6 +3653,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.c"

 			>

 			</File>

@@ -3693,6 +3697,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.c"

 			>

 			</File>

@@ -4085,6 +4093,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.h"

 			>

 			</File>

@@ -4149,6 +4161,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.h"

 			>

 			</File>

@@ -4592,6 +4608,10 @@
 				>

 				</File>

 				<File

+					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"

+				>

+				</File>

+				<File

 					RelativePath="..\..\..\..\lib\vtls\vtls.c"

 				>

 				</File>

diff --git a/projects/Windows/VC8/src/curl.vcproj b/projects/Windows/VC8/src/curl.vcproj
index 4e4c6c3..fb031cf 100644
--- a/projects/Windows/VC8/src/curl.vcproj
+++ b/projects/Windows/VC8/src/curl.vcproj
@@ -4081,6 +4081,10 @@
 			Name="Source Files"

 			>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\nonblock.c"

 			>

 			</File>

@@ -4149,6 +4153,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.c"

 			>

 			</File>

@@ -4253,6 +4261,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_setup.h"

 			>

 			</File>

@@ -4325,6 +4337,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.h"

 			>

 			</File>

diff --git a/projects/Windows/VC9/lib/libcurl.vcproj b/projects/Windows/VC9/lib/libcurl.vcproj
index d4cb361..5bd595f 100644
--- a/projects/Windows/VC9/lib/libcurl.vcproj
+++ b/projects/Windows/VC9/lib/libcurl.vcproj
@@ -3594,6 +3594,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.c"

 			>

 			</File>

@@ -3634,6 +3638,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.c"

 			>

 			</File>

@@ -4026,6 +4034,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_des.h"

 			>

 			</File>

@@ -4090,6 +4102,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_range.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_rtmp.h"

 			>

 			</File>

@@ -4533,6 +4549,10 @@
 				>

 				</File>

 				<File

+					RelativePath="..\..\..\..\lib\vtls\schannel_verify.c"

+				>

+				</File>

+				<File

 					RelativePath="..\..\..\..\lib\vtls\vtls.c"

 				>

 				</File>

diff --git a/projects/Windows/VC9/src/curl.vcproj b/projects/Windows/VC9/src/curl.vcproj
index 56ba9de..1d0ae65 100644
--- a/projects/Windows/VC9/src/curl.vcproj
+++ b/projects/Windows/VC9/src/curl.vcproj
@@ -3938,6 +3938,10 @@
 			Name="Source Files"

 			>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\nonblock.c"

 			>

 			</File>

@@ -4006,6 +4010,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.c"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.c"

 			>

 			</File>

@@ -4110,6 +4118,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\lib\curl_ctype.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\lib\curl_setup.h"

 			>

 			</File>

@@ -4182,6 +4194,10 @@
 			>

 			</File>

 			<File

+				RelativePath="..\..\..\..\src\tool_filetime.h"

+			>

+			</File>

+			<File

 				RelativePath="..\..\..\..\src\tool_formparse.h"

 			>

 			</File>

diff --git a/projects/build-openssl.bat b/projects/build-openssl.bat
index 2a135b9..d337b21 100644
--- a/projects/build-openssl.bat
+++ b/projects/build-openssl.bat
@@ -6,7 +6,7 @@
 rem *                            | (__| |_| |  _ <| |___
 rem *                             \___|\___/|_| \_\_____|
 rem *
-rem * Copyright (C) 2012 - 2017, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2012 - 2018, Steve Holme, <steve_holme@hotmail.com>.
 rem *
 rem * This software is licensed as described in the file COPYING, which
 rem * you should have received as part of this distribution. The terms
@@ -33,6 +33,16 @@
   rem Ensure we have the required arguments
   if /i "%~1" == "" goto syntax
 
+  rem Calculate the program files directory
+  if defined PROGRAMFILES (
+    set "PF=%PROGRAMFILES%"
+    set OS_PLATFORM=x86
+  )
+  if defined PROGRAMFILES(x86) (
+    set "PF=%PROGRAMFILES(x86)%"
+    set OS_PLATFORM=x64
+  )
+
 :parseArgs
   if "%~1" == "" goto prerequisites
 
@@ -72,10 +82,19 @@
     set VC_VER=14.0
     set VC_DESC=VC14
     set "VC_PATH=Microsoft Visual Studio 14.0\VC"
-  ) else if /i "%~1" == "vc15" (
-    set VC_VER=15.0
-    set VC_DESC=VC15
-    set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
+  ) else if /i "%~1" == "vc14.1" (
+    set VC_VER=14.1
+    set VC_DESC=VC14.1
+
+    rem Determine the VC14.1 path based on the installed edition in descending
+    rem order (Enterprise, then Professional and finally Community)
+    if exist "%PF%\Microsoft Visual Studio\2017\Enterprise\VC" (
+      set "VC_PATH=Microsoft Visual Studio\2017\Enterprise\VC"
+    ) else if exist "%PF%\Microsoft Visual Studio\2017\Professional\VC" (
+      set "VC_PATH=Microsoft Visual Studio\2017\Professional\VC"
+    ) else (
+      set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
+    )
   ) else if /i "%~1%" == "x86" (
     set BUILD_PLATFORM=x86
   ) else if /i "%~1%" == "x64" (
@@ -90,6 +109,24 @@
     goto syntax
   ) else if /i "%~1" == "-help" (
     goto syntax
+  ) else if /i "%~1" == "-VSpath" (
+	if "%~2" == "" (
+		echo.
+		echo Error. Please provide VS Path.
+		goto error
+	) else ( 
+		set "ABS_VC_PATH=%~2\VC"
+		shift
+	)
+  ) else if /i "%~1" == "-perlpath" (
+    if "%~2" == "" (
+		echo.
+		echo Error. Please provide Perl root Path.
+		goto error
+	) else (		
+		set "PERL_PATH=%~2"
+		shift
+	)
   ) else (
     if not defined START_DIR (
       set START_DIR=%~1%
@@ -101,42 +138,43 @@
   shift & goto parseArgs
 
 :prerequisites
-  rem Compiler and platform are required parameters.
+  rem Compiler is a required parameter
   if not defined VC_VER goto syntax
-  if not defined BUILD_PLATFORM goto syntax
 
   rem Default the start directory if one isn't specified
   if not defined START_DIR set START_DIR=..\..\openssl
 
-  rem Calculate the program files directory
-  if defined PROGRAMFILES (
-    set "PF=%PROGRAMFILES%"
-    set OS_PLATFORM=x86
+  if not defined ABS_VC_PATH ( 
+    rem Check we have a program files directory
+	if not defined PF goto nopf
+	set "ABS_VC_PATH=%PF%\%VC_PATH%"
   )
-  if defined PROGRAMFILES(x86) (
-    set "PF=%PROGRAMFILES(x86)%"
-    set OS_PLATFORM=x64
-  )
-
-  rem Check we have a program files directory
-  if not defined PF goto nopf
-
+  
   rem Check we have Visual Studio installed
-  if not exist "%PF%\%VC_PATH%" goto novc
+  if not exist "%ABS_VC_PATH%" goto novc
 
-  rem Check we have Perl in our path
-  echo %PATH% | findstr /I /C:"\Perl" 1>nul
-  if errorlevel 1 (
-    rem It isn't so check we have it installed and set the path if it is
-    if exist "%SystemDrive%\Perl" (
-      set "PATH=%SystemDrive%\Perl\bin;%PATH%"
-    ) else (
-      if exist "%SystemDrive%\Perl64" (
-        set "PATH=%SystemDrive%\Perl64\bin;%PATH%"
-      ) else (
-        goto noperl
-      )
-    )
+  
+  if not defined PERL_PATH (
+	rem Check we have Perl in our path 
+	rem using !! below as %% was having \Microsoft was unexecpted error.
+	echo !PATH! | findstr /I /C:"\Perl" 1>nul
+	if errorlevel 1 (
+		rem It isn't so check we have it installed and set the path if it is
+		if exist "%SystemDrive%\Perl" (
+		set "PATH=%SystemDrive%\Perl\bin;%PATH%"
+		) else (
+		if exist "%SystemDrive%\Perl64" (
+			set "PATH=%SystemDrive%\Perl64\bin;%PATH%"
+		) else (
+
+
+
+			goto noperl
+		)
+		)
+	)
+  ) else (
+    set "PATH=%PERL_PATH%\Perl\bin;%PATH%"
   )
 
   rem Check the start directory exists
@@ -170,7 +208,7 @@
     if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
     if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
     if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
-    if "%VC_VER%" == "15.0" set VCVARS_PLATFORM=amd64
+    if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
   )
 
 :start
@@ -178,20 +216,20 @@
   set SAVED_PATH=%CD%
 
   if "%VC_VER%" == "6.0" (
-    call "%PF%\%VC_PATH%\bin\vcvars32"
+    call "%ABS_VC_PATH%\bin\vcvars32"
   ) else if "%VC_VER%" == "7.0" (
-    call "%PF%\%VC_PATH%\bin\vcvars32"
+    call "%ABS_VC_PATH%\bin\vcvars32"
   ) else if "%VC_VER%" == "7.1" (
-    call "%PF%\%VC_PATH%\bin\vcvars32"
-  ) else if "%VC_VER%" == "15.0" (
-    call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
+    call "%ABS_VC_PATH%\bin\vcvars32"
+  ) else if "%VC_VER%" == "14.1" (
+    call "%ABS_VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
   ) else (
-    call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
+    call "%ABS_VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
   )
 
   echo.
-  cd %SAVED_PATH%
-  cd %START_DIR%
+  cd /d %SAVED_PATH%
+  if defined START_DIR cd /d %START_DIR%
   goto %BUILD_PLATFORM%
 
 :x64
@@ -211,12 +249,22 @@
   nmake -f ms\ntdll.mak
 
   rem Move the output directories
-  move out32.dbg "%OUTDIR%\LIB Debug"
-  move out32dll.dbg "%OUTDIR%\DLL Debug"
+  if exist "%OUTDIR%\LIB Debug" (
+    copy /y out32.dbg\* "%OUTDIR%\LIB Debug" 1>nul
+    rd out32.dbg /s /q
+  ) else (
+    move out32.dbg "%OUTDIR%\LIB Debug" 1>nul
+  )
+  if exist "%OUTDIR%\DLL Debug" (
+    copy /y out32dll.dbg\* "%OUTDIR%\DLL Debug" 1>nul
+    rd out32dll.dbg /s /q
+  ) else (
+    move out32dll.dbg "%OUTDIR%\DLL Debug" 1>nul
+  )
 
   rem Move the PDB files
-  move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug"
-  move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug"
+  move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 1>nul
+  move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 1>nul
   
   rem Remove the intermediate directories
   rd tmp32.dbg /s /q
@@ -232,14 +280,24 @@
   call ms\do_win64a
   nmake -f ms\nt.mak
   nmake -f ms\ntdll.mak
-  
+
   rem Move the output directories
-  move out32 "%OUTDIR%\LIB Release"
-  move out32dll "%OUTDIR%\DLL Release"
+  if exist "%OUTDIR%\LIB Release" (
+    copy /y out32\* "%OUTDIR%\LIB Release" 1>nul
+    rd out32 /s /q
+  ) else (
+    move out32 "%OUTDIR%\LIB Release" 1>nul
+  )
+  if exist "%OUTDIR%\DLL Release" (
+    copy /y out32dll\* "%OUTDIR%\DLL Release" 1>nul
+    rd out32dll /s /q
+  ) else (
+    move out32dll "%OUTDIR%\DLL Release" 1>nul
+  )
 
   rem Move the PDB files
-  move tmp32\lib.pdb "%OUTDIR%\LIB Release"
-  move tmp32dll\lib.pdb "%OUTDIR%\DLL Release"
+  move tmp32\lib.pdb "%OUTDIR%\LIB Release" 1>nul
+  move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 1>nul
 
   rem Remove the intermediate directories
   rd tmp32 /s /q
@@ -264,12 +322,22 @@
   nmake -f ms\ntdll.mak
 
   rem Move the output directories
-  move out32.dbg "%OUTDIR%\LIB Debug"
-  move out32dll.dbg "%OUTDIR%\DLL Debug"
+  if exist "%OUTDIR%\LIB Debug" (
+    copy /y out32.dbg\* "%OUTDIR%\LIB Debug" 1>nul
+    rd out32.dbg /s /q
+  ) else (
+    move out32.dbg "%OUTDIR%\LIB Debug" 1>nul
+  )
+  if exist "%OUTDIR%\DLL Debug" (
+    copy /y out32dll.dbg\* "%OUTDIR%\DLL Debug" 1>nul
+    rd out32dll.dbg /s /q
+  ) else (
+    move out32dll.dbg "%OUTDIR%\DLL Debug" 1>nul
+  )
 
   rem Move the PDB files
-  move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug"
-  move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug"
+  move tmp32.dbg\lib.pdb "%OUTDIR%\LIB Debug" 1>nul
+  move tmp32dll.dbg\lib.pdb "%OUTDIR%\DLL Debug" 1>nul
 
   rem Remove the intermediate directories
   rd tmp32.dbg /s /q
@@ -285,14 +353,24 @@
   call ms\do_ms
   nmake -f ms\nt.mak
   nmake -f ms\ntdll.mak
-  
+
   rem Move the output directories
-  move out32 "%OUTDIR%\LIB Release"
-  move out32dll "%OUTDIR%\DLL Release"
+  if exist "%OUTDIR%\LIB Release" (
+    copy /y out32\* "%OUTDIR%\LIB Release" 1>nul
+    rd out32 /s /q
+  ) else (
+    move out32 "%OUTDIR%\LIB Release" 1>nul
+  )
+  if exist "%OUTDIR%\DLL Release" (
+    copy /y out32dll\* "%OUTDIR%\DLL Release" 1>nul
+    rd out32dll /s /q
+  ) else (
+    move out32dll "%OUTDIR%\DLL Release" 1>nul
+  )
 
   rem Move the PDB files
-  move tmp32\lib.pdb "%OUTDIR%\LIB Release"
-  move tmp32dll\lib.pdb "%OUTDIR%\DLL Release"
+  move tmp32\lib.pdb "%OUTDIR%\LIB Release" 1>nul
+  move tmp32dll\lib.pdb "%OUTDIR%\DLL Release" 1>nul
 
   rem Remove the intermediate directories
   rd tmp32 /s /q
@@ -303,7 +381,7 @@
 :syntax
   rem Display the help
   echo.
-  echo Usage: build-openssl ^<compiler^> ^<platform^> [configuration] [directory]
+  echo Usage: build-openssl ^<compiler^> [platform] [configuration] [directory] [-VSpath] ["VSpath"] [-perlpath] ["perlpath"]
   echo.
   echo Compiler:
   echo.
@@ -316,7 +394,7 @@
   echo vc11      - Use Visual Studio 2012
   echo vc12      - Use Visual Studio 2013
   echo vc14      - Use Visual Studio 2015
-  echo vc15      - Use Visual Studio 2017
+  echo vc14.1    - Use Visual Studio 2017
   echo.
   echo Platform:
   echo.
@@ -331,6 +409,14 @@
   echo Other:
   echo.
   echo directory - Specifies the OpenSSL source directory
+  echo.
+  echo -VSpath - Specify the custom VS path if Visual Studio is installed at other location 
+  echo           then "C:/<ProgramFiles>/Microsoft Visual Studio[version]
+  echo           For e.g. -VSpath "C:\apps\MVS14"
+  echo.
+  echo -perlpath - Specify the custom perl root path if perl is not located at "C:\Perl" and it is a
+  echo             portable copy of perl and not installed on the win system
+  echo			   For e.g. -perlpath "D:\strawberry-perl-5.24.3.1-64bit-portable"
   goto error
 
 :unknown
@@ -351,11 +437,15 @@
 :novc
   echo.
   echo Error: %VC_DESC% is not installed
+  echo Error: Please check whether Visual compiler is installed at the path "%ABS_VC_PATH%"
+  echo Error: Please provide proper VS Path by using -VSpath
   goto error
 
 :noperl
   echo.
   echo Error: Perl is not installed
+  echo Error: Please check whether Perl is installed or it is at location "C:\Perl"
+  echo Error: If Perl is portable please provide perl root path by using -perlpath
   goto error
 
 :nox64
@@ -381,6 +471,6 @@
   exit /B 1
 
 :success
-  cd %SAVED_PATH%
+  cd /d %SAVED_PATH%
   endlocal
   exit /B 0
diff --git a/projects/build-wolfssl.bat b/projects/build-wolfssl.bat
index 875d6fd..9a7d67b 100644
--- a/projects/build-wolfssl.bat
+++ b/projects/build-wolfssl.bat
@@ -6,7 +6,7 @@
 rem *                            | (__| |_| |  _ <| |___
 rem *                             \___|\___/|_| \_\_____|
 rem *
-rem * Copyright (C) 2012 - 2017, Steve Holme, <steve_holme@hotmail.com>.
+rem * Copyright (C) 2012 - 2018, Steve Holme, <steve_holme@hotmail.com>.
 rem * Copyright (C) 2015, Jay Satiro, <raysatiro@yahoo.com>.
 rem *
 rem * This software is licensed as described in the file COPYING, which
@@ -35,6 +35,16 @@
   rem Ensure we have the required arguments
   if /i "%~1" == "" goto syntax
 
+  rem Calculate the program files directory
+  if defined PROGRAMFILES (
+    set "PF=%PROGRAMFILES%"
+    set OS_PLATFORM=x86
+  )
+  if defined PROGRAMFILES(x86) (
+    set "PF=%PROGRAMFILES(x86)%"
+    set OS_PLATFORM=x64
+  )
+
 :parseArgs
   if "%~1" == "" goto prerequisites
 
@@ -58,11 +68,20 @@
     set VC_DESC=VC14
     set VC_TOOLSET=v140
     set "VC_PATH=Microsoft Visual Studio 14.0\VC"
-  ) else if /i "%~1" == "vc15" (
-    set VC_VER=15.0
-    set VC_DESC=VC15
+  ) else if /i "%~1" == "vc14.1" (
+    set VC_VER=14.1
+    set VC_DESC=VC14.1
     set VC_TOOLSET=v141
-    set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
+
+    rem Determine the VC14.1 path based on the installed edition in descending
+    rem order (Enterprise, then Professional and finally Community)
+    if exist "%PF%\Microsoft Visual Studio\2017\Enterprise\VC" (
+      set "VC_PATH=Microsoft Visual Studio\2017\Enterprise\VC"
+    ) else if exist "%PF%\Microsoft Visual Studio\2017\Professional\VC" (
+      set "VC_PATH=Microsoft Visual Studio\2017\Professional\VC"
+    ) else (
+      set "VC_PATH=Microsoft Visual Studio\2017\Community\VC"
+    )
   ) else if /i "%~1" == "x86" (
     set BUILD_PLATFORM=x86
   ) else if /i "%~1" == "x64" (
@@ -88,23 +107,12 @@
   shift & goto parseArgs
 
 :prerequisites
-  rem Compiler and platform are required parameters.
+  rem Compiler is a required parameter
   if not defined VC_VER goto syntax
-  if not defined BUILD_PLATFORM goto syntax
 
   rem Default the start directory if one isn't specified
   if not defined START_DIR set START_DIR=..\..\wolfssl
 
-  rem Calculate the program files directory
-  if defined PROGRAMFILES (
-    set "PF=%PROGRAMFILES%"
-    set OS_PLATFORM=x86
-  )
-  if defined PROGRAMFILES(x86) (
-    set "PF=%PROGRAMFILES(x86)%"
-    set OS_PLATFORM=x64
-  )
-
   rem Check we have a program files directory
   if not defined PF goto nopf
 
@@ -124,22 +132,22 @@
     if "%VC_VER%" == "11.0" set VCVARS_PLATFORM=amd64
     if "%VC_VER%" == "12.0" set VCVARS_PLATFORM=amd64
     if "%VC_VER%" == "14.0" set VCVARS_PLATFORM=amd64
-    if "%VC_VER%" == "15.0" set VCVARS_PLATFORM=amd64
+    if "%VC_VER%" == "14.1" set VCVARS_PLATFORM=amd64
   )
 
 :start
   echo.
   set SAVED_PATH=%CD%
 
-  if "%VC_VER%" == "15.0" (
+  if "%VC_VER%" == "14.1" (
     call "%PF%\%VC_PATH%\Auxiliary\Build\vcvarsall" %VCVARS_PLATFORM%
   ) else (
     call "%PF%\%VC_PATH%\vcvarsall" %VCVARS_PLATFORM%
   )
 
   echo.
-  cd %SAVED_PATH%
-  cd %START_DIR%
+  cd /d %SAVED_PATH%
+  if defined START_DIR cd /d %START_DIR%
   goto %BUILD_PLATFORM%
 
 :x64
@@ -291,7 +299,7 @@
 :syntax
   rem Display the help
   echo.
-  echo Usage: build-wolfssl ^<compiler^> ^<platform^> [configuration] [directory]
+  echo Usage: build-wolfssl ^<compiler^> [platform] [configuration] [directory]
   echo.
   echo Compiler:
   echo.
@@ -299,7 +307,7 @@
   echo vc11      - Use Visual Studio 2012
   echo vc12      - Use Visual Studio 2013
   echo vc14      - Use Visual Studio 2015
-  echo vc15      - Use Visual Studio 2017
+  echo vc14.1    - Use Visual Studio 2017
   echo.
   echo Platform:
   echo.
@@ -361,6 +369,6 @@
     echo %SUCCESSFUL_BUILDS%
     echo.
   )
-  cd %SAVED_PATH%
+  cd /d %SAVED_PATH%
   endlocal
   exit /B 0
diff --git a/projects/generate.bat b/projects/generate.bat
index f8fb81f..d1fc608 100644
--- a/projects/generate.bat
+++ b/projects/generate.bat
@@ -284,12 +284,14 @@
       call :element %1 lib "strtoofft.c" %3
       call :element %1 lib "nonblock.c" %3
       call :element %1 lib "warnless.c" %3
+      call :element %1 lib "curl_ctype.c" %3
     ) else if "!var!" == "CURL_SRC_X_H_FILES" (
       call :element %1 lib "config-win32.h" %3
       call :element %1 lib "curl_setup.h" %3
       call :element %1 lib "strtoofft.h" %3
       call :element %1 lib "nonblock.h" %3
       call :element %1 lib "warnless.h" %3
+      call :element %1 lib "curl_ctype.h" %3
     ) else if "!var!" == "CURL_LIB_C_FILES" (
       for /f "delims=" %%c in ('dir /b ..\lib\*.c') do call :element %1 lib "%%c" %3
     ) else if "!var!" == "CURL_LIB_H_FILES" (
diff --git a/src/Makefile.inc b/src/Makefile.inc
index 45b4967..e0506c7 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -12,13 +12,15 @@
 CURLX_CFILES = \
 	../lib/strtoofft.c \
 	../lib/nonblock.c \
-	../lib/warnless.c
+	../lib/warnless.c \
+        ../lib/curl_ctype.c
 
 CURLX_HFILES = \
 	../lib/curl_setup.h \
 	../lib/strtoofft.h \
 	../lib/nonblock.h \
-	../lib/warnless.h
+	../lib/warnless.h \
+        ../lib/curl_ctype.h
 
 CURL_CFILES = \
 	slist_wc.c \
@@ -35,6 +37,7 @@
 	tool_dirhie.c \
 	tool_doswin.c \
 	tool_easysrc.c \
+	tool_filetime.c \
 	tool_formparse.c \
 	tool_getparam.c \
 	tool_getpass.c \
@@ -75,6 +78,7 @@
 	tool_dirhie.h \
 	tool_doswin.h \
 	tool_easysrc.h \
+	tool_filetime.h \
 	tool_formparse.h \
 	tool_getparam.h \
 	tool_getpass.h \
diff --git a/src/Makefile.netware b/src/Makefile.netware
index a927da5..ebe6500 100644
--- a/src/Makefile.netware
+++ b/src/Makefile.netware
@@ -106,7 +106,7 @@
 MTSAFE	= YES
 STACK	= 64000
 SCREEN	= $(TARGET) commandline utility
-# Comment the line below if you dont want to load protected automatically.
+# Comment the line below if you don't want to load protected automatically.
 # LDRING = 3
 
 # Uncomment the next line to enable linking with POSIX semantics.
@@ -178,7 +178,7 @@
 	CFLAGS += -align 4
 else
 	# PRELUDE = $(NDK_CLIB)/imports/clibpre.o
-	# to avoid the __init_* / __deinit_* whoes dont use prelude from NDK
+	# to avoid the __init_* / __deinit_* whoes don't use prelude from NDK
 	PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
 	# CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
 	CFLAGS += -align 1
@@ -201,7 +201,7 @@
 endif
 else
 	# PRELUDE = $(NDK_CLIB)/imports/clibpre.gcc.o
-	# to avoid the __init_* / __deinit_* whoes dont use prelude from NDK
+	# to avoid the __init_* / __deinit_* whoes don't use prelude from NDK
 	# http://www.gknw.net/development/mk_nlm/gcc_pre.zip
 	PRELUDE = $(NDK_ROOT)/pre/prelude.o
 	CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
diff --git a/src/tool_cb_dbg.c b/src/tool_cb_dbg.c
index aa1ef85..16bfb42 100644
--- a/src/tool_cb_dbg.c
+++ b/src/tool_cb_dbg.c
@@ -146,7 +146,7 @@
         if(!config->isatty || ((output != stderr) && (output != stdout))) {
           if(!newl)
             fprintf(output, "%s%s ", timebuf, s_infotype[type]);
-          fprintf(output, "[%zd bytes data]\n", size);
+          fprintf(output, "[%zu bytes data]\n", size);
           newl = FALSE;
           traced_data = TRUE;
         }
@@ -229,7 +229,7 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stream, "%s%s, %zd bytes (0x%zx)\n", timebuf, text, size, size);
+  fprintf(stream, "%s%s, %zu bytes (0x%zx)\n", timebuf, text, size, size);
 
   for(i = 0; i < size; i += width) {
 
diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c
index cf3251b..60a3804 100644
--- a/src/tool_cb_prg.c
+++ b/src/tool_cb_prg.c
@@ -35,6 +35,12 @@
 
 #include "memdebug.h" /* keep this as LAST include */
 
+#ifdef HAVE_TERMIOS_H
+#  include <termios.h>
+#elif defined(HAVE_TERMIO_H)
+#  include <termio.h>
+#endif
+
 /* 200 values generated by this perl code:
 
    my $pi = 3.1415;
@@ -78,7 +84,7 @@
   pos = sinus[(bar->tick + 15)%200] / (10000 / check);
   buf[pos] = '#';
 
-  fputs(buf, stderr);
+  fputs(buf, bar->out);
   bar->tick += 2;
   if(bar->tick >= 200)
     bar->tick -= 200;
diff --git a/src/tool_cfgable.c b/src/tool_cfgable.c
index 755195c..81e16c1 100644
--- a/src/tool_cfgable.c
+++ b/src/tool_cfgable.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -42,6 +42,7 @@
   config->proto_redir_present = FALSE;
   config->proto_default = NULL;
   config->tcp_nodelay = TRUE; /* enabled by default */
+  config->happy_eyeballs_timeout_ms = CURL_HET_DEFAULT;
 }
 
 static void free_config_fields(struct OperationConfig *config)
@@ -113,6 +114,7 @@
   Curl_safefree(config->proxy_capath);
   Curl_safefree(config->crlfile);
   Curl_safefree(config->pinnedpubkey);
+  Curl_safefree(config->proxy_pinnedpubkey);
   Curl_safefree(config->proxy_crlfile);
   Curl_safefree(config->key);
   Curl_safefree(config->proxy_key);
diff --git a/src/tool_cfgable.h b/src/tool_cfgable.h
index ddfc9bf..9abaa9d 100644
--- a/src/tool_cfgable.h
+++ b/src/tool_cfgable.h
@@ -7,7 +7,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -128,6 +128,7 @@
   char *crlfile;
   char *proxy_crlfile;
   char *pinnedpubkey;
+  char *proxy_pinnedpubkey;
   char *key;
   char *proxy_key;
   char *key_type;
@@ -168,7 +169,7 @@
   long proxy_ssl_version;
   long ip_version;
   curl_TimeCond timecond;
-  time_t condtime;
+  curl_off_t condtime;
   struct curl_slist *headers;
   struct curl_slist *proxyheaders;
   curl_mime *mimepost;
@@ -249,6 +250,9 @@
   curl_error synthetic_error;     /* if non-zero, it overrides any libcurl
                                      error */
   bool ssh_compression;           /* enable/disable SSH compression */
+  long happy_eyeballs_timeout_ms; /* happy eyeballs timeout in milliseconds.
+                                     0 is valid. default: CURL_HET_DEFAULT. */
+  bool haproxy_protocol;          /* whether to send HAProxy PROXY protocol */
   struct GlobalConfig *global;
   struct OperationConfig *prev;
   struct OperationConfig *next;   /* Always last in the struct */
diff --git a/src/tool_dirhie.c b/src/tool_dirhie.c
index 1d73592..a01f9dc 100644
--- a/src/tool_dirhie.c
+++ b/src/tool_dirhie.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -41,9 +41,9 @@
 #  endif
 #endif
 
-#ifdef WIN32
+#if defined(WIN32) || (defined(MSDOS) && !defined(__DJGPP__))
 #  define mkdir(x,y) (mkdir)((x))
-#  ifndef __POCC__
+#  ifndef F_OK
 #    define F_OK 0
 #  endif
 #endif
@@ -91,7 +91,7 @@
  *  should create all the dir* automagically
  */
 
-#ifdef WIN32
+#if defined(WIN32) || defined(__DJGPP__)
 /* systems that may use either or when specifying a path */
 #define PATH_DELIMITERS "\\/"
 #else
diff --git a/src/tool_doswin.c b/src/tool_doswin.c
index 9129998..c3a8826 100644
--- a/src/tool_doswin.c
+++ b/src/tool_doswin.c
@@ -638,12 +638,19 @@
  */
 
 CURLcode FindWin32CACert(struct OperationConfig *config,
+                         curl_sslbackend backend,
                          const char *bundle_file)
 {
   CURLcode result = CURLE_OK;
 
-  /* search and set cert file only if libcurl supports SSL */
-  if(curlinfo->features & CURL_VERSION_SSL) {
+  /* Search and set cert file only if libcurl supports SSL.
+   *
+   * If Schannel (WinSSL) is the selected SSL backend then these locations
+   * are ignored. We allow setting CA location for schannel only when
+   * explicitly specified by the user via CURLOPT_CAINFO / --cacert.
+   */
+  if((curlinfo->features & CURL_VERSION_SSL) &&
+     backend != CURLSSLBACKEND_SCHANNEL) {
 
     DWORD res_len;
     char buf[PATH_MAX];
diff --git a/src/tool_doswin.h b/src/tool_doswin.h
index f649ef0..289281f 100644
--- a/src/tool_doswin.h
+++ b/src/tool_doswin.h
@@ -58,6 +58,7 @@
 #ifdef WIN32
 
 CURLcode FindWin32CACert(struct OperationConfig *config,
+                         curl_sslbackend backend,
                          const char *bundle_file);
 
 #endif /* WIN32 */
diff --git a/src/tool_filetime.c b/src/tool_filetime.c
new file mode 100644
index 0000000..6071e44
--- /dev/null
+++ b/src/tool_filetime.c
@@ -0,0 +1,154 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "tool_filetime.h"
+
+#ifdef HAVE_UTIME_H
+#  include <utime.h>
+#elif defined(HAVE_SYS_UTIME_H)
+#  include <sys/utime.h>
+#endif
+
+curl_off_t getfiletime(const char *filename, FILE *error_stream)
+{
+  curl_off_t result = -1;
+
+/* Windows stat() may attempt to adjust the unix GMT file time by a daylight
+   saving time offset and since it's GMT that is bad behavior. When we have
+   access to a 64-bit type we can bypass stat and get the times directly. */
+#if defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)
+  HANDLE hfile;
+
+  hfile = CreateFileA(filename, FILE_READ_ATTRIBUTES,
+                      (FILE_SHARE_READ | FILE_SHARE_WRITE |
+                       FILE_SHARE_DELETE),
+                      NULL, OPEN_EXISTING, 0, NULL);
+  if(hfile != INVALID_HANDLE_VALUE) {
+    FILETIME ft;
+    if(GetFileTime(hfile, NULL, NULL, &ft)) {
+      curl_off_t converted = (curl_off_t)ft.dwLowDateTime
+          | ((curl_off_t)ft.dwHighDateTime) << 32;
+
+      if(converted < CURL_OFF_T_C(116444736000000000)) {
+        fprintf(error_stream,
+                "Failed to get filetime: underflow\n");
+      }
+      else {
+        result = (converted - CURL_OFF_T_C(116444736000000000)) / 10000000;
+      }
+    }
+    else {
+      fprintf(error_stream,
+              "Failed to get filetime: "
+              "GetFileTime failed: GetLastError %u\n",
+              (unsigned int)GetLastError());
+    }
+    CloseHandle(hfile);
+  }
+  else if(GetLastError() != ERROR_FILE_NOT_FOUND) {
+    fprintf(error_stream,
+            "Failed to get filetime: "
+            "CreateFile failed: GetLastError %u\n",
+            (unsigned int)GetLastError());
+  }
+#else
+  struct_stat statbuf;
+  if(-1 != stat(filename, &statbuf)) {
+    result = (curl_off_t)statbuf.st_mtime;
+  }
+  else if(errno != ENOENT) {
+    fprintf(error_stream,
+            "Failed to get filetime: %s\n", strerror(errno));
+  }
+#endif
+  return result;
+}
+
+#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+    (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
+void setfiletime(curl_off_t filetime, const char *filename,
+    FILE *error_stream)
+{
+  if(filetime >= 0) {
+/* Windows utime() may attempt to adjust the unix GMT file time by a daylight
+   saving time offset and since it's GMT that is bad behavior. When we have
+   access to a 64-bit type we can bypass utime and set the times directly. */
+#if defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)
+    HANDLE hfile;
+
+    /* 910670515199 is the maximum unix filetime that can be used as a
+       Windows FILETIME without overflow: 30827-12-31T23:59:59. */
+    if(filetime > CURL_OFF_T_C(910670515199)) {
+      fprintf(error_stream,
+              "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+              " on outfile: overflow\n", filetime);
+      return;
+    }
+
+    hfile = CreateFileA(filename, FILE_WRITE_ATTRIBUTES,
+                        (FILE_SHARE_READ | FILE_SHARE_WRITE |
+                         FILE_SHARE_DELETE),
+                        NULL, OPEN_EXISTING, 0, NULL);
+    if(hfile != INVALID_HANDLE_VALUE) {
+      curl_off_t converted = ((curl_off_t)filetime * 10000000) +
+                             CURL_OFF_T_C(116444736000000000);
+      FILETIME ft;
+      ft.dwLowDateTime = (DWORD)(converted & 0xFFFFFFFF);
+      ft.dwHighDateTime = (DWORD)(converted >> 32);
+      if(!SetFileTime(hfile, NULL, &ft, &ft)) {
+        fprintf(error_stream,
+                "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+                " on outfile: SetFileTime failed: GetLastError %u\n",
+                filetime, (unsigned int)GetLastError());
+      }
+      CloseHandle(hfile);
+    }
+    else {
+      fprintf(error_stream,
+              "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+              " on outfile: CreateFile failed: GetLastError %u\n",
+              filetime, (unsigned int)GetLastError());
+    }
+
+#elif defined(HAVE_UTIMES)
+    struct timeval times[2];
+    times[0].tv_sec = times[1].tv_sec = (time_t)filetime;
+    times[0].tv_usec = times[1].tv_usec = 0;
+    if(utimes(filename, times)) {
+      fprintf(error_stream,
+              "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+              " on outfile: %s\n", filetime, strerror(errno));
+    }
+
+#elif defined(HAVE_UTIME)
+    struct utimbuf times;
+    times.actime = (time_t)filetime;
+    times.modtime = (time_t)filetime;
+    if(utime(filename, &times)) {
+      fprintf(error_stream,
+              "Failed to set filetime %" CURL_FORMAT_CURL_OFF_T
+              " on outfile: %s\n", filetime, strerror(errno));
+    }
+#endif
+  }
+}
+#endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+          (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */
diff --git a/src/tool_filetime.h b/src/tool_filetime.h
new file mode 100644
index 0000000..966a70b
--- /dev/null
+++ b/src/tool_filetime.h
@@ -0,0 +1,38 @@
+#ifndef HEADER_CURL_TOOL_FILETIME_H
+#define HEADER_CURL_TOOL_FILETIME_H
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "tool_setup.h"
+
+curl_off_t getfiletime(const char *filename, FILE *error_stream);
+
+#if defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+    (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
+void setfiletime(curl_off_t filetime, const char *filename,
+    FILE *error_stream);
+#else
+#define setfiletime(a,b,c) Curl_nop_stmt
+#endif /* defined(HAVE_UTIME) || defined(HAVE_UTIMES) || \
+          (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */
+
+#endif /* HEADER_CURL_TOOL_FILETIME_H */
+
diff --git a/src/tool_formparse.c b/src/tool_formparse.c
index 719e341..5313b34 100644
--- a/src/tool_formparse.c
+++ b/src/tool_formparse.c
@@ -451,11 +451,10 @@
   if(strcmp(file, "-"))
     return curl_mime_filedata(part, file);
 
-  sip = (standard_input *) malloc(sizeof *sip);
+  sip = (standard_input *) calloc(1, sizeof *sip);
   if(!sip)
     return CURLE_OUT_OF_MEMORY;
 
-  memset((char *) sip, 0, sizeof *sip);
   set_binmode(stdin);
 
   /* If stdin is a regular file, do not buffer data but read it when needed. */
diff --git a/src/tool_getparam.c b/src/tool_getparam.c
index 3f40464..19454c8 100644
--- a/src/tool_getparam.c
+++ b/src/tool_getparam.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -31,6 +31,7 @@
 #include "tool_cfgable.h"
 #include "tool_cb_prg.h"
 #include "tool_convert.h"
+#include "tool_filetime.h"
 #include "tool_formparse.h"
 #include "tool_getparam.h"
 #include "tool_helpers.h"
@@ -111,6 +112,7 @@
   {"*x", "krb",                      ARG_STRING},
   {"*x", "krb4",                     ARG_STRING},
          /* 'krb4' is the previous name */
+  {"*X", "haproxy-protocol",         ARG_BOOL},
   {"*y", "max-filesize",             ARG_STRING},
   {"*z", "disable-eprt",             ARG_BOOL},
   {"*Z", "eprt",                     ARG_BOOL},
@@ -189,6 +191,7 @@
   {"$X", "tls-max",                  ARG_STRING},
   {"$Y", "suppress-connect-headers", ARG_BOOL},
   {"$Z", "compressed-ssh",           ARG_BOOL},
+  {"$~", "happy-eyeballs-timeout-ms", ARG_STRING},
   {"0",   "http1.0",                 ARG_NONE},
   {"01",  "http1.1",                 ARG_NONE},
   {"02",  "http2",                   ARG_NONE},
@@ -232,6 +235,7 @@
   {"En", "ssl-allow-beast",          ARG_BOOL},
   {"Eo", "login-options",            ARG_STRING},
   {"Ep", "pinnedpubkey",             ARG_STRING},
+  {"EP", "proxy-pinnedpubkey",       ARG_STRING},
   {"Eq", "cert-status",              ARG_BOOL},
   {"Er", "false-start",              ARG_BOOL},
   {"Es", "ssl-no-revoke",            ARG_BOOL},
@@ -652,7 +656,8 @@
       break;
 
       case 'j': /* --compressed */
-        if(toggle && !(curlinfo->features & CURL_VERSION_LIBZ))
+        if(toggle &&
+           !(curlinfo->features & (CURL_VERSION_LIBZ | CURL_VERSION_BROTLI)))
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         config->encoding = toggle;
         break;
@@ -775,6 +780,9 @@
         else
           return PARAM_LIBCURL_DOESNT_SUPPORT;
         break;
+      case 'X': /* --haproxy-protocol */
+        config->haproxy_protocol = toggle;
+        break;
       case 'y': /* --max-filesize */
         {
           curl_off_t value;
@@ -1109,6 +1117,12 @@
       case 'Z': /* --compressed-ssh */
         config->ssh_compression = toggle;
         break;
+      case '~': /* --happy-eyeballs-timeout-ms */
+        err = str2unum(&config->happy_eyeballs_timeout_ms, nextarg);
+        if(err)
+          return err;
+        /* 0 is a valid value for this timeout */
+        break;
       }
       break;
     case '#': /* --progress-bar */
@@ -1500,6 +1514,10 @@
         GetStr(&config->pinnedpubkey, nextarg);
         break;
 
+      case 'P': /* proxy pinned public key */
+        GetStr(&config->proxy_pinnedpubkey, nextarg);
+        break;
+
       case 'q': /* --cert-status */
         config->verifystatus = TRUE;
         break;
@@ -2082,11 +2100,15 @@
         break;
       }
       now = time(NULL);
-      config->condtime = curl_getdate(nextarg, &now);
-      if(-1 == (int)config->condtime) {
+      config->condtime = (curl_off_t)curl_getdate(nextarg, &now);
+      if(-1 == config->condtime) {
         /* now let's see if it is a file name to get the time from instead! */
-        struct_stat statbuf;
-        if(-1 == stat(nextarg, &statbuf)) {
+        curl_off_t filetime = getfiletime(nextarg, config->global->errors);
+        if(filetime >= 0) {
+          /* pull the time out from the file */
+          config->condtime = filetime;
+        }
+        else {
           /* failed, remove time condition */
           config->timecond = CURL_TIMECOND_NONE;
           warnf(global,
@@ -2094,10 +2116,6 @@
                 "a file name). Disabling time condition. "
                 "See curl_getdate(3) for valid date syntax.\n");
         }
-        else {
-          /* pull the time out from the file */
-          config->condtime = statbuf.st_mtime;
-        }
       }
       break;
     default: /* unknown flag */
diff --git a/src/tool_help.c b/src/tool_help.c
index 9dc59cb..6f5ad08 100644
--- a/src/tool_help.c
+++ b/src/tool_help.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -160,8 +160,12 @@
    "Put the post data in the URL and use GET"},
   {"-g, --globoff",
    "Disable URL sequences and ranges using {} and []"},
+  {"    --happy-eyeballs-timeout-ms",
+   "How long to wait in milliseconds for IPv6 before trying IPv4"},
   {"-I, --head",
    "Show document info only"},
+  {"    --haproxy-protocol",
+   "Send HAProxy PROXY protocol header"},
   {"-H, --header <header/@file>",
    "Pass custom header(s) to server"},
   {"-h, --help",
@@ -224,7 +228,7 @@
    "Maximum file size to download"},
   {"    --max-redirs <num>",
    "Maximum number of redirects allowed"},
-  {"-m, --max-time <time>",
+  {"-m, --max-time <seconds>",
    "Maximum time allowed for the transfer"},
   {"    --metalink",
    "Process given URLs as metalink XML file"},
@@ -314,6 +318,8 @@
    "Use NTLM authentication on the proxy"},
   {"    --proxy-pass <phrase>",
    "Pass phrase for the private key for HTTPS proxy"},
+  {"    --proxy-pinnedpubkey <hashes>",
+   "FILE/HASHES public key to verify proxy with"},
   {"    --proxy-service-name <name>",
    "SPNEGO proxy service name"},
   {"    --proxy-ssl-allow-beast",
@@ -505,7 +511,8 @@
   {"HTTP2",          CURL_VERSION_HTTP2},
   {"UnixSockets",    CURL_VERSION_UNIX_SOCKETS},
   {"HTTPS-proxy",    CURL_VERSION_HTTPS_PROXY},
-  {"MultiSSL",       CURL_VERSION_MULTI_SSL}
+  {"MultiSSL",       CURL_VERSION_MULTI_SSL},
+  {"PSL",            CURL_VERSION_PSL},
 };
 
 void tool_help(void)
@@ -549,9 +556,6 @@
 #ifdef USE_METALINK
     printf("Metalink ");
 #endif
-#ifdef USE_LIBPSL
-    printf("PSL ");
-#endif
     puts(""); /* newline */
   }
 }
diff --git a/src/tool_hugehelp.c b/src/tool_hugehelp.c
index be8a492..f5b1d91 100644
--- a/src/tool_hugehelp.c
+++ b/src/tool_hugehelp.c
@@ -18,7 +18,7 @@
 "       curl - transfer a URL\n"
 "\n"
 "SYNOPSIS\n"
-"       curl [options] [URL...]\n"
+"       curl [options / URLs]\n"
 "\n"
 "DESCRIPTION\n"
 "       curl  is  a tool to transfer data from or to a server, using one of the\n"
@@ -64,10 +64,12 @@
 "         http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html\n"
 "\n"
 "       You can specify any amount of URLs on the command line.  They  will  be\n"
-"       fetched in a sequential manner in the specified order.\n"
-"\n"
+"       fetched  in a sequential manner in the specified order. You can specify\n"
 , stdout);
  fputs(
+"       command line options and URLs mixed and in any  order  on  the  command\n"
+"       line.\n"
+"\n"
 "       You  can  specify a step counter for the ranges to get every Nth number\n"
 "       or letter:\n"
 "\n"
@@ -77,11 +79,11 @@
 "\n"
 "       When using [] or {} sequences when invoked from a command line  prompt,\n"
 "       you probably have to put the full URL within double quotes to avoid the\n"
+, stdout);
+ fputs(
 "       shell from interfering with it. This also  goes  for  other  characters\n"
 "       treated special, like for example '&', '?' and '*'.\n"
 "\n"
-, stdout);
- fputs(
 "       Provide  the IPv6 zone index in the URL with an escaped percentage sign\n"
 "       and the interface name. Like in\n"
 "\n"
@@ -89,48 +91,50 @@
 "\n"
 "       If you specify URL without protocol:// prefix,  curl  will  attempt  to\n"
 "       guess  what  protocol  you might want. It will then default to HTTP but\n"
+, stdout);
+ fputs(
 "       try other protocols based on often-used host name prefixes.  For  exam-\n"
 "       ple,  for  host names starting with \"ftp.\" curl will assume you want to\n"
 "       speak FTP.\n"
 "\n"
-, stdout);
- fputs(
 "       curl will do its best to use what you pass to it as a URL.  It  is  not\n"
 "       trying  to  validate it as a syntactically correct URL by any means but\n"
 "       is instead very liberal with what it accepts.\n"
 "\n"
 "       curl will attempt to re-use connections for multiple file transfers, so\n"
-"       that  getting many files from the same server will not do multiple con-\n"
-"       nects / handshakes. This improves speed. Of course this is only done on\n"
 , stdout);
  fputs(
+"       that  getting many files from the same server will not do multiple con-\n"
+"       nects / handshakes. This improves speed. Of course this is only done on\n"
 "       files  specified  on  a  single command line and cannot be used between\n"
 "       separate curl invokes.\n"
 "\n"
 "PROGRESS METER\n"
 "       curl normally displays a progress meter during  operations,  indicating\n"
 "       the  amount  of  transferred  data,  transfer speeds and estimated time\n"
+, stdout);
+ fputs(
 "       left, etc. The progress meter displays number of bytes and  the  speeds\n"
 "       are  in  bytes per second. The suffixes (k, M, G, T, P) are 1024 based.\n"
 "       For example 1k is 1024 bytes. 1M is 1048576 bytes.\n"
 "\n"
-, stdout);
- fputs(
 "       curl displays this data to the terminal by default, so  if  you  invoke\n"
 "       curl  to do an operation and it is about to write data to the terminal,\n"
 "       it disables the progress meter as otherwise it would mess up the output\n"
+, stdout);
+ fputs(
 "       mixing progress meter and response data.\n"
 "\n"
 "       If you want a progress meter for HTTP POST or PUT requests, you need to\n"
 "       redirect the response output to a file, using shell redirect  (>),  -o,\n"
 "       --output or similar.\n"
 "\n"
-, stdout);
- fputs(
 "       It  is not the same case for FTP upload as that operation does not spit\n"
 "       out any response data to the terminal.\n"
 "\n"
 "       If you prefer a progress  \"bar\"  instead  of  the  regular  meter,  -#,\n"
+, stdout);
+ fputs(
 "       --progress-bar  is your friend. You can also disable the progress meter\n"
 "       completely with the -s, --silent option.\n"
 "\n"
@@ -138,31 +142,31 @@
 "       Options start with one or two dashes. Many of the  options  require  an\n"
 "       additional value next to them.\n"
 "\n"
-, stdout);
- fputs(
 "       The  short  \"single-dash\"  form  of the options, -d for example, may be\n"
 "       used with or without a space between it and its value, although a space\n"
 "       is a recommended separator. The long \"double-dash\" form, -d, --data for\n"
+, stdout);
+ fputs(
 "       example, requires a space between it and its value.\n"
 "\n"
 "       Short version options that don't need any additional values can be used\n"
 "       immediately  next  to  each other, like for example you can specify all\n"
-, stdout);
- fputs(
 "       the options -O, -L and -v at once as -OLv.\n"
 "\n"
 "       In general, all boolean options are enabled with --option and yet again\n"
 "       disabled  with --no-option. That is, you use the exact same option name\n"
+, stdout);
+ fputs(
 "       but prefix it with \"no-\". However, in this list we mostly only list and\n"
 "       show  the --option version of them. (This concept with --no options was\n"
 "       added in  7.19.0.  Previously  most  options  were  toggled  on/off  on\n"
 "       repeated use of the same command line option.)\n"
-, stdout);
- fputs(
 "\n"
 "       --abstract-unix-socket <path>\n"
 "              (HTTP)  Connect  through an abstract Unix domain socket, instead\n"
 "              of using the network.   Note:  netstat  shows  the  path  of  an\n"
+, stdout);
+ fputs(
 "              abstract  socket  prefixed with '@', however the <path> argument\n"
 "              should not have this leading character.\n"
 "\n"
@@ -170,39 +174,37 @@
 "\n"
 "       --anyauth\n"
 "              (HTTP) Tells curl to figure out authentication method by itself,\n"
-, stdout);
- fputs(
 "              and  use  the most secure one the remote site claims to support.\n"
 "              This is done by first doing a request and checking the response-\n"
 "              headers,  thus  possibly  inducing  an extra network round-trip.\n"
+, stdout);
+ fputs(
 "              This is  used  instead  of  setting  a  specific  authentication\n"
 "              method,  which  you  can  do with --basic, --digest, --ntlm, and\n"
 "              --negotiate.\n"
 "\n"
-, stdout);
- fputs(
 "              Using --anyauth is not recommended if you do uploads from stdin,\n"
 "              since  it  may require data to be sent twice and then the client\n"
 "              must be able to rewind. If the need should arise when  uploading\n"
 "              from stdin, the upload operation will fail.\n"
 "\n"
+, stdout);
+ fputs(
 "              Used together with -u, --user.\n"
 "\n"
 "              See also --proxy-anyauth and --basic and --digest.\n"
 "\n"
 "       -a, --append\n"
-, stdout);
- fputs(
 "              (FTP SFTP) When used in an upload, this makes curl append to the\n"
 "              target file instead  of  overwriting  it.  If  the  remote  file\n"
 "              doesn't  exist,  it  will  be  created.   Note that this flag is\n"
 "              ignored by some SFTP servers (including OpenSSH).\n"
 "\n"
 "       --basic\n"
-"              (HTTP) Tells curl to use  HTTP  Basic  authentication  with  the\n"
-"              remote  host.  This  is  the  default and this option is usually\n"
 , stdout);
  fputs(
+"              (HTTP) Tells curl to use  HTTP  Basic  authentication  with  the\n"
+"              remote  host.  This  is  the  default and this option is usually\n"
 "              pointless, unless you use it to override a previously set option\n"
 "              that  sets  a  different  authentication method (such as --ntlm,\n"
 "              --digest, or --negotiate).\n"
@@ -212,51 +214,59 @@
 "              See also --proxy-basic.\n"
 "\n"
 "       --cacert <file>\n"
-"              (TLS) Tells curl to use the specified certificate file to verify\n"
-"              the  peer.  The  file  may contain multiple CA certificates. The\n"
 , stdout);
  fputs(
+"              (TLS) Tells curl to use the specified certificate file to verify\n"
+"              the  peer.  The  file  may contain multiple CA certificates. The\n"
 "              certificate(s) must be in PEM format. Normally curl is built  to\n"
 "              use a default file for this, so this option is typically used to\n"
 "              alter that default file.\n"
 "\n"
 "              curl recognizes the environment variable named  'CURL_CA_BUNDLE'\n"
+, stdout);
+ fputs(
 "              if  it  is  set,  and uses the given path as a path to a CA cert\n"
 "              bundle. This option overrides that variable.\n"
 "\n"
 "              The windows version of curl will automatically  look  for  a  CA\n"
-, stdout);
- fputs(
 "              certs file named 'curl-ca-bundle.crt', either in the same direc-\n"
 "              tory as curl.exe, or in the Current Working Directory, or in any\n"
 "              folder along your PATH.\n"
 "\n"
 "              If  curl  is  built  against  the  NSS  SSL library, the NSS PEM\n"
+, stdout);
+ fputs(
 "              PKCS#11 module (libnsspem.so) needs to  be  available  for  this\n"
 "              option to work properly.\n"
 "\n"
 "              (iOS  and macOS only) If curl is built against Secure Transport,\n"
-, stdout);
- fputs(
 "              then this option is supported for  backward  compatibility  with\n"
 "              other  SSL  engines,  but it should not be set. If the option is\n"
 "              not set, then curl will use the certificates in the  system  and\n"
+, stdout);
+ fputs(
 "              user  Keychain to verify the peer, which is the preferred method\n"
 "              of verifying the peer's certificate chain.\n"
 "\n"
+"              (Schannel/WinSSL only) This option is supported  for  WinSSL  in\n"
+"              Windows  7  or  later with libcurl 7.60 or later. This option is\n"
+"              supported for backward compatibility  with  other  SSL  engines;\n"
+"              instead it is recommended to use Windows' store of root certifi-\n"
+"              cates (the default for WinSSL).\n"
+"\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --capath <dir>\n"
-, stdout);
- fputs(
 "              (TLS) Tells curl to use the specified certificate  directory  to\n"
 "              verify  the  peer.  Multiple paths can be provided by separating\n"
 "              them with \":\" (e.g.  \"path1:path2:path3\"). The certificates must\n"
 "              be  in  PEM  format,  and  if curl is built against OpenSSL, the\n"
 "              directory must have been processed using  the  c_rehash  utility\n"
-"              supplied  with OpenSSL. Using --capath can allow OpenSSL-powered\n"
 , stdout);
  fputs(
+"              supplied  with OpenSSL. Using --capath can allow OpenSSL-powered\n"
 "              curl to make SSL-connections much more  efficiently  than  using\n"
 "              --cacert if the --cacert file contains many CA certificates.\n"
 "\n"
@@ -265,9 +275,9 @@
 "\n"
 "       --cert-status\n"
 "              (TLS) Tells curl to verify the status of the server  certificate\n"
-"              by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
 , stdout);
  fputs(
+"              by using the Certificate Status Request (aka. OCSP stapling) TLS\n"
 "              extension.\n"
 "\n"
 "              If this option is enabled and the server sends an invalid  (e.g.\n"
@@ -278,11 +288,11 @@
 "              This  is  currently  only implemented in the OpenSSL, GnuTLS and\n"
 "              NSS backends.\n"
 "\n"
+, stdout);
+ fputs(
 "              Added in 7.41.0.\n"
 "\n"
 "       --cert-type <type>\n"
-, stdout);
- fputs(
 "              (TLS) Tells curl what certificate type the provided  certificate\n"
 "              is in. PEM, DER and ENG are recognized types.  If not specified,\n"
 "              PEM is assumed.\n"
@@ -292,60 +302,75 @@
 "              See also -E, --cert and --key and --key-type.\n"
 "\n"
 "       -E, --cert <certificate[:password]>\n"
-"              (TLS) Tells curl to use the specified  client  certificate  file\n"
 , stdout);
  fputs(
+"              (TLS) Tells curl to use the specified  client  certificate  file\n"
 "              when getting a file with HTTPS, FTPS or another SSL-based proto-\n"
 "              col. The certificate must be in PKCS#12 format if  using  Secure\n"
 "              Transport,  or  PEM  format  if  using any other engine.  If the\n"
 "              optional password isn't specified, it will be queried for on the\n"
 "              terminal.  Note  that  this  option assumes a \"certificate\" file\n"
-"              that is the private key and the client certificate concatenated!\n"
 , stdout);
  fputs(
+"              that is the private key and the client certificate concatenated!\n"
 "              See -E, --cert and --key to specify them independently.\n"
 "\n"
 "              If  curl  is  built against the NSS SSL library then this option\n"
 "              can tell curl the nickname of the certificate to use within  the\n"
 "              NSS  database defined by the environment variable SSL_DIR (or by\n"
 "              default /etc/pki/nssdb). If the NSS  PEM  PKCS#11  module  (lib-\n"
-"              nsspem.so)  is  available  then  PEM files may be loaded. If you\n"
 , stdout);
  fputs(
+"              nsspem.so)  is  available  then  PEM files may be loaded. If you\n"
 "              want to use a file from the current directory, please precede it\n"
 "              with  \"./\"  prefix, in order to avoid confusion with a nickname.\n"
 "              If the nickname contains \":\", it needs to be preceded by \"\\\"  so\n"
 "              that  it  is not recognized as password delimiter.  If the nick-\n"
 "              name contains \"\\\", it needs to be escaped as \"\\\\\" so that it  is\n"
-"              not recognized as an escape character.\n"
-"\n"
 , stdout);
  fputs(
+"              not recognized as an escape character.\n"
+"\n"
 "              (iOS  and macOS only) If curl is built against Secure Transport,\n"
 "              then the certificate string can either be the name of a certifi-\n"
 "              cate/private  key in the system or user keychain, or the path to\n"
 "              a PKCS#12-encoded certificate and private key. If  you  want  to\n"
 "              use  a  file  from the current directory, please precede it with\n"
+, stdout);
+ fputs(
 "              \"./\" prefix, in order to avoid confusion with a nickname.\n"
 "\n"
+"              (Schannel/WinSSL only) Client certificates must be specified  by\n"
+"              a  path  expression  to a certificate store. (Loading PFX is not\n"
+"              supported; you can import it to a  store  first).  You  can  use\n"
+"              \"<store  location>\\<store name>\\<thumbprint>\" to refer to a cer-\n"
+"              tificate in the system certificates store, for example, \"Curren-\n"
+, stdout);
+ fputs(
+"              tUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a\".   Thumbprint\n"
+"              is usually a SHA-1 hex string which you can see  in  certificate\n"
+"              details.  Following  store locations are supported: CurrentUser,\n"
+"              LocalMachine, CurrentService, Services,  CurrentUserGroupPolicy,\n"
+"              LocalMachineGroupPolicy, LocalMachineEnterprise.\n"
+"\n"
+"              If this option is used several times, the last one will be used.\n"
+"\n"
 , stdout);
  fputs(
-"              If this option is used several times, the last one will be used.\n"
-"\n"
 "              See also --cert-type and --key and --key-type.\n"
 "\n"
 "       --ciphers <list of ciphers>\n"
 "              (TLS) Specifies which ciphers to use in the connection. The list\n"
-"              of  ciphers  must  specify  valid ciphers. Read up on SSL cipher\n"
+"              of ciphers must specify valid ciphers. Read  up  on  SSL  cipher\n"
 "              list details on this URL:\n"
 "\n"
 "               https://curl.haxx.se/docs/ssl-ciphers.html\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --compressed-ssh\n"
+, stdout);
+ fputs(
 "              (SCP SFTP) Enables built-in SSH compression.  This is a request,\n"
 "              not an order; the server may or may not do it.\n"
 "\n"
@@ -353,76 +378,76 @@
 "\n"
 "       --compressed\n"
 "              (HTTP) Request a compressed response using one of the algorithms\n"
-"              curl supports, and save  the  uncompressed  document.   If  this\n"
-, stdout);
- fputs(
-"              option  is  used  and  the server sends an unsupported encoding,\n"
+"              curl  supports,  and  save  the  uncompressed document.  If this\n"
+"              option is used and the server  sends  an  unsupported  encoding,\n"
 "              curl will report an error.\n"
 "\n"
 "       -K, --config <file>\n"
 "\n"
-"              Specify a text file to read curl  arguments  from.  The  command\n"
-"              line  arguments  found  in the text file will be used as if they\n"
+, stdout);
+ fputs(
+"              Specify  a  text  file  to read curl arguments from. The command\n"
+"              line arguments found in the text file will be used  as  if  they\n"
 "              were provided on the command line.\n"
 "\n"
-"              Options and their parameters must be specified on the same  line\n"
+"              Options  and their parameters must be specified on the same line\n"
+"              in the file, separated by whitespace, colon, or the equals sign.\n"
+"              Long  option  names  can  optionally be given in the config file\n"
 , stdout);
  fputs(
-"              in the file, separated by whitespace, colon, or the equals sign.\n"
-"              Long option names can optionally be given  in  the  config  file\n"
 "              without the initial double dashes and if so, the colon or equals\n"
 "              characters can be used as separators. If the option is specified\n"
-"              with  one or two dashes, there can be no colon or equals charac-\n"
+"              with one or two dashes, there can be no colon or equals  charac-\n"
 "              ter between the option and its parameter.\n"
 "\n"
+"              If the parameter is to contain whitespace, the parameter must be\n"
+"              enclosed within quotes.  Within  double  quotes,  the  following\n"
 , stdout);
  fputs(
-"              If the parameter is to contain whitespace, the parameter must be\n"
-"              enclosed  within  quotes.  Within  double  quotes, the following\n"
-"              escape sequences are available: \\\\, \\\", \\t, \\n,  \\r  and  \\v.  A\n"
-"              backslash  preceding  any  other letter is ignored. If the first\n"
+"              escape  sequences  are  available:  \\\\, \\\", \\t, \\n, \\r and \\v. A\n"
+"              backslash preceding any other letter is ignored.  If  the  first\n"
 "              column of a config line is a '#' character, the rest of the line\n"
 "              will be treated as a comment. Only write one option per physical\n"
-, stdout);
- fputs(
 "              line in the config file.\n"
 "\n"
-"              Specify the filename to -K, --config as '-' to  make  curl  read\n"
+"              Specify  the  filename  to -K, --config as '-' to make curl read\n"
 "              the file from stdin.\n"
 "\n"
-"              Note  that  to  be able to specify a URL in the config file, you\n"
-"              need to specify it using the --url option,  and  not  by  simply\n"
-"              writing  the  URL  on its own line. So, it could look similar to\n"
+, stdout);
+ fputs(
+"              Note that to be able to specify a URL in the  config  file,  you\n"
+"              need  to  specify  it  using the --url option, and not by simply\n"
+"              writing the URL on its own line. So, it could  look  similar  to\n"
 "              this:\n"
 "\n"
 "              url = \"https://curl.haxx.se/docs/\"\n"
 "\n"
+"              When  curl  is invoked, it (unless -q, --disable is used) checks\n"
+"              for a default config file and uses it if found. The default con-\n"
 , stdout);
  fputs(
-"              When curl is invoked, it (unless -q, --disable is  used)  checks\n"
-"              for a default config file and uses it if found. The default con-\n"
 "              fig file is checked for in the following places in this order:\n"
 "\n"
-"              1) curl tries to find the \"home dir\": It first  checks  for  the\n"
+"              1)  curl  tries  to find the \"home dir\": It first checks for the\n"
 "              CURL_HOME and then the HOME environment variables. Failing that,\n"
-"              it uses getpwuid() on Unix-like systems (which returns the  home\n"
+"              it  uses getpwuid() on Unix-like systems (which returns the home\n"
+"              dir given the current user in your system). On Windows, it  then\n"
+"              checks for the APPDATA variable, or as a last resort the '%USER-\n"
 , stdout);
  fputs(
-"              dir  given the current user in your system). On Windows, it then\n"
-"              checks for the APPDATA variable, or as a last resort the '%USER-\n"
 "              PROFILE%\\Application Data'.\n"
 "\n"
-"              2)  On  windows, if there is no _curlrc file in the home dir, it\n"
+"              2) On windows, if there is no _curlrc file in the home  dir,  it\n"
 "              checks for one in the same dir the curl executable is placed. On\n"
-"              Unix-like  systems,  it will simply try to load .curlrc from the\n"
+"              Unix-like systems, it will simply try to load .curlrc  from  the\n"
 "              determined home dir.\n"
 "\n"
-, stdout);
- fputs(
 "              # --- Example file ---\n"
 "              # this is a comment\n"
 "              url = \"example.com\"\n"
 "              output = \"curlhere.html\"\n"
+, stdout);
+ fputs(
 "              user-agent = \"superagent/1.0\"\n"
 "\n"
 "              # and fetch another URL too\n"
@@ -431,146 +456,147 @@
 "              referer = \"http://nowhereatall.example.com/\"\n"
 "              # --- End of example file ---\n"
 "\n"
-"              This option can be used multiple times to load  multiple  config\n"
-, stdout);
- fputs(
+"              This  option  can be used multiple times to load multiple config\n"
 "              files.\n"
 "\n"
 "       --connect-timeout <seconds>\n"
-"              Maximum  time  in  seconds  that  you allow curl's connection to\n"
-"              take.  This only limits the connection phase, so  if  curl  con-\n"
-"              nects  within the given period it will continue - if not it will\n"
+"              Maximum time in seconds that  you  allow  curl's  connection  to\n"
+, stdout);
+ fputs(
+"              take.   This  only  limits the connection phase, so if curl con-\n"
+"              nects within the given period it will continue - if not it  will\n"
 "              exit.  Since version 7.32.0, this option accepts decimal values.\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              See also -m, --max-time.\n"
 "\n"
-, stdout);
- fputs(
 "       --connect-to <HOST1:PORT1:HOST2:PORT2>\n"
 "\n"
 "              For  a  request  to  the  given  HOST1:PORT1  pair,  connect  to\n"
-"              HOST2:PORT2 instead.  This option is suitable to direct requests\n"
-"              at a specific server, e.g. at a specific cluster node in a clus-\n"
-"              ter  of  servers. This option is only used to establish the net-\n"
-"              work connection. It does NOT affect the  hostname/port  that  is\n"
 , stdout);
  fputs(
+"              HOST2:PORT2 instead.  This option is suitable to direct requests\n"
+"              at a specific server, e.g. at a specific cluster node in a clus-\n"
+"              ter of servers. This option is only used to establish  the  net-\n"
+"              work  connection.  It  does NOT affect the hostname/port that is\n"
 "              used for TLS/SSL (e.g. SNI, certificate verification) or for the\n"
-"              application protocols. \"HOST1\" and  \"PORT1\"  may  be  the  empty\n"
+"              application  protocols.  \"HOST1\"  and  \"PORT1\"  may be the empty\n"
+, stdout);
+ fputs(
 "              string, meaning \"any host/port\". \"HOST2\" and \"PORT2\" may also be\n"
-"              the  empty  string,  meaning   \"use   the   request's   original\n"
+"              the   empty   string,   meaning   \"use  the  request's  original\n"
 "              host/port\".\n"
 "\n"
 "              A \"host\" specified to this option is compared as a string, so it\n"
-, stdout);
- fputs(
-"              needs to match the name used in request URL. It  can  be  either\n"
-"              numerical  such  as  \"127.0.0.1\"  or  the full host name such as\n"
+"              needs  to  match  the name used in request URL. It can be either\n"
+"              numerical such as \"127.0.0.1\" or the  full  host  name  such  as\n"
 "              \"example.org\".\n"
 "\n"
+, stdout);
+ fputs(
 "              This option can be used many times to add many connect rules.\n"
 "\n"
 "              See also --resolve and -H, --header. Added in 7.49.0.\n"
 "\n"
 "       -C, --continue-at <offset>\n"
-"              Continue/Resume a previous file transfer at  the  given  offset.\n"
+"              Continue/Resume  a  previous  file transfer at the given offset.\n"
+"              The given offset is the exact  number  of  bytes  that  will  be\n"
+"              skipped,  counting  from the beginning of the source file before\n"
+"              it is transferred to the destination.  If used with uploads, the\n"
 , stdout);
  fputs(
-"              The  given  offset  is  the  exact  number of bytes that will be\n"
-"              skipped, counting from the beginning of the source  file  before\n"
-"              it is transferred to the destination.  If used with uploads, the\n"
 "              FTP server command SIZE will not be used by curl.\n"
 "\n"
-"              Use \"-C -\" to tell curl to automatically find out  where/how  to\n"
-"              resume  the  transfer. It then uses the given output/input files\n"
+"              Use  \"-C  -\" to tell curl to automatically find out where/how to\n"
+"              resume the transfer. It then uses the given  output/input  files\n"
 "              to figure that out.\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              See also -r, --range.\n"
 "\n"
 "       -c, --cookie-jar <filename>\n"
-"              (HTTP) Specify to which file you want curl to write all  cookies\n"
-"              after  a  completed  operation. Curl writes all cookies from its\n"
-"              in-memory cookie storage to the given file at the end of  opera-\n"
-"              tions.  If  no  cookies  are known, no data will be written. The\n"
+"              (HTTP)  Specify to which file you want curl to write all cookies\n"
 , stdout);
  fputs(
-"              file will be written using the Netscape cookie file  format.  If\n"
+"              after a completed operation. Curl writes all  cookies  from  its\n"
+"              in-memory  cookie storage to the given file at the end of opera-\n"
+"              tions. If no cookies are known, no data  will  be  written.  The\n"
+"              file  will  be written using the Netscape cookie file format. If\n"
 "              you set the file name to a single dash, \"-\", the cookies will be\n"
 "              written to stdout.\n"
 "\n"
-"              This command line option will activate the  cookie  engine  that\n"
+, stdout);
+ fputs(
+"              This  command  line  option will activate the cookie engine that\n"
 "              makes curl record and use cookies. Another way to activate it is\n"
 "              to use the -b, --cookie option.\n"
 "\n"
 "              If the cookie jar can't be created or written to, the whole curl\n"
+"              operation won't fail or even report an error clearly. Using  -v,\n"
+"              --verbose  will  get  a  warning displayed, but that is the only\n"
 , stdout);
  fputs(
-"              operation  won't fail or even report an error clearly. Using -v,\n"
-"              --verbose will get a warning displayed, but  that  is  the  only\n"
 "              visible feedback you get about this possibly lethal situation.\n"
 "\n"
-"              If  this  option  is used several times, the last specified file\n"
+"              If this option is used several times, the  last  specified  file\n"
 "              name will be used.\n"
 "\n"
 "       -b, --cookie <data>\n"
 "              (HTTP) Pass the data to the HTTP server in the Cookie header. It\n"
-, stdout);
- fputs(
-"              is  supposedly the data previously received from the server in a\n"
-"              \"Set-Cookie:\"  line.   The  data  should  be   in   the   format\n"
+"              is supposedly the data previously received from the server in  a\n"
+"              \"Set-Cookie:\"   line.    The   data  should  be  in  the  format\n"
 "              \"NAME1=VALUE1; NAME2=VALUE2\".\n"
 "\n"
-"              If  no '=' symbol is used in the argument, it is instead treated\n"
-"              as a filename to read previously stored cookie from. This option\n"
-"              also  activates  the  cookie  engine which will make curl record\n"
 , stdout);
  fputs(
-"              incoming cookies, which may be handy if  you're  using  this  in\n"
-"              combination  with  the  -L, --location option or do multiple URL\n"
-"              transfers on the same invoke.\n"
+"              If no '=' symbol is used in the argument, it is instead  treated\n"
+"              as a filename to read previously stored cookie from. This option\n"
+"              also activates the cookie engine which  will  make  curl  record\n"
+"              incoming  cookies,  which  may  be handy if you're using this in\n"
+"              combination with the -L, --location option or  do  multiple  URL\n"
+"              transfers  on  the  same  invoke.  If the file name is exactly a\n"
+, stdout);
+ fputs(
+"              minus (\"-\"), curl will instead the contents from stdin.\n"
 "\n"
 "              The file format of the file to read cookies from should be plain\n"
 "              HTTP  headers  (Set-Cookie style) or the Netscape/Mozilla cookie\n"
 "              file format.\n"
 "\n"
 "              The file specified with -b, --cookie is only used as  input.  No\n"
-, stdout);
- fputs(
 "              cookies  will  be written to the file. To store cookies, use the\n"
 "              -c, --cookie-jar option.\n"
 "\n"
+, stdout);
+ fputs(
 "              Exercise caution if you  are  using  this  option  and  multiple\n"
 "              transfers may occur.  If you use the NAME1=VALUE1; format, or in\n"
 "              a file use the Set-Cookie format and  don't  specify  a  domain,\n"
 "              then the cookie is sent for any domain (even after redirects are\n"
-, stdout);
- fputs(
 "              followed) and cannot be modified by a server-set cookie. If  the\n"
 "              cookie  engine is enabled and a server sets a cookie of the same\n"
+, stdout);
+ fputs(
 "              name then both will be sent on a future transfer to that server,\n"
 "              likely  not  what  you  intended.  To address these issues set a\n"
 "              domain in Set-Cookie (doing that will include  sub  domains)  or\n"
 "              use the Netscape format.\n"
 "\n"
-, stdout);
- fputs(
 "              If this option is used several times, the last one will be used.\n"
 "              Users very often want to both read cookies from a file and write\n"
+, stdout);
+ fputs(
 "              updated cookies back to a file, so using both -b,  --cookie  and\n"
 "              -c, --cookie-jar in the same command line is common.\n"
 "\n"
 "       --create-dirs\n"
 "              When used in conjunction with the -o, --output option, curl will\n"
 "              create the necessary local directory hierarchy as  needed.  This\n"
-, stdout);
- fputs(
 "              option  creates the dirs mentioned with the -o, --output option,\n"
 "              nothing else. If the --output file name uses no dir  or  if  the\n"
+, stdout);
+ fputs(
 "              dirs it mentions already exist, no dir will be created.\n"
 "\n"
 "              To  create remote directories when using FTP or SFTP, try --ftp-\n"
@@ -581,10 +607,10 @@
 "\n"
 "              (SMTP added in 7.40.0)\n"
 "\n"
-, stdout);
- fputs(
 "       --crlfile <file>\n"
 "              (TLS) Provide a file using PEM format with a Certificate Revoca-\n"
+, stdout);
+ fputs(
 "              tion List that may specify peer certificates that are to be con-\n"
 "              sidered revoked.\n"
 "\n"
@@ -596,22 +622,22 @@
 "              (HTTP) This is just an alias for -d, --data.\n"
 "\n"
 "       --data-binary <data>\n"
-, stdout);
- fputs(
 "              (HTTP)  This  posts data exactly as specified with no extra pro-\n"
 "              cessing whatsoever.\n"
 "\n"
+, stdout);
+ fputs(
 "              If you start the data with the letter @, the rest  should  be  a\n"
 "              filename.   Data  is  posted  in  a similar manner as -d, --data\n"
 "              does, except that newlines and carriage  returns  are  preserved\n"
 "              and conversions are never done.\n"
 "\n"
 "              If  this  option  is  used several times, the ones following the\n"
-, stdout);
- fputs(
 "              first will append data as described in -d, --data.\n"
 "\n"
 "       --data-raw <data>\n"
+, stdout);
+ fputs(
 "              (HTTP) This posts data similarly to -d, --data but  without  the\n"
 "              special interpretation of the @ character.\n"
 "\n"
@@ -621,9 +647,9 @@
 "              (HTTP)  This posts data, similar to the other -d, --data options\n"
 "              with the exception that this performs URL-encoding.\n"
 "\n"
+"              To be CGI-compliant, the <data> part should begin  with  a  name\n"
 , stdout);
  fputs(
-"              To be CGI-compliant, the <data> part should begin  with  a  name\n"
 "              followed  by a separator and a content specification. The <data>\n"
 "              part can be passed to curl using one of the following syntaxes:\n"
 "\n"
@@ -631,11 +657,11 @@
 "                     This will make curl URL-encode the content and pass  that\n"
 "                     on.  Just  be careful so that the content doesn't contain\n"
 "                     any = or @ symbols, as that will  then  make  the  syntax\n"
-, stdout);
- fputs(
 "                     match one of the other cases below!\n"
 "\n"
 "              =content\n"
+, stdout);
+ fputs(
 "                     This  will make curl URL-encode the content and pass that\n"
 "                     on. The preceding = symbol is not included in the data.\n"
 "\n"
@@ -645,9 +671,9 @@
 "                     encoded already.\n"
 "\n"
 "              @filename\n"
+"                     This will  make  curl  load  data  from  the  given  file\n"
 , stdout);
  fputs(
-"                     This will  make  curl  load  data  from  the  given  file\n"
 "                     (including  any  newlines), URL-encode that data and pass\n"
 "                     it on in the POST.\n"
 "\n"
@@ -655,9 +681,9 @@
 "                     This will  make  curl  load  data  from  the  given  file\n"
 "                     (including  any  newlines), URL-encode that data and pass\n"
 "                     it on in the POST. The  name  part  gets  an  equal  sign\n"
+"                     appended, resulting in name=urlencoded-file-content. Note\n"
 , stdout);
  fputs(
-"                     appended, resulting in name=urlencoded-file-content. Note\n"
 "                     that the name is expected to be URL-encoded already.\n"
 "       See also -d, --data and --data-raw. Added in 7.18.0.\n"
 "\n"
@@ -665,9 +691,9 @@
 "              (HTTP) Sends the specified data in a POST request  to  the  HTTP\n"
 "              server,  in  the  same  way  that a browser does when a user has\n"
 "              filled in an HTML form and presses the submit button. This  will\n"
+"              cause curl to pass the data to the server using the content-type\n"
 , stdout);
  fputs(
-"              cause curl to pass the data to the server using the content-type\n"
 "              application/x-www-form-urlencoded.  Compare to -F, --form.\n"
 "\n"
 "              --data-raw is almost the same but does not have a special inter-\n"
@@ -675,18 +701,18 @@
 "              should instead use the --data-binary option.  To URL-encode  the\n"
 "              value of a form field you may use --data-urlencode.\n"
 "\n"
+"              If  any of these options is used more than once on the same com-\n"
 , stdout);
  fputs(
-"              If  any of these options is used more than once on the same com-\n"
 "              mand line, the data pieces specified  will  be  merged  together\n"
 "              with  a  separating  &-symbol.  Thus,  using  '-d name=daniel -d\n"
 "              skill=lousy'  would  generate  a  post  chunk  that  looks  like\n"
 "              'name=daniel&skill=lousy'.\n"
 "\n"
 "              If  you  start  the data with the letter @, the rest should be a\n"
+"              file name to read the data from, or - if you want curl  to  read\n"
 , stdout);
  fputs(
-"              file name to read the data from, or - if you want curl  to  read\n"
 "              the data from stdin. Multiple files can also be specified. Post-\n"
 "              ing data from a file named  from  a  file  like  that,  carriage\n"
 "              returns and newlines will be stripped out. If you don't want the\n"
@@ -694,10 +720,10 @@
 "              instead.\n"
 "\n"
 "              See also --data-binary and --data-urlencode and --data-raw. This\n"
-, stdout);
- fputs(
 "              option overrides -F, --form and -I, --head and --upload.\n"
 "\n"
+, stdout);
+ fputs(
 "       --delegation <LEVEL>\n"
 "              (GSS/kerberos) Set LEVEL to tell the server what it  is  allowed\n"
 "              to delegate when it comes to user credentials.\n"
@@ -708,11 +734,11 @@
 "                     in the Kerberos service ticket,  which  is  a  matter  of\n"
 "                     realm policy.\n"
 "\n"
-, stdout);
- fputs(
 "              always Unconditionally allow the server to delegate.\n"
 "\n"
 "       --digest\n"
+, stdout);
+ fputs(
 "              (HTTP)  Enables HTTP Digest authentication. This is an authenti-\n"
 "              cation scheme that prevents the password from  being  sent  over\n"
 "              the  wire in clear text. Use this in combination with the normal\n"
@@ -721,9 +747,9 @@
 "              If this option is used several times,  only  the  first  one  is\n"
 "              used.\n"
 "\n"
+"              See  also  -u,  --user  and  --proxy-digest  and --anyauth. This\n"
 , stdout);
  fputs(
-"              See  also  -u,  --user  and  --proxy-digest  and --anyauth. This\n"
 "              option overrides --basic and --ntlm and --negotiate.\n"
 "\n"
 "       --disable-eprt\n"
@@ -731,9 +757,9 @@
 "              when doing active FTP transfers. Curl will normally always first\n"
 "              attempt to use EPRT, then LPRT before using PORT, but with  this\n"
 "              option,  it  will  use PORT right away. EPRT and LPRT are exten-\n"
+"              sions to the original FTP protocol, and  may  not  work  on  all\n"
 , stdout);
  fputs(
-"              sions to the original FTP protocol, and  may  not  work  on  all\n"
 "              servers, but they enable more functionality in a better way than\n"
 "              the traditional PORT command.\n"
 "\n"
@@ -743,9 +769,9 @@
 "              If  the  server is accessed using IPv6, this option will have no\n"
 "              effect as EPRT is necessary then.\n"
 "\n"
+"              Disabling EPRT only changes the active behavior. If you want  to\n"
 , stdout);
  fputs(
-"              Disabling EPRT only changes the active behavior. If you want  to\n"
 "              switch  to  passive  mode  you need to not use -P, --ftp-port or\n"
 "              force it with --ftp-pasv.\n"
 "\n"
@@ -755,9 +781,9 @@
 "              first attempt to use EPSV before PASV, but with this option,  it\n"
 "              will not try using EPSV.\n"
 "\n"
+"              --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
 , stdout);
  fputs(
-"              --epsv can be used to explicitly enable EPSV again and --no-epsv\n"
 "              is an alias for --disable-epsv.\n"
 "\n"
 "              If the server is an IPv6 host, this option will have  no  effect\n"
@@ -768,9 +794,9 @@
 "\n"
 "       -q, --disable\n"
 "              If used as the first parameter on the command line,  the  curlrc\n"
+"              config  file will not be read and used. See the -K, --config for\n"
 , stdout);
  fputs(
-"              config  file will not be read and used. See the -K, --config for\n"
 "              details on the default config file search path.\n"
 "\n"
 "       --dns-interface <interface>\n"
@@ -779,9 +805,9 @@
 "              not affect DNS). The supplied string must be an  interface  name\n"
 "              (not an address).\n"
 "\n"
+"              See  also  --dns-ipv4-addr  and --dns-ipv6-addr. --dns-interface\n"
 , stdout);
  fputs(
-"              See  also  --dns-ipv4-addr  and --dns-ipv6-addr. --dns-interface\n"
 "              requires that the underlying libcurl was  built  to  support  c-\n"
 "              ares. Added in 7.33.0.\n"
 "\n"
@@ -790,9 +816,9 @@
 "              requests, so that the DNS requests originate from this  address.\n"
 "              The argument should be a single IPv4 address.\n"
 "\n"
+"              See  also  --dns-interface  and --dns-ipv6-addr. --dns-ipv4-addr\n"
 , stdout);
  fputs(
-"              See  also  --dns-interface  and --dns-ipv6-addr. --dns-ipv4-addr\n"
 "              requires that the underlying libcurl was  built  to  support  c-\n"
 "              ares. Added in 7.33.0.\n"
 "\n"
@@ -801,9 +827,9 @@
 "              requests, so that the DNS requests originate from this  address.\n"
 "              The argument should be a single IPv6 address.\n"
 "\n"
+"              See  also  --dns-interface  and --dns-ipv4-addr. --dns-ipv6-addr\n"
 , stdout);
  fputs(
-"              See  also  --dns-interface  and --dns-ipv4-addr. --dns-ipv6-addr\n"
 "              requires that the underlying libcurl was  built  to  support  c-\n"
 "              ares. Added in 7.33.0.\n"
 "\n"
@@ -811,10 +837,10 @@
 "              Set  the  list  of  DNS servers to be used instead of the system\n"
 "              default.  The list of IP addresses should be separated with com-\n"
 "              mas. Port numbers may also optionally be given as :<port-number>\n"
-, stdout);
- fputs(
 "              after each IP address.\n"
 "\n"
+, stdout);
+ fputs(
 "              --dns-servers requires that the underlying libcurl was built  to\n"
 "              support c-ares. Added in 7.33.0.\n"
 "\n"
@@ -824,9 +850,9 @@
 "\n"
 "              This option is handy to use when you want to store  the  headers\n"
 "              that  an  HTTP site sends to you. Cookies from the headers could\n"
+"              then be read in a  second  curl  invocation  by  using  the  -b,\n"
 , stdout);
  fputs(
-"              then be read in a  second  curl  invocation  by  using  the  -b,\n"
 "              --cookie  option! The -c, --cookie-jar option is a better way to\n"
 "              store cookies.\n"
 "\n"
@@ -838,9 +864,9 @@
 "              See also -o, --output.\n"
 "\n"
 "       --egd-file <file>\n"
+"              (TLS)  Specify  the  path  name  to the Entropy Gathering Daemon\n"
 , stdout);
  fputs(
-"              (TLS)  Specify  the  path  name  to the Entropy Gathering Daemon\n"
 "              socket. The socket is used to seed the  random  engine  for  SSL\n"
 "              connections.\n"
 "\n"
@@ -850,44 +876,44 @@
 "              (TLS)  Select the OpenSSL crypto engine to use for cipher opera-\n"
 "              tions. Use --engine list to print a list of build-time supported\n"
 "              engines.  Note  that  not  all  (or  none) of the engines may be\n"
-, stdout);
- fputs(
 "              available at run-time.\n"
 "\n"
 "       --expect100-timeout <seconds>\n"
+, stdout);
+ fputs(
 "              (HTTP) Maximum time in seconds that you allow curl to wait for a\n"
 "              100-continue  response  when curl emits an Expects: 100-continue\n"
 "              header in its request. By default curl  will  wait  one  second.\n"
 "              This  option accepts decimal values! When curl stops waiting, it\n"
 "              will continue as if the response has been received.\n"
 "\n"
-, stdout);
- fputs(
 "              See also --connect-timeout. Added in 7.47.0.\n"
 "\n"
 "       --fail-early\n"
+, stdout);
+ fputs(
 "              Fail and exit on the first detected transfer error.\n"
 "\n"
 "              When curl is used to do multiple transfers on the command  line,\n"
 "              it  will  attempt  to  operate on each given URL, one by one. By\n"
 "              default, it will ignore errors if there are more URLs given  and\n"
 "              the  last  URL's  success  will  determine  the  error code curl\n"
-, stdout);
- fputs(
 "              returns. So early failures will be \"hidden\" by  subsequent  suc-\n"
 "              cessful transfers.\n"
 "\n"
+, stdout);
+ fputs(
 "              Using  this  option,  curl  will  instead return an error on the\n"
 "              first transfer that fails, independent of  the  amount  of  URLs\n"
 "              that  are given on the command line. This way, no transfer fail-\n"
 "              ures go undetected by scripts and similar.\n"
 "\n"
 "              This option is global and does not need to be specified for each\n"
-, stdout);
- fputs(
 "              use of -:, --next.\n"
 "\n"
 "              This option does not imply -f, --fail, which causes transfers to\n"
+, stdout);
+ fputs(
 "              fail due to the server's HTTP status code. You can  combine  the\n"
 "              two options, however note -f, --fail is not global and is there-\n"
 "              fore contained by -:, --next.\n"
@@ -896,145 +922,156 @@
 "\n"
 "       -f, --fail\n"
 "              (HTTP) Fail silently (no output at all) on server  errors.  This\n"
-, stdout);
- fputs(
 "              is  mostly done to better enable scripts etc to better deal with\n"
 "              failed attempts. In normal cases when an HTTP  server  fails  to\n"
+, stdout);
+ fputs(
 "              deliver  a  document,  it  returns  an  HTML document stating so\n"
 "              (which often also describes why and more). This flag  will  pre-\n"
 "              vent curl from outputting that and return error 22.\n"
 "\n"
 "              This  method is not fail-safe and there are occasions where non-\n"
-, stdout);
- fputs(
 "              successful response codes will  slip  through,  especially  when\n"
 "              authentication is involved (response codes 401 and 407).\n"
 "\n"
 "       --false-start\n"
+, stdout);
+ fputs(
 "              (TLS)  Tells  curl  to use false start during the TLS handshake.\n"
 "              False start is a mode where a  TLS  client  will  start  sending\n"
 "              application data before verifying the server's Finished message,\n"
 "              thus saving a round trip when performing a full handshake.\n"
 "\n"
-, stdout);
- fputs(
 "              This is currently only implemented in the NSS and Secure  Trans-\n"
 "              port (on iOS 7.0 or later, or OS X 10.9 or later) backends.\n"
 "\n"
 "              Added in 7.42.0.\n"
 "\n"
+, stdout);
+ fputs(
 "       --form-string <name=string>\n"
 "              (HTTP  SMTP  IMAP)  Similar  to -F, --form except that the value\n"
 "              string for the named parameter is used  literally.  Leading  '@'\n"
 "              and '<' characters, and the ';type=' string in the value have no\n"
-, stdout);
- fputs(
 "              special meaning. Use this in preference to -F, --form if there's\n"
 "              any  possibility  that the string value may accidentally trigger\n"
 "              the '@' or '<' features of -F, --form.\n"
 "\n"
+, stdout);
+ fputs(
 "              See also -F, --form.\n"
 "\n"
 "       -F, --form <name=content>\n"
 "              (HTTP SMTP IMAP) For HTTP protocol family, this lets  curl  emu-\n"
 "              late  a  filled-in  form  in which a user has pressed the submit\n"
-, stdout);
- fputs(
 "              button. This causes curl to POST  data  using  the  Content-Type\n"
 "              multipart/form-data according to RFC 2388.\n"
 "\n"
 "              For  SMTP and IMAP protocols, this is the mean to compose a mul-\n"
 "              tipart mail message to transmit.\n"
 "\n"
-"              This enables uploading of binary files etc. To force  the  'con-\n"
-"              tent' part to be a file, prefix the file name with an @ sign. To\n"
 , stdout);
  fputs(
+"              This enables uploading of binary files etc. To force  the  'con-\n"
+"              tent' part to be a file, prefix the file name with an @ sign. To\n"
 "              just get the content part from a file, prefix the file name with\n"
 "              the  symbol  <.  The  difference  between @ and < is then that @\n"
 "              makes a file get attached in the post as a  file  upload,  while\n"
 "              the < makes a text field and just get the contents for that text\n"
+, stdout);
+ fputs(
 "              field from a file.\n"
 "\n"
-"              Example: to send an image to an HTTP server, where 'profile'  is\n"
+"              Tell curl to read content from stdin instead of a file by  using\n"
+"              - as filename. This goes for both @ and < constructs. When stdin\n"
+"              is used, the contents is buffered in memory  first  by  curl  to\n"
+"              determine  its  size  and  allow  a possible resend.  Defining a\n"
+"              part's data from a named non-regular file (such as a named  pipe\n"
 , stdout);
  fputs(
-"              the  name  of  the  form-field to which portrait.jpg will be the\n"
-"              input:\n"
+"              or  similar)  is unfortunately not subject to buffering and will\n"
+"              be effectively read at transmission time; since the full size is\n"
+"              unknown  before the transfer starts, such data is sent as chunks\n"
+"              by HTTP and rejected by IMAP.\n"
 "\n"
+"              Example: send an image to an HTTP server, where 'profile' is the\n"
+"              name  of  the  form-field to which the file portrait.jpg will be\n"
+"              the input:\n"
+"\n"
+, stdout);
+ fputs(
 "               curl -F profile=@portrait.jpg https://example.com/upload.cgi\n"
 "\n"
-"              To read content from stdin instead of a file, use - as the file-\n"
-"              name.  This  goes  for  both @ and < constructs. If stdin is not\n"
-"              attached to a regular file, it is buffered  first  to  determine\n"
-"              its  size  and  allow  a possible resend. Defining a part's data\n"
+"              Example: send a your name and shoe size in two  text  fields  to\n"
+"              the server:\n"
+"\n"
+"               curl -F name=John -F shoesize=11 https://example.com/\n"
+"\n"
+"              Example:  send  a your essay in a text field to the server. Send\n"
+"              it as a plain text field, but get the contents  for  it  from  a\n"
+"              local file:\n"
+"\n"
 , stdout);
  fputs(
-"              from a named non-regular file (such as a named pipe or  similar)\n"
-"              is  unfortunately  not  subject  to buffering and will be effec-\n"
-"              tively read at transmission time; since the full size is unknown\n"
-"              before  the  transfer starts, data is sent as chunks by HTTP and\n"
-"              rejected by IMAP.\n"
+"               curl -F \"story=<hugefile.txt\" https://example.com/\n"
 "\n"
-"              You can also  tell  curl  what  Content-Type  to  use  by  using\n"
+"              You  can  also  tell  curl  what  Content-Type  to  use by using\n"
 "              'type=', in a manner similar to:\n"
 "\n"
-, stdout);
- fputs(
 "               curl -F \"web=@index.html;type=text/html\" example.com\n"
 "\n"
 "              or\n"
 "\n"
 "               curl -F \"name=daniel;type=text/foo\" example.com\n"
 "\n"
-"              You  can  also explicitly change the name field of a file upload\n"
+"              You can also explicitly change the name field of a  file  upload\n"
 "              part by setting filename=, like this:\n"
 "\n"
-"               curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
-"\n"
-"              If filename/path contains ',' or ';', it must be quoted by  dou-\n"
-"              ble-quotes like:\n"
-"\n"
 , stdout);
  fputs(
-"               curl   -F  \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"  exam-\n"
+"               curl -F \"file=@localfile;filename=nameinpost\" example.com\n"
+"\n"
+"              If  filename/path contains ',' or ';', it must be quoted by dou-\n"
+"              ble-quotes like:\n"
+"\n"
+"               curl  -F  \"file=@\\\"localfile\\\";filename=\\\"nameinpost\\\"\"   exam-\n"
 "              ple.com\n"
 "\n"
 "              or\n"
 "\n"
 "               curl -F 'file=@\"localfile\";filename=\"nameinpost\"' example.com\n"
 "\n"
-"              Note that if a filename/path is  quoted  by  double-quotes,  any\n"
+"              Note  that  if  a  filename/path is quoted by double-quotes, any\n"
+, stdout);
+ fputs(
 "              double-quote or backslash within the filename must be escaped by\n"
 "              backslash.\n"
 "\n"
-"              Quoting must also be applied to non-file  data  if  it  contains\n"
-, stdout);
- fputs(
+"              Quoting  must  also  be  applied to non-file data if it contains\n"
 "              semicolons, leading/trailing spaces or leading double quotes:\n"
 "\n"
-"               curl  -F  'colors=\"red;  green;  blue\";type=text/x-myapp' exam-\n"
+"               curl -F  'colors=\"red;  green;  blue\";type=text/x-myapp'  exam-\n"
 "              ple.com\n"
 "\n"
-"              You can add custom headers to the  field  by  setting  headers=,\n"
+"              You  can  add  custom  headers to the field by setting headers=,\n"
 "              like\n"
 "\n"
+, stdout);
+ fputs(
 "                curl -F \"submit=OK;headers=\\\"X-submit-type: OK\\\"\" example.com\n"
 "\n"
 "              or\n"
 "\n"
 "                curl -F \"submit=OK;headers=@headerfile\" example.com\n"
 "\n"
-, stdout);
- fputs(
-"              The  headers=  keyword may appear more that once and above notes\n"
-"              about quoting apply. When headers are read from  a  file,  Empty\n"
+"              The headers= keyword may appear more that once and  above  notes\n"
+"              about  quoting  apply.  When headers are read from a file, Empty\n"
 "              lines and lines starting with '#' are comments and ignored; each\n"
 "              header can be folded by splitting between two words and starting\n"
-"              the  continuation  line  with a space; embedded carriage-returns\n"
-"              and trailing spaces are stripped.   Here  is  an  example  of  a\n"
 , stdout);
  fputs(
+"              the continuation line with a  space;  embedded  carriage-returns\n"
+"              and  trailing  spaces  are  stripped.   Here  is an example of a\n"
 "              header file contents:\n"
 "\n"
 "                # This file contain two headers.\n"
@@ -1044,44 +1081,44 @@
 "                X-header-2: this is\n"
 "                 another header\n"
 "\n"
-"              To  support  sending  multipart  mail  messages,  the  syntax is\n"
-"              extended as follows:\n"
-"              - name can be omitted: the equal sign is the first character  of\n"
-"              the argument,\n"
+"              To support  sending  multipart  mail  messages,  the  syntax  is\n"
 , stdout);
  fputs(
-"              -  if  data  starts with '(', this signals to start a new multi-\n"
+"              extended as follows:\n"
+"              -  name can be omitted: the equal sign is the first character of\n"
+"              the argument,\n"
+"              - if data starts with '(', this signals to start  a  new  multi-\n"
 "              part: it can be followed by a content type specification.\n"
 "              - a multipart can be terminated with a '=)' argument.\n"
 "\n"
-"              Example: the following command sends an SMTP  mime  e-mail  con-\n"
+"              Example:  the  following  command sends an SMTP mime e-mail con-\n"
+, stdout);
+ fputs(
 "              sisting in an inline part in two alternative formats: plain text\n"
 "              and HTML. It attaches a text file:\n"
 "\n"
 "               curl -F '=(;type=multipart/alternative' \\\n"
-, stdout);
- fputs(
 "                       -F '=plain text message' \\\n"
 "                       -F '= <body>HTML message</body>;type=text/html' \\\n"
 "                    -F '=)' -F '=@textfile.txt' ...  smtp://example.com\n"
 "\n"
-"              Data can be  encoded  for  transfer  using  encoder=.  Available\n"
-"              encodings  are  binary and 8bit that do nothing else than adding\n"
-"              the corresponding Content-Transfer-Encoding  header,  7bit  that\n"
+"              Data  can  be  encoded  for  transfer  using encoder=. Available\n"
 , stdout);
  fputs(
-"              only  rejects  8-bit  characters  with a transfer error, quoted-\n"
-"              printable and base64 that encodes data according to  the  corre-\n"
+"              encodings are binary and 8bit that do nothing else  than  adding\n"
+"              the  corresponding  Content-Transfer-Encoding  header, 7bit that\n"
+"              only rejects 8-bit characters with  a  transfer  error,  quoted-\n"
+"              printable  and  base64 that encodes data according to the corre-\n"
 "              sponding schemes, limiting lines length to 76 characters.\n"
 "\n"
-"              Example:  send  multipart mail with a quoted-printable text mes-\n"
+"              Example: send multipart mail with a quoted-printable  text  mes-\n"
+, stdout);
+ fputs(
 "              sage and a base64 attached file:\n"
 "\n"
 "               curl -F '=text message;encoder=quoted-printable' \\\n"
 "                    -F '=@localfile;encoder=base64' ... smtp://example.com\n"
 "\n"
-, stdout);
- fputs(
 "              See further examples and details in the MANUAL.\n"
 "\n"
 "              This option can be used multiple times.\n"
@@ -1090,71 +1127,71 @@
 "\n"
 "       --ftp-account <data>\n"
 "              (FTP) When an FTP server asks for \"account data\" after user name\n"
-"              and  password has been provided, this data is sent off using the\n"
+, stdout);
+ fputs(
+"              and password has been provided, this data is sent off using  the\n"
 "              ACCT command.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-, stdout);
- fputs(
 "              Added in 7.13.0.\n"
 "\n"
 "       --ftp-alternative-to-user <command>\n"
-"              (FTP) If authenticating with the USER and PASS  commands  fails,\n"
-"              send  this  command.   When  connecting  to  Tumbleweed's Secure\n"
-"              Transport server over FTPS using  a  client  certificate,  using\n"
-"              \"SITE  AUTH\"  will tell the server to retrieve the username from\n"
+"              (FTP)  If  authenticating with the USER and PASS commands fails,\n"
+"              send this  command.   When  connecting  to  Tumbleweed's  Secure\n"
+"              Transport  server  over  FTPS  using a client certificate, using\n"
+, stdout);
+ fputs(
+"              \"SITE AUTH\" will tell the server to retrieve the  username  from\n"
 "              the certificate.\n"
 "              Added in 7.15.5.\n"
 "\n"
 "       --ftp-create-dirs\n"
-, stdout);
- fputs(
-"              (FTP SFTP) When an FTP or SFTP URL/operation uses  a  path  that\n"
-"              doesn't  currently exist on the server, the standard behavior of\n"
+"              (FTP  SFTP)  When  an FTP or SFTP URL/operation uses a path that\n"
+"              doesn't currently exist on the server, the standard behavior  of\n"
 "              curl is to fail. Using this option, curl will instead attempt to\n"
 "              create missing directories.\n"
 "\n"
 "              See also --create-dirs.\n"
 "\n"
-"       --ftp-method <method>\n"
-"              (FTP)  Control what method curl should use to reach a file on an\n"
 , stdout);
  fputs(
-"              FTP(S) server. The method argument should be one of the  follow-\n"
+"       --ftp-method <method>\n"
+"              (FTP) Control what method curl should use to reach a file on  an\n"
+"              FTP(S)  server. The method argument should be one of the follow-\n"
 "              ing alternatives:\n"
 "\n"
 "              multicwd\n"
-"                     curl  does  a  single CWD operation for each path part in\n"
-"                     the given URL. For deep hierarchies this means very  many\n"
-"                     commands.  This  is  how RFC 1738 says it should be done.\n"
-"                     This is the default but the slowest behavior.\n"
-"\n"
+"                     curl does a single CWD operation for each  path  part  in\n"
+"                     the  given URL. For deep hierarchies this means very many\n"
+"                     commands. This is how RFC 1738 says it  should  be  done.\n"
 , stdout);
  fputs(
-"              nocwd  curl does no CWD at all. curl will do  SIZE,  RETR,  STOR\n"
+"                     This is the default but the slowest behavior.\n"
+"\n"
+"              nocwd  curl  does  no  CWD at all. curl will do SIZE, RETR, STOR\n"
 "                     etc and give a full path to the server for all these com-\n"
 "                     mands. This is the fastest behavior.\n"
 "\n"
 "              singlecwd\n"
 "                     curl does one CWD with the full target directory and then\n"
-"                     operates  on  the  file  \"normally\" (like in the multicwd\n"
-"                     case). This is somewhat  more  standards  compliant  than\n"
+"                     operates on the file \"normally\"  (like  in  the  multicwd\n"
 , stdout);
  fputs(
+"                     case).  This  is  somewhat  more standards compliant than\n"
 "                     'nocwd' but without the full penalty of 'multicwd'.\n"
 "\n"
 "       Added in 7.15.1.\n"
 "\n"
 "       --ftp-pasv\n"
-"              (FTP)  Use  passive mode for the data connection. Passive is the\n"
-"              internal default behavior, but using this option can be used  to\n"
+"              (FTP) Use passive mode for the data connection. Passive  is  the\n"
+"              internal  default behavior, but using this option can be used to\n"
 "              override a previous -P, --ftp-port option.\n"
 "\n"
-"              If  this  option  is  used  several times, only the first one is\n"
-"              used. Undoing an enforced passive really isn't  doable  but  you\n"
+"              If this option is used several times,  only  the  first  one  is\n"
 , stdout);
  fputs(
+"              used.  Undoing  an  enforced passive really isn't doable but you\n"
 "              must then instead enforce the correct -P, --ftp-port again.\n"
 "\n"
 "              Passive mode means that curl will try the EPSV command first and\n"
@@ -1162,41 +1199,41 @@
 "              See also --disable-epsv. Added in 7.11.0.\n"
 "\n"
 "       -P, --ftp-port <address>\n"
-"              (FTP) Reverses the default initiator/listener  roles  when  con-\n"
-"              necting  with  FTP. This option makes curl use active mode. curl\n"
+"              (FTP)  Reverses  the  default initiator/listener roles when con-\n"
 , stdout);
  fputs(
-"              then tells the server to connect back to the client's  specified\n"
+"              necting with FTP. This option makes curl use active  mode.  curl\n"
+"              then  tells the server to connect back to the client's specified\n"
 "              address and port, while passive mode asks the server to setup an\n"
-"              IP address and port for it to connect to.  <address>  should  be\n"
+"              IP  address  and  port for it to connect to. <address> should be\n"
 "              one of:\n"
 "\n"
 "              interface\n"
-"                     i.e  \"eth0\"  to  specify which interface's IP address you\n"
+"                     e.g. \"eth0\" to specify which interface's IP  address  you\n"
 "                     want to use (Unix only)\n"
 "\n"
-"              IP address\n"
 , stdout);
  fputs(
-"                     i.e \"192.168.10.1\" to specify the exact IP address\n"
+"              IP address\n"
+"                     e.g. \"192.168.10.1\" to specify the exact IP address\n"
 "\n"
 "              host name\n"
-"                     i.e \"my.host.domain\" to specify the machine\n"
+"                     e.g. \"my.host.domain\" to specify the machine\n"
 "\n"
-"              -      make curl pick the same IP address that is  already  used\n"
+"              -      make  curl  pick the same IP address that is already used\n"
 "                     for the control connection\n"
 "\n"
-"       If  this  option is used several times, the last one will be used. Dis-\n"
-"       able the use of PORT with --ftp-pasv. Disable the attempt  to  use  the\n"
+"       If this option is used several times, the last one will be  used.  Dis-\n"
+"       able  the  use  of PORT with --ftp-pasv. Disable the attempt to use the\n"
 , stdout);
  fputs(
-"       EPRT  command  instead  of PORT by using --disable-eprt. EPRT is really\n"
+"       EPRT command instead of PORT by using --disable-eprt.  EPRT  is  really\n"
 "       PORT++.\n"
 "\n"
-"       Since 7.19.5, you can append  \":[start]-[end]\"  to  the  right  of  the\n"
-"       address,  to tell curl what TCP port range to use. That means you spec-\n"
-"       ify a port range, from a lower to a  higher  number.  A  single  number\n"
-"       works  as well, but do note that it increases the risk of failure since\n"
+"       Since  7.19.5,  you  can  append  \":[start]-[end]\"  to the right of the\n"
+"       address, to tell curl what TCP port range to use. That means you  spec-\n"
+"       ify  a  port  range,  from  a lower to a higher number. A single number\n"
+"       works as well, but do note that it increases the risk of failure  since\n"
 "       the port may not be available.\n"
 "\n"
 "       See also --ftp-pasv and --disable-eprt.\n"
@@ -1204,28 +1241,28 @@
 , stdout);
  fputs(
 "       --ftp-pret\n"
-"              (FTP) Tell curl to send a PRET command before PASV  (and  EPSV).\n"
-"              Certain  FTP  servers,  mainly drftpd, require this non-standard\n"
-"              command for directory listings as well as up  and  downloads  in\n"
+"              (FTP)  Tell  curl to send a PRET command before PASV (and EPSV).\n"
+"              Certain FTP servers, mainly drftpd,  require  this  non-standard\n"
+"              command  for  directory  listings as well as up and downloads in\n"
 "              PASV mode.\n"
 "\n"
 "              Added in 7.20.0.\n"
 "\n"
 "       --ftp-skip-pasv-ip\n"
 "              (FTP) Tell curl to not use the IP address the server suggests in\n"
-"              its response to curl's PASV command when curl connects the  data\n"
+"              its  response to curl's PASV command when curl connects the data\n"
 , stdout);
  fputs(
-"              connection.  Instead  curl  will  re-use  the same IP address it\n"
+"              connection. Instead curl will re-use  the  same  IP  address  it\n"
 "              already uses for the control connection.\n"
 "\n"
-"              This option has no effect if PORT, EPRT or EPSV is used  instead\n"
+"              This  option has no effect if PORT, EPRT or EPSV is used instead\n"
 "              of PASV.\n"
 "\n"
 "              See also --ftp-pasv. Added in 7.14.2.\n"
 "\n"
 "       --ftp-ssl-ccc-mode <active/passive>\n"
-"              (FTP)  Sets the CCC mode. The passive mode will not initiate the\n"
+"              (FTP) Sets the CCC mode. The passive mode will not initiate  the\n"
 "              shutdown, but instead wait for the server to do it, and will not\n"
 , stdout);
  fputs(
@@ -1235,9 +1272,9 @@
 "              See also --ftp-ssl-ccc. Added in 7.16.2.\n"
 "\n"
 "       --ftp-ssl-ccc\n"
-"              (FTP) Use CCC (Clear Command Channel)  Shuts  down  the  SSL/TLS\n"
+"              (FTP)  Use  CCC  (Clear  Command Channel) Shuts down the SSL/TLS\n"
 "              layer after authenticating. The rest of the control channel com-\n"
-"              munication will be unencrypted. This allows NAT routers to  fol-\n"
+"              munication  will be unencrypted. This allows NAT routers to fol-\n"
 , stdout);
  fputs(
 "              low the FTP transaction. The default mode is passive.\n"
@@ -1245,9 +1282,9 @@
 "              See also --ssl and --ftp-ssl-ccc-mode. Added in 7.16.1.\n"
 "\n"
 "       --ftp-ssl-control\n"
-"              (FTP)  Require  SSL/TLS  for  the FTP login, clear for transfer.\n"
-"              Allows secure authentication, but non-encrypted  data  transfers\n"
-"              for  efficiency.   Fails the transfer if the server doesn't sup-\n"
+"              (FTP) Require SSL/TLS for the FTP  login,  clear  for  transfer.\n"
+"              Allows  secure  authentication, but non-encrypted data transfers\n"
+"              for efficiency.  Fails the transfer if the server  doesn't  sup-\n"
 "              port SSL/TLS.\n"
 "\n"
 "              Added in 7.16.0.\n"
@@ -1255,63 +1292,97 @@
 "       -G, --get\n"
 , stdout);
  fputs(
-"              When used, this option will make all  data  specified  with  -d,\n"
-"              --data,  --data-binary or --data-urlencode to be used in an HTTP\n"
-"              GET request instead of the POST request that otherwise would  be\n"
+"              When  used,  this  option  will make all data specified with -d,\n"
+"              --data, --data-binary or --data-urlencode to be used in an  HTTP\n"
+"              GET  request instead of the POST request that otherwise would be\n"
 "              used. The data will be appended to the URL with a '?' separator.\n"
-"              If  used  in  combination  with  -I,  --head, the POST data will\n"
+"              If used in combination with  -I,  --head,  the  POST  data  will\n"
 "              instead be appended to the URL with a HEAD request.\n"
 "\n"
 , stdout);
  fputs(
-"              If this option is used several times,  only  the  first  one  is\n"
-"              used.  This is because undoing a GET doesn't make sense, but you\n"
+"              If  this  option  is  used  several times, only the first one is\n"
+"              used. This is because undoing a GET doesn't make sense, but  you\n"
 "              should then instead enforce the alternative method you prefer.\n"
 "\n"
 "       -g, --globoff\n"
 "              This option switches off the \"URL globbing parser\". When you set\n"
-"              this  option, you can specify URLs that contain the letters {}[]\n"
-"              without having them being interpreted by curl itself. Note  that\n"
+"              this option, you can specify URLs that contain the letters  {}[]\n"
+"              without  having them being interpreted by curl itself. Note that\n"
 , stdout);
  fputs(
-"              these  letters are not normal legal URL contents but they should\n"
+"              these letters are not normal legal URL contents but they  should\n"
 "              be encoded according to the URI standard.\n"
 "\n"
+"       --happy-eyeballs-timeout-ms <milliseconds>\n"
+"              Happy  eyeballs is an algorithm that attempts to connect to both\n"
+"              IPv4 and IPv6 addresses for dual-stack  hosts,  preferring  IPv6\n"
+"              first for the number of milliseconds. If the IPv6 address cannot\n"
+, stdout);
+ fputs(
+"              be connected to within that time then a  connection  attempt  is\n"
+"              made to the IPv4 address in parallel. The first connection to be\n"
+"              established is the one that is used.\n"
+"\n"
+"              The range of suggested useful values is limited. Happy  Eyeballs\n"
+"              RFC  6555  says  \"It  is RECOMMENDED that connection attempts be\n"
+"              paced 150-250 ms apart to balance human factors against  network\n"
+, stdout);
+ fputs(
+"              load.\"  libcurl currently defaults to 200 ms. Firefox and Chrome\n"
+"              currently default to 300 ms.\n"
+"\n"
+"              If this option is used several times, the last one will be used.\n"
+"\n"
+"              Added in 7.59.0.\n"
+"\n"
+"       --haproxy-protocol\n"
+"              (HTTP) Send a HAProxy PROXY protocol header at the beginning  of\n"
+"              the  connection. This is used by some load balancers and reverse\n"
+"              proxies to indicate the client's true IP address and port.\n"
+"\n"
+, stdout);
+ fputs(
+"              This option is primarily useful when sending test requests to  a\n"
+"              service that expects this header.\n"
+"\n"
+"              Added in 7.60.0.\n"
+"\n"
 "       -I, --head\n"
 "              (HTTP FTP FILE) Fetch the headers only! HTTP-servers feature the\n"
-"              command  HEAD which this uses to get nothing but the header of a\n"
-"              document. When used on an FTP or FILE file,  curl  displays  the\n"
+"              command HEAD which this uses to get nothing but the header of  a\n"
+"              document.  When  used  on an FTP or FILE file, curl displays the\n"
 "              file size and last modification time only.\n"
 "\n"
+, stdout);
+ fputs(
 "       -H, --header <header/@file>\n"
-, stdout);
- fputs(
-"              (HTTP)  Extra header to include in the request when sending HTTP\n"
-"              to a server. You may specify any number of extra  headers.  Note\n"
+"              (HTTP) Extra header to include in the request when sending  HTTP\n"
+"              to  a  server. You may specify any number of extra headers. Note\n"
 "              that if you should add a custom header that has the same name as\n"
-"              one of the internal ones curl would  use,  your  externally  set\n"
+"              one  of  the  internal  ones curl would use, your externally set\n"
 "              header will be used instead of the internal one. This allows you\n"
-"              to make even trickier stuff than curl  would  normally  do.  You\n"
 , stdout);
  fputs(
-"              should  not  replace internally set headers without knowing per-\n"
+"              to  make  even  trickier  stuff than curl would normally do. You\n"
+"              should not replace internally set headers without  knowing  per-\n"
 "              fectly well what you're doing. Remove an internal header by giv-\n"
-"              ing  a  replacement  without  content  on  the right side of the\n"
+"              ing a replacement without content  on  the  right  side  of  the\n"
 "              colon, as in: -H \"Host:\". If you send the custom header with no-\n"
-"              value  then its header must be terminated with a semicolon, such\n"
+"              value then its header must be terminated with a semicolon,  such\n"
+, stdout);
+ fputs(
 "              as -H \"X-Custom-Header;\" to send \"X-Custom-Header:\".\n"
 "\n"
-, stdout);
- fputs(
-"              curl will make sure that each header  you  add/replace  is  sent\n"
+"              curl  will  make  sure  that each header you add/replace is sent\n"
 "              with the proper end-of-line marker, you should thus not add that\n"
 "              as a part of the header content: do not add newlines or carriage\n"
 "              returns, they will only mess things up for you.\n"
 "\n"
-"              Starting  in  7.55.0, this option can take an argument in @file-\n"
-"              name style, which then adds a header for each line in the  input\n"
+"              Starting in 7.55.0, this option can take an argument  in  @file-\n"
 , stdout);
  fputs(
+"              name  style, which then adds a header for each line in the input\n"
 "              file. Using @- will make curl read the header file from stdin.\n"
 "\n"
 "              See also the -A, --user-agent and -e, --referer options.\n"
@@ -1323,25 +1394,25 @@
 "\n"
 "               curl -H \"X-First-Name: Joe\" http://example.com/\n"
 "\n"
-"              WARNING: headers set  with  this  option  will  be  set  in  all\n"
 , stdout);
  fputs(
-"              requests  -  even  after  redirects are followed, like when told\n"
-"              with -L, --location. This can lead to the header being  sent  to\n"
-"              other  hosts than the original host, so sensitive headers should\n"
+"              WARNING:  headers  set  with  this  option  will  be  set in all\n"
+"              requests - even after redirects are  followed,  like  when  told\n"
+"              with  -L,  --location. This can lead to the header being sent to\n"
+"              other hosts than the original host, so sensitive headers  should\n"
 "              be used with caution combined with following redirects.\n"
 "\n"
-"              This option can be used  multiple  times  to  add/replace/remove\n"
+"              This  option  can  be  used multiple times to add/replace/remove\n"
 "              multiple headers.\n"
 "\n"
-"       -h, --help\n"
 , stdout);
  fputs(
-"              Usage  help.  This lists all current command line options with a\n"
+"       -h, --help\n"
+"              Usage help. This lists all current command line options  with  a\n"
 "              short description.\n"
 "       --hostpubmd5 <md5>\n"
-"              (SFTP SCP) Pass a string containing 32 hexadecimal  digits.  The\n"
-"              string  should  be the 128 bit MD5 checksum of the remote host's\n"
+"              (SFTP  SCP)  Pass a string containing 32 hexadecimal digits. The\n"
+"              string should be the 128 bit MD5 checksum of the  remote  host's\n"
 "              public key, curl will refuse the connection with the host unless\n"
 "              the md5sums match.\n"
 "\n"
@@ -1350,7 +1421,7 @@
 "       -0, --http1.0\n"
 , stdout);
  fputs(
-"              (HTTP)  Tells  curl to use HTTP version 1.0 instead of using its\n"
+"              (HTTP) Tells curl to use HTTP version 1.0 instead of  using  its\n"
 "              internally preferred HTTP version.\n"
 "\n"
 "              This option overrides --http1.1 and --http2.\n"
@@ -1358,16 +1429,16 @@
 "       --http1.1\n"
 "              (HTTP) Tells curl to use HTTP version 1.1.\n"
 "\n"
-"              This option  overrides  -0,  --http1.0  and  --http2.  Added  in\n"
+"              This  option  overrides  -0,  --http1.0  and  --http2.  Added in\n"
 "              7.33.0.\n"
 "\n"
 "       --http2-prior-knowledge\n"
-"              (HTTP)  Tells  curl  to  issue  its  non-TLS HTTP requests using\n"
+"              (HTTP) Tells curl to  issue  its  non-TLS  HTTP  requests  using\n"
 , stdout);
  fputs(
-"              HTTP/2 without HTTP/1.1 Upgrade.  It  requires  prior  knowledge\n"
-"              that  the  server  supports HTTP/2 straight away. HTTPS requests\n"
-"              will still do HTTP/2 the standard way with  negotiated  protocol\n"
+"              HTTP/2  without  HTTP/1.1  Upgrade.  It requires prior knowledge\n"
+"              that the server supports HTTP/2 straight  away.  HTTPS  requests\n"
+"              will  still  do HTTP/2 the standard way with negotiated protocol\n"
 "              version in the TLS handshake.\n"
 "\n"
 "              --http2-prior-knowledge requires that the underlying libcurl was\n"
@@ -1384,19 +1455,19 @@
 "              -0, --http1.0 and --http2-prior-knowledge. Added in 7.33.0.\n"
 "\n"
 "       --ignore-content-length\n"
-"              (FTP  HTTP)  For HTTP, Ignore the Content-Length header. This is\n"
-"              particularly useful for servers running Apache 1.x,  which  will\n"
+"              (FTP HTTP) For HTTP, Ignore the Content-Length header.  This  is\n"
+"              particularly  useful  for servers running Apache 1.x, which will\n"
 , stdout);
  fputs(
-"              report  incorrect  Content-Length  for files larger than 2 giga-\n"
+"              report incorrect Content-Length for files larger  than  2  giga-\n"
 "              bytes.\n"
 "\n"
-"              For FTP (since 7.46.0), skip the RETR command to figure out  the\n"
+"              For  FTP (since 7.46.0), skip the RETR command to figure out the\n"
 "              size before downloading a file.\n"
 "\n"
 "       -i, --include\n"
-"              Include  the  HTTP  response  headers  in  the  output. The HTTP\n"
-"              response headers can include things like server  name,  cookies,\n"
+"              Include the HTTP  response  headers  in  the  output.  The  HTTP\n"
+"              response  headers  can include things like server name, cookies,\n"
 "              date of the document, HTTP version and more...\n"
 "\n"
 , stdout);
@@ -1407,13 +1478,13 @@
 "\n"
 "       -k, --insecure\n"
 "              (TLS) By default, every SSL connection curl makes is verified to\n"
-"              be secure. This option allows curl to proceed and  operate  even\n"
+"              be  secure.  This option allows curl to proceed and operate even\n"
 "              for server connections otherwise considered insecure.\n"
 "\n"
-"              The  server  connection  is verified by making sure the server's\n"
+"              The server connection is verified by making  sure  the  server's\n"
 , stdout);
  fputs(
-"              certificate contains the right name  and  verifies  successfully\n"
+"              certificate  contains  the  right name and verifies successfully\n"
 "              using the cert store.\n"
 "\n"
 "              See this online resource for further details:\n"
@@ -1422,8 +1493,8 @@
 "\n"
 "       --interface <name>\n"
 "\n"
-"              Perform  an operation using a specified interface. You can enter\n"
-"              interface name, IP address or host name. An example  could  look\n"
+"              Perform an operation using a specified interface. You can  enter\n"
+"              interface  name,  IP address or host name. An example could look\n"
 "              like:\n"
 "\n"
 , stdout);
@@ -1431,9 +1502,9 @@
 "               curl --interface eth0:1 https://www.example.com/\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
-"              On  Linux  it can be used to specify a VRF, but the binary needs\n"
-"              to either have CAP_NET_RAW or to be ran as root.  More  informa-\n"
-"              tion   about  Linux  VRF:  https://www.kernel.org/doc/Documenta-\n"
+"              On Linux it can be used to specify a VRF, but the  binary  needs\n"
+"              to  either  have CAP_NET_RAW or to be run as root. More informa-\n"
+"              tion  about  Linux  VRF:   https://www.kernel.org/doc/Documenta-\n"
 "              tion/networking/vrf.txt\n"
 "\n"
 "              See also --dns-interface.\n"
@@ -1441,26 +1512,26 @@
 "       -4, --ipv4\n"
 , stdout);
  fputs(
-"              This option tells curl to resolve names to IPv4 addresses  only,\n"
+"              This  option tells curl to resolve names to IPv4 addresses only,\n"
 "              and not for example try IPv6.\n"
 "\n"
-"              See  also  --http1.1  and  --http2.  This  option  overrides -6,\n"
+"              See also  --http1.1  and  --http2.  This  option  overrides  -6,\n"
 "              --ipv6.\n"
 "\n"
 "       -6, --ipv6\n"
-"              This option tells curl to resolve names to IPv6 addresses  only,\n"
+"              This  option tells curl to resolve names to IPv6 addresses only,\n"
 "              and not for example try IPv4.\n"
 "\n"
-"              See  also  --http1.1  and  --http2.  This  option  overrides -6,\n"
+"              See also  --http1.1  and  --http2.  This  option  overrides  -6,\n"
 "              --ipv6.\n"
 "\n"
 , stdout);
  fputs(
 "       -j, --junk-session-cookies\n"
 "              (HTTP) When curl is told to read cookies from a given file, this\n"
-"              option  will  make  it  discard all \"session cookies\". This will\n"
-"              basically have the same effect as if a new session  is  started.\n"
-"              Typical  browsers  always  discard  session cookies when they're\n"
+"              option will make it discard all  \"session  cookies\".  This  will\n"
+"              basically  have  the same effect as if a new session is started.\n"
+"              Typical browsers always discard  session  cookies  when  they're\n"
 "              closed down.\n"
 "\n"
 "              See also -b, --cookie and -c, --cookie-jar.\n"
@@ -1468,11 +1539,11 @@
 "       --keepalive-time <seconds>\n"
 , stdout);
  fputs(
-"              This option sets the time a  connection  needs  to  remain  idle\n"
-"              before  sending keepalive probes and the time between individual\n"
+"              This  option  sets  the  time  a connection needs to remain idle\n"
+"              before sending keepalive probes and the time between  individual\n"
 "              keepalive probes. It is currently effective on operating systems\n"
 "              offering  the  TCP_KEEPIDLE  and  TCP_KEEPINTVL  socket  options\n"
-"              (meaning Linux, recent AIX, HP-UX and more). This option has  no\n"
+"              (meaning  Linux, recent AIX, HP-UX and more). This option has no\n"
 "              effect if --no-keepalive is used.\n"
 "\n"
 , stdout);
@@ -1483,8 +1554,8 @@
 "              Added in 7.18.0.\n"
 "\n"
 "       --key-type <type>\n"
-"              (TLS) Private key file type. Specify which type your --key  pro-\n"
-"              vided  private  key  is. DER, PEM, and ENG are supported. If not\n"
+"              (TLS)  Private key file type. Specify which type your --key pro-\n"
+"              vided private key is. DER, PEM, and ENG are  supported.  If  not\n"
 "              specified, PEM is assumed.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -1493,49 +1564,49 @@
  fputs(
 "       --key <key>\n"
 "              (TLS SSH) Private key file name. Allows you to provide your pri-\n"
-"              vate  key in this separate file. For SSH, if not specified, curl\n"
+"              vate key in this separate file. For SSH, if not specified,  curl\n"
 "              tries the following candidates in order:\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --krb <level>\n"
-"              (FTP) Enable Kerberos authentication and use. The level must  be\n"
+"              (FTP)  Enable Kerberos authentication and use. The level must be\n"
 "              entered and should be one of 'clear', 'safe', 'confidential', or\n"
 , stdout);
  fputs(
-"              'private'. Should you use a level that  is  not  one  of  these,\n"
+"              'private'.  Should  you  use  a  level that is not one of these,\n"
 "              'private' will instead be used.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
-"              --krb  requires that the underlying libcurl was built to support\n"
+"              --krb requires that the underlying libcurl was built to  support\n"
 "              Kerberos.\n"
 "\n"
 "       --libcurl <file>\n"
-"              Append this option to any ordinary curl command  line,  and  you\n"
-"              will  get a libcurl-using C source code written to the file that\n"
+"              Append  this  option  to any ordinary curl command line, and you\n"
+"              will get a libcurl-using C source code written to the file  that\n"
 , stdout);
  fputs(
 "              does the equivalent of what your command-line operation does!\n"
 "\n"
-"              If this option is used several times, the last given  file  name\n"
+"              If  this  option is used several times, the last given file name\n"
 "              will be used.\n"
 "\n"
 "              Added in 7.16.1.\n"
 "\n"
 "       --limit-rate <speed>\n"
-"              Specify  the  maximum  transfer  rate you want curl to use - for\n"
+"              Specify the maximum transfer rate you want curl  to  use  -  for\n"
 "              both downloads and uploads. This feature is useful if you have a\n"
 "              limited pipe and you'd like your transfer not to use your entire\n"
 , stdout);
  fputs(
 "              bandwidth. To make it slower than it otherwise would be.\n"
 "\n"
-"              The given speed is measured in bytes/second, unless a suffix  is\n"
-"              appended.   Appending  'k' or 'K' will count the number as kilo-\n"
-"              bytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes  it\n"
+"              The  given speed is measured in bytes/second, unless a suffix is\n"
+"              appended.  Appending 'k' or 'K' will count the number  as  kilo-\n"
+"              bytes,  'm' or 'M' makes it megabytes, while 'g' or 'G' makes it\n"
 "              gigabytes. Examples: 200K, 3m and 1G.\n"
 "\n"
-"              If  you  also use the -Y, --speed-limit option, that option will\n"
+"              If you also use the -Y, --speed-limit option, that  option  will\n"
 , stdout);
  fputs(
 "              take precedence and might cripple the rate-limiting slightly, to\n"
@@ -1544,28 +1615,28 @@
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -l, --list-only\n"
-"              (FTP  POP3)  (FTP)  When  listing  an FTP directory, this switch\n"
-"              forces a name-only view. This is especially useful if  the  user\n"
-"              wants  to  machine-parse  the contents of an FTP directory since\n"
+"              (FTP POP3) (FTP) When listing  an  FTP  directory,  this  switch\n"
+"              forces  a  name-only view. This is especially useful if the user\n"
+"              wants to machine-parse the contents of an  FTP  directory  since\n"
 , stdout);
  fputs(
 "              the normal directory view doesn't use a standard look or format.\n"
 "              When used like this, the option causes a NLST command to be sent\n"
 "              to the server instead of LIST.\n"
 "\n"
-"              Note: Some FTP servers list only  files  in  their  response  to\n"
+"              Note:  Some  FTP  servers  list  only files in their response to\n"
 "              NLST; they do not include sub-directories and symbolic links.\n"
 "\n"
-"              (POP3)  When  retrieving a specific email from POP3, this switch\n"
+"              (POP3) When retrieving a specific email from POP3,  this  switch\n"
 , stdout);
  fputs(
-"              forces a LIST command to be performed instead of RETR.  This  is\n"
-"              particularly  useful if the user wants to see if a specific mes-\n"
+"              forces  a  LIST command to be performed instead of RETR. This is\n"
+"              particularly useful if the user wants to see if a specific  mes-\n"
 "              sage id exists on the server and what size it is.\n"
 "\n"
-"              Note: When combined with -X, --request, this option can be  used\n"
+"              Note:  When combined with -X, --request, this option can be used\n"
 "              to send an UIDL command instead, so the user may use the email's\n"
-"              unique identifier rather  than  it's  message  id  to  make  the\n"
+"              unique  identifier  rather  than  it's  message  id  to make the\n"
 "              request.\n"
 "\n"
 , stdout);
@@ -1573,10 +1644,10 @@
 "              Added in 7.21.5.\n"
 "\n"
 "       --local-port <num/range>\n"
-"              Set  a  preferred single number or range (FROM-TO) of local port\n"
+"              Set a preferred single number or range (FROM-TO) of  local  port\n"
 "              numbers to use for the connection(s).  Note that port numbers by\n"
-"              nature  are a scarce resource that will be busy at times so set-\n"
-"              ting this range to something too narrow might cause  unnecessary\n"
+"              nature are a scarce resource that will be busy at times so  set-\n"
+"              ting  this range to something too narrow might cause unnecessary\n"
 "              connection setup failures.\n"
 "\n"
 "              Added in 7.15.2.\n"
@@ -1584,10 +1655,10 @@
 "       --location-trusted\n"
 , stdout);
  fputs(
-"              (HTTP)  Like  -L,  --location, but will allow sending the name +\n"
+"              (HTTP) Like -L, --location, but will allow sending  the  name  +\n"
 "              password to all hosts that the site may redirect to. This may or\n"
 "              may not introduce a security breach if the site redirects you to\n"
-"              a site to which you'll send your authentication info  (which  is\n"
+"              a  site  to which you'll send your authentication info (which is\n"
 "              plaintext in the case of HTTP Basic authentication).\n"
 "\n"
 "              See also -u, --user.\n"
@@ -1595,41 +1666,41 @@
 "       -L, --location\n"
 , stdout);
  fputs(
-"              (HTTP)  If  the server reports that the requested page has moved\n"
+"              (HTTP) If the server reports that the requested page  has  moved\n"
 "              to a different location (indicated with a Location: header and a\n"
-"              3XX  response code), this option will make curl redo the request\n"
-"              on the new place. If used together with  -i,  --include  or  -I,\n"
-"              --head,  headers  from  all  requested pages will be shown. When\n"
-"              authentication is used, curl only sends its credentials  to  the\n"
+"              3XX response code), this option will make curl redo the  request\n"
+"              on  the  new  place.  If used together with -i, --include or -I,\n"
+"              --head, headers from all requested pages  will  be  shown.  When\n"
+"              authentication  is  used, curl only sends its credentials to the\n"
 , stdout);
  fputs(
-"              initial  host.  If a redirect takes curl to a different host, it\n"
-"              won't be able to intercept the user+password. See  also  --loca-\n"
-"              tion-trusted  on how to change this. You can limit the amount of\n"
+"              initial host. If a redirect takes curl to a different  host,  it\n"
+"              won't  be  able to intercept the user+password. See also --loca-\n"
+"              tion-trusted on how to change this. You can limit the amount  of\n"
 "              redirects to follow by using the --max-redirs option.\n"
 "\n"
-"              When curl follows a redirect and the request is not a plain  GET\n"
+"              When  curl follows a redirect and the request is not a plain GET\n"
 "              (for example POST or PUT), it will do the following request with\n"
 , stdout);
  fputs(
 "              a GET if the HTTP response was 301, 302, or 303. If the response\n"
-"              code  was  any  other  3xx code, curl will re-send the following\n"
+"              code was any other 3xx code, curl  will  re-send  the  following\n"
 "              request using the same unmodified method.\n"
 "\n"
-"              You can tell curl to not change the non-GET  request  method  to\n"
-"              GET  after  a  30x  response  by using the dedicated options for\n"
+"              You  can  tell  curl to not change the non-GET request method to\n"
+"              GET after a 30x response by  using  the  dedicated  options  for\n"
 "              that: --post301, --post302 and --post303.\n"
 "\n"
 "       --login-options <options>\n"
 , stdout);
  fputs(
-"              (IMAP POP3 SMTP) Specify the login options to use during  server\n"
+"              (IMAP  POP3 SMTP) Specify the login options to use during server\n"
 "              authentication.\n"
 "\n"
-"              You  can  use  the  login  options  to specify protocol specific\n"
-"              options that may be used during authentication. At present  only\n"
-"              IMAP,  POP3 and SMTP support login options. For more information\n"
-"              about the login options please see RFC 2384, RFC 5092  and  IETF\n"
+"              You can use the  login  options  to  specify  protocol  specific\n"
+"              options  that may be used during authentication. At present only\n"
+"              IMAP, POP3 and SMTP support login options. For more  information\n"
+"              about  the  login options please see RFC 2384, RFC 5092 and IETF\n"
 "              draft draft-earhart-url-smtp-00.txt\n"
 "\n"
 , stdout);
@@ -1639,8 +1710,8 @@
 "              Added in 7.34.0.\n"
 "\n"
 "       --mail-auth <address>\n"
-"              (SMTP)  Specify  a  single address. This will be used to specify\n"
-"              the authentication address (identity)  of  a  submitted  message\n"
+"              (SMTP) Specify a single address. This will be  used  to  specify\n"
+"              the  authentication  address  (identity)  of a submitted message\n"
 "              that is being relayed to another server.\n"
 "\n"
 "              See also --mail-rcpt and --mail-from. Added in 7.25.0.\n"
@@ -1648,7 +1719,7 @@
 "       --mail-from <address>\n"
 , stdout);
  fputs(
-"              (SMTP)  Specify  a single address that the given mail should get\n"
+"              (SMTP) Specify a single address that the given mail  should  get\n"
 "              sent from.\n"
 "\n"
 "              See also --mail-rcpt and --mail-auth. Added in 7.20.0.\n"
@@ -1656,17 +1727,17 @@
 "       --mail-rcpt <address>\n"
 "              (SMTP) Specify a single address, user name or mailing list name.\n"
 "              Repeat this option several times to send to multiple recipients.\n"
-"              When  performing a mail transfer, the recipient should specify a\n"
+"              When performing a mail transfer, the recipient should specify  a\n"
 "              valid email address to send the mail to.\n"
 "\n"
 , stdout);
  fputs(
-"              When performing an  address  verification  (VRFY  command),  the\n"
-"              recipient  should be specified as the user name or user name and\n"
+"              When  performing  an  address  verification  (VRFY command), the\n"
+"              recipient should be specified as the user name or user name  and\n"
 "              domain (as per Section 3.5 of RFC5321). (Added in 7.34.0)\n"
 "\n"
 "              When performing a mailing list expand (EXPN command), the recip-\n"
-"              ient  should  be  specified using the mailing list name, such as\n"
+"              ient should be specified using the mailing list  name,  such  as\n"
 "              \"Friends\" or \"London-Office\".  (Added in 7.34.0)\n"
 "\n"
 "              Added in 7.20.0.\n"
@@ -1677,20 +1748,20 @@
 "              Manual. Display the huge help text.\n"
 "\n"
 "       --max-filesize <bytes>\n"
-"              Specify the maximum size (in bytes) of a file  to  download.  If\n"
-"              the  file requested is larger than this value, the transfer will\n"
+"              Specify  the  maximum  size (in bytes) of a file to download. If\n"
+"              the file requested is larger than this value, the transfer  will\n"
 "              not start and curl will return with exit code 63.\n"
 "\n"
-"              A size modifier may be used. For example, Appending 'k'  or  'K'\n"
-"              will  count  the  number  as  kilobytes,  'm'  or  'M'  makes it\n"
+"              A  size  modifier may be used. For example, Appending 'k' or 'K'\n"
+"              will count  the  number  as  kilobytes,  'm'  or  'M'  makes  it\n"
 , stdout);
  fputs(
-"              megabytes, while 'g' or 'G' makes it gigabytes. Examples:  200K,\n"
+"              megabytes,  while 'g' or 'G' makes it gigabytes. Examples: 200K,\n"
 "              3m and 1G. (Added in 7.58.0)\n"
 "\n"
-"              NOTE:  The  file size is not always known prior to download, and\n"
+"              NOTE: The file size is not always known prior to  download,  and\n"
 "              for such files this option has no effect even if the file trans-\n"
-"              fer  ends  up  being larger than this given limit. This concerns\n"
+"              fer ends up being larger than this given  limit.  This  concerns\n"
 "              both FTP and HTTP transfers.\n"
 "\n"
 "              See also --limit-rate.\n"
@@ -1698,19 +1769,19 @@
 "       --max-redirs <num>\n"
 , stdout);
  fputs(
-"              (HTTP) Set maximum  number  of  redirection-followings  allowed.\n"
-"              When  -L,  --location is used, is used to prevent curl from fol-\n"
-"              lowing redirections \"in absurdum\". By default, the limit is  set\n"
+"              (HTTP)  Set  maximum  number  of redirection-followings allowed.\n"
+"              When -L, --location is used, is used to prevent curl  from  fol-\n"
+"              lowing  redirections \"in absurdum\". By default, the limit is set\n"
 "              to 50 redirections. Set this option to -1 to make it unlimited.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-"       -m, --max-time <time>\n"
+"       -m, --max-time <seconds>\n"
 , stdout);
  fputs(
-"              Maximum  time  in  seconds that you allow the whole operation to\n"
-"              take.  This is useful for preventing your batch jobs from  hang-\n"
-"              ing  for  hours due to slow networks or links going down.  Since\n"
+"              Maximum time in seconds that you allow the  whole  operation  to\n"
+"              take.   This is useful for preventing your batch jobs from hang-\n"
+"              ing for hours due to slow networks or links going  down.   Since\n"
 "              7.32.0, this option accepts decimal values, but the actual time-\n"
 "              out will decrease in accuracy as the specified timeout increases\n"
 "              in decimal precision.\n"
@@ -1722,14 +1793,14 @@
 "              See also --connect-timeout.\n"
 "\n"
 "       --metalink\n"
-"              This option can tell curl to parse and process a  given  URI  as\n"
-"              Metalink  file  (both  version 3 and 4 (RFC 5854) are supported)\n"
-"              and make use of the mirrors listed within for failover if  there\n"
-"              are  errors (such as the file or server not being available). It\n"
+"              This  option  can  tell curl to parse and process a given URI as\n"
+"              Metalink file (both version 3 and 4 (RFC  5854)  are  supported)\n"
+"              and  make use of the mirrors listed within for failover if there\n"
+"              are errors (such as the file or server not being available).  It\n"
 , stdout);
  fputs(
-"              will also verify the hash of the file after  the  download  com-\n"
-"              pletes.  The Metalink file itself is downloaded and processed in\n"
+"              will  also  verify  the hash of the file after the download com-\n"
+"              pletes. The Metalink file itself is downloaded and processed  in\n"
 "              memory and not stored in the local file system.\n"
 "\n"
 "              Example to use a remote Metalink file:\n"
@@ -1743,34 +1814,34 @@
  fputs(
 "               curl --metalink file://example.metalink\n"
 "\n"
-"              Please  note  that if FILE protocol is disabled, there is no way\n"
-"              to use a local Metalink file at the time of this  writing.  Also\n"
-"              note  that  if  --metalink  and -i, --include are used together,\n"
-"              --include will be ignored. This is because including headers  in\n"
-"              the  response  will break Metalink parser and if the headers are\n"
+"              Please note that if FILE protocol is disabled, there is  no  way\n"
+"              to  use  a local Metalink file at the time of this writing. Also\n"
+"              note that if --metalink and -i,  --include  are  used  together,\n"
+"              --include  will be ignored. This is because including headers in\n"
+"              the response will break Metalink parser and if the  headers  are\n"
 , stdout);
  fputs(
 "              included in the file described in Metalink file, hash check will\n"
 "              fail.\n"
 "\n"
-"              --metalink  requires  that  the  underlying libcurl was built to\n"
+"              --metalink requires that the underlying  libcurl  was  built  to\n"
 "              support metalink. Added in 7.27.0.\n"
 "\n"
 "       --negotiate\n"
 "              (HTTP) Enables Negotiate (SPNEGO) authentication.\n"
 "\n"
-"              This option requires a library built with GSS-API or  SSPI  sup-\n"
-"              port.  Use  -V,  --version  to  see  if  your curl supports GSS-\n"
+"              This  option  requires a library built with GSS-API or SSPI sup-\n"
+"              port. Use -V, --version  to  see  if  your  curl  supports  GSS-\n"
 , stdout);
  fputs(
 "              API/SSPI or SPNEGO.\n"
 "\n"
-"              When using this option, you must also provide a fake -u,  --user\n"
-"              option  to  activate the authentication code properly. Sending a\n"
-"              '-u :' is enough as the user name  and  password  from  the  -u,\n"
+"              When  using this option, you must also provide a fake -u, --user\n"
+"              option to activate the authentication code properly.  Sending  a\n"
+"              '-u  :'  is  enough  as  the user name and password from the -u,\n"
 "              --user option aren't actually used.\n"
 "\n"
-"              If  this  option  is  used  several times, only the first one is\n"
+"              If this option is used several times,  only  the  first  one  is\n"
 "              used.\n"
 "\n"
 , stdout);
@@ -1778,10 +1849,10 @@
 "              See also --basic and --ntlm and --anyauth and --proxy-negotiate.\n"
 "\n"
 "       --netrc-file <filename>\n"
-"              This option is similar to -n, --netrc, except that  you  provide\n"
-"              the  path  (absolute  or  relative)  to the netrc file that Curl\n"
+"              This  option  is similar to -n, --netrc, except that you provide\n"
+"              the path (absolute or relative) to  the  netrc  file  that  Curl\n"
 "              should use.  You can only specify one netrc file per invocation.\n"
-"              If  several --netrc-file options are provided, the last one will\n"
+"              If several --netrc-file options are provided, the last one  will\n"
 "              be used.\n"
 "\n"
 , stdout);
@@ -1791,47 +1862,47 @@
 "              This option overrides -n, --netrc. Added in 7.21.5.\n"
 "\n"
 "       --netrc-optional\n"
-"              Very similar to -n, --netrc, but this option  makes  the  .netrc\n"
+"              Very  similar  to  -n, --netrc, but this option makes the .netrc\n"
 "              usage optional and not mandatory as the -n, --netrc option does.\n"
 "\n"
 "              See also --netrc-file. This option overrides -n, --netrc.\n"
 "\n"
 "       -n, --netrc\n"
-"              Makes  curl  scan  the  .netrc  (_netrc  on Windows) file in the\n"
+"              Makes curl scan the .netrc  (_netrc  on  Windows)  file  in  the\n"
 , stdout);
  fputs(
 "              user's home directory for login name and password. This is typi-\n"
-"              cally  used for FTP on Unix. If used with HTTP, curl will enable\n"
+"              cally used for FTP on Unix. If used with HTTP, curl will  enable\n"
 "              user authentication. See netrc(5) ftp(1) for details on the file\n"
-"              format.  Curl  will  not  complain if that file doesn't have the\n"
+"              format. Curl will not complain if that  file  doesn't  have  the\n"
 "              right permissions (it should not be either world- or group-read-\n"
-"              able).  The environment variable \"HOME\" is used to find the home\n"
+"              able). The environment variable \"HOME\" is used to find the  home\n"
 "              directory.\n"
 "\n"
 , stdout);
  fputs(
-"              A quick and very simple example of how  to  setup  a  .netrc  to\n"
-"              allow  curl to FTP to the machine host.domain.com with user name\n"
+"              A  quick  and  very  simple  example of how to setup a .netrc to\n"
+"              allow curl to FTP to the machine host.domain.com with user  name\n"
 "              'myself' and password 'secret' should look similar to:\n"
 "\n"
 "              machine host.domain.com login myself password secret\n"
 "\n"
 "       -:, --next\n"
 "              Tells curl to use a separate operation for the following URL and\n"
-"              associated   options.  This  allows  you  to  send  several  URL\n"
+"              associated  options.  This  allows  you  to  send  several   URL\n"
 , stdout);
  fputs(
-"              requests, each with their own  specific  options,  for  example,\n"
+"              requests,  each  with  their  own specific options, for example,\n"
 "              such as different user names or custom requests for each.\n"
 "\n"
-"              -:,  --next  will  reset  all local options and only global ones\n"
-"              will have their values survive over to the  operation  following\n"
-"              the  -:,  --next  instruction. Global options include -v, --ver-\n"
+"              -:, --next will reset all local options  and  only  global  ones\n"
+"              will  have  their values survive over to the operation following\n"
+"              the -:, --next instruction. Global options  include  -v,  --ver-\n"
 "              bose, --trace, --trace-ascii and --fail-early.\n"
 "\n"
 , stdout);
  fputs(
-"              For example, you can do both a GET and a POST in a  single  com-\n"
+"              For  example,  you can do both a GET and a POST in a single com-\n"
 "              mand line:\n"
 "\n"
 "               curl www1.example.com --next -d postthis www2.example.com\n"
@@ -1839,75 +1910,75 @@
 "              Added in 7.36.0.\n"
 "\n"
 "       --no-alpn\n"
-"              (HTTPS)  Disable  the  ALPN  TLS  extension.  ALPN is enabled by\n"
-"              default if libcurl was built with an SSL library  that  supports\n"
-"              ALPN.  ALPN is used by a libcurl that supports HTTP/2 to negoti-\n"
+"              (HTTPS) Disable the ALPN  TLS  extension.  ALPN  is  enabled  by\n"
+"              default  if  libcurl was built with an SSL library that supports\n"
+"              ALPN. ALPN is used by a libcurl that supports HTTP/2 to  negoti-\n"
 , stdout);
  fputs(
 "              ate HTTP/2 support with the server during https sessions.\n"
 "\n"
-"              See also --no-npn  and  --http2.  --no-alpn  requires  that  the\n"
+"              See  also  --no-npn  and  --http2.  --no-alpn  requires that the\n"
 "              underlying libcurl was built to support TLS. Added in 7.36.0.\n"
 "\n"
 "       -N, --no-buffer\n"
 "              Disables the buffering of the output stream. In normal work sit-\n"
-"              uations, curl will use a standard buffered  output  stream  that\n"
+"              uations,  curl  will  use a standard buffered output stream that\n"
 "              will have the effect that it will output the data in chunks, not\n"
 , stdout);
  fputs(
-"              necessarily exactly when the data arrives.   Using  this  option\n"
+"              necessarily  exactly  when  the data arrives.  Using this option\n"
 "              will disable that buffering.\n"
 "\n"
-"              Note  that  this  is the negated option name documented. You can\n"
+"              Note that this is the negated option name  documented.  You  can\n"
 "              thus use --buffer to enforce the buffering.\n"
 "\n"
 "       --no-keepalive\n"
-"              Disables the use of keepalive messages on  the  TCP  connection.\n"
+"              Disables  the  use  of keepalive messages on the TCP connection.\n"
 "              curl otherwise enables them by default.\n"
 "\n"
-"              Note  that  this  is the negated option name documented. You can\n"
+"              Note that this is the negated option name  documented.  You  can\n"
 , stdout);
  fputs(
 "              thus use --keepalive to enforce keepalive.\n"
 "\n"
 "       --no-npn\n"
 "              (HTTPS) Disable the NPN TLS extension. NPN is enabled by default\n"
-"              if  libcurl was built with an SSL library that supports NPN. NPN\n"
-"              is used by a libcurl that supports HTTP/2  to  negotiate  HTTP/2\n"
+"              if libcurl was built with an SSL library that supports NPN.  NPN\n"
+"              is  used  by  a libcurl that supports HTTP/2 to negotiate HTTP/2\n"
 "              support with the server during https sessions.\n"
 "\n"
-"              See  also  --no-alpn  and  --http2.  --no-npn  requires that the\n"
+"              See also --no-alpn  and  --http2.  --no-npn  requires  that  the\n"
 , stdout);
  fputs(
 "              underlying libcurl was built to support TLS. Added in 7.36.0.\n"
 "\n"
 "       --no-sessionid\n"
-"              (TLS) Disable curl's use of SSL session-ID caching.  By  default\n"
-"              all  transfers are done using the cache. Note that while nothing\n"
-"              should ever get hurt by attempting  to  reuse  SSL  session-IDs,\n"
+"              (TLS)  Disable curl's use of SSL session-ID caching.  By default\n"
+"              all transfers are done using the cache. Note that while  nothing\n"
+"              should  ever  get  hurt  by attempting to reuse SSL session-IDs,\n"
 "              there seem to be broken SSL implementations in the wild that may\n"
 "              require you to disable this in order for you to succeed.\n"
 "\n"
 , stdout);
  fputs(
-"              Note that this is the negated option name  documented.  You  can\n"
+"              Note  that  this  is the negated option name documented. You can\n"
 "              thus use --sessionid to enforce session-ID caching.\n"
 "\n"
 "              Added in 7.16.0.\n"
 "\n"
 "       --noproxy <no-proxy-list>\n"
-"              Comma-separated  list  of hosts which do not use a proxy, if one\n"
-"              is specified.  The only wildcard is a single * character,  which\n"
+"              Comma-separated list of hosts which do not use a proxy,  if  one\n"
+"              is  specified.  The only wildcard is a single * character, which\n"
 "              matches all hosts, and effectively disables the proxy. Each name\n"
 , stdout);
  fputs(
-"              in this list is matched as either a domain  which  contains  the\n"
-"              hostname,  or  the hostname itself. For example, local.com would\n"
-"              match  local.com,  local.com:80,  and  www.local.com,  but   not\n"
+"              in  this  list  is matched as either a domain which contains the\n"
+"              hostname, or the hostname itself. For example,  local.com  would\n"
+"              match   local.com,  local.com:80,  and  www.local.com,  but  not\n"
 "              www.notlocal.com.\n"
 "\n"
-"              Since  7.53.0,  This  option overrides the environment variables\n"
-"              that disable the proxy. If there's an environment variable  dis-\n"
+"              Since 7.53.0, This option overrides  the  environment  variables\n"
+"              that  disable the proxy. If there's an environment variable dis-\n"
 , stdout);
  fputs(
 "              abling a proxy, you can set noproxy list to \"\" to override it.\n"
@@ -1916,42 +1987,42 @@
 "\n"
 "       --ntlm-wb\n"
 "              (HTTP) Enables NTLM much in the style --ntlm does, but hand over\n"
-"              the authentication to the separate binary  ntlmauth  application\n"
+"              the  authentication  to the separate binary ntlmauth application\n"
 "              that is executed when needed.\n"
 "\n"
 "              See also --ntlm and --proxy-ntlm.\n"
 "\n"
-"       --ntlm (HTTP)  Enables  NTLM  authentication.  The  NTLM authentication\n"
+"       --ntlm (HTTP) Enables  NTLM  authentication.  The  NTLM  authentication\n"
 , stdout);
  fputs(
 "              method was designed by Microsoft and is used by IIS web servers.\n"
-"              It  is a proprietary protocol, reverse-engineered by clever peo-\n"
+"              It is a proprietary protocol, reverse-engineered by clever  peo-\n"
 "              ple and implemented in curl based on their efforts. This kind of\n"
-"              behavior  should  not be endorsed, you should encourage everyone\n"
-"              who uses NTLM to switch to a public and  documented  authentica-\n"
+"              behavior should not be endorsed, you should  encourage  everyone\n"
+"              who  uses  NTLM to switch to a public and documented authentica-\n"
 "              tion method instead, such as Digest.\n"
 "\n"
 , stdout);
  fputs(
-"              If  you  want to enable NTLM for your proxy authentication, then\n"
+"              If you want to enable NTLM for your proxy  authentication,  then\n"
 "              use --proxy-ntlm.\n"
 "\n"
-"              If this option is used several times,  only  the  first  one  is\n"
+"              If  this  option  is  used  several times, only the first one is\n"
 "              used.\n"
 "\n"
-"              See  also  --proxy-ntlm.  --ntlm  requires  that  the underlying\n"
-"              libcurl was built to support TLS. This option overrides  --basic\n"
+"              See also  --proxy-ntlm.  --ntlm  requires  that  the  underlying\n"
+"              libcurl  was built to support TLS. This option overrides --basic\n"
 "              and --negotiated and --digest and --anyauth.\n"
 "\n"
 "       --oauth2-bearer <token>\n"
 , stdout);
  fputs(
-"              (IMAP  POP3  SMTP) Specify the Bearer Token for OAUTH 2.0 server\n"
+"              (IMAP POP3 SMTP) Specify the Bearer Token for OAUTH  2.0  server\n"
 "              authentication. The Bearer Token is used in conjunction with the\n"
-"              user  name  which  can  be specified as part of the --url or -u,\n"
+"              user name which can be specified as part of  the  --url  or  -u,\n"
 "              --user options.\n"
 "\n"
-"              The Bearer Token and user name are formatted  according  to  RFC\n"
+"              The  Bearer  Token  and user name are formatted according to RFC\n"
 "              6750.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -1960,8 +2031,8 @@
 , stdout);
  fputs(
 "              Write output to <file> instead of stdout. If you are using {} or\n"
-"              [] to fetch multiple documents, you can use '#'  followed  by  a\n"
-"              number  in  the <file> specifier. That variable will be replaced\n"
+"              []  to  fetch  multiple documents, you can use '#' followed by a\n"
+"              number in the <file> specifier. That variable will  be  replaced\n"
 "              with the current string for the URL being fetched. Like in:\n"
 "\n"
 "               curl http://{one,two}.example.com -o \"file_#1.txt\"\n"
@@ -1972,25 +2043,25 @@
 "\n"
 , stdout);
  fputs(
-"              You may use this option as many times as the number of URLs  you\n"
-"              have.  For  example, if you specify two URLs on the same command\n"
+"              You  may use this option as many times as the number of URLs you\n"
+"              have. For example, if you specify two URLs on the  same  command\n"
 "              line, you can use it like this:\n"
 "\n"
 "                curl -o aa example.com -o bb example.net\n"
 "\n"
-"              and the order of the -o options and  the  URLs  doesn't  matter,\n"
-"              just  that  the  first -o is for the first URL and so on, so the\n"
+"              and  the  order  of  the -o options and the URLs doesn't matter,\n"
+"              just that the first -o is for the first URL and so  on,  so  the\n"
 "              above command line can also be written as\n"
 "\n"
 , stdout);
  fputs(
 "                curl example.com example.net -o aa -o bb\n"
 "\n"
-"              See also the --create-dirs option to create the  local  directo-\n"
-"              ries  dynamically.  Specifying the output as '-' (a single dash)\n"
+"              See  also  the --create-dirs option to create the local directo-\n"
+"              ries dynamically. Specifying the output as '-' (a  single  dash)\n"
 "              will force the output to be done to stdout.\n"
 "\n"
-"              See  also  -O,  --remote-name  and  --remote-name-all  and   -J,\n"
+"              See   also  -O,  --remote-name  and  --remote-name-all  and  -J,\n"
 "              --remote-header-name.\n"
 "\n"
 "       --pass <phrase>\n"
@@ -2001,27 +2072,27 @@
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --path-as-is\n"
-"              Tell  curl  to  not handle sequences of /../ or /./ in the given\n"
-"              URL path. Normally curl will squash or merge them  according  to\n"
+"              Tell curl to not handle sequences of /../ or /./  in  the  given\n"
+"              URL  path.  Normally curl will squash or merge them according to\n"
 "              standards but with this option set you tell it not to do that.\n"
 "\n"
 "              Added in 7.42.0.\n"
 "\n"
 "       --pinnedpubkey <hashes>\n"
-"              (TLS)  Tells  curl  to  use  the  specified  public key file (or\n"
+"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
 , stdout);
  fputs(
-"              hashes) to verify the peer. This can be a path to a  file  which\n"
+"              hashes)  to  verify the peer. This can be a path to a file which\n"
 "              contains a single public key in PEM or DER format, or any number\n"
 "              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
 "              rated by ';'\n"
 "\n"
-"              When  negotiating  a  TLS  or SSL connection, the server sends a\n"
-"              certificate indicating its identity. A public key  is  extracted\n"
+"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
+"              certificate  indicating  its identity. A public key is extracted\n"
 , stdout);
  fputs(
-"              from  this certificate and if it does not exactly match the pub-\n"
-"              lic key provided to this option, curl will abort the  connection\n"
+"              from this certificate and if it does not exactly match the  pub-\n"
+"              lic  key provided to this option, curl will abort the connection\n"
 "              before sending or receiving any data.\n"
 "\n"
 "              PEM/DER support:\n"
@@ -2040,15 +2111,15 @@
 "       --post301\n"
 "              (HTTP) Tells curl to respect RFC 7231/6.4.2 and not convert POST\n"
 "              requests into GET requests when following a 301 redirection. The\n"
-"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
+"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
 , stdout);
  fputs(
-"              the conversion by default to maintain  consistency.  However,  a\n"
-"              server  may  require  a POST to remain a POST after such a redi-\n"
-"              rection. This option is meaningful only when using  -L,  --loca-\n"
+"              the  conversion  by  default to maintain consistency. However, a\n"
+"              server may require a POST to remain a POST after  such  a  redi-\n"
+"              rection.  This  option is meaningful only when using -L, --loca-\n"
 "              tion.\n"
 "\n"
-"              See  also  --post302  and --post303 and -L, --location. Added in\n"
+"              See also --post302 and --post303 and -L,  --location.  Added  in\n"
 "              7.17.1.\n"
 "\n"
 "       --post302\n"
@@ -2056,13 +2127,13 @@
 , stdout);
  fputs(
 "              requests into GET requests when following a 302 redirection. The\n"
-"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
-"              the  conversion  by  default to maintain consistency. However, a\n"
-"              server may require a POST to remain a POST after  such  a  redi-\n"
-"              rection.  This  option is meaningful only when using -L, --loca-\n"
+"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
+"              the conversion by default to maintain  consistency.  However,  a\n"
+"              server  may  require  a POST to remain a POST after such a redi-\n"
+"              rection. This option is meaningful only when using  -L,  --loca-\n"
 "              tion.\n"
 "\n"
-"              See also --post301 and --post303 and -L,  --location.  Added  in\n"
+"              See  also  --post301  and --post303 and -L, --location. Added in\n"
 , stdout);
  fputs(
 "              7.19.1.\n"
@@ -2070,38 +2141,38 @@
 "       --post303\n"
 "              (HTTP) Tells curl to respect RFC 7231/6.4.4 and not convert POST\n"
 "              requests into GET requests when following a 303 redirection. The\n"
-"              non-RFC  behaviour  is  ubiquitous in web browsers, so curl does\n"
-"              the conversion by default to maintain  consistency.  However,  a\n"
-"              server  may  require  a POST to remain a POST after such a redi-\n"
+"              non-RFC behaviour is ubiquitous in web browsers,  so  curl  does\n"
+"              the  conversion  by  default to maintain consistency. However, a\n"
+"              server may require a POST to remain a POST after  such  a  redi-\n"
 , stdout);
  fputs(
-"              rection. This option is meaningful only when using  -L,  --loca-\n"
+"              rection.  This  option is meaningful only when using -L, --loca-\n"
 "              tion.\n"
 "\n"
-"              See  also  --post302  and --post301 and -L, --location. Added in\n"
+"              See also --post302 and --post301 and -L,  --location.  Added  in\n"
 "              7.26.0.\n"
 "\n"
 "       --preproxy [protocol://]host[:port]\n"
-"              Use the specified SOCKS proxy before connecting to  an  HTTP  or\n"
-"              HTTPS  -x,  --proxy.  In  such a case curl first connects to the\n"
-"              SOCKS proxy and then connects (through SOCKS)  to  the  HTTP  or\n"
+"              Use  the  specified  SOCKS proxy before connecting to an HTTP or\n"
+"              HTTPS -x, --proxy. In such a case curl  first  connects  to  the\n"
+"              SOCKS  proxy  and  then  connects (through SOCKS) to the HTTP or\n"
 , stdout);
  fputs(
 "              HTTPS proxy. Hence pre proxy.\n"
 "\n"
 "              The pre proxy string should be specified with a protocol:// pre-\n"
-"              fix to  specify  alternative  proxy  protocols.  Use  socks4://,\n"
-"              socks4a://,  socks5://  or  socks5h://  to  request the specific\n"
-"              SOCKS version to be used. No protocol specified will  make  curl\n"
+"              fix  to  specify  alternative  proxy  protocols.  Use socks4://,\n"
+"              socks4a://, socks5:// or  socks5h://  to  request  the  specific\n"
+"              SOCKS  version  to be used. No protocol specified will make curl\n"
 "              default to SOCKS4.\n"
 "\n"
-"              If  the  port number is not specified in the proxy string, it is\n"
+"              If the port number is not specified in the proxy string,  it  is\n"
 , stdout);
  fputs(
 "              assumed to be 1080.\n"
 "\n"
 "              User and password that might be provided in the proxy string are\n"
-"              URL  decoded by curl. This allows you to pass in special charac-\n"
+"              URL decoded by curl. This allows you to pass in special  charac-\n"
 "              ters such as @ by using %40 or pass in a colon with %3a.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -2109,21 +2180,22 @@
 "              Added in 7.52.0.\n"
 "\n"
 "       -#, --progress-bar\n"
-"              Make curl display transfer progress as  a  simple  progress  bar\n"
+"              Make  curl  display  transfer  progress as a simple progress bar\n"
 , stdout);
  fputs(
 "              instead of the standard, more informational, meter.\n"
 "\n"
-"              This  progress  bar draws a single line of '#' characters across\n"
+"              This progress bar draws a single line of '#'  characters  across\n"
 "              the screen and shows a percentage if the transfer size is known.\n"
-"              For  transfers  without a known size, it will instead output one\n"
-"              '#' character for every 1024 bytes transferred.\n"
+"              For transfers without a known size, there  will  be  space  ship\n"
+"              (-=o=-)  that  moves back and forth but only while data is being\n"
+"              transferred, with a set of flying hash sign symbols on top.\n"
 "\n"
 "       --proto-default <protocol>\n"
-"              Tells curl to use protocol for any URL missing a scheme name.\n"
-"\n"
 , stdout);
  fputs(
+"              Tells curl to use protocol for any URL missing a scheme name.\n"
+"\n"
 "              Example:\n"
 "\n"
 "               curl --proto-default https ftp.mozilla.org\n"
@@ -2136,11 +2208,11 @@
 "              Without  this  option curl would make a guess based on the host,\n"
 "              see --url for details.\n"
 "\n"
+, stdout);
+ fputs(
 "              Added in 7.45.0.\n"
 "\n"
 "       --proto-redir <protocols>\n"
-, stdout);
- fputs(
 "              Tells curl to limit what protocols it may use on redirect.  Pro-\n"
 "              tocols  denied by --proto are not overridden by this option. See\n"
 "              --proto for how protocols are represented.\n"
@@ -2329,10 +2401,29 @@
 "\n"
 "              Added in 7.52.0.\n"
 "\n"
-"       --proxy-service-name <name>\n"
+"       --proxy-pinnedpubkey <hashes>\n"
 , stdout);
  fputs(
+"              (TLS) Tells curl to  use  the  specified  public  key  file  (or\n"
+"              hashes)  to verify the proxy. This can be a path to a file which\n"
+"              contains a single public key in PEM or DER format, or any number\n"
+"              of base64 encoded sha256 hashes preceded by 'sha256//' and sepa-\n"
+"              rated by ';'\n"
+"\n"
+"              When negotiating a TLS or SSL connection,  the  server  sends  a\n"
+, stdout);
+ fputs(
+"              certificate  indicating  its identity. A public key is extracted\n"
+"              from this certificate and if it does not exactly match the  pub-\n"
+"              lic  key provided to this option, curl will abort the connection\n"
+"              before sending or receiving any data.\n"
+"\n"
+"              If this option is used several times, the last one will be used.\n"
+"\n"
+"       --proxy-service-name <name>\n"
 "              This option allows you to change  the  service  name  for  proxy\n"
+, stdout);
+ fputs(
 "              negotiation.\n"
 "\n"
 "              Added in 7.43.0.\n"
@@ -2348,12 +2439,12 @@
 "              Added in 7.52.0.\n"
 "\n"
 "       --proxy-tlspassword <string>\n"
-, stdout);
- fputs(
 "              Same as --tlspassword but used in HTTPS proxy context.\n"
 "\n"
 "              Added in 7.52.0.\n"
 "\n"
+, stdout);
+ fputs(
 "       --proxy-tlsuser <name>\n"
 "              Same as --tlsuser but used in HTTPS proxy context.\n"
 "\n"
@@ -2368,9 +2459,9 @@
 "              Specify  the user name and password to use for proxy authentica-\n"
 "              tion.\n"
 "\n"
+"              If you use a Windows SSPI-enabled  curl  binary  and  do  either\n"
 , stdout);
  fputs(
-"              If you use a Windows SSPI-enabled  curl  binary  and  do  either\n"
 "              Negotiate  or  NTLM  authentication  then  you  can tell curl to\n"
 "              select the user name and password from your environment by spec-\n"
 "              ifying a single colon with this option: \"-U :\".\n"
@@ -2380,9 +2471,9 @@
 "       -x, --proxy [protocol://]host[:port]\n"
 "              Use the specified proxy.\n"
 "\n"
+"              The  proxy string can be specified with a protocol:// prefix. No\n"
 , stdout);
  fputs(
-"              The  proxy string can be specified with a protocol:// prefix. No\n"
 "              protocol specified or http:// will be treated as HTTP proxy. Use\n"
 "              socks4://, socks4a://, socks5:// or socks5h:// to request a spe-\n"
 "              cific SOCKS version to be used.  (The protocol support was added\n"
@@ -2391,9 +2482,9 @@
 "              HTTPS  proxy  support  via https:// protocol prefix was added in\n"
 "              7.52.0 for OpenSSL, GnuTLS and NSS.\n"
 "\n"
+"              Unrecognized and unsupported  proxy  protocols  cause  an  error\n"
 , stdout);
  fputs(
-"              Unrecognized and unsupported  proxy  protocols  cause  an  error\n"
 "              since  7.52.0.   Prior  versions may ignore the protocol and use\n"
 "              http:// instead.\n"
 "\n"
@@ -2402,10 +2493,10 @@
 "\n"
 "              This  option  overrides  existing environment variables that set\n"
 "              the proxy to use. If there's an environment variable  setting  a\n"
-, stdout);
- fputs(
 "              proxy, you can set proxy to \"\" to override it.\n"
 "\n"
+, stdout);
+ fputs(
 "              All operations that are performed over an HTTP proxy will trans-\n"
 "              parently be converted to HTTP. It means  that  certain  protocol\n"
 "              specific operations might not be available. This is not the case\n"
@@ -2555,8 +2646,8 @@
 "              for SSL connections.  See also the --egd-file option.\n"
 "\n"
 "       -r, --range <range>\n"
-"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e a partial  docu-\n"
-"              ment)  from  a  HTTP/1.1,  FTP  or  SFTP server or a local FILE.\n"
+"              (HTTP FTP SFTP FILE) Retrieve a byte range (i.e. a partial docu-\n"
+"              ment)  from  an  HTTP/1.1,  FTP  or SFTP server or a local FILE.\n"
 "              Ranges can be specified in a number of ways.\n"
 "\n"
 "              0-499     specifies the first 500 bytes\n"
@@ -2742,7 +2833,7 @@
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-"       --resolve <host:port:address>\n"
+"       --resolve <host:port:address[,address]...>\n"
 "              Provide  a  custom  address  for  a specific host and port pair.\n"
 "              Using this, you can make the curl requests(s)  use  a  specified\n"
 , stdout);
@@ -2761,27 +2852,30 @@
 "              Support for providing the IP address within [brackets] was added\n"
 "              in 7.57.0.\n"
 "\n"
-"              This option can be used many times to add  many  host  names  to\n"
+"              Support for providing multiple IP addresses per entry was  added\n"
+"              in 7.59.0.\n"
+"\n"
+"              This  option  can  be  used many times to add many host names to\n"
 "              resolve.\n"
 "\n"
+, stdout);
+ fputs(
 "              Added in 7.21.3.\n"
 "\n"
 "       --retry-connrefused\n"
-, stdout);
- fputs(
-"              In  addition to the other conditions, consider ECONNREFUSED as a\n"
-"              transient error too for --retry. This option  is  used  together\n"
+"              In addition to the other conditions, consider ECONNREFUSED as  a\n"
+"              transient  error  too  for --retry. This option is used together\n"
 "              with --retry.\n"
 "\n"
 "              Added in 7.52.0.\n"
 "\n"
 "       --retry-delay <seconds>\n"
-"              Make  curl  sleep  this  amount of time before each retry when a\n"
-"              transfer has failed with  a  transient  error  (it  changes  the\n"
-"              default  backoff time algorithm between retries). This option is\n"
+"              Make curl sleep this amount of time before  each  retry  when  a\n"
+"              transfer  has  failed  with  a  transient  error (it changes the\n"
 , stdout);
  fputs(
-"              only interesting if --retry is also used. Setting this delay  to\n"
+"              default backoff time algorithm between retries). This option  is\n"
+"              only  interesting if --retry is also used. Setting this delay to\n"
 "              zero will make curl use the default backoff time.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -2789,42 +2883,42 @@
 "              Added in 7.12.3.\n"
 "\n"
 "       --retry-max-time <seconds>\n"
-"              The  retry  timer  is  reset  before the first transfer attempt.\n"
-"              Retries will be done as usual (see --retry) as long as the timer\n"
+"              The retry timer is reset  before  the  first  transfer  attempt.\n"
 , stdout);
  fputs(
+"              Retries will be done as usual (see --retry) as long as the timer\n"
 "              hasn't reached this given limit. Notice that if the timer hasn't\n"
-"              reached the limit, the request will be made and  while  perform-\n"
-"              ing,  it may take longer than this given time period. To limit a\n"
-"              single request's maximum time, use  -m,  --max-time.   Set  this\n"
+"              reached  the  limit, the request will be made and while perform-\n"
+"              ing, it may take longer than this given time period. To limit  a\n"
+"              single  request's  maximum  time,  use -m, --max-time.  Set this\n"
 "              option to zero to not timeout retries.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              Added in 7.12.3.\n"
 "\n"
+"       --retry <num>\n"
+"              If a transient error is returned when curl tries  to  perform  a\n"
+"              transfer,  it  will retry this number of times before giving up.\n"
+"              Setting the number to 0 makes curl do no retries (which  is  the\n"
+"              default).  Transient  error  means either: a timeout, an FTP 4xx\n"
 , stdout);
  fputs(
-"       --retry <num>\n"
-"              If  a  transient  error is returned when curl tries to perform a\n"
-"              transfer, it will retry this number of times before  giving  up.\n"
-"              Setting  the  number to 0 makes curl do no retries (which is the\n"
-"              default). Transient error means either: a timeout,  an  FTP  4xx\n"
 "              response code or an HTTP 5xx response code.\n"
 "\n"
-"              When  curl  is about to retry a transfer, it will first wait one\n"
+"              When curl is about to retry a transfer, it will first  wait  one\n"
+"              second  and  then for all forthcoming retries it will double the\n"
+"              waiting time until it reaches 10 minutes which then will be  the\n"
+"              delay  between  the rest of the retries.  By using --retry-delay\n"
+"              you  disable  this  exponential  backoff  algorithm.  See   also\n"
 , stdout);
  fputs(
-"              second and then for all forthcoming retries it will  double  the\n"
-"              waiting  time until it reaches 10 minutes which then will be the\n"
-"              delay between the rest of the retries.  By  using  --retry-delay\n"
-"              you   disable  this  exponential  backoff  algorithm.  See  also\n"
 "              --retry-max-time to limit the total time allowed for retries.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-, stdout);
- fputs(
 "              Added in 7.12.3.\n"
 "\n"
 "       --sasl-ir\n"
@@ -2835,39 +2929,63 @@
 "       --service-name <name>\n"
 "              This option allows you to change the service name for SPNEGO.\n"
 "\n"
-"              Examples:   --negotiate   --service-name   sockd    would    use\n"
+"              Examples:    --negotiate    --service-name   sockd   would   use\n"
+, stdout);
+ fputs(
 "              sockd/server-name.\n"
 "\n"
 "              Added in 7.43.0.\n"
 "       -S, --show-error\n"
 "              When used with -s, --silent, it makes curl show an error message\n"
-, stdout);
- fputs(
 "              if it fails.\n"
 "       -s, --silent\n"
-"              Silent or quiet mode. Don't show progress meter  or  error  mes-\n"
-"              sages.   Makes  Curl mute. It will still output the data you ask\n"
+"              Silent  or  quiet  mode. Don't show progress meter or error mes-\n"
+"              sages.  Makes Curl mute. It will still output the data  you  ask\n"
 "              for, potentially even to the terminal/stdout unless you redirect\n"
 "              it.\n"
 "\n"
-"              Use  -S,  --show-error  in  addition  to  this option to disable\n"
+, stdout);
+ fputs(
+"              Use -S, --show-error in  addition  to  this  option  to  disable\n"
 "              progress meter but still show error messages.\n"
 "\n"
 "              See also -v, --verbose and --stderr.\n"
 "\n"
-, stdout);
- fputs(
 "       --socks4 <host[:port]>\n"
 "              Use the specified SOCKS4 proxy. If the port number is not speci-\n"
 "              fied, it is assumed at port 1080.\n"
 "\n"
-"              This  option  overrides any previous use of -x, --proxy, as they\n"
+"              This option overrides any previous use of -x, --proxy,  as  they\n"
+"              are mutually exclusive.\n"
+"\n"
+, stdout);
+ fputs(
+"              Since 7.21.7, this option is superfluous since you can specify a\n"
+"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
+"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
+"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
+"              such a case curl first connects to the SOCKS proxy and then con-\n"
+"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
+"\n"
+, stdout);
+ fputs(
+"              If this option is used several times, the last one will be used.\n"
+"\n"
+"              Added in 7.15.2.\n"
+"\n"
+"       --socks4a <host[:port]>\n"
+"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
+"              ified, it is assumed at port 1080.\n"
+"\n"
+"              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
-"              socks4 proxy with -x, --proxy using a socks4:// protocol prefix.\n"
 , stdout);
  fputs(
+"              socks4a proxy with -x, --proxy using a socks4a:// protocol  pre-\n"
+"              fix.\n"
+"\n"
 "              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
 "              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
 "              such a case curl first connects to the SOCKS proxy and then con-\n"
@@ -2875,49 +2993,25 @@
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
-"              Added in 7.15.2.\n"
-"\n"
-"       --socks4a <host[:port]>\n"
 , stdout);
  fputs(
-"              Use the specified SOCKS4a proxy. If the port number is not spec-\n"
-"              ified, it is assumed at port 1080.\n"
-"\n"
-"              This  option  overrides any previous use of -x, --proxy, as they\n"
-"              are mutually exclusive.\n"
-"\n"
-"              Since 7.21.7, this option is superfluous since you can specify a\n"
-"              socks4a  proxy with -x, --proxy using a socks4a:// protocol pre-\n"
-"              fix.\n"
-"\n"
-, stdout);
- fputs(
-"              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
-"              such a case curl first connects to the SOCKS proxy and then con-\n"
-"              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
-"\n"
-"              If this option is used several times, the last one will be used.\n"
-"\n"
 "              Added in 7.18.0.\n"
 "\n"
 "       --socks5-basic\n"
-, stdout);
- fputs(
 "              Tells curl to use username/password authentication when connect-\n"
-"              ing to a SOCKS5 proxy.  The username/password authentication  is\n"
+"              ing  to a SOCKS5 proxy.  The username/password authentication is\n"
 "              enabled  by  default.   Use  --socks5-gssapi  to  force  GSS-API\n"
 "              authentication to SOCKS5 proxies.\n"
 "\n"
 "              Added in 7.55.0.\n"
 "\n"
 "       --socks5-gssapi-nec\n"
-"              As part of the GSS-API negotiation a protection mode is  negoti-\n"
+"              As  part of the GSS-API negotiation a protection mode is negoti-\n"
 , stdout);
  fputs(
-"              ated.  RFC  1961 says in section 4.3/4.4 it should be protected,\n"
-"              but the NEC  reference  implementation  does  not.   The  option\n"
-"              --socks5-gssapi-nec  allows the unprotected exchange of the pro-\n"
+"              ated. RFC 1961 says in section 4.3/4.4 it should  be  protected,\n"
+"              but  the  NEC  reference  implementation  does  not.  The option\n"
+"              --socks5-gssapi-nec allows the unprotected exchange of the  pro-\n"
 "              tection mode negotiation.\n"
 "\n"
 "              Added in 7.19.4.\n"
@@ -2928,31 +3022,31 @@
 "\n"
 , stdout);
  fputs(
-"              Examples:   --socks5  proxy-name  --socks5-gssapi-service  sockd\n"
-"              would use sockd/proxy-name --socks5 proxy-name  --socks5-gssapi-\n"
-"              service  sockd/real-name  would  use  sockd/real-name  for cases\n"
+"              Examples:  --socks5  proxy-name  --socks5-gssapi-service   sockd\n"
+"              would  use sockd/proxy-name --socks5 proxy-name --socks5-gssapi-\n"
+"              service sockd/real-name  would  use  sockd/real-name  for  cases\n"
 "              where the proxy-name does not match the principal name.\n"
 "\n"
 "              Added in 7.19.4.\n"
 "\n"
 "       --socks5-gssapi\n"
-"              Tells curl to use GSS-API authentication when  connecting  to  a\n"
+"              Tells  curl  to  use GSS-API authentication when connecting to a\n"
 , stdout);
  fputs(
-"              SOCKS5  proxy.  The GSS-API authentication is enabled by default\n"
-"              (if curl is compiled with GSS-API support).  Use  --socks5-basic\n"
+"              SOCKS5 proxy.  The GSS-API authentication is enabled by  default\n"
+"              (if  curl is compiled with GSS-API support).  Use --socks5-basic\n"
 "              to force username/password authentication to SOCKS5 proxies.\n"
 "\n"
 "              Added in 7.55.0.\n"
 "\n"
 "       --socks5-hostname <host[:port]>\n"
-"              Use  the  specified  SOCKS5 proxy (and let the proxy resolve the\n"
-"              host name). If the port number is not specified, it  is  assumed\n"
+"              Use the specified SOCKS5 proxy (and let the  proxy  resolve  the\n"
+"              host  name).  If the port number is not specified, it is assumed\n"
 "              at port 1080.\n"
 "\n"
 , stdout);
  fputs(
-"              This  option  overrides any previous use of -x, --proxy, as they\n"
+"              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
@@ -2960,7 +3054,7 @@
 "              col prefix.\n"
 "\n"
 "              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
+"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
 , stdout);
  fputs(
 "              such a case curl first connects to the SOCKS proxy and then con-\n"
@@ -2971,26 +3065,26 @@
 "              Added in 7.18.0.\n"
 "\n"
 "       --socks5 <host[:port]>\n"
-"              Use  the  specified  SOCKS5  proxy  -  but resolve the host name\n"
-"              locally. If the port number is not specified, it is  assumed  at\n"
+"              Use the specified SOCKS5 proxy  -  but  resolve  the  host  name\n"
+"              locally.  If  the port number is not specified, it is assumed at\n"
 "              port 1080.\n"
 "\n"
 , stdout);
  fputs(
-"              This  option  overrides any previous use of -x, --proxy, as they\n"
+"              This option overrides any previous use of -x, --proxy,  as  they\n"
 "              are mutually exclusive.\n"
 "\n"
 "              Since 7.21.7, this option is superfluous since you can specify a\n"
 "              socks5 proxy with -x, --proxy using a socks5:// protocol prefix.\n"
 "              Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at\n"
-"              the same time -x, --proxy is used with an HTTP/HTTPS  proxy.  In\n"
+"              the  same  time -x, --proxy is used with an HTTP/HTTPS proxy. In\n"
 , stdout);
  fputs(
 "              such a case curl first connects to the SOCKS proxy and then con-\n"
 "              nects (through SOCKS) to the HTTP or HTTPS proxy.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
-"              This option (as well as --socks4) does not work with IPV6,  FTPS\n"
+"              This  option (as well as --socks4) does not work with IPV6, FTPS\n"
 "              or LDAP.\n"
 "\n"
 "              Added in 7.18.0.\n"
@@ -2999,7 +3093,7 @@
 "              If a download is slower than this given speed (in bytes per sec-\n"
 , stdout);
  fputs(
-"              ond) for speed-time seconds it gets aborted. speed-time  is  set\n"
+"              ond)  for  speed-time seconds it gets aborted. speed-time is set\n"
 "              with -y, --speed-time and is 30 if not set.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -3007,23 +3101,23 @@
 "       -y, --speed-time <seconds>\n"
 "              If a download is slower than speed-limit bytes per second during\n"
 "              a speed-time period, the download gets aborted. If speed-time is\n"
-"              used,  the  default  speed-limit  will  be 1 unless set with -Y,\n"
+"              used, the default speed-limit will be  1  unless  set  with  -Y,\n"
 , stdout);
  fputs(
 "              --speed-limit.\n"
 "\n"
-"              This option controls transfers and thus  will  not  affect  slow\n"
-"              connects  etc.  If this is a concern for you, try the --connect-\n"
+"              This  option  controls  transfers  and thus will not affect slow\n"
+"              connects etc. If this is a concern for you, try  the  --connect-\n"
 "              timeout option.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --ssl-allow-beast\n"
 "              This option tells curl to not work around a security flaw in the\n"
-"              SSL3  and TLS1.0 protocols known as BEAST.  If this option isn't\n"
+"              SSL3 and TLS1.0 protocols known as BEAST.  If this option  isn't\n"
 , stdout);
  fputs(
-"              used, the SSL layer may use workarounds known to cause  interop-\n"
+"              used,  the SSL layer may use workarounds known to cause interop-\n"
 "              erability problems with some older SSL implementations. WARNING:\n"
 "              this option loosens the SSL security, and by using this flag you\n"
 "              ask for exactly that.\n"
@@ -3031,7 +3125,7 @@
 "              Added in 7.25.0.\n"
 "\n"
 "       --ssl-no-revoke\n"
-"              (WinSSL)  This  option tells curl to disable certificate revoca-\n"
+"              (WinSSL) This option tells curl to disable  certificate  revoca-\n"
 "              tion checks.  WARNING: this option loosens the SSL security, and\n"
 , stdout);
  fputs(
@@ -3047,15 +3141,15 @@
 "\n"
 "              Added in 7.20.0.\n"
 "\n"
-"       --ssl  (FTP IMAP POP3 SMTP) Try to  use  SSL/TLS  for  the  connection.\n"
+"       --ssl  (FTP  IMAP  POP3  SMTP)  Try  to use SSL/TLS for the connection.\n"
 , stdout);
  fputs(
 "              Reverts to a non-secure connection if the server doesn't support\n"
-"              SSL/TLS.  See also --ftp-ssl-control and --ssl-reqd for  differ-\n"
+"              SSL/TLS.   See also --ftp-ssl-control and --ssl-reqd for differ-\n"
 "              ent levels of encryption required.\n"
 "\n"
-"              This  option  was formerly known as --ftp-ssl (Added in 7.11.0).\n"
-"              That option name can still be used but  will  be  removed  in  a\n"
+"              This option was formerly known as --ftp-ssl (Added  in  7.11.0).\n"
+"              That  option  name  can  still  be used but will be removed in a\n"
 "              future version.\n"
 "\n"
 "              Added in 7.20.0.\n"
@@ -3063,29 +3157,29 @@
 "       -2, --sslv2\n"
 , stdout);
  fputs(
-"              (SSL)  Forces  curl to use SSL version 2 when negotiating with a\n"
-"              remote SSL server. Sometimes curl is built  without  SSLv2  sup-\n"
+"              (SSL) Forces curl to use SSL version 2 when negotiating  with  a\n"
+"              remote  SSL  server.  Sometimes curl is built without SSLv2 sup-\n"
 "              port. SSLv2 is widely considered insecure (see RFC 6176).\n"
 "\n"
-"              See  also  --http1.1  and --http2. -2, --sslv2 requires that the\n"
-"              underlying libcurl was built to support TLS. This  option  over-\n"
+"              See also --http1.1 and --http2. -2, --sslv2  requires  that  the\n"
+"              underlying  libcurl  was built to support TLS. This option over-\n"
 "              rides -3, --sslv3 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
 "\n"
 "       -3, --sslv3\n"
 , stdout);
  fputs(
-"              (SSL)  Forces  curl to use SSL version 3 when negotiating with a\n"
-"              remote SSL server. Sometimes curl is built  without  SSLv3  sup-\n"
+"              (SSL) Forces curl to use SSL version 3 when negotiating  with  a\n"
+"              remote  SSL  server.  Sometimes curl is built without SSLv3 sup-\n"
 "              port. SSLv3 is widely considered insecure (see RFC 7568).\n"
 "\n"
-"              See  also  --http1.1  and --http2. -3, --sslv3 requires that the\n"
-"              underlying libcurl was built to support TLS. This  option  over-\n"
+"              See also --http1.1 and --http2. -3, --sslv3  requires  that  the\n"
+"              underlying  libcurl  was built to support TLS. This option over-\n"
 "              rides -2, --sslv2 and -1, --tlsv1 and --tlsv1.1 and --tlsv1.2.\n"
 "\n"
 "       --stderr\n"
 , stdout);
  fputs(
-"              Redirect  all writes to stderr to the specified file instead. If\n"
+"              Redirect all writes to stderr to the specified file instead.  If\n"
 "              the file name is a plain '-', it is instead written to stdout.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
@@ -3093,12 +3187,12 @@
 "              See also -v, --verbose and -s, --silent.\n"
 "\n"
 "       --suppress-connect-headers\n"
-"              When -p, --proxytunnel is used and a  CONNECT  request  is  made\n"
-"              don't  output  proxy  CONNECT  response  headers. This option is\n"
+"              When  -p,  --proxytunnel  is  used and a CONNECT request is made\n"
+"              don't output proxy CONNECT  response  headers.  This  option  is\n"
 , stdout);
  fputs(
-"              meant to be used with -D, --dump-header or -i,  --include  which\n"
-"              are  used  to  show  protocol  headers  in the output. It has no\n"
+"              meant  to  be used with -D, --dump-header or -i, --include which\n"
+"              are used to show protocol headers  in  the  output.  It  has  no\n"
 "              effect on debug options such as -v, --verbose or --trace, or any\n"
 "              statistics.\n"
 "\n"
@@ -3113,10 +3207,10 @@
 "       --tcp-nodelay\n"
 , stdout);
  fputs(
-"              Turn on the TCP_NODELAY option. See the curl_easy_setopt(3)  man\n"
+"              Turn  on the TCP_NODELAY option. See the curl_easy_setopt(3) man\n"
 "              page for details about this option.\n"
 "\n"
-"              Since  7.50.2,  curl sets this option by default and you need to\n"
+"              Since 7.50.2, curl sets this option by default and you  need  to\n"
 "              explicitly switch it off if you don't want it on.\n"
 "\n"
 "              Added in 7.11.2.\n"
@@ -3146,33 +3240,33 @@
 "       --tftp-no-options\n"
 "              (TFTP) Tells curl not to send TFTP options requests.\n"
 "\n"
-"              This option improves interop with some legacy  servers  that  do\n"
-"              not  acknowledge  or  properly implement TFTP options. When this\n"
+"              This  option  improves  interop with some legacy servers that do\n"
+"              not acknowledge or properly implement TFTP  options.  When  this\n"
 "              option is used --tftp-blksize is ignored.\n"
 "\n"
 "              Added in 7.48.0.\n"
 "\n"
 "       -z, --time-cond <time>\n"
-"              (HTTP FTP) Request a file that has been modified later than  the\n"
+"              (HTTP  FTP) Request a file that has been modified later than the\n"
 , stdout);
  fputs(
-"              given  time  and date, or one that has been modified before that\n"
-"              time. The <date expression> can be all sorts of date strings  or\n"
+"              given time and date, or one that has been modified  before  that\n"
+"              time.  The <date expression> can be all sorts of date strings or\n"
 "              if it doesn't match any internal ones, it is taken as a filename\n"
-"              and tries to get  the  modification  date  (mtime)  from  <file>\n"
-"              instead.  See  the curl_getdate(3) man pages for date expression\n"
+"              and  tries  to  get  the  modification  date (mtime) from <file>\n"
+"              instead. See the curl_getdate(3) man pages for  date  expression\n"
 "              details.\n"
 "\n"
 "              Start the date expression with a dash (-) to make it request for\n"
 , stdout);
  fputs(
-"              a  document that is older than the given date/time, default is a\n"
+"              a document that is older than the given date/time, default is  a\n"
 "              document that is newer than the specified date/time.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --tls-max <VERSION>\n"
-"              (SSL) VERSION defines maximum supported TLS version.  A  minimum\n"
+"              (SSL)  VERSION  defines maximum supported TLS version. A minimum\n"
 "              is defined by arguments tlsv1.0 or tlsv1.1 or tlsv1.2.\n"
 "\n"
 "              default\n"
@@ -3189,113 +3283,115 @@
 "       the underlying libcurl was built to support TLS. Added in 7.54.0.\n"
 "\n"
 "       --tlsauthtype <type>\n"
-"              Set TLS  authentication  type.  Currently,  the  only  supported\n"
-"              option  is  \"SRP\",  for  TLS-SRP  (RFC  5054).  If --tlsuser and\n"
+"              Set  TLS  authentication  type.  Currently,  the  only supported\n"
+"              option is \"SRP\",  for  TLS-SRP  (RFC  5054).  If  --tlsuser  and\n"
 , stdout);
  fputs(
-"              --tlspassword are specified but --tlsauthtype is not, then  this\n"
-"              option defaults to \"SRP\".\n"
+"              --tlspassword  are specified but --tlsauthtype is not, then this\n"
+"              option defaults to \"SRP\".  This option works only if the  under-\n"
+"              lying  libcurl  is  built  with  TLS-SRP support, which requires\n"
+"              OpenSSL or GnuTLS with TLS-SRP support.\n"
 "\n"
 "              Added in 7.21.4.\n"
 "\n"
 "       --tlspassword\n"
-"              Set  password  for use with the TLS authentication method speci-\n"
+"              Set password for use with the TLS authentication  method  speci-\n"
 "              fied with --tlsauthtype. Requires that --tlsuser also be set.\n"
+, stdout);
+ fputs(
 "\n"
 "              Added in 7.21.4.\n"
 "       --tlsuser <name>\n"
-"              Set username for use with the TLS authentication  method  speci-\n"
-, stdout);
- fputs(
-"              fied  with  --tlsauthtype.  Requires  that --tlspassword also is\n"
+"              Set  username  for use with the TLS authentication method speci-\n"
+"              fied with --tlsauthtype. Requires  that  --tlspassword  also  is\n"
 "              set.\n"
 "\n"
 "              Added in 7.21.4.\n"
 "\n"
 "       --tlsv1.0\n"
-"              (TLS) Forces curl to use TLS version 1.0 when  connecting  to  a\n"
+"              (TLS)  Forces  curl  to use TLS version 1.0 when connecting to a\n"
 "              remote TLS server.\n"
 "\n"
 "              Added in 7.34.0.\n"
 "\n"
 "       --tlsv1.1\n"
-"              (TLS)  Forces  curl  to use TLS version 1.1 when connecting to a\n"
+, stdout);
+ fputs(
+"              (TLS) Forces curl to use TLS version 1.1 when  connecting  to  a\n"
 "              remote TLS server.\n"
 "\n"
 "              Added in 7.34.0.\n"
 "\n"
 "       --tlsv1.2\n"
-, stdout);
- fputs(
-"              (TLS) Forces curl to use TLS version 1.2 when  connecting  to  a\n"
+"              (TLS)  Forces  curl  to use TLS version 1.2 when connecting to a\n"
 "              remote TLS server.\n"
 "\n"
 "              Added in 7.34.0.\n"
 "\n"
 "       --tlsv1.3\n"
-"              (TLS)  Forces  curl  to use TLS version 1.3 when connecting to a\n"
+"              (TLS) Forces curl to use TLS version 1.3 when  connecting  to  a\n"
 "              remote TLS server.\n"
 "\n"
-"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
-"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
 , stdout);
  fputs(
+"              Note that TLS 1.3 is only supported by a subset of TLS backends.\n"
+"              At the time of this writing, they are BoringSSL, NSS, and Secure\n"
 "              Transport (on iOS 11 or later, and macOS 10.13 or later).\n"
 "\n"
 "              Added in 7.52.0.\n"
 "\n"
 "       -1, --tlsv1\n"
-"              (SSL) Tells curl to use TLS version 1.x when negotiating with  a\n"
+"              (SSL)  Tells curl to use TLS version 1.x when negotiating with a\n"
 "              remote TLS server. That means TLS version 1.0, 1.1 or 1.2.\n"
 "\n"
-"              See  also  --http1.1  and --http2. -1, --tlsv1 requires that the\n"
-"              underlying libcurl was built to support TLS. This  option  over-\n"
-"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
-"\n"
 , stdout);
  fputs(
+"              See also --http1.1 and --http2. -1, --tlsv1  requires  that  the\n"
+"              underlying  libcurl  was built to support TLS. This option over-\n"
+"              rides --tlsv1.1 and --tlsv1.2 and --tlsv1.3.\n"
+"\n"
 "       --tr-encoding\n"
 "              (HTTP) Request a compressed Transfer-Encoding response using one\n"
-"              of the algorithms curl supports, and uncompress the  data  while\n"
+"              of  the  algorithms curl supports, and uncompress the data while\n"
 "              receiving it.\n"
 "\n"
 "              Added in 7.21.6.\n"
 "\n"
 "       --trace-ascii <file>\n"
-"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
+, stdout);
+ fputs(
+"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
 "              including descriptive information, to the given output file. Use\n"
 "              \"-\" as filename to have the output sent to stdout.\n"
 "\n"
-, stdout);
- fputs(
 "              This is very similar to --trace, but leaves out the hex part and\n"
-"              only shows the ASCII part of the dump. It makes  smaller  output\n"
+"              only  shows  the ASCII part of the dump. It makes smaller output\n"
 "              that might be easier to read for untrained humans.\n"
 "\n"
+, stdout);
+ fputs(
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              This option overrides --trace and -v, --verbose.\n"
 "\n"
 "       --trace-time\n"
-"              Prepends  a  time  stamp to each trace or verbose line that curl\n"
+"              Prepends a time stamp to each trace or verbose  line  that  curl\n"
 "              displays.\n"
 "\n"
-, stdout);
- fputs(
 "              Added in 7.14.0.\n"
 "\n"
 "       --trace <file>\n"
-"              Enables a full trace dump of all  incoming  and  outgoing  data,\n"
+"              Enables  a  full  trace  dump of all incoming and outgoing data,\n"
 "              including descriptive information, to the given output file. Use\n"
-"              \"-\" as filename to have the output sent to stdout.  Use  \"%\"  as\n"
+, stdout);
+ fputs(
+"              \"-\"  as  filename  to have the output sent to stdout. Use \"%\" as\n"
 "              filename to have the output sent to stderr.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "              This option overrides -v, --verbose and --trace-ascii.\n"
 "\n"
-, stdout);
- fputs(
 "       --unix-socket <path>\n"
 "              (HTTP) Connect through this Unix domain socket, instead of using\n"
 "              the network.\n"
@@ -3303,182 +3399,182 @@
 "              Added in 7.40.0.\n"
 "\n"
 "       -T, --upload-file <file>\n"
-"              This transfers the specified local file to the  remote  URL.  If\n"
-"              there is no file part in the specified URL, curl will append the\n"
-"              local file name. NOTE that you must use a trailing / on the last\n"
 , stdout);
  fputs(
-"              directory  to really prove to Curl that there is no file name or\n"
+"              This  transfers  the  specified local file to the remote URL. If\n"
+"              there is no file part in the specified URL, curl will append the\n"
+"              local file name. NOTE that you must use a trailing / on the last\n"
+"              directory to really prove to Curl that there is no file name  or\n"
 "              curl will think that your last directory name is the remote file\n"
 "              name to use. That will most likely cause the upload operation to\n"
+, stdout);
+ fputs(
 "              fail. If this is used on an HTTP(S) server, the PUT command will\n"
 "              be used.\n"
 "\n"
-"              Use  the file name \"-\" (a single dash) to use stdin instead of a\n"
-"              given file.  Alternately, the file name \".\"  (a  single  period)\n"
-, stdout);
- fputs(
-"              may  be  specified  instead  of \"-\" to use stdin in non-blocking\n"
-"              mode to  allow  reading  server  output  while  stdin  is  being\n"
+"              Use the file name \"-\" (a single dash) to use stdin instead of  a\n"
+"              given  file.   Alternately,  the file name \".\" (a single period)\n"
+"              may be specified instead of \"-\" to  use  stdin  in  non-blocking\n"
+"              mode  to  allow  reading  server  output  while  stdin  is being\n"
 "              uploaded.\n"
 "\n"
-"              You  can  specify one -T, --upload-file for each URL on the com-\n"
-"              mand line. Each -T, --upload-file + URL pair specifies  what  to\n"
-"              upload  and  to  where. curl also supports \"globbing\" of the -T,\n"
 , stdout);
  fputs(
-"              --upload-file argument, meaning that  you  can  upload  multiple\n"
-"              files  to a single URL by using the same URL globbing style sup-\n"
+"              You can specify one -T, --upload-file for each URL on  the  com-\n"
+"              mand  line.  Each -T, --upload-file + URL pair specifies what to\n"
+"              upload and to where. curl also supports \"globbing\"  of  the  -T,\n"
+"              --upload-file  argument,  meaning  that  you can upload multiple\n"
+"              files to a single URL by using the same URL globbing style  sup-\n"
 "              ported in the URL, like this:\n"
 "\n"
+, stdout);
+ fputs(
 "               curl --upload-file \"{file1,file2}\" http://www.example.com\n"
 "\n"
 "              or even\n"
 "\n"
 "               curl -T \"img[1-1000].png\" ftp://ftp.example.com/upload/\n"
 "\n"
-"              When uploading to an SMTP server: the uploaded data  is  assumed\n"
-, stdout);
- fputs(
+"              When  uploading  to an SMTP server: the uploaded data is assumed\n"
 "              to be RFC 5322 formatted. It has to feature the necessary set of\n"
-"              headers and mail body formatted correctly by the  user  as  curl\n"
+"              headers  and  mail  body formatted correctly by the user as curl\n"
 "              will not transcode nor encode it further in any way.\n"
 "\n"
 "       --url <url>\n"
-"              Specify  a  URL  to  fetch. This option is mostly handy when you\n"
-"              want to specify URL(s) in a config file.\n"
-"\n"
-"              If the given URL is missing a scheme name (such as \"http://\"  or\n"
 , stdout);
  fputs(
-"              \"ftp://\"  etc) then curl will make a guess based on the host. If\n"
-"              the outermost sub-domain name matches  DICT,  FTP,  IMAP,  LDAP,\n"
-"              POP3  or  SMTP  then  that protocol will be used, otherwise HTTP\n"
+"              Specify a URL to fetch. This option is  mostly  handy  when  you\n"
+"              want to specify URL(s) in a config file.\n"
+"\n"
+"              If  the given URL is missing a scheme name (such as \"http://\" or\n"
+"              \"ftp://\" etc) then curl will make a guess based on the host.  If\n"
+"              the  outermost  sub-domain  name  matches DICT, FTP, IMAP, LDAP,\n"
+"              POP3 or SMTP then that protocol will  be  used,  otherwise  HTTP\n"
+, stdout);
+ fputs(
 "              will be used. Since 7.45.0 guessing can be disabled by setting a\n"
 "              default protocol, see --proto-default for details.\n"
 "\n"
-"              This  option  may  be used any number of times. To control where\n"
-, stdout);
- fputs(
-"              this URL is written, use the -o, --output or the  -O,  --remote-\n"
+"              This option may be used any number of times.  To  control  where\n"
+"              this  URL  is written, use the -o, --output or the -O, --remote-\n"
 "              name options.\n"
 "\n"
 "       -B, --use-ascii\n"
-"              (FTP  LDAP)  Enable  ASCII  transfer.  For FTP, this can also be\n"
-"              enforced by using a URL that ends with  \";type=A\".  This  option\n"
+"              (FTP LDAP) Enable ASCII transfer. For  FTP,  this  can  also  be\n"
+, stdout);
+ fputs(
+"              enforced  by  using  a URL that ends with \";type=A\". This option\n"
 "              causes data sent to stdout to be in text mode for win32 systems.\n"
 "\n"
 "       -A, --user-agent <name>\n"
 "              (HTTP) Specify the User-Agent string to send to the HTTP server.\n"
+"              To  encode blanks in the string, surround the string with single\n"
+"              quote marks. This header can also be set with the  -H,  --header\n"
+"              or the --proxy-header options.\n"
+"\n"
 , stdout);
  fputs(
-"              To encode blanks in the string, surround the string with  single\n"
-"              quote  marks.  This can also be set with the -H, --header option\n"
-"              of course.\n"
-"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -u, --user <user:password>\n"
 "              Specify the user name and password to use for server authentica-\n"
 "              tion. Overrides -n, --netrc and --netrc-optional.\n"
 "\n"
-, stdout);
- fputs(
-"              If  you  simply  specify  the  user name, curl will prompt for a\n"
+"              If you simply specify the user name,  curl  will  prompt  for  a\n"
 "              password.\n"
 "\n"
-"              The user name and passwords are split up  on  the  first  colon,\n"
-"              which  makes  it impossible to use a colon in the user name with\n"
+"              The  user  name  and  passwords are split up on the first colon,\n"
+, stdout);
+ fputs(
+"              which makes it impossible to use a colon in the user  name  with\n"
 "              this option. The password can, still.\n"
 "\n"
-"              When using Kerberos V5 with a Windows based  server  you  should\n"
-"              include  the  Windows domain name in the user name, in order for\n"
-, stdout);
- fputs(
-"              the server to successfully obtain  a  Kerberos  Ticket.  If  you\n"
+"              When  using  Kerberos  V5 with a Windows based server you should\n"
+"              include the Windows domain name in the user name, in  order  for\n"
+"              the  server  to  successfully  obtain  a Kerberos Ticket. If you\n"
 "              don't then the initial authentication handshake may fail.\n"
 "\n"
-"              When  using  NTLM,  the user name can be specified simply as the\n"
-"              user name, without the domain, if there is a single  domain  and\n"
-"              forest in your setup for example.\n"
-"\n"
-"              To  specify  the domain name use either Down-Level Logon Name or\n"
 , stdout);
  fputs(
+"              When using NTLM, the user name can be specified  simply  as  the\n"
+"              user  name,  without the domain, if there is a single domain and\n"
+"              forest in your setup for example.\n"
+"\n"
+"              To specify the domain name use either Down-Level Logon  Name  or\n"
 "              UPN (User Principal Name) formats. For example, EXAMPLE\\user and\n"
 "              user@example.com respectively.\n"
 "\n"
-"              If  you  use a Windows SSPI-enabled curl binary and perform Ker-\n"
-"              beros V5, Negotiate, NTLM or Digest authentication then you  can\n"
-"              tell  curl  to select the user name and password from your envi-\n"
-"              ronment by specifying a single colon with this option: \"-u :\".\n"
-"\n"
+"              If you use a Windows SSPI-enabled curl binary and  perform  Ker-\n"
 , stdout);
  fputs(
+"              beros  V5, Negotiate, NTLM or Digest authentication then you can\n"
+"              tell curl to select the user name and password from  your  envi-\n"
+"              ronment by specifying a single colon with this option: \"-u :\".\n"
+"\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       -v, --verbose\n"
-"              Makes curl verbose during the operation.  Useful  for  debugging\n"
-"              and  seeing  what's  going  on \"under the hood\". A line starting\n"
-"              with '>' means \"header data\" sent by  curl,  '<'  means  \"header\n"
-"              data\"  received  by  curl  that is hidden in normal cases, and a\n"
-"              line starting with '*' means additional info provided by curl.\n"
-"\n"
+"              Makes  curl  verbose  during the operation. Useful for debugging\n"
+"              and seeing what's going on \"under the  hood\".  A  line  starting\n"
 , stdout);
  fputs(
+"              with  '>'  means  \"header  data\" sent by curl, '<' means \"header\n"
+"              data\" received by curl that is hidden in  normal  cases,  and  a\n"
+"              line starting with '*' means additional info provided by curl.\n"
+"\n"
 "              If you only want HTTP headers in the output, -i, --include might\n"
 "              be the option you're looking for.\n"
 "\n"
-"              If  you think this option still doesn't give you enough details,\n"
+"              If you think this option still doesn't give you enough  details,\n"
+, stdout);
+ fputs(
 "              consider using --trace or --trace-ascii instead.\n"
 "\n"
 "              Use -s, --silent to make curl really quiet.\n"
 "\n"
-"              See also  -i,  --include.  This  option  overrides  --trace  and\n"
+"              See  also  -i,  --include.  This  option  overrides  --trace and\n"
 "              --trace-ascii.\n"
 "\n"
 "       -V, --version\n"
-, stdout);
- fputs(
 "              Displays information about curl and the libcurl version it uses.\n"
-"              The  first  line  includes the full version of curl, libcurl and\n"
+"              The first line includes the full version of  curl,  libcurl  and\n"
 "              other 3rd party libraries linked with the executable.\n"
 "\n"
-"              The second line (starts with \"Protocols:\") shows  all  protocols\n"
+, stdout);
+ fputs(
+"              The  second  line (starts with \"Protocols:\") shows all protocols\n"
 "              that libcurl reports to support.\n"
 "\n"
 "              The third line (starts with \"Features:\") shows specific features\n"
-, stdout);
- fputs(
 "              libcurl reports to offer. Available features include:\n"
 "\n"
 "              IPv6   You can use IPv6 with this.\n"
 "\n"
 "              krb4   Krb4 for FTP is supported.\n"
 "\n"
-"              SSL    SSL versions of various protocols are supported, such  as\n"
+"              SSL    SSL  versions of various protocols are supported, such as\n"
+, stdout);
+ fputs(
 "                     HTTPS, FTPS, POP3S and so on.\n"
 "\n"
-"              libz   Automatic  decompression of compressed files over HTTP is\n"
+"              libz   Automatic decompression of compressed files over HTTP  is\n"
 "                     supported.\n"
 "\n"
 "              NTLM   NTLM authentication is supported.\n"
 "\n"
-, stdout);
- fputs(
-"              Debug  This curl uses a libcurl built with Debug.  This  enables\n"
-"                     more  error-tracking  and memory debugging etc. For curl-\n"
+"              Debug  This  curl  uses a libcurl built with Debug. This enables\n"
+"                     more error-tracking and memory debugging etc.  For  curl-\n"
 "                     developers only!\n"
 "\n"
 "              AsynchDNS\n"
-"                     This curl uses asynchronous name  resolves.  Asynchronous\n"
-"                     name  resolves can be done using either the c-ares or the\n"
+, stdout);
+ fputs(
+"                     This  curl  uses asynchronous name resolves. Asynchronous\n"
+"                     name resolves can be done using either the c-ares or  the\n"
 "                     threaded resolver backends.\n"
 "\n"
 "              SPNEGO SPNEGO authentication is supported.\n"
 "\n"
-, stdout);
- fputs(
 "              Largefile\n"
 "                     This curl supports transfers of large files, files larger\n"
 "                     than 2GB.\n"
@@ -3486,16 +3582,16 @@
 "              IDN    This curl supports IDN - international domain names.\n"
 "\n"
 "              GSS-API\n"
+, stdout);
+ fputs(
 "                     GSS-API is supported.\n"
 "\n"
 "              SSPI   SSPI is supported.\n"
 "\n"
 "              TLS-SRP\n"
-"                     SRP  (Secure Remote Password) authentication is supported\n"
+"                     SRP (Secure Remote Password) authentication is  supported\n"
 "                     for TLS.\n"
 "\n"
-, stdout);
- fputs(
 "              HTTP2  HTTP/2 support has been built-in.\n"
 "\n"
 "              UnixSockets\n"
@@ -3505,122 +3601,122 @@
 "                     This curl is built to support HTTPS proxy.\n"
 "\n"
 "              Metalink\n"
-"                     This curl supports Metalink (both version 3  and  4  (RFC\n"
-"                     5854)),  which  describes  mirrors and hashes.  curl will\n"
-"                     use mirrors for failover if there are errors (such as the\n"
 , stdout);
  fputs(
+"                     This  curl  supports  Metalink (both version 3 and 4 (RFC\n"
+"                     5854)), which describes mirrors and  hashes.   curl  will\n"
+"                     use mirrors for failover if there are errors (such as the\n"
 "                     file or server not being available).\n"
 "\n"
-"              PSL    PSL  is  short for Public Suffix List and means that this\n"
-"                     curl has been built with  knowledge  about  \"public  suf-\n"
+"              PSL    PSL is short for Public Suffix List and means  that  this\n"
+"                     curl  has  been  built  with knowledge about \"public suf-\n"
 "                     fixes\".\n"
 "\n"
+, stdout);
+ fputs(
 "       -w, --write-out <format>\n"
 "              Make curl display information on stdout after a completed trans-\n"
-"              fer. The format is a string that may contain  plain  text  mixed\n"
-, stdout);
- fputs(
-"              with  any  number of variables. The format can be specified as a\n"
-"              literal \"string\", or you can have curl read the  format  from  a\n"
-"              file  with  \"@filename\" and to tell curl to read the format from\n"
+"              fer.  The  format  is a string that may contain plain text mixed\n"
+"              with any number of variables. The format can be specified  as  a\n"
+"              literal  \"string\",  or  you can have curl read the format from a\n"
+"              file with \"@filename\" and to tell curl to read the  format  from\n"
 "              stdin you write \"@-\".\n"
 "\n"
-"              The variables present in the output format will  be  substituted\n"
-"              by  the  value or text that curl thinks fit, as described below.\n"
 , stdout);
  fputs(
-"              All variables are specified as %{variable_name} and to output  a\n"
-"              normal  % you just write them as %%. You can output a newline by\n"
+"              The  variables  present in the output format will be substituted\n"
+"              by the value or text that curl thinks fit, as  described  below.\n"
+"              All  variables are specified as %{variable_name} and to output a\n"
+"              normal % you just write them as %%. You can output a newline  by\n"
 "              using \\n, a carriage return with \\r and a tab space with \\t.\n"
 "\n"
 "              NOTE: The %-symbol is a special symbol in the win32-environment,\n"
-"              where  all  occurrences  of  %  must  be doubled when using this\n"
+, stdout);
+ fputs(
+"              where all occurrences of %  must  be  doubled  when  using  this\n"
 "              option.\n"
 "\n"
 "              The variables available are:\n"
 "\n"
-, stdout);
- fputs(
-"              content_type   The Content-Type of the  requested  document,  if\n"
+"              content_type   The  Content-Type  of  the requested document, if\n"
 "                             there was any.\n"
 "\n"
 "              filename_effective\n"
-"                             The  ultimate  filename  that curl writes out to.\n"
-"                             This is only meaningful if curl is told to  write\n"
-"                             to  a  file  with  the  -O,  --remote-name or -o,\n"
-"                             --output option. It's most useful in  combination\n"
+"                             The ultimate filename that curl  writes  out  to.\n"
+"                             This  is only meaningful if curl is told to write\n"
 , stdout);
  fputs(
-"                             with  the -J, --remote-header-name option. (Added\n"
+"                             to a file  with  the  -O,  --remote-name  or  -o,\n"
+"                             --output  option. It's most useful in combination\n"
+"                             with the -J, --remote-header-name option.  (Added\n"
 "                             in 7.26.0)\n"
 "\n"
 "              ftp_entry_path The initial path curl ended up in when logging on\n"
 "                             to the remote FTP server. (Added in 7.15.4)\n"
 "\n"
-"              http_code      The numerical response code that was found in the\n"
-"                             last retrieved HTTP(S)  or  FTP(s)  transfer.  In\n"
 , stdout);
  fputs(
-"                             7.18.2  the alias response_code was added to show\n"
+"              http_code      The numerical response code that was found in the\n"
+"                             last  retrieved  HTTP(S)  or  FTP(s) transfer. In\n"
+"                             7.18.2 the alias response_code was added to  show\n"
 "                             the same info.\n"
 "\n"
-"              http_connect   The numerical code that was  found  in  the  last\n"
-"                             response   (from  a  proxy)  to  a  curl  CONNECT\n"
+"              http_connect   The  numerical  code  that  was found in the last\n"
+"                             response  (from  a  proxy)  to  a  curl   CONNECT\n"
 "                             request. (Added in 7.12.4)\n"
 "\n"
+, stdout);
+ fputs(
 "              http_version   The  http  version  that  was  effectively  used.\n"
 "                             (Added in 7.50.0)\n"
 "\n"
-, stdout);
- fputs(
-"              local_ip       The  IP  address  of  the  local  end of the most\n"
-"                             recently done connection - can be either IPv4  or\n"
+"              local_ip       The IP address of  the  local  end  of  the  most\n"
+"                             recently  done connection - can be either IPv4 or\n"
 "                             IPv6 (Added in 7.29.0)\n"
 "\n"
-"              local_port     The  local  port number of the most recently done\n"
+"              local_port     The local port number of the most  recently  done\n"
 "                             connection (Added in 7.29.0)\n"
 "\n"
-"              num_connects   Number of new connects made in the recent  trans-\n"
-"                             fer. (Added in 7.12.3)\n"
-"\n"
 , stdout);
  fputs(
-"              num_redirects  Number  of  redirects  that  were followed in the\n"
+"              num_connects   Number  of new connects made in the recent trans-\n"
+"                             fer. (Added in 7.12.3)\n"
+"\n"
+"              num_redirects  Number of redirects that  were  followed  in  the\n"
 "                             request. (Added in 7.12.3)\n"
 "\n"
 "              proxy_ssl_verify_result\n"
 "                             The result of the HTTPS proxy's SSL peer certifi-\n"
 "                             cate verification that was requested. 0 means the\n"
+, stdout);
+ fputs(
 "                             verification was successful. (Added in 7.52.0)\n"
 "\n"
 "              redirect_url   When an HTTP request was made without -L, --loca-\n"
-, stdout);
- fputs(
-"                             tion  to follow redirects (or when --max-redir is\n"
-"                             met), this variable will show the  actual  URL  a\n"
+"                             tion to follow redirects (or when --max-redir  is\n"
+"                             met),  this  variable  will show the actual URL a\n"
 "                             redirect would have gone to. (Added in 7.18.2)\n"
 "\n"
-"              remote_ip      The  remote  IP address of the most recently done\n"
+"              remote_ip      The remote IP address of the most  recently  done\n"
+, stdout);
+ fputs(
 "                             connection - can be either IPv4 or IPv6 (Added in\n"
 "                             7.29.0)\n"
 "\n"
-, stdout);
- fputs(
-"              remote_port    The  remote port number of the most recently done\n"
+"              remote_port    The remote port number of the most recently  done\n"
 "                             connection (Added in 7.29.0)\n"
 "\n"
-"              scheme         The URL scheme (sometimes called  protocol)  that\n"
+"              scheme         The  URL  scheme (sometimes called protocol) that\n"
 "                             was effectively used (Added in 7.52.0)\n"
 "\n"
 "              size_download  The total amount of bytes that were downloaded.\n"
 "\n"
+, stdout);
+ fputs(
 "              size_header    The total amount of bytes of the downloaded head-\n"
 "                             ers.\n"
 "\n"
-, stdout);
- fputs(
-"              size_request   The total amount of bytes that were sent  in  the\n"
+"              size_request   The  total  amount of bytes that were sent in the\n"
 "                             HTTP request.\n"
 "\n"
 "              size_upload    The total amount of bytes that were uploaded.\n"
@@ -3628,77 +3724,77 @@
 "              speed_download The average download speed that curl measured for\n"
 "                             the complete download. Bytes per second.\n"
 "\n"
-"              speed_upload   The average upload speed that curl  measured  for\n"
-"                             the complete upload. Bytes per second.\n"
-"\n"
 , stdout);
  fputs(
+"              speed_upload   The  average  upload speed that curl measured for\n"
+"                             the complete upload. Bytes per second.\n"
+"\n"
 "              ssl_verify_result\n"
-"                             The  result of the SSL peer certificate verifica-\n"
+"                             The result of the SSL peer certificate  verifica-\n"
 "                             tion that was requested. 0 means the verification\n"
 "                             was successful. (Added in 7.19.0)\n"
 "\n"
 "              time_appconnect\n"
-"                             The  time,  in  seconds,  it  took from the start\n"
-"                             until the SSL/SSH/etc  connect/handshake  to  the\n"
-, stdout);
- fputs(
-"                             remote host was completed. (Added in 7.19.0)\n"
-"\n"
-"              time_connect   The  time,  in  seconds,  it  took from the start\n"
-"                             until the TCP connect  to  the  remote  host  (or\n"
-"                             proxy) was completed.\n"
-"\n"
-"              time_namelookup\n"
-"                             The  time,  in  seconds,  it  took from the start\n"
-"                             until the name resolving was completed.\n"
-"\n"
-"              time_pretransfer\n"
 , stdout);
  fputs(
 "                             The time, in seconds,  it  took  from  the  start\n"
-"                             until  the file transfer was just about to begin.\n"
+"                             until  the  SSL/SSH/etc  connect/handshake to the\n"
+"                             remote host was completed. (Added in 7.19.0)\n"
+"\n"
+"              time_connect   The time, in seconds,  it  took  from  the  start\n"
+"                             until  the  TCP  connect  to  the remote host (or\n"
+"                             proxy) was completed.\n"
+"\n"
+"              time_namelookup\n"
+, stdout);
+ fputs(
+"                             The time, in seconds,  it  took  from  the  start\n"
+"                             until the name resolving was completed.\n"
+"\n"
+"              time_pretransfer\n"
+"                             The  time,  in  seconds,  it  took from the start\n"
+"                             until the file transfer was just about to  begin.\n"
 "                             This includes all pre-transfer commands and nego-\n"
 "                             tiations that are specific to the particular pro-\n"
+, stdout);
+ fputs(
 "                             tocol(s) involved.\n"
 "\n"
 "              time_redirect  The time, in seconds, it took for all redirection\n"
-, stdout);
- fputs(
 "                             steps including name lookup, connect, pretransfer\n"
-"                             and transfer before  the  final  transaction  was\n"
-"                             started.  time_redirect shows the complete execu-\n"
-"                             tion time for multiple  redirections.  (Added  in\n"
+"                             and  transfer  before  the  final transaction was\n"
+"                             started. time_redirect shows the complete  execu-\n"
+"                             tion  time  for  multiple redirections. (Added in\n"
 "                             7.12.3)\n"
 "\n"
-"              time_starttransfer\n"
-"                             The  time,  in  seconds,  it  took from the start\n"
 , stdout);
  fputs(
-"                             until the first byte was just about to be  trans-\n"
-"                             ferred.  This  includes time_pretransfer and also\n"
-"                             the time  the  server  needed  to  calculate  the\n"
+"              time_starttransfer\n"
+"                             The time, in seconds,  it  took  from  the  start\n"
+"                             until  the first byte was just about to be trans-\n"
+"                             ferred. This includes time_pretransfer  and  also\n"
+"                             the  time  the  server  needed  to  calculate the\n"
 "                             result.\n"
 "\n"
-"              time_total     The  total time, in seconds, that the full opera-\n"
+"              time_total     The total time, in seconds, that the full  opera-\n"
+, stdout);
+ fputs(
 "                             tion lasted.\n"
 "\n"
 "              url_effective  The URL that was fetched last. This is most mean-\n"
-, stdout);
- fputs(
-"                             ingful  if  you've  told curl to follow location:\n"
+"                             ingful if you've told curl  to  follow  location:\n"
 "                             headers.\n"
 "\n"
 "              If this option is used several times, the last one will be used.\n"
 "\n"
 "       --xattr\n"
-"              When saving output to a file, this option tells  curl  to  store\n"
-"              certain  file  metadata  in extended file attributes. Currently,\n"
-"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
+"              When  saving  output  to a file, this option tells curl to store\n"
+"              certain file metadata in extended  file  attributes.  Currently,\n"
 , stdout);
  fputs(
-"              the  content  type  is stored in the mime_type attribute. If the\n"
-"              file system does not support extended attributes, a  warning  is\n"
+"              the URL is stored in the xdg.origin.url attribute and, for HTTP,\n"
+"              the content type is stored in the mime_type  attribute.  If  the\n"
+"              file  system  does not support extended attributes, a warning is\n"
 "              issued.\n"
 "\n"
 "FILES\n"
@@ -3707,12 +3803,12 @@
 "\n"
 "ENVIRONMENT\n"
 "       The environment variables can be specified in lower case or upper case.\n"
+, stdout);
+ fputs(
 "       The lower case version has precedence. http_proxy is an exception as it\n"
 "       is only available in lower case.\n"
 "\n"
-, stdout);
- fputs(
-"       Using  an  environment variable to set the proxy has the same effect as\n"
+"       Using an environment variable to set the proxy has the same  effect  as\n"
 "       using the -x, --proxy option.\n"
 "\n"
 "       http_proxy [protocol://]<host>[:port]\n"
@@ -3721,53 +3817,60 @@
 "              Sets the proxy server to use for HTTPS.\n"
 "\n"
 "       [url-protocol]_PROXY [protocol://]<host>[:port]\n"
-"              Sets the proxy server to use for [url-protocol], where the  pro-\n"
 , stdout);
  fputs(
-"              tocol  is  a  protocol  that curl supports and as specified in a\n"
+"              Sets  the proxy server to use for [url-protocol], where the pro-\n"
+"              tocol is a protocol that curl supports and  as  specified  in  a\n"
 "              URL. FTP, FTPS, POP3, IMAP, SMTP, LDAP etc.\n"
 "\n"
 "       ALL_PROXY [protocol://]<host>[:port]\n"
-"              Sets the proxy server to use if no  protocol-specific  proxy  is\n"
+"              Sets  the  proxy  server to use if no protocol-specific proxy is\n"
 "              set.\n"
 "\n"
 "       NO_PROXY <comma-separated list of hosts>\n"
-"              list  of  host names that shouldn't go through any proxy. If set\n"
-"              to a asterisk '*' only, it matches all hosts.\n"
-"\n"
+"              list of host names that shouldn't go through any proxy.  If  set\n"
 , stdout);
  fputs(
-"              Since 7.53.0, this environment variable disable the  proxy  even\n"
-"              if  specify  -x,  --proxy  option. That is NO_PROXY=direct.exam-\n"
-"              ple.com  curl  -x  http://proxy.example.com  http://direct.exam-\n"
-"              ple.com     accesses    the    target    URL    directly,    and\n"
-"              NO_PROXY=direct.example.com  curl  -x   http://proxy.example.com\n"
-"              http://somewhere.example.com  accesses  the  target  URL through\n"
+"              to an asterisk '*' only, it matches all hosts.\n"
+"\n"
+"              This  environment  variable  disables use of the proxy even when\n"
+"              specified   with   the   -x,    --proxy    option.    That    is\n"
+"              NO_PROXY=direct.example.com   curl  -x  http://proxy.example.com\n"
+"              http://direct.example.com accesses the target URL directly,  and\n"
+"              NO_PROXY=direct.example.com   curl  -x  http://proxy.example.com\n"
+, stdout);
+ fputs(
+"              http://somewhere.example.com accesses the target URL through the\n"
 "              proxy.\n"
 "\n"
-, stdout);
- fputs(
+"              The  list  of  host  names  can  also  be  include  numerical IP\n"
+"              addresses, and  IPv6  versions  should  then  be  given  without\n"
+"              enclosing brackets.\n"
+"\n"
 "PROXY PROTOCOL PREFIXES\n"
-"       Since curl version 7.21.7, the proxy string may  be  specified  with  a\n"
+"       Since  curl  version  7.21.7,  the proxy string may be specified with a\n"
 "       protocol:// prefix to specify alternative proxy protocols.\n"
 "\n"
-"       If  no  protocol  is  specified  in  the  proxy string or if the string\n"
-"       doesn't match a supported one, the proxy will be  treated  as  an  HTTP\n"
+, stdout);
+ fputs(
+"       If no protocol is specified in  the  proxy  string  or  if  the  string\n"
+"       doesn't  match  a  supported  one, the proxy will be treated as an HTTP\n"
 "       proxy.\n"
 "\n"
 "       The supported proxy protocol prefixes are as follows:\n"
 "\n"
 "       http://\n"
-"              Makes it use it as a HTTP proxy. The default if no scheme prefix\n"
-, stdout);
- fputs(
-"              is used.\n"
+"              Makes it use it as an HTTP proxy. The default if no scheme  pre-\n"
+"              fix is used.\n"
+"\n"
 "       https://\n"
-"              Makes it treated as a HTTPS proxy.\n"
+"              Makes it treated as an HTTPS proxy.\n"
 "\n"
 "       socks4://\n"
 "              Makes it the equivalent of --socks4\n"
 "\n"
+, stdout);
+ fputs(
 "       socks4a://\n"
 "              Makes it the equivalent of --socks4a\n"
 "\n"
@@ -3778,12 +3881,12 @@
 "              Makes it the equivalent of --socks5-hostname\n"
 "\n"
 "EXIT CODES\n"
-"       There are a bunch of different  error  codes  and  their  corresponding\n"
-, stdout);
- fputs(
-"       error  messages  that  may appear during bad conditions. At the time of\n"
+"       There  are  a  bunch  of  different error codes and their corresponding\n"
+"       error messages that may appear during bad conditions. At  the  time  of\n"
 "       this writing, the exit codes are:\n"
 "\n"
+, stdout);
+ fputs(
 "       1      Unsupported protocol. This build of curl has no support for this\n"
 "              protocol.\n"
 "\n"
@@ -3791,14 +3894,14 @@
 "\n"
 "       3      URL malformed. The syntax was not correct.\n"
 "\n"
-"       4      A  feature  or  option  that  was  needed to perform the desired\n"
-"              request was not enabled or was  explicitly  disabled  at  build-\n"
-, stdout);
- fputs(
-"              time.  To  make  curl able to do this, you probably need another\n"
+"       4      A feature or option that  was  needed  to  perform  the  desired\n"
+"              request  was  not  enabled  or was explicitly disabled at build-\n"
+"              time. To make curl able to do this, you  probably  need  another\n"
 "              build of libcurl!\n"
 "\n"
-"       5      Couldn't resolve proxy.  The  given  proxy  host  could  not  be\n"
+, stdout);
+ fputs(
+"       5      Couldn't  resolve  proxy.  The  given  proxy  host  could not be\n"
 "              resolved.\n"
 "\n"
 "       6      Couldn't resolve host. The given remote host was not resolved.\n"
@@ -3807,32 +3910,32 @@
 "\n"
 "       8      Weird server reply. The server sent data curl couldn't parse.\n"
 "\n"
-"       9      FTP  access  denied. The server denied login or denied access to\n"
+"       9      FTP access denied. The server denied login or denied  access  to\n"
+"              the  particular  resource or directory you wanted to reach. Most\n"
 , stdout);
  fputs(
-"              the particular resource or directory you wanted to  reach.  Most\n"
-"              often  you  tried to change to a directory that doesn't exist on\n"
+"              often you tried to change to a directory that doesn't  exist  on\n"
 "              the server.\n"
 "\n"
-"       10     FTP accept failed. While waiting for the server to connect  back\n"
-"              when  an active FTP session is used, an error code was sent over\n"
+"       10     FTP  accept failed. While waiting for the server to connect back\n"
+"              when an active FTP session is used, an error code was sent  over\n"
 "              the control connection or similar.\n"
 "\n"
-"       11     FTP weird PASS reply. Curl couldn't parse the reply sent to  the\n"
+"       11     FTP  weird PASS reply. Curl couldn't parse the reply sent to the\n"
 "              PASS request.\n"
+"\n"
 , stdout);
  fputs(
-"\n"
-"       12     During  an  active  FTP  session while waiting for the server to\n"
+"       12     During an active FTP session while waiting  for  the  server  to\n"
 "              connect back to curl, the timeout expired.\n"
 "\n"
-"       13     FTP weird PASV reply, Curl couldn't parse the reply sent to  the\n"
+"       13     FTP  weird PASV reply, Curl couldn't parse the reply sent to the\n"
 "              PASV request.\n"
 "\n"
-"       14     FTP  weird  227  format.  Curl  couldn't  parse the 227-line the\n"
+"       14     FTP weird 227 format.  Curl  couldn't  parse  the  227-line  the\n"
 "              server sent.\n"
 "\n"
-"       15     FTP can't get host. Couldn't resolve the host IP we got  in  the\n"
+"       15     FTP  can't  get host. Couldn't resolve the host IP we got in the\n"
 "              227-line.\n"
 "\n"
 , stdout);
@@ -3841,25 +3944,25 @@
 "              This is somewhat generic and can be one out of several problems,\n"
 "              see the error message for details.\n"
 "\n"
-"       17     FTP  couldn't  set  binary.  Couldn't  change transfer method to\n"
+"       17     FTP couldn't set binary.  Couldn't  change  transfer  method  to\n"
 "              binary.\n"
 "\n"
 "       18     Partial file. Only a part of the file was transferred.\n"
 "\n"
-"       19     FTP couldn't download/access the given file, the RETR (or  simi-\n"
+"       19     FTP  couldn't download/access the given file, the RETR (or simi-\n"
 "              lar) command failed.\n"
 "\n"
 , stdout);
  fputs(
 "       21     FTP quote error. A quote command returned error from the server.\n"
-"       22     HTTP  page  not  retrieved.  The  requested url was not found or\n"
-"              returned another error with the HTTP error  code  being  400  or\n"
+"       22     HTTP page not retrieved. The requested  url  was  not  found  or\n"
+"              returned  another  error  with  the HTTP error code being 400 or\n"
 "              above. This return code only appears if -f, --fail is used.\n"
 "\n"
-"       23     Write  error.  Curl couldn't write data to a local filesystem or\n"
+"       23     Write error. Curl couldn't write data to a local  filesystem  or\n"
 "              similar.\n"
 "\n"
-"       25     FTP couldn't STOR file. The server denied  the  STOR  operation,\n"
+"       25     FTP  couldn't  STOR  file. The server denied the STOR operation,\n"
 , stdout);
  fputs(
 "              used for FTP uploading.\n"
@@ -3868,16 +3971,16 @@
 "\n"
 "       27     Out of memory. A memory allocation request failed.\n"
 "\n"
-"       28     Operation  timeout.  The  specified  time-out period was reached\n"
+"       28     Operation timeout. The specified  time-out  period  was  reached\n"
 "              according to the conditions.\n"
 "\n"
-"       30     FTP PORT failed. The PORT command failed. Not  all  FTP  servers\n"
-"              support  the  PORT  command,  try  doing  a  transfer using PASV\n"
+"       30     FTP  PORT  failed.  The PORT command failed. Not all FTP servers\n"
+"              support the PORT  command,  try  doing  a  transfer  using  PASV\n"
 "              instead!\n"
 "\n"
 , stdout);
  fputs(
-"       31     FTP couldn't use REST. The REST command failed. This command  is\n"
+"       31     FTP  couldn't use REST. The REST command failed. This command is\n"
 "              used for resumed FTP transfers.\n"
 "\n"
 "       33     HTTP range error. The range \"command\" didn't work.\n"
@@ -3886,7 +3989,7 @@
 "\n"
 "       35     SSL connect error. The SSL handshaking failed.\n"
 "\n"
-"       36     Bad  download resume. Couldn't continue an earlier aborted down-\n"
+"       36     Bad download resume. Couldn't continue an earlier aborted  down-\n"
 "              load.\n"
 "\n"
 , stdout);
@@ -3906,14 +4009,14 @@
 "\n"
 , stdout);
  fputs(
-"       45     Interface  error.  A  specified  outgoing interface could not be\n"
+"       45     Interface error. A specified outgoing  interface  could  not  be\n"
 "              used.\n"
 "\n"
 "       47     Too many redirects. When following redirects, curl hit the maxi-\n"
 "              mum amount.\n"
 "\n"
-"       48     Unknown  option  specified  to  libcurl. This indicates that you\n"
-"              passed a weird option to curl that was passed on to libcurl  and\n"
+"       48     Unknown option specified to libcurl.  This  indicates  that  you\n"
+"              passed  a weird option to curl that was passed on to libcurl and\n"
 "              rejected. Read up in the manual!\n"
 "\n"
 "       49     Malformed telnet option.\n"
@@ -3922,7 +4025,7 @@
  fputs(
 "       51     The peer's SSL certificate or SSH MD5 fingerprint was not OK.\n"
 "\n"
-"       52     The  server  didn't  reply anything, which here is considered an\n"
+"       52     The server didn't reply anything, which here  is  considered  an\n"
 "              error.\n"
 "\n"
 "       53     SSL crypto engine not found.\n"
@@ -3939,7 +4042,7 @@
 "\n"
 , stdout);
  fputs(
-"       60     Peer certificate cannot be authenticated with known CA  certifi-\n"
+"       60     Peer  certificate cannot be authenticated with known CA certifi-\n"
 "              cates.\n"
 "\n"
 "       61     Unrecognized transfer encoding.\n"
@@ -3954,7 +4057,7 @@
 "\n"
 "       66     Failed to initialise SSL Engine.\n"
 "\n"
-"       67     The  user  name,  password, or similar was not accepted and curl\n"
+"       67     The user name, password, or similar was not  accepted  and  curl\n"
 "              failed to log in.\n"
 "\n"
 , stdout);
@@ -3987,7 +4090,7 @@
 "\n"
 "       80     Failed to shut down the SSL connection.\n"
 "\n"
-"       82     Could not load CRL file,  missing  or  wrong  format  (added  in\n"
+"       82     Could  not  load  CRL  file,  missing  or wrong format (added in\n"
 "              7.19.0).\n"
 "\n"
 "       83     Issuer check failed (added in 7.19.0).\n"
@@ -4018,7 +4121,7 @@
 "AUTHORS / CONTRIBUTORS\n"
 , stdout);
  fputs(
-"       Daniel Stenberg is the main author, but the whole list of  contributors\n"
+"       Daniel  Stenberg is the main author, but the whole list of contributors\n"
 "       is found in the separate THANKS file.\n"
 "\n"
 "WWW\n"
@@ -4369,17 +4472,16 @@
 "\n"
 "  How to post a form with curl, lesson #1:\n"
 "\n"
-"  Dig out all the <input> tags in the form that you want to fill in. (There's\n"
-"  a perl program called formfind.pl on the curl site that helps with this).\n"
+"  Dig out all the <input> tags in the form that you want to fill in.\n"
 "\n"
 "  If there's a \"normal\" post, you use -d to post. -d takes a full \"post\n"
 "  string\", which is in the format\n"
 "\n"
 "        <variable1>=<data1>&<variable2>=<data2>&...\n"
 "\n"
+"  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
 , stdout);
  fputs(
-"  The 'variable' names are the names set with \"name=\" in the <input> tags, and\n"
 "  the data is the contents you want to fill in for the inputs. The data *must*\n"
 "  be properly URL encoded. That means you replace space with + and that you\n"
 "  replace weird letters with %XX where XX is the hexadecimal representation of\n"
@@ -4391,9 +4493,9 @@
 "\n"
 "        <form action=\"post.cgi\" method=\"post\">\n"
 "        <input name=user size=10>\n"
+"        <input name=pass type=password size=10>\n"
 , stdout);
  fputs(
-"        <input name=pass type=password size=10>\n"
 "        <input name=id type=hidden value=\"blablabla\">\n"
 "        <input name=ding value=\"submit\">\n"
 "        </form>\n"
@@ -5275,4800 +5377,4896 @@
 #include "memdebug.h" /* keep this as LAST include */
 static const unsigned char hugehelpgz[] = {
   /* This mumbo-jumbo is the huge help text compressed with gzip.
-     Thanks to this operation, the size of this data shrank from 195210
-     to 57485 bytes. You can disable the use of compressed help
+     Thanks to this operation, the size of this data shrank from 199742
+     to 58638 bytes. You can disable the use of compressed help
      texts by NOT passing -c to the mkhelp.pl tool. */
   0x1f, 0x8b, 0x08, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0xed, 0xfd,
-  0x6b, 0x7b, 0xdc, 0x46, 0x92, 0x26, 0x80, 0x7e, 0xe7, 0xaf, 0xc0, 0x54,
-  0x9f, 0x1e, 0x92, 0xd3, 0x55, 0xc5, 0x8b, 0x2e, 0xb6, 0x68, 0xc9, 0x63,
-  0x9a, 0xa2, 0x6c, 0x8e, 0x29, 0x91, 0xcb, 0xa2, 0x6c, 0xf7, 0xb6, 0xfd,
-  0xe8, 0x41, 0x55, 0x81, 0x24, 0x5a, 0x55, 0x40, 0x35, 0x80, 0x22, 0xc5,
-  0x9e, 0x9d, 0xfd, 0xed, 0x27, 0xe3, 0x8d, 0x88, 0xcc, 0x04, 0x32, 0xab,
-  0x48, 0xbb, 0xed, 0xde, 0x39, 0x67, 0xb7, 0x77, 0xc7, 0x92, 0x48, 0x20,
-  0x91, 0xd7, 0xc8, 0xb8, 0xbc, 0xf1, 0x46, 0x92, 0x3c, 0xf4, 0xbf, 0x0f,
-  0xf8, 0xbf, 0x0f, 0xe6, 0x7f, 0xe6, 0xcf, 0x8d, 0x24, 0x39, 0xaf, 0xca,
-  0xbf, 0x66, 0x93, 0x26, 0xfe, 0xec, 0x87, 0x0f, 0xff, 0x2b, 0xe1, 0xff,
-  0x67, 0xde, 0xf9, 0xc9, 0xfc, 0xb9, 0xb1, 0xb6, 0xed, 0x9d, 0xc4, 0xbd,
-  0xf0, 0xbf, 0x3e, 0x6c, 0x27, 0x0f, 0xbd, 0xf0, 0xbf, 0x92, 0x2d, 0xbc,
-  0xf0, 0x41, 0xbe, 0xf0, 0x92, 0xfe, 0xfe, 0xe1, 0xc3, 0xfa, 0x8f, 0xfc,
-  0x44, 0xbd, 0xa2, 0xff, 0xec, 0xd0, 0x7b, 0x3f, 0x7d, 0xa0, 0xbf, 0x9a,
-  0x9f, 0x6c, 0x6c, 0xbc, 0x3b, 0x7c, 0x7b, 0xac, 0xaf, 0x4e, 0x96, 0xd5,
-  0x2c, 0x19, 0x24, 0x4d, 0x95, 0x16, 0xf5, 0x55, 0x56, 0x25, 0x69, 0xf2,
-  0xfe, 0xe2, 0x74, 0x63, 0x63, 0xf4, 0xe7, 0x77, 0x67, 0xe7, 0xa3, 0x93,
-  0x51, 0xeb, 0xb1, 0xbf, 0x94, 0x8b, 0x26, 0x2f, 0x8b, 0xfa, 0xe7, 0xe4,
-  0x2f, 0xe6, 0xa1, 0xe1, 0x70, 0xf8, 0xf3, 0xc6, 0xc6, 0xeb, 0xe3, 0xd1,
-  0xd1, 0xc5, 0xc9, 0xf9, 0xe5, 0xc9, 0xd9, 0xbb, 0xd6, 0xb3, 0x49, 0x5e,
-  0x27, 0xa6, 0xb1, 0xa6, 0x2c, 0x67, 0xe6, 0x3f, 0xae, 0xfd, 0x69, 0xda,
-  0xa4, 0xc9, 0x55, 0x55, 0xce, 0x93, 0xb2, 0xa2, 0x5f, 0xa4, 0x49, 0x9d,
-  0x55, 0xb7, 0x59, 0xd5, 0x4f, 0x96, 0x75, 0x5e, 0x5c, 0x27, 0x65, 0x91,
-  0x25, 0xe5, 0x55, 0xd2, 0xdc, 0x64, 0xda, 0x5c, 0xbd, 0x5c, 0x2c, 0xca,
-  0xaa, 0xc9, 0xa6, 0xc9, 0xa2, 0x2a, 0x9b, 0x72, 0x52, 0xce, 0xea, 0x64,
-  0xeb, 0xf5, 0xc9, 0xd1, 0x65, 0x3f, 0x79, 0x73, 0x72, 0x7a, 0x6c, 0xfe,
-  0x7b, 0x79, 0x8e, 0xff, 0x8c, 0xfa, 0xc9, 0x37, 0x67, 0xe7, 0xdf, 0x1e,
-  0x5f, 0xf4, 0x93, 0x6f, 0x2f, 0xe9, 0x67, 0xf4, 0x5f, 0xf3, 0xc3, 0xe4,
-  0xe4, 0xed, 0xe1, 0x79, 0x5f, 0x9b, 0xa3, 0x7f, 0xd0, 0x0f, 0x4f, 0x5f,
-  0x9b, 0x1f, 0xf2, 0x1f, 0xf4, 0xcf, 0xf3, 0xb3, 0xf3, 0x27, 0xf2, 0x07,
-  0xfd, 0xf3, 0xe2, 0xf2, 0xad, 0xf9, 0xed, 0xc5, 0xe5, 0xc8, 0xfc, 0x77,
-  0x74, 0x44, 0xff, 0xc1, 0x57, 0x46, 0x6f, 0xbf, 0xc6, 0x7f, 0x46, 0xb6,
-  0xb9, 0xd1, 0x5b, 0xfe, 0x39, 0xbe, 0x74, 0x79, 0x7c, 0xfa, 0xee, 0xf8,
-  0x32, 0x49, 0x8b, 0x69, 0x72, 0x69, 0x9e, 0xdf, 0x1e, 0x26, 0x97, 0x37,
-  0x59, 0x32, 0x29, 0xe7, 0x73, 0xfa, 0x91, 0x99, 0x91, 0x69, 0x56, 0xe7,
-  0xd7, 0x85, 0x19, 0x8a, 0x19, 0xf9, 0x5d, 0x59, 0x7d, 0x4c, 0x92, 0xbb,
-  0xbc, 0xb9, 0x29, 0x97, 0x8d, 0x36, 0xb7, 0x34, 0xb3, 0x91, 0xe4, 0x45,
-  0x93, 0x55, 0xe9, 0x84, 0xe6, 0x7a, 0xb8, 0xd1, 0x9a, 0xd5, 0xf2, 0xca,
-  0xcc, 0x61, 0x6d, 0x26, 0x6d, 0xbc, 0xac, 0x67, 0x65, 0x3a, 0xa5, 0xa9,
-  0x32, 0xaf, 0x5c, 0x2d, 0xcd, 0x24, 0x57, 0xf9, 0xe4, 0x63, 0x9d, 0xcc,
-  0xf2, 0x8f, 0x19, 0x4d, 0xd4, 0xa7, 0x7b, 0x9d, 0xb8, 0x3e, 0x37, 0x9a,
-  0x2e, 0xcd, 0x9c, 0x16, 0x03, 0x6d, 0xae, 0xc9, 0x27, 0x29, 0x7d, 0x00,
-  0x33, 0x97, 0x2c, 0x17, 0xd4, 0x1a, 0xcf, 0x58, 0xb2, 0x28, 0x6b, 0xf3,
-  0xd2, 0x68, 0x74, 0x6a, 0x7a, 0x5e, 0x14, 0x19, 0xfa, 0x51, 0xf7, 0xcd,
-  0x3f, 0xca, 0x8f, 0x79, 0x66, 0xfe, 0x72, 0x95, 0xcf, 0xb2, 0x84, 0x57,
-  0xd4, 0x36, 0x47, 0x4b, 0x9b, 0x54, 0x59, 0xbd, 0x9c, 0x67, 0x66, 0xf6,
-  0xde, 0x66, 0x4d, 0x3a, 0xcb, 0x8b, 0x8f, 0xe6, 0xaf, 0x34, 0xf0, 0x79,
-  0x59, 0x65, 0xc3, 0xe4, 0xb0, 0x4e, 0xee, 0xcb, 0xa5, 0x19, 0xf0, 0x6c,
-  0x66, 0xd6, 0x3c, 0x4b, 0xc6, 0xd9, 0xac, 0xbc, 0xeb, 0xd3, 0x4a, 0x27,
-  0xc5, 0x72, 0x3e, 0x36, 0x0d, 0x94, 0x57, 0xae, 0xb9, 0xb4, 0x59, 0x9a,
-  0xe6, 0xf8, 0xe9, 0x79, 0x6a, 0xc6, 0x64, 0xde, 0xad, 0x92, 0x9b, 0xcc,
-  0x8c, 0xb9, 0x5e, 0xe4, 0xc5, 0xbf, 0xb4, 0xe7, 0xc5, 0x4c, 0xed, 0xa2,
-  0xbc, 0xcb, 0x2a, 0x33, 0xb3, 0xe3, 0xfb, 0xc4, 0x4c, 0xc2, 0x98, 0x37,
-  0xe1, 0x95, 0xd9, 0x64, 0x49, 0x6a, 0x9a, 0xb0, 0x1b, 0x70, 0x50, 0x65,
-  0xb3, 0x94, 0x36, 0x93, 0xfd, 0xc6, 0xd0, 0x2c, 0x62, 0x66, 0x77, 0x9b,
-  0xbc, 0xba, 0xf5, 0x64, 0x1b, 0x2f, 0x4f, 0xcd, 0x48, 0xf2, 0x59, 0x6d,
-  0x96, 0x81, 0x8e, 0x85, 0x3c, 0x43, 0x8b, 0x4a, 0xc7, 0xc4, 0xec, 0xcd,
-  0xfb, 0xa2, 0x49, 0x3f, 0xe1, 0xf3, 0xb2, 0x37, 0x07, 0xd3, 0x6c, 0x91,
-  0x15, 0xd3, 0xac, 0x68, 0x86, 0xc9, 0x9f, 0xcb, 0xe5, 0xa6, 0xf9, 0xf6,
-  0x55, 0x6e, 0xe6, 0x20, 0x95, 0xa6, 0xcc, 0x97, 0xcd, 0x26, 0x98, 0x54,
-  0xf9, 0xc2, 0x5b, 0x8a, 0xb2, 0x30, 0x6b, 0x9e, 0x5c, 0xbc, 0x39, 0x4a,
-  0x9e, 0xbc, 0xf8, 0xfc, 0xb9, 0x5b, 0x73, 0xd3, 0x40, 0x32, 0x49, 0x0b,
-  0x33, 0xe2, 0x6c, 0x92, 0x5f, 0xdd, 0x27, 0xf3, 0xe5, 0xac, 0xc9, 0x17,
-  0x66, 0xf6, 0xcd, 0xc7, 0x6b, 0x3a, 0x40, 0x8b, 0xb4, 0x6a, 0x6a, 0xda,
-  0x04, 0xf8, 0x01, 0xc6, 0x7e, 0x57, 0xe5, 0x0d, 0x1d, 0x24, 0xfc, 0xce,
-  0xf4, 0x30, 0x6b, 0x6a, 0x6d, 0x8e, 0xf6, 0x9a, 0xf9, 0xce, 0xd8, 0xec,
-  0x2d, 0x33, 0xb5, 0x69, 0x6d, 0x3e, 0x7a, 0xb0, 0xe1, 0x64, 0xc8, 0x4d,
-  0xd3, 0x2c, 0x0e, 0x76, 0x76, 0xea, 0xbc, 0xc9, 0x86, 0xff, 0x69, 0xce,
-  0x61, 0xbf, 0xb9, 0x2b, 0xfb, 0xcd, 0x4d, 0x95, 0x65, 0xff, 0x35, 0x34,
-  0x7b, 0xd8, 0x3e, 0x69, 0xbe, 0x7b, 0x2f, 0x1d, 0xbb, 0xce, 0x1a, 0xf3,
-  0x85, 0xbf, 0x2d, 0xb3, 0x82, 0x5a, 0x34, 0xfd, 0x48, 0x67, 0x8b, 0x9b,
-  0xd4, 0x2c, 0x67, 0x66, 0x76, 0x23, 0x9d, 0x6c, 0xb3, 0x61, 0xa8, 0x57,
-  0x7c, 0xb6, 0xff, 0xf2, 0x73, 0xf8, 0xd1, 0x2b, 0x7c, 0xd3, 0xfc, 0x77,
-  0x98, 0x7d, 0x4a, 0xe7, 0x66, 0x6c, 0xf4, 0xa9, 0x1d, 0xda, 0x62, 0x7f,
-  0xd9, 0x1b, 0xec, 0xed, 0xee, 0xfe, 0x3c, 0x6c, 0x3e, 0x35, 0x8f, 0x7b,
-  0x7e, 0x77, 0xd7, 0xbd, 0x41, 0x8f, 0x6e, 0xd1, 0x78, 0x93, 0x99, 0xd9,
-  0x32, 0xf4, 0xf1, 0xbf, 0x67, 0x55, 0x59, 0x6f, 0x3f, 0xae, 0xa5, 0x74,
-  0xf0, 0xf7, 0xf6, 0x77, 0xdf, 0x65, 0x35, 0xf6, 0x8c, 0x1b, 0x6b, 0x92,
-  0x56, 0x66, 0xdf, 0x96, 0x8d, 0x13, 0x4f, 0x7d, 0x73, 0x28, 0x1b, 0x3b,
-  0x33, 0xe6, 0xcc, 0x99, 0xa7, 0x8d, 0x60, 0x4b, 0x67, 0x24, 0xd3, 0xea,
-  0xa4, 0xc8, 0x3e, 0xd9, 0x53, 0x6e, 0x4e, 0x7f, 0x96, 0x4e, 0x6e, 0x92,
-  0xd2, 0x6c, 0xfe, 0x2a, 0xb2, 0x04, 0x7e, 0x87, 0xd2, 0x6a, 0x72, 0x93,
-  0xdf, 0x9a, 0xd9, 0x78, 0xf1, 0xe2, 0xf9, 0xc0, 0xfc, 0xe7, 0xc5, 0xcf,
-  0x3b, 0xb7, 0xe5, 0xcc, 0x4c, 0xce, 0xd3, 0x9f, 0x77, 0x68, 0x89, 0xff,
-  0x33, 0xed, 0x8f, 0xfb, 0x93, 0xff, 0x1a, 0xde, 0x34, 0xf3, 0xd9, 0xca,
-  0x8d, 0x93, 0x16, 0xe6, 0xff, 0xe6, 0xe5, 0xb2, 0x68, 0xec, 0x66, 0x31,
-  0x7b, 0xae, 0xf1, 0x84, 0x93, 0x39, 0xae, 0xe6, 0x8c, 0xd2, 0xd6, 0xa6,
-  0x3d, 0x44, 0xa7, 0xce, 0x1c, 0x50, 0x77, 0x1c, 0x9b, 0xc9, 0x8d, 0x19,
-  0xbf, 0xd9, 0x3c, 0xa9, 0xcc, 0x41, 0x93, 0xa7, 0x74, 0x30, 0x8d, 0x7c,
-  0x20, 0x79, 0x85, 0xa6, 0xf8, 0x63, 0xb9, 0x79, 0xae, 0xac, 0xa6, 0x59,
-  0xd5, 0xde, 0xc6, 0xe8, 0x8e, 0xeb, 0x4f, 0x62, 0xe6, 0x73, 0x61, 0x3e,
-  0xbe, 0x24, 0x51, 0x87, 0x93, 0x46, 0x2d, 0x98, 0x33, 0x7a, 0x6d, 0xa6,
-  0xca, 0x4c, 0x0f, 0x6d, 0x2c, 0x9a, 0xbd, 0xfb, 0xe4, 0x9d, 0x59, 0x43,
-  0x96, 0x0f, 0xde, 0xfe, 0x9b, 0x65, 0x4d, 0xf3, 0xe0, 0xcc, 0xb9, 0x4d,
-  0x74, 0xb0, 0x17, 0xec, 0xa3, 0x55, 0xcf, 0x9b, 0xa5, 0x3f, 0xd8, 0x6f,
-  0x3f, 0xfc, 0x83, 0x91, 0x9b, 0x6e, 0x07, 0x9b, 0xaf, 0xff, 0xe7, 0x7f,
-  0x79, 0x1b, 0xe1, 0x8e, 0x7e, 0x9b, 0x17, 0xb7, 0xe5, 0x47, 0x33, 0x70,
-  0x5c, 0x6c, 0x69, 0x6b, 0x52, 0x13, 0x12, 0x0d, 0xf3, 0x45, 0x63, 0x6f,
-  0x0c, 0xda, 0x21, 0xe6, 0x47, 0xe3, 0x74, 0x3c, 0xbb, 0x4f, 0x6e, 0xd2,
-  0xdb, 0x8c, 0xc6, 0xbb, 0x30, 0x5b, 0x87, 0x66, 0xc0, 0x48, 0xf2, 0x19,
-  0x44, 0x8b, 0x9c, 0xd5, 0x69, 0xb9, 0x1c, 0x9b, 0xf3, 0xfe, 0xb7, 0x65,
-  0xd9, 0xf0, 0xc4, 0xa4, 0xb7, 0x65, 0x3e, 0x6d, 0x5d, 0x8f, 0x37, 0x19,
-  0xc9, 0x18, 0xfa, 0x30, 0xee, 0x0d, 0x23, 0xe3, 0xa8, 0xa7, 0xd8, 0xfb,
-  0x79, 0x43, 0x37, 0x90, 0x91, 0x4e, 0xe9, 0xac, 0x2e, 0x93, 0xe4, 0xba,
-  0xa4, 0x8d, 0x0b, 0x99, 0x88, 0x9d, 0x67, 0x16, 0xe5, 0x26, 0xa5, 0x8b,
-  0xc6, 0xdc, 0x29, 0x76, 0x6b, 0x56, 0x19, 0xc4, 0x23, 0x56, 0x2a, 0x9d,
-  0xf5, 0xf9, 0x42, 0xa1, 0x77, 0x64, 0xaa, 0x92, 0xcd, 0x7f, 0xdd, 0xec,
-  0x27, 0x9b, 0xff, 0xbe, 0x09, 0xd1, 0xbe, 0xf9, 0x6f, 0x9b, 0x6e, 0x9d,
-  0x8d, 0x86, 0x74, 0x9b, 0x4f, 0xe9, 0x6e, 0x30, 0x23, 0x39, 0x39, 0xbf,
-  0x7d, 0x9e, 0xfc, 0x9d, 0xae, 0x73, 0x23, 0xfe, 0xb2, 0x4f, 0xba, 0x49,
-  0x74, 0x6c, 0xe6, 0xed, 0xc4, 0xc8, 0xc1, 0x74, 0x41, 0xf7, 0x7a, 0x56,
-  0x4d, 0xcc, 0x8e, 0x4a, 0xaf, 0xcd, 0x1e, 0x32, 0xd7, 0xa3, 0x36, 0x47,
-  0xed, 0xd3, 0x2b, 0x3c, 0x2c, 0x23, 0xb3, 0x92, 0x22, 0x9d, 0x9b, 0x4d,
-  0x7a, 0x4a, 0x3d, 0xca, 0x8b, 0x70, 0x31, 0xff, 0x72, 0x95, 0x7d, 0xbe,
-  0x7b, 0x70, 0xf0, 0xe4, 0x8f, 0xfb, 0xcf, 0xb2, 0xe6, 0x66, 0xf7, 0xe7,
-  0x1d, 0xfb, 0xc8, 0xc9, 0x15, 0xa6, 0x5d, 0xb7, 0x9f, 0x76, 0xc2, 0x5c,
-  0xbc, 0x56, 0x70, 0x9b, 0xf7, 0xcd, 0xdf, 0xb3, 0xab, 0xfc, 0x53, 0x5f,
-  0x55, 0x18, 0x3e, 0x06, 0xa9, 0xd9, 0x6a, 0x66, 0xfd, 0xe8, 0xd4, 0x6a,
-  0x73, 0xd7, 0xcb, 0xac, 0x36, 0x33, 0x79, 0x77, 0x93, 0x36, 0x89, 0x6d,
-  0x80, 0x57, 0x76, 0x9e, 0x5f, 0xdf, 0x34, 0xc9, 0x5d, 0x4a, 0xf2, 0xff,
-  0xa4, 0xe1, 0x26, 0xe8, 0xe2, 0x35, 0x52, 0xff, 0x2a, 0x35, 0xe2, 0x9b,
-  0xd6, 0x10, 0xb7, 0xec, 0xd8, 0x5d, 0xfa, 0x8d, 0xd9, 0xe6, 0xbc, 0x20,
-  0x4e, 0xc3, 0x19, 0xa7, 0x35, 0x1d, 0xa4, 0xc2, 0x9c, 0xd7, 0xc6, 0x5c,
-  0xdb, 0x4b, 0xfa, 0xd7, 0x8d, 0xb9, 0x98, 0x31, 0x07, 0xd2, 0x51, 0xdc,
-  0x5d, 0x6f, 0x68, 0x39, 0x69, 0x6d, 0xec, 0x7d, 0x62, 0x16, 0xa9, 0x2f,
-  0xcb, 0x6c, 0xdf, 0xa8, 0xcd, 0x81, 0x33, 0xc2, 0xc2, 0xee, 0x8c, 0x1e,
-  0xc9, 0xbd, 0x1e, 0x8f, 0x13, 0x7d, 0x4c, 0x6b, 0xba, 0xbb, 0xf9, 0x86,
-  0x36, 0x9d, 0xf7, 0x06, 0x6b, 0x26, 0x2d, 0xfd, 0x48, 0x5a, 0x42, 0x47,
-  0x17, 0xc1, 0x6b, 0xd3, 0xd2, 0x6c, 0x32, 0xd3, 0x5b, 0x23, 0x1f, 0x69,
-  0x64, 0x24, 0xf5, 0x30, 0x2b, 0xd8, 0xe4, 0xa6, 0x4d, 0xfa, 0x61, 0xde,
-  0x90, 0xd8, 0x87, 0x62, 0x69, 0xfa, 0x6b, 0x26, 0x05, 0xba, 0xa1, 0x91,
-  0x9d, 0xde, 0xf8, 0x71, 0x63, 0x99, 0x67, 0x93, 0x5b, 0xa3, 0x38, 0x18,
-  0x1d, 0x31, 0xb3, 0x6f, 0xe1, 0x8a, 0x9d, 0x90, 0xba, 0x32, 0x33, 0xe7,
-  0x65, 0x52, 0x56, 0x15, 0x29, 0xe1, 0xb4, 0x82, 0x63, 0x96, 0x6b, 0xf3,
-  0xcc, 0xdc, 0xec, 0xfe, 0x74, 0xe6, 0x74, 0xc7, 0x18, 0xf9, 0x62, 0x54,
-  0x05, 0x48, 0x10, 0x73, 0xa5, 0x43, 0x0c, 0x63, 0xe0, 0xe8, 0x1d, 0xb5,
-  0x3d, 0x99, 0x64, 0x8b, 0xa6, 0x8e, 0x8d, 0x49, 0x17, 0xdc, 0x74, 0xa7,
-  0xca, 0x68, 0xe6, 0x7d, 0x3d, 0x08, 0xf3, 0x6a, 0xef, 0x61, 0xa8, 0x42,
-  0xaa, 0x5a, 0x18, 0xd5, 0xa8, 0xb6, 0xb3, 0xd6, 0x60, 0x6f, 0x18, 0x31,
-  0x86, 0x39, 0x9f, 0x53, 0x47, 0xe9, 0xe1, 0x9a, 0x4f, 0x2a, 0xc4, 0x25,
-  0x2d, 0x24, 0x2b, 0xbf, 0xfc, 0x5d, 0xba, 0x4d, 0xcc, 0x7c, 0xda, 0xc6,
-  0xcd, 0x57, 0xed, 0x9a, 0xd2, 0xe7, 0x6b, 0x63, 0x36, 0x98, 0xcb, 0x75,
-  0x5a, 0xdf, 0x18, 0x7d, 0xa8, 0x96, 0x93, 0x9d, 0xcf, 0xcd, 0x9e, 0xb9,
-  0xa5, 0xf5, 0x5d, 0x64, 0xd9, 0x74, 0x98, 0x9c, 0x5d, 0x91, 0x54, 0xad,
-  0x4c, 0xa7, 0x1b, 0xfc, 0x9a, 0x04, 0xbd, 0x99, 0xb7, 0x29, 0xf4, 0x6a,
-  0x7b, 0xb4, 0xb8, 0x2b, 0x9e, 0xc4, 0xa6, 0x9d, 0x66, 0x26, 0x3b, 0x21,
-  0x29, 0x37, 0x6b, 0xdf, 0x0a, 0x38, 0x87, 0x46, 0x7a, 0x53, 0xf7, 0xc6,
-  0x59, 0x82, 0x9d, 0x38, 0xce, 0x9a, 0xbb, 0x2c, 0xb3, 0xcd, 0xd5, 0x99,
-  0xb9, 0x89, 0x68, 0xd1, 0x58, 0x19, 0x83, 0x30, 0xa4, 0xa9, 0x3d, 0xbf,
-  0x38, 0xfb, 0xe6, 0xe2, 0x78, 0x34, 0x4a, 0xde, 0x1e, 0x5f, 0x1e, 0x5f,
-  0xb4, 0x66, 0xba, 0x28, 0xab, 0x39, 0x56, 0x74, 0x9a, 0xd7, 0x8b, 0x59,
-  0x7a, 0x4f, 0x4b, 0x6d, 0x46, 0x72, 0x5d, 0xd1, 0xc9, 0x9a, 0x67, 0x74,
-  0x2b, 0x4c, 0x97, 0x90, 0x64, 0x49, 0x69, 0xe4, 0x43, 0x2a, 0x4a, 0x28,
-  0x09, 0x13, 0x68, 0xae, 0xc5, 0xb5, 0x9b, 0x69, 0x23, 0x71, 0xe4, 0x72,
-  0xa3, 0xdb, 0xcd, 0xae, 0x07, 0x69, 0x83, 0xb0, 0x37, 0xfa, 0xee, 0x67,
-  0x3c, 0x4d, 0x35, 0xc6, 0x64, 0xf6, 0x6c, 0x3e, 0x87, 0xb0, 0x33, 0x7f,
-  0x3a, 0x05, 0x30, 0xbb, 0x32, 0xda, 0xaf, 0xb9, 0xf0, 0x58, 0x79, 0xef,
-  0xf6, 0x49, 0x7b, 0x6b, 0x55, 0x56, 0xb3, 0x0d, 0x49, 0x34, 0x53, 0x83,
-  0xdc, 0x15, 0xfe, 0x82, 0x15, 0x62, 0x46, 0x4d, 0x20, 0xd9, 0x27, 0x8f,
-  0x2d, 0xa8, 0x0b, 0x99, 0x59, 0xd9, 0x29, 0x37, 0x5f, 0x2f, 0xaf, 0x70,
-  0x90, 0x93, 0x2d, 0xa3, 0x2c, 0xbf, 0x35, 0x06, 0x8c, 0x31, 0x22, 0xfa,
-  0xc9, 0xf9, 0x36, 0xde, 0xdb, 0xdb, 0xdd, 0x7f, 0xca, 0x82, 0x60, 0xa8,
-  0xcd, 0xbd, 0xf1, 0x04, 0xf1, 0xde, 0x47, 0x5a, 0x5e, 0x7e, 0x88, 0x1a,
-  0x1f, 0x26, 0x7b, 0x6f, 0xf9, 0x27, 0x4f, 0x3f, 0x7f, 0xf6, 0xd9, 0x73,
-  0xf9, 0x61, 0x7b, 0x83, 0xdb, 0xfe, 0x63, 0x77, 0xc0, 0x18, 0x23, 0xeb,
-  0xcc, 0xf4, 0xc4, 0x8c, 0x6e, 0x9e, 0x17, 0xe6, 0x98, 0x98, 0x63, 0x25,
-  0xb2, 0x8a, 0xf6, 0xb3, 0xe9, 0xfc, 0x15, 0x4b, 0x36, 0x59, 0xd7, 0xb6,
-  0x95, 0x67, 0x5e, 0x36, 0x5b, 0xd6, 0xc8, 0x72, 0xbb, 0x48, 0x98, 0x09,
-  0x73, 0xc0, 0xe8, 0xd6, 0x19, 0x93, 0x80, 0x25, 0x53, 0xc7, 0xe8, 0xa4,
-  0x59, 0xf4, 0x6b, 0xf6, 0x56, 0x34, 0x6f, 0x98, 0xbe, 0x99, 0x3b, 0x91,
-  0xae, 0xb9, 0x70, 0xde, 0x8d, 0x28, 0x80, 0x84, 0xbc, 0xcb, 0x6b, 0x88,
-  0x86, 0xbb, 0x72, 0x39, 0x33, 0x86, 0x05, 0x3d, 0xb0, 0x5c, 0xe0, 0x05,
-  0xf3, 0xa9, 0x85, 0x93, 0x01, 0xf3, 0xfc, 0x13, 0xed, 0x9d, 0x6e, 0x2b,
-  0xa6, 0x6b, 0xe6, 0x9f, 0x0b, 0xb3, 0x95, 0xb8, 0x3b, 0xc3, 0xee, 0x0d,
-  0x01, 0xd9, 0x17, 0xec, 0x44, 0x3a, 0xf3, 0x10, 0xda, 0xe7, 0x67, 0xa3,
-  0x4b, 0xd2, 0x00, 0xce, 0xdf, 0x5f, 0x9a, 0x86, 0x8c, 0x0a, 0x50, 0x37,
-  0x66, 0x53, 0xd2, 0x8b, 0x45, 0x06, 0xab, 0x4e, 0x9b, 0x33, 0x7b, 0x2f,
-  0x87, 0xa0, 0x82, 0x5a, 0xa3, 0x9f, 0xe4, 0x3e, 0xb2, 0xd9, 0x4b, 0x47,
-  0x50, 0x8d, 0x5e, 0xbe, 0xc3, 0xed, 0x3b, 0xc9, 0xd6, 0x97, 0xdb, 0x66,
-  0xcf, 0x0e, 0x4a, 0x3b, 0x3b, 0x83, 0x81, 0xbc, 0x6a, 0xbe, 0x5d, 0xe7,
-  0xf3, 0x7c, 0x96, 0x7a, 0xea, 0x95, 0x48, 0x54, 0x3a, 0x9f, 0x56, 0xae,
-  0x4c, 0xcc, 0xae, 0x41, 0xb7, 0x9d, 0x75, 0x47, 0x73, 0x08, 0xa9, 0xe4,
-  0x96, 0x6a, 0x4a, 0x0a, 0x01, 0x94, 0xd8, 0x45, 0x6e, 0xa7, 0x8e, 0xd6,
-  0x8c, 0xc4, 0x55, 0x6b, 0xa2, 0xba, 0xeb, 0x16, 0x4c, 0x1c, 0xdd, 0x48,
-  0x70, 0x1f, 0xd8, 0xa9, 0x4b, 0x7a, 0xe3, 0xb4, 0xea, 0x25, 0x56, 0x16,
-  0xf3, 0xd9, 0xa4, 0x13, 0x52, 0x65, 0xd7, 0x4b, 0x33, 0x82, 0x84, 0x67,
-  0x97, 0x46, 0xfa, 0x07, 0x6f, 0xa4, 0xda, 0xc0, 0x60, 0x4c, 0x8f, 0xe4,
-  0x35, 0x5b, 0x7e, 0x57, 0xc6, 0x94, 0xa0, 0x43, 0xa3, 0x9a, 0x2d, 0x34,
-  0x1a, 0xd9, 0x31, 0x91, 0x0d, 0x63, 0x77, 0x69, 0x49, 0x47, 0xa5, 0xc9,
-  0x8c, 0xa0, 0x81, 0xf8, 0xa7, 0x27, 0x07, 0x66, 0xc9, 0x06, 0x83, 0xda,
-  0xcc, 0x3f, 0xa9, 0xc3, 0x0b, 0x31, 0xb3, 0xcf, 0xe0, 0xc3, 0xb0, 0x0e,
-  0x8f, 0x33, 0x76, 0x75, 0xf0, 0xb5, 0xc9, 0xef, 0x42, 0x84, 0x1a, 0x45,
-  0xf5, 0xce, 0x7c, 0x38, 0x35, 0x4b, 0x66, 0x0e, 0xdc, 0x5b, 0x9a, 0x28,
-  0x76, 0x57, 0x24, 0xd2, 0x54, 0x9d, 0x60, 0x67, 0xe4, 0x74, 0xee, 0x53,
-  0xa7, 0xcb, 0x4c, 0xa7, 0x39, 0xfd, 0xd6, 0x9c, 0x2f, 0x73, 0xc3, 0x2d,
-  0x33, 0x98, 0x03, 0x32, 0xa9, 0x73, 0x37, 0x99, 0xb0, 0x2c, 0xeb, 0x9b,
-  0x92, 0x2c, 0xb7, 0x1e, 0xcb, 0xe2, 0x01, 0x7d, 0xab, 0x87, 0xfb, 0x7c,
-  0x9e, 0xe8, 0xb7, 0xe4, 0x53, 0x66, 0x1c, 0x53, 0x5f, 0x37, 0xeb, 0x9b,
-  0x8b, 0xe6, 0xde, 0xd3, 0xdb, 0x21, 0xab, 0xb9, 0xef, 0x95, 0x55, 0x78,
-  0xcc, 0x95, 0xba, 0x20, 0x65, 0x4a, 0x64, 0x38, 0x2e, 0x43, 0x1c, 0xd9,
-  0x9a, 0xbb, 0xd6, 0x37, 0x73, 0x4b, 0x4f, 0x5e, 0xdf, 0xe8, 0xa3, 0xde,
-  0xc5, 0x9a, 0x9a, 0xc1, 0xd1, 0xe5, 0x40, 0x26, 0xee, 0x54, 0xe5, 0x7e,
-  0x59, 0xb1, 0x30, 0x9b, 0x95, 0x66, 0x2f, 0xf7, 0x58, 0x65, 0x95, 0x6e,
-  0x53, 0xaf, 0xa9, 0x97, 0x34, 0xe3, 0xec, 0xfa, 0x29, 0xed, 0xda, 0xd8,
-  0x4e, 0xcb, 0x7c, 0xd5, 0x0f, 0x76, 0xcd, 0x4d, 0xd4, 0x08, 0x73, 0x64,
-  0xae, 0xce, 0x9a, 0xf6, 0xb1, 0xce, 0x3c, 0xb6, 0xb7, 0xb9, 0xea, 0x36,
-  0x1b, 0x3e, 0x8f, 0x30, 0x7b, 0x3a, 0x33, 0x5f, 0x63, 0xfb, 0xc8, 0x45,
-  0x66, 0x47, 0x66, 0x46, 0x34, 0xcd, 0x53, 0xec, 0x13, 0x5e, 0x1a, 0x28,
-  0x23, 0xce, 0x48, 0x8b, 0xe8, 0xc1, 0xf7, 0x5d, 0x1b, 0x6b, 0x36, 0xf3,
-  0xaf, 0x24, 0xed, 0xd3, 0xe0, 0xcc, 0x8c, 0xfd, 0x14, 0xe3, 0x18, 0xdc,
-  0x26, 0x74, 0xfc, 0x8c, 0xd9, 0x40, 0x67, 0x71, 0x70, 0x76, 0x7a, 0xeb,
-  0x1d, 0x23, 0x32, 0xa6, 0x0b, 0xd2, 0x53, 0xfa, 0x70, 0x58, 0x8c, 0xcb,
-  0xd2, 0x58, 0xae, 0x6e, 0x68, 0x74, 0x1f, 0x64, 0x05, 0xed, 0x76, 0x59,
-  0x51, 0x23, 0x12, 0x16, 0x56, 0xde, 0xde, 0x1b, 0x73, 0x29, 0xbd, 0x4e,
-  0x73, 0xbb, 0xdf, 0xe4, 0x64, 0x4c, 0x13, 0x7d, 0xb8, 0x28, 0xe5, 0x79,
-  0x5a, 0x2a, 0x52, 0x81, 0x44, 0x6e, 0x2d, 0x6b, 0x3e, 0x3e, 0x66, 0x54,
-  0x46, 0xf2, 0x40, 0x76, 0x48, 0xbb, 0xa4, 0x36, 0x6a, 0x73, 0x63, 0x28,
-  0xca, 0xa4, 0x73, 0x42, 0xf8, 0x42, 0x83, 0x34, 0x2d, 0xf6, 0x86, 0xc9,
-  0xb7, 0xe5, 0x5d, 0x06, 0xf7, 0x1d, 0xf4, 0xfb, 0x9c, 0x1c, 0x50, 0x46,
-  0x15, 0xbc, 0xcb, 0x92, 0xb9, 0x51, 0x3d, 0xcd, 0x6c, 0x42, 0xfb, 0xc0,
-  0xcf, 0x4c, 0x3f, 0x9d, 0xcd, 0x52, 0xde, 0xf1, 0x2c, 0xd9, 0x51, 0xd8,
-  0xa5, 0xbc, 0xe2, 0x23, 0x91, 0x6c, 0x41, 0xbd, 0x99, 0xd0, 0x6c, 0x2d,
-  0x1a, 0x37, 0x0a, 0x3b, 0x21, 0x77, 0x69, 0xed, 0x1d, 0x2e, 0x36, 0x4e,
-  0x93, 0xcf, 0x86, 0x7b, 0x2f, 0x86, 0xbb, 0x43, 0x32, 0x45, 0xb2, 0xdb,
-  0xbc, 0x5c, 0xd6, 0xb4, 0x9e, 0xd4, 0x13, 0xef, 0x74, 0x92, 0x9b, 0x88,
-  0x96, 0xf7, 0xfa, 0x7a, 0xc6, 0x8a, 0xcf, 0x4e, 0x79, 0x75, 0x95, 0x78,
-  0xca, 0x51, 0x95, 0x2d, 0xd8, 0x06, 0xa2, 0xb9, 0x91, 0x03, 0xc7, 0x42,
-  0xd5, 0xd7, 0x8a, 0x64, 0x36, 0x9d, 0x47, 0x61, 0x30, 0x48, 0xc7, 0x75,
-  0x43, 0xe6, 0xd4, 0x60, 0x59, 0xe4, 0x9f, 0x06, 0x75, 0x39, 0xf9, 0x68,
-  0x96, 0xe5, 0xe5, 0x22, 0x6d, 0x6e, 0xbe, 0xec, 0x78, 0x6a, 0xb7, 0xe8,
-  0x36, 0xd9, 0x4e, 0x92, 0x23, 0x56, 0x2c, 0x69, 0x2e, 0x2a, 0x3e, 0x71,
-  0x66, 0x3d, 0xa5, 0x95, 0xe4, 0xbd, 0x69, 0xc5, 0xec, 0xe6, 0xb9, 0x59,
-  0xd6, 0x84, 0x1b, 0xeb, 0xab, 0x30, 0xed, 0x34, 0x07, 0x2f, 0x20, 0x5d,
-  0x24, 0x70, 0xa6, 0x99, 0xc3, 0x53, 0x56, 0x1f, 0x87, 0xe4, 0xb6, 0x30,
-  0x56, 0xe3, 0x01, 0x6d, 0xe8, 0xc6, 0x88, 0xb1, 0x86, 0xe7, 0xbd, 0x16,
-  0x21, 0x4c, 0xdd, 0x62, 0x99, 0xec, 0xa4, 0x94, 0xce, 0xa7, 0xf6, 0x40,
-  0x3e, 0x9b, 0xa8, 0xbd, 0x21, 0x5b, 0x6f, 0xf3, 0x2b, 0x63, 0x01, 0xde,
-  0xf0, 0xc2, 0xa3, 0x31, 0x1e, 0xa3, 0xd9, 0xa3, 0xd7, 0xc6, 0x86, 0x28,
-  0x9a, 0x4e, 0x73, 0xe6, 0xab, 0x74, 0x59, 0xd3, 0x3d, 0xc3, 0xe6, 0x2e,
-  0xb6, 0x89, 0xb8, 0x65, 0xac, 0x05, 0x3a, 0xdc, 0xe8, 0xbc, 0x76, 0xa8,
-  0xab, 0xfa, 0xd9, 0xf0, 0xd9, 0x13, 0xb3, 0xa8, 0xfe, 0x44, 0x17, 0xf7,
-  0xe4, 0xce, 0x8c, 0x4f, 0xea, 0xa5, 0xb9, 0x4b, 0x6b, 0x56, 0x4f, 0xcc,
-  0x19, 0xbe, 0xca, 0xaf, 0x97, 0x55, 0xc6, 0x97, 0x1a, 0x3c, 0xa0, 0xea,
-  0xf8, 0xa4, 0x7b, 0xe2, 0xa6, 0x84, 0xbf, 0xd0, 0xc8, 0x97, 0x6c, 0x76,
-  0xd5, 0xef, 0xce, 0x02, 0x69, 0x74, 0xb4, 0x05, 0x30, 0x44, 0x6c, 0x22,
-  0xa3, 0xb9, 0xa1, 0xb1, 0x22, 0x93, 0x7b, 0x7d, 0x6e, 0x26, 0x38, 0x21,
-  0x87, 0x59, 0x32, 0x99, 0xa5, 0xf9, 0x1c, 0xe6, 0x8e, 0x38, 0x84, 0x86,
-  0x9d, 0xe6, 0x2e, 0x45, 0x1d, 0x87, 0x26, 0x3e, 0x26, 0x6b, 0xa0, 0xaa,
-  0x49, 0x58, 0xd1, 0x24, 0xa4, 0xaa, 0x4c, 0xb0, 0xae, 0x7d, 0x93, 0x4d,
-  0x3e, 0xea, 0x6a, 0xea, 0x2d, 0x3c, 0xe8, 0x34, 0x47, 0x9e, 0x50, 0x98,
-  0x1c, 0xe6, 0xa9, 0xa5, 0x59, 0xd3, 0x45, 0x59, 0xd7, 0x39, 0x79, 0x14,
-  0x48, 0x43, 0x5e, 0x4e, 0xa0, 0x38, 0x93, 0x89, 0xfd, 0xc9, 0xac, 0xa4,
-  0x6e, 0x89, 0xc4, 0xec, 0xb1, 0x62, 0x3a, 0x68, 0xaa, 0x7c, 0xb1, 0xaa,
-  0x77, 0x7c, 0x65, 0xb4, 0xef, 0xec, 0x5a, 0x8c, 0x18, 0xd8, 0x07, 0x6c,
-  0x31, 0x4c, 0x92, 0xce, 0x6c, 0x76, 0x9a, 0xe3, 0xb9, 0xed, 0x93, 0x89,
-  0x9c, 0x1b, 0x11, 0xca, 0xfa, 0x23, 0x3c, 0x40, 0x46, 0x5b, 0x94, 0xb3,
-  0x6c, 0x14, 0xdb, 0x7c, 0x82, 0x7b, 0x21, 0xbf, 0xce, 0xc8, 0xe3, 0x6c,
-  0x8e, 0x77, 0x33, 0x33, 0xb7, 0x85, 0x27, 0x28, 0xec, 0x8a, 0x17, 0xd9,
-  0x75, 0xd9, 0x90, 0x80, 0x0e, 0xb6, 0xc9, 0x7b, 0x6c, 0x7c, 0xbb, 0x27,
-  0x54, 0x13, 0xf2, 0xaf, 0xa9, 0x9c, 0x55, 0x14, 0xf3, 0x69, 0xd6, 0x84,
-  0xc4, 0x08, 0xab, 0x1b, 0xb3, 0x03, 0xbb, 0xab, 0x6e, 0x5a, 0x9b, 0x64,
-  0x50, 0x47, 0x71, 0x97, 0xea, 0x55, 0xae, 0x3a, 0xd0, 0x98, 0x4c, 0x36,
-  0x32, 0x8f, 0xef, 0xf2, 0x49, 0xa6, 0x1e, 0x0a, 0xf1, 0xa4, 0xcd, 0xf2,
-  0x70, 0xef, 0xcf, 0x97, 0x35, 0xac, 0x26, 0x56, 0x53, 0xc8, 0xa0, 0xbc,
-  0xcb, 0x49, 0x8d, 0x39, 0xb9, 0x92, 0xb3, 0x4a, 0xb7, 0x28, 0x9f, 0x8f,
-  0xb4, 0xca, 0x61, 0x3d, 0x9b, 0xe6, 0xa4, 0x9f, 0x9e, 0x91, 0xa3, 0x76,
-  0x9b, 0xeb, 0x37, 0xde, 0x17, 0xcd, 0xce, 0x69, 0x74, 0x30, 0x24, 0xaf,
-  0xd2, 0x7c, 0x16, 0x99, 0x27, 0x28, 0xa8, 0xc6, 0x22, 0xbd, 0xc9, 0x2a,
-  0x59, 0x83, 0x25, 0x4d, 0x3a, 0x45, 0x07, 0x82, 0xa7, 0x47, 0x59, 0xc6,
-  0x2a, 0x16, 0xf4, 0xb1, 0x4f, 0xf7, 0x76, 0x7a, 0x71, 0x8f, 0xf1, 0xda,
-  0xc9, 0xdf, 0x79, 0xf9, 0xbc, 0xe3, 0x99, 0x52, 0xab, 0xe9, 0x82, 0xdc,
-  0xe0, 0xdd, 0x13, 0x4a, 0xda, 0x28, 0x45, 0x52, 0xb6, 0xd5, 0xa9, 0x26,
-  0x4e, 0xc5, 0xc2, 0x46, 0x20, 0x20, 0x1c, 0xc8, 0xe1, 0x2f, 0x47, 0x98,
-  0xdb, 0x11, 0x4d, 0xa9, 0xd3, 0x9c, 0x51, 0xcd, 0xc8, 0x4f, 0x08, 0x23,
-  0xbc, 0xb5, 0x63, 0x8d, 0x41, 0x5c, 0x59, 0x3f, 0x38, 0x39, 0xc1, 0x68,
-  0xbe, 0x55, 0xf7, 0xc4, 0x99, 0xc5, 0x4b, 0x9d, 0xe6, 0x48, 0x1b, 0x26,
-  0xd5, 0xc1, 0x1c, 0x9a, 0x9c, 0xf6, 0x23, 0x36, 0x81, 0xba, 0x42, 0xcd,
-  0xf6, 0x65, 0xcf, 0x98, 0xca, 0x55, 0x56, 0x36, 0xd0, 0xdd, 0xab, 0x59,
-  0x7a, 0x6d, 0xf6, 0x5d, 0xa7, 0xb9, 0xfc, 0xda, 0xd8, 0xb8, 0x1c, 0x90,
-  0xa8, 0x4b, 0x73, 0x7b, 0xd0, 0xb8, 0xc5, 0xde, 0x37, 0xe6, 0x9e, 0xd9,
-  0x66, 0xb3, 0x25, 0x24, 0xe0, 0x99, 0x19, 0xe0, 0x68, 0xf4, 0xed, 0xb6,
-  0x2f, 0xe0, 0x30, 0xbf, 0x8f, 0x11, 0x6f, 0x90, 0x4f, 0x30, 0x4d, 0x92,
-  0xaf, 0xb1, 0x26, 0x5d, 0x29, 0xc7, 0x2b, 0x1d, 0x99, 0x3c, 0x9d, 0x08,
-  0x72, 0x11, 0x0d, 0x45, 0x00, 0x40, 0x02, 0x60, 0x9a, 0xd4, 0x5b, 0xc5,
-  0x3b, 0x9c, 0xbc, 0x08, 0x7c, 0x4d, 0x9b, 0xbf, 0x2d, 0xeb, 0x25, 0x19,
-  0xee, 0x9d, 0xe6, 0x16, 0x46, 0x90, 0x35, 0xc6, 0x78, 0x33, 0x12, 0x69,
-  0x59, 0xd0, 0x9f, 0x56, 0xbb, 0xc8, 0xa1, 0xe7, 0xd2, 0x92, 0x54, 0xe4,
-  0x1c, 0x24, 0x0b, 0xc1, 0xde, 0xcd, 0x46, 0xb4, 0x48, 0xcb, 0xdd, 0xa5,
-  0x85, 0xfb, 0x84, 0x82, 0x17, 0x10, 0x3b, 0xd3, 0x9c, 0x02, 0x5f, 0x74,
-  0xf0, 0x56, 0x48, 0xf1, 0xad, 0x7a, 0x69, 0xe4, 0x0c, 0x69, 0x55, 0x2c,
-  0x44, 0x02, 0x01, 0xa2, 0x42, 0xc6, 0x28, 0x70, 0x9e, 0x34, 0xd9, 0xfe,
-  0xad, 0x8f, 0x09, 0x16, 0xce, 0x5f, 0xc9, 0x89, 0xd1, 0x67, 0x8d, 0xa6,
-  0xfa, 0x92, 0xf6, 0x5b, 0xa0, 0x05, 0x5c, 0x9e, 0x8e, 0x62, 0x0b, 0xda,
-  0x76, 0xa6, 0xd3, 0xfb, 0x24, 0x72, 0xc9, 0xbf, 0xc2, 0xfe, 0xa6, 0x92,
-  0xb4, 0x25, 0xa3, 0x72, 0x06, 0x73, 0x46, 0xd7, 0x7a, 0x66, 0xba, 0x29,
-  0x86, 0x04, 0x07, 0xea, 0x48, 0x8c, 0x19, 0x35, 0xaa, 0x21, 0x35, 0xc2,
-  0xfa, 0x96, 0x8e, 0x0e, 0xfd, 0x76, 0xe1, 0x4c, 0xea, 0x6e, 0x10, 0xef,
-  0xf7, 0x5b, 0xf5, 0xb6, 0x95, 0x64, 0xa6, 0x95, 0xf3, 0xe3, 0xb7, 0x50,
-  0xec, 0x53, 0xb3, 0x71, 0xde, 0xa9, 0x1f, 0x47, 0xe3, 0x70, 0xe3, 0x65,
-  0x3e, 0x6b, 0x39, 0x4b, 0x9d, 0x2d, 0x82, 0x20, 0x18, 0xef, 0x2b, 0x74,
-  0x8d, 0xdd, 0xfe, 0x39, 0xfc, 0x66, 0xdd, 0x5d, 0xd6, 0xdc, 0x2f, 0xc4,
-  0xe5, 0xb7, 0xac, 0x5b, 0x96, 0xb5, 0xde, 0xce, 0xb3, 0x06, 0xca, 0x07,
-  0x29, 0xfc, 0x5e, 0x9b, 0xc1, 0x0a, 0xa1, 0x5b, 0x74, 0x19, 0x5c, 0x17,
-  0xf9, 0xdf, 0xc5, 0xb7, 0x90, 0x15, 0xb7, 0x79, 0x55, 0x16, 0xa4, 0xaa,
-  0x18, 0x9b, 0xa0, 0xca, 0x21, 0x9c, 0x49, 0xdd, 0x35, 0xe2, 0x63, 0xf3,
-  0xe8, 0xfd, 0xc5, 0xe9, 0x87, 0xa3, 0xc3, 0x0f, 0x5f, 0xbf, 0x7f, 0xf7,
-  0xfa, 0xf4, 0x78, 0xb3, 0x7b, 0xa8, 0xaf, 0x58, 0x2c, 0xd0, 0x41, 0xa9,
-  0x49, 0x21, 0xc3, 0x09, 0x31, 0x5d, 0xe4, 0x96, 0xaf, 0xf3, 0x5b, 0x23,
-  0xd6, 0xa0, 0x5a, 0xc1, 0x79, 0x89, 0xbf, 0xc1, 0xdc, 0x97, 0x09, 0xef,
-  0x34, 0x37, 0x36, 0xf7, 0xb1, 0xe9, 0x34, 0x9f, 0x3e, 0x19, 0xbc, 0x9e,
-  0x14, 0x31, 0x67, 0xb4, 0x83, 0xc1, 0xc8, 0x68, 0x89, 0xe9, 0x32, 0x21,
-  0x95, 0xce, 0xd3, 0x9e, 0x3d, 0x3f, 0xe6, 0xb2, 0x31, 0xca, 0xa3, 0x7a,
-  0x4e, 0x8d, 0x75, 0x56, 0x7e, 0xd4, 0x88, 0xa8, 0xd1, 0x3c, 0x0f, 0x23,
-  0xcb, 0x5d, 0xf3, 0xba, 0xf0, 0x54, 0x6c, 0x52, 0x4b, 0x66, 0xff, 0x0e,
-  0xa4, 0x93, 0x93, 0xaa, 0x31, 0x6a, 0x5f, 0x96, 0xe3, 0x60, 0x68, 0xc8,
-  0x87, 0xd4, 0x62, 0x78, 0x2d, 0xba, 0xfa, 0x89, 0x31, 0x0a, 0xef, 0x69,
-  0x0e, 0xa8, 0x91, 0x61, 0xf6, 0x29, 0xc3, 0xc9, 0x93, 0xb7, 0x8e, 0x96,
-  0x15, 0xce, 0xf2, 0x0f, 0x46, 0x27, 0x21, 0x09, 0xf8, 0x1a, 0x6e, 0x0f,
-  0xf3, 0x82, 0x3e, 0x64, 0x2e, 0x9b, 0xee, 0xc5, 0x57, 0xce, 0xa6, 0xe4,
-  0x5e, 0x80, 0x89, 0x09, 0x87, 0xc0, 0xf9, 0xe1, 0xe5, 0xb7, 0xc1, 0x9c,
-  0x90, 0x98, 0x77, 0xf0, 0x03, 0xd9, 0x8a, 0x30, 0x8c, 0xea, 0x46, 0x0e,
-  0xc8, 0xbb, 0xd1, 0x28, 0x41, 0x70, 0x7b, 0x96, 0x8f, 0xab, 0x94, 0xbe,
-  0x49, 0x3f, 0xa6, 0x9f, 0x9a, 0x6d, 0xdd, 0x69, 0xee, 0xfc, 0xbb, 0xa3,
-  0xd1, 0x1f, 0xf6, 0xf6, 0x8c, 0xf2, 0x37, 0x5d, 0x9a, 0x79, 0xd9, 0x32,
-  0xaf, 0x14, 0xb5, 0x39, 0x99, 0xf3, 0x61, 0x5d, 0x6e, 0xe3, 0xf2, 0x86,
-  0xc6, 0x87, 0xeb, 0x21, 0xbd, 0x35, 0xb7, 0x2e, 0x76, 0x12, 0xcf, 0x31,
-  0xed, 0xe7, 0xae, 0x9a, 0xce, 0x0b, 0xac, 0xb1, 0x7f, 0x23, 0x31, 0xcc,
-  0xbd, 0x3d, 0xbb, 0x0f, 0x46, 0xb1, 0x95, 0x9f, 0x8d, 0x24, 0x72, 0x9e,
-  0x4e, 0xcc, 0x5f, 0xc9, 0x86, 0xda, 0xa6, 0xb1, 0xb5, 0xcf, 0x98, 0x8e,
-  0x6b, 0xc4, 0x5a, 0xe9, 0x25, 0xb9, 0x38, 0x11, 0xf0, 0x0f, 0xe5, 0x42,
-  0xd1, 0x3d, 0x5e, 0x0e, 0x54, 0x81, 0xce, 0x8e, 0xd3, 0xc9, 0xc7, 0xbb,
-  0xb4, 0x9a, 0xb2, 0xc3, 0xc4, 0xec, 0x99, 0x71, 0x3e, 0xcb, 0x9b, 0x7b,
-  0xbe, 0x3d, 0xba, 0xa3, 0xe0, 0xd0, 0x11, 0x4d, 0xa1, 0x39, 0x49, 0xd7,
-  0xc6, 0x16, 0x22, 0x2d, 0x94, 0x2c, 0x44, 0x73, 0x30, 0x3c, 0x5d, 0x1f,
-  0xaa, 0x52, 0x63, 0x55, 0x1d, 0xfb, 0xed, 0x4e, 0x73, 0x70, 0x3f, 0xd1,
-  0x49, 0x42, 0x37, 0xdd, 0xee, 0x55, 0x41, 0xe8, 0x8b, 0x29, 0xdd, 0x40,
-  0x49, 0x7d, 0x6f, 0x6e, 0xfb, 0x79, 0x12, 0x51, 0x15, 0x81, 0x75, 0x48,
-  0xbe, 0xcb, 0xee, 0x8d, 0x61, 0x91, 0x17, 0x4e, 0x56, 0xb2, 0x8f, 0x28,
-  0x23, 0x4b, 0x95, 0x75, 0xd2, 0x5c, 0xfd, 0x8c, 0x99, 0xb8, 0x8a, 0xf9,
-  0x26, 0x09, 0x2d, 0x2b, 0x7e, 0x5f, 0xf5, 0x71, 0x6a, 0x62, 0xb3, 0x6e,
-  0x09, 0x65, 0x7c, 0x29, 0xb6, 0x15, 0x83, 0x8b, 0x13, 0x2e, 0x13, 0x8e,
-  0x09, 0x93, 0xcb, 0xb9, 0xe6, 0xbd, 0x37, 0x4b, 0xeb, 0x06, 0x36, 0x05,
-  0xc6, 0x2d, 0x9e, 0x89, 0xf6, 0x1d, 0x02, 0x39, 0xf2, 0xd2, 0x1c, 0xb4,
-  0x7f, 0xfc, 0x0a, 0xe1, 0xe3, 0x8a, 0xe3, 0x19, 0x4a, 0x55, 0x99, 0xab,
-  0xd6, 0x55, 0xf2, 0x56, 0xef, 0x0c, 0xea, 0x84, 0xf5, 0x9e, 0x2c, 0x38,
-  0xd6, 0xc7, 0xea, 0x0d, 0xbb, 0x81, 0x42, 0x75, 0x95, 0x2c, 0x79, 0xf1,
-  0x16, 0x1c, 0xf4, 0x92, 0xad, 0x6c, 0x78, 0x6d, 0xda, 0xeb, 0x51, 0x3b,
-  0x7b, 0x07, 0xf4, 0xdf, 0x7d, 0xfc, 0xf7, 0x49, 0x4f, 0x81, 0x32, 0xfe,
-  0x52, 0xd3, 0x7d, 0xd3, 0x95, 0x96, 0xe2, 0x4a, 0xa7, 0xfb, 0x47, 0x2e,
-  0x20, 0x11, 0xc0, 0x24, 0x97, 0xe3, 0x87, 0x83, 0xb5, 0xab, 0xd3, 0x7e,
-  0x44, 0x03, 0x72, 0x13, 0x81, 0xbb, 0x0d, 0xb6, 0xe9, 0x98, 0xdc, 0x4e,
-  0x66, 0x6c, 0x13, 0xa3, 0xc1, 0xc0, 0x03, 0xc0, 0x81, 0x29, 0x9a, 0x8e,
-  0xc9, 0x87, 0x2a, 0xbb, 0x49, 0x6b, 0xa3, 0x4c, 0x2d, 0x1b, 0x9c, 0x8e,
-  0xae, 0xe5, 0x60, 0x8e, 0xd4, 0x2c, 0xb7, 0x2e, 0x17, 0xf9, 0xf0, 0xd0,
-  0x1a, 0x28, 0xb2, 0x8a, 0xec, 0xbc, 0x9c, 0x95, 0x77, 0xfa, 0xc4, 0x40,
-  0x90, 0x2b, 0xb1, 0x8b, 0xcb, 0xac, 0x26, 0xc0, 0x2f, 0xf4, 0x98, 0x1f,
-  0x84, 0x9a, 0x93, 0xb6, 0x43, 0xb0, 0x1a, 0x73, 0x04, 0xaf, 0xcc, 0x8c,
-  0x91, 0xe5, 0x31, 0xc3, 0xba, 0x91, 0x8d, 0x85, 0x5e, 0x07, 0x1a, 0x90,
-  0x68, 0x22, 0xf9, 0x95, 0x38, 0x5e, 0xe4, 0xdf, 0x90, 0xf8, 0xa2, 0x1f,
-  0xd4, 0x1c, 0xa8, 0xea, 0x2a, 0x07, 0x0f, 0x6f, 0x6d, 0x3d, 0xc0, 0xf6,
-  0x2e, 0x96, 0xc1, 0xb2, 0xaf, 0x53, 0xf7, 0xb5, 0x68, 0xc4, 0x31, 0x43,
-  0xdb, 0xf4, 0x8a, 0x63, 0x06, 0xbf, 0xfe, 0x90, 0x98, 0x1e, 0x0f, 0xc8,
-  0xcd, 0xb1, 0xac, 0x1f, 0x71, 0x46, 0x3c, 0xa1, 0xc0, 0xef, 0x58, 0x47,
-  0x0f, 0x07, 0xe4, 0xfc, 0x09, 0xe8, 0xee, 0xc2, 0x7b, 0xcf, 0xd9, 0x72,
-  0xe4, 0x9d, 0xac, 0x11, 0x37, 0x74, 0x21, 0xa6, 0xfc, 0x56, 0xfa, 0x31,
-  0x1d, 0x26, 0x67, 0x47, 0xa3, 0x73, 0xfa, 0x84, 0xd9, 0x1a, 0xc5, 0xb5,
-  0xe9, 0xc5, 0xe9, 0xa8, 0xd3, 0x9c, 0xb1, 0xd0, 0xb3, 0xa2, 0x6e, 0x41,
-  0xbd, 0x56, 0x4e, 0xb3, 0x3a, 0x00, 0x35, 0x32, 0x2e, 0x9d, 0x35, 0x16,
-  0x29, 0x42, 0x5a, 0x14, 0xa1, 0xa1, 0xf0, 0x69, 0xc2, 0x47, 0x2d, 0xf8,
-  0xd0, 0xc2, 0x6c, 0xf8, 0xe9, 0xb6, 0x75, 0x29, 0xf4, 0x75, 0x2f, 0x58,
-  0x4f, 0x7f, 0xbd, 0xbc, 0x26, 0x2d, 0xb9, 0x56, 0xdb, 0xc6, 0x7e, 0xc1,
-  0xcc, 0x46, 0x70, 0xc1, 0xeb, 0xb0, 0xcd, 0x99, 0xe0, 0x63, 0x63, 0xd4,
-  0x7a, 0x02, 0x41, 0xe0, 0x12, 0x2f, 0x4a, 0xd7, 0x2a, 0x69, 0xf2, 0xc0,
-  0x60, 0xe5, 0xf0, 0x8d, 0x4f, 0x32, 0xa3, 0x24, 0x4d, 0x23, 0x97, 0x14,
-  0x2f, 0x8a, 0x2a, 0xf6, 0x57, 0x82, 0xbb, 0x8a, 0xf8, 0x29, 0xd0, 0xd0,
-  0x84, 0x95, 0x08, 0xda, 0xf5, 0xf0, 0x31, 0xe6, 0xe4, 0x94, 0x25, 0x95,
-  0x8e, 0x4d, 0x4a, 0x6a, 0xcf, 0x9e, 0xfd, 0x6f, 0x8a, 0xa5, 0x99, 0xf8,
-  0xc8, 0x6d, 0x41, 0xd7, 0x3e, 0xdd, 0x7d, 0x34, 0x81, 0xeb, 0x1c, 0x50,
-  0x4f, 0xf7, 0xda, 0x0e, 0x28, 0x6c, 0x36, 0xa3, 0xa2, 0x66, 0xc9, 0x4b,
-  0xfa, 0xef, 0x83, 0x52, 0x19, 0x51, 0x67, 0x5f, 0x0a, 0xe3, 0x5d, 0x09,
-  0x5b, 0xb0, 0x1c, 0x5d, 0xb3, 0xe3, 0x10, 0xd0, 0x1e, 0x92, 0xd8, 0xeb,
-  0x27, 0xaf, 0x8f, 0x2f, 0xb0, 0xfc, 0xc7, 0xef, 0xbe, 0x81, 0x4f, 0xd8,
-  0xaa, 0xb6, 0x53, 0xb4, 0x59, 0xb3, 0xad, 0xcb, 0x31, 0x1d, 0x11, 0xff,
-  0xdd, 0xa9, 0x26, 0xf1, 0x49, 0xae, 0x7c, 0x44, 0xfc, 0xa7, 0xbf, 0xdf,
-  0xc5, 0x15, 0xd8, 0x48, 0xc7, 0x7d, 0x99, 0x3a, 0xf1, 0x1c, 0x7c, 0xcc,
-  0xee, 0xdd, 0xdf, 0x30, 0x9d, 0xde, 0x1c, 0xbb, 0x87, 0x5f, 0x7a, 0x33,
-  0xf3, 0x97, 0x03, 0x42, 0x15, 0x18, 0xf5, 0x69, 0xfa, 0xf3, 0xaf, 0xbb,
-  0x0a, 0xc5, 0x4d, 0x93, 0xb4, 0xef, 0xc4, 0x88, 0x37, 0x00, 0x8e, 0x18,
-  0x8d, 0xdf, 0x73, 0xb8, 0x8e, 0x05, 0xbb, 0xa0, 0x4a, 0x09, 0x70, 0x4a,
-  0x3b, 0x3d, 0x2d, 0x58, 0x21, 0x22, 0x11, 0xcd, 0xa0, 0x0d, 0x80, 0x38,
-  0xba, 0xc7, 0x65, 0x52, 0xce, 0x82, 0x4b, 0xae, 0x65, 0x53, 0x41, 0xd5,
-  0xdc, 0x97, 0x6b, 0x0d, 0x76, 0x86, 0x5c, 0x3e, 0xac, 0xde, 0x75, 0xcf,
-  0x81, 0x55, 0xf6, 0x80, 0x87, 0xf2, 0xaf, 0xc4, 0xc4, 0x7b, 0x19, 0xe1,
-  0x29, 0x74, 0x8f, 0x35, 0xb5, 0xa1, 0x2c, 0x6f, 0x16, 0xd5, 0x4c, 0xcd,
-  0xea, 0xea, 0xec, 0x9a, 0x65, 0x27, 0x57, 0x88, 0xdb, 0x43, 0xec, 0xf7,
-  0xe7, 0x65, 0x36, 0xf2, 0xad, 0xca, 0x45, 0x75, 0x64, 0x18, 0x59, 0xf7,
-  0x30, 0x6b, 0x94, 0x50, 0x5c, 0x25, 0x62, 0xce, 0x63, 0x5b, 0xe9, 0xbe,
-  0xe2, 0xed, 0x47, 0x46, 0x52, 0xcf, 0x9b, 0x92, 0x5e, 0x6c, 0x29, 0x1a,
-  0x0e, 0x58, 0xc8, 0x79, 0xc9, 0x6f, 0x69, 0xea, 0x74, 0xef, 0x38, 0xcf,
-  0x5b, 0x5b, 0x27, 0x2b, 0x0b, 0xfa, 0xb3, 0x20, 0x8f, 0xcd, 0xbf, 0x44,
-  0x36, 0x64, 0x74, 0x2f, 0x92, 0xf3, 0x56, 0x82, 0x39, 0xd0, 0x5c, 0x08,
-  0xb8, 0x24, 0x60, 0xce, 0x88, 0x96, 0x1e, 0xb3, 0x35, 0x54, 0xeb, 0x50,
-  0x93, 0xc2, 0xb3, 0x33, 0x02, 0x35, 0xbc, 0xbb, 0x41, 0x8c, 0xfc, 0x6e,
-  0x28, 0x0c, 0xcc, 0x7b, 0x97, 0x9c, 0x83, 0xf9, 0xe4, 0x23, 0xd0, 0x3e,
-  0x72, 0x35, 0xb5, 0xe4, 0x87, 0x60, 0x6d, 0x18, 0x25, 0x16, 0x59, 0x02,
-  0x98, 0x39, 0xe4, 0xb5, 0xa4, 0x3d, 0x49, 0xd7, 0x72, 0x5e, 0xb0, 0xb2,
-  0xb6, 0xd2, 0x00, 0x36, 0x7d, 0xfd, 0xf0, 0xfa, 0xe4, 0x22, 0xd9, 0x32,
-  0xab, 0x3a, 0xee, 0x2a, 0x37, 0x7a, 0xaf, 0xef, 0x64, 0xcd, 0x64, 0x67,
-  0xf1, 0x31, 0xdf, 0x31, 0x76, 0xd0, 0x74, 0xbc, 0x6d, 0xb5, 0x7b, 0x7c,
-  0x0e, 0x9b, 0x50, 0x6d, 0x26, 0x35, 0x9a, 0x60, 0x35, 0x75, 0x4f, 0x83,
-  0x67, 0x45, 0x31, 0x50, 0xdc, 0x19, 0x4f, 0x98, 0x26, 0x76, 0x31, 0x00,
-  0xa4, 0xc2, 0x11, 0xcd, 0x84, 0xbc, 0x83, 0x19, 0x3b, 0x4e, 0x8d, 0xf9,
-  0xd7, 0x3d, 0xab, 0x8c, 0x58, 0x12, 0x1f, 0x03, 0xfb, 0x16, 0x14, 0x66,
-  0x23, 0xf7, 0x84, 0xd3, 0xf6, 0xfa, 0x04, 0x90, 0xa2, 0x49, 0x59, 0xd0,
-  0x5d, 0x34, 0x25, 0x07, 0x55, 0xb7, 0x39, 0xb8, 0xcc, 0x7a, 0xc3, 0x9d,
-  0x5e, 0x62, 0x21, 0x61, 0x66, 0x96, 0x81, 0x6a, 0x74, 0x18, 0x3c, 0xb3,
-  0xc5, 0xae, 0x96, 0x35, 0x3b, 0x5d, 0xc9, 0xde, 0xb7, 0xeb, 0x35, 0x8c,
-  0x09, 0x54, 0x6f, 0x39, 0xad, 0xb2, 0x65, 0x94, 0x62, 0x9c, 0x2b, 0x6b,
-  0x48, 0x8e, 0x6d, 0xa7, 0xb0, 0x54, 0xbd, 0x9f, 0x7a, 0x89, 0x07, 0x29,
-  0x6a, 0xb9, 0xc6, 0x72, 0x17, 0xf4, 0xf7, 0xae, 0x00, 0x73, 0x15, 0xdb,
-  0x13, 0x3c, 0xcd, 0x66, 0xf9, 0x3c, 0x6f, 0xa0, 0xc3, 0x7b, 0x5d, 0x08,
-  0x96, 0xa2, 0xdd, 0xa5, 0x9f, 0xc2, 0x2e, 0x29, 0x4c, 0x2f, 0xa5, 0x5f,
-  0x9b, 0x2e, 0xc1, 0x59, 0xc3, 0x28, 0xaa, 0xb8, 0x39, 0xd7, 0xee, 0x90,
-  0x05, 0xfa, 0xad, 0x89, 0xf5, 0xfc, 0x3e, 0x16, 0x6f, 0xfb, 0xc8, 0xd4,
-  0x0d, 0xe0, 0x44, 0x74, 0xce, 0xc4, 0x89, 0x31, 0xe6, 0xcb, 0x41, 0xcf,
-  0x58, 0xaa, 0x8f, 0x07, 0xb2, 0xdb, 0xbc, 0xbe, 0xa3, 0x82, 0x07, 0x92,
-  0x47, 0xdd, 0x1f, 0x6c, 0x86, 0x9a, 0x03, 0x03, 0xb3, 0xf3, 0xa3, 0x58,
-  0x9d, 0xd0, 0x80, 0x20, 0xac, 0xd8, 0xfd, 0xd3, 0xd5, 0x77, 0x55, 0xd8,
-  0x0f, 0xb2, 0x62, 0x52, 0x4e, 0x3b, 0xf6, 0x19, 0x4d, 0x82, 0x27, 0xe4,
-  0xb0, 0xe3, 0x39, 0x7e, 0x82, 0x5d, 0x1e, 0x77, 0xac, 0x91, 0x47, 0x87,
-  0xbd, 0x7d, 0xbf, 0x68, 0xdf, 0xc7, 0xcc, 0x7b, 0x6c, 0xfb, 0x5f, 0xb5,
-  0xeb, 0xff, 0x69, 0x7a, 0x84, 0xa7, 0x7e, 0x3d, 0x42, 0x91, 0x18, 0x4c,
-  0xf2, 0xc5, 0x0d, 0xf9, 0xdc, 0x5f, 0x22, 0x0c, 0x4d, 0x2e, 0x32, 0xfe,
-  0x41, 0x5c, 0x81, 0x18, 0xc9, 0x95, 0x57, 0x8b, 0x9f, 0x40, 0xdf, 0x16,
-  0xf1, 0x92, 0x2b, 0x6c, 0x5a, 0x8d, 0x31, 0x81, 0x3e, 0xe4, 0x81, 0xb5,
-  0x4a, 0x81, 0x08, 0x7d, 0x99, 0x6f, 0x7a, 0x7b, 0xbb, 0x30, 0xca, 0x51,
-  0x7f, 0x3b, 0x34, 0x26, 0x43, 0x3a, 0x25, 0x1c, 0x93, 0x99, 0x26, 0xa4,
-  0x5d, 0xe0, 0xe7, 0x9d, 0xe6, 0xd0, 0x79, 0x49, 0x47, 0xe0, 0x5b, 0xd7,
-  0xcc, 0xe8, 0xfb, 0x8b, 0xd3, 0x83, 0xee, 0x3c, 0x01, 0x0d, 0x5b, 0x1f,
-  0xec, 0xec, 0xc0, 0xf5, 0x76, 0x93, 0x7e, 0xfa, 0x34, 0xac, 0xb3, 0x9d,
-  0x69, 0x39, 0xa9, 0x77, 0xea, 0x7a, 0xa6, 0xb3, 0xd1, 0xc6, 0x8b, 0xff,
-  0x0e, 0x3e, 0x8b, 0x72, 0xbe, 0xa8, 0x60, 0x44, 0x0f, 0xea, 0x3a, 0x88,
-  0xd4, 0x8e, 0x8e, 0x34, 0x0e, 0x74, 0x5c, 0x30, 0xe6, 0x0b, 0x07, 0x7c,
-  0x90, 0xd3, 0x04, 0x7c, 0x9b, 0xe8, 0xcb, 0x98, 0x5e, 0x1b, 0x9b, 0xb4,
-  0x51, 0xd2, 0x7e, 0x44, 0xe6, 0xa4, 0xb2, 0x53, 0xbf, 0xf0, 0xcd, 0x16,
-  0xba, 0x3b, 0x4a, 0xfe, 0x43, 0xc0, 0x95, 0x79, 0xb3, 0x36, 0xce, 0xfc,
-  0xbc, 0xa3, 0xe6, 0xdb, 0x41, 0xc4, 0x63, 0x31, 0x6a, 0xea, 0xa5, 0x89,
-  0x7b, 0xd2, 0xd9, 0x3d, 0xdd, 0x84, 0x26, 0xb3, 0x7b, 0xaf, 0xcb, 0xca,
-  0x9c, 0x9a, 0x79, 0x1d, 0xb3, 0xf5, 0xc5, 0x25, 0x57, 0x23, 0x00, 0x9a,
-  0xd4, 0xe4, 0x8d, 0x60, 0xc7, 0xc3, 0xb2, 0xf0, 0x5a, 0x37, 0x83, 0x98,
-  0x20, 0xc8, 0x3e, 0x4c, 0x34, 0xaa, 0xb5, 0xca, 0xcf, 0xe8, 0xc5, 0x73,
-  0x2d, 0x3a, 0xb1, 0x6b, 0x31, 0x2e, 0x0b, 0xe7, 0x09, 0x84, 0x34, 0x32,
-  0x5d, 0xee, 0xc7, 0x7a, 0x87, 0x75, 0xae, 0x32, 0x7a, 0x14, 0x12, 0xbd,
-  0xaa, 0x4a, 0x4f, 0x8c, 0x0f, 0xbe, 0x83, 0x3a, 0x65, 0x64, 0x43, 0x7e,
-  0xad, 0xb1, 0x8e, 0xee, 0xf1, 0xb5, 0xd0, 0xff, 0x86, 0xf0, 0x35, 0x1a,
-  0xc9, 0xa8, 0x68, 0xeb, 0xb3, 0x1a, 0xa5, 0xf0, 0x81, 0x9a, 0xa5, 0x98,
-  0x46, 0x31, 0x04, 0x75, 0x11, 0x1c, 0x07, 0x82, 0xd6, 0xfb, 0xaf, 0x50,
-  0x6c, 0x3b, 0xd1, 0xf3, 0xe9, 0xbe, 0xe1, 0x6f, 0x50, 0xa4, 0x9f, 0x60,
-  0x2d, 0xba, 0xfa, 0x0d, 0x40, 0x21, 0xd6, 0x16, 0x8b, 0xe5, 0x46, 0x74,
-  0xc7, 0xa3, 0x00, 0x31, 0x51, 0x42, 0x73, 0x24, 0xe3, 0xa4, 0x00, 0x9f,
-  0xd5, 0x56, 0xb1, 0xf7, 0x52, 0x22, 0x3c, 0x87, 0x39, 0x1a, 0xec, 0xda,
-  0x78, 0xfc, 0x7b, 0x46, 0x05, 0x2a, 0x9e, 0x16, 0x5a, 0x80, 0x11, 0x43,
-  0x4d, 0x06, 0x5c, 0x14, 0xe5, 0x60, 0xcd, 0x4a, 0x77, 0xbd, 0x98, 0xdd,
-  0x67, 0x04, 0x22, 0x30, 0xf3, 0x5d, 0x9d, 0xe3, 0x94, 0xfc, 0xe4, 0x1e,
-  0x90, 0x87, 0xfd, 0x76, 0xaa, 0xe6, 0xcf, 0xa0, 0x52, 0x71, 0xb0, 0x22,
-  0x11, 0xfd, 0x31, 0x49, 0x64, 0xf9, 0xa2, 0xc6, 0x90, 0x60, 0xc7, 0x18,
-  0x8e, 0x9f, 0x23, 0xf9, 0x43, 0x52, 0x13, 0x18, 0x0a, 0xa7, 0x4e, 0x9c,
-  0xba, 0xec, 0xcb, 0xd4, 0xcd, 0x28, 0x1c, 0x51, 0x49, 0x1f, 0xbb, 0x3b,
-  0xca, 0xa6, 0x1d, 0xf8, 0x60, 0x2c, 0x5a, 0x1d, 0x8b, 0x28, 0xab, 0x43,
-  0xc7, 0xb1, 0x9b, 0xcd, 0xa8, 0xbe, 0x16, 0xc0, 0xf3, 0xd0, 0x93, 0x2a,
-  0xd3, 0x4f, 0x14, 0x65, 0xb7, 0x57, 0xd2, 0x8f, 0x41, 0x68, 0xbd, 0x58,
-  0x04, 0x9a, 0xd7, 0x01, 0x45, 0xa2, 0xd9, 0x65, 0x8e, 0xdf, 0x78, 0x99,
-  0x7b, 0x00, 0x36, 0x4b, 0x69, 0x83, 0x6f, 0xfe, 0x42, 0xb6, 0x9f, 0x93,
-  0xed, 0xd2, 0x75, 0xd8, 0x14, 0x93, 0x59, 0x59, 0xab, 0x43, 0x91, 0x96,
-  0x89, 0xd3, 0x40, 0xcc, 0xc1, 0xf8, 0x41, 0x7e, 0x20, 0x6b, 0x20, 0xbf,
-  0xe0, 0x66, 0xaf, 0x4a, 0xf2, 0x2e, 0x86, 0x1e, 0x40, 0x51, 0xc2, 0x5c,
-  0xe6, 0x0a, 0xb9, 0x0f, 0xac, 0xe2, 0x7d, 0x90, 0xfc, 0xf4, 0x53, 0x3f,
-  0x21, 0xed, 0xef, 0x27, 0x63, 0x53, 0xfe, 0x64, 0x36, 0x59, 0xf2, 0x53,
-  0x25, 0x82, 0xe3, 0xa7, 0x5b, 0xf3, 0xc9, 0x6e, 0xbc, 0x88, 0xdc, 0x26,
-  0xf5, 0x0c, 0xfe, 0x50, 0x56, 0x28, 0x04, 0x72, 0x72, 0xaf, 0x11, 0x02,
-  0xce, 0xd1, 0x81, 0xf3, 0x82, 0xfd, 0x7e, 0x76, 0x45, 0x01, 0x7d, 0x09,
-  0xed, 0xe3, 0xe5, 0xbc, 0x10, 0x35, 0x8c, 0x37, 0x22, 0x8e, 0x38, 0xe4,
-  0xfe, 0xe6, 0x1f, 0x36, 0xdd, 0x9e, 0xe9, 0xab, 0xcf, 0xaa, 0x51, 0xb9,
-  0x1a, 0x39, 0x4e, 0x7a, 0xea, 0x35, 0x9d, 0x05, 0xd1, 0x38, 0x46, 0x84,
-  0x18, 0xc9, 0x79, 0x46, 0x0e, 0x23, 0x06, 0x25, 0x97, 0x16, 0xca, 0x05,
-  0x6c, 0xf6, 0xe2, 0xe6, 0xbe, 0xa6, 0x80, 0x59, 0x4c, 0xda, 0xb8, 0xab,
-  0x9f, 0x7a, 0x17, 0x8d, 0x36, 0x8e, 0x9c, 0xf9, 0x88, 0x07, 0xa0, 0x5a,
-  0x9a, 0x2d, 0xd0, 0x92, 0x8f, 0xa6, 0x2f, 0x9b, 0x83, 0x4d, 0x04, 0x8e,
-  0xe0, 0xdc, 0x15, 0xf1, 0x57, 0x85, 0xb8, 0x2e, 0x6d, 0xc6, 0xc3, 0x7d,
-  0x04, 0x9f, 0x6c, 0x19, 0xd8, 0x1c, 0x8b, 0x52, 0xb0, 0x89, 0xcb, 0xb6,
-  0xa2, 0x74, 0x89, 0xb0, 0xfb, 0xfd, 0x88, 0x29, 0x25, 0x38, 0x66, 0xfb,
-  0xae, 0x51, 0x12, 0x9d, 0xb7, 0x73, 0x30, 0x40, 0x12, 0xea, 0x82, 0x13,
-  0x47, 0x79, 0x73, 0xd0, 0xc5, 0x8a, 0xc4, 0xc3, 0x9a, 0x3c, 0x70, 0x81,
-  0x5c, 0x55, 0x14, 0x46, 0x63, 0x73, 0x26, 0xe9, 0x2c, 0x53, 0xd2, 0xe2,
-  0x5d, 0x21, 0x49, 0x67, 0xa3, 0x12, 0x26, 0xc7, 0x04, 0x91, 0x23, 0x44,
-  0x29, 0x05, 0xe2, 0x1c, 0xea, 0xba, 0x74, 0xd9, 0x05, 0x0a, 0x0f, 0xf5,
-  0xe9, 0x55, 0xd2, 0x5b, 0xad, 0xf6, 0xf4, 0xba, 0x6f, 0xfc, 0x60, 0x43,
-  0x4d, 0x70, 0xad, 0x89, 0xdb, 0xd2, 0xf4, 0x61, 0x4b, 0xb0, 0x0b, 0x83,
-  0xbf, 0x31, 0x30, 0x89, 0xe1, 0xc5, 0x7a, 0x8f, 0x6e, 0x27, 0x8c, 0xcd,
-  0xaa, 0x83, 0xe0, 0x64, 0xe5, 0x85, 0xb6, 0xbd, 0x09, 0x76, 0xc1, 0xe1,
-  0x1c, 0x2e, 0x1d, 0xdc, 0x51, 0xac, 0x30, 0x7a, 0x4f, 0x77, 0xe5, 0x8f,
-  0x7d, 0x9b, 0xf0, 0x8f, 0xf4, 0x3d, 0x71, 0xb5, 0xe8, 0x15, 0xa1, 0xe7,
-  0xdb, 0xe8, 0xf3, 0x48, 0xe4, 0x54, 0xe4, 0x25, 0xf4, 0x9f, 0x60, 0x76,
-  0xf6, 0xb6, 0xc5, 0xa3, 0x80, 0x5c, 0x4c, 0x20, 0xe2, 0xc4, 0x6d, 0xd2,
-  0xbb, 0x29, 0x39, 0x7a, 0xdb, 0x3b, 0x20, 0x0c, 0x39, 0x03, 0xd2, 0x64,
-  0x84, 0x36, 0x88, 0xd9, 0x3d, 0x58, 0x08, 0x8f, 0x7f, 0x7b, 0xf6, 0xf6,
-  0xb8, 0x0d, 0x7e, 0xc2, 0x4f, 0x62, 0x6e, 0x05, 0x23, 0xad, 0xde, 0x18,
-  0x11, 0xc3, 0x3b, 0x28, 0x0d, 0x54, 0x37, 0x6c, 0x2f, 0xd3, 0xaf, 0xeb,
-  0xac, 0x59, 0xdc, 0x2d, 0xf3, 0xe9, 0xd6, 0x36, 0xed, 0x0f, 0x42, 0x3e,
-  0x0e, 0x00, 0xb8, 0x65, 0x0b, 0xab, 0x4e, 0xb6, 0x58, 0x19, 0xaf, 0xb2,
-  0x66, 0x59, 0x15, 0xec, 0x09, 0x4a, 0xa8, 0xfb, 0x61, 0x48, 0x27, 0x91,
-  0x7b, 0xcd, 0xb7, 0x81, 0x24, 0xab, 0x9a, 0x03, 0xc7, 0xdc, 0xe4, 0x36,
-  0x49, 0x01, 0x23, 0x47, 0x11, 0x3f, 0xc7, 0xda, 0xd3, 0x58, 0x82, 0x7b,
-  0x0a, 0x73, 0xa1, 0xe9, 0x89, 0x87, 0xe7, 0xe7, 0xaf, 0x0f, 0x2f, 0x0f,
-  0xed, 0xd8, 0x70, 0x11, 0x43, 0xb2, 0x40, 0x1d, 0x36, 0x22, 0x89, 0xb4,
-  0x23, 0x7a, 0x72, 0xf3, 0x8f, 0xef, 0x47, 0xc7, 0x17, 0xdd, 0x85, 0x3d,
-  0xbf, 0x38, 0xa3, 0x8c, 0xf5, 0x3f, 0xfe, 0x74, 0x48, 0x91, 0x22, 0xf1,
-  0x73, 0xbf, 0x4e, 0x9b, 0x74, 0x33, 0x38, 0xd5, 0xfb, 0x66, 0xaf, 0x9d,
-  0x01, 0xbd, 0xa3, 0x1d, 0xbc, 0x92, 0xdb, 0x0c, 0x46, 0x7f, 0xf2, 0x81,
-  0xd6, 0xb4, 0x9a, 0x28, 0xf6, 0x09, 0x1f, 0xd5, 0xe5, 0xec, 0x87, 0x1e,
-  0x0d, 0x6f, 0x20, 0xa5, 0x93, 0x64, 0x1a, 0xbd, 0xd7, 0xb9, 0x9a, 0x25,
-  0xd9, 0x27, 0x63, 0x59, 0x37, 0xba, 0xe9, 0xb1, 0xbf, 0x28, 0xa7, 0xa8,
-  0x3b, 0x2f, 0x6e, 0x7d, 0x74, 0x81, 0x18, 0x2d, 0xc5, 0xb9, 0xdd, 0x90,
-  0x03, 0x48, 0x6a, 0x33, 0xbb, 0x0d, 0xf8, 0xb4, 0xa1, 0xf6, 0x56, 0x8c,
-  0xd3, 0xc0, 0xb9, 0xc4, 0x0e, 0x43, 0xa4, 0xb8, 0x71, 0x97, 0x82, 0x09,
-  0xf9, 0x83, 0x39, 0x8f, 0x83, 0xe4, 0x58, 0xb0, 0xd7, 0x18, 0xb6, 0xf9,
-  0x41, 0xf0, 0x50, 0x63, 0x6d, 0x05, 0x11, 0xf6, 0x71, 0x59, 0xe1, 0xa5,
-  0x7d, 0xf6, 0xba, 0xca, 0x33, 0x27, 0x5a, 0x98, 0x87, 0xa8, 0xd3, 0x34,
-  0xe5, 0x30, 0x95, 0x7a, 0x91, 0x38, 0xf3, 0x20, 0xbd, 0xa6, 0xdd, 0x65,
-  0x1e, 0x35, 0x4a, 0xb4, 0xb1, 0x90, 0xe8, 0x5f, 0x3b, 0x7b, 0xc3, 0xdd,
-  0x5e, 0xd8, 0x79, 0x3a, 0x2c, 0xc8, 0xa2, 0xb5, 0xfe, 0x62, 0x92, 0x85,
-  0x4d, 0x59, 0x3e, 0xd8, 0x3f, 0x16, 0x61, 0x46, 0x0f, 0x5d, 0x98, 0xf6,
-  0xa3, 0x5d, 0x19, 0x9c, 0x05, 0xd0, 0x2e, 0x02, 0x4b, 0x55, 0x2a, 0x14,
-  0x8d, 0x4c, 0x2c, 0xca, 0x3b, 0x1a, 0x89, 0xd9, 0x6a, 0xb3, 0x59, 0x2b,
-  0xdd, 0xb9, 0x17, 0x9f, 0xe6, 0x02, 0xcc, 0x02, 0x59, 0x77, 0xb6, 0x63,
-  0xc1, 0x18, 0xb9, 0x3c, 0x7d, 0x3d, 0xce, 0xa2, 0x8c, 0x60, 0x30, 0xda,
-  0x5d, 0xe0, 0x7e, 0x2e, 0x32, 0x32, 0x90, 0x7b, 0x33, 0x3f, 0xd8, 0x38,
-  0xd0, 0x88, 0xe7, 0x80, 0x9a, 0x21, 0xed, 0xf3, 0x25, 0x67, 0x4e, 0x05,
-  0x86, 0xfb, 0xdb, 0xf4, 0x53, 0x3e, 0x5f, 0xce, 0x13, 0x7c, 0x8f, 0x15,
-  0x5a, 0x79, 0x52, 0x2f, 0x46, 0xf2, 0x9f, 0x70, 0xd0, 0x95, 0x16, 0x75,
-  0xb3, 0xf6, 0xec, 0xf7, 0xc8, 0x25, 0x63, 0x2e, 0x65, 0x35, 0x3b, 0x05,
-  0xbe, 0x3e, 0xcf, 0x9b, 0xba, 0x63, 0xf7, 0x1b, 0x55, 0x21, 0xa5, 0x18,
-  0x9a, 0xa6, 0x48, 0xf1, 0x25, 0x1e, 0x11, 0xe7, 0x9c, 0xba, 0xa7, 0x3a,
-  0x9c, 0x87, 0x12, 0xca, 0xaa, 0xbc, 0x9c, 0xda, 0x63, 0x43, 0x5a, 0x62,
-  0x5e, 0x2c, 0xcd, 0x44, 0x53, 0x73, 0x74, 0xab, 0xca, 0x6f, 0x82, 0x30,
-  0x1e, 0x00, 0x8d, 0x23, 0xe0, 0x54, 0x15, 0xf7, 0xf3, 0xd9, 0xf0, 0xc9,
-  0xfe, 0x70, 0xb7, 0xdf, 0xb2, 0xde, 0x25, 0xc3, 0xd1, 0x9c, 0xae, 0x49,
-  0x3e, 0xb7, 0xd9, 0x0f, 0xc3, 0x7f, 0x9a, 0x97, 0x86, 0xf2, 0x3e, 0x06,
-  0xf3, 0xf4, 0x13, 0x96, 0x2f, 0xba, 0xac, 0x65, 0xf2, 0xf2, 0xdb, 0xb3,
-  0xd1, 0xe5, 0xde, 0xc1, 0xf9, 0xd9, 0x85, 0xf9, 0x2f, 0xfd, 0x7d, 0x1f,
-  0x7f, 0xdf, 0x0f, 0xac, 0xc7, 0x37, 0x02, 0x5b, 0x52, 0x9c, 0x34, 0x54,
-  0x1d, 0xdc, 0x02, 0x62, 0xc5, 0x78, 0x0d, 0x11, 0xb6, 0x9d, 0xa4, 0xa0,
-  0x2e, 0x56, 0xc4, 0x67, 0xe6, 0x7d, 0x4a, 0x91, 0xa3, 0xc3, 0xf6, 0x7e,
-  0x06, 0x46, 0x26, 0x6f, 0x54, 0x95, 0x92, 0xcc, 0x2c, 0xcd, 0xf9, 0xea,
-  0x7a, 0xf4, 0x38, 0xab, 0x46, 0xa0, 0xd1, 0x4a, 0x68, 0x02, 0xb8, 0x43,
-  0xfb, 0x57, 0x93, 0x99, 0xd1, 0xf4, 0x33, 0x0a, 0x8f, 0x4e, 0x33, 0xce,
-  0xa6, 0xa7, 0x9f, 0xc4, 0x0c, 0x10, 0x41, 0x5e, 0x03, 0x2d, 0x3a, 0xec,
-  0xf6, 0x0c, 0xbb, 0x52, 0x70, 0x71, 0x94, 0xc6, 0x68, 0x7a, 0x99, 0xd7,
-  0x37, 0x8a, 0xfe, 0xef, 0x36, 0x07, 0xb0, 0x91, 0xef, 0xb0, 0x3a, 0x69,
-  0x38, 0xf3, 0xeb, 0xdd, 0xd9, 0x65, 0x92, 0x5e, 0x5d, 0x69, 0x9a, 0x1a,
-  0xa0, 0xa0, 0xa4, 0xb1, 0xee, 0xc0, 0xca, 0x57, 0x47, 0x73, 0x1d, 0x4a,
-  0x3e, 0xd6, 0x47, 0x2e, 0x4f, 0x47, 0x3b, 0xe4, 0xae, 0x62, 0x5c, 0xc7,
-  0xe8, 0xdd, 0x49, 0xbf, 0xe5, 0xc8, 0xf4, 0xa3, 0xb9, 0xdb, 0x74, 0x53,
-  0xca, 0x35, 0xda, 0x9d, 0x3b, 0xef, 0x2e, 0xb4, 0xe9, 0xcf, 0xc3, 0xa4,
-  0x87, 0x05, 0xed, 0xb1, 0x8e, 0xd9, 0xc3, 0xba, 0xf6, 0x18, 0xcb, 0x08,
-  0x18, 0x08, 0xfa, 0x4b, 0x59, 0xba, 0x01, 0x0a, 0x03, 0x5e, 0xde, 0x3e,
-  0xb2, 0x82, 0x49, 0xe9, 0xe8, 0x91, 0x45, 0x42, 0x03, 0xc3, 0xa0, 0x7a,
-  0xd2, 0xf0, 0x3e, 0x37, 0x8c, 0x76, 0xcd, 0xdf, 0xa9, 0x59, 0x6c, 0xda,
-  0x71, 0x16, 0xc3, 0x54, 0xe2, 0x3b, 0xae, 0x69, 0xdb, 0xb6, 0xe9, 0x18,
-  0x9c, 0xaf, 0xfc, 0x94, 0x6e, 0x0e, 0x23, 0x5d, 0x28, 0x26, 0x97, 0x5f,
-  0x53, 0x04, 0xac, 0x8b, 0xda, 0x77, 0x1d, 0x09, 0xdc, 0x50, 0xa4, 0x8f,
-  0xd5, 0x4d, 0xcf, 0xf3, 0x19, 0x34, 0x01, 0x2a, 0x12, 0xe8, 0xac, 0x4a,
-  0xed, 0x19, 0xed, 0x50, 0x5d, 0x86, 0x37, 0xbe, 0x75, 0xe0, 0xcf, 0x53,
-  0xba, 0x75, 0xac, 0x9f, 0x5b, 0x21, 0xd7, 0x7a, 0x90, 0x90, 0x94, 0x4d,
-  0x19, 0x84, 0x40, 0xe7, 0xd3, 0xd4, 0xb2, 0x73, 0xbc, 0xdb, 0x1c, 0x53,
-  0x7a, 0x18, 0x89, 0x90, 0x00, 0x69, 0x4b, 0x1d, 0x48, 0x7a, 0x7b, 0xfb,
-  0x9f, 0x0d, 0x77, 0xcd, 0xff, 0xa3, 0xa5, 0x11, 0x75, 0x91, 0x19, 0x0c,
-  0x5c, 0xa6, 0xba, 0xe0, 0x72, 0xbb, 0x4e, 0x66, 0xbd, 0x83, 0xca, 0xea,
-  0xba, 0x37, 0x7c, 0xf4, 0xbd, 0x42, 0x6b, 0x69, 0xef, 0x94, 0x74, 0x2a,
-  0x3f, 0xd1, 0x63, 0x5e, 0x2d, 0x67, 0x11, 0xb0, 0x8a, 0xe7, 0x36, 0x26,
-  0x05, 0x6d, 0x76, 0x2b, 0x4e, 0xe3, 0x6f, 0x49, 0x3c, 0x71, 0x16, 0xc5,
-  0xb0, 0x15, 0xea, 0x7f, 0xd1, 0xf2, 0x01, 0x1e, 0x89, 0xe1, 0x06, 0xd9,
-  0x3c, 0x30, 0x07, 0xe2, 0x65, 0x79, 0x75, 0x55, 0x67, 0x4d, 0xf7, 0x0e,
-  0x3a, 0x92, 0x47, 0x76, 0x2e, 0x40, 0x82, 0xe3, 0xc1, 0x9c, 0xdb, 0x49,
-  0xe2, 0x49, 0xda, 0xb4, 0x05, 0x17, 0x37, 0x37, 0x8c, 0x80, 0x3b, 0xdb,
-  0x4f, 0x78, 0xe0, 0x6c, 0xce, 0xd5, 0x0a, 0x52, 0x90, 0x71, 0x5e, 0x45,
-  0x38, 0x77, 0x4f, 0xc5, 0xc7, 0x7c, 0xb1, 0x20, 0x1b, 0x07, 0x8c, 0x1b,
-  0xb4, 0x77, 0x6d, 0x9c, 0x60, 0x9c, 0x99, 0x8d, 0x8a, 0xed, 0xac, 0x08,
-  0x18, 0xa3, 0x24, 0x4f, 0x2c, 0x7a, 0x78, 0x9c, 0x99, 0x63, 0x9b, 0x85,
-  0x5a, 0x3b, 0xb9, 0x36, 0xbc, 0x3c, 0x6b, 0x49, 0x0f, 0x9d, 0x52, 0x4e,
-  0x75, 0x91, 0xb2, 0x98, 0xa1, 0xbb, 0xc5, 0x65, 0x20, 0x4a, 0xea, 0x45,
-  0x0c, 0x88, 0xe5, 0x80, 0xf1, 0xd6, 0xe5, 0x36, 0x3a, 0xf9, 0x9f, 0xc7,
-  0x2e, 0x2b, 0xde, 0xa6, 0x9d, 0x33, 0xcc, 0x38, 0x06, 0xda, 0x4e, 0x7a,
-  0x83, 0xa3, 0x64, 0xd0, 0x43, 0x47, 0x5c, 0x14, 0xb5, 0xec, 0x80, 0x60,
-  0x61, 0xfb, 0x90, 0x2a, 0x91, 0x40, 0x1f, 0xda, 0xe1, 0x3c, 0xb4, 0x32,
-  0xd0, 0x9f, 0xb0, 0x84, 0x3c, 0xd9, 0x3a, 0x4a, 0x9c, 0x92, 0x46, 0xb2,
-  0x16, 0x7c, 0xb4, 0x2f, 0x2b, 0x8c, 0x3b, 0x79, 0x41, 0x6a, 0x23, 0x74,
-  0x98, 0x00, 0x0a, 0xab, 0x59, 0x48, 0x9c, 0x7e, 0xbb, 0x6c, 0xfe, 0x89,
-  0xb1, 0x92, 0x8a, 0xf6, 0x2f, 0x78, 0x55, 0xbc, 0x4d, 0x3d, 0xe1, 0x4d,
-  0x4d, 0x7c, 0x4e, 0x83, 0xbf, 0x1a, 0x3b, 0xfb, 0xa5, 0xfa, 0x2a, 0x56,
-  0xe4, 0xa9, 0x59, 0xb7, 0x46, 0x29, 0x41, 0x11, 0xec, 0x0d, 0x9b, 0x2f,
-  0xad, 0x73, 0xcd, 0x1e, 0x15, 0x40, 0x7d, 0x84, 0x2c, 0xaa, 0x2b, 0xeb,
-  0xaf, 0x70, 0xb5, 0xa5, 0x2e, 0x2f, 0x77, 0xea, 0xa5, 0xf7, 0x0f, 0x09,
-  0x18, 0x3c, 0xe3, 0x56, 0x6a, 0x34, 0x23, 0xad, 0x08, 0xbb, 0x49, 0x70,
-  0xed, 0xe6, 0xc5, 0x60, 0x9e, 0xcd, 0x09, 0xc0, 0xc7, 0x0f, 0x1a, 0x81,
-  0x58, 0x92, 0x16, 0xae, 0xbb, 0x91, 0xd7, 0x87, 0x0d, 0xf1, 0x46, 0x02,
-  0xdf, 0x53, 0x4e, 0x10, 0xa1, 0x6f, 0x86, 0x88, 0xa6, 0xb2, 0x10, 0xfc,
-  0x0c, 0x99, 0x58, 0xf6, 0xeb, 0x70, 0x94, 0x7d, 0x34, 0x2a, 0x74, 0xd1,
-  0xa7, 0x9f, 0x23, 0x15, 0x48, 0x67, 0x9f, 0x3a, 0xdb, 0x64, 0x45, 0x0c,
-  0x3f, 0xdf, 0xf2, 0x3e, 0xcb, 0x73, 0x9e, 0x2f, 0xe5, 0x5d, 0xd6, 0x48,
-  0x54, 0x94, 0xfb, 0x2e, 0xe1, 0x3b, 0x81, 0xd5, 0x9b, 0x4e, 0x74, 0x9a,
-  0x03, 0x7f, 0x49, 0xd6, 0x38, 0x9f, 0x90, 0xfa, 0x96, 0x52, 0x25, 0x6d,
-  0x20, 0xaf, 0x67, 0xdf, 0x9c, 0x83, 0x9e, 0xba, 0x60, 0xb9, 0xfb, 0x71,
-  0x89, 0xa0, 0x1d, 0x22, 0x57, 0x4f, 0x33, 0x8d, 0xed, 0x49, 0xc9, 0xbf,
-  0x0c, 0x52, 0x1e, 0x05, 0x5c, 0x6e, 0x74, 0x09, 0xc4, 0x28, 0xc5, 0x75,
-  0x8c, 0x31, 0x08, 0xca, 0x84, 0x55, 0x87, 0x6e, 0x26, 0x94, 0xcb, 0xe9,
-  0xa1, 0xf8, 0x70, 0x35, 0x55, 0xe7, 0x88, 0x76, 0xd4, 0x48, 0x61, 0x31,
-  0x8d, 0xee, 0x52, 0x6c, 0x35, 0xfb, 0x09, 0x88, 0x9b, 0xf0, 0x50, 0x29,
-  0xb8, 0x67, 0x30, 0x76, 0xdb, 0xd9, 0xe5, 0x73, 0x47, 0x5d, 0xb3, 0xf2,
-  0x10, 0xed, 0x79, 0x73, 0xb1, 0x6c, 0x42, 0xb2, 0x48, 0x5e, 0x0f, 0x52,
-  0xa4, 0xed, 0xa4, 0xf0, 0x14, 0xde, 0xdd, 0x94, 0x33, 0xb6, 0x8c, 0x83,
-  0x08, 0x8b, 0x26, 0x5c, 0x19, 0xed, 0x8a, 0xda, 0x21, 0xb4, 0x1a, 0x1c,
-  0xcb, 0xb7, 0x00, 0xc2, 0xb5, 0xc2, 0x24, 0x46, 0xc7, 0xcb, 0x52, 0xc2,
-  0x79, 0x2b, 0x14, 0xf4, 0x36, 0x4c, 0x4f, 0x31, 0xe7, 0x7c, 0x5c, 0xd6,
-  0xb2, 0x5f, 0x28, 0xa9, 0xc9, 0x6c, 0xb1, 0xb4, 0x82, 0x58, 0x16, 0xca,
-  0x06, 0x25, 0x98, 0xb2, 0x6a, 0x99, 0xc8, 0x27, 0xd2, 0x05, 0xbb, 0x28,
-  0xde, 0x9c, 0x52, 0x01, 0xcd, 0x36, 0x31, 0x3a, 0x00, 0xb9, 0x69, 0xb1,
-  0x77, 0xd0, 0x28, 0x13, 0x32, 0xdc, 0x80, 0x2e, 0x4d, 0xf2, 0x05, 0xcd,
-  0x29, 0xbc, 0x49, 0xc9, 0x6a, 0x6f, 0x96, 0xe9, 0xaa, 0xa9, 0x6b, 0x23,
-  0x77, 0x1e, 0x14, 0x4f, 0x4e, 0x83, 0x89, 0x84, 0x12, 0xb0, 0x6d, 0x57,
-  0x44, 0x0d, 0xfd, 0x85, 0x7c, 0x49, 0xe7, 0x6c, 0x85, 0x3c, 0x3a, 0x07,
-  0xb3, 0xcc, 0x4d, 0x9b, 0x9a, 0x00, 0x59, 0x50, 0x72, 0x8d, 0x68, 0xa2,
-  0x01, 0x37, 0xa5, 0xb7, 0xfc, 0x49, 0x13, 0x02, 0xeb, 0x38, 0xec, 0x66,
-  0xba, 0x31, 0xbb, 0x77, 0x2d, 0x7a, 0x19, 0x4a, 0x8a, 0x57, 0xf4, 0x78,
-  0x5b, 0xec, 0x27, 0xd2, 0xae, 0x56, 0x33, 0x32, 0xca, 0x37, 0x7f, 0xf3,
-  0xa0, 0x97, 0x28, 0xa5, 0x16, 0xdf, 0xe5, 0x68, 0x57, 0xe1, 0xf1, 0xd0,
-  0xb3, 0x60, 0xa7, 0x8a, 0xea, 0xc8, 0xc7, 0xbe, 0xdb, 0x1c, 0xf1, 0x34,
-  0xee, 0xbd, 0xfa, 0xfe, 0xf0, 0xf4, 0xfd, 0xf1, 0xde, 0x17, 0x09, 0xfd,
-  0x6b, 0x9f, 0xff, 0xb5, 0xdf, 0x8b, 0xae, 0x92, 0x11, 0x4e, 0x9b, 0xaf,
-  0x36, 0x93, 0xfa, 0x7e, 0x3e, 0x2e, 0x67, 0x76, 0x95, 0x64, 0x2e, 0x34,
-  0x54, 0xd6, 0x97, 0xdb, 0x5b, 0x13, 0xe6, 0xc4, 0x43, 0xde, 0x95, 0xd4,
-  0xb5, 0x00, 0x69, 0x54, 0xca, 0x20, 0x4e, 0xe7, 0x67, 0x6e, 0x35, 0x48,
-  0x6e, 0x53, 0xe1, 0x85, 0x78, 0xdd, 0xe5, 0x4a, 0x70, 0x13, 0xf3, 0x4f,
-  0xe9, 0x81, 0xae, 0x93, 0xa8, 0xd4, 0xe0, 0xab, 0xc5, 0x31, 0xfe, 0x79,
-  0xb2, 0x22, 0x10, 0xfc, 0x46, 0x2e, 0x01, 0xcc, 0xa1, 0x9c, 0x84, 0xfc,
-  0xae, 0x60, 0x85, 0x88, 0x24, 0xe7, 0x5e, 0x79, 0x4b, 0x36, 0x09, 0x24,
-  0x6d, 0x71, 0xdc, 0x40, 0x8f, 0x06, 0x6e, 0xbe, 0x72, 0x3e, 0x16, 0xad,
-  0xc5, 0xcb, 0x97, 0x33, 0xfb, 0xf1, 0x94, 0xf6, 0xe3, 0xac, 0x14, 0xeb,
-  0x44, 0xf3, 0x73, 0xaa, 0x16, 0x4b, 0x8f, 0xc7, 0x0b, 0x68, 0xe9, 0x8c,
-  0x84, 0x0f, 0xa8, 0x15, 0xf4, 0x63, 0x37, 0x73, 0x34, 0x8b, 0x47, 0x93,
-  0xa1, 0x08, 0xbc, 0x57, 0x5e, 0x39, 0x09, 0x6f, 0xc3, 0xa3, 0xfe, 0x35,
-  0x28, 0x5b, 0x88, 0xa0, 0x42, 0xb3, 0x34, 0x18, 0x0a, 0xa7, 0x02, 0x4a,
-  0x72, 0x30, 0x05, 0xda, 0xed, 0x8e, 0x34, 0x2b, 0x76, 0x3f, 0xcb, 0xb6,
-  0x35, 0x76, 0xa8, 0xd7, 0xcf, 0xce, 0xdb, 0xf2, 0xef, 0x66, 0xc6, 0x53,
-  0xf9, 0x48, 0xec, 0x0e, 0x93, 0x3b, 0x69, 0x65, 0xcf, 0xdd, 0x71, 0xe7,
-  0x74, 0x39, 0xff, 0x14, 0xb7, 0x8c, 0xd5, 0x14, 0x93, 0x6f, 0xd4, 0x24,
-  0xe0, 0x02, 0x83, 0x45, 0x90, 0xdb, 0xd6, 0x66, 0x5c, 0x7a, 0x57, 0x94,
-  0x4e, 0x89, 0xd9, 0x63, 0x25, 0x6f, 0x3d, 0xb7, 0xf4, 0x72, 0x0d, 0x74,
-  0x45, 0x6a, 0x57, 0xc7, 0x59, 0x71, 0x31, 0x1c, 0x7f, 0xca, 0xaa, 0x09,
-  0x25, 0xde, 0x4e, 0x8c, 0xa6, 0x08, 0xdd, 0x8b, 0x93, 0x85, 0x99, 0xb8,
-  0xa7, 0xb5, 0x6f, 0x54, 0xfc, 0xc1, 0x24, 0xd5, 0xf5, 0x5f, 0xb9, 0xf6,
-  0xc0, 0x1e, 0x4c, 0xcc, 0x1e, 0x1e, 0x5a, 0x8e, 0x14, 0xbd, 0xb0, 0xda,
-  0xe7, 0x5a, 0x13, 0x19, 0xe0, 0xe1, 0x0f, 0xa0, 0x42, 0x98, 0x61, 0x7d,
-  0xd1, 0x5b, 0x4d, 0xd9, 0x2e, 0xe8, 0x0b, 0x33, 0x5e, 0x38, 0x74, 0x09,
-  0x25, 0x4c, 0x82, 0x36, 0x60, 0x35, 0x2e, 0xca, 0xae, 0x0e, 0xb2, 0x99,
-  0x11, 0xc0, 0x28, 0xee, 0x95, 0x6c, 0x60, 0x0b, 0xb7, 0x18, 0x2b, 0x6b,
-  0x4a, 0x4a, 0x83, 0x70, 0x61, 0x98, 0x94, 0x35, 0x2b, 0xef, 0x28, 0x2e,
-  0xd2, 0xa6, 0x88, 0x9a, 0x97, 0x53, 0xde, 0x0f, 0xe3, 0x7b, 0xcb, 0xef,
-  0x3a, 0x20, 0xdd, 0x85, 0x3f, 0x3b, 0xd4, 0x6c, 0xdc, 0xe8, 0x0e, 0xb0,
-  0xe2, 0xa0, 0x83, 0x77, 0x4f, 0x1d, 0x76, 0xa1, 0x61, 0xff, 0x2e, 0xdf,
-  0xf7, 0x8e, 0x9f, 0x21, 0x76, 0xd1, 0x60, 0xc4, 0xe3, 0xb2, 0xb9, 0xb1,
-  0x57, 0x0e, 0x06, 0x4c, 0xee, 0x31, 0x63, 0xa9, 0x36, 0x50, 0xca, 0xd5,
-  0x32, 0x6b, 0x04, 0xd7, 0x26, 0xfe, 0x9b, 0x20, 0x04, 0xf8, 0x91, 0xd9,
-  0x41, 0xca, 0x46, 0x99, 0xdf, 0x84, 0x15, 0xa9, 0x41, 0x96, 0x39, 0xf9,
-  0x8f, 0x60, 0x94, 0x82, 0x84, 0xc6, 0x7c, 0x97, 0xc0, 0x42, 0x75, 0x4d,
-  0x84, 0x23, 0x34, 0xf4, 0x34, 0x48, 0x36, 0xc6, 0x54, 0x13, 0xe0, 0xc5,
-  0x2d, 0xea, 0x16, 0xd3, 0x01, 0x38, 0x43, 0x8e, 0xb3, 0x84, 0xc9, 0xcd,
-  0xbe, 0x1c, 0xeb, 0x3b, 0xf5, 0x36, 0x19, 0xdb, 0x11, 0x10, 0x58, 0x4b,
-  0xab, 0x5c, 0x71, 0x68, 0xff, 0x61, 0x43, 0x23, 0x30, 0xbc, 0xaa, 0x9a,
-  0x59, 0xd6, 0xc0, 0x53, 0x67, 0x91, 0x98, 0x98, 0xf2, 0x50, 0x78, 0xa5,
-  0x2e, 0x2c, 0x06, 0x35, 0xbf, 0x3b, 0x8a, 0xc5, 0x14, 0xaa, 0x98, 0xbe,
-  0x03, 0xe5, 0xc5, 0x63, 0x4b, 0xaa, 0x4b, 0x39, 0x91, 0x68, 0x9e, 0x04,
-  0x8d, 0x93, 0x34, 0x31, 0xda, 0x80, 0xae, 0x0c, 0xf0, 0xe3, 0x1e, 0x2d,
-  0xcd, 0x56, 0x34, 0x5d, 0x5f, 0x3e, 0x98, 0x17, 0x71, 0x33, 0x0e, 0xcc,
-  0xfe, 0xaf, 0x63, 0xf1, 0x43, 0xbd, 0x5c, 0x27, 0x65, 0xf1, 0xd7, 0x65,
-  0x31, 0x69, 0x2c, 0x26, 0x0e, 0x3a, 0x69, 0xd9, 0xf7, 0x48, 0x9b, 0x24,
-  0x60, 0x6a, 0x81, 0x34, 0xdd, 0x8d, 0x8f, 0x0f, 0x89, 0xfb, 0x8e, 0x32,
-  0x8f, 0x08, 0x2e, 0x4c, 0xd7, 0xce, 0xcc, 0xcb, 0x51, 0xba, 0xc9, 0xcd,
-  0x0a, 0x55, 0x93, 0x1b, 0x64, 0x55, 0xc2, 0xbd, 0x93, 0xa9, 0xcf, 0x72,
-  0x05, 0xfc, 0x87, 0x9b, 0x15, 0x45, 0x29, 0x27, 0x91, 0x44, 0x79, 0xd3,
-  0x65, 0xa1, 0x82, 0x7a, 0x55, 0x3f, 0x43, 0x74, 0xd5, 0x0d, 0xcd, 0x79,
-  0x36, 0xab, 0x33, 0x1b, 0xc2, 0xb7, 0xef, 0x38, 0x53, 0x04, 0x66, 0x71,
-  0x51, 0x72, 0x0c, 0x8e, 0xbc, 0x41, 0x79, 0xf4, 0x94, 0xa3, 0x27, 0x46,
-  0x05, 0x91, 0xce, 0x90, 0xa1, 0x47, 0xfb, 0xe4, 0x5e, 0xb3, 0xee, 0xa5,
-  0x05, 0xdd, 0x75, 0x9a, 0x75, 0x1f, 0xdc, 0x3e, 0xa5, 0x9d, 0x37, 0xc9,
-  0x64, 0xd7, 0xa9, 0xca, 0x95, 0x94, 0x93, 0xb7, 0x0a, 0x39, 0x17, 0x4c,
-  0x6f, 0x98, 0xbf, 0x99, 0x82, 0x52, 0x83, 0xc1, 0x55, 0xb3, 0x18, 0x44,
-  0x97, 0x00, 0x6b, 0xdd, 0xde, 0x02, 0xb3, 0x2b, 0x61, 0x2d, 0x78, 0xab,
-  0x84, 0x2d, 0xb7, 0x04, 0x1a, 0x4f, 0x4e, 0xdf, 0xb0, 0x0f, 0xfa, 0xe8,
-  0x82, 0xfe, 0x96, 0x5b, 0xce, 0x86, 0x21, 0x0e, 0x05, 0x11, 0x32, 0x73,
-  0x04, 0xf5, 0xed, 0xf7, 0xdd, 0x84, 0x9f, 0xad, 0xb3, 0xd1, 0xce, 0x93,
-  0x17, 0xbb, 0x61, 0xea, 0xf9, 0x16, 0x7d, 0xc3, 0x91, 0xd9, 0x7c, 0x36,
-  0x7c, 0xba, 0x3b, 0xdc, 0xdd, 0xee, 0xf4, 0x86, 0xa6, 0x7b, 0x4d, 0x32,
-  0xb9, 0x52, 0x70, 0xda, 0x8b, 0x83, 0xa6, 0xc0, 0xe5, 0x6b, 0x2b, 0x68,
-  0xd3, 0x4f, 0x5b, 0xba, 0xc8, 0x6e, 0xcd, 0x56, 0x8b, 0x19, 0xc3, 0xc9,
-  0x69, 0x0e, 0x2c, 0xbb, 0x79, 0x8f, 0x6e, 0x33, 0xbd, 0x5f, 0x28, 0x2f,
-  0xb0, 0x9d, 0xab, 0x87, 0x47, 0xe8, 0xc2, 0x64, 0xc0, 0x70, 0x24, 0x08,
-  0x52, 0x9b, 0x4e, 0x55, 0x00, 0xc7, 0x21, 0xd8, 0xfe, 0xbb, 0x3b, 0x40,
-  0x3c, 0x87, 0xde, 0xde, 0x8b, 0xe1, 0x67, 0xfe, 0x9a, 0x92, 0x26, 0x3e,
-  0x48, 0xeb, 0x49, 0x9e, 0xaf, 0xb5, 0x31, 0x14, 0x75, 0xf8, 0xd7, 0x25,
-  0x68, 0x59, 0xcc, 0x36, 0xcd, 0x53, 0x8e, 0xa0, 0x3a, 0x36, 0xab, 0xa0,
-  0x59, 0x52, 0x23, 0xcd, 0x16, 0x5b, 0xd7, 0xae, 0xa4, 0x30, 0x11, 0xc9,
-  0xb6, 0x10, 0xf0, 0xc1, 0x9d, 0x37, 0xc3, 0xb9, 0xee, 0xa8, 0x52, 0xe6,
-  0x2c, 0x30, 0x81, 0xcb, 0xa2, 0x0a, 0x13, 0x4a, 0x08, 0x1f, 0x49, 0x74,
-  0x9e, 0x66, 0xee, 0xeb, 0x92, 0xe6, 0x29, 0x36, 0xa9, 0xf0, 0x1a, 0x80,
-  0xc2, 0xcc, 0x1a, 0x37, 0xf6, 0xec, 0x0b, 0x40, 0xe7, 0x2b, 0x0f, 0x50,
-  0xd3, 0x32, 0x50, 0xd2, 0x88, 0x32, 0xc8, 0x0c, 0xac, 0x09, 0xa2, 0xd6,
-  0x6c, 0x3f, 0xd1, 0x40, 0x98, 0x32, 0x26, 0x81, 0x2b, 0x82, 0x91, 0x1b,
-  0xc2, 0x0c, 0x4c, 0x84, 0x0c, 0x76, 0xb6, 0x22, 0x74, 0x1b, 0x7d, 0x33,
-  0x3e, 0xf0, 0x3b, 0x61, 0x07, 0x15, 0xd9, 0x1d, 0x49, 0xe3, 0x5a, 0xd4,
-  0x89, 0xaa, 0xca, 0xc9, 0x99, 0x63, 0x83, 0xfe, 0xac, 0x92, 0x11, 0x10,
-  0x92, 0x2e, 0xe8, 0x69, 0x24, 0x8b, 0x70, 0x82, 0xd3, 0x59, 0x5b, 0xc2,
-  0xac, 0x02, 0x0c, 0x45, 0xc4, 0xb8, 0xf3, 0x38, 0xab, 0x76, 0xe5, 0xa6,
-  0x03, 0x83, 0xb3, 0x03, 0x5e, 0x34, 0x11, 0x67, 0x0f, 0x81, 0x27, 0xd8,
-  0x33, 0xc2, 0x8c, 0x25, 0x98, 0xeb, 0xb4, 0x16, 0xb6, 0xef, 0x31, 0xef,
-  0xc6, 0x35, 0x5b, 0xa7, 0x4a, 0xef, 0x1e, 0xde, 0x8f, 0xde, 0xae, 0x91,
-  0x99, 0x9e, 0xc1, 0x55, 0xe2, 0x11, 0xac, 0xc1, 0x47, 0xa0, 0x78, 0xbd,
-  0x48, 0x4f, 0x85, 0xd8, 0x97, 0x59, 0x75, 0xcd, 0x64, 0x36, 0x62, 0xdc,
-  0xb0, 0x5c, 0xff, 0x6a, 0x0d, 0x48, 0xdf, 0x39, 0x15, 0xdd, 0x28, 0x5a,
-  0x9e, 0xf3, 0x0e, 0x4b, 0x13, 0x86, 0x65, 0xae, 0x3c, 0x46, 0xb9, 0x3f,
-  0xe2, 0x50, 0xb8, 0xd1, 0xf5, 0x3d, 0x08, 0x10, 0x2f, 0x00, 0x1c, 0x43,
-  0xde, 0x30, 0x85, 0xce, 0x2b, 0x86, 0x04, 0x64, 0x3a, 0x33, 0xda, 0x56,
-  0x08, 0xef, 0x5a, 0x9a, 0x96, 0x45, 0x56, 0x91, 0x14, 0x04, 0x6a, 0x7a,
-  0xa0, 0x60, 0xd7, 0xd8, 0xc5, 0x62, 0x36, 0xff, 0xd1, 0x37, 0x27, 0x40,
-  0xff, 0x9a, 0x43, 0x5f, 0x48, 0x6a, 0x2b, 0xf7, 0x9f, 0x69, 0xd5, 0xad,
-  0x11, 0x76, 0x9d, 0x5b, 0x93, 0x31, 0x4d, 0x5a, 0x94, 0x69, 0x1d, 0x1d,
-  0x39, 0x51, 0x65, 0x58, 0xf0, 0x8d, 0xa2, 0xd3, 0x52, 0x64, 0x81, 0x14,
-  0x52, 0x8d, 0x10, 0xa6, 0x0e, 0x52, 0x1e, 0x9d, 0x2f, 0x7c, 0x5d, 0x53,
-  0xb0, 0xd3, 0x5a, 0x42, 0x80, 0x50, 0x2c, 0x02, 0xb8, 0xb1, 0xdb, 0xaf,
-  0x4c, 0x53, 0x9f, 0x85, 0xd0, 0x29, 0xf9, 0x7c, 0xbc, 0x8e, 0x04, 0xd6,
-  0xa4, 0x63, 0x8e, 0xdb, 0xa9, 0xcb, 0x34, 0x1c, 0x8e, 0xee, 0x23, 0x69,
-  0x81, 0x9c, 0x32, 0x31, 0xcf, 0x9f, 0xaa, 0x25, 0x14, 0x12, 0xf8, 0x0f,
-  0xe0, 0xe0, 0xe9, 0x8e, 0x30, 0xe7, 0x93, 0x6e, 0x49, 0x4d, 0x26, 0xf1,
-  0x5b, 0x53, 0x22, 0x1e, 0x01, 0x4e, 0xc6, 0x9b, 0x23, 0x7b, 0xe5, 0x15,
-  0xdd, 0xec, 0x5f, 0x89, 0xc3, 0x83, 0x80, 0xd3, 0x7e, 0x10, 0x44, 0x32,
-  0x89, 0x18, 0x62, 0x27, 0xac, 0x01, 0x34, 0x0d, 0xf1, 0xe6, 0x38, 0x4c,
-  0xe6, 0xcd, 0x1e, 0xef, 0x38, 0xe2, 0xd1, 0xac, 0xb9, 0x54, 0xc1, 0xbf,
-  0x74, 0x27, 0xef, 0xd5, 0xc3, 0xb3, 0xf7, 0x4b, 0xa7, 0x6f, 0xfd, 0xec,
-  0x31, 0x1f, 0xad, 0x62, 0x2d, 0x5f, 0x79, 0x8e, 0x1e, 0xc0, 0x05, 0xd8,
-  0x56, 0xb0, 0x0e, 0x9f, 0xb6, 0x94, 0xf1, 0x8c, 0xa2, 0x57, 0xbf, 0xd5,
-  0xaa, 0x63, 0x33, 0xc2, 0x02, 0xa5, 0xce, 0xc7, 0x9b, 0x63, 0x6f, 0x25,
-  0xd6, 0xde, 0x67, 0x4d, 0x12, 0x9d, 0x11, 0x2d, 0x90, 0xa1, 0xf7, 0xc9,
-  0xec, 0xff, 0x86, 0x37, 0xf3, 0x18, 0x3e, 0x95, 0x41, 0xbc, 0x39, 0xcd,
-  0x98, 0x11, 0xa5, 0x31, 0x18, 0xdf, 0x57, 0x7a, 0x49, 0x3d, 0x34, 0xb8,
-  0x16, 0xf4, 0x92, 0xe1, 0x29, 0xec, 0xa2, 0x83, 0x9d, 0xd2, 0x8a, 0xd0,
-  0x45, 0x9c, 0x98, 0x36, 0x6d, 0xc9, 0xb2, 0x38, 0x31, 0xf2, 0x55, 0x6f,
-  0xb0, 0xed, 0x7e, 0x7b, 0xce, 0x88, 0xa5, 0x06, 0xf7, 0x81, 0x2c, 0x74,
-  0xbc, 0xb9, 0x1c, 0x86, 0xa9, 0x2c, 0x1f, 0x51, 0xcd, 0x46, 0x97, 0xef,
-  0xff, 0xcf, 0x86, 0xc8, 0xee, 0x51, 0xec, 0x06, 0x29, 0x59, 0x71, 0xcd,
-  0xac, 0x4f, 0xa6, 0x5b, 0x80, 0x69, 0x27, 0x2d, 0x52, 0xf8, 0x00, 0x3c,
-  0x00, 0xe3, 0xbb, 0x8f, 0x98, 0xdd, 0x0c, 0x91, 0xcd, 0x9c, 0x11, 0xef,
-  0xaf, 0xec, 0xcd, 0x33, 0x1d, 0xd0, 0xf0, 0x06, 0xb2, 0x6b, 0x87, 0xd8,
-  0x87, 0x6b, 0x36, 0xab, 0xdd, 0x9c, 0xf1, 0x7d, 0x19, 0xec, 0xc0, 0xd5,
-  0xb7, 0xa3, 0x12, 0xa4, 0xc9, 0xf5, 0xde, 0xba, 0x2c, 0xf7, 0x3e, 0x6f,
-  0x5d, 0x96, 0xee, 0x9d, 0x75, 0xd7, 0xe4, 0x08, 0x69, 0x1b, 0xed, 0x84,
-  0x66, 0xbc, 0x04, 0x28, 0x09, 0xc8, 0x89, 0x43, 0x80, 0x0c, 0xbd, 0xda,
-  0xd5, 0x01, 0x04, 0xa1, 0xe2, 0xb0, 0xff, 0x9c, 0x97, 0x40, 0x81, 0x17,
-  0x51, 0xe6, 0x93, 0x71, 0x55, 0xde, 0xd5, 0xd0, 0x9e, 0xd4, 0x9e, 0x4a,
-  0x19, 0x47, 0x79, 0x13, 0x44, 0xf3, 0xcd, 0xf4, 0xce, 0x2c, 0x91, 0xdb,
-  0xb7, 0x97, 0x6f, 0x4f, 0x99, 0xac, 0x96, 0x33, 0xd9, 0x28, 0x6d, 0x45,
-  0xfa, 0xbc, 0x1c, 0xcf, 0xcd, 0xfa, 0x1b, 0x05, 0xa5, 0x61, 0x69, 0xa6,
-  0x02, 0x32, 0x48, 0xb7, 0x43, 0x54, 0x48, 0x82, 0x8a, 0x8b, 0x98, 0xaf,
-  0x5f, 0x5c, 0x41, 0x2e, 0x9a, 0x26, 0x8b, 0x8b, 0xdc, 0xaf, 0xd5, 0x00,
-  0x93, 0x9d, 0x4f, 0x83, 0xbb, 0xbb, 0xbb, 0x01, 0xf5, 0xce, 0x29, 0x26,
-  0x64, 0xb2, 0x1d, 0x31, 0xae, 0x02, 0xaa, 0xd4, 0x1b, 0x5a, 0x0a, 0x7a,
-  0x24, 0x38, 0x7d, 0x9e, 0xa6, 0x86, 0x9a, 0x0a, 0xe0, 0x84, 0xb4, 0x0e,
-  0x05, 0x52, 0xbc, 0x2c, 0xa1, 0x32, 0xc8, 0x44, 0xd2, 0xb6, 0xb2, 0xd5,
-  0x15, 0x69, 0x4e, 0xf9, 0x72, 0xd4, 0xc8, 0xbe, 0xfe, 0x45, 0xaa, 0x08,
-  0xa9, 0x44, 0x12, 0x93, 0x58, 0x56, 0xe4, 0x7f, 0x62, 0x0b, 0x23, 0x86,
-  0xdc, 0x16, 0x9d, 0x44, 0xfd, 0xfa, 0x36, 0x3a, 0xd6, 0xb2, 0x4c, 0x94,
-  0x03, 0x96, 0xda, 0xf6, 0x8e, 0x6f, 0x44, 0x4f, 0x64, 0xea, 0x0e, 0xe0,
-  0xf1, 0xb1, 0x9a, 0x66, 0xb3, 0x99, 0xd6, 0x51, 0xe2, 0x20, 0x85, 0x3f,
-  0x37, 0xd0, 0xf0, 0xa2, 0x3a, 0xb6, 0x23, 0x48, 0xae, 0x1d, 0x27, 0xae,
-  0x9a, 0x77, 0x60, 0x30, 0x01, 0x67, 0x09, 0x48, 0x71, 0xcb, 0xb6, 0x7b,
-  0x66, 0x10, 0x44, 0x10, 0xc5, 0x5d, 0xd3, 0xf7, 0x22, 0x35, 0x39, 0x39,
-  0x4c, 0xfc, 0xfc, 0x7e, 0x47, 0xd8, 0x37, 0xcf, 0xaa, 0x6b, 0xfa, 0x89,
-  0xb2, 0xb9, 0x45, 0xb3, 0x46, 0xd2, 0xc4, 0xa3, 0xaf, 0x49, 0x92, 0x7f,
-  0x1d, 0xf0, 0xa5, 0x0a, 0xcf, 0xca, 0x92, 0x60, 0xad, 0xe2, 0x02, 0xde,
-  0x1c, 0x4c, 0x59, 0xac, 0x4c, 0xd3, 0xc2, 0xcc, 0x84, 0x39, 0xb1, 0x21,
-  0xc4, 0x62, 0x36, 0x7b, 0x35, 0x2b, 0x97, 0xf5, 0xfd, 0x66, 0x22, 0xfc,
-  0xe4, 0x42, 0xe9, 0xdb, 0x70, 0x82, 0x26, 0xd6, 0xd2, 0xac, 0xef, 0xb2,
-  0xf8, 0xa8, 0xf7, 0x22, 0xa1, 0xdd, 0x6b, 0xf6, 0x2d, 0x76, 0x9a, 0xdb,
-  0xf4, 0x3e, 0xf6, 0xaf, 0x7e, 0xdb, 0xd1, 0x59, 0x86, 0x27, 0x92, 0xed,
-  0xbc, 0xc7, 0x19, 0x7a, 0x2e, 0x8a, 0x10, 0xb3, 0xf2, 0x92, 0x56, 0xd4,
-  0xc7, 0x36, 0x48, 0xf7, 0x06, 0x33, 0xe8, 0xa9, 0x97, 0xdc, 0x85, 0xff,
-  0x21, 0x6f, 0x56, 0xa4, 0x30, 0xb8, 0x9a, 0x5f, 0x9c, 0xc2, 0xe0, 0x28,
-  0x85, 0x38, 0xc5, 0xdb, 0xf2, 0x79, 0xfb, 0x19, 0x53, 0xc3, 0xe4, 0xdc,
-  0xcc, 0xd7, 0x20, 0x88, 0xfc, 0x5c, 0x7b, 0xcd, 0xa5, 0x3e, 0x5f, 0x99,
-  0x5c, 0x6b, 0x36, 0x13, 0x96, 0xf1, 0xc9, 0x00, 0x9d, 0x27, 0xd6, 0x9a,
-  0x0c, 0x90, 0x1e, 0x6c, 0x5a, 0xd2, 0xce, 0xb2, 0xd6, 0xa7, 0xf5, 0x14,
-  0x13, 0x51, 0x2a, 0x25, 0x3e, 0x53, 0x74, 0x5c, 0x8d, 0x69, 0xf6, 0xb5,
-  0xb3, 0x9b, 0x33, 0x38, 0x33, 0xde, 0xe9, 0xa5, 0xf9, 0x80, 0x10, 0xb0,
-  0xac, 0xa9, 0x74, 0x93, 0x75, 0x8c, 0x2e, 0xce, 0xdd, 0x75, 0x62, 0x25,
-  0x18, 0x2c, 0x23, 0x13, 0xd7, 0x40, 0x9a, 0xfc, 0xb3, 0xed, 0xdd, 0x36,
-  0xce, 0xea, 0xea, 0x5e, 0x41, 0xab, 0xfd, 0x85, 0x8e, 0x77, 0xce, 0x89,
-  0x40, 0x7e, 0xfd, 0x44, 0xa1, 0x52, 0xd2, 0x9a, 0x78, 0xba, 0x7c, 0x53,
-  0x2f, 0x9b, 0x65, 0xd7, 0x3c, 0xa6, 0x97, 0xa7, 0xc7, 0xdf, 0x1f, 0x9f,
-  0x06, 0x17, 0xd8, 0x37, 0xa3, 0xd1, 0xce, 0xc7, 0xac, 0x1a, 0xa3, 0x0a,
-  0x13, 0xf9, 0xbc, 0x13, 0x3c, 0x67, 0xf1, 0x3a, 0x9e, 0x54, 0xbf, 0x73,
-  0xc9, 0xe5, 0x09, 0xa3, 0x76, 0x03, 0x63, 0x9f, 0x10, 0x99, 0xfc, 0x49,
-  0x61, 0x4c, 0x45, 0xfe, 0x88, 0x00, 0xc3, 0x70, 0x4b, 0x4d, 0xaa, 0x6c,
-  0xca, 0x55, 0x8a, 0x42, 0x48, 0x58, 0x41, 0x6a, 0x7e, 0x92, 0xbc, 0xc6,
-  0x52, 0x32, 0x2c, 0x18, 0xd1, 0x0f, 0x3b, 0x88, 0xe0, 0x8d, 0x45, 0x69,
-  0xae, 0x90, 0xfb, 0xe4, 0xb5, 0x7c, 0xb3, 0x66, 0xe7, 0x26, 0xcd, 0x06,
-  0x73, 0xcf, 0xb0, 0xc9, 0x70, 0xf6, 0xdd, 0xe0, 0x70, 0x34, 0x78, 0x7d,
-  0x7c, 0x7a, 0xfc, 0xcd, 0xe1, 0xe5, 0xb1, 0xd2, 0x82, 0x92, 0xfb, 0x7f,
-  0x85, 0x32, 0xc4, 0xf2, 0xee, 0x3b, 0x99, 0x16, 0x8c, 0x9f, 0x68, 0x65,
-  0x9b, 0x9c, 0xc9, 0x9e, 0x95, 0x3d, 0x97, 0x4b, 0xe9, 0x91, 0x89, 0x22,
-  0xc8, 0xd0, 0x78, 0x73, 0xe6, 0xf4, 0xcd, 0xe6, 0xd2, 0xd5, 0x60, 0x04,
-  0xe9, 0xec, 0x8e, 0xca, 0x3e, 0xbc, 0x2f, 0x08, 0x17, 0x9d, 0xdb, 0x34,
-  0x40, 0x1e, 0xbd, 0x37, 0xf9, 0xde, 0xcc, 0xb6, 0x16, 0x18, 0xf4, 0x99,
-  0x2b, 0x8c, 0x77, 0xcd, 0xe1, 0x45, 0xf0, 0xf1, 0x35, 0x9e, 0xec, 0xd0,
-  0x74, 0x0e, 0x5d, 0x12, 0x6f, 0x61, 0x7f, 0x15, 0x49, 0xb3, 0xa7, 0x0d,
-  0x54, 0x4f, 0x6e, 0xb2, 0xb9, 0x68, 0x94, 0x14, 0x70, 0x46, 0x7a, 0x27,
-  0xe7, 0xcb, 0x09, 0xb3, 0x01, 0x1f, 0xf4, 0x71, 0x06, 0xc1, 0x8c, 0x78,
-  0x0e, 0x36, 0x6f, 0x0c, 0xba, 0x79, 0x47, 0xe4, 0xbd, 0xe4, 0xa4, 0x27,
-  0x08, 0x06, 0xb2, 0x42, 0x87, 0x40, 0x8b, 0x71, 0x9e, 0x40, 0xd1, 0x0a,
-  0xfd, 0x5a, 0x79, 0xc9, 0xb5, 0x49, 0xba, 0x97, 0xbf, 0x65, 0x01, 0xf5,
-  0x78, 0xfc, 0x28, 0xb2, 0x83, 0x1f, 0x41, 0x60, 0xaa, 0xea, 0x4b, 0x9d,
-  0xfc, 0x95, 0x1e, 0x4e, 0xde, 0x4f, 0xdc, 0x77, 0x49, 0xc8, 0xc1, 0x66,
-  0x8d, 0xa2, 0x70, 0xa3, 0x82, 0x41, 0x62, 0xed, 0xd4, 0x5d, 0xed, 0x2f,
-  0xdb, 0x68, 0x4a, 0x51, 0xca, 0x4b, 0x99, 0xc8, 0x59, 0x16, 0x5e, 0xdf,
-  0x47, 0x0a, 0x86, 0x16, 0xf1, 0x2f, 0x11, 0xad, 0xea, 0x5f, 0x43, 0x7a,
-  0x66, 0x9b, 0x3e, 0x35, 0xc8, 0x16, 0x01, 0xef, 0xe5, 0xd6, 0x1b, 0xa5,
-  0xb2, 0xb5, 0x7a, 0x9e, 0x5f, 0xcb, 0xc1, 0x23, 0x5e, 0x3f, 0x3e, 0xbf,
-  0xe0, 0x82, 0x8a, 0xa7, 0xf4, 0x17, 0x09, 0xda, 0xd4, 0x31, 0xae, 0x1e,
-  0xa1, 0xd2, 0x26, 0x8c, 0x41, 0x06, 0xaf, 0xbf, 0x8d, 0xc5, 0x2a, 0xb0,
-  0x8c, 0xe1, 0x84, 0xc2, 0x57, 0x2a, 0x07, 0x22, 0x96, 0x8b, 0xe8, 0x15,
-  0x00, 0xa2, 0x9e, 0x50, 0x17, 0x84, 0x9e, 0x10, 0x9d, 0x60, 0x48, 0xa4,
-  0xfa, 0xd6, 0xcf, 0xe8, 0x97, 0xa4, 0xfb, 0x29, 0x70, 0x60, 0xc5, 0x34,
-  0xb6, 0xf8, 0x84, 0xa9, 0x59, 0x7a, 0x33, 0xa9, 0x50, 0x2e, 0x2a, 0x35,
-  0x5d, 0x19, 0x76, 0x86, 0x0a, 0xc2, 0x7f, 0xe2, 0x06, 0x0b, 0x5d, 0xe9,
-  0x28, 0x75, 0x20, 0x7e, 0x31, 0xc1, 0x19, 0x63, 0xc0, 0x0a, 0x9f, 0xee,
-  0x4b, 0x88, 0x3a, 0xb5, 0xe1, 0x4a, 0x94, 0x9a, 0x44, 0xec, 0x3a, 0xd0,
-  0xb6, 0x05, 0x63, 0xce, 0x63, 0xa0, 0xcc, 0x68, 0x89, 0xba, 0xb2, 0x72,
-  0x76, 0x25, 0x91, 0xad, 0x14, 0x74, 0x90, 0x30, 0x33, 0xc6, 0xac, 0x4d,
-  0x00, 0xa4, 0x75, 0x93, 0x16, 0x91, 0x53, 0x67, 0x26, 0xde, 0xd6, 0x5c,
-  0xc0, 0x28, 0x65, 0xd9, 0x22, 0x0a, 0x35, 0xed, 0x8d, 0x16, 0xc6, 0x97,
-  0x00, 0xed, 0x9f, 0x48, 0x61, 0xcf, 0xc9, 0x25, 0x2e, 0x5d, 0xe1, 0x99,
-  0x21, 0xf2, 0x0f, 0xdd, 0x6f, 0x65, 0x6c, 0x57, 0x89, 0x78, 0x71, 0x8e,
-  0xfa, 0xd6, 0x16, 0x5c, 0xe1, 0x02, 0xce, 0x12, 0x8b, 0xe8, 0xa9, 0x91,
-  0x33, 0xe1, 0x11, 0xff, 0x51, 0x0d, 0xb3, 0x76, 0x52, 0x05, 0x96, 0x0f,
-  0xf7, 0x7a, 0xd1, 0x05, 0x30, 0x64, 0x8c, 0xa4, 0x37, 0xdf, 0x46, 0x77,
-  0xc9, 0x2b, 0x63, 0x83, 0x79, 0xb4, 0x79, 0x82, 0xef, 0xbf, 0x46, 0xe7,
-  0xe8, 0x3b, 0x78, 0x01, 0x27, 0xdf, 0xe8, 0x0f, 0x5c, 0x02, 0x8f, 0x10,
-  0x3b, 0xbc, 0x95, 0xc7, 0x99, 0xf9, 0x5e, 0x4e, 0x35, 0x36, 0xfc, 0x1a,
-  0x35, 0x21, 0x6a, 0xb5, 0x36, 0x1b, 0x90, 0x6e, 0x0b, 0x52, 0xc4, 0x48,
-  0x0a, 0xd1, 0xbb, 0x14, 0x8a, 0xcf, 0x12, 0xbf, 0x40, 0x0d, 0x36, 0x04,
-  0xb4, 0xf7, 0xf3, 0xbe, 0x84, 0xc2, 0x00, 0x56, 0x0b, 0x22, 0xca, 0x66,
-  0x02, 0x27, 0x96, 0x23, 0x44, 0x9f, 0x4c, 0xeb, 0xdb, 0xf8, 0x09, 0xaf,
-  0x6f, 0xa3, 0x27, 0xfc, 0x11, 0xe7, 0xdc, 0xd9, 0x3e, 0xc7, 0xe7, 0xa3,
-  0xef, 0x57, 0xa5, 0xfb, 0x33, 0x2d, 0x3a, 0x1f, 0x71, 0x37, 0x3a, 0xda,
-  0xf4, 0xfe, 0x31, 0x5f, 0x7d, 0xce, 0xa3, 0xee, 0xfa, 0xe0, 0x9c, 0x9b,
-  0xef, 0xcb, 0xe1, 0x3e, 0x3f, 0x1c, 0x7d, 0xef, 0x1d, 0x6b, 0x6f, 0x0b,
-  0xe0, 0x1c, 0xc7, 0xb2, 0x8d, 0x51, 0x7f, 0xa7, 0x52, 0x72, 0x40, 0x6a,
-  0x2c, 0xba, 0xdf, 0xeb, 0xdb, 0xc7, 0xec, 0x77, 0xd3, 0x93, 0x60, 0xbf,
-  0x07, 0x73, 0xbc, 0x6e, 0xbf, 0xfb, 0x0b, 0xd5, 0xc6, 0x40, 0x7a, 0xbb,
-  0xbd, 0xe0, 0x2a, 0x7d, 0x37, 0x28, 0xf8, 0x1a, 0xdf, 0xe6, 0x40, 0xc2,
-  0xf2, 0xd6, 0x0e, 0x21, 0x62, 0xe8, 0xe7, 0x2f, 0xdb, 0xe8, 0xe6, 0x85,
-  0x60, 0xa3, 0xeb, 0x7a, 0xc6, 0x77, 0xfa, 0xaa, 0x8d, 0xae, 0x08, 0xd1,
-  0x8c, 0x37, 0xb9, 0xbf, 0xc7, 0xc3, 0xfd, 0xed, 0xed, 0x5a, 0x3f, 0xb5,
-  0x37, 0x9c, 0x21, 0x05, 0x2a, 0xd9, 0x3c, 0x75, 0x2f, 0x4d, 0x3f, 0x42,
-  0x0b, 0xd1, 0x57, 0x28, 0x1b, 0x12, 0x1c, 0x43, 0xef, 0xba, 0x25, 0x54,
-  0x68, 0x81, 0xd9, 0x2b, 0xd5, 0xa5, 0x71, 0x8b, 0xe3, 0xda, 0x86, 0xa9,
-  0xee, 0x67, 0x89, 0x5f, 0x05, 0x27, 0xb2, 0x45, 0xfe, 0x92, 0x45, 0xf3,
-  0x8d, 0xeb, 0x8c, 0x20, 0x02, 0xe0, 0x1d, 0x6a, 0x9d, 0xd3, 0xa2, 0x1e,
-  0xb8, 0x2a, 0x8a, 0x2f, 0xed, 0x5f, 0x03, 0x2d, 0xfd, 0xf5, 0xbb, 0x51,
-  0xe7, 0xb8, 0xd6, 0x19, 0x23, 0xe6, 0xaf, 0x71, 0xf4, 0xcc, 0xef, 0x6d,
-  0x9e, 0x4b, 0xed, 0xaa, 0x96, 0x48, 0x93, 0x41, 0x22, 0x33, 0x7d, 0xc2,
-  0x72, 0xcb, 0x3b, 0xc5, 0x27, 0xd5, 0xc2, 0x9f, 0xf0, 0xf7, 0x91, 0xcf,
-  0xc5, 0xeb, 0x9d, 0x64, 0xfa, 0x92, 0x27, 0x25, 0x46, 0xf3, 0xc2, 0x42,
-  0x96, 0xfa, 0xa9, 0x05, 0xd4, 0x84, 0x75, 0x55, 0xe8, 0x9d, 0x6c, 0xc1,
-  0x85, 0x22, 0xf1, 0x0a, 0x47, 0xc6, 0x22, 0x33, 0x5b, 0x42, 0x1b, 0x23,
-  0x90, 0x9d, 0xed, 0xb5, 0xda, 0x14, 0x4f, 0xe1, 0xe2, 0xf6, 0xe9, 0x80,
-  0x1e, 0x57, 0xe5, 0x49, 0x7e, 0xf8, 0x1c, 0x3f, 0x1c, 0x76, 0x27, 0x3a,
-  0xb0, 0x35, 0xa5, 0xca, 0x91, 0xf5, 0x32, 0x2e, 0x8b, 0x29, 0xf1, 0x3f,
-  0x53, 0xb7, 0xb5, 0x62, 0xf1, 0x5d, 0xea, 0x78, 0xab, 0x49, 0x90, 0x0b,
-  0x3b, 0x8b, 0xd9, 0x4b, 0xdd, 0xc9, 0x4d, 0x51, 0xba, 0xd8, 0xf3, 0x28,
-  0x3e, 0xe9, 0x86, 0xdf, 0x5a, 0x3d, 0x7e, 0x29, 0xc3, 0x8c, 0x2f, 0x39,
-  0xaf, 0xb9, 0x67, 0xc9, 0x8f, 0x73, 0x2e, 0xba, 0xf0, 0x32, 0x5f, 0x0c,
-  0xf4, 0x4d, 0x16, 0xc2, 0xf3, 0xf4, 0xa3, 0x5c, 0x8d, 0x4f, 0x69, 0x19,
-  0x22, 0x83, 0xe4, 0xa2, 0x68, 0x7e, 0x60, 0x87, 0xb6, 0x8d, 0xdd, 0x35,
-  0xa2, 0xb2, 0x34, 0x96, 0xa3, 0x0d, 0xe6, 0x0d, 0x7f, 0x23, 0x96, 0x06,
-  0xa3, 0xc0, 0x55, 0xdf, 0x67, 0xa1, 0x90, 0x77, 0xf4, 0xc2, 0xbe, 0xfb,
-  0xe0, 0xfa, 0xb9, 0xfd, 0xb0, 0x6e, 0xfd, 0x74, 0xce, 0xfe, 0x7b, 0xac,
-  0xdf, 0xf3, 0xdf, 0x6d, 0xfd, 0x9e, 0xff, 0xb7, 0x58, 0xbf, 0xe7, 0xff,
-  0xf8, 0xfa, 0x3d, 0xed, 0xae, 0xdf, 0xf3, 0xff, 0x2e, 0xeb, 0xa7, 0xe5,
-  0x3e, 0x74, 0xf5, 0xb2, 0x60, 0xfd, 0xc8, 0x13, 0xc2, 0x57, 0x08, 0x08,
-  0xbe, 0xa0, 0x0d, 0xd1, 0x74, 0xeb, 0x9b, 0x1c, 0x78, 0x10, 0xac, 0x19,
-  0x7b, 0x76, 0x15, 0xf2, 0x88, 0xcc, 0xfb, 0x38, 0x4f, 0xa3, 0x70, 0x27,
-  0x29, 0xe1, 0xd9, 0xc9, 0x79, 0x62, 0x3b, 0xe0, 0x2d, 0x83, 0xa3, 0x19,
-  0x82, 0x92, 0x13, 0x75, 0xb9, 0xd6, 0xe4, 0x87, 0x33, 0x13, 0xc0, 0xc9,
-  0x66, 0xb5, 0x4b, 0x95, 0x8c, 0x71, 0x09, 0x99, 0xc9, 0x3b, 0x78, 0x49,
-  0xf3, 0x35, 0xe0, 0xc7, 0xbf, 0x8c, 0xe6, 0xff, 0xa0, 0xaa, 0x9a, 0xeb,
-  0x52, 0xcc, 0xcd, 0xee, 0x4d, 0xdd, 0xa3, 0x97, 0x6d, 0x55, 0xe1, 0x09,
-  0x5d, 0xc2, 0xc9, 0xe0, 0xa1, 0x25, 0x7b, 0x0d, 0xcd, 0x60, 0x39, 0x5f,
-  0x48, 0x5e, 0xe0, 0x03, 0x79, 0x51, 0xd0, 0x3f, 0xb7, 0x93, 0x1f, 0x90,
-  0xf5, 0xc4, 0x9e, 0x55, 0xc9, 0x15, 0xb0, 0x25, 0x81, 0x15, 0x88, 0xad,
-  0x61, 0x8b, 0x15, 0x04, 0x46, 0x51, 0x2e, 0x99, 0x4e, 0xce, 0x2f, 0x83,
-  0xda, 0x6d, 0x8d, 0xdd, 0xac, 0xf0, 0x35, 0x24, 0xc1, 0x44, 0x4b, 0x1a,
-  0x2f, 0x7f, 0x34, 0x4a, 0x1b, 0x49, 0xd7, 0x22, 0x27, 0x4a, 0x50, 0xa7,
-  0x99, 0x06, 0xcc, 0xbc, 0x6e, 0x9a, 0x1a, 0x4a, 0xb6, 0x84, 0x57, 0xa1,
-  0x56, 0x7b, 0x0f, 0x66, 0x96, 0x18, 0x94, 0x58, 0x55, 0x19, 0xd8, 0x85,
-  0x92, 0x73, 0x6f, 0x49, 0x51, 0x8b, 0x5b, 0x05, 0xce, 0x83, 0x1e, 0xc6,
-  0xa7, 0x52, 0x1f, 0x8c, 0xc3, 0x0c, 0x18, 0x85, 0x71, 0xf2, 0x88, 0xff,
-  0x05, 0xfb, 0x77, 0x05, 0x88, 0x9b, 0x75, 0x08, 0xdf, 0x0e, 0x0d, 0xd6,
-  0xdc, 0x87, 0x88, 0x0f, 0x37, 0xd6, 0xc1, 0x37, 0x19, 0x17, 0x78, 0x93,
-  0xf9, 0x59, 0x88, 0x96, 0xc2, 0x8d, 0x1d, 0xc2, 0x0c, 0x3c, 0x32, 0x83,
-  0x13, 0x14, 0x5b, 0x40, 0x4b, 0x8f, 0x44, 0x63, 0x99, 0xad, 0x9e, 0x10,
-  0xa3, 0x2c, 0x19, 0x82, 0x44, 0x3c, 0x6e, 0x53, 0xa6, 0xee, 0xf8, 0x27,
-  0x66, 0xfd, 0x79, 0xa8, 0x4e, 0x5f, 0x24, 0x65, 0xd7, 0x1c, 0x0b, 0x5d,
-  0x87, 0x20, 0xb4, 0xc9, 0x7e, 0x7e, 0x99, 0x38, 0x0e, 0xcf, 0xca, 0x2e,
-  0x3e, 0x2e, 0x9a, 0xaa, 0x5c, 0xdc, 0x27, 0xdf, 0xa4, 0x34, 0x2c, 0xa8,
-  0x85, 0x69, 0x36, 0x0f, 0x72, 0x3e, 0xb8, 0x76, 0x9c, 0x68, 0x69, 0x5c,
-  0x47, 0x4e, 0x47, 0x08, 0xbd, 0x92, 0xa7, 0x25, 0xa1, 0xa2, 0xef, 0x53,
-  0xf2, 0xe7, 0x69, 0xee, 0x18, 0x60, 0x93, 0xa3, 0xd1, 0x69, 0xa8, 0x4c,
-  0x2b, 0xfd, 0xfd, 0xda, 0x1c, 0x5f, 0xb4, 0x36, 0x68, 0x9f, 0x28, 0x33,
-  0x72, 0x6e, 0xfc, 0x65, 0xf4, 0x30, 0xcb, 0xb8, 0xb3, 0x99, 0x66, 0xc2,
-  0x0b, 0x71, 0x78, 0x32, 0xa9, 0xee, 0x17, 0x64, 0xa0, 0xf1, 0xcb, 0x72,
-  0xf6, 0xa8, 0x7f, 0x4c, 0xa2, 0xb8, 0x36, 0x8d, 0xf0, 0x3d, 0x22, 0x64,
-  0xf2, 0x2a, 0x04, 0x31, 0x05, 0x33, 0xcd, 0x74, 0x51, 0x70, 0x55, 0x05,
-  0x33, 0xc9, 0xac, 0x29, 0x08, 0x12, 0x5c, 0x45, 0x8e, 0x80, 0x05, 0x0c,
-  0x25, 0x36, 0x3a, 0x54, 0xca, 0x70, 0xeb, 0x20, 0xd3, 0x92, 0xe8, 0x7a,
-  0xe1, 0xd1, 0xde, 0xd6, 0x8b, 0x41, 0xde, 0xe8, 0xd4, 0x02, 0x55, 0x11,
-  0x6c, 0x99, 0x76, 0x53, 0xca, 0x98, 0x2e, 0x02, 0x76, 0x06, 0x0e, 0x79,
-  0xef, 0xed, 0xee, 0x3e, 0x48, 0xbb, 0x21, 0xee, 0x5f, 0x65, 0xdf, 0xc0,
-  0x28, 0xa8, 0x54, 0xa1, 0x50, 0x6f, 0x34, 0x5a, 0x07, 0xdc, 0x11, 0x6f,
-  0x20, 0x49, 0x34, 0xcd, 0x25, 0xe1, 0xa0, 0x4b, 0x54, 0x64, 0x3e, 0x69,
-  0x49, 0x30, 0xdc, 0x11, 0x64, 0x59, 0xc7, 0xec, 0x34, 0xa0, 0xe1, 0x30,
-  0x22, 0xec, 0x18, 0x7d, 0xac, 0x0f, 0x5a, 0xef, 0x44, 0x0b, 0xe4, 0x51,
-  0x87, 0xe8, 0x25, 0xd1, 0x5e, 0x86, 0xc9, 0xd7, 0xf7, 0xce, 0x70, 0xf2,
-  0x8a, 0xbc, 0xa3, 0x57, 0xec, 0x6a, 0x95, 0xf2, 0xcc, 0x51, 0xe2, 0xf9,
-  0xb5, 0xd4, 0x1a, 0xff, 0xe2, 0xf1, 0x4a, 0x19, 0x01, 0xb4, 0xa8, 0xd1,
-  0x2a, 0x32, 0xf4, 0xe3, 0x1e, 0x03, 0x3b, 0x5a, 0x4b, 0x4b, 0xe8, 0x86,
-  0xed, 0xb1, 0xea, 0xf3, 0xa5, 0xb2, 0x96, 0x0f, 0xb5, 0x4d, 0x94, 0xd2,
-  0x46, 0xe5, 0x7d, 0xd6, 0x56, 0x4b, 0x28, 0x53, 0x71, 0x80, 0x7c, 0xc4,
-  0x6e, 0x16, 0x36, 0xa5, 0x30, 0xa2, 0x2e, 0xf6, 0x27, 0x46, 0x69, 0x38,
-  0x13, 0x98, 0x08, 0x7a, 0x18, 0x06, 0xa1, 0xb9, 0x12, 0x1d, 0xfe, 0xc7,
-  0x18, 0xaf, 0x96, 0x9e, 0x74, 0x3f, 0x59, 0x2a, 0x48, 0x8d, 0x52, 0x5b,
-  0x9a, 0x8d, 0xe9, 0x30, 0xcd, 0x5c, 0x96, 0x47, 0x3d, 0x35, 0xd0, 0xc9,
-  0x38, 0xf9, 0x12, 0xe1, 0x62, 0xa8, 0x12, 0xac, 0x7b, 0xbc, 0xbf, 0x38,
-  0xed, 0x27, 0x52, 0x5b, 0x91, 0x00, 0x9f, 0x66, 0xa5, 0xe3, 0xba, 0x91,
-  0xa3, 0x32, 0x67, 0x5e, 0x3a, 0x1e, 0x4b, 0xed, 0x18, 0x96, 0x48, 0x6c,
-  0xc3, 0xf9, 0x69, 0x9a, 0xac, 0x15, 0x21, 0x13, 0xba, 0xa4, 0x58, 0x69,
-  0x23, 0xc1, 0x4c, 0x0f, 0x6e, 0x22, 0x95, 0x10, 0xee, 0x43, 0xed, 0xb4,
-  0xa5, 0x35, 0xd2, 0xb4, 0x7d, 0x4e, 0x06, 0x25, 0x67, 0x45, 0x24, 0xa5,
-  0x54, 0x42, 0x91, 0x44, 0x87, 0x96, 0x60, 0x79, 0x90, 0x53, 0xba, 0xac,
-  0xbc, 0x80, 0x64, 0xef, 0x26, 0x37, 0xeb, 0x5a, 0xf4, 0x98, 0x6e, 0x6d,
-  0x39, 0x66, 0x2a, 0xbf, 0x06, 0x1f, 0x8e, 0xc1, 0x83, 0x09, 0x5f, 0xe7,
-  0xbc, 0x63, 0xf1, 0xc2, 0x89, 0x2d, 0x10, 0x6c, 0x3f, 0x69, 0x1d, 0x0a,
-  0x55, 0x38, 0xb9, 0x6b, 0x2e, 0x9f, 0x35, 0xca, 0xf9, 0xce, 0x3b, 0xc5,
-  0x25, 0xd3, 0xd0, 0xe9, 0x47, 0x0d, 0x87, 0xbe, 0xcf, 0xa3, 0xee, 0xbc,
-  0x7d, 0x7e, 0xc5, 0x76, 0x9a, 0xe8, 0xb8, 0xba, 0x52, 0xd9, 0x2c, 0xfb,
-  0x08, 0x25, 0xa7, 0x60, 0x9d, 0xd2, 0x7b, 0x64, 0x0d, 0xd8, 0x4f, 0x63,
-  0x87, 0x07, 0xbc, 0x4a, 0x44, 0x32, 0x56, 0x42, 0x77, 0x94, 0xbd, 0x4c,
-  0x85, 0x6b, 0x26, 0x55, 0xbe, 0x68, 0x38, 0xfc, 0x1b, 0x94, 0xd5, 0x8e,
-  0xab, 0x61, 0xd7, 0xb3, 0x72, 0x9c, 0xf2, 0x39, 0xb1, 0x60, 0x0f, 0x75,
-  0x3b, 0xb5, 0x08, 0x3f, 0x51, 0x2a, 0xd8, 0x6c, 0xcf, 0x48, 0xa2, 0x8e,
-  0x19, 0xf2, 0xe0, 0x00, 0xf5, 0x2e, 0x29, 0x1e, 0xb5, 0xee, 0x83, 0xf6,
-  0x13, 0xcc, 0xa9, 0x35, 0xb8, 0xea, 0xcb, 0x09, 0xd6, 0x8c, 0x47, 0x60,
-  0x65, 0x6a, 0xef, 0x5c, 0x05, 0xaa, 0x10, 0x32, 0x93, 0xa7, 0xcb, 0xac,
-  0x0d, 0x9d, 0xd9, 0x94, 0x68, 0x9d, 0x14, 0x3f, 0x01, 0x7c, 0xc3, 0xd6,
-  0xd6, 0x96, 0xa8, 0x58, 0x14, 0x16, 0x42, 0xf4, 0x9a, 0xb6, 0xfa, 0xb4,
-  0xd6, 0x80, 0x2d, 0xe8, 0x66, 0x72, 0x9d, 0x53, 0x44, 0xa2, 0x37, 0x57,
-  0xcc, 0xde, 0x5f, 0x05, 0x65, 0x4c, 0xaf, 0x58, 0x4f, 0x03, 0xce, 0x93,
-  0xd7, 0x64, 0xcd, 0xcc, 0xf8, 0x4c, 0xbd, 0xfb, 0x2d, 0xa9, 0x66, 0x3f,
-  0x1d, 0xbf, 0xa2, 0x20, 0xda, 0xb8, 0xe0, 0xb7, 0x99, 0xc5, 0x2d, 0xaa,
-  0x22, 0xcc, 0xd9, 0x2b, 0x29, 0xe2, 0xbf, 0xe0, 0x9c, 0xd3, 0xc2, 0x2f,
-  0x2c, 0x0d, 0xe2, 0x99, 0x35, 0x74, 0x52, 0xa4, 0xae, 0x31, 0xca, 0xb8,
-  0x62, 0xcd, 0xa1, 0x85, 0x8a, 0xe3, 0x56, 0x37, 0x54, 0xd6, 0x4c, 0xbc,
-  0x5f, 0x4e, 0xb3, 0x74, 0x16, 0xa3, 0xda, 0xa6, 0x0e, 0x93, 0xb7, 0x91,
-  0x85, 0x1b, 0x31, 0x9e, 0x16, 0xe2, 0xb7, 0x16, 0xdc, 0x29, 0xc3, 0xae,
-  0x0a, 0xc9, 0xea, 0xd4, 0x1e, 0xe2, 0x54, 0x45, 0x0c, 0x1d, 0x22, 0x7c,
-  0xbf, 0x15, 0x7e, 0x05, 0x65, 0x09, 0x96, 0xa8, 0x93, 0x83, 0xd0, 0x43,
-  0xff, 0x7f, 0x7b, 0x6a, 0x1f, 0xc0, 0x0e, 0x00, 0x46, 0xb8, 0xdb, 0x9c,
-  0x38, 0xe2, 0x38, 0xaf, 0x8b, 0xcb, 0xad, 0x0b, 0x94, 0x9d, 0x3a, 0xc6,
-  0x70, 0x03, 0x12, 0x93, 0xdb, 0x72, 0x0e, 0x11, 0xee, 0x16, 0xc9, 0xb1,
-  0x08, 0x57, 0xfa, 0x36, 0x53, 0xa8, 0x08, 0xec, 0x0b, 0x5e, 0x80, 0xc6,
-  0xa6, 0xbb, 0x51, 0x6b, 0x22, 0x67, 0x58, 0xc8, 0xec, 0xef, 0xaf, 0x28,
-  0xfe, 0x22, 0x15, 0x1f, 0x65, 0x8f, 0xe1, 0xb0, 0xd7, 0xe9, 0x95, 0x2d,
-  0xc6, 0x2a, 0x02, 0xbc, 0x9c, 0x98, 0x29, 0xe4, 0x42, 0xd1, 0xf8, 0x59,
-  0x11, 0xc9, 0x49, 0x61, 0x71, 0x4d, 0x52, 0xd2, 0x5e, 0xbb, 0x74, 0x10,
-  0x14, 0x3e, 0x59, 0xcf, 0xf2, 0x85, 0xf5, 0x71, 0xf6, 0x89, 0x40, 0x95,
-  0x61, 0x1c, 0x14, 0xa0, 0xbd, 0x0b, 0xc9, 0x02, 0x3b, 0x85, 0x29, 0x85,
-  0x59, 0x72, 0x46, 0xea, 0xff, 0x56, 0xa7, 0xfd, 0xa7, 0xbb, 0x7b, 0xe8,
-  0xee, 0xd3, 0xdd, 0xcf, 0xb6, 0xdb, 0x77, 0xf3, 0xac, 0xce, 0x06, 0xc0,
-  0xf1, 0xc4, 0x75, 0x54, 0xae, 0x6e, 0xe2, 0xfc, 0x3c, 0xd0, 0x47, 0xe9,
-  0x25, 0x01, 0xff, 0x4c, 0x97, 0x95, 0x22, 0xe2, 0xa8, 0xe0, 0x0d, 0xd9,
-  0x8c, 0xf5, 0x0d, 0xd1, 0x99, 0x05, 0x77, 0xbd, 0x7b, 0x07, 0xc6, 0x14,
-  0x5c, 0xe8, 0x3c, 0x53, 0x66, 0xf7, 0xd0, 0xbb, 0xb6, 0x50, 0x8a, 0x4c,
-  0x06, 0x83, 0x8b, 0xc8, 0x62, 0x0c, 0xa9, 0x65, 0x7d, 0x0e, 0x27, 0x4e,
-  0x42, 0xe0, 0x28, 0x4a, 0xbb, 0x74, 0x9a, 0x95, 0x3c, 0x6f, 0xf2, 0x22,
-  0xaf, 0x6f, 0x50, 0x72, 0xad, 0xae, 0xd3, 0xeb, 0x2c, 0x4c, 0x53, 0x35,
-  0x22, 0xc9, 0x18, 0x4e, 0x52, 0x1a, 0x19, 0xc4, 0xce, 0x84, 0xc5, 0xe1,
-  0xf3, 0x20, 0x30, 0x7e, 0x29, 0xcb, 0x02, 0xb6, 0x21, 0x37, 0xcc, 0x15,
-  0x65, 0x8d, 0x5d, 0xb1, 0xa0, 0x55, 0xb5, 0x82, 0xa8, 0x80, 0x05, 0x88,
-  0x67, 0xb8, 0xb4, 0x00, 0xd7, 0x16, 0x08, 0x10, 0x7b, 0xe4, 0x47, 0xd8,
-  0xa2, 0xc5, 0x3d, 0x1b, 0x19, 0x21, 0xb4, 0x4b, 0x58, 0xa8, 0x59, 0x0a,
-  0x4e, 0x5a, 0xf3, 0x37, 0xf3, 0xb3, 0x1f, 0x8d, 0x46, 0x3a, 0x7c, 0x61,
-  0x7f, 0xbc, 0xfd, 0xb8, 0xe2, 0x42, 0xfb, 0x1d, 0x0d, 0x8d, 0xe0, 0x89,
-  0xe2, 0xce, 0x86, 0xc1, 0xf2, 0x8a, 0xff, 0xb1, 0xc2, 0x09, 0x81, 0xac,
-  0xb1, 0xe4, 0xe4, 0xed, 0x21, 0x41, 0x31, 0x46, 0x92, 0x36, 0xd1, 0x46,
-  0x32, 0xb6, 0xb2, 0x6c, 0x50, 0x69, 0x89, 0x14, 0xd6, 0x28, 0x73, 0x96,
-  0x25, 0xbb, 0x64, 0x50, 0x55, 0x8b, 0xcb, 0x98, 0xb9, 0xc4, 0x67, 0x54,
-  0x53, 0x82, 0x4e, 0x81, 0x91, 0x91, 0xa7, 0x52, 0xc5, 0x9b, 0x4a, 0x82,
-  0x47, 0xf2, 0x71, 0x36, 0x5f, 0x7a, 0xbc, 0xbd, 0x42, 0x6c, 0x0e, 0x7a,
-  0xcc, 0x2f, 0x08, 0xa7, 0x49, 0x54, 0x05, 0xfc, 0x4d, 0x59, 0x03, 0x86,
-  0x1c, 0xc6, 0xa3, 0xab, 0x0a, 0xa1, 0x12, 0xee, 0xad, 0x36, 0x8a, 0x83,
-  0x8b, 0xf8, 0x11, 0xab, 0x71, 0x67, 0xdc, 0xaa, 0xd3, 0x6d, 0x06, 0x4c,
-  0x34, 0x04, 0x65, 0x66, 0x0e, 0x0c, 0xa9, 0x74, 0xe8, 0x4a, 0x5e, 0x71,
-  0x9f, 0xb8, 0x33, 0x70, 0x77, 0x4d, 0x26, 0x39, 0xe9, 0x2e, 0x38, 0xf9,
-  0xe6, 0x97, 0xd7, 0xd7, 0x51, 0xac, 0x89, 0x99, 0x02, 0x5a, 0x78, 0x1a,
-  0xf3, 0x55, 0x96, 0x36, 0xd0, 0x38, 0xe8, 0xa6, 0x5f, 0x8d, 0x27, 0x75,
-  0x1a, 0x7c, 0xe4, 0x19, 0x6f, 0x14, 0x2f, 0x7d, 0xd4, 0x7e, 0x7c, 0x17,
-  0x60, 0x13, 0xf0, 0x1e, 0x20, 0xaa, 0x3c, 0xfc, 0xcc, 0x7a, 0xa1, 0xae,
-  0x52, 0xb3, 0x29, 0xee, 0xfb, 0x5a, 0x78, 0xbd, 0xb1, 0x12, 0x24, 0x9b,
-  0x2f, 0xbb, 0x5b, 0x7c, 0xa6, 0x68, 0x45, 0x06, 0xf5, 0x12, 0x23, 0x3f,
-  0xe3, 0x3f, 0x13, 0x66, 0xb0, 0x26, 0x36, 0x2f, 0x8b, 0x03, 0x4e, 0x94,
-  0x95, 0xde, 0xc1, 0x7b, 0x83, 0x02, 0xa7, 0x1e, 0xd8, 0x57, 0x94, 0x15,
-  0xb5, 0x04, 0x81, 0x57, 0x16, 0x48, 0xba, 0xef, 0x1d, 0x3a, 0x12, 0x2c,
-  0xef, 0x65, 0x88, 0xe5, 0x65, 0x43, 0xc2, 0x48, 0xa2, 0x1d, 0x1c, 0x12,
-  0x06, 0x59, 0x4f, 0x88, 0x21, 0x02, 0x42, 0xa6, 0x4c, 0x2e, 0xde, 0x1c,
-  0x25, 0xfb, 0x4f, 0x3e, 0xff, 0x7c, 0x18, 0x25, 0x10, 0xe4, 0x04, 0x4b,
-  0xb3, 0x09, 0x69, 0xa6, 0x1c, 0xdb, 0x5c, 0xdf, 0xd2, 0x86, 0xa2, 0xd2,
-  0x7b, 0x96, 0x16, 0x4c, 0xdb, 0x3d, 0x27, 0x62, 0x10, 0x12, 0x8e, 0xcb,
-  0x59, 0x68, 0xe4, 0x23, 0x76, 0x35, 0x27, 0xc5, 0x42, 0xa4, 0x18, 0x14,
-  0x2c, 0x92, 0x1a, 0xf3, 0x7c, 0x85, 0x52, 0x97, 0x09, 0x4e, 0xca, 0x56,
-  0xf7, 0x86, 0x0b, 0x80, 0xc1, 0x7b, 0x8c, 0x84, 0x34, 0x7a, 0x03, 0x60,
-  0xbf, 0x1c, 0x7c, 0xe7, 0xe9, 0xd8, 0x8c, 0xa4, 0x53, 0xd2, 0xfc, 0x6c,
-  0x26, 0x1a, 0x3e, 0x1b, 0x67, 0x36, 0x43, 0x9a, 0x0b, 0x77, 0x74, 0x48,
-  0x82, 0x38, 0xe9, 0xb3, 0xa0, 0x4c, 0x19, 0xa2, 0x8a, 0x37, 0x1f, 0xe8,
-  0x34, 0x87, 0x1c, 0xc7, 0xeb, 0xac, 0x09, 0xb3, 0x3b, 0x3c, 0x98, 0xe5,
-  0x9a, 0xc6, 0x63, 0x96, 0x91, 0x24, 0xa7, 0x24, 0x2f, 0x95, 0xc7, 0x5f,
-  0x6b, 0x38, 0x4f, 0xc0, 0x2a, 0xc6, 0xf4, 0xea, 0x5f, 0x61, 0x35, 0x5e,
-  0xca, 0xd4, 0x4b, 0xb2, 0xd6, 0x57, 0x51, 0xe6, 0x20, 0xc1, 0x7a, 0x82,
-  0xc6, 0xa6, 0x69, 0x8c, 0x62, 0xed, 0x64, 0x37, 0x80, 0xb5, 0x60, 0x2c,
-  0x11, 0xe8, 0xa7, 0x16, 0x13, 0xa7, 0x0d, 0x3b, 0x8b, 0x51, 0xfa, 0xbd,
-  0xb4, 0x8d, 0x4a, 0xa1, 0x00, 0xc2, 0x36, 0x53, 0x57, 0x62, 0x33, 0xa1,
-  0x04, 0xc0, 0x24, 0x1f, 0xcc, 0xd3, 0x81, 0xdd, 0x43, 0xef, 0x7a, 0xf3,
-  0x14, 0xa1, 0x98, 0x00, 0xd7, 0xdd, 0x81, 0x0d, 0xa7, 0x52, 0xa5, 0xbe,
-  0xb9, 0xec, 0x18, 0xd5, 0xee, 0x14, 0x92, 0xcf, 0x77, 0xf0, 0xa6, 0xd9,
-  0x9b, 0xd4, 0xd6, 0x66, 0x04, 0xf9, 0xd5, 0xb8, 0x7c, 0x09, 0x6b, 0x4c,
-  0xe1, 0x34, 0x70, 0x4f, 0x2c, 0x47, 0x17, 0x5d, 0x56, 0x55, 0x6a, 0xf6,
-  0xe2, 0x5f, 0x17, 0xd7, 0x8e, 0x0f, 0xfd, 0x26, 0x2c, 0x3c, 0x60, 0xf4,
-  0xb0, 0xb0, 0x88, 0x08, 0x0e, 0xe9, 0xe0, 0x4d, 0x22, 0x1d, 0x79, 0xf5,
-  0x55, 0xab, 0x39, 0xe5, 0xda, 0xf6, 0xa9, 0x64, 0x05, 0x15, 0x3a, 0xb9,
-  0xce, 0x23, 0x29, 0x75, 0x42, 0x05, 0xc0, 0x3b, 0xcb, 0x41, 0x81, 0xfd,
-  0x98, 0x86, 0xee, 0x32, 0x04, 0xef, 0x5d, 0x08, 0x7e, 0x96, 0xc5, 0x2a,
-  0x16, 0xd9, 0xa8, 0xf2, 0x35, 0x59, 0x48, 0x52, 0xc4, 0x96, 0x48, 0x01,
-  0x74, 0x47, 0x91, 0xb7, 0xb6, 0xa9, 0x96, 0x93, 0x86, 0x0b, 0x09, 0xc8,
-  0xd7, 0xa0, 0x33, 0x86, 0x68, 0x2f, 0xde, 0x4d, 0x20, 0x1a, 0xa8, 0xb2,
-  0xeb, 0x25, 0x5d, 0xa0, 0xdc, 0x17, 0xa6, 0xca, 0x19, 0x2f, 0xb1, 0x73,
-  0xa7, 0x16, 0x92, 0x47, 0x5e, 0x08, 0x6b, 0xdd, 0x07, 0x4e, 0x0b, 0xf2,
-  0x04, 0xe4, 0x7f, 0x97, 0x20, 0x95, 0x78, 0xbf, 0x88, 0x0f, 0x90, 0x19,
-  0x97, 0xe0, 0xe3, 0xc9, 0x88, 0x06, 0xfc, 0x35, 0x15, 0xe5, 0x62, 0x35,
-  0x86, 0xce, 0xda, 0x26, 0xa7, 0x3e, 0x76, 0xb7, 0x17, 0x6f, 0x2c, 0xbe,
-  0x8d, 0x49, 0x89, 0xf5, 0x3b, 0xe8, 0xca, 0x9e, 0xeb, 0x13, 0x8b, 0x7c,
-  0x81, 0x2a, 0x08, 0x6a, 0xce, 0x6e, 0x47, 0x2c, 0x98, 0x65, 0x61, 0xa6,
-  0xab, 0x59, 0x52, 0x08, 0xcf, 0x12, 0x5a, 0x18, 0xe1, 0xfd, 0x57, 0xa1,
-  0x4a, 0x95, 0xe1, 0x72, 0xf9, 0xb8, 0xa9, 0xdd, 0x39, 0xc0, 0x80, 0x84,
-  0x62, 0xf0, 0x36, 0x03, 0x49, 0x12, 0xe1, 0x19, 0x1a, 0x15, 0x7f, 0x28,
-  0xdc, 0x02, 0x7f, 0xe0, 0x17, 0x14, 0xe8, 0x9b, 0x64, 0x8e, 0x18, 0x12,
-  0x13, 0x43, 0xaa, 0x44, 0x01, 0x42, 0xb5, 0xc0, 0x93, 0x7e, 0xe5, 0xc2,
-  0x18, 0xd6, 0x9e, 0x87, 0xea, 0x69, 0x84, 0x34, 0x67, 0xba, 0x08, 0x65,
-  0x09, 0x95, 0x96, 0x26, 0x24, 0x7d, 0x4d, 0x36, 0x23, 0x4e, 0x50, 0xe8,
-  0xa1, 0xa9, 0xb2, 0xbf, 0x5a, 0x53, 0x9f, 0x24, 0x7e, 0x70, 0x32, 0xd5,
-  0xe0, 0xe5, 0x20, 0x63, 0xe3, 0xc5, 0x50, 0x99, 0xe0, 0xc3, 0xbf, 0x89,
-  0x78, 0xd5, 0x81, 0x58, 0xb2, 0xe1, 0x8c, 0x2e, 0x66, 0x9f, 0xb5, 0x9a,
-  0x3e, 0xc7, 0x43, 0x24, 0x05, 0xda, 0x25, 0xb2, 0xae, 0x3e, 0x64, 0xbd,
-  0xbb, 0x6c, 0xfc, 0xea, 0x2b, 0x72, 0x93, 0x7c, 0x02, 0xc3, 0x33, 0xab,
-  0x47, 0x24, 0x6c, 0x76, 0x40, 0xf8, 0x9c, 0x78, 0xe7, 0xac, 0xdb, 0x48,
-  0x59, 0xad, 0x6e, 0xd6, 0xcb, 0x21, 0xf0, 0x9a, 0xbc, 0x2a, 0xcb, 0xb5,
-  0x2d, 0xd2, 0xac, 0xb0, 0x1f, 0x00, 0xf3, 0xe2, 0xc1, 0x93, 0x18, 0xb4,
-  0xe3, 0x32, 0xa4, 0x58, 0xe2, 0xd8, 0xb3, 0x2b, 0x72, 0x37, 0x96, 0xb2,
-  0x8a, 0x2a, 0xc1, 0x6c, 0xee, 0x69, 0x4c, 0xed, 0x55, 0x9f, 0x21, 0xfa,
-  0x51, 0x4e, 0x7f, 0x37, 0x06, 0x96, 0x3e, 0x60, 0xc3, 0xa0, 0xbf, 0x7e,
-  0x61, 0x5f, 0xa7, 0xff, 0x18, 0xe1, 0x05, 0xce, 0xd4, 0x35, 0xa3, 0x31,
-  0x87, 0x5f, 0x5f, 0xd9, 0xe1, 0x02, 0xbc, 0x5a, 0xeb, 0x6c, 0xb3, 0xcf,
-  0x0a, 0xdb, 0x17, 0x9b, 0x38, 0xe8, 0x8a, 0x1c, 0x41, 0x2d, 0x0d, 0xec,
-  0x19, 0x2a, 0xaf, 0xd1, 0xdd, 0xf1, 0x84, 0xae, 0xe2, 0x6a, 0x1b, 0xe8,
-  0xfd, 0x8a, 0x8e, 0x93, 0xfa, 0x96, 0x68, 0xdf, 0x7f, 0xea, 0xd9, 0xde,
-  0xff, 0xd4, 0x73, 0xfd, 0xff, 0xa9, 0xe7, 0x46, 0xf0, 0x53, 0xaf, 0x07,
-  0x5a, 0xcf, 0x20, 0x00, 0xfb, 0xcb, 0x17, 0x7d, 0x93, 0x3f, 0xea, 0xbe,
-  0xe9, 0x7d, 0xd2, 0xfb, 0x62, 0x6f, 0x73, 0xdd, 0xa4, 0xb9, 0x54, 0xcd,
-  0xfc, 0xca, 0x23, 0x02, 0xe3, 0x09, 0x24, 0x19, 0x22, 0x93, 0xa4, 0xb3,
-  0xe4, 0x66, 0x05, 0x65, 0x21, 0x02, 0xcf, 0xab, 0xf7, 0x04, 0x4d, 0xb9,
-  0xab, 0x1d, 0xe2, 0xb1, 0x62, 0x5b, 0xb6, 0x31, 0x5d, 0x08, 0xad, 0x3b,
-  0x17, 0x14, 0x23, 0xb4, 0xaf, 0x07, 0x07, 0xfa, 0x7f, 0x98, 0x2f, 0x58,
-  0x14, 0x90, 0xa6, 0x94, 0xa4, 0x82, 0x10, 0x02, 0xf8, 0xb1, 0xe0, 0x00,
-  0x98, 0xa8, 0x9d, 0x84, 0xe2, 0x27, 0xff, 0x88, 0xee, 0x89, 0x00, 0x1b,
-  0x3b, 0xcf, 0x51, 0x33, 0xc6, 0x0c, 0x6b, 0xc6, 0xa6, 0xce, 0x0e, 0x5d,
-  0x82, 0xc0, 0xb2, 0xa1, 0x92, 0x4b, 0x0d, 0x5b, 0x4f, 0xac, 0x20, 0xa9,
-  0xc6, 0xc2, 0x13, 0xb1, 0x6a, 0x67, 0xd0, 0xc6, 0xd8, 0xa4, 0x46, 0xab,
-  0xfa, 0x55, 0xcf, 0x5c, 0x2a, 0x5f, 0x98, 0x3b, 0xac, 0x32, 0xba, 0xd0,
-  0x17, 0xb4, 0xb7, 0x96, 0x66, 0xb5, 0xdc, 0x41, 0xfd, 0x34, 0x98, 0xdf,
-  0x9b, 0xce, 0x6f, 0xfe, 0x92, 0x9d, 0x61, 0x45, 0xda, 0x94, 0xca, 0x2a,
-  0xd5, 0x8d, 0xb9, 0x3d, 0x3a, 0x41, 0x68, 0x39, 0xb5, 0xec, 0x44, 0x96,
-  0x33, 0xa9, 0xcf, 0xbc, 0x8a, 0xb1, 0x1e, 0x05, 0x03, 0x71, 0x87, 0x93,
-  0x75, 0xfe, 0x57, 0x67, 0xdf, 0x7d, 0xa1, 0x0d, 0xfc, 0xd4, 0xfb, 0x71,
-  0xc0, 0x3f, 0x45, 0x2e, 0xde, 0x41, 0x72, 0xf6, 0x1d, 0x6d, 0xee, 0x5f,
-  0x26, 0xc0, 0xd6, 0x7d, 0xe0, 0x2b, 0xfe, 0x0b, 0x76, 0xf6, 0xba, 0x66,
-  0x2f, 0xbd, 0x50, 0xf8, 0x2b, 0x54, 0xed, 0x43, 0xee, 0x00, 0x0c, 0xba,
-  0xc5, 0x82, 0xb2, 0x01, 0x34, 0xfb, 0xac, 0xe1, 0xec, 0x33, 0x24, 0xe4,
-  0x8f, 0x4b, 0x18, 0x9f, 0x4d, 0x48, 0x5d, 0x0a, 0xea, 0xc4, 0xbf, 0xc9,
-  0xfe, 0xa2, 0x2d, 0x65, 0xec, 0x5f, 0xc4, 0x3b, 0x74, 0x7a, 0xb9, 0x1a,
-  0x6f, 0x3a, 0x6d, 0xe7, 0x21, 0x99, 0xf3, 0x70, 0x1c, 0xa1, 0xa9, 0x76,
-  0x3c, 0x17, 0xfc, 0x37, 0xdc, 0x71, 0xa0, 0xf3, 0x20, 0x5d, 0x9d, 0xea,
-  0xdd, 0xa4, 0x55, 0xa6, 0x35, 0x0c, 0xa4, 0xba, 0x12, 0x57, 0xd1, 0xf9,
-  0x22, 0xe6, 0x55, 0x96, 0x60, 0x97, 0x00, 0x4b, 0xaf, 0xca, 0x99, 0x56,
-  0x66, 0x37, 0x3b, 0x9f, 0x57, 0xd8, 0x16, 0x34, 0xba, 0x2b, 0x09, 0x0e,
-  0x3e, 0x15, 0xa7, 0xb7, 0x7c, 0x36, 0xa6, 0x62, 0x4a, 0x74, 0x4a, 0x42,
-  0xf8, 0x5c, 0x6f, 0x4b, 0xe8, 0x63, 0xb0, 0xf5, 0x4d, 0x47, 0xe6, 0xe3,
-  0x0c, 0x6e, 0x0c, 0xcd, 0xae, 0x1a, 0x88, 0x9f, 0x31, 0xe2, 0x0a, 0xe8,
-  0x1e, 0x1b, 0xc4, 0xc6, 0x25, 0xc1, 0x8a, 0x08, 0x45, 0xbe, 0x25, 0xb5,
-  0x97, 0x33, 0x5d, 0x8a, 0xc4, 0x56, 0x1e, 0x80, 0x86, 0x9b, 0xc6, 0x07,
-  0x6b, 0x0b, 0x97, 0xd3, 0x0c, 0x85, 0xa7, 0x2d, 0xf9, 0x83, 0xb8, 0x25,
-  0xbd, 0xfa, 0xe6, 0x18, 0xbd, 0xac, 0xd7, 0x30, 0x78, 0xe1, 0x47, 0x81,
-  0x7d, 0x0c, 0xf6, 0x0e, 0xbc, 0x3a, 0x12, 0xfc, 0xb3, 0x78, 0xf3, 0x3e,
-  0xc7, 0x82, 0xc6, 0x1b, 0x6b, 0x99, 0xfe, 0x35, 0xed, 0xef, 0xdb, 0xf6,
-  0x37, 0x22, 0xb4, 0x06, 0x4c, 0x3c, 0x10, 0xff, 0xec, 0xa5, 0x0f, 0x49,
-  0x12, 0x5f, 0x9c, 0x67, 0x15, 0x27, 0x6c, 0x90, 0xaa, 0x45, 0x5a, 0xf7,
-  0x5b, 0xc4, 0x07, 0xe1, 0xf7, 0x90, 0x5f, 0x30, 0x65, 0xc0, 0x2b, 0x8f,
-  0xc4, 0x4c, 0x64, 0x07, 0x98, 0x21, 0x05, 0x42, 0x79, 0x67, 0x95, 0x73,
-  0xa2, 0xe4, 0x9b, 0x1e, 0xb8, 0xf2, 0x63, 0x30, 0x29, 0xd5, 0x74, 0x66,
-  0xf5, 0xd8, 0xe5, 0xc0, 0x85, 0xa9, 0x4a, 0x2d, 0x26, 0xca, 0xe0, 0x53,
-  0x90, 0xc7, 0xc2, 0x94, 0x09, 0xa5, 0x4f, 0x8e, 0xc3, 0xd6, 0xa6, 0x98,
-  0xe8, 0xf4, 0x31, 0x2a, 0xdc, 0x05, 0xc4, 0x0b, 0xd8, 0x07, 0x28, 0x6d,
-  0x8f, 0x27, 0x60, 0x10, 0xd1, 0x3b, 0x0e, 0x90, 0x18, 0x66, 0x4f, 0x05,
-  0x33, 0x71, 0x80, 0x88, 0x43, 0x6d, 0x11, 0x54, 0x91, 0x6c, 0xb3, 0x6f,
-  0x04, 0xdd, 0x4a, 0xbd, 0x19, 0x96, 0xc6, 0xa4, 0xc2, 0xb1, 0xc5, 0x4e,
-  0xa5, 0xc9, 0xe6, 0xab, 0xed, 0x4d, 0x3b, 0xb4, 0x35, 0x36, 0x60, 0x6b,
-  0xd3, 0x68, 0x38, 0xcb, 0xd6, 0xe3, 0x63, 0x67, 0xde, 0x1c, 0x75, 0x2c,
-  0xb2, 0x01, 0xaf, 0x66, 0x94, 0x4e, 0xa9, 0xd6, 0x5c, 0x77, 0x94, 0x7d,
-  0xc7, 0xe9, 0x64, 0x32, 0x05, 0xde, 0xe4, 0xe9, 0xcc, 0xf4, 0x90, 0xf2,
-  0x9a, 0x6e, 0x95, 0x0a, 0xae, 0x3e, 0x60, 0xc2, 0xc8, 0x98, 0x0d, 0x4b,
-  0x5d, 0xa0, 0xa8, 0x00, 0x38, 0xae, 0xc5, 0x1e, 0xaa, 0xfd, 0x4a, 0x7d,
-  0xab, 0xf5, 0xb3, 0xcd, 0x57, 0x5b, 0x7c, 0x63, 0x39, 0xd7, 0x8c, 0xf7,
-  0xed, 0xcd, 0xe4, 0xa7, 0x78, 0xae, 0x5a, 0xc2, 0xef, 0xba, 0x1e, 0xe9,
-  0x9e, 0x7d, 0xe8, 0x8d, 0xe4, 0xe5, 0xb8, 0x9c, 0xde, 0x7f, 0x89, 0x18,
-  0x86, 0xbc, 0xf2, 0x72, 0x07, 0x3f, 0xea, 0x28, 0xcd, 0xab, 0x1a, 0x42,
-  0x2b, 0x66, 0xa9, 0xf0, 0xe7, 0x57, 0xf4, 0x38, 0x8c, 0xf6, 0xe6, 0x53,
-  0xb3, 0x99, 0x0c, 0x87, 0x46, 0x14, 0xd5, 0x73, 0x94, 0x4c, 0x59, 0x73,
-  0xb5, 0x80, 0xfc, 0x48, 0x36, 0x82, 0x65, 0xa4, 0x90, 0x82, 0x49, 0x6a,
-  0xb4, 0xa8, 0x47, 0x8b, 0x7f, 0x5d, 0xbd, 0xa2, 0x0a, 0x6a, 0x0a, 0xbd,
-  0xd8, 0x88, 0x70, 0x5a, 0x98, 0x87, 0x15, 0x68, 0xe4, 0xa5, 0x73, 0x7e,
-  0x3e, 0xce, 0xc5, 0x6b, 0x3b, 0x2d, 0x5b, 0x44, 0x6c, 0x9c, 0x35, 0x6d,
-  0x2e, 0xf9, 0xb8, 0xf0, 0x9e, 0x94, 0x15, 0x87, 0x1c, 0x20, 0x20, 0xac,
-  0x19, 0x23, 0x9d, 0x1b, 0x1c, 0xcb, 0x17, 0x55, 0x96, 0x1a, 0x39, 0xf1,
-  0x19, 0x7d, 0x29, 0xc6, 0x3f, 0xc2, 0x09, 0x69, 0x6c, 0x4a, 0x99, 0x1e,
-  0x7e, 0x3e, 0xc0, 0x83, 0x5e, 0x05, 0x3f, 0x3d, 0x00, 0x6d, 0x6c, 0x40,
-  0x5f, 0x54, 0xc4, 0x30, 0xe9, 0x3d, 0x2f, 0xb8, 0xaa, 0x06, 0x8d, 0x8f,
-  0x8a, 0x53, 0x3f, 0x7f, 0xca, 0x23, 0xe4, 0x99, 0x12, 0x76, 0xa3, 0x96,
-  0x53, 0x4f, 0xef, 0xa3, 0x2a, 0x8c, 0x2a, 0xd9, 0x31, 0x72, 0xd6, 0x20,
-  0xe9, 0x69, 0x54, 0xac, 0x85, 0xb1, 0x81, 0x74, 0xb1, 0x1a, 0x9d, 0xf2,
-  0x1a, 0x45, 0x78, 0x93, 0xcf, 0x9e, 0x7b, 0xbd, 0x5e, 0x7d, 0x40, 0xd9,
-  0x45, 0xe3, 0x9d, 0x78, 0x1c, 0x42, 0x19, 0xa3, 0x8c, 0xc9, 0x0d, 0x42,
-  0xb7, 0x6e, 0xd0, 0x2f, 0x72, 0xef, 0x30, 0xc5, 0x8f, 0x8c, 0xd1, 0xba,
-  0x19, 0x1e, 0x3a, 0x4f, 0xfe, 0x69, 0xf8, 0x42, 0xb7, 0x4f, 0xf7, 0xc3,
-  0x6b, 0x77, 0xb7, 0x67, 0x2d, 0xe9, 0xfb, 0xdc, 0x09, 0xde, 0xe1, 0x0f,
-  0x6f, 0x70, 0x72, 0x4c, 0x5f, 0x2d, 0x2b, 0x2e, 0x1c, 0xcf, 0x8f, 0xb1,
-  0xbe, 0xa0, 0x29, 0x08, 0xa2, 0xb2, 0xbf, 0x3d, 0x7c, 0xf7, 0xfe, 0xf0,
-  0x74, 0xf8, 0xeb, 0xea, 0x02, 0xad, 0x7d, 0xcd, 0xcb, 0x39, 0xec, 0xd0,
-  0x69, 0x3c, 0x9c, 0x8c, 0x4c, 0x39, 0x1f, 0xb4, 0x7f, 0x08, 0x5e, 0x10,
-  0x67, 0xd3, 0x60, 0xdc, 0xa6, 0x04, 0x57, 0x3d, 0xdc, 0x5f, 0x5a, 0x4b,
-  0x91, 0xac, 0x9e, 0xbe, 0x4f, 0xaf, 0xf7, 0x04, 0xb7, 0x6a, 0x13, 0x3d,
-  0x23, 0xd2, 0xd3, 0x25, 0xa7, 0x5a, 0xe0, 0x8e, 0x56, 0x13, 0x95, 0xab,
-  0xab, 0xe5, 0xbd, 0x28, 0xaf, 0xae, 0x1c, 0x79, 0x45, 0x37, 0x32, 0x74,
-  0x74, 0xb4, 0x3a, 0x63, 0xee, 0xf7, 0xe4, 0xc9, 0xeb, 0xe0, 0x97, 0x31,
-  0x8d, 0x4e, 0x94, 0x0f, 0x9a, 0x92, 0xb3, 0x49, 0x5f, 0x4a, 0xdf, 0xe2,
-  0xb3, 0x6a, 0x3a, 0xe8, 0x07, 0x42, 0x55, 0xa3, 0xa5, 0x1e, 0x51, 0x49,
-  0x34, 0x4c, 0xd6, 0xf9, 0x21, 0x55, 0x8b, 0xd7, 0x5c, 0x4e, 0x09, 0x68,
-  0xf7, 0x03, 0xdb, 0x8b, 0x6b, 0xd6, 0x92, 0x4a, 0xa8, 0xb3, 0xa1, 0x10,
-  0x23, 0x0b, 0x06, 0x44, 0xcc, 0xc0, 0x08, 0x88, 0xcb, 0xe5, 0xdc, 0x1c,
-  0x0a, 0xa3, 0xe0, 0x4e, 0x37, 0x6b, 0x09, 0xe1, 0x75, 0x37, 0x97, 0xd6,
-  0x0a, 0xd7, 0xb5, 0xa6, 0x1d, 0x46, 0x6b, 0x3f, 0x52, 0x49, 0x9d, 0xba,
-  0x90, 0xa7, 0x47, 0x6e, 0xd8, 0x8f, 0xbb, 0x7a, 0x7a, 0xa3, 0x93, 0xcb,
-  0x63, 0x33, 0x7d, 0xef, 0x2f, 0xbf, 0xed, 0x49, 0x88, 0xb4, 0x9b, 0xc6,
-  0x0e, 0xfa, 0x04, 0xaa, 0xba, 0x77, 0x6b, 0x93, 0xdd, 0x2a, 0xf6, 0x9a,
-  0x18, 0xfb, 0x20, 0x26, 0xb3, 0xdd, 0x47, 0x87, 0x6b, 0x56, 0xe9, 0xd9,
-  0xf0, 0x59, 0x77, 0x95, 0x56, 0x13, 0x95, 0x32, 0x75, 0x65, 0xb0, 0xdd,
-  0x85, 0x0f, 0x93, 0x70, 0x37, 0x3b, 0x8e, 0xca, 0x1e, 0xc1, 0x19, 0x10,
-  0x55, 0xa4, 0x9c, 0xc9, 0x1a, 0xdc, 0x05, 0x4a, 0xcc, 0xe5, 0xc5, 0x53,
-  0xc1, 0xda, 0x69, 0x99, 0x3b, 0xc4, 0x89, 0xcd, 0x61, 0x34, 0xb3, 0x62,
-  0x69, 0x35, 0xb5, 0x59, 0x5d, 0xa1, 0x32, 0xa8, 0x48, 0x31, 0x2a, 0x90,
-  0x61, 0xb6, 0x80, 0xf2, 0xe3, 0xb7, 0x92, 0xed, 0x5c, 0xf1, 0x61, 0x75,
-  0x15, 0xbb, 0xac, 0xbd, 0x38, 0x8d, 0x2a, 0xfc, 0x8f, 0xe0, 0xcd, 0xb7,
-  0x7c, 0xa0, 0x6b, 0xb1, 0x73, 0x71, 0xe6, 0x4f, 0x9a, 0x57, 0x41, 0x1a,
-  0xbc, 0xe4, 0x3f, 0xe3, 0xfb, 0x1d, 0x97, 0x6b, 0x55, 0xce, 0xd8, 0x63,
-  0x28, 0x6f, 0x30, 0x04, 0x90, 0x71, 0xf6, 0xe0, 0x61, 0x81, 0x03, 0x1c,
-  0xa1, 0x33, 0x98, 0x23, 0xa8, 0x26, 0x1b, 0x16, 0x41, 0xd9, 0x1a, 0x6d,
-  0xcb, 0x14, 0x32, 0x6a, 0x56, 0x5a, 0x8b, 0x24, 0x50, 0x78, 0x3c, 0x65,
-  0xa2, 0x4d, 0xc6, 0x88, 0x32, 0xbc, 0xd3, 0x1b, 0x1a, 0x48, 0x10, 0xc6,
-  0x93, 0xbb, 0x69, 0x5c, 0xdb, 0x62, 0x5f, 0x05, 0xe0, 0x47, 0x80, 0x76,
-  0x73, 0xba, 0xc6, 0xd1, 0x0f, 0xaf, 0xbd, 0xd2, 0x07, 0x8a, 0x70, 0xe2,
-  0xfd, 0x22, 0xda, 0xe7, 0x2a, 0x62, 0xa5, 0xcc, 0xc1, 0xf4, 0x86, 0x08,
-  0xc6, 0x4d, 0xb3, 0x6c, 0x61, 0x49, 0x6d, 0x51, 0x9a, 0x92, 0x96, 0x9d,
-  0x82, 0x6f, 0x42, 0x28, 0x8c, 0xe2, 0x3e, 0x2b, 0x7a, 0x27, 0xa2, 0xc3,
-  0x46, 0x01, 0xe8, 0xff, 0xa8, 0x96, 0x0b, 0x85, 0xff, 0xf6, 0x3e, 0x7b,
-  0xf2, 0xb9, 0xb9, 0x7f, 0xef, 0xc1, 0x32, 0xeb, 0xa6, 0x8c, 0x59, 0x20,
-  0x57, 0x53, 0x66, 0x89, 0x09, 0xa3, 0xe0, 0x50, 0xc9, 0x86, 0x4e, 0x6a,
-  0xb2, 0x19, 0xe0, 0x8f, 0x92, 0xdc, 0xc4, 0x90, 0x4c, 0xc2, 0x4c, 0xa2,
-  0x4c, 0x98, 0xc0, 0xb5, 0x30, 0x4f, 0x0c, 0x2d, 0x1a, 0x7a, 0x1b, 0xd8,
-  0xa8, 0x70, 0xa8, 0x6b, 0x63, 0x44, 0xca, 0xc5, 0xf1, 0xe5, 0x85, 0xf9,
-  0x63, 0x74, 0x79, 0x76, 0xb1, 0x82, 0xe7, 0xac, 0xe1, 0x2c, 0x7b, 0x9a,
-  0x34, 0x85, 0x39, 0x60, 0x9a, 0xdb, 0x04, 0x48, 0xc0, 0xd1, 0xb2, 0xd8,
-  0xa9, 0xa3, 0x9c, 0x39, 0x1e, 0x75, 0x4e, 0x3d, 0x6c, 0x0d, 0xf4, 0xca,
-  0xdc, 0x0f, 0x6b, 0x07, 0xc6, 0x6b, 0xbe, 0x7e, 0x87, 0x60, 0xc0, 0xb4,
-  0x19, 0x69, 0xc4, 0x56, 0xd0, 0xa3, 0xb7, 0xc6, 0x3c, 0xa3, 0x38, 0x9a,
-  0x23, 0x30, 0xd6, 0x7a, 0xa1, 0x2b, 0xf8, 0xed, 0x18, 0xd4, 0x59, 0x73,
-  0x9a, 0xba, 0xf8, 0xa9, 0xc8, 0x03, 0xd0, 0xd3, 0x4c, 0xde, 0x5e, 0xb2,
-  0x05, 0x7f, 0xb1, 0xe8, 0x1e, 0x0f, 0xec, 0x5f, 0xa3, 0xef, 0x6c, 0xbb,
-  0x01, 0xd7, 0xe5, 0x3c, 0x63, 0x97, 0x3e, 0x9c, 0x3e, 0x56, 0x38, 0xd5,
-  0x52, 0x89, 0x26, 0xe7, 0x94, 0xea, 0x30, 0x9d, 0xdd, 0xb2, 0xf1, 0xd0,
-  0x2a, 0x6f, 0xda, 0x84, 0x60, 0xad, 0x85, 0xcd, 0xeb, 0x92, 0x19, 0x9b,
-  0xb4, 0x01, 0xcd, 0xd1, 0xa6, 0xf6, 0xca, 0xa3, 0xe9, 0x69, 0x0b, 0xef,
-  0xbd, 0xae, 0x90, 0xa1, 0x9c, 0xea, 0xb8, 0x64, 0x21, 0x84, 0x83, 0xcd,
-  0x8d, 0x05, 0x40, 0x47, 0xb1, 0x19, 0xd0, 0x25, 0xfc, 0x8a, 0x6e, 0xe7,
-  0xf2, 0x14, 0xaf, 0x6d, 0x20, 0x0a, 0x20, 0x06, 0x66, 0x6e, 0x6f, 0xcb,
-  0x92, 0x73, 0x82, 0xf3, 0xb2, 0x2b, 0x74, 0x5b, 0x3a, 0x5b, 0x28, 0x66,
-  0x55, 0x35, 0xf3, 0x4b, 0x5c, 0x75, 0x93, 0xc9, 0x17, 0x8f, 0xaf, 0x24,
-  0x22, 0x9f, 0xe9, 0x68, 0x30, 0xb0, 0x3a, 0x9c, 0x4b, 0x01, 0x45, 0x4b,
-  0xa3, 0x14, 0x18, 0xc9, 0xfb, 0x42, 0x88, 0x1f, 0x0a, 0x63, 0x41, 0x20,
-  0x6e, 0x3e, 0xb5, 0x93, 0x46, 0x8c, 0x28, 0x04, 0xf7, 0xe1, 0x4b, 0x6b,
-  0x5a, 0x42, 0x65, 0x67, 0x86, 0xd4, 0x90, 0x3f, 0x0b, 0x3e, 0x63, 0x44,
-  0xa1, 0xf5, 0xa6, 0x91, 0xf6, 0x9c, 0x45, 0x35, 0x69, 0xba, 0x23, 0x45,
-  0x92, 0x76, 0x30, 0xd0, 0x73, 0x7f, 0xd1, 0x58, 0xa4, 0xc1, 0xc4, 0x71,
-  0xb2, 0xa0, 0xe1, 0x5c, 0x69, 0x4e, 0x88, 0x56, 0x2f, 0x80, 0x64, 0xa5,
-  0x17, 0xd1, 0x5c, 0x1b, 0xce, 0x48, 0xd7, 0xfa, 0xc4, 0xad, 0x4c, 0x6f,
-  0x55, 0x03, 0x87, 0x6b, 0x78, 0x82, 0xfc, 0xc4, 0xf0, 0xd6, 0x96, 0xdc,
-  0x6b, 0x69, 0x7d, 0xed, 0xd1, 0xad, 0x4c, 0x3a, 0xc4, 0x06, 0xbd, 0xa0,
-  0x25, 0x53, 0x72, 0x37, 0xdd, 0x5b, 0x5c, 0x1d, 0xde, 0x1c, 0xf8, 0x1d,
-  0xca, 0x71, 0x20, 0xfa, 0x2b, 0x63, 0x3c, 0x96, 0x33, 0x14, 0x76, 0x50,
-  0xd5, 0x2d, 0x56, 0x21, 0x13, 0x2a, 0x18, 0x53, 0x68, 0x98, 0xc6, 0xdb,
-  0x15, 0x0f, 0xbd, 0xd2, 0x41, 0x74, 0x9b, 0x7a, 0x59, 0xdf, 0xc3, 0x18,
-  0x92, 0x9a, 0x91, 0x04, 0x40, 0xca, 0xb5, 0xd5, 0x31, 0x2d, 0x14, 0xa7,
-  0xb4, 0xf2, 0x58, 0x57, 0xa8, 0x7c, 0x40, 0x6f, 0xaf, 0x48, 0xce, 0x52,
-  0x4a, 0x7f, 0xb0, 0xbb, 0x98, 0x59, 0xe9, 0x33, 0xaa, 0xa0, 0x7d, 0x32,
-  0x61, 0x39, 0xb4, 0xbf, 0x56, 0x67, 0xcd, 0x72, 0x11, 0xde, 0xf3, 0x2e,
-  0xf1, 0xcd, 0xb6, 0xc8, 0xd5, 0x9d, 0x1b, 0xbf, 0x8b, 0x4d, 0x69, 0xee,
-  0x36, 0x3b, 0xfd, 0x3e, 0x2f, 0x73, 0x60, 0x9e, 0x93, 0x26, 0x10, 0xdc,
-  0xee, 0xab, 0x92, 0x90, 0xf5, 0xd7, 0x43, 0x92, 0xac, 0x46, 0xbd, 0xd8,
-  0xed, 0x49, 0x9e, 0xa3, 0x24, 0xfd, 0x30, 0x74, 0xc0, 0xbe, 0x6d, 0xe6,
-  0xc5, 0xeb, 0x6f, 0x78, 0x66, 0x34, 0x9b, 0x41, 0xb2, 0xd0, 0x68, 0x75,
-  0xb6, 0xa8, 0x38, 0x30, 0xce, 0xef, 0xf6, 0xc6, 0xca, 0xa1, 0xaf, 0xee,
-  0x55, 0x6f, 0xef, 0xc5, 0xfe, 0x70, 0xef, 0xf9, 0xe7, 0xc3, 0x3d, 0x94,
-  0x15, 0xf4, 0x2a, 0x91, 0x33, 0xad, 0x2f, 0x55, 0xbe, 0xf3, 0xda, 0x89,
-  0xd4, 0x57, 0x4c, 0x56, 0x73, 0x63, 0xe2, 0x03, 0xf3, 0xfb, 0x21, 0x3d,
-  0x36, 0xe4, 0x6a, 0x0a, 0xc1, 0x27, 0xe6, 0x46, 0xa3, 0xa1, 0xa8, 0x7e,
-  0xe8, 0x9c, 0x54, 0x2c, 0x0a, 0xef, 0xc4, 0x45, 0x4e, 0x9b, 0x48, 0xe9,
-  0xea, 0xbc, 0x59, 0xe2, 0xb0, 0x19, 0xa8, 0xab, 0x98, 0xd8, 0x1e, 0x67,
-  0x33, 0xde, 0x21, 0x15, 0xe8, 0x13, 0x51, 0x22, 0x9d, 0x4c, 0xb7, 0xdf,
-  0x0f, 0x84, 0xe6, 0x2f, 0xb6, 0xf9, 0x88, 0x7f, 0xc1, 0x1e, 0xb9, 0x2e,
-  0xc7, 0x0e, 0xf8, 0x59, 0xba, 0x14, 0x1f, 0xc2, 0xd8, 0xc0, 0x0f, 0xb6,
-  0x72, 0x2f, 0x10, 0xff, 0xf6, 0xae, 0x18, 0x30, 0x97, 0xb8, 0x2c, 0x0e,
-  0x95, 0x9c, 0xb6, 0xe5, 0xb1, 0xf2, 0x61, 0x74, 0xb8, 0x58, 0x2c, 0x47,
-  0x0a, 0x8b, 0x68, 0x6d, 0x8e, 0xde, 0xf9, 0xd3, 0x9f, 0x9c, 0x3c, 0xe2,
-  0x2a, 0xb7, 0xe0, 0x70, 0x7f, 0x06, 0xce, 0x43, 0x8e, 0x6d, 0x31, 0xc3,
-  0x76, 0xd2, 0x3b, 0xf8, 0x0b, 0xbc, 0xc0, 0x3f, 0x0f, 0xfe, 0x62, 0xfe,
-  0xfd, 0x73, 0xcf, 0x23, 0xbd, 0x64, 0x5e, 0x1d, 0x05, 0xc8, 0x6c, 0xb4,
-  0x8f, 0x72, 0x3f, 0x69, 0x97, 0x09, 0x84, 0x66, 0x70, 0x79, 0x74, 0xce,
-  0x87, 0xb1, 0xe2, 0x18, 0x37, 0x76, 0x33, 0xc9, 0x21, 0xa8, 0xf5, 0x24,
-  0xc2, 0xc1, 0xa5, 0xbe, 0xf0, 0x40, 0x10, 0xb4, 0x65, 0x52, 0xef, 0xa5,
-  0xbe, 0xa2, 0x35, 0x48, 0x67, 0xac, 0x18, 0x4f, 0x62, 0x54, 0xdc, 0x6b,
-  0x72, 0xa3, 0x48, 0x02, 0x2d, 0xb9, 0x01, 0xad, 0x3a, 0x2d, 0x3f, 0xd3,
-  0xe6, 0x88, 0xa5, 0xa7, 0x06, 0xaf, 0xc6, 0x9d, 0xe9, 0x5a, 0x5f, 0x08,
-  0x25, 0x19, 0x5c, 0xdf, 0x08, 0x27, 0x9a, 0x99, 0x0f, 0x33, 0x63, 0x2a,
-  0x74, 0xab, 0xbc, 0xfe, 0x48, 0x63, 0x94, 0x4c, 0x11, 0x06, 0x5b, 0x6c,
-  0x78, 0x3a, 0x37, 0xfa, 0x46, 0x21, 0x2f, 0x21, 0x9e, 0xb0, 0xd9, 0x5f,
-  0xde, 0x14, 0xbb, 0x4b, 0x42, 0xd7, 0x5f, 0xb3, 0xab, 0xa3, 0xe4, 0x39,
-  0xf2, 0x58, 0x95, 0x3d, 0x82, 0xd3, 0x89, 0xd1, 0x4e, 0xc9, 0xb9, 0x51,
-  0x77, 0xed, 0x1e, 0xf1, 0x08, 0x56, 0xcc, 0x3b, 0xd8, 0x35, 0x74, 0x09,
-  0x6e, 0x77, 0x2f, 0x2f, 0x2a, 0x51, 0x40, 0xce, 0x61, 0x26, 0x79, 0xb1,
-  0x2c, 0x45, 0xe4, 0x8e, 0x23, 0xdd, 0x60, 0x5a, 0x99, 0x6e, 0x80, 0xf7,
-  0x15, 0xe9, 0xc1, 0x7c, 0x44, 0x28, 0xbc, 0xab, 0xaa, 0xdd, 0x46, 0xd4,
-  0x64, 0xc0, 0x89, 0x73, 0x3a, 0xe9, 0x8c, 0xfd, 0xe8, 0xb5, 0x4e, 0x3a,
-  0xfd, 0x69, 0x84, 0xb6, 0x96, 0xd5, 0xb9, 0x2b, 0x50, 0xb3, 0x32, 0x52,
-  0x32, 0x0a, 0xdd, 0x9f, 0xc7, 0x48, 0x2f, 0xbd, 0xbb, 0x75, 0x7f, 0x37,
-  0xf4, 0xa8, 0x50, 0x25, 0x4e, 0x4c, 0xf2, 0x20, 0x5f, 0x3c, 0x3c, 0x81,
-  0x4a, 0xd6, 0x43, 0x6b, 0xd9, 0x12, 0x31, 0xf6, 0xa2, 0xa9, 0x97, 0xd7,
-  0xd7, 0x48, 0xcb, 0x0f, 0xba, 0xc8, 0x69, 0x6f, 0x82, 0x3b, 0x17, 0x92,
-  0x70, 0x23, 0xcf, 0xd1, 0x73, 0x9d, 0x0d, 0x97, 0x5b, 0x27, 0x92, 0x87,
-  0xdb, 0x8e, 0x01, 0x91, 0x7c, 0x75, 0x33, 0x39, 0xd1, 0x73, 0xee, 0xa7,
-  0x0b, 0x55, 0xd9, 0x40, 0xc5, 0x43, 0x20, 0x14, 0x03, 0x60, 0xa8, 0x0a,
-  0x47, 0x38, 0x1d, 0x56, 0x8b, 0xc1, 0xb5, 0x4e, 0x42, 0x72, 0xb5, 0x51,
-  0x89, 0x04, 0xe6, 0x04, 0xc9, 0xaf, 0x84, 0x8c, 0x8b, 0xd9, 0x94, 0x2a,
-  0xcb, 0x4e, 0xc3, 0x0a, 0xa6, 0x88, 0xa6, 0xee, 0xf5, 0x79, 0x85, 0x09,
-  0x59, 0xe7, 0x20, 0x70, 0x52, 0xd1, 0x57, 0x9b, 0x9e, 0x0e, 0xf7, 0x83,
-  0xa5, 0xad, 0x67, 0x83, 0xc9, 0x64, 0x32, 0x80, 0x42, 0xf0, 0x92, 0xb5,
-  0x94, 0x1d, 0xd1, 0x12, 0x56, 0x38, 0x0f, 0x46, 0x99, 0xcc, 0xf8, 0xd1,
-  0xd1, 0x91, 0x28, 0x34, 0x97, 0x37, 0x1d, 0xd5, 0xc2, 0x12, 0xc7, 0x88,
-  0x6a, 0x15, 0x03, 0xf1, 0xd5, 0x37, 0xcb, 0x66, 0x8a, 0x02, 0x95, 0x24,
-  0x34, 0x54, 0x0a, 0xdb, 0x54, 0xcb, 0x0e, 0xbf, 0x1f, 0x95, 0x0b, 0xee,
-  0x3b, 0x70, 0x57, 0x08, 0x89, 0xab, 0xb2, 0x05, 0xd7, 0x15, 0xc0, 0x8b,
-  0xd2, 0x76, 0xb7, 0x02, 0x1e, 0x77, 0xd5, 0xa7, 0xe0, 0xd1, 0x0e, 0xc6,
-  0x10, 0x8b, 0xb6, 0x15, 0x7c, 0x36, 0xcd, 0x05, 0x55, 0x99, 0xca, 0xb7,
-  0xba, 0x6d, 0x3f, 0xb0, 0x1e, 0x32, 0xd5, 0xed, 0x25, 0x79, 0xbe, 0x72,
-  0x49, 0xa2, 0x93, 0x4f, 0xe6, 0x15, 0x4d, 0xfb, 0xd6, 0x11, 0xb8, 0x01,
-  0x8f, 0xe4, 0x48, 0x1c, 0xdd, 0x10, 0x6e, 0x6b, 0x46, 0x8b, 0x63, 0xba,
-  0x5c, 0xb3, 0x18, 0x90, 0x5b, 0x65, 0x34, 0x3a, 0xdd, 0xb9, 0x3c, 0x1d,
-  0x05, 0x90, 0xe9, 0x7b, 0xf2, 0x1d, 0xc3, 0x47, 0xdc, 0xf6, 0x7d, 0xf2,
-  0x14, 0x81, 0x70, 0xb5, 0xbc, 0x6a, 0xef, 0x70, 0xfe, 0x4a, 0x94, 0x73,
-  0x61, 0x59, 0x68, 0x2e, 0x85, 0xbd, 0xc6, 0x8b, 0xac, 0x40, 0x2e, 0x32,
-  0xdd, 0xe6, 0x38, 0x01, 0x40, 0x15, 0xd6, 0xc9, 0xbb, 0xc3, 0x4b, 0xca,
-  0x8f, 0x68, 0x04, 0xde, 0x41, 0xbe, 0xa0, 0x00, 0xd0, 0x2d, 0xfc, 0x8e,
-  0x96, 0x11, 0x2f, 0x9d, 0xb8, 0x1a, 0x03, 0xaa, 0xb5, 0xf3, 0xf2, 0xd5,
-  0xba, 0xf1, 0xd6, 0x4d, 0xbf, 0x99, 0x52, 0xb9, 0x1f, 0xba, 0x7b, 0xbe,
-  0xbb, 0x1a, 0x7b, 0xd1, 0xd5, 0xe0, 0x09, 0x88, 0x1f, 0x87, 0x0b, 0x11,
-  0xe6, 0x3a, 0xd1, 0x1a, 0x54, 0x93, 0xee, 0xcf, 0xca, 0xeb, 0x9c, 0x5c,
-  0x82, 0x58, 0x2f, 0xec, 0x6b, 0xad, 0xcd, 0xdb, 0x95, 0xc1, 0x3c, 0x3b,
-  0x35, 0xe7, 0x72, 0xb4, 0x13, 0x73, 0xf8, 0x88, 0xd0, 0x4d, 0x61, 0xe7,
-  0x54, 0x63, 0xce, 0x36, 0x8b, 0x2e, 0x4c, 0x52, 0x03, 0x07, 0x56, 0x3e,
-  0x31, 0xb6, 0xc2, 0x84, 0xf2, 0x1e, 0x90, 0x51, 0x56, 0x2b, 0xd9, 0x1d,
-  0x87, 0xbd, 0xf2, 0x16, 0xbd, 0x96, 0xba, 0x4a, 0xeb, 0xe5, 0x22, 0x9a,
-  0x45, 0x22, 0x23, 0x5c, 0xeb, 0x90, 0x7f, 0xde, 0xba, 0x3e, 0xbe, 0x21,
-  0xd3, 0xec, 0x3a, 0xb8, 0x76, 0x2d, 0x99, 0x41, 0x84, 0xc1, 0x0b, 0xda,
-  0x2a, 0xb2, 0xc4, 0x25, 0xa8, 0xee, 0xd3, 0x24, 0x93, 0xa9, 0x35, 0x98,
-  0xf6, 0xa3, 0x1c, 0xd7, 0xfd, 0x6e, 0x45, 0x1b, 0x66, 0x17, 0x6b, 0x53,
-  0xcb, 0xb6, 0xa8, 0x49, 0x14, 0xc8, 0xdc, 0x69, 0xee, 0x9b, 0x63, 0x47,
-  0x49, 0xde, 0xe1, 0x2f, 0x69, 0xd1, 0x95, 0x33, 0x0c, 0x87, 0x02, 0x4e,
-  0x77, 0x54, 0x8c, 0xef, 0x6e, 0x85, 0xb5, 0xc3, 0xfa, 0xec, 0xa5, 0x63,
-  0x38, 0xe6, 0xf3, 0xa1, 0x34, 0xf0, 0x2a, 0xb2, 0xde, 0x5f, 0x9c, 0xda,
-  0xb0, 0xfc, 0xbf, 0x6f, 0xba, 0xa2, 0x1b, 0xc3, 0x88, 0x43, 0x42, 0x6f,
-  0x87, 0x68, 0x19, 0x48, 0x8a, 0x36, 0x49, 0xb8, 0xa9, 0xef, 0x3a, 0x6d,
-  0xbf, 0x1d, 0xe7, 0xeb, 0x7d, 0xa0, 0x47, 0xdf, 0x1e, 0x1f, 0xbe, 0xb6,
-  0xf9, 0xe8, 0xff, 0x0c, 0x96, 0x50, 0xe7, 0xe0, 0x1c, 0x67, 0xcc, 0xad,
-  0xbe, 0x54, 0x9f, 0x09, 0xd6, 0x47, 0xb7, 0x2a, 0x76, 0x8b, 0x51, 0xd9,
-  0xea, 0x8c, 0xcf, 0xc8, 0x4a, 0x8a, 0xf1, 0x95, 0x4e, 0x12, 0x1f, 0x75,
-  0x20, 0xce, 0x6b, 0x52, 0x9a, 0x39, 0x3d, 0xc7, 0xdb, 0xca, 0xd7, 0xd8,
-  0xca, 0xb3, 0x72, 0x5c, 0x5e, 0x5d, 0xad, 0xb9, 0xdf, 0x99, 0xe8, 0x0d,
-  0x69, 0x34, 0xbc, 0x65, 0x7a, 0x34, 0x8d, 0xf4, 0xde, 0x98, 0x7a, 0x6f,
-  0x16, 0xd5, 0x1c, 0xb6, 0x9e, 0xc0, 0xb0, 0xa4, 0x3e, 0x72, 0x70, 0xf5,
-  0xf8, 0xd9, 0xcd, 0x6a, 0x40, 0xa8, 0xbd, 0x87, 0x04, 0x6f, 0xf6, 0xcc,
-  0x28, 0x40, 0xc8, 0xd2, 0x65, 0xd7, 0xc9, 0x7f, 0xfe, 0xd7, 0x5f, 0x7e,
-  0x8e, 0x70, 0x86, 0x93, 0xef, 0xef, 0x86, 0x93, 0xd3, 0xcc, 0xd3, 0x73,
-  0xa1, 0xff, 0xb0, 0xcc, 0xce, 0xae, 0x4c, 0x39, 0x69, 0x60, 0xd9, 0xec,
-  0x6a, 0xe8, 0x11, 0x37, 0x84, 0x17, 0x23, 0x29, 0x4c, 0xfa, 0x41, 0x94,
-  0x2c, 0xa2, 0x7c, 0x62, 0xce, 0x01, 0x25, 0x16, 0x5e, 0xd4, 0xde, 0x70,
-  0x89, 0x08, 0x96, 0xa3, 0x93, 0x57, 0x22, 0x80, 0x4f, 0xbb, 0xfa, 0x18,
-  0x7e, 0xfc, 0x9c, 0x37, 0xe0, 0x89, 0xf5, 0x7a, 0x7a, 0x2b, 0x61, 0xa3,
-  0xa9, 0xd1, 0xac, 0x22, 0x12, 0xba, 0x6f, 0x4e, 0x4e, 0x8f, 0xb7, 0x93,
-  0x37, 0x19, 0x28, 0xf7, 0x3c, 0x52, 0x18, 0xda, 0x82, 0xff, 0x82, 0x23,
-  0x6f, 0xa9, 0x7a, 0x24, 0xed, 0x29, 0x5a, 0xda, 0x51, 0x0c, 0x44, 0x6c,
-  0x7e, 0x76, 0x32, 0x60, 0x69, 0x38, 0x7b, 0xb9, 0x44, 0xca, 0x85, 0xe2,
-  0x1b, 0xd4, 0xf5, 0x2e, 0x88, 0x2a, 0x82, 0x17, 0x07, 0x71, 0x28, 0x4e,
-  0x5e, 0x1d, 0x7a, 0x54, 0x2e, 0xa5, 0x1f, 0xdd, 0xa2, 0x4e, 0x2b, 0xfc,
-  0x4e, 0x42, 0x19, 0x5c, 0x45, 0xb9, 0x4e, 0xa2, 0xa9, 0xeb, 0x94, 0xba,
-  0x4b, 0xc8, 0x74, 0x00, 0xf2, 0xc8, 0x88, 0xe6, 0x12, 0x96, 0x72, 0x0d,
-  0x83, 0xd9, 0x82, 0xc6, 0xeb, 0x4d, 0xdc, 0xb7, 0x3a, 0x71, 0x14, 0x11,
-  0xe5, 0x3f, 0x77, 0xbe, 0x8a, 0xb2, 0xaa, 0x28, 0x49, 0x32, 0x0a, 0x79,
-  0xc9, 0x1b, 0x66, 0xc4, 0x5a, 0xda, 0x51, 0x36, 0x9d, 0x0a, 0x42, 0x68,
-  0xe4, 0x8a, 0xec, 0x8a, 0x08, 0x54, 0x2e, 0xf8, 0x2d, 0x0a, 0xd8, 0x9f,
-  0x85, 0x8d, 0x5f, 0xf7, 0x33, 0x65, 0xb5, 0xb1, 0x4d, 0x49, 0xb3, 0xc6,
-  0xa5, 0xc3, 0x2c, 0xde, 0x2d, 0x89, 0x15, 0xbe, 0x50, 0x8c, 0x2f, 0x4e,
-  0x0f, 0x9f, 0x6e, 0x42, 0x8e, 0xa6, 0x6d, 0xec, 0x28, 0x3f, 0x76, 0x23,
-  0x39, 0x19, 0xd0, 0xed, 0x99, 0xf0, 0xb8, 0x8e, 0x7a, 0xa3, 0xf0, 0x94,
-  0xf5, 0x3a, 0xa3, 0x76, 0x16, 0xdb, 0xd9, 0x2c, 0xd5, 0x97, 0x24, 0x60,
-  0xe8, 0x8b, 0x15, 0x23, 0xd0, 0x2a, 0x66, 0x91, 0x8a, 0x9c, 0x5e, 0xf9,
-  0xba, 0xef, 0xcd, 0xe8, 0xde, 0x22, 0xfe, 0x67, 0xda, 0xba, 0x51, 0x28,
-  0xbe, 0xcc, 0xdc, 0x41, 0xc6, 0xa1, 0xbc, 0x69, 0x53, 0xe5, 0x93, 0x8f,
-  0x39, 0xd2, 0x0b, 0x96, 0x10, 0x2f, 0x69, 0xa1, 0xd6, 0x0c, 0x77, 0xd3,
-  0x32, 0x88, 0x9a, 0xed, 0x36, 0x04, 0xb0, 0x36, 0x2e, 0x0d, 0x39, 0x81,
-  0x82, 0xd4, 0x58, 0x62, 0x26, 0xd3, 0xfe, 0xcc, 0x00, 0x78, 0xb7, 0xa7,
-  0x45, 0x05, 0x07, 0x65, 0x3d, 0x40, 0x76, 0x45, 0xd8, 0x12, 0x33, 0x54,
-  0x81, 0x83, 0x19, 0x7a, 0x27, 0xdc, 0x29, 0x54, 0xbc, 0x18, 0xa2, 0x7a,
-  0x68, 0x74, 0xa3, 0x39, 0x61, 0x53, 0x01, 0xf7, 0x92, 0x21, 0xcb, 0xf4,
-  0x18, 0x71, 0x73, 0x9d, 0xdf, 0xc6, 0x02, 0x80, 0xe4, 0x7f, 0x90, 0x8e,
-  0xcd, 0x25, 0x97, 0x57, 0xea, 0x82, 0x29, 0xfc, 0xcd, 0x46, 0x5b, 0xd8,
-  0x61, 0x42, 0x04, 0x47, 0x32, 0xb3, 0xc1, 0x09, 0x9e, 0x91, 0x04, 0x25,
-  0xa6, 0x92, 0xe2, 0xc0, 0x6c, 0xff, 0xa4, 0xf7, 0x6d, 0x59, 0x37, 0x07,
-  0x3d, 0xcb, 0xd5, 0x09, 0x5b, 0x1f, 0x2a, 0x6e, 0x6b, 0xe7, 0x48, 0x1d,
-  0xbb, 0x41, 0xb4, 0xba, 0x84, 0xdc, 0x24, 0x46, 0xb0, 0xc9, 0xd3, 0x0a,
-  0xfd, 0x0e, 0xe1, 0x75, 0x16, 0x8a, 0xdd, 0xa7, 0xbc, 0xed, 0x9b, 0x90,
-  0x8b, 0x94, 0xba, 0xf4, 0xe3, 0xe0, 0x08, 0x1f, 0x1f, 0x7c, 0x8b, 0xe6,
-  0xbe, 0xe8, 0x59, 0x27, 0x44, 0xf7, 0x57, 0x07, 0x61, 0x05, 0x6d, 0xe7,
-  0x9c, 0xe7, 0x8b, 0x70, 0xa9, 0xe8, 0x60, 0xc4, 0x38, 0xa5, 0x83, 0x52,
-  0x1b, 0x78, 0x3a, 0xdd, 0xd1, 0x05, 0xe7, 0x22, 0xe2, 0x61, 0x39, 0x25,
-  0x1b, 0x0d, 0x5b, 0x54, 0x14, 0xdb, 0x32, 0x92, 0x79, 0x3a, 0x28, 0xaf,
-  0x06, 0x40, 0xea, 0xcd, 0xd3, 0xea, 0x23, 0xc5, 0xc9, 0xbd, 0x53, 0x87,
-  0x9c, 0x67, 0x30, 0x52, 0x4e, 0xa7, 0xb1, 0xab, 0x02, 0x39, 0x3e, 0x88,
-  0xb1, 0xca, 0xc6, 0x57, 0xc8, 0x2f, 0x2f, 0xe4, 0x81, 0x78, 0x8a, 0xf0,
-  0xba, 0xad, 0x64, 0x40, 0x74, 0x23, 0x6b, 0x0b, 0x1f, 0xf4, 0xf9, 0x36,
-  0xc1, 0xa8, 0xa1, 0x53, 0xcc, 0xd9, 0xbd, 0x00, 0x9f, 0xc8, 0x72, 0x01,
-  0xcd, 0x97, 0xb8, 0xc1, 0x02, 0x7b, 0x40, 0xe1, 0xca, 0x50, 0x9c, 0x3e,
-  0x1b, 0x3e, 0x7b, 0x36, 0xdc, 0xed, 0x07, 0x31, 0xa4, 0x06, 0xea, 0x67,
-  0xe1, 0x02, 0xd8, 0xe6, 0xe1, 0xaf, 0x56, 0x65, 0x74, 0x71, 0x7d, 0xea,
-  0xbe, 0xbd, 0x1c, 0x32, 0xc0, 0xdb, 0x1c, 0x02, 0xd7, 0x85, 0x9b, 0xb9,
-  0x62, 0x2b, 0x8b, 0x4d, 0x4e, 0x5f, 0x8b, 0xd1, 0xa9, 0x09, 0x98, 0xe0,
-  0xab, 0x41, 0x58, 0x51, 0x5c, 0x6a, 0x5a, 0xf8, 0x38, 0x62, 0xaf, 0x3a,
-  0xc5, 0x4a, 0xdb, 0x07, 0x14, 0xad, 0x87, 0xca, 0x02, 0x3f, 0x30, 0x93,
-  0x2a, 0xa5, 0xbb, 0x06, 0x19, 0xfd, 0x90, 0x73, 0x90, 0x95, 0xa3, 0xac,
-  0x5e, 0x3d, 0x67, 0x4c, 0x3d, 0xf7, 0x19, 0xcd, 0x98, 0x25, 0xad, 0x55,
-  0x72, 0x76, 0x77, 0x3f, 0x60, 0xdb, 0x7a, 0x67, 0xa9, 0x3b, 0x67, 0x24,
-  0x55, 0xb4, 0xf6, 0xb0, 0x98, 0xd2, 0x68, 0x62, 0x25, 0xb2, 0x6d, 0x05,
-  0xe4, 0x0c, 0xc7, 0xe6, 0x0d, 0x29, 0x91, 0x83, 0x77, 0x66, 0x19, 0x0e,
-  0x92, 0xff, 0x28, 0xb3, 0x1e, 0x12, 0xfc, 0x3a, 0xf9, 0x7d, 0x01, 0xd9,
-  0xcf, 0xe1, 0xc5, 0xbb, 0x93, 0x77, 0xdf, 0x1c, 0x58, 0x19, 0x47, 0xf2,
-  0xce, 0x63, 0x41, 0x77, 0x51, 0x3e, 0x57, 0x92, 0x05, 0x8f, 0xe4, 0x51,
-  0x1e, 0x72, 0xc7, 0x2a, 0x3b, 0x48, 0x58, 0x42, 0x8b, 0x49, 0xdd, 0x2e,
-  0x41, 0x6d, 0x61, 0xbc, 0x92, 0x3d, 0x84, 0xfb, 0xb2, 0x29, 0x03, 0x5d,
-  0x88, 0x5d, 0xda, 0xad, 0x02, 0xee, 0x36, 0x0b, 0xb9, 0x40, 0xc6, 0x86,
-  0x6a, 0x46, 0x2a, 0x45, 0xfd, 0x72, 0x02, 0x61, 0xd0, 0x13, 0x58, 0x38,
-  0xc4, 0x17, 0x6a, 0xbe, 0x2b, 0x5a, 0xec, 0xeb, 0xcc, 0xa0, 0x5c, 0x63,
-  0xd5, 0xea, 0x1c, 0xfa, 0xaf, 0x9d, 0x95, 0x15, 0x9a, 0x1a, 0x2e, 0x33,
-  0xe6, 0x5d, 0x94, 0xca, 0xe3, 0xc2, 0xba, 0x22, 0x3f, 0x75, 0x20, 0x61,
-  0x3b, 0xfe, 0x47, 0x03, 0xed, 0x1c, 0xd2, 0x8e, 0x2d, 0x06, 0x76, 0x8c,
-  0x7b, 0x52, 0x6b, 0xa7, 0xc2, 0x6d, 0x12, 0xcd, 0xae, 0x9e, 0x65, 0x0e,
-  0x22, 0x6f, 0xd5, 0x9d, 0x1b, 0x56, 0x77, 0x66, 0x8b, 0x80, 0x44, 0x08,
-  0x25, 0x3a, 0xe9, 0x37, 0x6a, 0x67, 0x90, 0x4f, 0x15, 0x97, 0xb0, 0xa2,
-  0x84, 0xda, 0xa5, 0x96, 0xb5, 0x06, 0x10, 0xcb, 0xf5, 0xf0, 0x4a, 0x25,
-  0x16, 0x8b, 0x8c, 0x79, 0x54, 0x7c, 0x30, 0xb6, 0xf9, 0xba, 0x99, 0xe3,
-  0xc5, 0x72, 0x3c, 0x9f, 0x3e, 0x4b, 0x5e, 0x9a, 0xff, 0x04, 0x7a, 0x16,
-  0x10, 0x4d, 0xa3, 0x23, 0xa3, 0x6b, 0x51, 0xf8, 0x95, 0xae, 0x0c, 0x4e,
-  0xe4, 0x17, 0xd5, 0x9e, 0xfe, 0xfa, 0x64, 0xdf, 0xf4, 0xf4, 0x53, 0xaa,
-  0xb4, 0x5d, 0x46, 0x29, 0xbc, 0xce, 0x1b, 0x46, 0x91, 0xac, 0x60, 0x43,
-  0xf0, 0x0b, 0xa2, 0xd2, 0x8a, 0xef, 0xed, 0x7f, 0x9e, 0x10, 0x00, 0xf6,
-  0xed, 0xeb, 0x67, 0x89, 0x31, 0x4d, 0x26, 0x1f, 0xeb, 0xe5, 0x5c, 0x25,
-  0xb2, 0xd4, 0x21, 0xa6, 0x7e, 0x06, 0x7c, 0x03, 0xa6, 0xe3, 0xb3, 0x7c,
-  0x42, 0x59, 0x28, 0x3e, 0xa4, 0x89, 0x4a, 0x20, 0xd6, 0xb6, 0xa6, 0x9e,
-  0xb8, 0x3c, 0xdd, 0xcd, 0x81, 0x68, 0x16, 0x47, 0x7c, 0x23, 0x1e, 0x35,
-  0x33, 0x07, 0xe6, 0xe3, 0x35, 0x57, 0x2e, 0x5c, 0xeb, 0x47, 0xf8, 0xac,
-  0xe5, 0x8a, 0xd9, 0xc5, 0x52, 0x9a, 0xf3, 0xbd, 0x37, 0xdc, 0x5d, 0x55,
-  0x8d, 0xd3, 0xa3, 0x19, 0x91, 0xb0, 0x1e, 0xec, 0x01, 0x29, 0xae, 0x9a,
-  0x98, 0x37, 0x7d, 0x3d, 0x8c, 0x23, 0x3c, 0x66, 0x26, 0x57, 0x00, 0x0f,
-  0xcc, 0xbd, 0xc2, 0x26, 0x20, 0xe5, 0xd0, 0xfa, 0x0d, 0x3d, 0x16, 0x02,
-  0x2a, 0xdd, 0xdd, 0x13, 0xc7, 0x13, 0xfd, 0xab, 0xe5, 0xea, 0x93, 0x5f,
-  0xaf, 0x28, 0x9c, 0x8a, 0xc1, 0xac, 0x19, 0xcb, 0xde, 0xda, 0x6e, 0x78,
-  0xfd, 0xc0, 0xdc, 0xb9, 0xc9, 0xb3, 0x75, 0x35, 0xb8, 0x3f, 0x3a, 0xe7,
-  0xa1, 0x27, 0x3e, 0xe4, 0x86, 0xc5, 0x1b, 0x84, 0xe6, 0x2d, 0xab, 0x01,
-  0xa9, 0x84, 0xb3, 0x6c, 0x1a, 0x5c, 0xd1, 0xb1, 0xc5, 0xc0, 0x39, 0x46,
-  0x55, 0x79, 0x49, 0x34, 0x26, 0x3f, 0x16, 0x39, 0xca, 0x30, 0x24, 0x2b,
-  0x42, 0x63, 0x88, 0x45, 0x7a, 0x62, 0x67, 0xdf, 0x6a, 0x80, 0xf8, 0x27,
-  0x4d, 0xe9, 0xfb, 0xc5, 0x75, 0x95, 0x92, 0xf3, 0x8e, 0xb0, 0xff, 0x8e,
-  0x6d, 0x35, 0x41, 0xe7, 0x92, 0x64, 0x55, 0xef, 0x98, 0x9f, 0xcb, 0x2f,
-  0x9f, 0xa0, 0x89, 0x29, 0xb5, 0x7e, 0xaa, 0xa6, 0x9c, 0x1f, 0x57, 0xde,
-  0x82, 0x7e, 0xea, 0x68, 0x84, 0x63, 0x7c, 0x78, 0x75, 0x23, 0x30, 0x29,
-  0x69, 0xa0, 0x05, 0x23, 0x24, 0x9e, 0x4f, 0xbe, 0x5c, 0x6c, 0xb1, 0x11,
-  0x82, 0xdd, 0x0a, 0x87, 0x43, 0x40, 0x36, 0xc4, 0x8b, 0x2b, 0x5a, 0x42,
-  0x87, 0x0b, 0x27, 0x70, 0x79, 0x45, 0x97, 0xe3, 0xd1, 0xcc, 0xb3, 0x01,
-  0xe5, 0x05, 0xf1, 0xd0, 0xd2, 0x0d, 0x2e, 0x89, 0x3a, 0x3c, 0x9a, 0xe1,
-  0xe3, 0x36, 0xf7, 0x6e, 0x3f, 0xda, 0x3b, 0xda, 0x6e, 0xfe, 0xe6, 0x6f,
-  0xf1, 0xc7, 0xbc, 0x88, 0x6c, 0xae, 0x5f, 0x75, 0x16, 0xf6, 0xd7, 0x39,
-  0x7e, 0x8d, 0x12, 0x9f, 0xce, 0x16, 0xc5, 0x50, 0xbf, 0xf0, 0xa8, 0xf9,
-  0xe9, 0x2e, 0xb3, 0xe5, 0xe9, 0xfd, 0x75, 0xf3, 0xd3, 0x9d, 0x1b, 0x5f,
-  0x96, 0xf9, 0xf3, 0xd3, 0x5d, 0xcb, 0xb5, 0x44, 0xcd, 0x9c, 0x58, 0xa7,
-  0xf5, 0x21, 0x07, 0x9c, 0x31, 0x10, 0x03, 0xd2, 0x26, 0x72, 0x22, 0x95,
-  0x61, 0xa5, 0x9f, 0x9c, 0x30, 0x83, 0x20, 0x22, 0x38, 0xf2, 0xfa, 0x29,
-  0x27, 0x1c, 0xf0, 0x15, 0x6a, 0x11, 0x68, 0x91, 0xdc, 0xa4, 0x7c, 0xb2,
-  0xe4, 0xfa, 0xcd, 0x4b, 0xae, 0x17, 0x4f, 0x3a, 0x9c, 0x25, 0x3d, 0x5e,
-  0x16, 0xb8, 0xb0, 0x0e, 0x17, 0x94, 0x33, 0x60, 0x64, 0xd4, 0x27, 0x57,
-  0x0d, 0x2a, 0xe2, 0x78, 0x34, 0xb7, 0x3a, 0x32, 0xc2, 0xf2, 0x42, 0x61,
-  0x4a, 0xdd, 0xee, 0xa0, 0x75, 0xe6, 0x18, 0x99, 0x11, 0x30, 0xaf, 0x62,
-  0x25, 0x66, 0xdf, 0x58, 0x8e, 0xd7, 0x01, 0x83, 0xe9, 0xf8, 0xbe, 0x89,
-  0x60, 0x66, 0x69, 0xd4, 0x34, 0x0b, 0x5b, 0xb5, 0x04, 0xe5, 0x9f, 0x3e,
-  0x1f, 0xee, 0x6e, 0xf7, 0xa9, 0xf0, 0xdd, 0x02, 0x33, 0x40, 0xa0, 0x46,
-  0x7b, 0xd7, 0x13, 0xa6, 0x37, 0xbf, 0x26, 0x1b, 0x6a, 0x55, 0x1d, 0x6a,
-  0xf2, 0xb7, 0x48, 0x30, 0x58, 0x23, 0xad, 0xc2, 0xe9, 0xd4, 0xe6, 0x6e,
-  0xcd, 0xfb, 0xa8, 0x0f, 0x00, 0x6f, 0x49, 0xd7, 0x5b, 0x2a, 0x3e, 0x14,
-  0x57, 0xe8, 0xd2, 0x27, 0x0e, 0x55, 0x0d, 0xcc, 0x55, 0xb9, 0x14, 0x46,
-  0x5c, 0x38, 0x90, 0x23, 0xbe, 0x15, 0x47, 0xbe, 0xa9, 0xc4, 0xc7, 0xb0,
-  0xb6, 0xf9, 0x1b, 0x62, 0x14, 0x41, 0xe9, 0x54, 0x89, 0x47, 0x76, 0x0b,
-  0x79, 0x98, 0x98, 0x67, 0xb8, 0x7b, 0x72, 0xa7, 0x20, 0xa9, 0x64, 0xdd,
-  0xc0, 0xf1, 0xb1, 0xb5, 0x0e, 0x9c, 0x72, 0xa8, 0x0d, 0x87, 0xb1, 0x3a,
-  0xd4, 0xb7, 0x79, 0x76, 0xd7, 0x72, 0x0e, 0x49, 0xbf, 0xfa, 0x96, 0x8b,
-  0x98, 0x6d, 0x92, 0x5b, 0x9a, 0x21, 0xd3, 0xe4, 0xb8, 0xb4, 0x35, 0x16,
-  0xd7, 0x1c, 0x64, 0xff, 0x69, 0x6f, 0x9a, 0x3f, 0xf2, 0x34, 0xd7, 0x31,
-  0xf0, 0x3c, 0xb3, 0x8f, 0x39, 0xea, 0xd4, 0x3e, 0x29, 0xe8, 0xd5, 0x7d,
-  0x02, 0x8e, 0x5c, 0xa7, 0xb8, 0x40, 0xae, 0x30, 0x58, 0x2b, 0xaf, 0x99,
-  0xfc, 0x8b, 0xf3, 0xae, 0x43, 0xed, 0x97, 0x3f, 0xd3, 0x3e, 0xf3, 0xe2,
-  0xb7, 0xb1, 0x85, 0x3f, 0xab, 0x72, 0x42, 0xa6, 0x11, 0x2e, 0x59, 0xe5,
-  0xfc, 0x84, 0x65, 0x10, 0x09, 0xcf, 0xc8, 0x8a, 0x78, 0x24, 0xc1, 0x5e,
-  0x34, 0xc1, 0x31, 0x37, 0x27, 0x3a, 0xc0, 0x61, 0x34, 0x5d, 0x58, 0xd7,
-  0xd5, 0x1b, 0x53, 0x6b, 0x24, 0xe3, 0x7b, 0xa5, 0xcf, 0x17, 0xef, 0x80,
-  0x23, 0x35, 0x0b, 0xe8, 0x37, 0x2d, 0x98, 0xdf, 0x11, 0x0e, 0x38, 0x3f,
-  0x0b, 0xd3, 0xb7, 0x60, 0x64, 0xd2, 0x78, 0xed, 0xf3, 0xd1, 0x05, 0xdc,
-  0xac, 0x5e, 0xa1, 0xd3, 0x8c, 0x52, 0x18, 0x88, 0xde, 0x3a, 0xba, 0xc4,
-  0x6c, 0x82, 0x73, 0x3e, 0xa0, 0xd9, 0xce, 0xe5, 0x92, 0x5c, 0xf3, 0x38,
-  0xfb, 0x92, 0xce, 0x23, 0x19, 0x3c, 0xdd, 0x34, 0x4f, 0xcb, 0xe8, 0x42,
-  0xb3, 0x3f, 0xbc, 0x49, 0x3f, 0x7d, 0x1a, 0xd6, 0xd9, 0x8e, 0xd9, 0xb5,
-  0xf5, 0x4e, 0x5d, 0xcf, 0xe8, 0xa3, 0x35, 0x98, 0x29, 0x56, 0x5f, 0x0f,
-  0x6c, 0xbf, 0xea, 0xfc, 0x8a, 0x30, 0x9e, 0xa4, 0xf4, 0x6a, 0x4b, 0xd8,
-  0xba, 0x32, 0x24, 0xcc, 0xc5, 0xdc, 0x05, 0x56, 0x30, 0xbb, 0x1b, 0xd2,
-  0x80, 0xfd, 0xd4, 0x04, 0x16, 0x0d, 0x2e, 0x80, 0x65, 0xdb, 0x71, 0xb4,
-  0x95, 0xc4, 0xe7, 0x56, 0xad, 0xc2, 0xc1, 0xc9, 0x59, 0xf5, 0x20, 0x09,
-  0x66, 0x52, 0x2c, 0x5c, 0xcc, 0xdc, 0x0f, 0x85, 0x4b, 0x3a, 0x9e, 0xb0,
-  0xca, 0x4f, 0xc5, 0x39, 0x23, 0xe9, 0xf0, 0xab, 0x0c, 0x69, 0x6f, 0x68,
-  0x04, 0xac, 0x3b, 0xd8, 0xb3, 0x73, 0x7a, 0x77, 0x77, 0x37, 0x5c, 0x67,
-  0x49, 0xff, 0xc3, 0x49, 0x3d, 0xed, 0xe6, 0xce, 0xcc, 0xae, 0x3d, 0xcd,
-  0x8b, 0xe5, 0xa7, 0xc4, 0xcb, 0x7e, 0xb5, 0xbc, 0xdb, 0xea, 0x2a, 0x4e,
-  0xbe, 0xbf, 0x78, 0x63, 0x8b, 0x7e, 0x69, 0xce, 0x21, 0xf9, 0x22, 0xea,
-  0xd0, 0x6b, 0x9a, 0xe5, 0x9c, 0x93, 0x4c, 0xcc, 0x6c, 0x47, 0x87, 0xe7,
-  0x1f, 0xde, 0x1d, 0x5f, 0x7e, 0xb8, 0x38, 0xfc, 0x81, 0xa6, 0x90, 0x83,
-  0x80, 0x55, 0x0a, 0xf2, 0xff, 0xaa, 0x2c, 0xa9, 0xf4, 0xc0, 0x5b, 0x60,
-  0xac, 0xf3, 0x02, 0x89, 0xa7, 0x31, 0x7a, 0x6c, 0x9b, 0x4f, 0xaf, 0xfd,
-  0x34, 0x7d, 0x39, 0x48, 0x5a, 0xf3, 0xf5, 0xd1, 0x58, 0x0e, 0xd9, 0x6c,
-  0x58, 0x56, 0xd7, 0xb4, 0x0b, 0x77, 0x5e, 0x8b, 0xfc, 0x8c, 0x36, 0xb7,
-  0x53, 0x64, 0x0d, 0x81, 0xa7, 0x88, 0x9e, 0xe1, 0xb6, 0xba, 0xa2, 0x5c,
-  0xce, 0x75, 0x25, 0x33, 0xfd, 0x4a, 0x12, 0xde, 0xd6, 0x7c, 0x0a, 0x01,
-  0xb8, 0xb8, 0x7d, 0xba, 0xc6, 0x18, 0x68, 0x5a, 0xfa, 0x13, 0x1d, 0xb0,
-  0xd9, 0x2d, 0x6f, 0x2d, 0x44, 0x31, 0xfc, 0x72, 0x24, 0x0c, 0x65, 0x9f,
-  0xdd, 0xf7, 0x23, 0xd9, 0x62, 0x20, 0xae, 0x2c, 0x6d, 0x6e, 0x1d, 0xd0,
-  0xc0, 0x54, 0x0a, 0x63, 0x7d, 0x09, 0x0c, 0xd5, 0x83, 0xba, 0x66, 0x47,
-  0x8b, 0x9a, 0xda, 0xd7, 0x9c, 0x9e, 0x87, 0xba, 0x24, 0x15, 0xc7, 0xf0,
-  0xc6, 0xfc, 0x5c, 0xc6, 0xfc, 0xfc, 0x1f, 0x1a, 0xf3, 0xf3, 0x7f, 0x60,
-  0xcc, 0x4f, 0xff, 0xe9, 0x63, 0xfe, 0x2b, 0x8d, 0xf9, 0xaf, 0xcb, 0xe2,
-  0xe3, 0xc0, 0xf4, 0x97, 0x6e, 0x61, 0x29, 0x30, 0x50, 0xc7, 0x55, 0xe6,
-  0x16, 0xa7, 0x35, 0x39, 0x9a, 0x6c, 0x5d, 0xdc, 0x89, 0x5f, 0x2f, 0x21,
-  0x95, 0xfc, 0x16, 0x0e, 0x3a, 0xad, 0xac, 0x02, 0x98, 0xb4, 0x4a, 0xb3,
-  0x53, 0x26, 0xed, 0x34, 0xaf, 0x27, 0x64, 0xdf, 0x90, 0xc3, 0xa4, 0x27,
-  0x3d, 0xd2, 0xa6, 0x7b, 0x43, 0x57, 0xce, 0x3d, 0xe0, 0x40, 0xa9, 0xcd,
-  0xed, 0x42, 0xa6, 0x35, 0x4e, 0xa5, 0x8d, 0xcb, 0xb8, 0x2a, 0x74, 0x60,
-  0x6e, 0xa1, 0xec, 0x78, 0x6d, 0x94, 0x3d, 0xd5, 0xe4, 0x85, 0x0c, 0x65,
-  0xc6, 0xe5, 0xfd, 0x82, 0x9a, 0x4b, 0xb4, 0xec, 0x77, 0x6d, 0x2b, 0x86,
-  0xda, 0x0e, 0x26, 0x9d, 0xce, 0x89, 0xeb, 0xed, 0x26, 0xbb, 0xdf, 0x0c,
-  0x14, 0x86, 0xc9, 0xac, 0x24, 0x79, 0x43, 0x7a, 0xdd, 0x1a, 0x4d, 0x64,
-  0xec, 0xaa, 0x3b, 0xf0, 0x7d, 0xd1, 0x29, 0xf7, 0xe0, 0xdf, 0x1b, 0x1f,
-  0xb3, 0x6c, 0x91, 0xce, 0x90, 0x87, 0x48, 0xd1, 0xb8, 0x55, 0x9c, 0xf4,
-  0xad, 0xf0, 0xb1, 0x82, 0xab, 0xf0, 0x46, 0xda, 0xbe, 0xd6, 0x21, 0xe9,
-  0xb4, 0x6a, 0xf1, 0x1c, 0x40, 0xc3, 0x7c, 0x1a, 0xa4, 0x66, 0x2b, 0x21,
-  0x95, 0x06, 0xe4, 0x6c, 0x2f, 0x48, 0x3b, 0x19, 0x4b, 0x52, 0xac, 0xfd,
-  0x84, 0x72, 0x6c, 0xe4, 0xe6, 0xe1, 0xdb, 0x7c, 0xba, 0x0c, 0x6a, 0x88,
-  0x76, 0x5f, 0x47, 0xbe, 0x7d, 0x8b, 0x9e, 0x94, 0x97, 0x8f, 0x9e, 0x28,
-  0xed, 0xfd, 0x47, 0xea, 0x06, 0x6a, 0xbd, 0x04, 0x5b, 0x4a, 0x79, 0xba,
-  0x58, 0xbb, 0xbd, 0x3c, 0x3a, 0xff, 0xf0, 0xdd, 0xf1, 0xf1, 0xf9, 0xc9,
-  0xeb, 0xd3, 0x63, 0x39, 0x30, 0xf6, 0x47, 0xef, 0x2e, 0xbf, 0x3f, 0xd5,
-  0x92, 0x0c, 0xba, 0x17, 0x83, 0x0d, 0x2f, 0xdc, 0x9a, 0x2c, 0x94, 0xfb,
-  0x60, 0x9e, 0x2f, 0x9a, 0xe4, 0xf0, 0xe4, 0x47, 0xa3, 0xb5, 0x9e, 0x0f,
-  0xde, 0xff, 0x18, 0x50, 0xfe, 0x7a, 0x38, 0xbc, 0x95, 0xf5, 0x10, 0xcd,
-  0x36, 0x84, 0xed, 0xe8, 0xc6, 0x6e, 0xb3, 0x15, 0x7e, 0xdf, 0x6b, 0x90,
-  0x8a, 0xb9, 0x15, 0x56, 0x61, 0xe0, 0x17, 0x95, 0x56, 0x9b, 0xd5, 0x58,
-  0xc8, 0xaf, 0xe7, 0xbb, 0x5a, 0xb1, 0x60, 0xad, 0x0f, 0xed, 0xf3, 0xb6,
-  0xcd, 0xf8, 0x31, 0xbb, 0x07, 0xbf, 0x4d, 0xf2, 0x92, 0xfe, 0x1b, 0xaf,
-  0x28, 0x71, 0x5e, 0xe5, 0xb7, 0xa4, 0xff, 0x99, 0x67, 0x39, 0xc8, 0x40,
-  0x8f, 0x0e, 0x6d, 0x7d, 0x0d, 0x09, 0x74, 0x50, 0x23, 0x88, 0x85, 0xa2,
-  0x51, 0x78, 0x34, 0x82, 0x60, 0x59, 0x3e, 0x65, 0x5f, 0x07, 0xb7, 0x87,
-  0x06, 0xcd, 0xf4, 0x0c, 0x93, 0xd7, 0xc7, 0x17, 0xfd, 0xe4, 0xfc, 0xf8,
-  0x2d, 0x83, 0xf9, 0x8e, 0xdf, 0x7d, 0xc3, 0xb4, 0x2a, 0x5a, 0x49, 0x02,
-  0xb1, 0xb9, 0x10, 0xdd, 0xe7, 0xcd, 0x89, 0x79, 0x17, 0x2c, 0x27, 0x75,
-  0x6d, 0x6e, 0xd7, 0xdf, 0x31, 0xdb, 0x98, 0xc7, 0xf6, 0xd2, 0xfc, 0x27,
-  0x36, 0x55, 0xc6, 0x8e, 0xf8, 0x36, 0x32, 0x5d, 0xa2, 0x98, 0xd9, 0x68,
-  0xae, 0x18, 0x05, 0x34, 0x1b, 0x3c, 0x63, 0x66, 0x42, 0xc2, 0xb8, 0xa2,
-  0x4e, 0x10, 0x5c, 0x3f, 0xc8, 0xb7, 0xe6, 0x22, 0x47, 0x12, 0x15, 0x22,
-  0x2b, 0xd6, 0x7c, 0xae, 0x4f, 0xfb, 0x92, 0xae, 0x24, 0x6f, 0x32, 0x62,
-  0xa9, 0x24, 0x55, 0x2e, 0x50, 0x6b, 0x8f, 0xb3, 0xc3, 0xcc, 0x75, 0x3e,
-  0x45, 0xae, 0x9a, 0xf9, 0x46, 0x59, 0x51, 0x34, 0xf1, 0xf7, 0x9c, 0xb8,
-  0x6a, 0x9c, 0xbc, 0x9c, 0x99, 0x17, 0x67, 0x71, 0x0c, 0x29, 0x17, 0x5f,
-  0x76, 0x45, 0xa4, 0x3b, 0x34, 0xd4, 0x52, 0x65, 0x90, 0x6d, 0x5e, 0x34,
-  0xc3, 0x41, 0xd6, 0x10, 0x5b, 0x05, 0xf5, 0x59, 0xec, 0xad, 0x20, 0xd3,
-  0x74, 0x13, 0xa0, 0xbb, 0xcd, 0x7e, 0xb2, 0x49, 0x5c, 0xdb, 0xf4, 0x27,
-  0xca, 0x0e, 0x4a, 0x89, 0xed, 0xcd, 0x7e, 0x58, 0x3f, 0x74, 0x53, 0xb6,
-  0xeb, 0xa6, 0xd9, 0xf1, 0xdc, 0x1a, 0x2d, 0x21, 0xf2, 0x77, 0xa4, 0x1f,
-  0xec, 0x42, 0xcc, 0x6b, 0x89, 0xa0, 0x03, 0xc1, 0x24, 0x80, 0xfd, 0x3a,
-  0xe0, 0x84, 0xb6, 0xcd, 0xb5, 0x93, 0x81, 0x57, 0xe5, 0xb5, 0xff, 0xc6,
-  0xb2, 0x84, 0x97, 0xe1, 0x97, 0xd6, 0xa2, 0x72, 0x3e, 0xae, 0x4e, 0x73,
-  0xba, 0x58, 0xfe, 0x3a, 0xeb, 0xeb, 0xd1, 0xd2, 0x3c, 0x87, 0x9c, 0xf1,
-  0xe0, 0x0f, 0x09, 0xdc, 0xa1, 0x04, 0xcc, 0x9b, 0xb2, 0xea, 0x2e, 0x28,
-  0x6e, 0xbf, 0x9c, 0x86, 0x5c, 0x02, 0x21, 0x10, 0x82, 0x75, 0x10, 0x50,
-  0xa9, 0x6a, 0xb7, 0x07, 0x6c, 0x62, 0x1d, 0x25, 0x62, 0x33, 0x02, 0xe1,
-  0x77, 0x57, 0x11, 0xdd, 0x4f, 0xa1, 0x91, 0x32, 0x16, 0x62, 0xf1, 0xb4,
-  0x70, 0x65, 0x04, 0x32, 0x8b, 0x34, 0x93, 0x3a, 0x0f, 0x0a, 0x62, 0xa8,
-  0xb4, 0x5b, 0x03, 0x09, 0x00, 0xa9, 0x55, 0x47, 0xef, 0xfd, 0xcb, 0x3f,
-  0xb8, 0x72, 0x52, 0x9e, 0x83, 0x73, 0x45, 0x23, 0x99, 0x3f, 0x8f, 0x66,
-  0x3f, 0xe8, 0xe0, 0x55, 0x41, 0x23, 0x32, 0x80, 0xe0, 0x78, 0x69, 0x64,
-  0x44, 0x16, 0xa4, 0x7f, 0xb7, 0xcb, 0x24, 0xcd, 0xa5, 0x08, 0x8e, 0x47,
-  0x00, 0x83, 0x77, 0x6d, 0x8d, 0x2e, 0xdf, 0xe7, 0x3a, 0x88, 0x14, 0xf7,
-  0x04, 0x79, 0xa9, 0xcb, 0x38, 0xc0, 0xb1, 0x05, 0xb3, 0x85, 0xa6, 0xed,
-  0x2a, 0xb8, 0x8a, 0x27, 0x84, 0x1c, 0x86, 0x02, 0xdb, 0x81, 0xfe, 0x97,
-  0x06, 0x86, 0xaa, 0xe9, 0xbe, 0xf2, 0x81, 0x52, 0x63, 0x04, 0x26, 0x99,
-  0xb2, 0xf7, 0x0a, 0x4b, 0x62, 0xfb, 0x89, 0xb2, 0xb5, 0xdc, 0x2f, 0xfc,
-  0x82, 0x4e, 0x74, 0xa0, 0xcf, 0x8d, 0x4d, 0x13, 0x77, 0xf9, 0x14, 0x75,
-  0xc2, 0x05, 0x44, 0x43, 0xc9, 0xd5, 0x92, 0xe7, 0x42, 0x9e, 0xc4, 0x3c,
-  0x84, 0x6f, 0x8e, 0xe3, 0x5e, 0x16, 0x5e, 0x31, 0xcc, 0x69, 0xc2, 0x19,
-  0xdf, 0xe4, 0x4c, 0xc1, 0x32, 0xc0, 0xf1, 0xb8, 0xc3, 0xd7, 0xb1, 0xcd,
-  0x75, 0x34, 0x56, 0xff, 0xf2, 0x8a, 0x78, 0x87, 0x43, 0x37, 0xaa, 0xa2,
-  0x2c, 0x87, 0xf6, 0x88, 0x30, 0x19, 0xf9, 0x47, 0x26, 0x76, 0xfc, 0x6e,
-  0x53, 0xeb, 0xec, 0x10, 0x95, 0x07, 0x58, 0x2b, 0x19, 0x1c, 0x65, 0x4e,
-  0xe8, 0xc7, 0x7c, 0x56, 0x46, 0xfd, 0x9e, 0x46, 0xb4, 0xcd, 0xf9, 0xf5,
-  0xb7, 0x9b, 0xea, 0xcc, 0xa2, 0x0c, 0xa0, 0xeb, 0x54, 0x7e, 0xcd, 0xd9,
-  0x7f, 0x9b, 0xd7, 0xfc, 0xd0, 0x37, 0xfa, 0x50, 0x98, 0xe2, 0x40, 0xae,
-  0x55, 0x76, 0xa5, 0x6a, 0x0c, 0xbe, 0x3e, 0x48, 0xf6, 0x77, 0x77, 0xbf,
-  0xeb, 0x27, 0x4f, 0xb8, 0x70, 0xfa, 0xde, 0x37, 0xd1, 0x1c, 0x59, 0xc6,
-  0x98, 0x90, 0x8a, 0xac, 0xd1, 0xc1, 0xc1, 0x9f, 0x49, 0x33, 0xc6, 0x9c,
-  0xf1, 0xce, 0xb4, 0x90, 0x46, 0x06, 0xce, 0x3a, 0xcc, 0x6f, 0xf7, 0x02,
-  0xa3, 0xa5, 0x5a, 0x90, 0x26, 0x37, 0xcd, 0x94, 0xe4, 0x6e, 0x0e, 0x17,
-  0x14, 0x45, 0x58, 0x17, 0x92, 0xe2, 0x45, 0x5b, 0x75, 0x60, 0x89, 0x73,
-  0xea, 0x19, 0x3d, 0x00, 0xc2, 0xf0, 0x32, 0x00, 0x64, 0xcd, 0x16, 0xd0,
-  0x62, 0x2d, 0xa7, 0xbf, 0xd7, 0x25, 0x82, 0x67, 0x4f, 0x12, 0x31, 0xc4,
-  0x7f, 0x47, 0x5d, 0x62, 0x86, 0xa0, 0x7e, 0x5e, 0x37, 0x03, 0xb2, 0x35,
-  0xa3, 0x8e, 0xfa, 0xf3, 0xb3, 0xf3, 0x27, 0xdb, 0x16, 0x56, 0xce, 0x9c,
-  0x21, 0x92, 0xeb, 0x93, 0x28, 0x4c, 0xd0, 0x66, 0x01, 0x29, 0xb7, 0x18,
-  0xd0, 0xa6, 0xb1, 0x2a, 0xd8, 0x4a, 0xaf, 0x8b, 0xef, 0xc1, 0x2b, 0xeb,
-  0x32, 0xcb, 0xbd, 0xa2, 0x10, 0xee, 0x58, 0xb2, 0x4c, 0x20, 0x94, 0xc8,
-  0x46, 0x98, 0x28, 0x29, 0x56, 0x87, 0xe4, 0x19, 0x0e, 0x80, 0x62, 0x4d,
-  0xda, 0x7c, 0xd3, 0x04, 0x79, 0xec, 0x74, 0xb2, 0x9d, 0xdb, 0xe5, 0x85,
-  0x81, 0x05, 0x2c, 0xea, 0x1e, 0x84, 0xd7, 0x58, 0x31, 0xbd, 0x7c, 0xdf,
-  0xda, 0x20, 0x1a, 0xb9, 0xb4, 0x68, 0xdb, 0x32, 0x25, 0xd8, 0x70, 0x65,
-  0x5d, 0x3c, 0x4b, 0xcc, 0xda, 0x52, 0x9b, 0x85, 0xbf, 0x3d, 0x4d, 0xde,
-  0x9d, 0x8e, 0x2e, 0x7d, 0x4f, 0x3f, 0x1c, 0xba, 0x01, 0x02, 0xaa, 0x4d,
-  0x55, 0xe0, 0xc5, 0x8b, 0x4f, 0x4f, 0x46, 0x97, 0xc3, 0x18, 0xe5, 0xe8,
-  0x41, 0x32, 0x2a, 0xe7, 0x7e, 0x25, 0xbe, 0x5a, 0x2a, 0xa5, 0x01, 0xee,
-  0xcc, 0xe1, 0x0b, 0xf5, 0xe6, 0xe7, 0x95, 0xef, 0xeb, 0x0f, 0x76, 0x2a,
-  0x75, 0xf1, 0x0b, 0x46, 0x37, 0x09, 0x32, 0x4a, 0x1d, 0xf9, 0xf5, 0x72,
-  0x3c, 0xf0, 0xb8, 0x41, 0x58, 0xdf, 0x01, 0x59, 0xb9, 0xd9, 0xbd, 0xe6,
-  0x86, 0xfa, 0x18, 0x1a, 0x02, 0x5b, 0xb2, 0x9f, 0x78, 0x23, 0x09, 0xab,
-  0x4b, 0xcb, 0x23, 0x39, 0x49, 0x32, 0xf0, 0x44, 0xc1, 0x17, 0x40, 0x4f,
-  0x3f, 0x6a, 0x53, 0xd1, 0x44, 0x74, 0xe6, 0x51, 0xaa, 0x5b, 0xb4, 0x81,
-  0x8e, 0x14, 0x59, 0xf1, 0xb8, 0x2e, 0xd6, 0x05, 0x93, 0xbc, 0x5d, 0xa8,
-  0xa4, 0x33, 0xb2, 0xeb, 0xb8, 0xe8, 0x1e, 0xbb, 0x05, 0x6c, 0xaf, 0x57,
-  0x51, 0x57, 0xe5, 0x53, 0x66, 0x76, 0xa9, 0xdb, 0xd4, 0x2e, 0x9c, 0xbd,
-  0x43, 0x22, 0x87, 0x89, 0x9c, 0xc9, 0x7a, 0x5d, 0xb1, 0x92, 0xec, 0x37,
-  0x69, 0x41, 0x5a, 0x06, 0x3f, 0x32, 0x4e, 0x0a, 0xc1, 0x8c, 0x7e, 0x8c,
-  0x72, 0x20, 0x96, 0x2a, 0xeb, 0xb1, 0xa6, 0xbf, 0x37, 0xa6, 0xad, 0x9d,
-  0x2f, 0x99, 0x1f, 0xa9, 0x54, 0x2b, 0x43, 0x25, 0x34, 0xac, 0x0a, 0x4d,
-  0xac, 0x48, 0xe0, 0x99, 0x5f, 0x16, 0xb9, 0xf9, 0x7e, 0xc2, 0xaa, 0xeb,
-  0x15, 0x01, 0x40, 0xab, 0x94, 0xc1, 0x3d, 0xb8, 0xc7, 0xcc, 0x98, 0x36,
-  0x6b, 0xcb, 0xa0, 0x48, 0x4e, 0x01, 0x3d, 0xae, 0x1f, 0xa3, 0xf5, 0x90,
-  0x56, 0x01, 0xf9, 0xfd, 0x34, 0xc0, 0xbd, 0x36, 0x65, 0x0f, 0xd8, 0xb9,
-  0x24, 0xc1, 0xde, 0x5c, 0x48, 0x3b, 0xc8, 0x1d, 0x8d, 0xd6, 0x85, 0x4d,
-  0x13, 0x0f, 0x38, 0x21, 0x49, 0xa3, 0x8a, 0xef, 0xad, 0x24, 0x51, 0x75,
-  0xeb, 0xcd, 0xc5, 0xd9, 0xdb, 0xc1, 0xe5, 0x19, 0xca, 0xff, 0xa1, 0xe9,
-  0x24, 0xa2, 0x71, 0x6a, 0xf9, 0x56, 0xaf, 0x86, 0x61, 0x1b, 0x75, 0xb2,
-  0x55, 0x6f, 0x0f, 0x7d, 0xde, 0xdf, 0x85, 0x5f, 0xf4, 0x35, 0x60, 0xe0,
-  0x2d, 0x58, 0x17, 0x81, 0xb9, 0x69, 0x76, 0xd3, 0x24, 0x25, 0x95, 0xd1,
-  0xc6, 0x1b, 0xd0, 0x80, 0x0a, 0xef, 0xf1, 0xb2, 0xbe, 0x07, 0x37, 0x38,
-  0x80, 0x48, 0x80, 0x48, 0x35, 0xa1, 0x13, 0x57, 0x19, 0x28, 0x6c, 0xf2,
-  0x2d, 0x31, 0x76, 0x30, 0x1c, 0xbc, 0x29, 0xcd, 0xf9, 0x4d, 0xab, 0xaa,
-  0xbc, 0xd3, 0x9b, 0x0b, 0x39, 0x0c, 0x66, 0x21, 0x6d, 0xd9, 0xf9, 0x95,
-  0xa9, 0x8a, 0x92, 0x84, 0xaf, 0x95, 0xd4, 0xd6, 0x2a, 0x80, 0xcf, 0xda,
-  0xe9, 0x63, 0x8a, 0x1a, 0x1b, 0x34, 0x95, 0xb1, 0x97, 0xb2, 0xe9, 0x0a,
-  0x74, 0xc6, 0x29, 0x49, 0x4a, 0x00, 0xcd, 0xbc, 0x77, 0xfa, 0x42, 0x14,
-  0x42, 0x09, 0xa5, 0xa0, 0x7f, 0x57, 0xff, 0x91, 0x65, 0xce, 0xfe, 0x53,
-  0x70, 0x86, 0x85, 0x3e, 0x8c, 0xd4, 0xfa, 0xd9, 0xcc, 0x01, 0xcd, 0x84,
-  0x85, 0x86, 0xaa, 0xb5, 0xd2, 0xde, 0x56, 0x2c, 0x18, 0x08, 0x02, 0x20,
-  0x0f, 0xe8, 0xa7, 0x81, 0x36, 0xa9, 0x29, 0xbf, 0x39, 0x25, 0x5b, 0x4d,
-  0x97, 0x13, 0xac, 0x12, 0x05, 0x66, 0xa8, 0xd4, 0xc9, 0x98, 0xb9, 0x88,
-  0x34, 0x5f, 0x89, 0x9a, 0x76, 0x10, 0x3b, 0xb6, 0xb3, 0xbb, 0x7a, 0x16,
-  0x3f, 0x65, 0x4b, 0x0b, 0x90, 0x32, 0x49, 0x78, 0x8d, 0x8c, 0x15, 0xcb,
-  0x2a, 0xa8, 0x7d, 0x54, 0x5c, 0x95, 0xb6, 0x80, 0x54, 0x44, 0x60, 0x11,
-  0xeb, 0x23, 0x68, 0xee, 0x04, 0x9f, 0x41, 0x6c, 0x2d, 0xb4, 0x7d, 0x11,
-  0x1b, 0xfd, 0x9a, 0x3c, 0x9b, 0x9d, 0x16, 0xb7, 0xd7, 0x78, 0x11, 0x97,
-  0x8a, 0xc8, 0xf4, 0x56, 0xaf, 0x85, 0xfb, 0x5b, 0xb1, 0x72, 0x27, 0x72,
-  0x4f, 0xdb, 0x9a, 0xaf, 0x0c, 0x5e, 0xb1, 0x73, 0x2e, 0x27, 0x1b, 0x74,
-  0x22, 0xd7, 0x5c, 0x90, 0x91, 0x30, 0x73, 0xd3, 0x18, 0x20, 0x5f, 0x6b,
-  0x5b, 0x34, 0x89, 0x7e, 0x34, 0xd9, 0x22, 0x2f, 0xe0, 0xc4, 0x87, 0x30,
-  0x9f, 0xca, 0xaf, 0x14, 0x31, 0xc9, 0xfc, 0x80, 0x9d, 0xe6, 0x9e, 0xfc,
-  0xf8, 0x63, 0xd2, 0x2e, 0x47, 0xb5, 0xbd, 0x2a, 0xb1, 0x4b, 0xd0, 0xac,
-  0xd3, 0xd2, 0xef, 0x6e, 0x00, 0xc8, 0xe7, 0x3d, 0x67, 0x54, 0x02, 0x00,
-  0xff, 0xe0, 0x12, 0x92, 0x58, 0x90, 0xb1, 0xff, 0x6e, 0x14, 0xa1, 0x8d,
-  0x30, 0xbb, 0x8b, 0xb3, 0x27, 0xa8, 0x21, 0x30, 0x38, 0x89, 0x80, 0x51,
-  0x20, 0x72, 0x5d, 0x6c, 0x5d, 0xc8, 0x8e, 0x39, 0xff, 0xd7, 0x9f, 0x30,
-  0x57, 0xb6, 0xb0, 0xbe, 0x21, 0x37, 0x30, 0x2e, 0x84, 0x07, 0x4b, 0x66,
-  0x71, 0x22, 0x1b, 0x46, 0x86, 0x4b, 0x9f, 0x89, 0x51, 0x09, 0xea, 0x34,
-  0xa9, 0x32, 0xf1, 0x36, 0xd4, 0x36, 0xcf, 0x3f, 0x08, 0xf6, 0x51, 0xfe,
-  0xe9, 0x8c, 0x61, 0x9a, 0x43, 0xac, 0x70, 0xea, 0x9d, 0x18, 0xc7, 0x22,
-  0xd2, 0x59, 0x33, 0x46, 0x6f, 0x86, 0x35, 0x3a, 0x4b, 0xd2, 0xa0, 0x28,
-  0x99, 0x0b, 0x54, 0x08, 0x25, 0x07, 0x13, 0xa5, 0x90, 0x12, 0xdf, 0x37,
-  0x7f, 0xd2, 0x73, 0x3b, 0x6c, 0x87, 0x2d, 0x68, 0x17, 0xc4, 0x22, 0x55,
-  0x2a, 0x4c, 0xb0, 0x30, 0x44, 0x58, 0x45, 0x79, 0xd9, 0x4a, 0xaa, 0x4f,
-  0x1e, 0x3d, 0x8d, 0x65, 0xb2, 0x46, 0x8d, 0x9c, 0x2a, 0xae, 0x93, 0x18,
-  0x90, 0xa7, 0xb9, 0x23, 0x4b, 0x50, 0x0b, 0x78, 0xa7, 0x1c, 0xdb, 0x02,
-  0x6c, 0x86, 0x81, 0x31, 0x4a, 0x07, 0x78, 0xac, 0x5e, 0x85, 0x0a, 0x70,
-  0xc1, 0x0d, 0xa1, 0xff, 0xf5, 0x27, 0x4c, 0x7d, 0xdb, 0x36, 0x7f, 0x4f,
-  0x00, 0xea, 0xc2, 0x23, 0x4b, 0xb9, 0x63, 0xdd, 0xa3, 0xe5, 0x07, 0x78,
-  0x90, 0x2a, 0x67, 0xfe, 0x7d, 0xfe, 0xfe, 0x72, 0xdb, 0xd5, 0xdc, 0x94,
-  0xdd, 0xea, 0xa3, 0x5b, 0x25, 0xf1, 0x25, 0xac, 0x23, 0xc3, 0xe9, 0x69,
-  0x22, 0xa7, 0x04, 0xe1, 0x26, 0x07, 0x83, 0x9c, 0x2c, 0x4f, 0x76, 0xf7,
-  0x8c, 0x25, 0xb5, 0xbb, 0x8f, 0xe2, 0x5b, 0x4f, 0x76, 0x9f, 0x0c, 0xd9,
-  0xc6, 0x70, 0x45, 0x54, 0x83, 0x6b, 0x81, 0x36, 0x36, 0x2a, 0xbc, 0xa3,
-  0xfc, 0x93, 0x60, 0x7a, 0x9f, 0x7c, 0xfa, 0x84, 0x5f, 0xb5, 0x81, 0x99,
-  0x03, 0x9b, 0xcf, 0x60, 0xbb, 0x1a, 0xbf, 0xf9, 0xbd, 0x19, 0x47, 0x00,
-  0x66, 0x59, 0x70, 0xee, 0x10, 0xca, 0x9b, 0x51, 0x0a, 0xdc, 0xca, 0xaa,
-  0x13, 0x4d, 0x37, 0xd3, 0xdf, 0x2f, 0xaf, 0x60, 0xf6, 0x0a, 0x0d, 0xde,
-  0x7e, 0x45, 0xf3, 0xe9, 0x42, 0xe1, 0x8c, 0xc7, 0x04, 0x2a, 0x6d, 0x14,
-  0x86, 0x27, 0xbb, 0x9f, 0x7c, 0xc5, 0xb8, 0xb5, 0x25, 0xcc, 0x65, 0x27,
-  0x22, 0x49, 0x51, 0xb8, 0xa1, 0x23, 0x82, 0xe4, 0xdf, 0x01, 0xc5, 0xf3,
-  0xcd, 0xa1, 0xc0, 0x0c, 0xeb, 0x5f, 0xf7, 0x25, 0xa6, 0xcf, 0xff, 0x7a,
-  0xd2, 0xbe, 0x2b, 0xaf, 0xf3, 0x62, 0xa0, 0x6d, 0xbe, 0x94, 0xbf, 0x04,
-  0xfe, 0x4a, 0x54, 0x5d, 0x22, 0xe5, 0x18, 0x34, 0xc7, 0xdb, 0xd6, 0x85,
-  0x02, 0xa3, 0x8f, 0x9a, 0xb0, 0xdd, 0x12, 0x35, 0x45, 0xca, 0xd9, 0x89,
-  0x88, 0x5e, 0x2b, 0x3c, 0x86, 0xab, 0xab, 0x58, 0x58, 0x52, 0x02, 0xf9,
-  0x88, 0xfd, 0x8a, 0x1f, 0x0f, 0xb7, 0xc5, 0xb2, 0x54, 0x35, 0x8e, 0x86,
-  0xef, 0xe4, 0x7a, 0xe0, 0xca, 0xca, 0x2c, 0x47, 0xa5, 0x8f, 0x9d, 0xde,
-  0x24, 0x87, 0x0d, 0x8a, 0x63, 0x49, 0x8e, 0x4d, 0x60, 0xa6, 0xd2, 0x54,
-  0xf4, 0xd9, 0x4e, 0xe5, 0xb2, 0x73, 0xc4, 0xfb, 0xac, 0x80, 0xb8, 0xd6,
-  0x5c, 0xb0, 0xcb, 0x1a, 0xb4, 0x65, 0x12, 0x51, 0x8f, 0xdc, 0x69, 0x1c,
-  0x4d, 0x0f, 0xe7, 0xd1, 0x9c, 0x43, 0xba, 0x5a, 0x49, 0xef, 0x97, 0xca,
-  0x58, 0x4f, 0xfb, 0xf8, 0xdb, 0xb3, 0xdd, 0x17, 0xfb, 0xe2, 0x1e, 0x3c,
-  0x39, 0xbe, 0x7c, 0xd3, 0x75, 0xe8, 0x55, 0x66, 0x3f, 0xf1, 0x7f, 0xa9,
-  0x54, 0xf0, 0x8d, 0x31, 0x30, 0x28, 0xef, 0x77, 0x40, 0xcc, 0xb1, 0x83,
-  0xdd, 0xdd, 0x58, 0x80, 0xfd, 0x77, 0x24, 0x26, 0x7d, 0xf2, 0xb4, 0x1d,
-  0x7b, 0x21, 0xb5, 0x7e, 0x40, 0xf3, 0xbd, 0x9a, 0x9f, 0x8a, 0xf7, 0x97,
-  0xf3, 0xd1, 0x39, 0x0a, 0x43, 0x79, 0xc3, 0x0b, 0xac, 0x46, 0xd0, 0x11,
-  0x31, 0xd2, 0xf2, 0x8e, 0x5b, 0x5d, 0x40, 0x24, 0x5b, 0x6c, 0x47, 0x34,
-  0xf7, 0xdb, 0xc2, 0x55, 0x9f, 0x48, 0x1d, 0x34, 0x08, 0x79, 0xb1, 0x22,
-  0xa2, 0x39, 0x77, 0xb5, 0x64, 0x1c, 0x54, 0x19, 0xf1, 0x07, 0xb0, 0xe2,
-  0x27, 0xdc, 0xef, 0x0f, 0x73, 0x20, 0x60, 0x0a, 0xaa, 0xc9, 0x42, 0xf2,
-  0x4f, 0xf8, 0xdf, 0x74, 0x15, 0xb7, 0x80, 0x8e, 0xfb, 0xcf, 0x22, 0x13,
-  0x87, 0x0b, 0xfb, 0x17, 0x4c, 0x5c, 0x7b, 0xde, 0x9c, 0x7a, 0xc4, 0x6e,
-  0x3c, 0x18, 0xbd, 0x12, 0x2d, 0x08, 0x73, 0xd3, 0x6b, 0xad, 0xf6, 0xf4,
-  0x8b, 0xc7, 0x42, 0xd3, 0x3d, 0x5c, 0xc7, 0xa5, 0xe2, 0xde, 0x7a, 0x60,
-  0x2c, 0x23, 0x0b, 0x78, 0x69, 0x8f, 0xa4, 0xef, 0xf8, 0x7c, 0xe9, 0xfe,
-  0x98, 0x4b, 0x79, 0x02, 0xf8, 0x1b, 0x10, 0x79, 0xea, 0x34, 0x77, 0x91,
-  0x2d, 0x32, 0x0c, 0xdd, 0x0f, 0x30, 0x7b, 0x9b, 0xdb, 0xda, 0xa9, 0x8d,
-  0x57, 0xef, 0xda, 0xdc, 0xa3, 0xf9, 0x82, 0x08, 0xc6, 0xea, 0xa8, 0xaf,
-  0xa5, 0x5d, 0xcb, 0x12, 0x73, 0xa9, 0x7e, 0xd9, 0xbe, 0xdc, 0x64, 0xf2,
-  0xbe, 0xce, 0xb1, 0x85, 0xef, 0x84, 0xf9, 0x74, 0x64, 0xb2, 0xa3, 0x09,
-  0xbb, 0x54, 0xa5, 0x4b, 0xca, 0xe3, 0xb6, 0xcb, 0xb8, 0x02, 0xe0, 0xf7,
-  0xa2, 0x70, 0x84, 0x67, 0x02, 0x4d, 0x93, 0x1d, 0x9f, 0x6c, 0x7d, 0x7f,
-  0xf1, 0xe6, 0xcf, 0x36, 0x95, 0x77, 0xbb, 0x1f, 0xb7, 0x86, 0xb5, 0xbf,
-  0x5e, 0x08, 0xc9, 0x81, 0xb6, 0x24, 0x81, 0xb4, 0x35, 0xf1, 0xee, 0x1f,
-  0x21, 0xbe, 0x97, 0x29, 0xba, 0x92, 0x2d, 0xaa, 0x34, 0x68, 0x9e, 0x1a,
-  0x89, 0x51, 0xf7, 0x64, 0xf8, 0x0c, 0x5e, 0x91, 0x37, 0x47, 0xcf, 0x9e,
-  0xec, 0xef, 0x19, 0xbb, 0x75, 0xab, 0x23, 0x2d, 0xb6, 0x1f, 0x1c, 0x66,
-  0x7b, 0xbd, 0xb3, 0x4f, 0x0b, 0xda, 0x7b, 0x5b, 0xc7, 0x3f, 0x9e, 0xbf,
-  0xf3, 0x06, 0x68, 0x57, 0x20, 0xc8, 0xad, 0xf4, 0x47, 0xc8, 0x89, 0x4d,
-  0x76, 0x8c, 0xee, 0xb6, 0x0d, 0xb6, 0x14, 0xa7, 0x2e, 0x86, 0x59, 0xb3,
-  0xbd, 0x37, 0x55, 0x4e, 0x7a, 0x6e, 0x8f, 0xe6, 0xa3, 0x77, 0x5a, 0x16,
-  0x53, 0x73, 0xfb, 0x9f, 0x11, 0xdf, 0x44, 0xd6, 0x33, 0x6a, 0xec, 0x83,
-  0xa3, 0x5b, 0x7d, 0x4c, 0xde, 0xf6, 0x71, 0x54, 0x8a, 0x10, 0x8a, 0xf0,
-  0x16, 0x3f, 0x04, 0xd3, 0x17, 0xe5, 0x45, 0x73, 0xbe, 0xc9, 0x92, 0xec,
-  0x1c, 0x72, 0xf1, 0x36, 0xad, 0xf2, 0xcb, 0xac, 0x49, 0xc2, 0xfd, 0x46,
-  0x5e, 0x9f, 0x97, 0x70, 0x6a, 0xaf, 0x8a, 0x87, 0xf0, 0xc8, 0x39, 0x1a,
-  0x82, 0xc7, 0xb7, 0xd4, 0xb1, 0xbf, 0xed, 0x55, 0x8a, 0xe2, 0x12, 0x6a,
-  0x12, 0xee, 0x80, 0xaa, 0x1e, 0x2b, 0x41, 0x82, 0x47, 0x9d, 0x59, 0x91,
-  0xb7, 0xc1, 0xcb, 0x38, 0x8a, 0x48, 0x24, 0xed, 0xb7, 0x99, 0x38, 0x22,
-  0x7e, 0x70, 0x84, 0x7a, 0xb9, 0x62, 0x44, 0x31, 0x6d, 0x29, 0x7a, 0x28,
-  0x39, 0x0c, 0x1b, 0x08, 0x75, 0xef, 0xa1, 0x24, 0x3e, 0x7f, 0x12, 0xde,
-  0x47, 0x3c, 0x18, 0xd1, 0xed, 0x2a, 0x5f, 0x05, 0xe0, 0x1b, 0x5a, 0xd4,
-  0xde, 0xbe, 0x17, 0x88, 0xa0, 0x38, 0x04, 0x0c, 0xa9, 0xcd, 0xef, 0x36,
-  0xa3, 0x11, 0x38, 0x0e, 0x4c, 0x48, 0x45, 0x3f, 0xf6, 0xeb, 0xd0, 0x19,
-  0x41, 0x70, 0x42, 0xa2, 0x0d, 0x88, 0x46, 0x70, 0x23, 0x6f, 0x37, 0x13,
-  0x1b, 0x90, 0xe8, 0xda, 0xfb, 0x0f, 0x86, 0x27, 0xf2, 0x26, 0x1e, 0x8f,
-  0xe0, 0x80, 0x44, 0xd7, 0x08, 0xb5, 0xe1, 0x89, 0xd6, 0xe6, 0x7b, 0xf6,
-  0x79, 0x64, 0xf3, 0xbd, 0x3b, 0xbb, 0x3c, 0x3e, 0x10, 0xfc, 0xac, 0x4b,
-  0xa4, 0x57, 0x5b, 0x81, 0x31, 0x44, 0xa8, 0xf5, 0x26, 0x19, 0x25, 0x20,
-  0x20, 0xe2, 0x75, 0xef, 0x47, 0x8e, 0x3c, 0xc0, 0xbc, 0x74, 0x4a, 0xd8,
-  0xdb, 0xdb, 0xac, 0xa4, 0x7b, 0x42, 0x8a, 0xa0, 0xd8, 0x06, 0x1c, 0x98,
-  0x8c, 0x55, 0xec, 0x45, 0x24, 0x0e, 0x36, 0x24, 0x78, 0xbd, 0xf8, 0xca,
-  0x0d, 0x36, 0x11, 0xdf, 0x65, 0xb0, 0xb9, 0x34, 0x49, 0x90, 0x4a, 0x02,
-  0x85, 0x95, 0x6c, 0x10, 0xa5, 0x7b, 0x23, 0x45, 0x44, 0x61, 0x91, 0x58,
-  0xce, 0x98, 0x75, 0x57, 0x9c, 0x0b, 0x26, 0x76, 0x0f, 0x95, 0x98, 0x67,
-  0xe4, 0x07, 0x5c, 0x41, 0x1c, 0x40, 0x8e, 0x40, 0x1b, 0x5d, 0xd4, 0x4d,
-  0x42, 0xaa, 0x86, 0xda, 0x69, 0x64, 0x56, 0x5a, 0x1b, 0xa5, 0x96, 0x82,
-  0x83, 0x61, 0x08, 0x9b, 0x2f, 0x9c, 0x8e, 0xa3, 0xca, 0x99, 0xdc, 0xaa,
-  0xb0, 0x01, 0x63, 0x91, 0x75, 0x8a, 0x75, 0xc7, 0x69, 0x85, 0xfc, 0xdc,
-  0x44, 0x68, 0x9b, 0x3d, 0xa2, 0x81, 0x19, 0xd7, 0xcb, 0x6a, 0xba, 0x9c,
-  0x1b, 0xc1, 0xe5, 0xe3, 0xc5, 0xa1, 0xf8, 0xc1, 0xa6, 0xe5, 0x74, 0xe9,
-  0x48, 0xac, 0xe0, 0xd9, 0x6e, 0xab, 0xb5, 0x21, 0x46, 0xde, 0x89, 0x78,
-  0x0f, 0xf6, 0x6c, 0x12, 0x7f, 0x8e, 0xd4, 0x38, 0x0e, 0x73, 0xfe, 0x8e,
-  0xc1, 0xa6, 0x79, 0x5f, 0x56, 0x8a, 0x61, 0x67, 0xf4, 0xdf, 0x2f, 0x03,
-  0x51, 0xaa, 0xb1, 0x5f, 0x94, 0x6d, 0x21, 0x0b, 0x43, 0x10, 0x45, 0xac,
-  0x2d, 0x91, 0x4b, 0x8d, 0xdd, 0x80, 0xf4, 0xc1, 0xbb, 0x9b, 0x72, 0xe6,
-  0x07, 0xc1, 0x03, 0x7b, 0x8e, 0xfc, 0x14, 0x1e, 0x67, 0x8b, 0x97, 0x1d,
-  0x22, 0x0b, 0x43, 0xf3, 0x0e, 0xaf, 0xdb, 0x98, 0x32, 0xff, 0x92, 0xbf,
-  0x96, 0x63, 0xc1, 0x20, 0x52, 0x8e, 0xd3, 0x75, 0x94, 0x07, 0x00, 0x0c,
-  0x46, 0xe6, 0xba, 0x32, 0x5b, 0x6d, 0xba, 0x64, 0xff, 0x2a, 0xf5, 0x47,
-  0x70, 0xb3, 0x5c, 0xc4, 0x8c, 0x22, 0x1f, 0xc9, 0x75, 0xc9, 0x85, 0xcc,
-  0xc8, 0x61, 0xc3, 0xec, 0x8b, 0x61, 0x2e, 0xdb, 0x7e, 0x37, 0xd7, 0x3b,
-  0x9d, 0x90, 0x53, 0xc4, 0x34, 0x2d, 0x79, 0x95, 0x90, 0xc9, 0xb5, 0x03,
-  0x17, 0xa7, 0x93, 0x66, 0x29, 0xb3, 0xde, 0xed, 0x5d, 0xa9, 0x7e, 0x52,
-  0xf3, 0x2e, 0x88, 0x0d, 0x41, 0x25, 0x34, 0x31, 0x5b, 0x2f, 0x9d, 0xdc,
-  0xab, 0xbe, 0xe0, 0x2e, 0x57, 0x6a, 0xa2, 0x5c, 0x7a, 0x34, 0x88, 0xc1,
-  0x60, 0x6d, 0x27, 0x28, 0xe8, 0x99, 0xd7, 0x2b, 0x68, 0x88, 0x7f, 0x53,
-  0x53, 0xc5, 0x27, 0x93, 0x67, 0xcf, 0xf3, 0x40, 0xfa, 0xd9, 0x3a, 0xed,
-  0x59, 0x93, 0xd2, 0x1c, 0x3f, 0x90, 0xc2, 0xdb, 0x72, 0x0a, 0x70, 0x6c,
-  0x10, 0x34, 0xb1, 0x94, 0x0c, 0x81, 0x60, 0xb8, 0x22, 0x1e, 0x88, 0xd0,
-  0x25, 0x54, 0x25, 0xde, 0xca, 0x57, 0x14, 0x11, 0xb1, 0x05, 0x89, 0x65,
-  0xf3, 0x4d, 0xd8, 0xd8, 0x7c, 0x9a, 0x6c, 0xc1, 0x06, 0xfc, 0xfc, 0xd9,
-  0xd3, 0xed, 0x36, 0x62, 0x6c, 0x3b, 0x02, 0xdc, 0xc5, 0x69, 0x13, 0xb6,
-  0x50, 0x5c, 0xee, 0x39, 0xd5, 0x77, 0xe1, 0xc8, 0x9c, 0x38, 0x37, 0x73,
-  0x26, 0x83, 0x27, 0x37, 0x3b, 0xca, 0x2a, 0x48, 0x08, 0x34, 0x80, 0x11,
-  0xa0, 0xbc, 0x4d, 0xc6, 0xaf, 0xdb, 0xd2, 0xa5, 0x56, 0x80, 0xbb, 0x34,
-  0x0e, 0x66, 0xab, 0x84, 0xa2, 0xa6, 0x84, 0x95, 0xdb, 0x84, 0x95, 0x8c,
-  0x5d, 0xa2, 0x98, 0x79, 0x2e, 0x34, 0xcf, 0x4a, 0x0c, 0x95, 0x15, 0x2c,
-  0xbd, 0x7b, 0x41, 0x5c, 0x23, 0xcc, 0x6b, 0x28, 0x37, 0x4f, 0x12, 0x23,
-  0x5e, 0x33, 0x17, 0x22, 0x2e, 0x47, 0xdc, 0x65, 0x76, 0x22, 0xd1, 0x06,
-  0x33, 0xf9, 0xd0, 0x56, 0xd1, 0x16, 0x04, 0x28, 0x25, 0xeb, 0x82, 0x1b,
-  0x32, 0xb8, 0x93, 0xe7, 0x4a, 0x7b, 0xce, 0xda, 0x47, 0x59, 0xb9, 0x92,
-  0xc5, 0x1c, 0xa8, 0xe1, 0xfb, 0x12, 0xd8, 0xce, 0x55, 0x69, 0xfb, 0xea,
-  0x0a, 0x49, 0x35, 0xbd, 0xb8, 0xd5, 0xb1, 0x95, 0xb9, 0x08, 0xba, 0xdb,
-  0x34, 0x91, 0xbf, 0x9b, 0x82, 0xa0, 0x7f, 0xb7, 0xbb, 0x32, 0xcc, 0x3e,
-  0xe2, 0xaf, 0x76, 0xe6, 0x61, 0x45, 0xef, 0xb9, 0x6a, 0x2f, 0x58, 0x77,
-  0xe0, 0x48, 0x19, 0x84, 0xec, 0x21, 0xc9, 0x16, 0x3a, 0xbc, 0xb3, 0xb3,
-  0xfd, 0x70, 0xa7, 0xe5, 0xc9, 0x87, 0x3a, 0x79, 0xce, 0xde, 0x0d, 0x66,
-  0x48, 0xb5, 0x54, 0x36, 0xae, 0x17, 0xf4, 0x55, 0x5a, 0x32, 0xe6, 0x31,
-  0x65, 0x08, 0x68, 0x25, 0xba, 0x09, 0xe5, 0x93, 0x86, 0x77, 0x90, 0xc0,
-  0xd3, 0x30, 0xbc, 0xf6, 0xc8, 0xc5, 0xea, 0x65, 0x2a, 0x20, 0x11, 0x20,
-  0xc0, 0x47, 0x81, 0x9c, 0x25, 0x39, 0x34, 0xbb, 0x30, 0x54, 0x39, 0xb5,
-  0x57, 0x38, 0x10, 0xde, 0xf8, 0xd8, 0xd2, 0xf5, 0x13, 0xdb, 0x70, 0x34,
-  0x5a, 0x7e, 0xf9, 0x08, 0x8e, 0x5d, 0x1e, 0x55, 0x61, 0x24, 0x05, 0x01,
-  0x87, 0x01, 0xbd, 0x17, 0x3f, 0xe8, 0x8a, 0xd2, 0xc5, 0x08, 0x4c, 0x99,
-  0x25, 0xd7, 0xba, 0x09, 0xb9, 0x4d, 0x23, 0x53, 0x3f, 0xba, 0x71, 0x33,
-  0xbf, 0x16, 0xd7, 0x1e, 0xbc, 0x6a, 0x71, 0x3f, 0xa5, 0x55, 0xe8, 0x7a,
-  0x47, 0xdf, 0xec, 0xfe, 0xc6, 0x9c, 0x71, 0x1e, 0xff, 0x98, 0x7f, 0xda,
-  0x9a, 0xce, 0x3e, 0x1f, 0x53, 0x64, 0xd0, 0xc7, 0xd4, 0x75, 0x94, 0x03,
-  0x09, 0xf3, 0x74, 0xdd, 0x04, 0xba, 0x3c, 0x65, 0x2f, 0x11, 0xf9, 0x01,
-  0x30, 0x5e, 0xd7, 0x39, 0x21, 0xde, 0x36, 0x6d, 0xb4, 0xed, 0x6e, 0xf8,
-  0xac, 0xed, 0x6e, 0xb0, 0x39, 0xc7, 0x71, 0x25, 0xed, 0x58, 0x2a, 0xbb,
-  0xbf, 0xd3, 0xc7, 0x92, 0xad, 0xd1, 0xf9, 0xbb, 0xe3, 0x6f, 0xce, 0xb6,
-  0x1f, 0x72, 0x53, 0xfa, 0xf2, 0xdf, 0x0e, 0x0a, 0xa8, 0xbc, 0x8a, 0x50,
-  0x7d, 0xdc, 0x77, 0x98, 0x27, 0xdf, 0x8c, 0x46, 0x83, 0xc3, 0xf3, 0x13,
-  0xd8, 0x02, 0xa3, 0x91, 0xf9, 0xcb, 0x2a, 0x6e, 0xc1, 0xa1, 0x94, 0x0e,
-  0x18, 0x7c, 0x0f, 0x5d, 0x4f, 0x65, 0x3f, 0xf3, 0x7c, 0x53, 0x94, 0x22,
-  0xbf, 0x12, 0xfa, 0x25, 0xae, 0x53, 0xa2, 0x69, 0xdb, 0xf4, 0x81, 0xae,
-  0xd5, 0x73, 0x7e, 0xb2, 0x83, 0x6f, 0x11, 0x6a, 0x16, 0x03, 0x8a, 0x7b,
-  0x10, 0x96, 0x61, 0xe1, 0x16, 0xd2, 0x7a, 0x5c, 0x19, 0x56, 0xc5, 0xed,
-  0x1a, 0xf3, 0x8f, 0xae, 0x13, 0x0a, 0xda, 0x49, 0xd4, 0x6e, 0x45, 0x9a,
-  0x04, 0x08, 0x2b, 0x08, 0x09, 0x2f, 0x84, 0xa7, 0x5d, 0x07, 0x1c, 0xec,
-  0x34, 0xa6, 0xd6, 0xa1, 0x4a, 0x9c, 0x23, 0x31, 0xb9, 0xba, 0x7e, 0x91,
-  0xcd, 0xc1, 0x32, 0x39, 0xd8, 0x04, 0x50, 0xa7, 0x28, 0x97, 0xd7, 0x37,
-  0xa1, 0x0b, 0xa2, 0x53, 0xbe, 0x49, 0x34, 0x29, 0xec, 0x27, 0xd3, 0xcb,
-  0x60, 0x0b, 0xe2, 0x45, 0xd5, 0x7b, 0xaa, 0x8c, 0x22, 0x44, 0xac, 0xde,
-  0x30, 0x00, 0x68, 0xfa, 0x4f, 0x29, 0x7a, 0xb0, 0x46, 0x03, 0x19, 0x73,
-  0xf4, 0x14, 0x9e, 0xb4, 0xa2, 0x99, 0xcd, 0xe5, 0xaf, 0x69, 0x71, 0x0f,
-  0x8f, 0xa9, 0xb8, 0xf0, 0x91, 0xab, 0x67, 0xf7, 0x74, 0x7b, 0xa3, 0x37,
-  0xd5, 0x84, 0x6b, 0xe4, 0xbe, 0xd4, 0x8a, 0xbc, 0xeb, 0x92, 0x2c, 0x50,
-  0x94, 0x51, 0x2b, 0x5c, 0x27, 0x83, 0xa2, 0xaf, 0x6d, 0xf4, 0x8d, 0x45,
-  0x2c, 0xb1, 0xb2, 0xb4, 0x11, 0x4c, 0x9b, 0xec, 0x82, 0x98, 0x28, 0xe2,
-  0x9a, 0x43, 0x5b, 0xc6, 0x7c, 0x28, 0x67, 0xcb, 0x46, 0x02, 0x90, 0xe4,
-  0x1b, 0xa5, 0x64, 0x88, 0x6d, 0x0b, 0x26, 0x42, 0xd3, 0x0e, 0x88, 0x9a,
-  0x1c, 0x85, 0x98, 0x6d, 0x57, 0x77, 0x67, 0xe8, 0x62, 0x2d, 0x1c, 0x4c,
-  0x14, 0x17, 0x05, 0x4d, 0xac, 0xd7, 0xd0, 0x02, 0xe8, 0xa4, 0xdb, 0x32,
-  0x5e, 0xfe, 0x91, 0xd6, 0x4f, 0xd7, 0xa9, 0x35, 0x3d, 0xea, 0x63, 0x27,
-  0xc9, 0xed, 0xd7, 0xfa, 0xea, 0xa8, 0x8d, 0x71, 0xe6, 0x97, 0x70, 0x9b,
-  0x28, 0x5e, 0x60, 0x4c, 0xc7, 0x64, 0x7c, 0x6f, 0xbf, 0xc5, 0x9f, 0x49,
-  0x81, 0xe8, 0xb1, 0x8a, 0xf0, 0x63, 0x89, 0x33, 0xdc, 0x72, 0x0c, 0xd7,
-  0x21, 0x52, 0xda, 0x5f, 0xea, 0x34, 0xfd, 0x7d, 0x06, 0xf4, 0x59, 0x7c,
-  0x8d, 0x59, 0xc5, 0xf7, 0xd8, 0x32, 0x04, 0x0c, 0x89, 0x35, 0x1d, 0xe2,
-  0xa1, 0x60, 0x03, 0x53, 0x34, 0xdd, 0x8e, 0x4a, 0xd5, 0x23, 0x72, 0xb9,
-  0xa5, 0x5c, 0x27, 0x86, 0x4f, 0xa8, 0xf7, 0x19, 0x9b, 0xb6, 0x51, 0xae,
-  0x2f, 0xe5, 0xe4, 0x16, 0x67, 0xf8, 0x88, 0x09, 0x71, 0xe3, 0x77, 0x3f,
-  0x0c, 0x2c, 0x3b, 0x0c, 0x86, 0xa9, 0x37, 0x6a, 0x04, 0x93, 0xbc, 0x81,
-  0x99, 0xed, 0xfa, 0x41, 0xfe, 0x62, 0x3e, 0xf2, 0x43, 0x5e, 0x18, 0xdd,
-  0xb0, 0xde, 0xf6, 0x15, 0xa5, 0xf0, 0xec, 0x56, 0x9b, 0xb5, 0xb1, 0xc3,
-  0x8c, 0xd8, 0x71, 0x78, 0x3d, 0xd2, 0x9c, 0x39, 0x6a, 0xa3, 0x5e, 0xd0,
-  0xc4, 0x45, 0x95, 0x6d, 0xc5, 0x9e, 0xfb, 0x45, 0x90, 0xeb, 0xc0, 0xe9,
-  0x5f, 0x2c, 0x4a, 0xae, 0x24, 0x39, 0xdf, 0x74, 0x84, 0xea, 0x2f, 0xb8,
-  0x30, 0x3f, 0xae, 0x0e, 0x26, 0x2b, 0x70, 0x5e, 0xaf, 0xac, 0x88, 0x94,
-  0xa1, 0x84, 0x64, 0xeb, 0x86, 0xb1, 0x68, 0x76, 0x31, 0xc6, 0xad, 0x67,
-  0x66, 0x64, 0xcd, 0x62, 0x6b, 0x6f, 0x9b, 0x29, 0xd4, 0xa5, 0x10, 0x60,
-  0xe9, 0xae, 0xfb, 0xd0, 0x91, 0x43, 0x10, 0xc3, 0x04, 0x47, 0x54, 0x1d,
-  0x5e, 0x00, 0xfa, 0xa3, 0xe2, 0x0e, 0xf9, 0x75, 0xa1, 0x55, 0xa4, 0x8d,
-  0x28, 0x0b, 0x82, 0x58, 0xd4, 0x74, 0xb6, 0xae, 0x67, 0x19, 0xd0, 0x9f,
-  0x05, 0xf1, 0xc2, 0x21, 0x0b, 0x8d, 0x42, 0x2f, 0xd6, 0x2b, 0x2e, 0xec,
-  0xf6, 0x92, 0xa6, 0x6a, 0x66, 0x6e, 0x36, 0x1d, 0x90, 0x00, 0xb9, 0xae,
-  0x4a, 0x73, 0x45, 0x56, 0x11, 0xf6, 0x2c, 0x31, 0x29, 0xa0, 0xea, 0x67,
-  0xc5, 0x6d, 0x5e, 0x95, 0x05, 0x18, 0xca, 0x6e, 0xd3, 0x2a, 0x47, 0xb8,
-  0xbf, 0xf7, 0xed, 0xd9, 0xdb, 0xe3, 0x9e, 0xef, 0x16, 0xb9, 0xca, 0xc5,
-  0x97, 0x4e, 0xeb, 0xd7, 0x75, 0x54, 0xeb, 0x6a, 0x46, 0xfc, 0x86, 0xe6,
-  0x4e, 0x37, 0x4a, 0x0e, 0x2d, 0xeb, 0xad, 0x9c, 0x24, 0x52, 0xeb, 0x35,
-  0x4a, 0x6e, 0x74, 0x49, 0xc2, 0x01, 0xc8, 0xe5, 0xdc, 0x80, 0x7c, 0xde,
-  0x6d, 0xb0, 0x10, 0x89, 0x03, 0x3f, 0x82, 0x35, 0x10, 0x41, 0xea, 0x5c,
-  0xfa, 0x75, 0x2b, 0x12, 0xaf, 0xb6, 0x05, 0x69, 0xfa, 0xbc, 0x01, 0x56,
-  0x95, 0x2e, 0xdc, 0x9c, 0xdf, 0x93, 0x61, 0xb3, 0xd9, 0xda, 0x75, 0xc9,
-  0x66, 0x4d, 0xc6, 0x78, 0xb3, 0xa9, 0xd3, 0x0b, 0xd4, 0xa8, 0x93, 0x00,
-  0x61, 0x29, 0xb1, 0x15, 0x9f, 0xe6, 0x5d, 0xcd, 0x9f, 0x70, 0xad, 0x73,
-  0xe3, 0xee, 0xf4, 0x1d, 0xf0, 0xe9, 0x0b, 0x8a, 0xd2, 0x86, 0x5c, 0x25,
-  0xa9, 0x4b, 0xe6, 0x69, 0x57, 0x21, 0x6b, 0x23, 0x0a, 0x88, 0x31, 0x35,
-  0x74, 0x2c, 0x9a, 0xcf, 0x97, 0x13, 0x61, 0x8d, 0x71, 0xb1, 0x55, 0xc1,
-  0x54, 0x0a, 0xf5, 0x00, 0xdf, 0x52, 0xbc, 0x14, 0x85, 0x77, 0x3f, 0x53,
-  0x93, 0x2b, 0xe8, 0xca, 0xfa, 0xcc, 0x49, 0xa7, 0x9c, 0x4d, 0xb9, 0x51,
-  0x0e, 0x88, 0x2e, 0xdc, 0x02, 0x2c, 0xf5, 0x53, 0x7d, 0xa5, 0x91, 0x16,
-  0x37, 0x71, 0xa0, 0x8c, 0xb2, 0x31, 0xec, 0x40, 0x29, 0x76, 0xc9, 0x98,
-  0xc6, 0x8f, 0x89, 0xe0, 0x2c, 0xc3, 0x8f, 0x92, 0xe1, 0x85, 0x4a, 0xf2,
-  0x41, 0x3f, 0x91, 0xf9, 0x74, 0xbc, 0xfc, 0xa0, 0x5d, 0x23, 0x8c, 0x0e,
-  0x5b, 0x36, 0xf6, 0xe6, 0x2a, 0xa6, 0x7c, 0x31, 0x12, 0xa5, 0xae, 0x30,
-  0x75, 0xc6, 0x4c, 0x6c, 0x3d, 0x92, 0x66, 0x70, 0xec, 0xda, 0x21, 0xfa,
-  0x83, 0x5b, 0x24, 0x29, 0x0a, 0xa5, 0x3c, 0xb3, 0x6b, 0xd8, 0x35, 0x59,
-  0x89, 0x99, 0x60, 0xb5, 0xca, 0xef, 0x22, 0xa1, 0x38, 0xab, 0xa5, 0x50,
-  0x92, 0x7f, 0x23, 0xfd, 0x90, 0xfe, 0xa9, 0xc1, 0x63, 0x29, 0x2b, 0x02,
-  0xc0, 0x7e, 0x59, 0x83, 0x7a, 0xaf, 0xa9, 0xd2, 0x89, 0xfb, 0xcb, 0x20,
-  0xad, 0x27, 0x79, 0xae, 0x24, 0xe5, 0x14, 0x27, 0xcc, 0x08, 0x1a, 0x1b,
-  0x25, 0x34, 0xb1, 0x5e, 0x7b, 0xa5, 0x06, 0x9e, 0x96, 0xec, 0xe4, 0x65,
-  0xec, 0x09, 0x57, 0x70, 0x05, 0x92, 0x85, 0xfc, 0x52, 0xae, 0x72, 0x47,
-  0x8c, 0xb7, 0x5d, 0x29, 0xce, 0x56, 0xd8, 0xb7, 0xc6, 0x04, 0xdf, 0xf3,
-  0x6d, 0x70, 0x9d, 0x82, 0x01, 0x15, 0x01, 0xaa, 0x1b, 0xdc, 0xa2, 0xe6,
-  0x99, 0xfd, 0xe1, 0x9a, 0xc2, 0xac, 0x7e, 0x24, 0xe8, 0x79, 0xc7, 0x42,
-  0x61, 0x7a, 0x9e, 0x98, 0x7d, 0x32, 0x32, 0xfa, 0x93, 0x56, 0x74, 0xe1,
-  0x25, 0x38, 0x3c, 0x3d, 0x7f, 0x97, 0x80, 0x16, 0x89, 0x6b, 0x80, 0xd7,
-  0x5c, 0xd6, 0x01, 0x3f, 0x86, 0xae, 0x0c, 0x83, 0x39, 0xc4, 0x7d, 0xda,
-  0x2a, 0x4f, 0x57, 0x11, 0x0b, 0x8b, 0x61, 0x6e, 0x05, 0x58, 0x41, 0xd4,
-  0x7e, 0x11, 0xed, 0x4f, 0x6d, 0x8c, 0xee, 0x70, 0xcc, 0xf7, 0xbc, 0xcf,
-  0x42, 0xd2, 0xa2, 0x3a, 0xb7, 0x36, 0x8e, 0xb7, 0xbb, 0xbc, 0x52, 0x84,
-  0x96, 0x81, 0xea, 0x1a, 0x08, 0xf5, 0x26, 0xb3, 0xdc, 0x53, 0x62, 0xdc,
-  0x59, 0x2e, 0x35, 0xa5, 0x65, 0x67, 0xb4, 0x06, 0x98, 0x06, 0x34, 0xa1,
-  0xb9, 0x7e, 0x80, 0xf5, 0xa8, 0x58, 0x14, 0x41, 0xfe, 0xb9, 0x9d, 0xef,
-  0xa8, 0x29, 0x1a, 0x40, 0x8e, 0x1f, 0x95, 0x24, 0x46, 0xeb, 0x31, 0x5c,
-  0xb3, 0xc4, 0xef, 0xfa, 0xfc, 0xd9, 0xf1, 0x92, 0x64, 0x44, 0xb7, 0x26,
-  0x35, 0xaf, 0x2f, 0xeb, 0x4e, 0xfc, 0x04, 0x7d, 0x4f, 0x1c, 0x61, 0x4c,
-  0x7c, 0x43, 0x8c, 0x5c, 0x59, 0x3a, 0x37, 0xca, 0x41, 0xa1, 0x69, 0x03,
-  0xe4, 0xfe, 0x25, 0x70, 0x67, 0x77, 0x2a, 0x97, 0xa9, 0x48, 0x2d, 0xa7,
-  0x34, 0x74, 0x52, 0x09, 0xf8, 0x1b, 0x80, 0xb2, 0x71, 0xe3, 0xd2, 0x7a,
-  0x94, 0xe8, 0xba, 0x25, 0x46, 0x34, 0x82, 0xa3, 0x35, 0x6d, 0x98, 0x7d,
-  0x94, 0x1b, 0xb1, 0xd5, 0xed, 0xcc, 0x04, 0x4c, 0x6e, 0x96, 0xc5, 0x47,
-  0xd3, 0x85, 0x30, 0x83, 0x55, 0x81, 0xbf, 0x39, 0x0a, 0x90, 0xa6, 0xcc,
-  0x9b, 0x2b, 0xd9, 0xe8, 0x52, 0x3f, 0xda, 0x28, 0x7c, 0xb7, 0x70, 0xe6,
-  0x09, 0x0f, 0x68, 0xcb, 0x06, 0x8b, 0xf5, 0x6e, 0x6a, 0x4b, 0x1e, 0xa5,
-  0x8d, 0x9b, 0xc0, 0x28, 0xb8, 0xdd, 0xad, 0xb4, 0xd4, 0x9e, 0x64, 0xcb,
-  0xe4, 0xda, 0x43, 0x56, 0xb1, 0x2e, 0xa7, 0xac, 0x3f, 0xe4, 0xa4, 0x11,
-  0x4b, 0x24, 0x10, 0x88, 0xcb, 0x9a, 0x73, 0xc2, 0x64, 0x59, 0x41, 0xb7,
-  0xe1, 0x51, 0xaa, 0x47, 0x7a, 0xd2, 0x4e, 0xa7, 0x5e, 0xb7, 0x0f, 0xc4,
-  0x6b, 0xeb, 0x52, 0xaf, 0x05, 0x90, 0x52, 0xbb, 0x22, 0x8b, 0x54, 0xf6,
-  0xa8, 0x55, 0x6f, 0x25, 0x22, 0xb9, 0x5c, 0x62, 0x57, 0x56, 0xd8, 0xc6,
-  0xe7, 0x74, 0x52, 0x45, 0x1e, 0xfc, 0x13, 0x67, 0xc9, 0x8d, 0xc5, 0x9b,
-  0x28, 0xfb, 0xc3, 0xce, 0x24, 0x15, 0x2b, 0xe5, 0xa1, 0x5f, 0xe0, 0xea,
-  0x9d, 0x91, 0x3e, 0x24, 0x0a, 0x3d, 0x49, 0xf8, 0xae, 0x2b, 0x07, 0x75,
-  0xa4, 0x5d, 0xb7, 0xd7, 0x55, 0xf2, 0x48, 0x41, 0xd8, 0x96, 0x64, 0xef,
-  0x48, 0xee, 0x99, 0xff, 0x74, 0x9b, 0x7b, 0xb4, 0x0c, 0x84, 0x92, 0x62,
-  0x0d, 0x78, 0x65, 0xf7, 0x5b, 0xe1, 0xe1, 0xfa, 0xf5, 0x42, 0xd0, 0x02,
-  0x5a, 0xad, 0xb4, 0x8b, 0xc9, 0xc1, 0xa2, 0x25, 0x06, 0x15, 0x21, 0xf4,
-  0xfb, 0x08, 0x41, 0xfa, 0x9e, 0x74, 0x39, 0x9f, 0x46, 0xd3, 0xee, 0x75,
-  0x69, 0xa5, 0xde, 0x91, 0x9c, 0x01, 0x5a, 0x0b, 0xe5, 0xfb, 0x38, 0x79,
-  0x6d, 0xf6, 0x18, 0xa9, 0xac, 0xe4, 0xb9, 0xfd, 0xfa, 0x3e, 0x59, 0xb1,
-  0xb8, 0x00, 0x35, 0xdb, 0xf8, 0x2e, 0xec, 0x7c, 0x2a, 0x22, 0xeb, 0x93,
-  0x31, 0x11, 0x3b, 0xdb, 0xd0, 0xcb, 0x9a, 0xe0, 0xe0, 0xbb, 0x10, 0xd9,
-  0xc7, 0xfd, 0x12, 0xa4, 0x52, 0x22, 0xf5, 0xf6, 0x66, 0x69, 0x46, 0x4b,
-  0x2b, 0xcd, 0xf5, 0xd5, 0x6c, 0x2d, 0xeb, 0x2a, 0x03, 0x60, 0x91, 0x3a,
-  0xec, 0xf5, 0x38, 0x60, 0x17, 0x63, 0x5f, 0x76, 0x9d, 0x99, 0x83, 0xc8,
-  0x99, 0x43, 0xe3, 0xaa, 0xfc, 0x98, 0xf1, 0xa6, 0x83, 0x89, 0x01, 0xba,
-  0x1c, 0x55, 0xa4, 0x38, 0xf4, 0x98, 0xcf, 0xa6, 0x16, 0xc0, 0x18, 0xd1,
-  0x67, 0xa9, 0xf4, 0x8a, 0xe4, 0xd9, 0x3b, 0x69, 0x98, 0xbb, 0x34, 0x77,
-  0xa5, 0x83, 0xe6, 0xe5, 0x9a, 0x10, 0x3b, 0x57, 0xfc, 0xe4, 0xcb, 0x16,
-  0x70, 0xc5, 0x66, 0x63, 0xc7, 0xbe, 0x75, 0xee, 0x2d, 0x5c, 0x73, 0xf5,
-  0xc9, 0xb7, 0xab, 0xee, 0x9f, 0xfc, 0xc8, 0x92, 0x3e, 0xbe, 0xa2, 0x8a,
-  0xd9, 0x4b, 0xf0, 0x84, 0x25, 0x2f, 0xcd, 0xa6, 0x62, 0x9f, 0x18, 0x05,
-  0xb5, 0xba, 0xee, 0x2e, 0x54, 0x06, 0x1a, 0xa8, 0xe9, 0x31, 0xe5, 0x4c,
-  0xc2, 0x84, 0x2d, 0x37, 0xd2, 0xc5, 0x39, 0xcd, 0x61, 0xea, 0xaa, 0x75,
-  0x09, 0x13, 0x33, 0x38, 0x06, 0xcc, 0x86, 0x09, 0x0f, 0xb9, 0xf3, 0xe3,
-  0xb0, 0x05, 0x0a, 0x25, 0x9c, 0x56, 0x07, 0x44, 0x2b, 0x79, 0xed, 0xc0,
-  0x6a, 0xff, 0x46, 0xa0, 0x60, 0xa3, 0xd4, 0x36, 0x84, 0x08, 0xe3, 0x2f,
-  0x05, 0x6a, 0x27, 0xd7, 0xc8, 0xb0, 0x59, 0x23, 0x4c, 0x06, 0x61, 0x89,
-  0x44, 0xa8, 0x56, 0x9a, 0x7f, 0x27, 0x30, 0x49, 0x74, 0x72, 0x4c, 0x56,
-  0x4b, 0xc4, 0x22, 0x54, 0xda, 0x04, 0x8c, 0x31, 0x17, 0x76, 0x59, 0x86,
-  0x6e, 0x89, 0x79, 0x9d, 0x2a, 0x2c, 0x4b, 0x09, 0x09, 0x2d, 0xbf, 0x59,
-  0xe4, 0xd4, 0x53, 0x8f, 0x84, 0x25, 0x4f, 0x2b, 0xf9, 0xe8, 0x8f, 0x6c,
-  0x79, 0x8c, 0x96, 0x1e, 0x0e, 0x0b, 0x85, 0x0d, 0xd7, 0x08, 0x6f, 0x32,
-  0x7a, 0x93, 0xb8, 0x87, 0xfa, 0xde, 0xdf, 0x0f, 0x3e, 0xdf, 0xd5, 0x8c,
-  0x77, 0x8a, 0x76, 0xf9, 0xcf, 0xa0, 0xe2, 0x6b, 0x44, 0x8f, 0xa0, 0xe7,
-  0xcc, 0x4f, 0xed, 0xa3, 0xa1, 0x0c, 0x04, 0xd5, 0x21, 0x41, 0x5f, 0x9e,
-  0x50, 0xd0, 0xbb, 0x4d, 0x3b, 0xe4, 0xdc, 0x4a, 0xcd, 0x0a, 0x2f, 0x42,
-  0x1d, 0x43, 0x7e, 0x4e, 0xbd, 0xab, 0x47, 0x16, 0x83, 0x71, 0xeb, 0x15,
-  0x95, 0xdb, 0x04, 0x8f, 0x59, 0xc4, 0x1f, 0x41, 0xaf, 0x45, 0x9c, 0x18,
-  0x0c, 0x66, 0x93, 0xed, 0x66, 0xcb, 0x9b, 0xa0, 0x98, 0x06, 0x6f, 0x6d,
-  0xac, 0xa3, 0x39, 0x30, 0x3d, 0x70, 0xe1, 0xdb, 0xda, 0xbd, 0xf9, 0xda,
-  0x8c, 0xb5, 0xbd, 0x17, 0xc3, 0xa7, 0xad, 0x73, 0xd2, 0xcc, 0xe6, 0x83,
-  0xbb, 0xf1, 0x03, 0xb1, 0x8f, 0xcb, 0xd3, 0xb7, 0xc9, 0x7c, 0x89, 0xf2,
-  0xa1, 0x42, 0xdd, 0x7a, 0x3f, 0xcb, 0xd4, 0x0d, 0x4d, 0xee, 0x1d, 0x76,
-  0x17, 0xde, 0xc0, 0xec, 0x0c, 0xf1, 0xdc, 0x11, 0x27, 0xbf, 0xcd, 0x20,
-  0x15, 0xab, 0x5f, 0x58, 0xca, 0x12, 0x6a, 0x11, 0xee, 0x6c, 0xca, 0x00,
-  0x9f, 0xe5, 0xd1, 0x34, 0x1f, 0x45, 0xd9, 0x66, 0x9f, 0xb2, 0xc9, 0x12,
-  0x81, 0x6a, 0x52, 0x10, 0x89, 0xf6, 0x67, 0xbd, 0x03, 0xdd, 0x73, 0x9a,
-  0x8b, 0x9b, 0xdc, 0xfc, 0xa0, 0x3b, 0x19, 0xae, 0xaa, 0x87, 0x0c, 0x9e,
-  0x47, 0x1f, 0xb8, 0xcf, 0x18, 0x16, 0x85, 0xdf, 0xb5, 0x7f, 0x15, 0xc4,
-  0x8a, 0x01, 0xee, 0xa7, 0x0b, 0xd1, 0xec, 0xa7, 0xfc, 0xba, 0x60, 0x25,
-  0xe0, 0x6d, 0x3e, 0xa9, 0xca, 0xba, 0xbc, 0x62, 0xd4, 0x9a, 0xa7, 0x1d,
-  0x9c, 0x9c, 0x8c, 0x92, 0xbb, 0x6c, 0xac, 0x59, 0xb2, 0xc3, 0xd0, 0x99,
-  0xcc, 0x52, 0x84, 0x02, 0x24, 0x55, 0x9e, 0x35, 0x34, 0x6b, 0x1a, 0x12,
-  0x25, 0x62, 0x1f, 0x14, 0xee, 0x1d, 0x64, 0xc5, 0xb5, 0x31, 0x57, 0xa1,
-  0xc4, 0x53, 0xc9, 0x9a, 0x19, 0xae, 0xa6, 0x45, 0x56, 0x46, 0x02, 0xe3,
-  0xdc, 0x01, 0xbd, 0x56, 0x78, 0x9f, 0xe0, 0x0e, 0x1f, 0xa7, 0x52, 0x7c,
-  0x85, 0xfd, 0x03, 0x46, 0xec, 0x90, 0x9a, 0x22, 0x8e, 0xcb, 0x8f, 0xe4,
-  0x32, 0x0b, 0x32, 0x57, 0xb4, 0xfc, 0x74, 0xbb, 0x82, 0x06, 0x8a, 0xd7,
-  0x4c, 0xcb, 0x0a, 0x68, 0x24, 0xaf, 0x30, 0x02, 0x55, 0xb4, 0x59, 0x56,
-  0xe4, 0x33, 0x06, 0xe7, 0x64, 0x28, 0x4f, 0xef, 0x6e, 0x4a, 0x2e, 0x23,
-  0x83, 0x69, 0xa6, 0xab, 0x09, 0x39, 0xb7, 0x9c, 0xe4, 0x23, 0xbc, 0xdb,
-  0x52, 0xcf, 0x51, 0xef, 0x1b, 0x7f, 0xa1, 0xa2, 0xfc, 0x74, 0xb2, 0x1e,
-  0x2e, 0xc5, 0x54, 0xdc, 0x33, 0xaf, 0xf3, 0xeb, 0x15, 0x55, 0x9b, 0xd8,
-  0x75, 0xa4, 0x85, 0x70, 0x59, 0x71, 0xe4, 0x1e, 0xc9, 0xa5, 0x59, 0xf1,
-  0x29, 0x0d, 0xaa, 0x91, 0x45, 0x4a, 0xa2, 0xf3, 0x7d, 0x17, 0xdb, 0x7d,
-  0xbf, 0x08, 0xc1, 0xf2, 0xcb, 0xaa, 0x44, 0xad, 0x55, 0xff, 0xbc, 0xbe,
-  0xd8, 0x23, 0x10, 0x8d, 0xc1, 0x3a, 0x2d, 0x2f, 0x20, 0xa4, 0x78, 0x48,
-  0xe7, 0x8b, 0x7b, 0xec, 0x35, 0xa4, 0x15, 0x01, 0xa6, 0x78, 0x51, 0xd9,
-  0xa9, 0x2d, 0x59, 0x4a, 0xeb, 0xd3, 0x8e, 0x79, 0xf9, 0x67, 0xb7, 0xa4,
-  0x1f, 0xec, 0x0f, 0xc6, 0x59, 0x4a, 0x95, 0x1a, 0x5e, 0x36, 0xa4, 0x31,
-  0xc5, 0xd3, 0x54, 0x38, 0x35, 0x23, 0x92, 0xa8, 0xf2, 0x35, 0xbf, 0x7b,
-  0x09, 0x65, 0x8b, 0xd6, 0xf6, 0xec, 0xf0, 0xfd, 0xe5, 0xb7, 0xc9, 0xfe,
-  0x70, 0xf7, 0x51, 0x69, 0x2a, 0x90, 0x08, 0xad, 0x36, 0x74, 0xf5, 0xe8,
-  0x44, 0x95, 0xc5, 0x5f, 0x97, 0x45, 0x9b, 0x05, 0x3e, 0xe6, 0xa5, 0x17,
-  0x05, 0x4a, 0xef, 0x5f, 0x8a, 0x4b, 0x74, 0x71, 0xd6, 0x7e, 0xa9, 0x90,
-  0xc1, 0x00, 0x56, 0x5c, 0xf5, 0x50, 0x40, 0xb3, 0x8e, 0xf2, 0x75, 0xb4,
-  0x3a, 0x2b, 0x74, 0x42, 0x8a, 0xd8, 0x46, 0x3d, 0x06, 0xf2, 0xf3, 0xf3,
-  0xa1, 0xb2, 0x45, 0xa7, 0xa0, 0xc8, 0x5e, 0xbc, 0x39, 0xea, 0x34, 0xf7,
-  0xfc, 0xb3, 0x67, 0xbb, 0xbf, 0x23, 0x56, 0xaf, 0x24, 0x07, 0x89, 0x38,
-  0x12, 0xa2, 0x34, 0x3a, 0x3f, 0x54, 0x94, 0xc6, 0xaa, 0xae, 0x86, 0x52,
-  0x1e, 0xf2, 0x33, 0xed, 0xeb, 0x66, 0x4a, 0xb8, 0x2d, 0x2d, 0x6a, 0xc3,
-  0xa8, 0x0c, 0x1a, 0xd1, 0x7f, 0xfe, 0x57, 0x98, 0x65, 0xfb, 0x97, 0x9f,
-  0x11, 0x17, 0x40, 0x69, 0x2c, 0x0b, 0xf9, 0x57, 0x29, 0x53, 0xbb, 0xfb,
-  0x98, 0xce, 0xf3, 0xe6, 0x1f, 0x36, 0x13, 0x5b, 0xbb, 0x02, 0x69, 0x59,
-  0x41, 0xac, 0x5a, 0xc1, 0x9d, 0x4a, 0x57, 0x2c, 0xbd, 0xd3, 0x65, 0xad,
-  0xa4, 0x18, 0xb1, 0x55, 0x09, 0x74, 0x16, 0xa4, 0xa6, 0xc3, 0x74, 0x55,
-  0x01, 0x1a, 0x2d, 0xc3, 0x20, 0x25, 0x0d, 0xd4, 0x61, 0x4e, 0x6e, 0x72,
-  0x06, 0x59, 0x61, 0x04, 0xa4, 0x8c, 0x22, 0x99, 0x39, 0x2f, 0x56, 0x38,
-  0x30, 0x05, 0x4a, 0xf4, 0x9f, 0x66, 0x05, 0xfa, 0xcd, 0x5d, 0xf9, 0x5f,
-  0x6d, 0x67, 0xa6, 0x51, 0x31, 0xa8, 0xbf, 0x1f, 0xfe, 0xb0, 0x47, 0xe9,
-  0x41, 0xbd, 0x6e, 0x13, 0x8c, 0xf4, 0xb7, 0xab, 0x6a, 0x35, 0xa4, 0x75,
-  0x94, 0xaa, 0xfa, 0x41, 0x4a, 0x3e, 0xee, 0x93, 0xda, 0xf8, 0x5f, 0xa8,
-  0xdc, 0xfd, 0x97, 0xbd, 0xc1, 0xb3, 0x9f, 0xed, 0x47, 0xff, 0xb0, 0xf7,
-  0xe1, 0x0f, 0xfb, 0xbd, 0x58, 0xf6, 0x97, 0xe3, 0x02, 0xf0, 0xa0, 0x8a,
-  0xa4, 0xd1, 0x16, 0xf7, 0x92, 0xb2, 0x21, 0xa1, 0x46, 0x57, 0x32, 0x0b,
-  0x05, 0xe1, 0x22, 0x84, 0x49, 0xe4, 0xba, 0x1a, 0xb2, 0xc7, 0xd8, 0xa9,
-  0xaa, 0x5a, 0x36, 0x4b, 0x85, 0xc3, 0x5d, 0xc9, 0xef, 0x2b, 0x63, 0x02,
-  0x9d, 0x10, 0x49, 0x26, 0x08, 0x84, 0x61, 0x91, 0xb5, 0xb7, 0x07, 0xd1,
-  0xa7, 0x28, 0xe7, 0x46, 0x38, 0x1b, 0x02, 0x90, 0x32, 0x17, 0x5a, 0x9a,
-  0x74, 0x26, 0x7d, 0x3c, 0xb6, 0x3f, 0x29, 0xb2, 0x20, 0x2b, 0x4b, 0x53,
-  0x38, 0xd9, 0x7c, 0x53, 0x71, 0x50, 0xb6, 0x22, 0x00, 0x7c, 0x41, 0xf0,
-  0xc8, 0x35, 0x08, 0x97, 0xe0, 0x48, 0x07, 0x18, 0xa4, 0xbf, 0x82, 0x39,
-  0xcc, 0x43, 0xdc, 0xf0, 0xb5, 0x62, 0x1a, 0xcc, 0x5d, 0x11, 0x5f, 0xfe,
-  0x99, 0x04, 0x61, 0x28, 0xe1, 0x1f, 0x35, 0x9b, 0xca, 0x88, 0x2c, 0x4b,
-  0xc7, 0x54, 0xd1, 0xaa, 0x55, 0x1d, 0x04, 0xe5, 0xbd, 0xe9, 0xd2, 0x19,
-  0x3b, 0xf6, 0xa9, 0xb4, 0x5e, 0x31, 0x21, 0xfe, 0x54, 0x78, 0x93, 0x20,
-  0x13, 0x85, 0xc9, 0x59, 0x5f, 0xcc, 0x67, 0x40, 0x28, 0xd2, 0x26, 0x1b,
-  0x78, 0x29, 0xb2, 0xc8, 0xc8, 0xc5, 0x4f, 0x35, 0x65, 0x70, 0xc2, 0x95,
-  0x42, 0x10, 0xe0, 0x1b, 0x04, 0x51, 0x49, 0xba, 0xa2, 0xa6, 0xf7, 0x46,
-  0x1a, 0x32, 0x1b, 0xe7, 0xd0, 0x26, 0x42, 0xa8, 0x8f, 0x40, 0xa4, 0x8d,
-  0xd9, 0x6a, 0x9b, 0x83, 0xcd, 0x64, 0xcb, 0x5a, 0x76, 0xd3, 0xb4, 0xbe,
-  0xd9, 0x8e, 0x39, 0x22, 0x9d, 0xef, 0xcf, 0x09, 0xaa, 0xb1, 0xb8, 0x1e,
-  0xe8, 0xce, 0x64, 0x09, 0xb5, 0xee, 0xba, 0x3e, 0x43, 0x7c, 0x85, 0xf1,
-  0x82, 0x03, 0x0f, 0xe4, 0xd2, 0xfa, 0xd9, 0x00, 0xee, 0x0d, 0xfc, 0x3c,
-  0x19, 0xfc, 0x47, 0x78, 0x2f, 0xc8, 0xa3, 0x0c, 0xf9, 0x1a, 0x70, 0x46,
-  0x94, 0xbb, 0x48, 0x29, 0x9a, 0x97, 0xbc, 0x5c, 0xdc, 0x54, 0x46, 0xfd,
-  0x0b, 0x13, 0xaf, 0x46, 0xdf, 0x26, 0xcc, 0x80, 0x68, 0x9e, 0xe2, 0x67,
-  0xec, 0xee, 0x58, 0x38, 0x96, 0xbf, 0xdf, 0x91, 0x34, 0x8f, 0xd0, 0x24,
-  0x83, 0xb4, 0x1e, 0x04, 0xaa, 0x0e, 0xaa, 0x6b, 0x7b, 0xb5, 0x34, 0x48,
-  0xf3, 0x24, 0x83, 0x84, 0x90, 0x8c, 0x14, 0x5b, 0x2b, 0x26, 0x28, 0x37,
-  0x99, 0xec, 0x0c, 0x87, 0x3b, 0x24, 0xb3, 0x76, 0xcc, 0x1f, 0x62, 0xce,
-  0x00, 0x77, 0xdb, 0x2d, 0x7f, 0x63, 0x76, 0x39, 0x7d, 0x8b, 0x7c, 0x40,
-  0x52, 0x2d, 0xce, 0x39, 0xcc, 0xeb, 0xbf, 0x2d, 0x81, 0x45, 0xad, 0x8c,
-  0x3a, 0x59, 0x71, 0x5e, 0xef, 0xbc, 0x73, 0x49, 0x06, 0x45, 0x67, 0xd8,
-  0xb9, 0x5e, 0x0b, 0x7f, 0x44, 0x73, 0xd3, 0xc9, 0x37, 0x63, 0x30, 0x39,
-  0x30, 0xc2, 0x79, 0xa3, 0xd4, 0x5d, 0x48, 0xa9, 0x4e, 0xd7, 0x1a, 0x74,
-  0x4f, 0xf7, 0xdb, 0x8e, 0x8f, 0x45, 0x5e, 0x18, 0x13, 0xc3, 0x28, 0xc7,
-  0xa0, 0x65, 0x24, 0x2c, 0x5e, 0x98, 0xd0, 0xc3, 0xde, 0xb4, 0xb0, 0xfc,
-  0x88, 0x4b, 0xa7, 0xf5, 0xca, 0xc9, 0xba, 0xfa, 0x36, 0x1c, 0xcd, 0xdf,
-  0x0a, 0x2e, 0x4b, 0xfe, 0xc8, 0x36, 0x35, 0xe1, 0xa1, 0x75, 0x17, 0x99,
-  0x2d, 0x92, 0x20, 0x14, 0x30, 0x29, 0x43, 0x81, 0xa0, 0xbd, 0x0b, 0x88,
-  0x39, 0xe6, 0xf6, 0xb0, 0x4e, 0x07, 0x7b, 0xa0, 0xbc, 0x2e, 0x98, 0x31,
-  0x13, 0xb3, 0xa5, 0x99, 0xf9, 0xd7, 0xc7, 0x17, 0xa2, 0xa1, 0x20, 0x4b,
-  0xdc, 0x15, 0x48, 0x0c, 0xeb, 0x80, 0x93, 0x25, 0xf3, 0xfc, 0xa9, 0xad,
-  0xa0, 0x59, 0xdf, 0xa4, 0xfb, 0xcf, 0x9e, 0x4b, 0xb7, 0x95, 0x42, 0x0b,
-  0x86, 0xd2, 0x26, 0xff, 0x6a, 0x67, 0x87, 0xc3, 0xe6, 0x64, 0x9d, 0x06,
-  0x72, 0x21, 0x95, 0x3a, 0xa0, 0x9b, 0x5f, 0x6c, 0x46, 0x01, 0x73, 0xd6,
-  0x77, 0xab, 0x65, 0xfa, 0x10, 0x8b, 0x03, 0x37, 0xa5, 0x4f, 0xa9, 0xdf,
-  0x6f, 0x95, 0x7a, 0x47, 0x1e, 0x4b, 0xba, 0x86, 0x69, 0x5e, 0x28, 0x27,
-  0xa4, 0x1a, 0x4f, 0xa2, 0xb9, 0xa9, 0xc3, 0xe4, 0xd0, 0x9f, 0x1d, 0x00,
-  0xd0, 0x50, 0x1c, 0x72, 0x12, 0xf2, 0x9a, 0x28, 0xfc, 0x8d, 0x16, 0xc4,
-  0x6b, 0x59, 0x40, 0xa0, 0x66, 0xd3, 0x81, 0xec, 0x8f, 0x76, 0x9e, 0x06,
-  0x5e, 0xd8, 0x27, 0x83, 0xc5, 0x5c, 0x8e, 0x83, 0x34, 0x11, 0xf9, 0xa6,
-  0x02, 0xa4, 0xd8, 0xa4, 0xf7, 0x60, 0x82, 0xee, 0xb8, 0x98, 0xdb, 0xa0,
-  0xe2, 0x00, 0x90, 0x37, 0x01, 0x71, 0x3e, 0x5e, 0xa5, 0x53, 0x21, 0x12,
-  0x1c, 0xb3, 0x2e, 0x39, 0x73, 0x31, 0x99, 0xb5, 0xa5, 0xd8, 0x4f, 0x70,
-  0x0e, 0xcc, 0x56, 0xd8, 0xa1, 0x7d, 0x20, 0xd6, 0x46, 0x40, 0x7d, 0x4f,
-  0x4e, 0xe6, 0x17, 0xc3, 0xdd, 0x83, 0xe4, 0x6c, 0x91, 0x15, 0x66, 0xfe,
-  0xfb, 0xc9, 0x37, 0xc5, 0x92, 0xd6, 0x83, 0x06, 0xfd, 0xcd, 0xe8, 0xbb,
-  0x20, 0xdb, 0x8a, 0xde, 0x78, 0xfa, 0x84, 0xde, 0x78, 0x37, 0xe2, 0xa7,
-  0xee, 0xca, 0xd9, 0x15, 0x55, 0x74, 0x3e, 0xba, 0x4f, 0xcd, 0x1f, 0xb1,
-  0xc7, 0x3f, 0xa3, 0xc7, 0xcd, 0xc6, 0x9b, 0x36, 0xb3, 0x3a, 0xf6, 0x7b,
-  0x74, 0xe0, 0xbc, 0x9c, 0xa5, 0x15, 0x3c, 0xd5, 0xbc, 0xf9, 0xd6, 0xf4,
-  0xf8, 0xe9, 0xd3, 0x48, 0x8f, 0xfb, 0x2b, 0x3a, 0x34, 0xfc, 0xc7, 0x7b,
-  0x74, 0x06, 0xdf, 0x1f, 0xfd, 0x6d, 0x9c, 0x4e, 0x3e, 0x62, 0x27, 0x02,
-  0xd5, 0x6e, 0xb9, 0x66, 0x7f, 0x4f, 0x69, 0xce, 0x54, 0x04, 0x8f, 0x29,
-  0x69, 0x53, 0x81, 0x8f, 0xad, 0x41, 0x8e, 0xfb, 0x67, 0xfb, 0x4f, 0xf6,
-  0x76, 0x9e, 0x0f, 0x9f, 0x0e, 0xf7, 0x2d, 0xca, 0xcc, 0x6c, 0xac, 0x5b,
-  0x2a, 0xa0, 0x40, 0x11, 0xfd, 0x55, 0xf5, 0xe7, 0xf2, 0xc2, 0xb4, 0xe3,
-  0xd5, 0xad, 0x16, 0xa2, 0x6b, 0x87, 0x2f, 0x49, 0x89, 0x79, 0xc2, 0xcf,
-  0x55, 0x1a, 0x46, 0xea, 0x87, 0x11, 0x81, 0x03, 0x75, 0x42, 0xbd, 0x1d,
-  0x54, 0xec, 0x14, 0xc0, 0xcf, 0x71, 0x6e, 0xac, 0xe6, 0xa6, 0x5c, 0xc2,
-  0xad, 0x4e, 0x3e, 0x1c, 0x65, 0xdc, 0x86, 0x92, 0x84, 0x71, 0xd0, 0x11,
-  0x8b, 0x38, 0xc7, 0xb8, 0xf3, 0xc0, 0xf2, 0xba, 0x80, 0x14, 0xe7, 0x43,
-  0xe5, 0x5c, 0xbd, 0x98, 0x2b, 0x5d, 0x18, 0x63, 0x86, 0xab, 0x94, 0x7f,
-  0x6b, 0x6c, 0x8d, 0x5b, 0x38, 0x8e, 0x83, 0x3a, 0x6b, 0x52, 0xe8, 0x82,
-  0x54, 0x64, 0xeb, 0xfa, 0x57, 0xa4, 0x03, 0xa6, 0x11, 0x1e, 0x5e, 0xf9,
-  0x01, 0x67, 0x50, 0xb0, 0x0f, 0x04, 0xe3, 0x1e, 0x84, 0x69, 0xbf, 0x5e,
-  0x81, 0x3d, 0xb7, 0xe2, 0x42, 0x28, 0x4d, 0xf9, 0x4b, 0xec, 0xe2, 0x76,
-  0x58, 0x61, 0x3f, 0x13, 0x2d, 0xe6, 0x82, 0x79, 0xc0, 0x1f, 0x21, 0x8c,
-  0x14, 0x6d, 0x4a, 0x0a, 0xfe, 0x57, 0xa7, 0xe6, 0x9f, 0xde, 0x82, 0x41,
-  0x1e, 0x53, 0xa7, 0x2c, 0x9a, 0xb6, 0xf9, 0xab, 0x77, 0xd9, 0x93, 0xdf,
-  0x7e, 0x97, 0xed, 0x3f, 0x76, 0x97, 0xb9, 0x4d, 0x46, 0xe7, 0x6c, 0xcd,
-  0x16, 0xa3, 0x3d, 0xa6, 0x15, 0x91, 0xe3, 0xbb, 0xcc, 0xdf, 0x66, 0x30,
-  0x53, 0x63, 0x1b, 0xad, 0xb5, 0xcf, 0xec, 0x36, 0x5b, 0xb1, 0xcb, 0x98,
-  0xb7, 0x8a, 0xf7, 0xd8, 0xfa, 0x2d, 0xc6, 0x7b, 0x8c, 0xab, 0xd6, 0xae,
-  0xd9, 0x65, 0x6d, 0x37, 0xfc, 0xfa, 0x7d, 0xe6, 0xb6, 0xc3, 0xa3, 0x77,
-  0x99, 0x16, 0x34, 0x61, 0xa9, 0xb3, 0x62, 0x8b, 0xb5, 0xf6, 0xd8, 0x9a,
-  0xca, 0x6f, 0x7b, 0x2f, 0x62, 0xbb, 0xec, 0xc9, 0xaf, 0xde, 0x65, 0x4f,
-  0x7f, 0xfb, 0x5d, 0xf6, 0xe4, 0xff, 0xc9, 0xb2, 0xff, 0x76, 0xb2, 0x6c,
-  0xef, 0x97, 0xc9, 0xb2, 0xfd, 0x4e, 0x60, 0xd3, 0xa8, 0xab, 0xec, 0x6d,
-  0xfe, 0x8b, 0x7a, 0xfd, 0x0f, 0x76, 0x76, 0x7e, 0x86, 0xf3, 0xe4, 0x80,
-  0xee, 0xeb, 0x9f, 0x83, 0x32, 0x9e, 0x59, 0x27, 0xd3, 0x72, 0x74, 0x76,
-  0xf4, 0xdd, 0x48, 0x5c, 0xd6, 0xa2, 0x75, 0xa9, 0x56, 0xc6, 0x45, 0xe5,
-  0x41, 0x15, 0xc1, 0x25, 0xb7, 0x02, 0x5d, 0x9f, 0x4b, 0xfd, 0x25, 0x83,
-  0x4f, 0x7d, 0xeb, 0x3c, 0xa6, 0x1c, 0xff, 0x42, 0x71, 0x8e, 0x4c, 0xf8,
-  0xc6, 0xf9, 0xc5, 0xf0, 0x16, 0x48, 0xd3, 0xb5, 0x44, 0x7c, 0xba, 0xd3,
-  0xe5, 0xf5, 0x45, 0x3c, 0x1a, 0x85, 0x7b, 0x65, 0xab, 0xb9, 0xa9, 0x90,
-  0xda, 0x81, 0xc7, 0xb6, 0x2d, 0x39, 0xd8, 0x03, 0xbd, 0x93, 0x5e, 0x7d,
-  0x0b, 0x5a, 0xdc, 0x45, 0x95, 0xad, 0xa8, 0x9e, 0x7b, 0x79, 0xe3, 0xfd,
-  0x56, 0x5d, 0x68, 0x31, 0x6e, 0x0b, 0x21, 0x79, 0xf3, 0xe6, 0x9b, 0xde,
-  0x0b, 0xf2, 0xd1, 0xf3, 0x4f, 0x8c, 0x2f, 0xb5, 0x04, 0x2b, 0x33, 0xd4,
-  0xc8, 0x44, 0xc9, 0x07, 0xf9, 0x88, 0x6d, 0xa3, 0xd6, 0x4c, 0x1e, 0xaa,
-  0xdb, 0x50, 0x3f, 0x35, 0x4d, 0x06, 0xb0, 0x51, 0xfc, 0x22, 0xa5, 0xdf,
-  0xc8, 0x3f, 0x9e, 0xd1, 0x87, 0x11, 0x6b, 0xe5, 0x7f, 0xde, 0xe0, 0xdf,
-  0x8c, 0x2b, 0x60, 0x26, 0x29, 0x6f, 0x9d, 0x27, 0xd1, 0x89, 0xd6, 0x83,
-  0xc9, 0x7e, 0x07, 0x66, 0x38, 0x78, 0x57, 0x06, 0x0c, 0x49, 0x18, 0xb3,
-  0xab, 0x65, 0x12, 0x61, 0xcf, 0xf7, 0x8e, 0x35, 0x5a, 0x7e, 0xba, 0x22,
-  0x39, 0x26, 0x4b, 0x7c, 0xba, 0x49, 0xe5, 0x0e, 0xf0, 0x6b, 0x3d, 0xb9,
-  0x60, 0xa9, 0x2c, 0x41, 0x9f, 0xb9, 0x47, 0x43, 0x8c, 0x2f, 0xd5, 0x31,
-  0x90, 0x9e, 0xef, 0xed, 0x7e, 0x1e, 0x7a, 0x9b, 0xdf, 0x6b, 0x4a, 0x9b,
-  0x63, 0x5c, 0x04, 0x20, 0x02, 0xf0, 0xf2, 0xb1, 0xcb, 0xe4, 0x88, 0x7d,
-  0x34, 0x92, 0xf7, 0x46, 0x0e, 0x00, 0x4a, 0x39, 0x2e, 0xc5, 0x36, 0x44,
-  0xf9, 0xac, 0x6e, 0x19, 0x7a, 0x4e, 0xe5, 0xad, 0x21, 0x25, 0x85, 0x2e,
-  0x58, 0xc2, 0xfa, 0x81, 0xb4, 0x40, 0xc5, 0x60, 0x09, 0x36, 0x7d, 0xe5,
-  0xc8, 0xbb, 0xfe, 0xf8, 0x74, 0x97, 0xd6, 0x54, 0x1b, 0x49, 0xb9, 0x1c,
-  0x3b, 0xef, 0xb9, 0x3f, 0x3e, 0x49, 0x87, 0xff, 0x44, 0x36, 0xa6, 0x67,
-  0x6d, 0x57, 0xc2, 0x1f, 0xfa, 0x7c, 0xc2, 0xaf, 0x89, 0x32, 0x66, 0x30,
-  0x4e, 0xab, 0x48, 0x0a, 0x85, 0xdc, 0x04, 0xca, 0x34, 0xa2, 0x34, 0x1d,
-  0xfa, 0x16, 0x28, 0x2f, 0x80, 0xad, 0xe5, 0xf2, 0x5b, 0xf6, 0xe7, 0x49,
-  0xd8, 0x9c, 0xe7, 0xaa, 0xf7, 0xab, 0x83, 0xf6, 0x03, 0x82, 0xac, 0x74,
-  0xd6, 0xa7, 0x28, 0x5e, 0x84, 0x46, 0x89, 0x95, 0x87, 0xd6, 0x47, 0x88,
-  0xea, 0xea, 0xce, 0x73, 0x25, 0x30, 0x4f, 0xfd, 0x15, 0x9c, 0xf6, 0x16,
-  0x7f, 0x61, 0x7e, 0x4f, 0xd1, 0xd8, 0xd8, 0x6d, 0x56, 0x4f, 0xaa, 0x4c,
-  0x82, 0x23, 0x44, 0x76, 0x88, 0xc8, 0x2b, 0x31, 0x05, 0x9a, 0x9b, 0xec,
-  0x3a, 0xd3, 0xe4, 0x49, 0x3b, 0x6e, 0x25, 0xc8, 0x00, 0x2b, 0xc6, 0x30,
-  0x02, 0x4a, 0xf6, 0x40, 0x47, 0xb6, 0x5e, 0x6b, 0x2a, 0x24, 0x1a, 0xf4,
-  0xb2, 0x63, 0xd3, 0xb3, 0xd3, 0xc1, 0x9e, 0xc2, 0x30, 0x38, 0xda, 0x1a,
-  0x01, 0xa3, 0xc6, 0x91, 0x85, 0xb0, 0xb7, 0xbb, 0xff, 0x94, 0x59, 0x59,
-  0xec, 0xc7, 0xaa, 0x8e, 0xd1, 0x85, 0x3c, 0x5e, 0x3d, 0xc2, 0x2f, 0xf5,
-  0xf4, 0x7f, 0xf9, 0x20, 0x4a, 0xdf, 0xca, 0x89, 0x2b, 0x71, 0xb8, 0xd0,
-  0x19, 0x41, 0xd6, 0x06, 0x13, 0x26, 0x4f, 0x6e, 0xb2, 0xb9, 0x14, 0xf7,
-  0xf8, 0x85, 0xa5, 0xca, 0x3b, 0x7d, 0x62, 0xfc, 0xda, 0x55, 0xb3, 0x18,
-  0xce, 0xcb, 0xbf, 0x9b, 0xd9, 0x48, 0xa9, 0x5a, 0x58, 0xb0, 0x73, 0xcd,
-  0x25, 0x5d, 0xf0, 0xd4, 0x51, 0x08, 0xa2, 0xb0, 0x06, 0xab, 0x13, 0xb3,
-  0x89, 0x12, 0x5b, 0x73, 0x6a, 0x7a, 0x92, 0x1c, 0x99, 0x1e, 0x1f, 0x7f,
-  0x78, 0xff, 0x6e, 0xf4, 0xfe, 0xbc, 0x7b, 0x40, 0xcf, 0xcf, 0x2e, 0x2e,
-  0x8f, 0x5f, 0x7f, 0x38, 0xbf, 0x38, 0xbb, 0x3c, 0x3b, 0x3a, 0x3b, 0x4d,
-  0xb6, 0xf6, 0xb6, 0xd7, 0xe6, 0x62, 0x59, 0x6f, 0x89, 0xc7, 0xed, 0xa7,
-  0xfd, 0x67, 0xd1, 0x62, 0x7b, 0xb1, 0x45, 0xe3, 0x09, 0x5b, 0xfb, 0x41,
-  0x36, 0x40, 0x3b, 0x89, 0x90, 0xdd, 0x26, 0xb8, 0x85, 0x20, 0x7e, 0xd3,
-  0xe4, 0x7a, 0x49, 0xbb, 0xd9, 0x0f, 0xc7, 0x33, 0xaf, 0x65, 0xa0, 0x2d,
-  0x69, 0x3c, 0xd0, 0x4b, 0xe3, 0x59, 0xeb, 0x3a, 0x7c, 0xd6, 0x55, 0x2d,
-  0x68, 0x0d, 0xa0, 0x31, 0xba, 0x5d, 0x51, 0xaf, 0xdf, 0x16, 0xcc, 0xfc,
-  0x01, 0xde, 0x68, 0xfb, 0x06, 0x58, 0xf5, 0x25, 0x42, 0x83, 0xdc, 0x57,
-  0x56, 0x41, 0xcd, 0x95, 0x77, 0x1e, 0x56, 0xc0, 0x91, 0x57, 0x4c, 0x7f,
-  0x0b, 0xa9, 0xc3, 0x28, 0x1d, 0x41, 0x84, 0x8e, 0xe6, 0x57, 0x22, 0xc6,
-  0xe6, 0x01, 0xfa, 0xad, 0x27, 0xfc, 0x90, 0xc3, 0x14, 0x78, 0xb7, 0xf9,
-  0xe5, 0x2b, 0xd4, 0x00, 0xbc, 0xf3, 0x3a, 0x45, 0xcd, 0x91, 0xee, 0x04,
-  0xe6, 0xbe, 0x88, 0x20, 0x3c, 0xd6, 0xe0, 0x0f, 0x27, 0xe2, 0x40, 0x13,
-  0x84, 0x9a, 0xa1, 0x84, 0x30, 0x23, 0x7f, 0x30, 0x0f, 0x6c, 0x64, 0x9e,
-  0x44, 0x72, 0xc4, 0xf7, 0x69, 0xed, 0xfb, 0xbc, 0xa1, 0x25, 0xea, 0xb5,
-  0x26, 0x0b, 0xc0, 0x11, 0xab, 0xf8, 0xee, 0x33, 0x74, 0x88, 0x9c, 0xfa,
-  0x6e, 0x34, 0x5e, 0x57, 0x34, 0x1b, 0xd3, 0x5c, 0x01, 0xdd, 0xc9, 0xe5,
-  0x14, 0x17, 0xcd, 0x92, 0x97, 0x3c, 0x15, 0xcb, 0x16, 0x4c, 0x3c, 0x1b,
-  0x46, 0x13, 0x3f, 0x10, 0x2c, 0x14, 0x83, 0x83, 0x38, 0xc9, 0x1e, 0xc4,
-  0x85, 0x47, 0xe7, 0x11, 0x92, 0x07, 0x97, 0x72, 0x0f, 0x99, 0xa8, 0x05,
-  0x63, 0x77, 0x87, 0xbb, 0xc9, 0xe8, 0xed, 0xd7, 0xc2, 0x78, 0xf8, 0xf5,
-  0x88, 0x09, 0x21, 0x58, 0x11, 0xd6, 0x57, 0x86, 0x71, 0x5e, 0x29, 0xf6,
-  0x93, 0x92, 0xba, 0x41, 0xbd, 0xfb, 0x13, 0xfe, 0xa6, 0x68, 0x64, 0xfe,
-  0xb9, 0x1b, 0xb6, 0x3f, 0xee, 0x7e, 0x34, 0x51, 0x9d, 0x83, 0x33, 0x54,
-  0x2e, 0xd5, 0x0e, 0x9b, 0xab, 0x88, 0xf2, 0xa0, 0x87, 0xeb, 0x19, 0xb6,
-  0xf6, 0x83, 0xf3, 0xf0, 0x9b, 0x9d, 0x04, 0x5b, 0xaa, 0x56, 0xa5, 0x72,
-  0x77, 0x3a, 0xce, 0xdd, 0x28, 0x69, 0xf2, 0x32, 0x4a, 0xc8, 0x81, 0xb3,
-  0x79, 0x96, 0x5d, 0x41, 0xd3, 0x42, 0xa2, 0x5c, 0x1f, 0xbf, 0x44, 0x64,
-  0xcd, 0xa2, 0xa7, 0xa2, 0x74, 0x4b, 0x68, 0x23, 0x9d, 0xf8, 0x9a, 0xab,
-  0x32, 0xb3, 0x75, 0xe7, 0xe0, 0x4f, 0x28, 0xce, 0xc9, 0xb4, 0xb4, 0x79,
-  0xed, 0x31, 0x2c, 0x80, 0x0d, 0x31, 0xd7, 0xe0, 0x99, 0x77, 0x96, 0x66,
-  0x94, 0x79, 0x77, 0xcf, 0x49, 0x7b, 0x41, 0x86, 0x01, 0xb4, 0x9d, 0x29,
-  0x69, 0xef, 0x0e, 0x26, 0xea, 0xa5, 0x97, 0x14, 0xa5, 0xe3, 0xda, 0x12,
-  0xf5, 0x25, 0x94, 0x8d, 0x83, 0x24, 0x79, 0x9d, 0x15, 0xf7, 0x2a, 0x1b,
-  0x1d, 0xc2, 0x09, 0x64, 0x19, 0xb7, 0xec, 0x07, 0x67, 0x97, 0x36, 0x13,
-  0x10, 0xd5, 0xc0, 0x44, 0xd8, 0x2e, 0x86, 0x5d, 0x6a, 0xf7, 0x39, 0x26,
-  0x01, 0x5e, 0xd9, 0x69, 0x90, 0x74, 0x6d, 0x7f, 0x2e, 0xb6, 0xc0, 0xc9,
-  0xa0, 0xa1, 0x3f, 0x7c, 0x4f, 0x5b, 0x5c, 0x3b, 0x0d, 0xcc, 0xa6, 0x07,
-  0x2b, 0x86, 0xf8, 0x23, 0xff, 0x8a, 0x12, 0xce, 0xa4, 0xb4, 0xcf, 0x52,
-  0xf8, 0x45, 0x78, 0x2a, 0x04, 0x15, 0x67, 0xe4, 0x9b, 0x79, 0x86, 0xc3,
-  0x55, 0xa1, 0x6b, 0x9a, 0x0a, 0xb8, 0x20, 0x2c, 0xa9, 0xdc, 0xda, 0xed,
-  0x4d, 0x80, 0x4e, 0xad, 0x4b, 0x85, 0x3a, 0xd8, 0x58, 0x21, 0x2c, 0x07,
-  0x57, 0x24, 0x9d, 0x18, 0x6a, 0xd5, 0xb9, 0xc6, 0x78, 0x36, 0x19, 0xde,
-  0x67, 0xc1, 0xa6, 0xf4, 0xf8, 0xca, 0xb6, 0x54, 0xe6, 0xd5, 0xfd, 0x3f,
-  0xd1, 0x1f, 0xe1, 0x28, 0x5a, 0xc1, 0x19, 0x9a, 0x68, 0x3d, 0xec, 0xf4,
-  0x38, 0x04, 0x08, 0x5e, 0x5f, 0xf5, 0x81, 0x57, 0x4e, 0xa0, 0xae, 0x6f,
-  0x1b, 0xc2, 0xe7, 0x31, 0x1f, 0x78, 0x5f, 0x28, 0x8b, 0x99, 0xee, 0xef,
-  0x85, 0xa5, 0x56, 0xbf, 0x4b, 0xab, 0x02, 0x68, 0x72, 0x5f, 0xf1, 0x27,
-  0xee, 0x8b, 0x85, 0xd4, 0x5d, 0x48, 0xaf, 0x08, 0x87, 0x5b, 0x65, 0x8e,
-  0x07, 0x96, 0xd6, 0x91, 0x19, 0x6e, 0x84, 0x5c, 0x5a, 0x61, 0xa1, 0x8b,
-  0xb2, 0x61, 0x9a, 0x6b, 0x02, 0xee, 0x92, 0xce, 0x50, 0x91, 0x7f, 0xc5,
-  0x9b, 0x64, 0xd5, 0x08, 0xa9, 0x35, 0xbb, 0x9b, 0xa8, 0xa5, 0xe5, 0x82,
-  0x62, 0x84, 0x02, 0xa9, 0xe2, 0x78, 0xab, 0x27, 0x66, 0xe4, 0x73, 0x8c,
-  0xbd, 0x82, 0x5f, 0xc8, 0x85, 0xf4, 0xd2, 0xdb, 0x92, 0xea, 0x1c, 0x38,
-  0xf4, 0x35, 0x14, 0x21, 0xb7, 0x4b, 0x2e, 0xc3, 0x4a, 0x0d, 0xb0, 0x27,
-  0x2c, 0xe8, 0x45, 0x0c, 0x0a, 0xf2, 0x02, 0x01, 0x93, 0x04, 0xfb, 0xde,
-  0x4b, 0xf5, 0xe1, 0xf3, 0xad, 0xcd, 0x01, 0x19, 0x91, 0x32, 0xc9, 0x9a,
-  0xd9, 0x93, 0x45, 0xda, 0xe8, 0x89, 0xf1, 0x64, 0x22, 0xf5, 0x10, 0x0c,
-  0x08, 0x05, 0x29, 0xf9, 0x13, 0x4b, 0x3f, 0xd4, 0x65, 0xb2, 0x6e, 0x97,
-  0x20, 0xb6, 0xb7, 0xaa, 0x45, 0x70, 0x3a, 0x85, 0x71, 0xf8, 0x80, 0x18,
-  0xff, 0x74, 0xaf, 0x90, 0xb1, 0xb5, 0x22, 0x7c, 0x81, 0x74, 0x5e, 0x33,
-  0xd1, 0x79, 0x83, 0x05, 0xeb, 0x60, 0x56, 0x15, 0xca, 0x89, 0x28, 0x1f,
-  0x1d, 0xbe, 0x65, 0xf7, 0xc8, 0x17, 0x1a, 0xa3, 0x13, 0xea, 0x75, 0xc8,
-  0x7b, 0x66, 0x75, 0x82, 0x2a, 0x21, 0x9e, 0x09, 0x66, 0xf7, 0xf7, 0x2a,
-  0x1e, 0x10, 0x34, 0x98, 0xa2, 0x76, 0x71, 0x67, 0xdf, 0x8e, 0x25, 0x73,
-  0x31, 0x1b, 0xa6, 0x98, 0x0e, 0x8c, 0x10, 0x58, 0xac, 0x71, 0x6f, 0x7e,
-  0xea, 0xeb, 0xa0, 0x5b, 0x60, 0x57, 0x9f, 0x3e, 0x82, 0x7f, 0xc2, 0x90,
-  0x3a, 0x99, 0xbb, 0x10, 0x2c, 0x6e, 0xf4, 0x81, 0x27, 0xb1, 0x99, 0x8c,
-  0x81, 0xf6, 0xba, 0xa1, 0x64, 0x1a, 0xd4, 0x4a, 0xca, 0x7f, 0x9e, 0x41,
-  0x4c, 0xa0, 0x4e, 0xd8, 0x2a, 0x80, 0x13, 0xcf, 0x9d, 0x4c, 0xdb, 0x7b,
-  0x4e, 0xa6, 0x42, 0x8b, 0xb0, 0x77, 0x0a, 0x81, 0x49, 0x7b, 0x5f, 0x62,
-  0x5f, 0x4d, 0x30, 0x8f, 0xe0, 0x57, 0x52, 0xf2, 0x78, 0x7e, 0x12, 0x7e,
-  0x4e, 0x5f, 0xda, 0xc5, 0x57, 0x3b, 0xe2, 0xfc, 0x80, 0x9c, 0xc4, 0x87,
-  0xa8, 0x63, 0xf9, 0x5a, 0xe6, 0x82, 0x15, 0x8b, 0x11, 0x23, 0xed, 0x98,
-  0x76, 0x10, 0xa8, 0xfa, 0x73, 0xae, 0xb4, 0x1d, 0x87, 0xbd, 0x8d, 0xe4,
-  0xbc, 0x69, 0x3d, 0x6e, 0xc8, 0x69, 0xc5, 0x1c, 0x7a, 0xde, 0x30, 0x2e,
-  0x40, 0xf4, 0xa9, 0x59, 0xdd, 0x53, 0xef, 0x73, 0x4c, 0xd8, 0x21, 0xb8,
-  0x12, 0x69, 0xd7, 0xfd, 0xd3, 0xff, 0xed, 0xa7, 0x7e, 0x4c, 0x48, 0xd3,
-  0x5a, 0xad, 0x76, 0x2b, 0xb4, 0x3f, 0xf3, 0xd2, 0x9c, 0xe8, 0x75, 0x83,
-  0xc2, 0x43, 0xbf, 0x66, 0x50, 0xc1, 0xa8, 0x30, 0x0c, 0xcc, 0x77, 0xb0,
-  0x26, 0xfc, 0x99, 0x35, 0x4e, 0xd8, 0x15, 0x43, 0x30, 0x2d, 0xae, 0x29,
-  0x15, 0xea, 0x0d, 0xc3, 0x3e, 0xf8, 0x4b, 0x47, 0xf2, 0xf0, 0x34, 0x62,
-  0x6b, 0xd0, 0x7f, 0xff, 0x72, 0x00, 0xbf, 0xd7, 0xf4, 0xe7, 0x95, 0xfd,
-  0x38, 0xee, 0x4b, 0x5f, 0x7e, 0x87, 0x6e, 0xe4, 0x8b, 0x1b, 0x72, 0x6a,
-  0xbc, 0x8c, 0x65, 0xd9, 0x78, 0x13, 0x21, 0x8f, 0xfd, 0xf6, 0xdf, 0xaf,
-  0x66, 0x8e, 0xd8, 0x66, 0xcd, 0xf7, 0xe5, 0xb1, 0xdf, 0xfc, 0xfb, 0x7c,
-  0x76, 0x1f, 0x74, 0xa0, 0x40, 0x50, 0xbd, 0x16, 0x24, 0x73, 0x44, 0x26,
-  0xfe, 0x6a, 0xa1, 0x28, 0xe8, 0xe8, 0x50, 0x2a, 0xca, 0xc7, 0xa2, 0x25,
-  0x18, 0x44, 0x2c, 0x42, 0x2a, 0xfe, 0x26, 0x12, 0x0c, 0xa2, 0x39, 0x9c,
-  0x1c, 0xa9, 0x89, 0xf2, 0x92, 0xff, 0xdc, 0xf9, 0x2a, 0xb6, 0x46, 0x9a,
-  0x71, 0x42, 0xb7, 0xa0, 0x16, 0x51, 0x41, 0x5d, 0x0e, 0xe6, 0x09, 0x10,
-  0x8d, 0xd7, 0x56, 0x94, 0xa0, 0xc9, 0x52, 0xa8, 0x08, 0x06, 0x1a, 0x2b,
-  0xdd, 0x22, 0x33, 0xa4, 0x80, 0x51, 0x4b, 0xb0, 0x6d, 0x91, 0x42, 0xa4,
-  0x78, 0x64, 0xde, 0x17, 0x6b, 0xcb, 0xca, 0x12, 0xf1, 0x04, 0xfa, 0x15,
-  0x30, 0x1d, 0x6b, 0xe9, 0xb7, 0x7d, 0xa9, 0x9c, 0x62, 0x5a, 0xa3, 0x5d,
-  0x25, 0x68, 0x49, 0x71, 0xf7, 0xcb, 0x72, 0x86, 0xf4, 0x2e, 0x52, 0xdc,
-  0x1c, 0x28, 0x7e, 0xa0, 0x43, 0x69, 0x84, 0x47, 0x67, 0xef, 0xde, 0x1d,
-  0x1f, 0x75, 0x23, 0x7a, 0xb6, 0xce, 0xa4, 0x53, 0xf5, 0x83, 0xd2, 0x7d,
-  0xf8, 0x3c, 0x28, 0xd9, 0x25, 0xaf, 0x86, 0xbf, 0x8f, 0xaa, 0x3e, 0x9c,
-  0x2b, 0xa3, 0xbf, 0x64, 0x95, 0x44, 0x68, 0x3b, 0x65, 0x07, 0x44, 0x12,
-  0xbb, 0x82, 0xfd, 0x30, 0xf1, 0xa8, 0x5e, 0x38, 0x2a, 0x50, 0xa3, 0x4c,
-  0x14, 0x14, 0x51, 0x98, 0x99, 0xd2, 0x0b, 0x60, 0xab, 0xa7, 0xd3, 0x1d,
-  0x81, 0x2e, 0xeb, 0xb7, 0x57, 0xed, 0x65, 0xe6, 0xf9, 0xa2, 0xfc, 0x90,
-  0x41, 0x79, 0xc5, 0x55, 0x44, 0xe7, 0x69, 0xf5, 0x91, 0xc2, 0x81, 0x5e,
-  0xa6, 0x08, 0x72, 0x05, 0xc1, 0x3a, 0x3c, 0x9d, 0xc6, 0x92, 0xd0, 0x53,
-  0xf8, 0x65, 0x3d, 0x5c, 0xbc, 0x74, 0x46, 0xca, 0xee, 0x1d, 0x68, 0x0a,
-  0x1f, 0xbd, 0x5e, 0x64, 0x77, 0xf4, 0x19, 0xe6, 0xde, 0xa0, 0x64, 0xf2,
-  0x90, 0xc6, 0x9f, 0xa9, 0xa3, 0xd9, 0x8d, 0x7e, 0x2f, 0x49, 0xec, 0xb4,
-  0x54, 0x73, 0xa6, 0xc9, 0x07, 0x19, 0x2f, 0xd5, 0x9e, 0xe2, 0xf4, 0x8f,
-  0x60, 0xae, 0xbe, 0x15, 0x2e, 0xbd, 0x4e, 0x04, 0xa9, 0x4d, 0x15, 0xe6,
-  0xb1, 0xe6, 0x8c, 0x33, 0x8f, 0x65, 0x2f, 0xbc, 0x7e, 0xec, 0x76, 0xc0,
-  0x5c, 0x63, 0x21, 0xc8, 0x5e, 0x91, 0x12, 0x07, 0x92, 0x60, 0xa3, 0xeb,
-  0x9b, 0xae, 0x08, 0x76, 0x8d, 0x88, 0x21, 0x1b, 0xa7, 0x85, 0xfc, 0x10,
-  0x46, 0x8c, 0x3d, 0xeb, 0x52, 0xbd, 0x82, 0xa2, 0x14, 0x0e, 0x47, 0xa2,
-  0x3f, 0xbb, 0x06, 0xd2, 0x9d, 0x1e, 0xc6, 0x71, 0x0d, 0x14, 0x5d, 0x12,
-  0xa9, 0xc8, 0x02, 0xeb, 0x6b, 0xb5, 0x6b, 0xda, 0xab, 0x66, 0x7e, 0x69,
-  0x25, 0x64, 0xf6, 0x95, 0xc9, 0x84, 0x9d, 0xee, 0x72, 0x84, 0xcd, 0x9f,
-  0x8b, 0x65, 0x13, 0xc4, 0xce, 0x88, 0xd8, 0x89, 0xd3, 0xf9, 0xbf, 0x1a,
-  0x84, 0x85, 0x90, 0xd2, 0xa9, 0xbf, 0xaa, 0x10, 0xe1, 0x30, 0xfd, 0xeb,
-  0xc6, 0x48, 0x80, 0x15, 0x61, 0x00, 0x9d, 0x68, 0xcd, 0xa1, 0x88, 0xd9,
-  0x35, 0x98, 0x31, 0xb7, 0x59, 0x77, 0xe0, 0x5b, 0xe8, 0xee, 0x06, 0xfb,
-  0x8a, 0x0a, 0x89, 0x75, 0xd4, 0x1d, 0x20, 0x17, 0xec, 0xc8, 0x3f, 0x63,
-  0xe7, 0x90, 0xf7, 0x29, 0x5b, 0x75, 0x2d, 0x7d, 0x64, 0xb6, 0x48, 0x7e,
-  0xe8, 0xb7, 0xbf, 0x9b, 0xd6, 0x17, 0x34, 0x77, 0x97, 0xa3, 0x7d, 0xee,
-  0xf7, 0xe8, 0x41, 0xb4, 0x42, 0x78, 0xeb, 0xdb, 0x8f, 0xff, 0x6c, 0xc0,
-  0x72, 0xf7, 0xb8, 0x7b, 0xd7, 0x31, 0x38, 0x3a, 0x0a, 0xc7, 0xee, 0x2d,
-  0x0c, 0x91, 0x1b, 0xe0, 0x51, 0xbd, 0x3b, 0x79, 0xed, 0x2d, 0xec, 0xb2,
-  0xf6, 0xfd, 0x8b, 0x38, 0x12, 0xa3, 0x8e, 0xb1, 0x49, 0x4a, 0x94, 0xf9,
-  0x71, 0x97, 0xf2, 0x83, 0x97, 0x70, 0x2b, 0xe7, 0xb3, 0x0b, 0x87, 0xb2,
-  0x29, 0x5f, 0x8f, 0x9c, 0xb8, 0x48, 0x02, 0x64, 0xf2, 0x0f, 0x2a, 0x2c,
-  0xc8, 0x33, 0x6b, 0xa9, 0x2b, 0xf8, 0x4a, 0x6b, 0x12, 0x1e, 0x73, 0x2f,
-  0x05, 0x53, 0xe2, 0xd6, 0x20, 0xa2, 0xad, 0x84, 0xb3, 0xb0, 0x0e, 0xed,
-  0xee, 0xb6, 0x27, 0x9e, 0xfa, 0xcd, 0x8f, 0x05, 0xc1, 0x5b, 0xf2, 0x89,
-  0xe0, 0xf8, 0x5f, 0x3e, 0x44, 0xc7, 0xd8, 0x0e, 0x3a, 0x4b, 0xd0, 0x49,
-  0xd0, 0xda, 0xdc, 0x90, 0x26, 0x8f, 0xc1, 0xcb, 0x8f, 0x4f, 0x04, 0xe4,
-  0x2a, 0x82, 0x4c, 0x8e, 0x00, 0x57, 0xfc, 0xb8, 0xd0, 0x93, 0x68, 0x6f,
-  0xeb, 0xd9, 0x00, 0x7d, 0xa0, 0x1c, 0xbb, 0x40, 0xd7, 0x75, 0x73, 0xd5,
-  0x79, 0xee, 0xb7, 0x9f, 0xb6, 0x66, 0x56, 0xd3, 0x5a, 0x3e, 0x46, 0xa4,
-  0xf9, 0x8f, 0xfe, 0x1e, 0xfd, 0xb0, 0x48, 0x83, 0x97, 0x0c, 0x23, 0x58,
-  0xdb, 0x13, 0xfb, 0xf0, 0xef, 0xd1, 0x13, 0x64, 0xee, 0x45, 0xf7, 0x50,
-  0xab, 0x0f, 0x78, 0xec, 0xf7, 0xf8, 0xfe, 0xed, 0xde, 0xaa, 0xcf, 0xa2,
-  0xce, 0x18, 0x9e, 0xf8, 0x0d, 0x3f, 0xfc, 0xde, 0x1a, 0x25, 0x9c, 0xe5,
-  0xf8, 0x92, 0xfe, 0x7b, 0xa0, 0x33, 0xbc, 0xb6, 0xa0, 0x7b, 0xab, 0x2a,
-  0x4d, 0xab, 0x3a, 0xa7, 0x96, 0x4f, 0xed, 0x66, 0xf3, 0x3e, 0x0a, 0xf8,
-  0x25, 0x69, 0x85, 0x4c, 0x12, 0x21, 0x8c, 0x91, 0x20, 0xf3, 0x1d, 0x28,
-  0xd5, 0x8c, 0xe8, 0xd0, 0x9a, 0xe9, 0x2e, 0x89, 0xcb, 0x89, 0x90, 0x2f,
-  0x74, 0xc9, 0x36, 0xdc, 0x65, 0x45, 0xa7, 0x39, 0x2e, 0x82, 0xa1, 0x73,
-  0x71, 0x7a, 0x72, 0x97, 0x60, 0x3e, 0x88, 0x0d, 0xcf, 0x98, 0x97, 0x69,
-  0xe5, 0xf8, 0xa1, 0x4f, 0x49, 0x99, 0x78, 0x47, 0x52, 0x30, 0x66, 0xb3,
-  0x29, 0xa8, 0x3c, 0xc0, 0x51, 0x3b, 0x8b, 0xaa, 0xf0, 0x30, 0x2b, 0x9e,
-  0x4a, 0x79, 0x90, 0xf4, 0x06, 0xef, 0x93, 0x83, 0xde, 0xef, 0x08, 0x20,
-  0xf7, 0x8c, 0xd3, 0x5f, 0x8d, 0x87, 0x5b, 0x8d, 0x0e, 0x6b, 0x43, 0x84,
-  0xc4, 0x3d, 0xfe, 0x10, 0x2e, 0xec, 0x8a, 0x38, 0x3a, 0xdf, 0x75, 0x17,
-  0x20, 0x02, 0xb1, 0xa2, 0x08, 0x35, 0x07, 0x84, 0xed, 0xe8, 0x1a, 0xa4,
-  0xa7, 0x21, 0xcb, 0xd7, 0xf7, 0x17, 0xbf, 0x0f, 0x0a, 0x1e, 0x3a, 0xd8,
-  0x58, 0x0b, 0x28, 0xe6, 0x70, 0x62, 0x14, 0xf2, 0x74, 0x28, 0x31, 0x60,
-  0x25, 0xd9, 0x74, 0x46, 0x85, 0xe8, 0xc0, 0x20, 0x05, 0xa1, 0xe1, 0x6a,
-  0x8c, 0x58, 0xb2, 0x75, 0xe9, 0xb9, 0xf0, 0x1d, 0xfb, 0x10, 0xd9, 0x5d,
-  0x71, 0xe7, 0x31, 0xb6, 0x21, 0xe8, 0x68, 0x3f, 0x0b, 0xea, 0xca, 0x08,
-  0x86, 0x50, 0x6c, 0x64, 0x6d, 0x2c, 0xb9, 0xcd, 0x53, 0x0e, 0xcc, 0xf0,
-  0x44, 0xca, 0xb7, 0x78, 0x46, 0xdd, 0xa7, 0x56, 0xb9, 0xe7, 0x38, 0x61,
-  0x3b, 0x92, 0xe6, 0xf1, 0x6e, 0x34, 0x0a, 0xa1, 0x62, 0x45, 0x95, 0x4d,
-  0xca, 0xeb, 0x22, 0xff, 0xbb, 0xe4, 0x97, 0x77, 0xd1, 0x23, 0x2d, 0xac,
-  0x5e, 0xa2, 0x75, 0x89, 0xc9, 0x92, 0x40, 0xfc, 0xa4, 0xbb, 0x1a, 0x96,
-  0x4b, 0x84, 0xa4, 0x14, 0x42, 0xb9, 0x20, 0x41, 0x90, 0xa9, 0xe4, 0x4a,
-  0xbe, 0xcc, 0xe9, 0xde, 0x8a, 0x85, 0x68, 0xce, 0x75, 0x57, 0xd1, 0x91,
-  0x5d, 0x21, 0x10, 0xa0, 0xf8, 0xf1, 0xc9, 0x7e, 0x05, 0xb0, 0x8e, 0x42,
-  0xa6, 0xbf, 0x0a, 0x5a, 0xd7, 0xb6, 0xa8, 0xbc, 0x14, 0x7e, 0x54, 0x12,
-  0xa7, 0xc3, 0x11, 0xe5, 0x48, 0x11, 0x82, 0xab, 0xb0, 0x24, 0x8c, 0xef,
-  0xa1, 0x00, 0x9b, 0xf3, 0x63, 0x68, 0x52, 0x4c, 0x3b, 0x92, 0x53, 0x15,
-  0x9e, 0xad, 0x2e, 0x47, 0x8a, 0x6d, 0xfd, 0x11, 0xe4, 0x28, 0x64, 0xdd,
-  0x2b, 0xbf, 0xa5, 0x74, 0x19, 0xc4, 0xcf, 0xb6, 0x5c, 0x7b, 0xc9, 0xe5,
-  0xd1, 0xbd, 0x23, 0xc9, 0x07, 0x36, 0x5a, 0x96, 0x68, 0x41, 0xd4, 0xe1,
-  0x94, 0x3c, 0x35, 0x56, 0x28, 0x74, 0xc3, 0x73, 0x4b, 0x6f, 0x53, 0xa5,
-  0x0b, 0xc0, 0x8d, 0x2d, 0xb3, 0x02, 0xb9, 0x63, 0x81, 0x89, 0xd6, 0x3d,
-  0xd1, 0xdd, 0x5a, 0xca, 0x36, 0xea, 0x75, 0x91, 0x23, 0x47, 0x62, 0xf8,
-  0xdb, 0x32, 0x1a, 0x8e, 0x51, 0x18, 0xc9, 0x83, 0x52, 0x7b, 0x39, 0x64,
-  0x35, 0xd3, 0x69, 0x6a, 0xa8, 0xca, 0x36, 0x71, 0x90, 0x31, 0xc4, 0xd6,
-  0xae, 0x49, 0x9f, 0xa4, 0x0f, 0x8b, 0x5c, 0x51, 0xdf, 0x07, 0x0b, 0x95,
-  0xb2, 0xdd, 0xc1, 0xde, 0x4b, 0x23, 0x2b, 0x6a, 0xd0, 0xfe, 0x0e, 0x88,
-  0xcc, 0x5f, 0x03, 0xc8, 0xfc, 0x9d, 0x11, 0x99, 0xde, 0x4d, 0x41, 0xd7,
-  0x4e, 0x78, 0x4f, 0xc0, 0x7b, 0x48, 0x29, 0x75, 0x1c, 0x1e, 0xbd, 0x4b,
-  0x2d, 0x13, 0x76, 0x4c, 0x49, 0x8f, 0x9e, 0xa4, 0x7e, 0x0b, 0xdd, 0xe2,
-  0x49, 0x10, 0x95, 0x8f, 0x8c, 0x31, 0xa3, 0x1a, 0x1c, 0x2b, 0xf2, 0xc4,
-  0x33, 0xca, 0x07, 0x9b, 0x66, 0xc2, 0xf1, 0xf0, 0x27, 0x47, 0x44, 0xfd,
-  0x7b, 0x66, 0x77, 0xd1, 0xf0, 0xf6, 0x8c, 0x6c, 0x7e, 0xe9, 0xdd, 0xc7,
-  0x5f, 0x46, 0x2e, 0xe4, 0x20, 0xe9, 0x94, 0xf1, 0xdd, 0xf4, 0x6a, 0x9b,
-  0x48, 0x29, 0x22, 0xf4, 0xe2, 0x07, 0x06, 0x85, 0xaf, 0xe0, 0xf9, 0x54,
-  0xf1, 0x46, 0x01, 0x73, 0x7a, 0x79, 0x85, 0x80, 0x13, 0xaa, 0x2e, 0x65,
-  0xe9, 0x35, 0xf2, 0x7c, 0x9c, 0x35, 0x77, 0x59, 0x26, 0xa4, 0x59, 0x3a,
-  0x8d, 0x9e, 0x0c, 0xb0, 0xf2, 0x70, 0x65, 0x18, 0xac, 0x2f, 0xe4, 0x88,
-  0x24, 0x51, 0x98, 0x0a, 0xce, 0xd6, 0xbf, 0x55, 0x5f, 0x6f, 0x70, 0xfc,
-  0x62, 0xcc, 0xf2, 0xce, 0x73, 0xcd, 0xdf, 0xa7, 0x79, 0xf1, 0x40, 0x3a,
-  0x2d, 0xdc, 0xac, 0x46, 0x33, 0xe5, 0x41, 0xdf, 0xf0, 0xb7, 0xc7, 0x58,
-  0x8e, 0x6d, 0x2c, 0x7b, 0xb5, 0x2d, 0xe6, 0x74, 0xf1, 0x3d, 0x3d, 0xab,
-  0xed, 0x34, 0xd4, 0x6a, 0x77, 0x69, 0x78, 0x8b, 0x51, 0x6a, 0x09, 0x2f,
-  0xa3, 0x77, 0x91, 0x02, 0x92, 0xc0, 0x53, 0x21, 0x68, 0x7e, 0x16, 0x20,
-  0x76, 0x1e, 0x56, 0x1e, 0x0b, 0x6f, 0x98, 0xf3, 0x8c, 0x00, 0x12, 0x72,
-  0x5a, 0x73, 0x4d, 0x94, 0xa6, 0x6f, 0x0d, 0xe0, 0x4b, 0x77, 0xa2, 0x92,
-  0x39, 0x59, 0xe8, 0x23, 0x81, 0x03, 0x93, 0x3e, 0x9a, 0x2e, 0xcc, 0x97,
-  0x52, 0x2e, 0x64, 0x4f, 0x6e, 0x6d, 0x14, 0x91, 0x56, 0xa9, 0xe7, 0x4d,
-  0x43, 0xc7, 0x31, 0x1f, 0x01, 0x5b, 0x05, 0x14, 0x89, 0x6a, 0x44, 0xb0,
-  0x60, 0x12, 0xa0, 0x9e, 0x24, 0x36, 0xa8, 0x93, 0x5e, 0x5c, 0x3d, 0xb4,
-  0x2b, 0xe3, 0x7c, 0x21, 0x42, 0xab, 0x53, 0x48, 0xf6, 0x44, 0x47, 0x60,
-  0x87, 0x25, 0x3f, 0x2f, 0x4b, 0x56, 0xa7, 0x18, 0xfd, 0xdc, 0xed, 0xbb,
-  0x60, 0x08, 0xb4, 0xd2, 0xcb, 0x9d, 0x2d, 0x10, 0x0e, 0x17, 0x7d, 0xa4,
-  0x8c, 0x8a, 0x40, 0x8f, 0xf5, 0x05, 0xe1, 0xea, 0x93, 0xf6, 0x6d, 0x41,
-  0xac, 0x55, 0x5e, 0xd1, 0x58, 0x04, 0xa9, 0x25, 0x1c, 0x24, 0x45, 0x3d,
-  0xe2, 0x17, 0xdc, 0x1a, 0x11, 0xfb, 0xf9, 0xe8, 0xe8, 0x7c, 0x3b, 0x39,
-  0xef, 0x64, 0x9f, 0x03, 0x5c, 0x4c, 0x77, 0xb6, 0x2f, 0xef, 0xa5, 0x02,
-  0x09, 0x53, 0x31, 0xad, 0xce, 0x54, 0x56, 0x02, 0x3c, 0x4b, 0x3a, 0x06,
-  0xb7, 0xf3, 0x6f, 0x2e, 0xff, 0x3a, 0x63, 0x39, 0x04, 0xeb, 0x00, 0x27,
-  0x22, 0x4b, 0x52, 0xb4, 0x2f, 0x0c, 0x8c, 0x4d, 0x57, 0x12, 0xae, 0x9d,
-  0x29, 0xff, 0x25, 0x77, 0x5b, 0x73, 0xae, 0x67, 0x01, 0xd0, 0x02, 0x13,
-  0xa1, 0xa8, 0x37, 0x8f, 0x71, 0x41, 0x6a, 0xef, 0xd4, 0x7c, 0xfb, 0x75,
-  0x4a, 0xb6, 0x60, 0x7b, 0x5f, 0x67, 0x45, 0x48, 0xb3, 0x8d, 0x8f, 0x92,
-  0xbe, 0x20, 0x1b, 0x78, 0x3a, 0xec, 0xd2, 0x3c, 0x7a, 0xd9, 0xe5, 0xd2,
-  0x39, 0xbf, 0x9e, 0xcd, 0x0a, 0x2a, 0x28, 0x56, 0x25, 0xa9, 0xf4, 0x0e,
-  0x09, 0xde, 0x6b, 0xca, 0xe6, 0x6f, 0x70, 0x91, 0x2e, 0xee, 0x69, 0x32,
-  0xcc, 0x63, 0x75, 0x7d, 0xb3, 0x6f, 0xc4, 0xd3, 0xfe, 0xf0, 0x73, 0x36,
-  0x70, 0x6f, 0x8c, 0x4e, 0x90, 0x55, 0x2b, 0x88, 0xde, 0xa4, 0x46, 0x57,
-  0xa7, 0x3d, 0x51, 0xf6, 0x87, 0xce, 0xbe, 0x18, 0xfc, 0x0f, 0xda, 0x69,
-  0x7f, 0x5b, 0x86, 0xbe, 0xc3, 0x2d, 0xda, 0x50, 0x09, 0x6d, 0x2b, 0x2a,
-  0x81, 0x4c, 0x0c, 0xf0, 0x88, 0x72, 0x8c, 0xf3, 0x06, 0x14, 0xae, 0x4a,
-  0x54, 0xd2, 0x3e, 0x98, 0xa8, 0xba, 0x50, 0xe1, 0xad, 0x68, 0x62, 0xda,
-  0x30, 0xf9, 0x1f, 0xf4, 0x29, 0x7d, 0x9b, 0x21, 0xc6, 0x08, 0xc4, 0x7c,
-  0x7d, 0xfc, 0xe6, 0xec, 0xe2, 0xb8, 0x9d, 0x1b, 0xd0, 0x70, 0xc5, 0x09,
-  0x04, 0x1a, 0xba, 0xbd, 0x63, 0xf6, 0x15, 0xbf, 0x9c, 0x59, 0x5e, 0xe4,
-  0x84, 0x14, 0x4b, 0xce, 0x7f, 0x78, 0x6d, 0x7b, 0x97, 0x43, 0x3c, 0xbf,
-  0xf1, 0x4a, 0x53, 0xf6, 0x79, 0xa6, 0xbb, 0x1a, 0x04, 0xe9, 0x1a, 0xdb,
-  0x43, 0x12, 0x07, 0x1c, 0x44, 0xd1, 0xfe, 0x21, 0xbc, 0xc3, 0x61, 0x39,
-  0xfe, 0x56, 0xca, 0x64, 0x9f, 0x75, 0x4d, 0xb9, 0x6f, 0xb6, 0xd1, 0x40,
-  0xbd, 0x66, 0x0d, 0x83, 0x49, 0x2e, 0x18, 0xd8, 0x94, 0x26, 0x60, 0x39,
-  0x21, 0xe2, 0x93, 0x61, 0x12, 0x7e, 0x48, 0x03, 0x52, 0xf8, 0x4a, 0x2c,
-  0x92, 0x48, 0x05, 0x3f, 0xd9, 0x85, 0xc9, 0xd7, 0x2a, 0x91, 0x55, 0xa3,
-  0x3c, 0xa1, 0x56, 0x5b, 0xe8, 0x33, 0x23, 0x8d, 0xe4, 0xa7, 0xf9, 0x13,
-  0x19, 0xf1, 0xce, 0x9b, 0x6f, 0x6e, 0xd5, 0x04, 0xb4, 0xf4, 0xba, 0x6a,
-  0x7f, 0x93, 0xa8, 0x9d, 0xbe, 0xf9, 0xa7, 0x4d, 0x87, 0x49, 0xe5, 0xaa,
-  0x31, 0xf1, 0x2a, 0x4b, 0xae, 0xe8, 0xc6, 0xf6, 0x43, 0xd1, 0x63, 0x1d,
-  0xf1, 0x2a, 0x1b, 0x4d, 0x32, 0x18, 0x25, 0xa0, 0x88, 0xe2, 0x57, 0x08,
-  0x9b, 0xc2, 0x45, 0x0b, 0xca, 0xb6, 0xf2, 0xaa, 0xdd, 0xdd, 0x3a, 0x5a,
-  0x7d, 0x99, 0xbc, 0x3e, 0x55, 0x9b, 0x88, 0x9f, 0x6f, 0x5e, 0xb2, 0x00,
-  0xc6, 0x9c, 0xa6, 0xcf, 0x5d, 0xa5, 0x59, 0x43, 0x89, 0x83, 0xfa, 0xbe,
-  0x68, 0xe8, 0xb4, 0x42, 0xb0, 0x04, 0x93, 0x56, 0xe1, 0x42, 0xa2, 0xbd,
-  0xe4, 0x76, 0x6f, 0x8d, 0x7c, 0xd4, 0x17, 0xcf, 0x5e, 0x90, 0x12, 0x81,
-  0x10, 0xa9, 0xd4, 0xa1, 0x10, 0x2e, 0x42, 0x61, 0xfa, 0x0c, 0x53, 0x51,
-  0x44, 0xf5, 0xb0, 0x2d, 0x49, 0xfd, 0xc0, 0x71, 0x86, 0xca, 0x98, 0x25,
-  0x4e, 0x90, 0x23, 0x34, 0x5c, 0x67, 0x5b, 0xae, 0x86, 0x20, 0x0e, 0x59,
-  0x3f, 0x31, 0xcb, 0x90, 0x7e, 0x94, 0x3c, 0x45, 0x3e, 0x0c, 0xd1, 0xa3,
-  0xd9, 0xd7, 0xad, 0xe0, 0xf5, 0xcb, 0x92, 0x37, 0x1b, 0xb1, 0x9d, 0x55,
-  0x79, 0xfd, 0xd1, 0x1c, 0xbc, 0x7f, 0x93, 0xa4, 0xc2, 0x95, 0x89, 0x6e,
-  0xe4, 0x9a, 0xcc, 0x8b, 0x25, 0x15, 0x37, 0xf4, 0xaa, 0xd2, 0x6a, 0x8b,
-  0x57, 0xa8, 0x94, 0x42, 0xbc, 0x77, 0x31, 0xdc, 0x7e, 0xdd, 0x94, 0x8b,
-  0x80, 0xc7, 0x5e, 0xd2, 0x22, 0x65, 0x27, 0x84, 0xb7, 0x26, 0x4d, 0x15,
-  0x08, 0x1e, 0xc5, 0x4f, 0xa8, 0xca, 0xd3, 0x30, 0x79, 0x5f, 0x40, 0xbb,
-  0x91, 0xad, 0x29, 0x57, 0x49, 0x5e, 0x98, 0xb1, 0x98, 0xb1, 0x9a, 0xcb,
-  0x24, 0x26, 0xa8, 0x20, 0x0b, 0xdd, 0xde, 0x4a, 0x54, 0x94, 0x76, 0xd8,
-  0x36, 0x70, 0xb4, 0x2d, 0x25, 0x27, 0xcb, 0xb6, 0xe4, 0x4d, 0x58, 0xf9,
-  0x85, 0x8b, 0x56, 0x48, 0x81, 0x64, 0xb4, 0x4d, 0x69, 0x51, 0xd9, 0x6c,
-  0x36, 0x60, 0x46, 0x50, 0xe2, 0x47, 0x24, 0x3b, 0xc3, 0x2c, 0x53, 0x3a,
-  0xe1, 0x10, 0xbb, 0x9f, 0x15, 0x17, 0xdc, 0x3e, 0x48, 0xbe, 0x1a, 0x02,
-  0xa5, 0xac, 0x69, 0xcb, 0x82, 0x17, 0x57, 0x40, 0x37, 0xe1, 0xff, 0x9d,
-  0x6b, 0x06, 0xb3, 0xf3, 0x37, 0x15, 0xba, 0xb1, 0x32, 0x0d, 0x21, 0xc5,
-  0xd6, 0xe4, 0xe6, 0xba, 0x5a, 0x70, 0xbd, 0x98, 0x58, 0x31, 0x1b, 0xcf,
-  0x00, 0xe0, 0x27, 0x75, 0x6d, 0xeb, 0xac, 0xe1, 0xae, 0xf0, 0xab, 0x27,
-  0xaf, 0x5b, 0xa5, 0x27, 0x69, 0x26, 0x40, 0xf6, 0x16, 0x6f, 0xce, 0xd5,
-  0xb8, 0xe6, 0x23, 0xeb, 0xee, 0x16, 0xdb, 0x9a, 0xb3, 0x76, 0xc6, 0xf7,
-  0xee, 0x37, 0xf1, 0xe6, 0xa4, 0x0d, 0x56, 0x67, 0xb9, 0x05, 0x6d, 0x16,
-  0x7b, 0x45, 0x2b, 0xa3, 0xd2, 0x6e, 0xa0, 0xfa, 0xc7, 0xfa, 0x91, 0x10,
-  0xc6, 0x71, 0x33, 0x2f, 0xa7, 0x84, 0x39, 0xcf, 0x1e, 0x9c, 0x0b, 0x7a,
-  0x50, 0xe7, 0x42, 0xf0, 0xfa, 0xb5, 0x3f, 0x2e, 0x34, 0x62, 0x76, 0x29,
-  0xed, 0x3c, 0x11, 0x62, 0xf1, 0xe6, 0xdc, 0x40, 0xb5, 0x7e, 0x53, 0xc6,
-  0x2f, 0xfb, 0x43, 0x28, 0x92, 0x72, 0xd2, 0x78, 0x23, 0xa0, 0x07, 0xe2,
-  0xcd, 0xb1, 0xf0, 0x8d, 0x8c, 0x8c, 0x20, 0xdc, 0x30, 0x6e, 0x1f, 0x1a,
-  0x19, 0x3d, 0x18, 0xac, 0xb2, 0xf9, 0xa1, 0xe3, 0x51, 0xf3, 0x96, 0x98,
-  0x17, 0x27, 0xde, 0x5c, 0x7b, 0x81, 0x75, 0x85, 0xd1, 0x87, 0xd8, 0x02,
-  0x0b, 0x1f, 0x63, 0xa8, 0x85, 0x39, 0x53, 0x9d, 0x67, 0xc7, 0x3e, 0xb8,
-  0x72, 0x81, 0xe5, 0x1b, 0xc1, 0x2c, 0xcc, 0x8c, 0x84, 0x34, 0x5a, 0xf0,
-  0x24, 0xfb, 0xc0, 0x85, 0xd4, 0xa8, 0x1c, 0x76, 0xf3, 0x61, 0xfd, 0x84,
-  0xcc, 0x24, 0xbd, 0xf1, 0x7e, 0x8e, 0x02, 0x8c, 0x56, 0x56, 0x08, 0x57,
-  0x5a, 0x4a, 0xbf, 0x19, 0x97, 0xa4, 0x04, 0xe2, 0xf7, 0x51, 0x0a, 0x78,
-  0xdd, 0xf6, 0xee, 0x7b, 0xcc, 0xaf, 0xc6, 0x57, 0xd5, 0xa2, 0xcc, 0x0b,
-  0xcb, 0x82, 0x0e, 0x19, 0xe3, 0xf5, 0x31, 0x96, 0x5a, 0xbf, 0x2e, 0xd0,
-  0x32, 0xff, 0x48, 0x20, 0x70, 0xab, 0x28, 0x7c, 0x88, 0x30, 0x5d, 0x7b,
-  0x83, 0xe3, 0xa7, 0x75, 0xb5, 0x79, 0x48, 0x5a, 0xc4, 0xcc, 0x15, 0xea,
-  0x72, 0xc7, 0x79, 0xcd, 0x3e, 0x6e, 0x7f, 0xd2, 0x9e, 0xc9, 0x6e, 0xff,
-  0x16, 0x77, 0x53, 0x9b, 0x5d, 0x7e, 0xe7, 0x8e, 0x90, 0xaa, 0x00, 0xe0,
-  0x42, 0xd6, 0x52, 0x78, 0x04, 0x3b, 0xe5, 0xc6, 0xae, 0x94, 0xcf, 0x71,
-  0xc5, 0x54, 0x80, 0xe6, 0x31, 0xd0, 0x92, 0x82, 0x8f, 0x57, 0x19, 0x23,
-  0x73, 0x30, 0xbf, 0xb2, 0x1c, 0xab, 0x27, 0x47, 0x9e, 0x76, 0x5d, 0x64,
-  0xf9, 0xee, 0x97, 0xed, 0x75, 0x73, 0xa4, 0xc7, 0x61, 0x8d, 0xc0, 0x93,
-  0xcf, 0x76, 0x45, 0xde, 0x34, 0x23, 0x1f, 0x31, 0xef, 0x05, 0xe0, 0x79,
-  0x1f, 0x3e, 0x59, 0xdc, 0xf3, 0x95, 0x73, 0x5c, 0xcd, 0x1f, 0x38, 0xe4,
-  0xe6, 0x01, 0x37, 0x2a, 0xc2, 0xf4, 0x78, 0xa3, 0x0a, 0xce, 0xa5, 0xd4,
-  0xfc, 0x5b, 0x31, 0xf3, 0xab, 0x7a, 0xd0, 0xda, 0x85, 0xab, 0x7b, 0x22,
-  0x4f, 0x46, 0xbb, 0xe3, 0x26, 0x97, 0x32, 0x7b, 0xee, 0x5d, 0xcf, 0xe2,
-  0xcd, 0x49, 0x77, 0xdd, 0x5b, 0x32, 0x3d, 0x7d, 0xcf, 0x91, 0xca, 0xc4,
-  0xd8, 0xc6, 0xb8, 0x0c, 0xf7, 0x86, 0x1e, 0xf0, 0x5f, 0x24, 0x20, 0xc8,
-  0x8a, 0x9f, 0x15, 0xbe, 0xdd, 0x4e, 0x5f, 0x34, 0x77, 0xef, 0x1a, 0xb8,
-  0xad, 0x47, 0xa9, 0x6b, 0x97, 0x9b, 0xcb, 0xac, 0x21, 0x54, 0x08, 0x12,
-  0x10, 0x40, 0x69, 0x50, 0x57, 0x41, 0x6c, 0x67, 0x70, 0x82, 0x4c, 0x89,
-  0xb1, 0x3a, 0xc4, 0xf6, 0x25, 0xfc, 0xcd, 0x84, 0x49, 0xc0, 0x30, 0xad,
-  0x28, 0x05, 0x23, 0x8a, 0x88, 0x96, 0x71, 0xab, 0x33, 0xb1, 0x26, 0xe4,
-  0x71, 0x26, 0xc1, 0x0e, 0x8b, 0xd7, 0x75, 0x98, 0xd8, 0x48, 0x01, 0xe9,
-  0x90, 0x47, 0x66, 0xd7, 0x53, 0xbf, 0x12, 0xa4, 0x37, 0xfc, 0xaa, 0xcf,
-  0x53, 0x70, 0x6d, 0x06, 0x8f, 0x3f, 0xa2, 0x40, 0x56, 0x68, 0xcd, 0x50,
-  0x56, 0x28, 0x9b, 0x72, 0x3b, 0xb9, 0xc8, 0x28, 0x71, 0xeb, 0x96, 0x84,
-  0x29, 0x65, 0x66, 0x27, 0xdc, 0xc0, 0x56, 0x3e, 0xcc, 0x04, 0xb7, 0x08,
-  0x37, 0x35, 0xf1, 0xcb, 0x06, 0x3a, 0x8d, 0xd9, 0x19, 0xdb, 0xca, 0xdd,
-  0x96, 0x4a, 0x35, 0x90, 0xbd, 0xe1, 0x9e, 0xd1, 0xc5, 0xdf, 0x30, 0x05,
-  0x46, 0xe2, 0xab, 0xd7, 0x60, 0xc2, 0x13, 0x66, 0x4b, 0xfa, 0x74, 0xd7,
-  0x1b, 0x71, 0x41, 0x1f, 0xae, 0x43, 0x17, 0x35, 0xfc, 0xdc, 0xce, 0xac,
-  0xb9, 0x4b, 0xef, 0x43, 0x45, 0x7d, 0x77, 0xf0, 0xf4, 0xc5, 0x8b, 0xd6,
-  0x8d, 0x5e, 0x7b, 0xac, 0xa0, 0xcf, 0x76, 0x77, 0x39, 0xeb, 0xbc, 0xfb,
-  0x9a, 0xf9, 0xc5, 0xe0, 0x05, 0x5e, 0x6c, 0xbf, 0x56, 0x67, 0x66, 0x09,
-  0xa6, 0xab, 0xdf, 0x1b, 0xd0, 0x6f, 0x22, 0x9f, 0x83, 0xd7, 0x65, 0xe5,
-  0x5b, 0x2f, 0xe8, 0x73, 0x91, 0xb7, 0x38, 0x21, 0x1e, 0xd3, 0x58, 0x5e,
-  0x5d, 0x91, 0xbb, 0x8b, 0x9e, 0xc4, 0xc5, 0x67, 0x76, 0xc4, 0x5d, 0x5a,
-  0x4d, 0xc3, 0xe1, 0xee, 0xf6, 0x07, 0x7b, 0xab, 0x86, 0x0b, 0x5a, 0x53,
-  0xc0, 0x5b, 0x68, 0x3d, 0xc9, 0x9a, 0x34, 0xb6, 0x04, 0x83, 0x98, 0xbb,
-  0x0d, 0xed, 0x99, 0x1e, 0xed, 0xbd, 0x78, 0xd1, 0xa7, 0x9e, 0x3d, 0x7b,
-  0xf1, 0x62, 0x65, 0xd2, 0x9a, 0xf7, 0x99, 0xbb, 0xd2, 0x39, 0xa9, 0xe8,
-  0x75, 0xb7, 0x69, 0x6a, 0x32, 0x59, 0xe2, 0xdf, 0xa1, 0xdf, 0xbc, 0x4a,
-  0xde, 0x9d, 0x5d, 0x1e, 0x7b, 0xee, 0x1b, 0x1c, 0x2f, 0x0e, 0x5f, 0x7a,
-  0xf6, 0x28, 0xe2, 0xc1, 0x0b, 0x54, 0xa6, 0x80, 0x69, 0x4c, 0xb6, 0x56,
-  0x88, 0x72, 0x00, 0xa0, 0x56, 0xfd, 0x86, 0xff, 0xd2, 0xfd, 0xdc, 0x19,
-  0xc0, 0xcb, 0xd3, 0xfc, 0x3a, 0x6f, 0x7c, 0x26, 0x85, 0x2d, 0xb3, 0xda,
-  0x5c, 0x7a, 0xfe, 0x36, 0x9d, 0xe5, 0x36, 0xb4, 0xb3, 0x59, 0x13, 0x00,
-  0x95, 0x69, 0x15, 0x37, 0xc9, 0x30, 0xda, 0x0c, 0x20, 0xa0, 0xd9, 0x6c,
-  0x5a, 0xeb, 0x45, 0xc8, 0x8f, 0x0f, 0xf0, 0xa0, 0x9c, 0x16, 0xd8, 0xb3,
-  0x5c, 0xfe, 0x32, 0x85, 0x73, 0x99, 0x3f, 0xbd, 0x3a, 0xb8, 0x43, 0x92,
-  0x90, 0x91, 0x67, 0x8a, 0x1e, 0xa7, 0x76, 0x7c, 0xde, 0xc5, 0xcd, 0xda,
-  0xb9, 0x45, 0xad, 0x0f, 0xaf, 0x88, 0x03, 0x1e, 0x10, 0x51, 0x98, 0x66,
-  0x0b, 0xe5, 0x27, 0x2c, 0xda, 0xed, 0x98, 0xbd, 0x7c, 0x95, 0x5f, 0x2f,
-  0xab, 0x38, 0xb8, 0xea, 0xcf, 0x0e, 0xca, 0xac, 0x14, 0xb8, 0xe9, 0x5d,
-  0x5a, 0x65, 0x5a, 0xb2, 0xa5, 0xb8, 0xb7, 0x07, 0x5b, 0xed, 0x64, 0x85,
-  0x2c, 0x83, 0xa0, 0x38, 0xf0, 0x8b, 0x91, 0xc9, 0x7c, 0x65, 0x74, 0x19,
-  0x38, 0x13, 0x04, 0x60, 0x22, 0x54, 0xbc, 0x69, 0xe3, 0x70, 0xe3, 0xea,
-  0x6a, 0x37, 0xeb, 0x4d, 0xd7, 0x69, 0x2a, 0x53, 0xd0, 0x8d, 0xe2, 0x95,
-  0xcb, 0x4d, 0x8f, 0x71, 0x82, 0x9e, 0x84, 0x4f, 0xe6, 0xa6, 0xf4, 0x48,
-  0xaf, 0xc3, 0xc4, 0x52, 0x49, 0x8d, 0x87, 0xf4, 0xe1, 0x25, 0x9a, 0x1a,
-  0x25, 0x7a, 0x56, 0xa6, 0x53, 0x71, 0xaf, 0xb8, 0xd0, 0x3e, 0x6b, 0x07,
-  0x42, 0x02, 0x22, 0x6b, 0x1b, 0x10, 0xa4, 0xd2, 0x52, 0xcb, 0x2a, 0x9b,
-  0xcd, 0xac, 0x65, 0x64, 0x75, 0x93, 0x96, 0x85, 0xd5, 0x92, 0x58, 0x4e,
-  0x99, 0x8f, 0x70, 0x1e, 0xef, 0xf6, 0x30, 0xe2, 0x06, 0xa0, 0x0d, 0xcf,
-  0xab, 0x65, 0x59, 0x9b, 0x51, 0x04, 0x8a, 0x2e, 0x49, 0xcf, 0xeb, 0x91,
-  0x8c, 0x4e, 0xfe, 0xe7, 0xf1, 0xef, 0x19, 0x02, 0xab, 0xd2, 0x3b, 0x9b,
-  0xdc, 0x20, 0xf5, 0xb4, 0x25, 0x34, 0x65, 0xb3, 0x69, 0xd3, 0x99, 0x98,
-  0xf1, 0x54, 0x34, 0x17, 0xb7, 0x07, 0x82, 0x9c, 0x52, 0xe3, 0xcd, 0x6c,
-  0xac, 0x70, 0x6f, 0x17, 0x8d, 0x14, 0x5d, 0x51, 0xe7, 0x22, 0x73, 0x9b,
-  0x02, 0x98, 0xce, 0xc0, 0x22, 0x5d, 0x4c, 0x2e, 0xda, 0x0b, 0xfb, 0x9e,
-  0x1c, 0xc3, 0x60, 0x90, 0x08, 0xca, 0x37, 0x81, 0xa9, 0x88, 0xba, 0x65,
-  0x7a, 0xfb, 0x40, 0x91, 0x1d, 0x3f, 0x1f, 0x10, 0x75, 0x19, 0xab, 0x8c,
-  0xe2, 0x65, 0x55, 0xf2, 0xf2, 0xfd, 0xc5, 0xe9, 0x8a, 0xa4, 0x8e, 0x11,
-  0x56, 0x81, 0xa6, 0xab, 0x77, 0x91, 0x81, 0x8e, 0xa4, 0x4a, 0xce, 0xd3,
-  0xeb, 0xac, 0xe7, 0xb3, 0xba, 0xa8, 0xb2, 0x88, 0x09, 0x10, 0x1f, 0x44,
-  0xcc, 0x53, 0xe4, 0xd3, 0x48, 0x93, 0x18, 0x77, 0x51, 0x6a, 0x3f, 0x15,
-  0xe3, 0x6a, 0x96, 0xca, 0xec, 0x2d, 0x2b, 0x54, 0x8b, 0xfe, 0x21, 0x5a,
-  0x8b, 0x41, 0x7c, 0x42, 0x6d, 0x32, 0x2e, 0x07, 0xa8, 0xa2, 0x00, 0x11,
-  0xaa, 0x85, 0xf6, 0xbe, 0x20, 0x37, 0x7d, 0xcf, 0x23, 0xa0, 0x1a, 0x64,
-  0x31, 0x5e, 0x65, 0x9e, 0x0a, 0xa6, 0x0e, 0xb2, 0x6e, 0x25, 0x76, 0xf9,
-  0xb7, 0xdc, 0xfc, 0x75, 0xa6, 0x41, 0xa2, 0x8c, 0x48, 0xd7, 0xea, 0x48,
-  0x15, 0x52, 0x9c, 0x61, 0x4a, 0x71, 0x2f, 0x39, 0xd6, 0x91, 0x26, 0xa7,
-  0xd2, 0xbf, 0x03, 0x89, 0xc8, 0xb0, 0x22, 0x64, 0xbb, 0x26, 0x61, 0x73,
-  0xc5, 0xbb, 0xc7, 0x06, 0x9b, 0xce, 0x88, 0xe0, 0xdd, 0x7a, 0xb2, 0x68,
-  0x9c, 0xd3, 0x92, 0x48, 0xc1, 0xa9, 0x3f, 0x69, 0x61, 0x9d, 0xce, 0xad,
-  0x95, 0xfd, 0xdd, 0x19, 0x88, 0x5c, 0xa0, 0xe8, 0xb0, 0x2f, 0x55, 0x0b,
-  0x06, 0x66, 0x77, 0x14, 0x92, 0xad, 0xe7, 0x2d, 0xab, 0xb7, 0xf7, 0xfe,
-  0xa3, 0x1f, 0x25, 0xb2, 0x5e, 0x41, 0xbe, 0xe7, 0x75, 0xb7, 0x01, 0xc6,
-  0x19, 0x1b, 0xe6, 0xac, 0xdf, 0xe1, 0xd2, 0x76, 0x79, 0x3d, 0x72, 0x5f,
-  0x46, 0x7d, 0x8b, 0x03, 0x2f, 0x4e, 0x9d, 0x1c, 0x71, 0x86, 0xc9, 0xe0,
-  0x75, 0x6e, 0xee, 0x91, 0x9a, 0xa9, 0x12, 0xd8, 0x31, 0xc0, 0x58, 0x5c,
-  0x7b, 0x10, 0x93, 0xb0, 0x5a, 0x8a, 0xc6, 0x53, 0x80, 0xa4, 0xb3, 0xaf,
-  0xd8, 0xe8, 0x8e, 0xd9, 0x13, 0xab, 0x59, 0xb5, 0x94, 0x1a, 0xcf, 0x29,
-  0x0d, 0xa9, 0xf3, 0x5a, 0x48, 0x71, 0x53, 0xfc, 0x5b, 0xce, 0x87, 0xb9,
-  0x15, 0x22, 0xf3, 0xa3, 0x0c, 0x06, 0x80, 0xf1, 0x38, 0x5e, 0x01, 0xa9,
-  0x2a, 0x10, 0x98, 0x9b, 0x96, 0x9c, 0x48, 0xf3, 0x56, 0xba, 0x7e, 0x60,
-  0xd3, 0x25, 0x4b, 0xed, 0xce, 0x31, 0x16, 0xe6, 0xdd, 0xe1, 0x14, 0x9a,
-  0x89, 0x69, 0x78, 0xd8, 0xf1, 0x8c, 0x2b, 0x2d, 0xfd, 0x0a, 0x94, 0x61,
-  0x6b, 0x54, 0xcd, 0x8d, 0x46, 0xe3, 0x65, 0xa1, 0x28, 0x8a, 0x50, 0x94,
-  0x92, 0x89, 0x1e, 0x8b, 0xe9, 0x03, 0x50, 0x64, 0x9e, 0xf0, 0xee, 0x41,
-  0x06, 0x90, 0x24, 0x7f, 0x1c, 0x38, 0x52, 0xf0, 0xad, 0xfb, 0xcc, 0xe8,
-  0xd8, 0x96, 0x9f, 0x43, 0x8d, 0xa9, 0x48, 0x8e, 0x4a, 0xc2, 0x05, 0xaf,
-  0xea, 0x16, 0xd3, 0x31, 0xcc, 0x10, 0x2f, 0x06, 0xc9, 0x53, 0x6e, 0x34,
-  0x01, 0xa2, 0xd5, 0x5d, 0x16, 0xd9, 0x27, 0xa2, 0x7a, 0x5c, 0xdd, 0x5c,
-  0xa8, 0x68, 0xff, 0x70, 0x78, 0xf1, 0xee, 0xe4, 0xdd, 0x37, 0x07, 0xc9,
-  0xf1, 0xa7, 0xac, 0x9a, 0x50, 0x71, 0xc6, 0xbf, 0x2e, 0xa7, 0xf9, 0x04,
-  0x82, 0x42, 0x6a, 0xde, 0xf9, 0xb9, 0x44, 0xc6, 0x14, 0xc8, 0xc4, 0xcb,
-  0x4a, 0x97, 0x6e, 0x20, 0xdf, 0x05, 0x8c, 0x4a, 0x5c, 0x96, 0xc6, 0x92,
-  0x2a, 0xaf, 0x97, 0xde, 0xf6, 0x99, 0x70, 0x95, 0x1e, 0x04, 0x0c, 0x10,
-  0x4d, 0xbd, 0x91, 0xb9, 0x26, 0xd7, 0x6b, 0xf2, 0xfa, 0xf4, 0x34, 0xe4,
-  0xd8, 0x43, 0xc9, 0x48, 0xee, 0x3e, 0x27, 0x24, 0xa1, 0x09, 0xb3, 0xf9,
-  0xeb, 0x7c, 0xcc, 0xb0, 0x27, 0x52, 0x01, 0x48, 0xda, 0xb4, 0x44, 0x1e,
-  0x7c, 0x2b, 0xa6, 0x2b, 0xdd, 0x45, 0x06, 0x4e, 0x16, 0x68, 0x45, 0xac,
-  0x70, 0x5e, 0x4d, 0x61, 0x10, 0x19, 0x19, 0x59, 0x5e, 0x35, 0xa4, 0x23,
-  0xb5, 0x6e, 0xd3, 0x36, 0xc9, 0xfd, 0xda, 0x48, 0xc2, 0x0d, 0x9b, 0x3a,
-  0xad, 0x0c, 0xef, 0x89, 0xad, 0x2b, 0x4d, 0x97, 0x2e, 0x2b, 0x87, 0x28,
-  0x8f, 0x10, 0x0b, 0xa3, 0x4d, 0xb3, 0xd4, 0x56, 0x7c, 0xac, 0x49, 0x5e,
-  0x86, 0x02, 0xe3, 0x2e, 0xab, 0x32, 0x57, 0xa5, 0x1d, 0xb9, 0x4e, 0x46,
-  0xdc, 0x0d, 0x93, 0x51, 0x69, 0x9e, 0x0f, 0xb5, 0x2c, 0x5b, 0x44, 0xa8,
-  0x55, 0x91, 0x14, 0xdd, 0x71, 0x40, 0x2f, 0x94, 0x57, 0x40, 0x74, 0xae,
-  0x3d, 0xde, 0x48, 0x09, 0x43, 0xda, 0xff, 0xe3, 0xcc, 0x2a, 0x15, 0xf7,
-  0x1a, 0xff, 0xa1, 0x4d, 0xd2, 0x1b, 0x18, 0x81, 0xda, 0x43, 0x69, 0x18,
-  0x2a, 0xac, 0xe8, 0xb5, 0xf4, 0x40, 0x79, 0x30, 0x1f, 0x66, 0xdd, 0x1d,
-  0xf0, 0x03, 0x45, 0x57, 0xd4, 0xf2, 0xf4, 0xdc, 0xa7, 0x52, 0xfa, 0xc2,
-  0xc6, 0x54, 0x59, 0x26, 0x11, 0x2b, 0x42, 0xd6, 0x04, 0xa1, 0xf2, 0x33,
-  0x5b, 0xd5, 0x08, 0x8f, 0xf9, 0x09, 0x7d, 0xfe, 0xeb, 0x72, 0xe3, 0xf4,
-  0x9d, 0x87, 0x81, 0xf4, 0x82, 0x20, 0xa9, 0xcc, 0xd8, 0x79, 0xc3, 0xed,
-  0x18, 0xd0, 0x47, 0xe4, 0x22, 0x5f, 0x49, 0xb5, 0x51, 0xaf, 0xa7, 0x0f,
-  0x4a, 0xbe, 0xa1, 0x16, 0x82, 0xea, 0xde, 0xd2, 0xb4, 0xa0, 0xbe, 0x57,
-  0x9c, 0x9b, 0x83, 0x30, 0x49, 0xbd, 0x92, 0xdf, 0x5e, 0x5c, 0x13, 0x3a,
-  0x01, 0x92, 0x27, 0xc3, 0xe6, 0x3c, 0x2a, 0xb1, 0xd5, 0x42, 0x58, 0x62,
-  0x37, 0x79, 0x71, 0x5b, 0x7e, 0xe4, 0x1b, 0x5f, 0x72, 0x33, 0x83, 0x14,
-  0x5f, 0x9f, 0x2b, 0x2b, 0x8a, 0x5a, 0x53, 0x62, 0x04, 0xee, 0x3b, 0xdf,
-  0x58, 0x1e, 0x10, 0xde, 0x0c, 0x46, 0x42, 0x32, 0x96, 0x53, 0xde, 0x5e,
-  0x4f, 0x9d, 0xe6, 0xec, 0x59, 0xea, 0x6b, 0x8d, 0xcc, 0x24, 0x9b, 0x51,
-  0x09, 0x6f, 0x47, 0x2f, 0x6f, 0xe9, 0x72, 0xe4, 0xb6, 0x01, 0x1a, 0x55,
-  0xa3, 0x98, 0xab, 0x6f, 0x92, 0x61, 0xb7, 0x08, 0x57, 0xc7, 0x90, 0x45,
-  0x04, 0x94, 0x63, 0x4f, 0x93, 0x9b, 0xb2, 0x8c, 0x5e, 0xdc, 0xee, 0x0e,
-  0x81, 0x52, 0x83, 0xcc, 0xdd, 0x15, 0x1a, 0x84, 0xa5, 0x39, 0x71, 0x81,
-  0xc8, 0x00, 0x71, 0x6c, 0x49, 0x91, 0x44, 0x1f, 0xf4, 0x18, 0xc9, 0xda,
-  0xb7, 0x1b, 0x77, 0x28, 0xb8, 0x9b, 0x63, 0x30, 0x07, 0xfe, 0x5d, 0xe7,
-  0x3e, 0x6e, 0x5a, 0x39, 0x9e, 0xfe, 0xa4, 0x44, 0x2f, 0x3b, 0x46, 0xc4,
-  0x39, 0x9c, 0x24, 0xf6, 0x0d, 0x0c, 0xa7, 0xa2, 0x1d, 0xd6, 0x40, 0x3f,
-  0xf3, 0x06, 0x02, 0xe4, 0x8f, 0xfb, 0xbb, 0xab, 0x84, 0x3c, 0x2b, 0xb2,
-  0x5a, 0x36, 0x81, 0x8e, 0xa3, 0x35, 0xd0, 0xf9, 0x22, 0x74, 0xf9, 0xb1,
-  0x74, 0x81, 0x2c, 0x17, 0x09, 0x0a, 0x73, 0x50, 0x59, 0x97, 0x15, 0xf3,
-  0x3f, 0xfc, 0x67, 0x54, 0xf3, 0x71, 0xf2, 0xeb, 0xc2, 0x5b, 0x63, 0x6a,
-  0x29, 0x5a, 0xaf, 0x81, 0x65, 0x89, 0xe7, 0x2e, 0xf1, 0xb4, 0x76, 0xa7,
-  0x37, 0xc0, 0xba, 0x87, 0xb0, 0x63, 0x34, 0x42, 0x1e, 0x8a, 0x64, 0x63,
-  0xd7, 0xce, 0x17, 0x11, 0x81, 0x65, 0x0f, 0x81, 0x60, 0x7e, 0xe9, 0x96,
-  0xb2, 0xb0, 0x5d, 0x8d, 0x3d, 0x87, 0x9b, 0xd6, 0x93, 0xa5, 0x6c, 0x92,
-  0xa7, 0x02, 0x20, 0xc5, 0x9c, 0xd0, 0xb7, 0xda, 0x57, 0x23, 0xb0, 0x69,
-  0x83, 0xa8, 0xcf, 0x5f, 0x6b, 0x1a, 0x86, 0x09, 0x7e, 0xb0, 0xa6, 0x1c,
-  0x4f, 0x6d, 0x8f, 0x5f, 0xef, 0x25, 0x5b, 0x24, 0x57, 0xb7, 0x55, 0x7b,
-  0x0d, 0xe3, 0xfd, 0xae, 0x52, 0x2e, 0x04, 0x70, 0x5a, 0x07, 0x60, 0x5e,
-  0xe8, 0xaf, 0x89, 0x31, 0xf4, 0x2a, 0xa3, 0x02, 0x2c, 0x67, 0x69, 0x45,
-  0xb2, 0xdd, 0x7c, 0xf2, 0x6a, 0x39, 0x8b, 0x99, 0x3a, 0x38, 0xdb, 0xb6,
-  0xc0, 0x58, 0x5e, 0xd7, 0x4b, 0xa5, 0xf9, 0x75, 0xe9, 0xf0, 0x42, 0x8f,
-  0x34, 0x33, 0x3d, 0x02, 0x57, 0xef, 0x8c, 0x8b, 0xb0, 0x44, 0xf7, 0x2e,
-  0x1c, 0xc4, 0x5c, 0x95, 0x53, 0x54, 0x4c, 0xb6, 0xa4, 0xb8, 0x6f, 0x55,
-  0x76, 0x4d, 0x5d, 0x92, 0x1d, 0xbe, 0x40, 0x49, 0x24, 0x52, 0xa4, 0xe8,
-  0xba, 0xea, 0x34, 0xd7, 0x3b, 0x3b, 0xbf, 0x3c, 0x39, 0x7b, 0x37, 0x4a,
-  0xfe, 0xad, 0xb7, 0x36, 0x41, 0xa9, 0x4d, 0xa6, 0xf8, 0x63, 0xdf, 0xad,
-  0x49, 0xf2, 0x52, 0xbc, 0x0d, 0xab, 0xec, 0x63, 0x4f, 0x87, 0x9f, 0x98,
-  0xfb, 0xdb, 0x08, 0x58, 0x7d, 0x53, 0x48, 0x68, 0x64, 0xb1, 0x3a, 0xbc,
-  0x39, 0x81, 0xbe, 0xec, 0xa7, 0xa7, 0xfa, 0x76, 0x34, 0x4b, 0x7b, 0x67,
-  0xb6, 0x74, 0x5a, 0x5f, 0x21, 0x83, 0x21, 0xfb, 0x9c, 0xfd, 0x62, 0x81,
-  0x2a, 0xf2, 0x96, 0x2b, 0x1d, 0x8e, 0x07, 0xb7, 0xa4, 0x56, 0x2e, 0xab,
-  0x5a, 0x75, 0x88, 0x26, 0xfc, 0xe6, 0xf8, 0x72, 0x7b, 0x98, 0x5c, 0x68,
-  0x2e, 0xb7, 0xe2, 0x53, 0xad, 0xe2, 0x93, 0x5a, 0xdd, 0x4c, 0xa8, 0x2b,
-  0xc5, 0x93, 0x61, 0xf4, 0xe7, 0x59, 0x5a, 0x44, 0x93, 0xb0, 0x48, 0xa7,
-  0xa5, 0x12, 0xbe, 0x24, 0x89, 0x55, 0x26, 0xab, 0x0f, 0xc5, 0x23, 0x4a,
-  0x67, 0x0a, 0x89, 0xf3, 0xf7, 0x97, 0x68, 0xf0, 0xf5, 0xf1, 0xe9, 0xf1,
-  0xe5, 0x71, 0xd7, 0x7a, 0x1f, 0x33, 0xed, 0x16, 0xb2, 0x6f, 0x9a, 0x6c,
-  0x72, 0x53, 0x94, 0xb3, 0xf2, 0x3a, 0x97, 0x22, 0x66, 0xc9, 0x0f, 0xd9,
-  0xf8, 0xf5, 0xe1, 0xf7, 0xa4, 0x51, 0x90, 0xdf, 0xe9, 0xfc, 0xe2, 0xec,
-  0xfc, 0xcd, 0xc9, 0xbb, 0xd7, 0xfd, 0xe4, 0xe8, 0xec, 0xfc, 0xcf, 0xfd,
-  0xe4, 0xed, 0xd9, 0xf7, 0xc7, 0x11, 0xd4, 0x35, 0xf1, 0xd6, 0x46, 0x8a,
-  0x28, 0x4b, 0x31, 0x21, 0xbe, 0xd0, 0xd8, 0xfc, 0x46, 0xed, 0xd2, 0xce,
-  0x45, 0x42, 0x69, 0x09, 0x75, 0x29, 0x12, 0xd7, 0xcc, 0x5d, 0x3f, 0xf9,
-  0xf6, 0xf8, 0xf0, 0x75, 0x3f, 0x20, 0x2d, 0x1d, 0xf1, 0xa8, 0x68, 0x74,
-  0x76, 0xc8, 0xa0, 0xba, 0x64, 0xfb, 0x03, 0x5a, 0x02, 0x87, 0xba, 0xf8,
-  0xc8, 0x9a, 0x0d, 0x8b, 0xba, 0x2f, 0xd3, 0x55, 0x08, 0x0a, 0xa1, 0xc8,
-  0x5d, 0x59, 0x36, 0xb0, 0x95, 0x09, 0x02, 0x85, 0x4d, 0x55, 0xed, 0x36,
-  0xb7, 0x04, 0xf0, 0xfe, 0x36, 0xdd, 0x4f, 0x97, 0x3c, 0xce, 0x6d, 0xd0,
-  0x6f, 0x95, 0x9f, 0x81, 0x40, 0x62, 0x17, 0x64, 0x2a, 0x55, 0x97, 0x40,
-  0x4f, 0x4f, 0x20, 0xa0, 0x11, 0x53, 0x7b, 0x2a, 0xa5, 0x5d, 0xa4, 0x68,
-  0xbb, 0xaf, 0x28, 0x94, 0x4a, 0xa1, 0x2a, 0x34, 0x13, 0x34, 0x85, 0xee,
-  0x9b, 0x52, 0x46, 0xe0, 0x47, 0xfe, 0x71, 0x04, 0x77, 0xcd, 0x65, 0x50,
-  0xae, 0xcc, 0xe6, 0xcc, 0x18, 0x5d, 0x85, 0x75, 0x72, 0xee, 0x81, 0x64,
-  0x70, 0xa2, 0xce, 0x89, 0x75, 0x6a, 0x96, 0x1c, 0x18, 0x71, 0xd0, 0x80,
-  0xd6, 0x42, 0x1d, 0x57, 0x6d, 0x39, 0x61, 0x21, 0x5d, 0x72, 0xf6, 0xae,
-  0x02, 0xd9, 0x06, 0x3a, 0x4c, 0x5d, 0xe7, 0xbe, 0xad, 0x13, 0x29, 0xce,
-  0x9c, 0x2b, 0xc7, 0xf5, 0xc7, 0x68, 0xdd, 0xb6, 0x5f, 0x2b, 0x2c, 0x0d,
-  0xce, 0x81, 0x01, 0x23, 0x4d, 0x0a, 0x71, 0x8d, 0x52, 0x08, 0x6e, 0xc0,
-  0xf6, 0xb4, 0x8f, 0x10, 0xb6, 0xc5, 0xe3, 0x34, 0xed, 0x58, 0xba, 0x10,
-  0xaf, 0x75, 0xeb, 0xea, 0x60, 0xf9, 0x3e, 0xbd, 0x27, 0xbb, 0x9f, 0x9c,
-  0xb7, 0x9d, 0x34, 0x8a, 0x3a, 0x19, 0x08, 0x87, 0xe8, 0xdc, 0x5c, 0x85,
-  0xa1, 0x9f, 0x69, 0xeb, 0xcd, 0x0a, 0xe1, 0xe8, 0xfb, 0x6f, 0x65, 0x31,
-  0x3c, 0x74, 0xf8, 0xe9, 0x89, 0x39, 0x12, 0x91, 0x34, 0xfe, 0x69, 0x89,
-  0x82, 0x88, 0x80, 0x1c, 0xe4, 0x7a, 0x9d, 0x50, 0x5b, 0xe1, 0x87, 0xa9,
-  0x40, 0x68, 0xf4, 0xcb, 0xa8, 0x1c, 0xfa, 0xc0, 0xa7, 0x83, 0x35, 0xbb,
-  0x38, 0xbe, 0xbc, 0x18, 0x26, 0x5b, 0x3e, 0x43, 0xdd, 0xf3, 0xe1, 0x6e,
-  0x18, 0xbe, 0xa1, 0xe2, 0xa4, 0xdb, 0x89, 0xf7, 0x59, 0xf7, 0x5d, 0xd4,
-  0x2d, 0x5d, 0xff, 0xdd, 0x10, 0x77, 0xec, 0xb1, 0x52, 0xec, 0xc6, 0xbe,
-  0xe7, 0x17, 0x40, 0x6d, 0x8d, 0x92, 0x7e, 0xb1, 0xe6, 0x6b, 0xdf, 0x1e,
-  0x9f, 0x9e, 0x87, 0xa3, 0xfc, 0xfe, 0xe2, 0xcd, 0x9f, 0xdb, 0xa3, 0x7c,
-  0xf2, 0x34, 0xf2, 0xd5, 0xdf, 0xd2, 0xb5, 0x9e, 0xd5, 0xe5, 0xcc, 0xe8,
-  0x2c, 0x48, 0x2e, 0x41, 0x6e, 0xc9, 0x81, 0xb9, 0x04, 0x08, 0x9b, 0xfe,
-  0x65, 0xc8, 0xac, 0x0a, 0xe7, 0x0c, 0x45, 0xba, 0x64, 0x8c, 0x89, 0x3c,
-  0x2a, 0x50, 0x4c, 0xcf, 0xfe, 0x46, 0x0e, 0x0f, 0x92, 0x96, 0x28, 0x74,
-  0xb1, 0x48, 0xf3, 0xc0, 0x0f, 0xfd, 0xde, 0xe2, 0xab, 0x5d, 0xd2, 0x19,
-  0xe4, 0x8c, 0xd8, 0x6d, 0x33, 0x7b, 0x42, 0xb7, 0xea, 0x6d, 0xa9, 0xaa,
-  0x96, 0x26, 0x2b, 0xa3, 0xfb, 0xb6, 0x27, 0xb8, 0xee, 0xc8, 0x25, 0x0c,
-  0x2e, 0x17, 0xc2, 0x24, 0xd9, 0x2b, 0xb6, 0xd0, 0x6b, 0x43, 0x06, 0x3d,
-  0xb5, 0x6f, 0x05, 0xf7, 0xac, 0x4d, 0xda, 0x3c, 0x92, 0x88, 0x3a, 0x6c,
-  0x2f, 0xdc, 0x25, 0x28, 0x7f, 0x97, 0x35, 0x93, 0x1d, 0xae, 0x6e, 0x1f,
-  0x54, 0x28, 0x88, 0xb9, 0xbd, 0xca, 0xa2, 0x03, 0xa7, 0xa5, 0xeb, 0x81,
-  0x5d, 0xcf, 0x7e, 0x2e, 0x8e, 0xab, 0x9b, 0xe0, 0x29, 0xea, 0xd4, 0x8f,
-  0x48, 0xf8, 0xdd, 0x2f, 0x53, 0xe0, 0xf2, 0x58, 0x94, 0xd6, 0xba, 0xb5,
-  0xde, 0x78, 0x61, 0xc8, 0x65, 0xaf, 0x91, 0x37, 0x17, 0x71, 0xaa, 0xb0,
-  0x54, 0xd6, 0x1d, 0x64, 0x39, 0x52, 0xaf, 0x5a, 0x1e, 0x17, 0xf5, 0xcf,
-  0xe9, 0xb4, 0x49, 0x3f, 0xba, 0x1a, 0x3c, 0xa9, 0xd7, 0xe8, 0x04, 0xf3,
-  0x9d, 0xaa, 0xf9, 0xbe, 0x40, 0xe5, 0xeb, 0x78, 0x01, 0x09, 0xd1, 0x7a,
-  0xb5, 0x61, 0x12, 0xed, 0x6d, 0x9a, 0xea, 0xf6, 0x80, 0xd4, 0xf9, 0x3e,
-  0x78, 0x1a, 0x06, 0x10, 0xf2, 0xc5, 0xed, 0x53, 0x78, 0x6c, 0x9e, 0xf7,
-  0xf9, 0x5f, 0xcf, 0x5d, 0x6e, 0x86, 0x67, 0x95, 0xb0, 0xde, 0xce, 0x6a,
-  0xee, 0xc9, 0xb9, 0x66, 0x99, 0x06, 0xec, 0xca, 0x1e, 0x5d, 0x28, 0xf7,
-  0x52, 0x35, 0x76, 0xf3, 0x8e, 0xf6, 0x96, 0x64, 0xa0, 0x39, 0xac, 0x7f,
-  0x19, 0x57, 0x54, 0xfa, 0xab, 0xa9, 0x7f, 0x5e, 0x97, 0xd3, 0x6b, 0x94,
-  0xdc, 0xcf, 0x86, 0xbb, 0x6b, 0x49, 0xd1, 0x5b, 0xf8, 0x5d, 0x67, 0xbf,
-  0x31, 0xcd, 0x4e, 0xc2, 0x3f, 0xe2, 0x09, 0x16, 0x2c, 0x69, 0xb8, 0x7f,
-  0x65, 0x87, 0xaf, 0x25, 0x6a, 0xde, 0x1b, 0x3e, 0x69, 0x4b, 0x82, 0xa6,
-  0xba, 0x47, 0x42, 0x8a, 0x31, 0xef, 0x23, 0x9b, 0xee, 0xc4, 0xd3, 0x0f,
-  0xf5, 0x4e, 0xe2, 0xe9, 0x23, 0x08, 0x02, 0x7e, 0x6c, 0x8e, 0xb2, 0x22,
-  0x50, 0x92, 0x63, 0xca, 0x99, 0xb9, 0x38, 0x7e, 0xf3, 0x7e, 0x74, 0xfc,
-  0x1a, 0xd4, 0x52, 0x5d, 0xd5, 0x93, 0xa2, 0x6e, 0x39, 0xed, 0x0b, 0xf6,
-  0x6e, 0x37, 0x25, 0x2b, 0x25, 0xd2, 0x91, 0x76, 0x7d, 0x19, 0x2e, 0xa7,
-  0x83, 0xad, 0xdc, 0x94, 0xc6, 0xb4, 0x0a, 0xb3, 0x1c, 0x58, 0x11, 0x90,
-  0x77, 0x7f, 0x01, 0xf7, 0x02, 0x8f, 0x7a, 0x9a, 0x51, 0xe5, 0x85, 0x97,
-  0x8c, 0xa6, 0x08, 0x24, 0xdf, 0x5b, 0x8b, 0x6b, 0x36, 0x9b, 0x7b, 0x96,
-  0x65, 0x0b, 0x0d, 0x1e, 0xa7, 0xf3, 0x72, 0x59, 0xb0, 0x77, 0xcd, 0xac,
-  0x90, 0xfa, 0x94, 0xe0, 0xc1, 0x44, 0xbb, 0x7c, 0xf9, 0x47, 0x47, 0x4e,
-  0x0e, 0x14, 0x72, 0x1c, 0x10, 0x84, 0x59, 0x23, 0x68, 0x24, 0xdf, 0xdc,
-  0xb4, 0x28, 0xdb, 0xfe, 0x56, 0xde, 0xb4, 0xb5, 0xc3, 0x15, 0x55, 0x44,
-  0x50, 0x78, 0xce, 0x28, 0xd7, 0xdc, 0x97, 0x74, 0x76, 0x5d, 0x56, 0xa6,
-  0xd1, 0xb9, 0xcd, 0xc0, 0xab, 0x00, 0x9f, 0xa9, 0xb7, 0xbb, 0x95, 0x7b,
-  0x02, 0x51, 0x35, 0xbb, 0xe7, 0x48, 0x6a, 0xc6, 0x49, 0xc9, 0x74, 0xcc,
-  0x78, 0x9a, 0x80, 0xa2, 0xa4, 0x18, 0x13, 0x8b, 0xc6, 0x91, 0xa4, 0x12,
-  0x63, 0x2e, 0x78, 0x06, 0xc3, 0x8d, 0xf8, 0xf7, 0xac, 0x2a, 0xbb, 0x0e,
-  0x01, 0x55, 0xfc, 0xb4, 0xe7, 0x7e, 0xc7, 0xff, 0x99, 0xa5, 0x3a, 0xf6,
-  0xf6, 0x63, 0x27, 0x60, 0x9e, 0x7e, 0x82, 0x9b, 0x63, 0xe5, 0x76, 0x10,
-  0xa7, 0x1f, 0x4d, 0x08, 0x3e, 0x2f, 0xd5, 0x9e, 0x88, 0x13, 0xbf, 0x49,
-  0xfc, 0x64, 0x0b, 0x06, 0xb9, 0xd8, 0xe5, 0x16, 0x3f, 0x48, 0x80, 0x26,
-  0xe2, 0x75, 0xb1, 0xbd, 0x86, 0xaf, 0x29, 0xa5, 0x61, 0x92, 0x05, 0xb0,
-  0xc5, 0x05, 0x09, 0xf0, 0xb9, 0x6d, 0xfa, 0xf1, 0xac, 0xa4, 0x48, 0x57,
-  0x6d, 0xfd, 0x27, 0x91, 0x3a, 0xa2, 0xa4, 0x64, 0x56, 0xb4, 0x0b, 0x81,
-  0xe4, 0xb2, 0x00, 0x0e, 0x70, 0xab, 0x23, 0x35, 0x29, 0x9f, 0x88, 0xd7,
-  0x5c, 0x4b, 0x6f, 0x60, 0x14, 0xfc, 0x66, 0x20, 0x48, 0xb4, 0x9d, 0x8c,
-  0x1b, 0xe8, 0xb7, 0x39, 0x04, 0xa5, 0xd3, 0x48, 0xfb, 0xe3, 0x3c, 0x91,
-  0x1b, 0xb8, 0x41, 0x25, 0xf1, 0x3b, 0x62, 0x5d, 0x73, 0x06, 0x3d, 0xb9,
-  0xab, 0x90, 0x49, 0x43, 0xe3, 0x81, 0xa1, 0x92, 0x16, 0x7e, 0x67, 0xb1,
-  0x02, 0xa6, 0x91, 0xbc, 0x9c, 0x22, 0x07, 0x87, 0x89, 0xe1, 0xd3, 0x90,
-  0x33, 0x80, 0x98, 0x33, 0xa4, 0x37, 0x9b, 0xe4, 0xee, 0xfa, 0x94, 0xcf,
-  0x97, 0x73, 0xbc, 0xde, 0x67, 0xa5, 0x61, 0x30, 0x47, 0x95, 0x25, 0x5d,
-  0xd6, 0x21, 0x82, 0xa5, 0x52, 0x2f, 0xa2, 0xbb, 0xf7, 0x6d, 0xe8, 0x12,
-  0xdb, 0xb6, 0x61, 0xf0, 0x08, 0xbd, 0xc5, 0x84, 0xd2, 0x58, 0xa8, 0xff,
-  0xe3, 0x3b, 0x34, 0x79, 0x69, 0x34, 0x83, 0x2f, 0x23, 0x31, 0xcd, 0x98,
-  0xf8, 0xc8, 0x6b, 0x01, 0xcd, 0x66, 0x53, 0xcf, 0x14, 0xe1, 0x1d, 0x47,
-  0x37, 0x3a, 0x2f, 0xd3, 0x4a, 0x19, 0xe5, 0x4a, 0xa9, 0xf0, 0xa7, 0x31,
-  0x50, 0xe7, 0x41, 0xe4, 0x8b, 0x49, 0xb6, 0x3c, 0xad, 0x1c, 0x7c, 0x4f,
-  0xcb, 0x45, 0x70, 0x8d, 0x2a, 0xeb, 0x00, 0x94, 0x20, 0x79, 0xdf, 0x7c,
-  0x7e, 0x57, 0xa0, 0x15, 0x62, 0x1f, 0x91, 0xdf, 0x55, 0x66, 0x59, 0x5d,
-  0x21, 0x6d, 0x66, 0xec, 0xb6, 0xc8, 0x23, 0x51, 0xd6, 0xb9, 0x45, 0x98,
-  0x16, 0x80, 0xc9, 0x60, 0x0e, 0xcc, 0x84, 0xc8, 0xda, 0xf5, 0x99, 0x76,
-  0x02, 0x60, 0xbf, 0xa7, 0x9f, 0x3e, 0x85, 0x97, 0xa5, 0x33, 0xa8, 0xb8,
-  0x0c, 0x2e, 0x5b, 0x5b, 0xcf, 0x3e, 0x75, 0xac, 0xad, 0x61, 0xbc, 0x58,
-  0x2d, 0x5f, 0x0d, 0x24, 0x1d, 0xc7, 0x25, 0x07, 0x71, 0x78, 0xb6, 0xd2,
-  0xc8, 0x3c, 0xb2, 0x50, 0xb8, 0x4b, 0xf3, 0x58, 0x39, 0x1a, 0x81, 0xf3,
-  0xd9, 0x22, 0x5e, 0x1a, 0x64, 0x33, 0x7f, 0x36, 0x37, 0x46, 0x77, 0xa4,
-  0x39, 0xd4, 0x09, 0xb2, 0x61, 0xe4, 0x69, 0xb9, 0x84, 0x0b, 0x34, 0x9c,
-  0x27, 0xfa, 0x0a, 0x4f, 0x3b, 0x9d, 0x26, 0x73, 0x55, 0xe5, 0xa8, 0x8b,
-  0xcc, 0x67, 0xba, 0x4e, 0xf6, 0xcc, 0xf4, 0xe7, 0xc5, 0x92, 0x30, 0x7d,
-  0x1e, 0xfd, 0xa0, 0xa5, 0x51, 0x89, 0x4c, 0xfb, 0x0c, 0x58, 0x51, 0xcd,
-  0xe8, 0xa6, 0x83, 0x57, 0x7b, 0xc1, 0x25, 0x3e, 0x1e, 0xa8, 0xbf, 0x61,
-  0x2b, 0xbf, 0xf9, 0x17, 0x6c, 0x4c, 0xed, 0xb4, 0x51, 0x3c, 0xb9, 0x52,
-  0xb3, 0x4f, 0x66, 0xb6, 0x99, 0xe0, 0xdd, 0xdd, 0x68, 0xee, 0x36, 0x1b,
-  0x7a, 0xbc, 0xc4, 0x11, 0xe8, 0x48, 0x4b, 0x7e, 0xdb, 0x72, 0x12, 0x10,
-  0x71, 0x65, 0x23, 0x67, 0x91, 0xd3, 0x89, 0x25, 0xda, 0xf8, 0xdf, 0xe0,
-  0x4c, 0xd7, 0x69, 0x3d, 0x1b, 0xe4, 0x5d, 0x31, 0x7e, 0x0c, 0x38, 0x9a,
-  0x05, 0x93, 0xd8, 0x5d, 0x68, 0x9a, 0x18, 0x1d, 0x8e, 0x4e, 0x3b, 0x2c,
-  0x46, 0x6b, 0xd9, 0x14, 0xf7, 0xda, 0x1a, 0xcf, 0x6f, 0x40, 0x98, 0xa6,
-  0xc1, 0x19, 0xba, 0x47, 0x18, 0x6e, 0x41, 0x78, 0x60, 0x50, 0xf0, 0xad,
-  0xaa, 0x08, 0x53, 0x1f, 0xe0, 0xe3, 0x8e, 0x58, 0x2e, 0xe8, 0x0a, 0xf3,
-  0xf1, 0x00, 0xf6, 0xcf, 0x85, 0x7b, 0xd8, 0x7b, 0x1a, 0xe1, 0xec, 0x99,
-  0xee, 0x08, 0x86, 0xe4, 0xa1, 0x40, 0x2c, 0x73, 0xb0, 0xe9, 0xc8, 0x47,
-  0x64, 0x0f, 0x50, 0xfd, 0xa9, 0x41, 0x8c, 0x7e, 0xc6, 0xe2, 0xca, 0x44,
-  0x95, 0xac, 0xf1, 0x34, 0xe1, 0x49, 0xd8, 0xb1, 0xe6, 0x09, 0x2a, 0x6a,
-  0xc3, 0xc1, 0x32, 0x88, 0xcf, 0x34, 0x64, 0x3f, 0xe5, 0x68, 0xdd, 0x15,
-  0x57, 0x0f, 0xd2, 0x1e, 0x78, 0x6d, 0x76, 0x05, 0x64, 0xce, 0x9c, 0xb8,
-  0x55, 0xf2, 0xb7, 0x65, 0x6e, 0x6e, 0x27, 0xca, 0xdc, 0x19, 0x26, 0xaf,
-  0x19, 0x57, 0x24, 0x25, 0x78, 0xb8, 0x1e, 0x17, 0x8a, 0x76, 0x31, 0x70,
-  0x4d, 0x14, 0x44, 0xd3, 0x81, 0x20, 0x88, 0x62, 0x3a, 0x84, 0x94, 0xb0,
-  0xb7, 0x9c, 0x2f, 0x7b, 0x44, 0xdd, 0x9e, 0x9b, 0x93, 0x0e, 0xee, 0x14,
-  0xc9, 0xab, 0x03, 0x9c, 0x44, 0xc2, 0xce, 0x0a, 0x06, 0x07, 0xde, 0xb1,
-  0xfe, 0x18, 0xda, 0x9b, 0xfd, 0x56, 0xe1, 0x05, 0xd8, 0x5f, 0x62, 0x03,
-  0x34, 0x54, 0xb7, 0xa3, 0x48, 0x67, 0x3b, 0x75, 0x33, 0x25, 0xe9, 0xb7,
-  0x2c, 0x66, 0xd4, 0x4f, 0x6a, 0x49, 0x8b, 0xcc, 0x74, 0xe7, 0xa6, 0x89,
-  0x91, 0x9c, 0xf0, 0x0a, 0xb5, 0x96, 0x48, 0x42, 0xc0, 0xab, 0x02, 0x85,
-  0x1e, 0x08, 0x20, 0x24, 0xb3, 0xf1, 0x67, 0x8b, 0xec, 0x50, 0x1e, 0x2f,
-  0xe6, 0xb2, 0xb5, 0x6e, 0xeb, 0x72, 0xee, 0x6f, 0x69, 0xbd, 0xcc, 0x46,
-  0x1b, 0x97, 0xb5, 0x32, 0x21, 0x9a, 0x41, 0x9a, 0xd7, 0x5b, 0xe7, 0x09,
-  0xd4, 0x51, 0x0f, 0xb2, 0x73, 0x44, 0xca, 0x47, 0x3e, 0x7d, 0x90, 0x96,
-  0x83, 0xdf, 0x08, 0x8b, 0x24, 0xfe, 0x62, 0x62, 0x8e, 0x38, 0xf3, 0x10,
-  0x19, 0x92, 0x16, 0x3d, 0x27, 0xa0, 0x98, 0x16, 0x4b, 0x05, 0xeb, 0x99,
-  0xf7, 0x91, 0xa2, 0x38, 0x66, 0x33, 0x2d, 0x25, 0xd9, 0x7e, 0x32, 0x33,
-  0xc2, 0x3e, 0x62, 0x6b, 0x6a, 0x41, 0x24, 0xa2, 0xaf, 0xea, 0x77, 0xc5,
-  0x69, 0xbd, 0x24, 0xd5, 0x63, 0xb6, 0xa4, 0x2f, 0x33, 0xf3, 0x93, 0x65,
-  0x1e, 0xd2, 0x1c, 0xe1, 0x28, 0x5b, 0x97, 0xe5, 0xf7, 0xa0, 0x33, 0xea,
-  0x11, 0x97, 0x2d, 0xb5, 0x7c, 0x9a, 0x72, 0x7a, 0x75, 0xc9, 0xaf, 0x86,
-  0x2b, 0x7a, 0x47, 0x06, 0x61, 0xdf, 0x2f, 0x09, 0xea, 0x5b, 0xdf, 0x94,
-  0x0f, 0xa1, 0xdd, 0x69, 0x97, 0xd9, 0x8c, 0xb1, 0x31, 0xd9, 0xb8, 0x62,
-  0xab, 0x67, 0x7a, 0x77, 0x68, 0xe2, 0x2c, 0x30, 0xca, 0x3e, 0x7b, 0x17,
-  0x4a, 0x7f, 0x76, 0x07, 0xfb, 0xa8, 0x3a, 0xa0, 0x2b, 0x2b, 0x7f, 0x86,
-  0x44, 0x1d, 0xb1, 0x4a, 0xa0, 0xbe, 0x63, 0xd9, 0x1c, 0x08, 0xbf, 0xee,
-  0xe7, 0x3f, 0xf3, 0x3e, 0x7c, 0xd6, 0xae, 0x8f, 0x21, 0x54, 0x6c, 0xbf,
-  0xea, 0x40, 0xa5, 0x8f, 0x3b, 0x51, 0x2b, 0x80, 0xe9, 0xff, 0x77, 0x9e,
-  0xa8, 0x34, 0x79, 0xdc, 0x99, 0x4a, 0xbb, 0x87, 0x2a, 0x52, 0xbb, 0x75,
-  0x65, 0x8f, 0x7f, 0xc3, 0x53, 0xc6, 0xc7, 0xec, 0x17, 0x9d, 0x33, 0xdd,
-  0x14, 0xff, 0x37, 0x9f, 0xb2, 0xcf, 0x3b, 0x5a, 0x20, 0x78, 0x0d, 0xd7,
-  0x94, 0xa1, 0xf1, 0xf1, 0x0d, 0x84, 0x26, 0x26, 0x5d, 0x6b, 0xc7, 0x52,
-  0x90, 0xc5, 0x6b, 0xd1, 0x30, 0x97, 0x4d, 0x24, 0xa0, 0x0e, 0x58, 0x1b,
-  0xe6, 0xe3, 0x99, 0x95, 0x79, 0x9a, 0xa3, 0xbb, 0xb6, 0xe1, 0xd0, 0x3f,
-  0x65, 0x89, 0x40, 0xbd, 0xda, 0xeb, 0x43, 0xab, 0x41, 0xe8, 0xb8, 0xae,
-  0xcd, 0xdd, 0xbe, 0xc8, 0x59, 0x63, 0x30, 0xda, 0x0b, 0xe5, 0x53, 0x7e,
-  0x33, 0x1a, 0x0d, 0x0e, 0xcf, 0x4f, 0xba, 0x27, 0xaf, 0xfd, 0x3d, 0x2d,
-  0xc5, 0xfb, 0x6c, 0x65, 0x55, 0x9a, 0xd5, 0x68, 0x85, 0xf6, 0xb7, 0x8d,
-  0xaa, 0xdb, 0x9d, 0xd8, 0xc3, 0xba, 0x85, 0xc6, 0x93, 0x0e, 0xf9, 0x84,
-  0xc2, 0x42, 0x84, 0xc9, 0x29, 0x75, 0x9c, 0xdf, 0x4d, 0x72, 0x86, 0x9f,
-  0x08, 0xc0, 0x8b, 0xe0, 0xab, 0x00, 0xdd, 0x44, 0xb2, 0xf7, 0xe2, 0xf9,
-  0x9e, 0x39, 0x18, 0xf7, 0x4c, 0xd9, 0x26, 0xef, 0x3f, 0x1d, 0x3e, 0xd9,
-  0xa1, 0x8a, 0xe8, 0x79, 0xe3, 0x45, 0x16, 0xa4, 0x7d, 0x23, 0xef, 0x22,
-  0xc1, 0x7b, 0xea, 0xd6, 0xbb, 0xe3, 0xa3, 0x84, 0x11, 0x5e, 0x20, 0xf0,
-  0x4a, 0x90, 0x70, 0x42, 0xc9, 0x2b, 0xb2, 0x22, 0x88, 0x30, 0x93, 0x28,
-  0x1d, 0xaa, 0x2f, 0x8c, 0xb7, 0x6b, 0x60, 0x8e, 0x05, 0xd3, 0x91, 0xa8,
-  0x35, 0x81, 0x3c, 0xee, 0xc2, 0xf6, 0x84, 0x24, 0x1e, 0x1b, 0x16, 0x32,
-  0x33, 0x8b, 0x48, 0x85, 0x4b, 0x7f, 0x4e, 0x1e, 0x49, 0xc1, 0x4c, 0x95,
-  0x18, 0x57, 0xaf, 0x8f, 0x1a, 0x30, 0x2b, 0x4c, 0x20, 0xe7, 0x9e, 0x0c,
-  0x2c, 0x1d, 0x91, 0x88, 0x8a, 0x4f, 0x23, 0x17, 0xcb, 0x64, 0x6e, 0x8d,
-  0x92, 0xab, 0xbf, 0x4d, 0x8b, 0xe1, 0x2f, 0xb5, 0xa8, 0x22, 0x2a, 0x71,
-  0xdb, 0x70, 0xe2, 0xbe, 0x8b, 0xa8, 0x16, 0x83, 0x69, 0xd5, 0x88, 0xd8,
-  0x48, 0xea, 0xfa, 0x02, 0xb0, 0x01, 0xe8, 0x34, 0xb3, 0x09, 0xe5, 0x35,
-  0x64, 0x5b, 0x5f, 0xd7, 0x78, 0x04, 0xc5, 0xef, 0xbe, 0xb5, 0x53, 0x65,
-  0xe9, 0x4c, 0x5e, 0x14, 0xe3, 0x6d, 0x59, 0xc7, 0x7e, 0x79, 0x85, 0x7a,
-  0x11, 0x75, 0xc0, 0x79, 0x74, 0x07, 0xe4, 0x9d, 0xa5, 0xfc, 0xe2, 0xa7,
-  0x2d, 0x96, 0x61, 0x9e, 0x36, 0x13, 0x65, 0x77, 0x33, 0x17, 0x4a, 0xbe,
-  0x48, 0x67, 0xc9, 0x23, 0x40, 0xb8, 0xab, 0x17, 0xff, 0x41, 0x89, 0xa7,
-  0x67, 0x73, 0x45, 0x7d, 0x19, 0x5b, 0xe8, 0x9d, 0xb9, 0xd8, 0x62, 0x65,
-  0xc2, 0x9f, 0x25, 0x2d, 0x49, 0xb7, 0xa2, 0x41, 0x42, 0x85, 0x8a, 0x40,
-  0x73, 0xec, 0x27, 0xdd, 0x18, 0xb3, 0xb1, 0x25, 0x95, 0x62, 0x6c, 0x52,
-  0xce, 0x17, 0x2e, 0x60, 0xa0, 0x8d, 0x4a, 0x8a, 0xd8, 0xf6, 0xb0, 0x2b,
-  0x06, 0x63, 0xe2, 0x9d, 0xeb, 0xba, 0x4e, 0x1e, 0x21, 0x7c, 0x7f, 0x0b,
-  0x61, 0x48, 0x4a, 0x1c, 0x7b, 0x1a, 0x7e, 0x29, 0x7b, 0xa1, 0x7f, 0x5d,
-  0x24, 0x5b, 0x08, 0x9a, 0x66, 0x3e, 0x2b, 0x9c, 0x46, 0xae, 0x43, 0x3f,
-  0x15, 0x42, 0x63, 0xf4, 0xd1, 0xed, 0xe1, 0x63, 0x68, 0x5e, 0xfb, 0xc2,
-  0xe8, 0x6a, 0x49, 0x5c, 0x43, 0xba, 0x99, 0xff, 0x1b, 0x14, 0xc1, 0x67,
-  0x89, 0x5d, 0xab, 0xc7, 0xe8, 0x83, 0xcc, 0x89, 0xcc, 0x05, 0x04, 0x03,
-  0xba, 0x1f, 0x67, 0x74, 0xfd, 0x3f, 0x7d, 0xf0, 0xff, 0x97, 0xf4, 0xc1,
-  0x5f, 0x7d, 0x4a, 0x95, 0xcd, 0x73, 0xa0, 0x20, 0x40, 0x7b, 0x36, 0xdd,
-  0x69, 0x8c, 0x21, 0x73, 0x67, 0xf7, 0x8f, 0x3f, 0xa2, 0xde, 0x09, 0x4d,
-  0xc2, 0xad, 0xf0, 0x7f, 0xc7, 0x11, 0x7d, 0xd4, 0xc9, 0xfc, 0x7f, 0xde,
-  0x8f, 0xff, 0x6e, 0xe7, 0x70, 0xb5, 0x36, 0xb8, 0x65, 0x36, 0xd9, 0x1d,
-  0x95, 0x1c, 0xe0, 0xb2, 0x1f, 0xb0, 0xb4, 0xb7, 0x9d, 0xe6, 0x43, 0x89,
-  0x2b, 0x3c, 0x77, 0x27, 0xe7, 0xdf, 0x3f, 0x67, 0xbe, 0x8a, 0x51, 0x37,
-  0x6a, 0x59, 0x25, 0xa7, 0xaf, 0x0f, 0xcf, 0x7f, 0xc1, 0x69, 0xff, 0x33,
-  0xfc, 0xd0, 0x8b, 0x2c, 0x9b, 0x0e, 0x38, 0x42, 0xf2, 0x12, 0xff, 0x88,
-  0xc4, 0x14, 0x53, 0x9b, 0x8e, 0x8e, 0x6d, 0x4b, 0x81, 0x93, 0x30, 0x56,
-  0x8b, 0x97, 0x8d, 0x9a, 0x52, 0x08, 0x41, 0xc4, 0x02, 0x75, 0xd4, 0x02,
-  0x2f, 0x4b, 0x59, 0x4c, 0xb7, 0x39, 0x23, 0x06, 0x5f, 0xc6, 0x56, 0x91,
-  0x10, 0x3b, 0x1d, 0xef, 0x6b, 0x22, 0x91, 0xb2, 0x34, 0x7c, 0xde, 0x33,
-  0x38, 0xf8, 0x21, 0xff, 0x39, 0x1f, 0x82, 0x7b, 0x37, 0x14, 0x0e, 0xee,
-  0x30, 0xd9, 0xd3, 0x93, 0x5d, 0x2e, 0x92, 0x8d, 0xac, 0xdc, 0xdf, 0x31,
-  0x35, 0xbd, 0xfb, 0xf9, 0x55, 0x98, 0x81, 0xb5, 0x53, 0xe9, 0xaf, 0x44,
-  0x6b, 0x06, 0x29, 0x16, 0x38, 0x5d, 0x56, 0x61, 0x51, 0xa0, 0xd4, 0x9f,
-  0x1f, 0x8e, 0x92, 0x73, 0x7f, 0xed, 0x27, 0xda, 0xb3, 0x69, 0x3e, 0xef,
-  0xbd, 0x10, 0xd8, 0xd4, 0x36, 0x79, 0x23, 0xf3, 0xe0, 0x24, 0x7e, 0xaf,
-  0x1c, 0xa8, 0x76, 0x4f, 0xfd, 0xfb, 0x0e, 0x7d, 0xfb, 0xe7, 0x10, 0x83,
-  0xe5, 0xbd, 0xbb, 0x1e, 0xe9, 0x54, 0x16, 0x4d, 0x45, 0x9c, 0xc6, 0x1a,
-  0x27, 0x55, 0x8e, 0x68, 0x23, 0x17, 0xfd, 0x24, 0xd9, 0x94, 0xcb, 0x24,
-  0x63, 0xd6, 0x42, 0x6e, 0x41, 0x3e, 0xdf, 0x49, 0xd6, 0x4c, 0x86, 0x6e,
-  0x6d, 0xc1, 0xf8, 0x45, 0x15, 0x94, 0x8d, 0x92, 0xab, 0x45, 0xe6, 0xcc,
-  0x1c, 0x55, 0xf7, 0xc2, 0x4e, 0xb3, 0xc2, 0x5b, 0xa1, 0xc1, 0xfe, 0x15,
-  0x48, 0xe4, 0xdf, 0x10, 0x79, 0xb9, 0xbe, 0x14, 0x50, 0x98, 0x6d, 0xad,
-  0xe6, 0x89, 0x15, 0x0b, 0x29, 0x0a, 0x19, 0xa3, 0xa2, 0xa1, 0xf9, 0x5d,
-  0xde, 0xdc, 0x53, 0xc2, 0xfe, 0x9d, 0xe0, 0xc4, 0xbb, 0xf2, 0x7e, 0x74,
-  0xfa, 0x84, 0xb1, 0x91, 0x97, 0xa7, 0x23, 0x9f, 0xf9, 0xba, 0x4e, 0xb8,
-  0x6c, 0xb7, 0x11, 0x3f, 0x5f, 0x1f, 0x1f, 0x8e, 0x2e, 0x87, 0x91, 0x31,
-  0x86, 0xa8, 0x10, 0x97, 0x39, 0x48, 0x2c, 0x40, 0xb3, 0xf4, 0x9e, 0xc8,
-  0xe6, 0x24, 0x01, 0x89, 0xfa, 0xc6, 0x5d, 0xd3, 0xb6, 0xc9, 0xcc, 0xe5,
-  0xda, 0x0f, 0xc0, 0x15, 0x85, 0x24, 0x51, 0x66, 0xee, 0xc6, 0xf9, 0x8c,
-  0x46, 0x60, 0xba, 0x65, 0x8c, 0xa1, 0xb9, 0xe0, 0x8a, 0x91, 0xce, 0x5a,
-  0xce, 0x08, 0x4e, 0x46, 0xdf, 0x69, 0x7b, 0x22, 0x88, 0xcc, 0x52, 0x72,
-  0x7c, 0x57, 0x67, 0xec, 0x19, 0x2d, 0xa3, 0xac, 0x33, 0x61, 0x0c, 0xa3,
-  0x36, 0x74, 0xae, 0x38, 0x9d, 0xc8, 0x02, 0xfa, 0xf1, 0x0a, 0xf8, 0x0e,
-  0xc2, 0x74, 0xa8, 0xb4, 0xfe, 0xa8, 0xa0, 0xf0, 0x49, 0x83, 0x92, 0xf6,
-  0xe9, 0xda, 0x2a, 0x3b, 0xfb, 0x5d, 0x4b, 0xc8, 0x2c, 0x34, 0x92, 0x47,
-  0x29, 0x89, 0xa0, 0x6b, 0xdb, 0xfd, 0x90, 0x13, 0xfd, 0xee, 0x76, 0x47,
-  0x4b, 0x69, 0xaf, 0xb8, 0x86, 0xc8, 0xa9, 0xcc, 0x01, 0x27, 0x79, 0x50,
-  0xb4, 0xfd, 0xb6, 0x8c, 0x17, 0xd5, 0x49, 0x26, 0x37, 0x99, 0xb9, 0x45,
-  0x86, 0x5e, 0x0a, 0xf4, 0xa3, 0x27, 0x64, 0x23, 0xe0, 0xca, 0x8a, 0x4c,
-  0xcf, 0x2f, 0x9e, 0x90, 0xa7, 0x4f, 0xc3, 0x09, 0xa9, 0xb2, 0xbf, 0x4d,
-  0x63, 0xf4, 0xc2, 0x00, 0x69, 0x03, 0x21, 0xce, 0xc8, 0xea, 0x0b, 0xe6,
-  0x48, 0xa6, 0xae, 0xee, 0x50, 0x31, 0x12, 0x85, 0xbe, 0x3a, 0xe6, 0x29,
-  0x32, 0xb0, 0x29, 0x04, 0x19, 0x56, 0x57, 0x6c, 0x24, 0x73, 0xd9, 0x3d,
-  0xab, 0x80, 0xa7, 0x6e, 0xde, 0xbc, 0xa0, 0x3c, 0xe5, 0x23, 0x6b, 0x45,
-  0x16, 0x41, 0x3b, 0x51, 0xd2, 0x82, 0x52, 0xb1, 0xec, 0xd9, 0x19, 0x0c,
-  0xae, 0x9a, 0x85, 0x1d, 0xd8, 0xda, 0xdd, 0xb1, 0x1b, 0x4c, 0xc6, 0x8a,
-  0xa1, 0x5f, 0x56, 0x28, 0xbe, 0xc1, 0x9e, 0x14, 0x1d, 0x3f, 0x23, 0xad,
-  0x05, 0x4b, 0x6c, 0xa7, 0x20, 0x80, 0x94, 0x51, 0xc5, 0x0c, 0x46, 0x8c,
-  0x82, 0xe5, 0x47, 0xaa, 0x22, 0x3e, 0x76, 0x22, 0x42, 0xe1, 0x81, 0x69,
-  0x69, 0x15, 0x8a, 0xd3, 0xf1, 0x8a, 0x08, 0xd7, 0xf0, 0xa8, 0xcc, 0x00,
-  0x77, 0x93, 0xb1, 0xbf, 0x83, 0x90, 0x86, 0xd7, 0x98, 0xf2, 0xb7, 0xd9,
-  0x0c, 0x59, 0x39, 0x59, 0x31, 0xa9, 0xee, 0x17, 0x3e, 0x1f, 0xf6, 0xf4,
-  0x01, 0x0d, 0xfe, 0x81, 0x15, 0x68, 0xc1, 0xe7, 0xf7, 0x8c, 0xac, 0xdb,
-  0x0e, 0xf5, 0xaf, 0xd4, 0x96, 0x9f, 0x65, 0xee, 0x3e, 0xba, 0x84, 0x1b,
-  0x1f, 0x60, 0x4c, 0x46, 0x8c, 0x97, 0x49, 0xc2, 0x7c, 0x73, 0x9a, 0x92,
-  0xdc, 0x8d, 0x7b, 0x2c, 0xc1, 0x20, 0x64, 0x11, 0xc4, 0x8f, 0x5e, 0xfb,
-  0xfd, 0x3e, 0xcf, 0xd8, 0xed, 0x7e, 0x90, 0x55, 0x00, 0x91, 0xf0, 0x86,
-  0xdc, 0x34, 0x5a, 0x10, 0x5e, 0x1c, 0x53, 0x74, 0x64, 0xb5, 0xb8, 0xd0,
-  0x3e, 0xfb, 0xa3, 0xac, 0x37, 0x54, 0x33, 0xd7, 0x56, 0x54, 0x6e, 0xe7,
-  0xd3, 0xce, 0xb9, 0x6c, 0x23, 0x23, 0x59, 0x19, 0xbc, 0xa5, 0x9e, 0xa5,
-  0xf1, 0x32, 0x9f, 0x35, 0x89, 0x4d, 0x0f, 0xa4, 0xa7, 0x6f, 0xf7, 0x93,
-  0x55, 0xec, 0xce, 0x43, 0xf9, 0x3d, 0xb2, 0x3d, 0xa7, 0x54, 0x48, 0xc0,
-  0x51, 0xcf, 0x25, 0xb6, 0x0a, 0x27, 0xc0, 0x8b, 0xe4, 0x9f, 0x7e, 0xbe,
-  0xf7, 0xd9, 0xf3, 0xed, 0xf5, 0x15, 0xc6, 0xa9, 0xf2, 0x06, 0x65, 0xb2,
-  0xc9, 0x46, 0xa2, 0x7f, 0xee, 0x0f, 0xfd, 0x39, 0x0a, 0xcb, 0x03, 0x04,
-  0x14, 0x3c, 0x53, 0xda, 0x12, 0x34, 0x0d, 0x4a, 0xa1, 0x4e, 0x5b, 0x85,
-  0x07, 0x46, 0xb6, 0x8c, 0x9c, 0x72, 0x6c, 0xe5, 0xd0, 0x28, 0xec, 0x0e,
-  0x93, 0x8d, 0xc4, 0xc1, 0x13, 0xed, 0xc0, 0x13, 0xee, 0x99, 0x57, 0x89,
-  0x8d, 0x7b, 0x8a, 0xbf, 0x0f, 0xdb, 0xff, 0xf2, 0x03, 0x9a, 0xae, 0x81,
-  0x5f, 0xb7, 0xca, 0x4f, 0x7e, 0xef, 0x55, 0x7e, 0xf2, 0xc0, 0x2a, 0x3f,
-  0x79, 0xec, 0x2a, 0x7f, 0xf6, 0xec, 0xf9, 0xe7, 0xbf, 0x6e, 0x95, 0xbd,
-  0x49, 0xfe, 0x3f, 0xb3, 0xca, 0xde, 0x36, 0xfb, 0x75, 0xab, 0x2c, 0xc0,
-  0x90, 0x40, 0x10, 0x4b, 0xd1, 0x0a, 0xa0, 0xf8, 0x28, 0xed, 0x9c, 0x61,
-  0x97, 0xfc, 0xb0, 0x25, 0x72, 0x6d, 0x71, 0xfb, 0xda, 0x8a, 0x55, 0x46,
-  0x11, 0x8b, 0x98, 0xd9, 0x2e, 0x07, 0x1e, 0x1a, 0xee, 0x62, 0x46, 0x85,
-  0x8f, 0x36, 0x07, 0x9b, 0xea, 0x22, 0xd1, 0x1c, 0x23, 0xa5, 0x90, 0xe1,
-  0xaf, 0x99, 0xc5, 0xfe, 0x27, 0x52, 0x10, 0x85, 0xb8, 0x19, 0x0f, 0xf9,
-  0xd4, 0x9a, 0xb4, 0x15, 0x75, 0x30, 0x62, 0xd8, 0xac, 0xa0, 0xf2, 0x8a,
-  0xed, 0x31, 0x13, 0xf5, 0xd8, 0x22, 0x1d, 0x16, 0x9c, 0x6c, 0x0b, 0x92,
-  0x04, 0x49, 0x6c, 0x48, 0xc3, 0x13, 0xec, 0x93, 0xba, 0xae, 0xbc, 0xd7,
-  0x05, 0x6b, 0xd7, 0x29, 0x68, 0xbe, 0x0a, 0x31, 0x4f, 0x98, 0xd3, 0xc6,
-  0xab, 0xf4, 0x26, 0x66, 0xd1, 0x6b, 0xea, 0xee, 0x74, 0x39, 0x5f, 0x28,
-  0x9d, 0x16, 0x25, 0x37, 0xe4, 0x40, 0x38, 0x69, 0x36, 0x2d, 0xc3, 0x2e,
-  0x23, 0xfe, 0x25, 0x9b, 0xeb, 0x90, 0x30, 0x62, 0xc9, 0x2b, 0x55, 0xa4,
-  0x85, 0x44, 0x34, 0x1f, 0x94, 0x47, 0x01, 0x5c, 0x17, 0x33, 0xf9, 0x74,
-  0x6f, 0x5b, 0x36, 0x9d, 0x4c, 0xc7, 0xa7, 0xd9, 0x78, 0x79, 0xad, 0x39,
-  0xa9, 0xb6, 0x66, 0x53, 0x7b, 0xb1, 0x90, 0x80, 0x41, 0x2c, 0x15, 0x59,
-  0x9f, 0x81, 0xb0, 0xf7, 0x61, 0x7a, 0x7e, 0x43, 0xd5, 0xca, 0x26, 0xeb,
-  0x70, 0x53, 0xc1, 0xd0, 0xb1, 0x07, 0xf2, 0xbe, 0x37, 0x74, 0xfc, 0xa4,
-  0xb5, 0xa2, 0x91, 0xe2, 0x32, 0xfe, 0x56, 0x69, 0x26, 0x8b, 0xc1, 0x55,
-  0x4a, 0x04, 0x77, 0x41, 0x52, 0xa2, 0x60, 0x25, 0xc5, 0x85, 0x77, 0x79,
-  0x74, 0x9e, 0xbc, 0x49, 0xa5, 0xb4, 0x45, 0xb2, 0x65, 0x04, 0xd3, 0x67,
-  0x4f, 0xf7, 0x9e, 0x6c, 0xaf, 0x55, 0x50, 0xdb, 0x84, 0x2d, 0xf8, 0x56,
-  0x51, 0xc6, 0x30, 0xab, 0x97, 0x4b, 0x63, 0x4d, 0x0a, 0x11, 0x84, 0xf9,
-  0xd0, 0x87, 0x77, 0x67, 0xaf, 0x8f, 0x4f, 0x0f, 0xff, 0x6c, 0x13, 0x8e,
-  0x69, 0x0e, 0x34, 0x81, 0xed, 0x83, 0x31, 0xeb, 0xee, 0x3f, 0x18, 0x3b,
-  0xd9, 0xfc, 0x72, 0xeb, 0xc9, 0x36, 0x12, 0x77, 0x82, 0x3a, 0x67, 0xd7,
-  0x59, 0x2b, 0x5b, 0x5b, 0x00, 0xc4, 0x6b, 0x28, 0x47, 0x46, 0xb6, 0x4c,
-  0xde, 0xee, 0xd0, 0x48, 0x2d, 0x41, 0x24, 0x32, 0x01, 0xb7, 0xdb, 0xa4,
-  0x1e, 0x95, 0x7e, 0x2a, 0xac, 0x44, 0x92, 0x76, 0x1b, 0xd0, 0x67, 0x2d,
-  0x66, 0xf9, 0x24, 0x27, 0x35, 0xbe, 0x36, 0xfb, 0x96, 0x10, 0xd7, 0x14,
-  0xa0, 0xbe, 0x6a, 0x53, 0x9b, 0x21, 0x01, 0x0c, 0x88, 0xe5, 0xb5, 0x5e,
-  0xa6, 0xb6, 0x48, 0x6c, 0x20, 0x43, 0xb3, 0x59, 0x91, 0x35, 0x03, 0xe9,
-  0xd6, 0x4b, 0xf3, 0xe7, 0xab, 0xdb, 0x74, 0x16, 0xe4, 0x16, 0x52, 0x99,
-  0x30, 0xdd, 0x99, 0x16, 0x57, 0x48, 0x6f, 0x7a, 0xd4, 0xfd, 0x23, 0xcb,
-  0x60, 0xaf, 0x4f, 0x9a, 0xa3, 0x12, 0x30, 0xd5, 0x5f, 0x5e, 0xfe, 0xf9,
-  0xfc, 0xf8, 0xd5, 0x4b, 0x42, 0x25, 0x7e, 0x49, 0xb8, 0xf3, 0xba, 0x05,
-  0x52, 0x4c, 0xa8, 0x8a, 0x6d, 0x30, 0x86, 0x1f, 0x5f, 0x9f, 0x8c, 0xce,
-  0x4f, 0xcf, 0x8e, 0x5e, 0xbd, 0xfc, 0x91, 0x8c, 0x2d, 0x23, 0x53, 0xef,
-  0xbd, 0x77, 0xed, 0xcf, 0x2c, 0x19, 0x77, 0x98, 0x90, 0x7e, 0xfc, 0xc3,
-  0x87, 0xe3, 0x77, 0xdf, 0xbf, 0x7a, 0x79, 0x9b, 0x56, 0x7d, 0x1a, 0x1f,
-  0xbf, 0xbd, 0xa2, 0x0a, 0x5f, 0x6b, 0xab, 0x91, 0xd6, 0x3a, 0x9e, 0x7d,
-  0xac, 0xf3, 0xbf, 0x67, 0x89, 0x79, 0x7d, 0xb6, 0x0c, 0xc9, 0x70, 0x2f,
-  0x39, 0x87, 0xd7, 0x4c, 0x06, 0xfd, 0x2d, 0xf9, 0xfa, 0xf4, 0x3b, 0x22,
-  0x5c, 0xb4, 0x1e, 0xc4, 0x39, 0xd7, 0xf8, 0x48, 0xbe, 0x7c, 0xb6, 0xb7,
-  0xbf, 0xed, 0x0a, 0xd8, 0x81, 0xb0, 0xd5, 0xf4, 0xf8, 0x63, 0x90, 0x33,
-  0xf1, 0x77, 0x25, 0x9d, 0xb2, 0x45, 0x16, 0x9a, 0xea, 0xbe, 0x45, 0x8f,
-  0xa0, 0xee, 0x18, 0xe4, 0x5a, 0x33, 0x09, 0x44, 0x49, 0xf2, 0x80, 0x78,
-  0x6b, 0x02, 0x57, 0xd4, 0xe5, 0x1b, 0x8f, 0x24, 0xe1, 0x6b, 0xb7, 0xf1,
-  0x4c, 0x77, 0xc4, 0x9d, 0xb5, 0xf6, 0xda, 0xf8, 0x1d, 0x83, 0x1c, 0x5d,
-  0x5b, 0x0b, 0x93, 0x6d, 0x4c, 0x71, 0xd9, 0x3f, 0xf1, 0x79, 0xf6, 0x82,
-  0xc1, 0xc8, 0xfe, 0x28, 0x99, 0xd8, 0x0b, 0xa3, 0xd4, 0x8d, 0xa7, 0xa9,
-  0xa9, 0x6b, 0x2d, 0xc5, 0x7c, 0x4e, 0x19, 0x83, 0x84, 0xd4, 0x67, 0xaf,
-  0x87, 0xe7, 0xd3, 0x98, 0x65, 0xd7, 0xe9, 0xe4, 0x3e, 0xb1, 0x34, 0xa5,
-  0xc2, 0x69, 0x32, 0x2d, 0x23, 0xb9, 0xf3, 0x49, 0x3a, 0x21, 0x23, 0x67,
-  0x96, 0x4d, 0xaf, 0xa5, 0x8e, 0x2d, 0xe7, 0xe1, 0x53, 0x9a, 0x96, 0x3a,
-  0x44, 0x5a, 0xbd, 0x93, 0x22, 0x1f, 0xab, 0xf3, 0x5b, 0x6c, 0x41, 0xb2,
-  0xf6, 0xee, 0xa3, 0x6d, 0x83, 0xf2, 0x9a, 0x6b, 0xe7, 0xf4, 0x69, 0xdb,
-  0x95, 0xfc, 0x77, 0x1c, 0x72, 0xe2, 0x71, 0x81, 0xb7, 0xf2, 0x25, 0xfd,
-  0x75, 0x25, 0x9b, 0x33, 0x9b, 0xf3, 0x5c, 0x40, 0xd5, 0x71, 0x9f, 0x59,
-  0x02, 0x2e, 0x29, 0x90, 0x40, 0x9c, 0xc0, 0x8d, 0xfa, 0x46, 0x57, 0xb2,
-  0x24, 0x71, 0xa8, 0x01, 0xd2, 0xcd, 0x6c, 0x50, 0xbe, 0xae, 0x68, 0x6f,
-  0xac, 0x68, 0xd2, 0xa6, 0x65, 0x85, 0xb1, 0x0b, 0x24, 0x05, 0x51, 0x8c,
-  0xfe, 0x25, 0x35, 0x44, 0x12, 0x91, 0x54, 0x12, 0x33, 0x51, 0x5f, 0x6a,
-  0x34, 0x24, 0xf5, 0x69, 0x24, 0xf0, 0x10, 0xd3, 0x10, 0x90, 0x6e, 0x59,
-  0x45, 0x81, 0xdf, 0x6a, 0x50, 0x33, 0x72, 0x81, 0x22, 0x4d, 0x96, 0x9c,
-  0xd4, 0x74, 0xb2, 0x56, 0x65, 0x8d, 0x32, 0xa0, 0x60, 0xbd, 0x3a, 0xea,
-  0xc2, 0x58, 0xe5, 0x41, 0xcd, 0xd6, 0xb9, 0xce, 0x94, 0x27, 0x8b, 0xc7,
-  0xa5, 0x20, 0x29, 0x74, 0xc9, 0x08, 0x02, 0x1a, 0x8a, 0xe5, 0xb9, 0x8e,
-  0xd2, 0x8a, 0x5b, 0xdd, 0x92, 0xd5, 0x72, 0x7b, 0x55, 0x99, 0x96, 0xa9,
-  0x11, 0xba, 0xa6, 0xcc, 0x2d, 0x85, 0x7b, 0x89, 0xd3, 0x7b, 0x3b, 0x53,
-  0x12, 0x64, 0x84, 0x34, 0x8c, 0x70, 0xef, 0x5e, 0x52, 0x44, 0x4e, 0xab,
-  0xa8, 0x72, 0xff, 0x7d, 0xe5, 0x4a, 0x46, 0xdd, 0xa3, 0xad, 0xc1, 0xb6,
-  0xcd, 0xc9, 0xcd, 0x1b, 0xab, 0xb6, 0x45, 0x08, 0x1b, 0x12, 0xcb, 0xa0,
-  0x6b, 0xcb, 0x59, 0xb1, 0x5b, 0x50, 0x42, 0x11, 0x99, 0x6c, 0x0a, 0xfa,
-  0xda, 0x0e, 0xe7, 0x7e, 0xa9, 0x14, 0xca, 0xc3, 0xd4, 0xd3, 0xa0, 0xad,
-  0x22, 0xbb, 0xf3, 0xdb, 0x72, 0xfa, 0xb8, 0x6d, 0xef, 0xf7, 0x74, 0x04,
-  0x1b, 0x63, 0x82, 0x92, 0x56, 0x92, 0x97, 0xdf, 0x1f, 0x5f, 0x8c, 0x4e,
-  0xce, 0xde, 0x7d, 0x19, 0xb5, 0x13, 0xe5, 0x97, 0xb6, 0xaa, 0x90, 0x66,
-  0xba, 0xb9, 0xba, 0x2e, 0xe4, 0x1e, 0x52, 0x27, 0x04, 0x68, 0x0a, 0xcd,
-  0x8d, 0x47, 0x8f, 0x74, 0xb7, 0x40, 0x2d, 0x6d, 0xc0, 0xfd, 0x99, 0x56,
-  0xd7, 0x98, 0x0b, 0xb3, 0xbf, 0x60, 0xd3, 0xa0, 0x6a, 0xa7, 0x1a, 0x3b,
-  0xf6, 0xaf, 0xfb, 0xc1, 0xf8, 0xe3, 0x50, 0x15, 0x2f, 0x52, 0xbc, 0x5c,
-  0x70, 0x1e, 0x14, 0x65, 0xbc, 0x33, 0x2d, 0x86, 0xdf, 0xbf, 0x80, 0xde,
-  0x9b, 0x8a, 0x54, 0xfa, 0x2f, 0x9a, 0x87, 0x6f, 0xf7, 0xbc, 0xec, 0x0d,
-  0xfb, 0xdc, 0x5e, 0xec, 0xb9, 0xbd, 0xf0, 0xb9, 0xfd, 0xd8, 0x73, 0xfb,
-  0xe1, 0x73, 0x4f, 0x62, 0xcf, 0x79, 0x09, 0x3a, 0x9e, 0xcb, 0x4b, 0x67,
-  0x68, 0x9d, 0x45, 0xe8, 0xad, 0x67, 0xcb, 0x92, 0xdd, 0xf0, 0x4c, 0xb8,
-  0x5f, 0x64, 0xc2, 0xfa, 0x10, 0x9b, 0x8e, 0x1f, 0xd5, 0x7c, 0x88, 0x10,
-  0x3b, 0xa4, 0xd2, 0x18, 0xc1, 0x6b, 0xfe, 0xfb, 0x65, 0x98, 0x76, 0x87,
-  0x59, 0x0f, 0x6b, 0x9e, 0x93, 0x16, 0x84, 0xb4, 0x10, 0xae, 0xb3, 0xab,
-  0xc1, 0x9f, 0x16, 0xe3, 0x74, 0xc8, 0x62, 0xe0, 0x25, 0x63, 0xf7, 0x46,
-  0x17, 0xe7, 0xbd, 0xbe, 0xb8, 0x23, 0xcd, 0x37, 0x06, 0xe6, 0xdf, 0x09,
-  0xb4, 0x6d, 0x22, 0xab, 0x7f, 0xf6, 0x74, 0x9b, 0x03, 0x09, 0xe8, 0xe4,
-  0x52, 0x2a, 0xd8, 0x06, 0x61, 0x22, 0xf3, 0x3b, 0x87, 0x3d, 0xaa, 0x5a,
-  0x45, 0x25, 0x8c, 0x16, 0xdc, 0x1e, 0x20, 0x43, 0x02, 0xfa, 0x52, 0xae,
-  0x7d, 0xf5, 0xe5, 0xe6, 0x71, 0x27, 0x71, 0x27, 0x1f, 0xc8, 0x81, 0x7f,
-  0xda, 0x99, 0x51, 0xed, 0x50, 0x64, 0x2a, 0x5d, 0x05, 0x5e, 0x0c, 0x1b,
-  0xda, 0x92, 0x32, 0x45, 0xa1, 0x50, 0x76, 0x7b, 0x96, 0x95, 0xb1, 0x66,
-  0x55, 0x0a, 0x87, 0xe6, 0xac, 0x7b, 0xa3, 0x1c, 0xaa, 0xbf, 0x5b, 0xdc,
-  0x1f, 0xde, 0xf4, 0x39, 0xb6, 0xe6, 0x87, 0x07, 0xe4, 0x8f, 0x07, 0x6f,
-  0x47, 0x31, 0x8e, 0x34, 0x24, 0xc5, 0x80, 0x3d, 0x6a, 0x40, 0x3a, 0xa2,
-  0x35, 0x43, 0x92, 0x44, 0xf6, 0xce, 0xa0, 0xdc, 0xa8, 0xbc, 0x61, 0xb9,
-  0x95, 0xa7, 0xa1, 0x05, 0xcb, 0xf9, 0xa8, 0x81, 0xb6, 0x46, 0x4a, 0x67,
-  0x33, 0x50, 0xe9, 0x4e, 0x47, 0xdb, 0xea, 0x61, 0xf3, 0x1d, 0x6c, 0x9e,
-  0x2c, 0x82, 0xec, 0x79, 0x1c, 0xb0, 0x4f, 0x5c, 0x6c, 0xf4, 0xb2, 0x92,
-  0x6b, 0xaf, 0xc9, 0xbb, 0x0b, 0x4f, 0x2b, 0xc9, 0x8b, 0x68, 0x0f, 0xdb,
-  0x4e, 0xc0, 0x78, 0x27, 0xf7, 0x5a, 0x28, 0x6b, 0x45, 0x55, 0xff, 0xf6,
-  0x3d, 0xdc, 0xff, 0x75, 0x73, 0xb8, 0xff, 0xcf, 0x9b, 0xc3, 0x27, 0xbf,
-  0x7a, 0x0e, 0x9f, 0xfc, 0x36, 0x73, 0xe8, 0xaa, 0x7b, 0xd2, 0x43, 0xd4,
-  0xac, 0x57, 0x0c, 0x51, 0x6e, 0x63, 0xba, 0x5b, 0xcd, 0x3f, 0xc7, 0x14,
-  0x27, 0x27, 0xaf, 0x84, 0x79, 0x90, 0xd2, 0x59, 0x33, 0xd4, 0x39, 0xec,
-  0x0c, 0xd8, 0xb1, 0x21, 0x5a, 0x5a, 0x62, 0x72, 0xdf, 0x21, 0x59, 0x1e,
-  0xec, 0x90, 0x24, 0x1c, 0xbf, 0x2e, 0x49, 0xe5, 0x34, 0xba, 0x40, 0x3f,
-  0x79, 0x37, 0x1a, 0x71, 0xfc, 0x72, 0x04, 0x0f, 0x6c, 0xd7, 0x06, 0x21,
-  0xe3, 0x0d, 0x17, 0xc8, 0x16, 0x69, 0x26, 0x67, 0xa6, 0x87, 0xb8, 0xca,
-  0xa1, 0x55, 0xf3, 0x7b, 0xf3, 0x74, 0x42, 0x3f, 0xde, 0x1d, 0xee, 0x3d,
-  0xb1, 0xbf, 0xd9, 0xfe, 0x05, 0xb4, 0x19, 0xce, 0x3d, 0x1a, 0xd5, 0x55,
-  0x42, 0x3c, 0x6d, 0x7b, 0x19, 0x3e, 0xad, 0x70, 0x69, 0x3f, 0x62, 0x29,
-  0x38, 0x78, 0xc3, 0x69, 0xde, 0x9d, 0x43, 0xdc, 0x4f, 0x44, 0x67, 0x89,
-  0xe9, 0x2b, 0x8f, 0xf1, 0x42, 0x7b, 0x4e, 0xdf, 0xff, 0x33, 0x5e, 0xe8,
-  0xb8, 0x4e, 0xd1, 0xfa, 0x57, 0x2b, 0x75, 0xb8, 0xa9, 0x06, 0x5a, 0xb2,
-  0x20, 0x4e, 0x8a, 0xe8, 0xcc, 0x2d, 0x02, 0x0e, 0x93, 0x0e, 0x4e, 0x7a,
-  0x98, 0x18, 0xf7, 0x83, 0x63, 0x79, 0xd7, 0x79, 0x3c, 0x39, 0xda, 0xbb,
-  0xb2, 0x36, 0xa5, 0x4d, 0xc3, 0xd6, 0x44, 0x58, 0x1e, 0x65, 0xcd, 0x9b,
-  0x6a, 0x59, 0xe8, 0x47, 0x04, 0x49, 0x42, 0x7e, 0x03, 0xe6, 0x83, 0x08,
-  0x96, 0x75, 0x92, 0x31, 0x57, 0x40, 0xfe, 0x90, 0x90, 0x7f, 0xde, 0x1e,
-  0x6f, 0x3a, 0xc9, 0x06, 0x69, 0x3d, 0xc9, 0xf3, 0xb8, 0x79, 0xc3, 0x9e,
-  0x40, 0x90, 0x7e, 0x25, 0x57, 0x4b, 0x8a, 0xde, 0xe1, 0x15, 0xd3, 0x97,
-  0x25, 0x93, 0x8a, 0x72, 0x99, 0x08, 0xc9, 0xa4, 0xa7, 0x4e, 0x97, 0xcb,
-  0xe6, 0xba, 0x54, 0x2f, 0x47, 0x3f, 0xb0, 0x96, 0xb4, 0x5c, 0xbc, 0x59,
-  0x9e, 0x49, 0x95, 0x2f, 0x40, 0xf2, 0xe4, 0xd5, 0x5b, 0xe8, 0xdb, 0x82,
-  0x84, 0x30, 0x3f, 0xc4, 0xa3, 0xcc, 0x15, 0xfa, 0xde, 0x07, 0xb9, 0xcb,
-  0xbd, 0x41, 0x8f, 0x6c, 0x3d, 0x4b, 0x52, 0x6f, 0xde, 0x25, 0x42, 0x3e,
-  0xcf, 0x8d, 0xcb, 0x05, 0x5f, 0x57, 0xbb, 0xec, 0xd5, 0xb7, 0x63, 0xb6,
-  0xd0, 0xbd, 0x52, 0xbe, 0x81, 0x87, 0x57, 0x7d, 0xb6, 0x63, 0x66, 0xf6,
-  0x24, 0xaf, 0x83, 0x92, 0xac, 0xde, 0x64, 0x9f, 0x38, 0xed, 0x24, 0xd4,
-  0xc0, 0x58, 0x64, 0xdd, 0x68, 0x4a, 0xc6, 0xe1, 0xe8, 0xe8, 0xe4, 0xa4,
-  0x95, 0xa2, 0x42, 0xd3, 0x06, 0xd7, 0x32, 0x67, 0x3f, 0x27, 0x35, 0xf1,
-  0x67, 0x21, 0xfd, 0x18, 0xdd, 0x8d, 0x51, 0xf0, 0xce, 0xf3, 0xeb, 0x1b,
-  0xb8, 0xa3, 0xb2, 0xb4, 0xce, 0xb5, 0x4a, 0x4e, 0xca, 0x01, 0xe1, 0x65,
-  0x61, 0xba, 0x09, 0xcb, 0xe3, 0x66, 0x69, 0xcc, 0xcc, 0xdf, 0x3f, 0xed,
-  0xde, 0x77, 0xc7, 0x38, 0xe0, 0xa7, 0xcc, 0x16, 0x9f, 0x2b, 0xdf, 0xfd,
-  0x1d, 0xee, 0xb5, 0x08, 0xdf, 0xed, 0x79, 0x25, 0x15, 0x51, 0xc0, 0xb7,
-  0x01, 0x27, 0x04, 0x73, 0xd6, 0x52, 0xdd, 0x4e, 0xa2, 0xfe, 0xe1, 0xc6,
-  0xcd, 0x70, 0xd5, 0xa9, 0x0e, 0x2e, 0x48, 0xeb, 0x71, 0xeb, 0x1a, 0x52,
-  0xec, 0x5b, 0x5c, 0x8b, 0xad, 0xdf, 0xeb, 0x5e, 0x83, 0xf8, 0xc2, 0xda,
-  0x13, 0x90, 0xf2, 0xfe, 0xe7, 0x27, 0xfd, 0xdd, 0xef, 0xb6, 0x3f, 0xf3,
-  0xb5, 0xd8, 0x03, 0xf0, 0xdf, 0xf3, 0x04, 0x08, 0xec, 0xb8, 0xf7, 0xc7,
-  0x5e, 0x12, 0x67, 0x44, 0x7e, 0x44, 0x3b, 0xad, 0x84, 0xed, 0x7f, 0xee,
-  0x4e, 0x8b, 0x64, 0x90, 0x7b, 0x42, 0xcc, 0x5f, 0xd3, 0x65, 0x91, 0x7f,
-  0x02, 0xfe, 0xd3, 0xe8, 0x0b, 0x2f, 0x89, 0x0e, 0x78, 0x05, 0xcf, 0xed,
-  0x11, 0xeb, 0x2e, 0xae, 0x82, 0x3d, 0x7d, 0xf8, 0xbd, 0x79, 0x39, 0x99,
-  0x96, 0x73, 0x8a, 0x05, 0x72, 0x1b, 0x7d, 0x9f, 0x6c, 0x10, 0x62, 0x3d,
-  0x12, 0x4b, 0x2c, 0xb2, 0x86, 0xd0, 0x5a, 0x6b, 0xdd, 0x7d, 0x6d, 0x17,
-  0xea, 0x25, 0x8a, 0x8b, 0x2c, 0x08, 0x62, 0xb8, 0xa6, 0x78, 0x1d, 0x26,
-  0xc3, 0x41, 0xfa, 0xda, 0x3e, 0x15, 0x8f, 0x91, 0x59, 0xb6, 0x8e, 0x65,
-  0x50, 0x67, 0xb2, 0xe3, 0x58, 0xd8, 0xd3, 0xd2, 0x72, 0x3b, 0x4e, 0xfb,
-  0xbc, 0xeb, 0xac, 0x01, 0x6f, 0xba, 0xf3, 0x69, 0x4b, 0xd9, 0x99, 0xb5,
-  0x94, 0xd0, 0x4c, 0xe3, 0xed, 0xaa, 0x7d, 0xb5, 0xc8, 0xff, 0xc1, 0xde,
-  0x92, 0xcf, 0x68, 0xf3, 0xef, 0x68, 0xcc, 0x67, 0x16, 0x22, 0xf5, 0xbc,
-  0x02, 0x98, 0x2c, 0xeb, 0x08, 0x17, 0x0e, 0xcf, 0x2f, 0xfd, 0x1b, 0xcc,
-  0x0b, 0xaa, 0x44, 0xb4, 0x47, 0xc1, 0x25, 0x22, 0xa2, 0x95, 0xbd, 0xd9,
-  0x29, 0x7f, 0x43, 0x85, 0x06, 0xb5, 0x5f, 0x15, 0x6f, 0xc4, 0x76, 0x29,
-  0x49, 0xf5, 0xf3, 0x7b, 0x3c, 0xd9, 0x91, 0x62, 0xc3, 0xa2, 0x84, 0x89,
-  0xee, 0xc4, 0x64, 0x5c, 0x04, 0xca, 0x27, 0x56, 0x5e, 0x8a, 0xe9, 0xdb,
-  0xc2, 0x66, 0xbc, 0xb0, 0x5e, 0x7d, 0xec, 0x20, 0x5c, 0x44, 0x84, 0x16,
-  0x43, 0x1f, 0x63, 0xb9, 0xe4, 0x6a, 0x48, 0x0a, 0xed, 0xde, 0x32, 0x8a,
-  0xb8, 0x16, 0x8f, 0xa6, 0x16, 0x89, 0x51, 0xd7, 0x55, 0x8e, 0x0e, 0xb8,
-  0x61, 0x57, 0x9d, 0x26, 0x9b, 0x6a, 0xe0, 0x26, 0x8a, 0x44, 0xc7, 0x56,
-  0xaa, 0x8c, 0x4f, 0xe4, 0x3f, 0xdc, 0x56, 0xe5, 0xd2, 0x1c, 0xf1, 0xbc,
-  0xf0, 0xf7, 0x7b, 0x1a, 0xf5, 0x18, 0xb3, 0x50, 0x4a, 0x0e, 0x85, 0xaf,
-  0x31, 0x23, 0xb7, 0x47, 0xe7, 0x1b, 0x43, 0x23, 0x65, 0xb6, 0x52, 0xcb,
-  0x2b, 0x25, 0xd0, 0xda, 0xed, 0x80, 0xe0, 0xf7, 0x9e, 0x61, 0x41, 0x5e,
-  0x1e, 0x84, 0xcf, 0xf0, 0x4c, 0x5d, 0xed, 0x74, 0x0d, 0x28, 0x2c, 0x44,
-  0x63, 0xc2, 0x93, 0x88, 0x94, 0x46, 0x98, 0x4a, 0xa0, 0xd6, 0xc6, 0x75,
-  0x09, 0x81, 0xac, 0xf5, 0x45, 0x34, 0x50, 0x2d, 0xd4, 0x5a, 0xdc, 0x26,
-  0xbc, 0x30, 0xe3, 0x2c, 0x6c, 0x8e, 0x17, 0x31, 0x32, 0xa9, 0x7f, 0xb6,
-  0x15, 0x99, 0x14, 0xd5, 0x4f, 0x52, 0x2d, 0x3c, 0xd2, 0xb6, 0x0a, 0x07,
-  0xd1, 0x7a, 0xcb, 0xbe, 0x5f, 0x47, 0x73, 0x3c, 0x4c, 0x8e, 0xe9, 0xe9,
-  0xb0, 0xa1, 0x3f, 0xa1, 0x05, 0x22, 0xff, 0xf4, 0x2a, 0xec, 0x70, 0xc1,
-  0xca, 0x70, 0x67, 0xc9, 0xde, 0x4b, 0xb4, 0x08, 0x30, 0xa7, 0x04, 0x0e,
-  0x85, 0x42, 0x9e, 0x14, 0x77, 0xd5, 0x36, 0x93, 0xde, 0xf5, 0xac, 0x1c,
-  0x8f, 0xcd, 0xc8, 0x7b, 0xaa, 0xa7, 0x98, 0x6f, 0x07, 0xce, 0x25, 0xbf,
-  0x27, 0xea, 0xe5, 0xec, 0xc3, 0x72, 0x60, 0x44, 0x23, 0xf5, 0xc2, 0x15,
-  0xa9, 0xd2, 0xcf, 0x6b, 0xbd, 0xf4, 0xc8, 0x4d, 0x03, 0x9e, 0xc5, 0xc4,
-  0x6e, 0x41, 0x1a, 0x9b, 0x07, 0x90, 0x94, 0x04, 0x08, 0xfa, 0xa9, 0x76,
-  0x2f, 0xe1, 0x7a, 0xde, 0x2b, 0xc0, 0x35, 0x8e, 0xd2, 0x19, 0x82, 0x4b,
-  0x6a, 0x7c, 0xe4, 0x61, 0xed, 0x6d, 0x9e, 0x82, 0xf6, 0x80, 0x7a, 0xff,
-  0x49, 0x7f, 0xec, 0xf5, 0xe9, 0xbf, 0xfb, 0xff, 0xd5, 0x4b, 0xc8, 0x84,
-  0x39, 0xd8, 0xd9, 0xb9, 0xbb, 0xbb, 0x1b, 0x0a, 0x77, 0xf1, 0xd0, 0x2c,
-  0xd9, 0x46, 0x98, 0x29, 0x40, 0xcc, 0x2d, 0x2b, 0x3e, 0x70, 0x99, 0xf4,
-  0xf2, 0xf9, 0xf5, 0x5f, 0xf6, 0x06, 0x7b, 0xbb, 0xbb, 0xbb, 0x3f, 0x0f,
-  0x17, 0x34, 0xbf, 0x57, 0x68, 0xd6, 0xfc, 0xd7, 0x6f, 0x76, 0x87, 0x7b,
-  0xb2, 0x13, 0x25, 0xc3, 0xe2, 0xdf, 0xb9, 0xe2, 0xf2, 0xe0, 0xc1, 0xe5,
-  0x9d, 0x7c, 0xe0, 0x09, 0x19, 0x76, 0xae, 0xa7, 0xeb, 0xf2, 0xee, 0x18,
-  0x51, 0x41, 0x1e, 0xc5, 0x67, 0x4f, 0xf6, 0xf7, 0x13, 0x56, 0x39, 0x18,
-  0xce, 0xce, 0x11, 0x1e, 0xca, 0x64, 0x94, 0xf2, 0x7d, 0x7c, 0x9b, 0x4d,
-  0x88, 0xd2, 0xa5, 0xe2, 0xca, 0x60, 0x41, 0xa1, 0x28, 0x05, 0x4e, 0xb0,
-  0xfd, 0x9b, 0x9b, 0xab, 0xbc, 0x9c, 0xde, 0xbb, 0x56, 0xcd, 0x16, 0xaf,
-  0x48, 0xb4, 0x52, 0xf5, 0x1d, 0xc6, 0x88, 0x73, 0x7d, 0x68, 0x94, 0x4e,
-  0x8d, 0xe8, 0x6d, 0xb6, 0xa6, 0x04, 0xee, 0x39, 0x30, 0x87, 0x15, 0x34,
-  0xbf, 0xa8, 0xf3, 0x00, 0xee, 0x9f, 0x65, 0x25, 0xe4, 0xe1, 0x88, 0xff,
-  0xdc, 0xa5, 0xf7, 0xad, 0xeb, 0xde, 0xcc, 0xf8, 0x4b, 0xf3, 0x9f, 0x55,
-  0x75, 0x5f, 0x49, 0xb9, 0xb4, 0x15, 0xd0, 0xae, 0xb2, 0x66, 0x72, 0xd3,
-  0x45, 0xa1, 0x40, 0x86, 0x9b, 0xde, 0xde, 0x98, 0x01, 0xdd, 0xdb, 0x6a,
-  0x85, 0xb1, 0xd2, 0x2a, 0x5e, 0x1e, 0x8f, 0x69, 0x92, 0xe8, 0x74, 0x51,
-  0xa9, 0x94, 0xab, 0x2d, 0xb2, 0x58, 0x8c, 0xaa, 0x47, 0x99, 0x2b, 0x48,
-  0x82, 0xef, 0xe5, 0xb5, 0xa6, 0x19, 0x4d, 0x6e, 0xb2, 0xb9, 0xc8, 0xcc,
-  0x2d, 0x05, 0x92, 0xf4, 0x64, 0x0f, 0xf6, 0x22, 0x41, 0xb1, 0xde, 0x95,
-  0xfe, 0xca, 0x8c, 0x64, 0x5b, 0x12, 0x75, 0xec, 0x45, 0x27, 0xf4, 0xe2,
-  0xd7, 0x4b, 0x32, 0x1d, 0xc7, 0xa9, 0xdc, 0x28, 0x9a, 0x3b, 0xb6, 0x02,
-  0x07, 0x65, 0x84, 0x62, 0x56, 0xe1, 0x1a, 0xab, 0x97, 0xe3, 0x81, 0xe8,
-  0x3e, 0xe8, 0x11, 0x62, 0x6e, 0x74, 0x5a, 0x5f, 0x9f, 0x1c, 0x5d, 0x72,
-  0xca, 0x8c, 0xf9, 0x2f, 0xa1, 0x6b, 0xcd, 0x1f, 0x94, 0x29, 0x13, 0xf2,
-  0xbf, 0x9f, 0x3f, 0x91, 0x22, 0xb0, 0xb4, 0x59, 0xad, 0x8b, 0x39, 0x75,
-  0xe8, 0x83, 0x96, 0xf2, 0xd7, 0xf7, 0x38, 0x85, 0x23, 0x74, 0xec, 0x2d,
-  0x3d, 0xd1, 0x66, 0x5a, 0x3d, 0x7d, 0x36, 0xdc, 0xe5, 0x21, 0xd2, 0x1c,
-  0x4a, 0x60, 0x51, 0x90, 0xdd, 0xf0, 0x16, 0xd5, 0xc2, 0x91, 0x97, 0xae,
-  0xe0, 0xf7, 0xd4, 0xae, 0xf4, 0x13, 0xa6, 0x84, 0xe4, 0xd4, 0x4b, 0xfd,
-  0xad, 0x07, 0x22, 0x79, 0x00, 0x3e, 0xab, 0xb7, 0x97, 0x40, 0xa7, 0xee,
-  0xbb, 0x74, 0x7e, 0xa0, 0x5b, 0x54, 0x54, 0x2f, 0x84, 0x70, 0x0c, 0x5e,
-  0x2f, 0x7b, 0x42, 0x50, 0x66, 0x7d, 0x47, 0xe6, 0x5e, 0xd2, 0x2d, 0x20,
-  0x37, 0x96, 0x60, 0xb5, 0x51, 0x02, 0xc9, 0xd5, 0x10, 0x89, 0x69, 0x28,
-  0x01, 0x53, 0xfe, 0xe0, 0x6b, 0x29, 0x63, 0xc7, 0x9a, 0x72, 0x0c, 0x2a,
-  0x8e, 0xb5, 0xdc, 0xb6, 0xf0, 0x1f, 0x31, 0x5f, 0xad, 0xde, 0x39, 0x84,
-  0x47, 0x90, 0x57, 0xbf, 0xe9, 0x14, 0x3d, 0x0c, 0x10, 0xc9, 0xc8, 0x88,
-  0xf6, 0xf2, 0x01, 0x52, 0x0c, 0x10, 0x5b, 0x00, 0xb6, 0x1e, 0xbb, 0xa7,
-  0x7a, 0x5f, 0x90, 0x3f, 0xfb, 0xd5, 0x61, 0x6f, 0xd8, 0x9e, 0xd4, 0x18,
-  0x21, 0x7c, 0xcd, 0xf2, 0xad, 0x6d, 0xce, 0x88, 0x4c, 0x23, 0xb9, 0x9f,
-  0x7d, 0x62, 0x96, 0x2f, 0xac, 0xdc, 0x5d, 0x5e, 0x3c, 0xd9, 0x4f, 0xea,
-  0x7b, 0xa3, 0x43, 0xcc, 0xfd, 0x49, 0xe8, 0xd6, 0xf2, 0x8b, 0xfa, 0xf1,
-  0x5b, 0x05, 0x30, 0x58, 0x74, 0xbd, 0xa7, 0x57, 0x0e, 0xf1, 0x8a, 0x10,
-  0xe6, 0x2b, 0x8c, 0xe1, 0x11, 0x05, 0x22, 0x4b, 0x15, 0x62, 0xe3, 0x59,
-  0x5a, 0x7c, 0xb4, 0x05, 0xed, 0xb8, 0xa1, 0x3e, 0x55, 0x5d, 0xe2, 0xc4,
-  0x13, 0xf7, 0x43, 0x99, 0x1e, 0xbe, 0x18, 0x3b, 0xcd, 0xfd, 0x6d, 0x09,
-  0xd5, 0x7e, 0x9e, 0x56, 0xc8, 0x49, 0xf8, 0x05, 0xe5, 0x27, 0xa3, 0x73,
-  0xeb, 0xca, 0x51, 0xfe, 0x7e, 0x11, 0xd9, 0xa5, 0xce, 0xba, 0x91, 0xd0,
-  0xe6, 0xbf, 0x07, 0x1a, 0xa9, 0x58, 0x57, 0xa3, 0x1b, 0x8f, 0xdb, 0xb2,
-  0x81, 0x36, 0xb6, 0xe1, 0xd7, 0x81, 0x62, 0x6d, 0xce, 0xc5, 0x54, 0x62,
-  0xc9, 0x1b, 0xc3, 0xe4, 0xcc, 0x19, 0x8f, 0x45, 0x1f, 0x8c, 0x79, 0x4d,
-  0x35, 0x11, 0xd3, 0x11, 0x7f, 0x1f, 0x68, 0x51, 0xd7, 0x68, 0x5d, 0x43,
-  0x68, 0x34, 0x28, 0x12, 0x7b, 0xef, 0xf4, 0x3c, 0xef, 0x3a, 0xe3, 0x92,
-  0x43, 0x4e, 0xf6, 0x1a, 0x29, 0x42, 0xb5, 0x79, 0x40, 0x6b, 0x11, 0x80,
-  0xd3, 0x78, 0x10, 0x51, 0xca, 0xee, 0xf8, 0x78, 0x6b, 0x09, 0xe3, 0xcd,
-  0xcc, 0xfd, 0xb7, 0x5c, 0x78, 0xbc, 0xe7, 0x9c, 0xc0, 0x49, 0x99, 0xe1,
-  0x65, 0xd1, 0x0f, 0xb8, 0x1f, 0x50, 0x7e, 0x41, 0x5c, 0x4c, 0x04, 0x8c,
-  0x98, 0x4b, 0x21, 0xbc, 0xcc, 0x16, 0xd8, 0xe1, 0x37, 0x75, 0x2b, 0xba,
-  0x8f, 0x3f, 0x50, 0xaf, 0x8b, 0xd9, 0xc5, 0x75, 0x31, 0xcc, 0xb6, 0xeb,
-  0x33, 0xce, 0x3f, 0xce, 0xe3, 0xc9, 0x47, 0xff, 0x3b, 0x63, 0xad, 0x67,
-  0x55, 0x59, 0x27, 0xdf, 0x3f, 0x53, 0xb4, 0x82, 0x14, 0xff, 0x93, 0xbb,
-  0xc9, 0xea, 0xe5, 0x3c, 0xd7, 0x60, 0x56, 0x89, 0xba, 0x4d, 0x34, 0x5d,
-  0x5a, 0x5f, 0xf7, 0x2f, 0xa9, 0xee, 0x48, 0xc8, 0x5e, 0x37, 0xf2, 0x12,
-  0x65, 0x57, 0x83, 0xeb, 0xb3, 0x5d, 0xab, 0xcb, 0x5c, 0xb8, 0xa4, 0xe8,
-  0x90, 0x7f, 0xc7, 0xa8, 0xf0, 0x63, 0x2a, 0x04, 0x0f, 0x75, 0xc1, 0x76,
-  0x3c, 0xb9, 0xcc, 0xc9, 0x05, 0xe0, 0x6a, 0x7e, 0x45, 0xf1, 0xaf, 0x52,
-  0x08, 0xd2, 0x71, 0x4c, 0x76, 0xa2, 0x7d, 0xa4, 0x57, 0xd4, 0x37, 0x74,
-  0x35, 0xd3, 0x8d, 0x01, 0xc3, 0x6f, 0x63, 0x45, 0xe9, 0x27, 0x58, 0x2b,
-  0xef, 0x2e, 0x4f, 0xdf, 0x4a, 0x1c, 0xd9, 0xad, 0x4f, 0x50, 0x23, 0x5d,
-  0xb6, 0x66, 0x1a, 0xa3, 0x75, 0xf5, 0x26, 0x43, 0x01, 0xea, 0x9c, 0xd3,
-  0x48, 0xd3, 0xd6, 0x97, 0x94, 0x95, 0x4a, 0x80, 0xcf, 0x6a, 0xa2, 0xc9,
-  0xa4, 0x46, 0xbc, 0x9b, 0x04, 0xf8, 0xa9, 0xe1, 0x27, 0x80, 0xf9, 0x6c,
-  0x04, 0x8d, 0xd9, 0x92, 0x5e, 0x75, 0x8f, 0x70, 0x5f, 0x97, 0x9d, 0x23,
-  0xe3, 0x2f, 0x18, 0x6d, 0x43, 0xe6, 0x95, 0x4d, 0x5e, 0x97, 0x77, 0xc5,
-  0xe0, 0x94, 0x32, 0x58, 0x92, 0xd3, 0xf2, 0xda, 0x4c, 0xd5, 0xbb, 0xa8,
-  0x25, 0xff, 0xfe, 0xfc, 0x5d, 0xb2, 0x45, 0x92, 0x38, 0x39, 0xb7, 0xac,
-  0x25, 0xf4, 0xe4, 0xb6, 0x28, 0x9d, 0x46, 0x1c, 0xbe, 0x71, 0xbd, 0xe9,
-  0x27, 0xc7, 0x3f, 0x1e, 0xbe, 0x3d, 0x3f, 0x3d, 0xfe, 0x69, 0x45, 0xb8,
-  0x9c, 0x7e, 0xfc, 0x95, 0xa7, 0x85, 0xc3, 0x6b, 0x4f, 0x51, 0x2c, 0xd3,
-  0x8f, 0xfb, 0xd5, 0xb2, 0x80, 0x8f, 0x8f, 0x6e, 0xc1, 0xd1, 0xe8, 0xfc,
-  0x64, 0xa0, 0x8c, 0x23, 0x5c, 0x14, 0x26, 0x2f, 0x48, 0x65, 0xc6, 0x29,
-  0x16, 0x32, 0xe0, 0xef, 0xc2, 0x00, 0x85, 0x9e, 0x88, 0x7e, 0xf2, 0x4e,
-  0x19, 0x3c, 0xfb, 0x58, 0x71, 0xba, 0xe3, 0x5f, 0xe7, 0xd7, 0x08, 0x32,
-  0x74, 0xd8, 0x43, 0xb4, 0x7e, 0x36, 0x6d, 0x82, 0x80, 0xcd, 0x87, 0x3c,
-  0x91, 0x36, 0x50, 0x57, 0x67, 0x33, 0x76, 0x69, 0xad, 0x94, 0xa3, 0x80,
-  0x34, 0x61, 0x19, 0x09, 0x50, 0x19, 0x84, 0x4f, 0x04, 0x60, 0x49, 0x5a,
-  0x14, 0xaf, 0x9f, 0xe8, 0xa9, 0xbc, 0x47, 0x58, 0x76, 0xc8, 0x25, 0x63,
-  0x85, 0xc3, 0x81, 0xb1, 0xd3, 0x97, 0xc9, 0x41, 0xef, 0x77, 0xbc, 0x48,
-  0x7c, 0xef, 0x5f, 0x84, 0x53, 0x5e, 0xa2, 0x28, 0xea, 0x1e, 0xe4, 0x4c,
-  0x5f, 0x56, 0x6e, 0xd5, 0x03, 0xc3, 0xfe, 0x4f, 0x73, 0xd4, 0x05, 0x69,
-  0x01, 0x0c, 0xf7, 0x75, 0x24, 0x21, 0xb8, 0x80, 0x5c, 0xca, 0x70, 0x12,
-  0xc9, 0xc2, 0xde, 0x34, 0x62, 0x40, 0xfc, 0xba, 0x66, 0x0c, 0x3d, 0xc4,
-  0xab, 0x44, 0xa5, 0x2e, 0xa7, 0x46, 0x7f, 0x39, 0x64, 0xaf, 0x34, 0xaa,
-  0x88, 0x87, 0xcd, 0x61, 0xae, 0x36, 0xbf, 0xdc, 0x94, 0x40, 0x5b, 0x4f,
-  0x6e, 0x64, 0xd2, 0x68, 0x7a, 0xac, 0xd2, 0x10, 0xfb, 0x16, 0xf5, 0xde,
-  0x9c, 0xf8, 0xcd, 0x97, 0x9b, 0x52, 0x57, 0x22, 0xd1, 0x27, 0xbb, 0x02,
-  0x07, 0xef, 0x49, 0xd8, 0x47, 0xb9, 0xbb, 0x64, 0xf5, 0x05, 0x82, 0x75,
-  0x93, 0x4f, 0xa7, 0x99, 0x78, 0x4a, 0xa8, 0x4a, 0x07, 0xb3, 0x04, 0x71,
-  0x60, 0xa9, 0x7b, 0x31, 0xb5, 0x7a, 0x2e, 0x7d, 0xfd, 0x37, 0xed, 0xab,
-  0x57, 0xc2, 0x8a, 0xdc, 0xd4, 0xae, 0xb6, 0xc4, 0x98, 0xab, 0x20, 0xc5,
-  0x96, 0x9b, 0x76, 0x29, 0x62, 0x21, 0x30, 0x97, 0xa0, 0x1b, 0xa9, 0xb5,
-  0xd8, 0x42, 0xd9, 0xf7, 0x3b, 0x20, 0x76, 0xc4, 0x3a, 0x42, 0x97, 0x16,
-  0xaf, 0xa0, 0x56, 0xc1, 0xde, 0xac, 0x88, 0xe4, 0x9c, 0xab, 0x4c, 0x52,
-  0x1d, 0x8e, 0x55, 0x27, 0x55, 0xdd, 0x7d, 0x6e, 0xe7, 0x71, 0x4a, 0x9a,
-  0x42, 0x09, 0xc9, 0x16, 0xc3, 0x83, 0x59, 0x01, 0xc7, 0xaf, 0x68, 0xfb,
-  0xfd, 0x30, 0x1f, 0x9a, 0x0b, 0x30, 0x48, 0x61, 0xa6, 0x81, 0x0d, 0x47,
-  0xb4, 0xe3, 0x67, 0x8a, 0x04, 0x8c, 0xb9, 0xde, 0xfc, 0x74, 0x8d, 0x76,
-  0xd5, 0x0c, 0x71, 0x6f, 0x82, 0xa4, 0x76, 0x75, 0x02, 0x40, 0x27, 0xcf,
-  0x61, 0xb8, 0x9a, 0x83, 0xc3, 0xf6, 0x2f, 0x8e, 0x0f, 0x8a, 0xba, 0xca,
-  0xbf, 0x97, 0x53, 0x15, 0xc1, 0x23, 0xbe, 0x96, 0x60, 0x4a, 0xab, 0x26,
-  0x3a, 0x63, 0xea, 0xd9, 0x8f, 0x54, 0x28, 0x93, 0xfd, 0x58, 0x8f, 0x1e,
-  0xa2, 0xc7, 0x39, 0x3c, 0xbe, 0xf5, 0x30, 0xc6, 0xf4, 0x2f, 0xaa, 0x0b,
-  0x36, 0x9d, 0x5e, 0xec, 0xec, 0x75, 0x45, 0x84, 0x45, 0x9b, 0x28, 0xaf,
-  0xe4, 0x3c, 0x68, 0xdb, 0x91, 0x70, 0x1b, 0x6e, 0x8f, 0x27, 0xb6, 0x38,
-  0xaf, 0x79, 0xb2, 0x4a, 0x2b, 0xae, 0x8f, 0x56, 0x7c, 0x54, 0x40, 0x10,
-  0xb5, 0x9c, 0x7d, 0xca, 0x26, 0xcb, 0xa6, 0x8d, 0x15, 0xf7, 0xfa, 0x24,
-  0xd4, 0x00, 0xe8, 0xd2, 0x16, 0x0e, 0x82, 0x58, 0x28, 0xbd, 0x73, 0x4d,
-  0xeb, 0x3e, 0xe8, 0x6d, 0x4b, 0x64, 0x8f, 0xa3, 0x3e, 0x36, 0xdf, 0x3b,
-  0x16, 0xb3, 0xd3, 0x2e, 0x57, 0x19, 0x3b, 0xd8, 0x5c, 0x00, 0x3b, 0xfa,
-  0x79, 0x2e, 0x30, 0x1c, 0xf9, 0xfa, 0x1b, 0xf6, 0xc6, 0x78, 0x1f, 0xb7,
-  0x15, 0x6a, 0xc4, 0x51, 0x53, 0x07, 0x47, 0x39, 0xf8, 0x32, 0xea, 0xc3,
-  0x19, 0x01, 0x65, 0x6b, 0x3b, 0xea, 0xab, 0x3a, 0xf9, 0x81, 0x83, 0xec,
-  0xe4, 0xfc, 0xf6, 0xb9, 0xf8, 0x37, 0x49, 0xdf, 0xa0, 0x1b, 0x0f, 0x3f,
-  0xb2, 0x12, 0x3f, 0x18, 0xc5, 0xc7, 0x6a, 0xfc, 0xd4, 0xfc, 0xf1, 0x1d,
-  0xfd, 0x71, 0xc5, 0x46, 0xa2, 0xd0, 0xb2, 0xb0, 0x67, 0x2e, 0xdc, 0xda,
-  0xa3, 0x53, 0xfd, 0x43, 0x16, 0x1c, 0x58, 0x60, 0x42, 0xf4, 0x13, 0x87,
-  0x8b, 0xcb, 0xa6, 0x87, 0xfe, 0xab, 0xcd, 0xf4, 0x39, 0xcb, 0x26, 0x0c,
-  0x5c, 0xc9, 0xff, 0xc0, 0x39, 0xd2, 0x07, 0xa7, 0x47, 0x1f, 0x5e, 0x88,
-  0x11, 0xd7, 0xf2, 0x2a, 0x63, 0x89, 0x16, 0x66, 0xaa, 0xfe, 0x4e, 0xb1,
-  0x19, 0x2d, 0x08, 0x9d, 0xa0, 0x3c, 0xe9, 0xdc, 0x22, 0x6b, 0x61, 0x19,
-  0xd9, 0x20, 0x3f, 0x3b, 0x2c, 0xe9, 0xa0, 0xb1, 0x3c, 0xcb, 0x57, 0x74,
-  0x61, 0xf5, 0x90, 0x71, 0xbb, 0xcb, 0x1f, 0x21, 0x6b, 0xd9, 0xea, 0xf7,
-  0x5e, 0x23, 0xcd, 0x48, 0x0c, 0x3d, 0x29, 0xf7, 0x41, 0x0a, 0x9b, 0x2e,
-  0x35, 0x63, 0x24, 0xb0, 0x36, 0x78, 0xd4, 0x4a, 0x07, 0x56, 0x4b, 0x56,
-  0xf4, 0x73, 0x8e, 0x0a, 0x03, 0x60, 0x6e, 0x86, 0x58, 0xf8, 0x68, 0x23,
-  0x98, 0xf3, 0x6c, 0x4e, 0xe1, 0x10, 0x7b, 0x33, 0x32, 0x0f, 0x04, 0x69,
-  0x56, 0xf4, 0xb9, 0x41, 0xbc, 0xb9, 0x29, 0x69, 0x6f, 0x74, 0xcb, 0x32,
-  0x6e, 0xe7, 0x5f, 0x82, 0x08, 0x58, 0x7d, 0x5f, 0x4c, 0x6e, 0x5e, 0xbf,
-  0x1b, 0xc5, 0x5f, 0xef, 0x0e, 0x0e, 0x4f, 0x1b, 0x2d, 0x84, 0xf6, 0x02,
-  0x13, 0xdd, 0x09, 0x03, 0x12, 0x0a, 0x86, 0x7b, 0xbf, 0x8d, 0x37, 0xd7,
-  0x7e, 0xc5, 0x3a, 0x87, 0x48, 0xb3, 0x60, 0x29, 0x2e, 0x8a, 0x27, 0x3c,
-  0xf1, 0x83, 0x94, 0xce, 0x42, 0xb4, 0xf2, 0x92, 0x3d, 0xd3, 0x14, 0x42,
-  0x40, 0x89, 0x4a, 0xb4, 0x58, 0x79, 0xc8, 0xa3, 0xee, 0xbe, 0x06, 0x69,
-  0xbb, 0xfe, 0xf1, 0x4b, 0x96, 0xf9, 0x94, 0x6a, 0x9c, 0x46, 0x02, 0x4e,
-  0xc1, 0x0c, 0x59, 0xb7, 0xbd, 0x0b, 0x08, 0x9a, 0xad, 0x3a, 0xa3, 0xd7,
-  0x79, 0x97, 0xf6, 0x65, 0xb3, 0xe2, 0x47, 0xd5, 0xaa, 0x21, 0x99, 0x39,
-  0xd9, 0xff, 0xe6, 0xeb, 0xf0, 0xf6, 0x7c, 0xfd, 0x6e, 0xc5, 0xe7, 0xe8,
-  0x37, 0x03, 0x85, 0xdd, 0x8b, 0x46, 0xe0, 0x29, 0xf4, 0xe1, 0x5c, 0xc4,
-  0x09, 0x42, 0xdb, 0xbf, 0x7c, 0x48, 0x4a, 0x98, 0x27, 0xe4, 0x8f, 0xb5,
-  0x0f, 0x0a, 0x60, 0x36, 0xfe, 0x29, 0x46, 0xd2, 0x32, 0xb4, 0x2b, 0xb9,
-  0xe0, 0xc8, 0xde, 0xb9, 0x28, 0xc2, 0xdb, 0xeb, 0xd6, 0x28, 0xde, 0x1c,
-  0xc9, 0xb7, 0x18, 0xa9, 0x01, 0x89, 0x85, 0x7d, 0xfe, 0x63, 0x67, 0xdf,
-  0x02, 0x96, 0x6c, 0xe6, 0x04, 0x8e, 0xa9, 0xb9, 0xc1, 0x43, 0x05, 0xa1,
-  0xc8, 0x3f, 0x8d, 0x10, 0x63, 0x5e, 0xb1, 0x9b, 0x11, 0x8c, 0xe6, 0x28,
-  0xb4, 0xed, 0x1c, 0xf5, 0x53, 0x35, 0xb1, 0x68, 0x4f, 0x46, 0x9c, 0x07,
-  0xf8, 0xd0, 0x66, 0xca, 0x23, 0x18, 0xab, 0x75, 0xcc, 0x4d, 0x6f, 0x8d,
-  0x92, 0x44, 0x97, 0xeb, 0xa3, 0x37, 0xa9, 0xbe, 0x90, 0x6c, 0x8d, 0xcd,
-  0x75, 0xed, 0x25, 0x61, 0xb3, 0x8a, 0xfd, 0x94, 0x31, 0xce, 0xf1, 0xe6,
-  0x9e, 0x7d, 0xfe, 0xec, 0xe9, 0xf6, 0xb6, 0x2b, 0x28, 0xc9, 0x90, 0x89,
-  0x31, 0xa9, 0x39, 0xf3, 0x9c, 0x24, 0x17, 0x07, 0x1f, 0xcc, 0x14, 0xdf,
-  0x40, 0x30, 0x58, 0x2f, 0x4c, 0xbc, 0x39, 0xba, 0xc7, 0xf4, 0x3d, 0x5a,
-  0x44, 0x32, 0xc1, 0x21, 0xd0, 0xad, 0x21, 0x4c, 0x97, 0x4d, 0xc6, 0x0f,
-  0x58, 0x37, 0xfc, 0x4a, 0xa9, 0x80, 0xb8, 0x91, 0xf3, 0x43, 0x71, 0x39,
-  0x6c, 0xd8, 0x49, 0x7a, 0xd3, 0x86, 0x08, 0xc0, 0x73, 0xbe, 0xf6, 0xf0,
-  0x07, 0x58, 0x98, 0x6e, 0xb4, 0x18, 0xda, 0xf9, 0x72, 0x3c, 0x33, 0x77,
-  0xd0, 0x88, 0x0a, 0x7b, 0x7e, 0x4a, 0x4e, 0x73, 0x29, 0xf7, 0xc7, 0x3a,
-  0xb8, 0xc4, 0xbb, 0x57, 0xdd, 0x39, 0x18, 0x77, 0x7b, 0xa3, 0x89, 0x07,
-  0xd1, 0x4b, 0x74, 0x62, 0xad, 0x2d, 0xe9, 0x2d, 0xf8, 0x43, 0x54, 0x42,
-  0x74, 0xb0, 0x6a, 0x60, 0x9f, 0xb2, 0xda, 0x33, 0xe3, 0x06, 0x77, 0xa4,
-  0x20, 0x22, 0xd9, 0x9a, 0x1c, 0xd1, 0xc9, 0x4b, 0x56, 0x05, 0xa3, 0x55,
-  0xbd, 0xb8, 0xf0, 0x8c, 0xa4, 0xf7, 0xf9, 0x4a, 0x23, 0xd4, 0x6f, 0xb8,
-  0x6c, 0xd3, 0x2b, 0x4a, 0x46, 0x62, 0x04, 0xdd, 0x2c, 0x43, 0x69, 0x5b,
-  0x12, 0x64, 0x01, 0xfc, 0x99, 0xc1, 0x89, 0x99, 0x18, 0xf7, 0xe2, 0xa4,
-  0x10, 0xe7, 0x2b, 0x80, 0x51, 0x29, 0xd2, 0xe7, 0xd9, 0x5d, 0xc3, 0x69,
-  0xdb, 0xec, 0x05, 0x36, 0x8b, 0xfc, 0x29, 0x38, 0xbc, 0x82, 0x87, 0xa4,
-  0x4a, 0x6f, 0xce, 0x3f, 0xaf, 0x09, 0x84, 0x75, 0xeb, 0x4b, 0x81, 0x8f,
-  0x25, 0x52, 0x6d, 0x6d, 0x66, 0x26, 0x83, 0x8c, 0xd7, 0x1e, 0xf7, 0xa8,
-  0x87, 0x74, 0x29, 0xe5, 0x9c, 0x03, 0x74, 0x46, 0xd5, 0xfb, 0xa9, 0x38,
-  0xec, 0xb8, 0x6d, 0xc9, 0x25, 0x4a, 0x63, 0xa5, 0xc8, 0xd5, 0x29, 0xfe,
-  0x95, 0xc2, 0x70, 0x7a, 0x89, 0xd4, 0xba, 0x84, 0x79, 0xaf, 0xf0, 0x4f,
-  0xdb, 0xa6, 0x34, 0x19, 0xc9, 0x21, 0xe4, 0x88, 0x36, 0x2a, 0x0d, 0xd2,
-  0xaa, 0x99, 0x26, 0x07, 0xbd, 0xa8, 0xe6, 0x69, 0x27, 0x80, 0x68, 0xed,
-  0x60, 0x87, 0xb6, 0xec, 0x33, 0xfd, 0x84, 0x23, 0xee, 0x20, 0x00, 0x6e,
-  0x93, 0x37, 0xcb, 0x50, 0x3a, 0x8e, 0xd5, 0x2d, 0x8a, 0x9c, 0x4b, 0xdc,
-  0xa7, 0xb4, 0x18, 0x2e, 0x31, 0x12, 0xf6, 0x18, 0x61, 0x95, 0x1a, 0x30,
-  0x01, 0xea, 0x61, 0xa6, 0x54, 0xb2, 0x59, 0x79, 0x17, 0x60, 0x78, 0xc9,
-  0x14, 0xb0, 0xbd, 0x6b, 0x27, 0x33, 0x50, 0x7d, 0xf8, 0xff, 0xd4, 0x5f,
-  0x7e, 0xa0, 0x99, 0xfa, 0x2f, 0x9d, 0x29, 0x0d, 0xed, 0xa7, 0x41, 0xe2,
-  0x1f, 0x8c, 0xe0, 0xe4, 0x8f, 0x98, 0x95, 0xbf, 0x12, 0x24, 0x85, 0xa7,
-  0xc6, 0x74, 0x79, 0x8e, 0x06, 0xff, 0x38, 0xb4, 0x0a, 0xaf, 0x34, 0x92,
-  0x52, 0x1e, 0x13, 0xb4, 0xf2, 0xf1, 0x7d, 0xe0, 0x3b, 0xa2, 0x6d, 0xf8,
-  0x53, 0xd1, 0x07, 0xab, 0x9e, 0xb1, 0xbd, 0x28, 0xef, 0x98, 0xeb, 0x42,
-  0xf1, 0x2a, 0xfe, 0x54, 0x49, 0x16, 0xbd, 0x31, 0x3a, 0x4c, 0xcf, 0xc9,
-  0x22, 0xe3, 0x9f, 0x87, 0x16, 0x00, 0xa1, 0x65, 0x0e, 0xb0, 0x1a, 0x7f,
-  0x1c, 0xd4, 0xf7, 0xf3, 0x71, 0x39, 0x93, 0xbd, 0x4e, 0xe3, 0x35, 0x7d,
-  0xd6, 0x9f, 0xf1, 0xc2, 0x20, 0xb2, 0x31, 0xf0, 0xb2, 0x60, 0xfb, 0x51,
-  0xe6, 0x5f, 0x36, 0x52, 0xca, 0xc9, 0x04, 0x19, 0x29, 0x80, 0x71, 0x53,
-  0xa9, 0xec, 0x3f, 0x26, 0x0c, 0xc7, 0x61, 0x75, 0x68, 0x09, 0xaf, 0xd5,
-  0x9d, 0x73, 0xd5, 0xae, 0xcc, 0x02, 0x79, 0x60, 0xf3, 0xb8, 0xba, 0xf1,
-  0xb1, 0x0c, 0x62, 0x3a, 0xa4, 0xa6, 0xa3, 0x1f, 0x90, 0x76, 0xc2, 0xaf,
-  0x1e, 0xf1, 0x8f, 0x06, 0x97, 0xf4, 0x23, 0xc1, 0x1c, 0x68, 0xbe, 0x1a,
-  0xf9, 0x33, 0x34, 0xa3, 0x8c, 0x6a, 0x9b, 0x5d, 0xc5, 0xa5, 0x54, 0x1b,
-  0xcc, 0x84, 0x02, 0x91, 0x45, 0x78, 0x5f, 0xe9, 0x51, 0xfa, 0xc0, 0x69,
-  0xfb, 0xc6, 0xe4, 0x5f, 0xdf, 0x1a, 0x2c, 0x54, 0x82, 0x2c, 0xcc, 0x91,
-  0x02, 0x68, 0x01, 0x71, 0x7e, 0x82, 0x2f, 0xb3, 0x4e, 0x70, 0xf4, 0x69,
-  0xf8, 0x50, 0x73, 0x8c, 0xea, 0x81, 0x33, 0x44, 0xa0, 0x12, 0xe4, 0x7c,
-  0xf2, 0x18, 0x88, 0x9b, 0x72, 0x36, 0x65, 0x7c, 0x06, 0xb5, 0xfb, 0xc0,
-  0x58, 0x4b, 0x46, 0xe2, 0x7a, 0xd2, 0x22, 0x12, 0x0f, 0x14, 0x1c, 0x14,
-  0x85, 0x0e, 0xd7, 0x37, 0xe7, 0xe2, 0x8a, 0xe2, 0xdd, 0x3f, 0x41, 0xc9,
-  0xb7, 0x92, 0xf1, 0x5a, 0xe8, 0x27, 0x12, 0x10, 0xe6, 0xe4, 0xd3, 0x8c,
-  0xc4, 0x8e, 0x92, 0x98, 0x88, 0x45, 0xd8, 0xe9, 0x3f, 0xfa, 0xae, 0x3b,
-  0xec, 0xf9, 0x19, 0x78, 0x61, 0x49, 0xad, 0xc8, 0xbb, 0xbe, 0xb9, 0xd5,
-  0x45, 0x89, 0xaf, 0x9a, 0xc5, 0x07, 0xaa, 0xa8, 0x7a, 0xff, 0x81, 0x70,
-  0x7d, 0x58, 0x33, 0xf5, 0xb9, 0xe3, 0x07, 0x98, 0x5a, 0xce, 0x91, 0x5b,
-  0x2e, 0xa8, 0x1d, 0x6c, 0xf1, 0x59, 0xc9, 0xe6, 0xcc, 0x43, 0xc3, 0x90,
-  0x88, 0x9e, 0x40, 0xc0, 0xfc, 0x5c, 0xec, 0xad, 0x76, 0x95, 0x8d, 0xa7,
-  0x41, 0xc7, 0x28, 0x62, 0xff, 0x01, 0xa1, 0x3e, 0xbb, 0x99, 0xcc, 0x65,
-  0x93, 0x55, 0xf9, 0xc4, 0x2f, 0x39, 0x85, 0x07, 0xb0, 0x9f, 0x98, 0x79,
-  0x89, 0x62, 0x7f, 0x51, 0x92, 0xb9, 0xce, 0xff, 0xe0, 0x1d, 0xe5, 0x02,
-  0x5b, 0xe4, 0xf4, 0x53, 0x78, 0x18, 0x02, 0xed, 0xa6, 0x9b, 0x28, 0xeb,
-  0xeb, 0x05, 0x6b, 0x4f, 0x1e, 0x18, 0x27, 0x58, 0x2c, 0xf7, 0x13, 0x01,
-  0xa2, 0xe7, 0x69, 0x6d, 0x7b, 0xc8, 0x43, 0xb0, 0x35, 0x57, 0xa1, 0x1b,
-  0xde, 0x04, 0x44, 0x81, 0x49, 0x24, 0xa6, 0xc2, 0x91, 0x98, 0xab, 0x72,
-  0xb8, 0x62, 0x66, 0x18, 0x6a, 0xd9, 0x9d, 0x99, 0xf6, 0x84, 0xc8, 0x8c,
-  0x60, 0xef, 0x61, 0x77, 0x47, 0x30, 0x82, 0x49, 0x17, 0xff, 0xae, 0x0c,
-  0x23, 0xc9, 0x96, 0x5c, 0xb0, 0x42, 0x43, 0xb2, 0x6d, 0x0f, 0x0d, 0xbb,
-  0x47, 0x85, 0x94, 0xe4, 0xa1, 0xe6, 0x20, 0x88, 0x3a, 0x0b, 0xbe, 0xbf,
-  0x6a, 0xc1, 0x55, 0xa7, 0x15, 0xe9, 0x41, 0x3f, 0x4b, 0xac, 0xa2, 0x2b,
-  0xc0, 0x28, 0x0c, 0xcc, 0xca, 0xa0, 0xd9, 0x7d, 0x12, 0x25, 0x32, 0xed,
-  0xfc, 0xcf, 0xff, 0xfc, 0xb3, 0x58, 0xb5, 0x6c, 0x20, 0x2f, 0x3f, 0xe4,
-  0x0b, 0x5f, 0x78, 0x9d, 0x9c, 0x7b, 0xc5, 0x9b, 0x49, 0xe6, 0xf3, 0x1c,
-  0x02, 0xa3, 0x49, 0x87, 0x42, 0xc5, 0x2d, 0x1d, 0xf3, 0x87, 0xa6, 0x61,
-  0x82, 0x64, 0x46, 0x36, 0x9c, 0x3d, 0xae, 0xb3, 0x81, 0xaa, 0x48, 0x62,
-  0x46, 0x9f, 0x9c, 0xdf, 0x3e, 0x8d, 0x80, 0x54, 0x92, 0x88, 0x57, 0xa9,
-  0x55, 0x70, 0xfc, 0xc5, 0xca, 0x21, 0xc1, 0x0e, 0xb1, 0x43, 0x92, 0xce,
-  0xfb, 0x84, 0xc6, 0xde, 0x20, 0xda, 0xfd, 0x5c, 0xdf, 0x07, 0x6f, 0x10,
-  0x0f, 0xf6, 0xc4, 0x7c, 0xe9, 0x83, 0x23, 0xc3, 0x4c, 0xde, 0xd9, 0x0f,
-  0x1b, 0xad, 0xc0, 0xb1, 0x64, 0xa2, 0x50, 0x67, 0xae, 0xd5, 0xfb, 0x26,
-  0xa8, 0x14, 0x19, 0xd5, 0x67, 0x93, 0x88, 0x7a, 0xdb, 0xd9, 0x5f, 0x4f,
-  0xa2, 0x7d, 0xd0, 0xa2, 0x5f, 0xb5, 0xed, 0x03, 0x96, 0xd5, 0xfb, 0xb1,
-  0x6c, 0x31, 0xba, 0x07, 0xaf, 0x4a, 0x29, 0xc6, 0xf7, 0x18, 0x81, 0xb2,
-  0x6a, 0x9f, 0x87, 0xfd, 0xc0, 0x59, 0xfa, 0x50, 0xd7, 0x33, 0xda, 0xec,
-  0xf9, 0xd5, 0xbd, 0xe9, 0x54, 0xbd, 0x32, 0x5b, 0xd9, 0xbf, 0x4b, 0xf9,
-  0x39, 0x5d, 0x2e, 0xcf, 0xb2, 0xdc, 0xac, 0xe1, 0xfc, 0x5b, 0x64, 0x54,
-  0xef, 0x98, 0x79, 0x18, 0x1f, 0x98, 0x31, 0xd0, 0x34, 0xe2, 0xf3, 0x2e,
-  0x22, 0x26, 0x22, 0xc3, 0x6a, 0x0e, 0x43, 0xaa, 0x80, 0x29, 0x26, 0xd3,
-  0x03, 0x83, 0x6f, 0xb5, 0x44, 0x8d, 0xb8, 0x30, 0x70, 0x7b, 0x42, 0x28,
-  0x55, 0x2b, 0x98, 0x10, 0x9d, 0xfd, 0x0f, 0x90, 0x2a, 0x1c, 0xb8, 0xd5,
-  0x2a, 0x97, 0xb6, 0x96, 0x6b, 0x2a, 0xdb, 0x43, 0x83, 0xaf, 0x83, 0x53,
-  0xba, 0x16, 0x67, 0x11, 0x9e, 0xc9, 0x24, 0x44, 0x2e, 0x48, 0x61, 0x01,
-  0x40, 0x58, 0xdd, 0x5a, 0x6f, 0x11, 0xb8, 0x05, 0xec, 0x4d, 0xa8, 0xcb,
-  0x88, 0x5f, 0xac, 0xf4, 0x45, 0x3a, 0x42, 0xa5, 0x66, 0x5b, 0x30, 0x3b,
-  0xaa, 0xb3, 0x49, 0xcd, 0x3a, 0xe2, 0x42, 0x82, 0x7c, 0x48, 0x27, 0x44,
-  0xc0, 0x2d, 0x10, 0xb9, 0xf4, 0xa1, 0x6d, 0x23, 0x24, 0x5c, 0x5c, 0x99,
-  0x02, 0xd6, 0xce, 0x35, 0xa8, 0x22, 0xca, 0xce, 0x56, 0x32, 0xf7, 0x4b,
-  0x64, 0xe6, 0xe8, 0x5e, 0xb5, 0x42, 0xeb, 0xd2, 0xc7, 0xab, 0x7b, 0x35,
-  0xc0, 0xff, 0xf1, 0x03, 0x1e, 0x95, 0x52, 0x65, 0xd5, 0x91, 0x43, 0x0f,
-  0xdd, 0x91, 0x51, 0xd1, 0x20, 0x63, 0x50, 0x29, 0xe5, 0x8f, 0xe1, 0x9f,
-  0x2c, 0xa4, 0x04, 0x39, 0xe8, 0x1f, 0x39, 0x5a, 0x42, 0xf9, 0xf1, 0x56,
-  0xed, 0x08, 0xeb, 0x28, 0xd1, 0x68, 0xea, 0xe2, 0x16, 0xdb, 0x49, 0x8c,
-  0xbb, 0xa3, 0xab, 0xd1, 0x99, 0x1d, 0xec, 0x5f, 0x5a, 0x88, 0xdb, 0x3e,
-  0x78, 0x36, 0x88, 0xfc, 0xe4, 0x83, 0x25, 0x4e, 0xe6, 0x08, 0x07, 0xaa,
-  0x85, 0xba, 0xf2, 0xde, 0x4c, 0x63, 0xc3, 0xe7, 0x97, 0xc4, 0x96, 0x3e,
-  0x1d, 0x71, 0x66, 0xa1, 0x35, 0x89, 0x97, 0x26, 0xeb, 0x5a, 0xd3, 0x14,
-  0x2b, 0xdb, 0x14, 0x62, 0x8e, 0x0f, 0x9c, 0x34, 0x62, 0x23, 0x8b, 0x7e,
-  0xd1, 0x72, 0x9e, 0x3d, 0xaa, 0xff, 0x30, 0x9d, 0x55, 0x63, 0x59, 0xff,
-  0x45, 0x5f, 0x44, 0xc4, 0x3f, 0xad, 0xd0, 0xe9, 0xc7, 0x7d, 0x7a, 0x25,
-  0x3c, 0x1d, 0x9c, 0xd1, 0x6e, 0x1d, 0xa8, 0xad, 0x94, 0x22, 0xee, 0xd7,
-  0x1e, 0xab, 0x35, 0x33, 0x8d, 0x3b, 0xdb, 0xc6, 0xc8, 0xce, 0x7a, 0x59,
-  0x71, 0x2d, 0xd7, 0x87, 0xd5, 0x3d, 0xf5, 0xe0, 0xd8, 0xf6, 0x88, 0xae,
-  0xa8, 0x4d, 0xb7, 0xbd, 0xa2, 0x57, 0x76, 0x88, 0x7e, 0xaf, 0xe4, 0x87,
-  0xdd, 0x3e, 0xb9, 0x4e, 0xfd, 0xc2, 0x5e, 0x71, 0x7b, 0x8f, 0xe9, 0xd3,
-  0x2f, 0xbf, 0xd7, 0x3a, 0x17, 0x5b, 0xf7, 0x2a, 0x6b, 0xdd, 0x55, 0x8f,
-  0x11, 0xf6, 0x0f, 0x5c, 0x65, 0xad, 0xdb, 0xea, 0xe1, 0x33, 0xbb, 0xea,
-  0x2a, 0xdb, 0x8b, 0x89, 0x10, 0x92, 0x0f, 0x1f, 0xd2, 0xc5, 0x42, 0xc4,
-  0xce, 0x23, 0xc6, 0xce, 0x84, 0x30, 0xd8, 0xee, 0x42, 0xcf, 0xce, 0x35,
-  0xc8, 0xcd, 0x5e, 0x2d, 0x3f, 0xb2, 0x87, 0x8b, 0xb1, 0x8c, 0x69, 0xf5,
-  0x40, 0x73, 0x5c, 0x42, 0x59, 0x66, 0x70, 0x67, 0x34, 0xfa, 0x76, 0x27,
-  0x6b, 0x26, 0x56, 0x02, 0xee, 0x38, 0xc8, 0x94, 0x94, 0x2a, 0x7d, 0x50,
-  0xa1, 0x81, 0x0c, 0x46, 0x85, 0x0c, 0x9a, 0x07, 0xeb, 0x62, 0x7c, 0xec,
-  0x34, 0xb4, 0x2d, 0x94, 0xdf, 0x65, 0xa0, 0x44, 0xa7, 0x67, 0x3f, 0x23,
-  0xa3, 0x72, 0x37, 0x20, 0xba, 0x4e, 0xb7, 0xfc, 0xfa, 0xe6, 0xc4, 0xb6,
-  0x69, 0x8f, 0x31, 0x3a, 0x22, 0x32, 0xbb, 0x09, 0x2d, 0xb1, 0x5c, 0xfc,
-  0x1f, 0x5a, 0x58, 0xd8, 0xfd, 0x1c, 0x38, 0x03, 0xba, 0xe4, 0xe1, 0x2e,
-  0x2f, 0xc8, 0xc6, 0x65, 0x33, 0xf6, 0xe1, 0x3e, 0x73, 0x97, 0xb9, 0x48,
-  0x5b, 0xb7, 0xc3, 0xe2, 0x6c, 0xe5, 0x12, 0x2b, 0x8f, 0xed, 0xb3, 0x4b,
-  0x61, 0xd2, 0x4e, 0xa0, 0xcf, 0x70, 0x19, 0xda, 0x72, 0xe4, 0xe3, 0xec,
-  0x3a, 0x2f, 0x1e, 0xe5, 0xfb, 0x51, 0x7c, 0x43, 0x3a, 0xe3, 0x1a, 0x8f,
-  0xb6, 0x51, 0xc9, 0xe2, 0xe2, 0x10, 0x06, 0x65, 0xee, 0x3f, 0x28, 0x26,
-  0x52, 0xa1, 0xf3, 0x23, 0x51, 0xe1, 0x39, 0x44, 0x27, 0xea, 0xb1, 0x20,
-  0x10, 0x44, 0x3e, 0x59, 0x52, 0x0a, 0x73, 0xa4, 0xe0, 0x5b, 0xe0, 0xe5,
-  0x30, 0x4a, 0x00, 0xa7, 0x2e, 0xdc, 0x52, 0x4c, 0x73, 0xc5, 0x5a, 0x58,
-  0x5d, 0x6f, 0xc5, 0x64, 0x53, 0x35, 0x70, 0xec, 0x0d, 0x29, 0xac, 0xae,
-  0xcf, 0x3f, 0x28, 0xa6, 0x8c, 0x88, 0x5b, 0xd4, 0x5e, 0x3a, 0x2c, 0xb6,
-  0x09, 0x6f, 0xd4, 0xbe, 0x9e, 0x8f, 0x7e, 0xf2, 0xe8, 0xad, 0xc0, 0xb4,
-  0x5e, 0x32, 0xb5, 0xc2, 0x4d, 0xa6, 0x48, 0x59, 0x0a, 0x54, 0xf2, 0x2f,
-  0xd3, 0x89, 0x65, 0xbc, 0x7e, 0xa8, 0x77, 0x29, 0x17, 0x7a, 0xe8, 0xcc,
-  0x82, 0xcb, 0xed, 0xb6, 0xb7, 0x0c, 0xa0, 0x25, 0x8f, 0x12, 0xf1, 0xb9,
-  0xd0, 0xc2, 0x68, 0x4a, 0x54, 0xe2, 0xcf, 0x16, 0xc5, 0xaf, 0x44, 0x46,
-  0x3d, 0x42, 0x2b, 0x8d, 0x1a, 0x69, 0xe8, 0x2a, 0x7a, 0xfe, 0xf8, 0xe3,
-  0xf3, 0xbb, 0x1c, 0x79, 0x46, 0xf8, 0x90, 0xa2, 0x12, 0x3d, 0x3a, 0x8f,
-  0x36, 0x90, 0x2b, 0xac, 0x00, 0x83, 0x19, 0x1c, 0x50, 0xa8, 0x23, 0x22,
-  0xd8, 0xcf, 0x1e, 0x96, 0xaf, 0x8f, 0x68, 0x06, 0x9c, 0x5c, 0xce, 0xe2,
-  0x40, 0x20, 0xc7, 0x44, 0xe2, 0xa9, 0xcc, 0xb0, 0x46, 0x45, 0xa6, 0xd3,
-  0xd3, 0x64, 0x8f, 0xba, 0x69, 0xe8, 0xfa, 0x8f, 0x9f, 0x19, 0xd6, 0xd8,
-  0xdc, 0x0c, 0xe3, 0x9f, 0xe1, 0xd1, 0xd1, 0x24, 0x56, 0x86, 0x3d, 0x01,
-  0xa1, 0xf8, 0x98, 0x6d, 0x44, 0xde, 0xb0, 0xc8, 0x69, 0x05, 0x3f, 0xaa,
-  0xaa, 0xea, 0xce, 0x10, 0x70, 0x6e, 0x46, 0x4a, 0x79, 0x02, 0x15, 0x20,
-  0x19, 0xfc, 0xea, 0x97, 0x86, 0x69, 0x42, 0x5a, 0xc6, 0xe0, 0x21, 0x5f,
-  0x2c, 0xdc, 0xd6, 0xe4, 0xb7, 0x06, 0x04, 0xef, 0x16, 0xe3, 0x9a, 0x4d,
-  0x6d, 0x50, 0x4a, 0x0c, 0x55, 0x25, 0xf4, 0x3c, 0x58, 0xdf, 0x9c, 0xf2,
-  0x00, 0xff, 0x8e, 0x24, 0x70, 0x9f, 0x52, 0x73, 0x0a, 0x62, 0xf0, 0xea,
-  0x3a, 0xc5, 0x3d, 0xa4, 0x85, 0xda, 0x4b, 0xa1, 0x0a, 0x6c, 0x97, 0x94,
-  0xe2, 0x7a, 0x11, 0x0e, 0x50, 0x6b, 0xf6, 0x7f, 0x19, 0xe4, 0xed, 0x90,
-  0xae, 0x87, 0xa8, 0x23, 0xfb, 0xe3, 0x8d, 0xa5, 0x95, 0x4a, 0x0a, 0x5e,
-  0x61, 0xa4, 0x42, 0xc3, 0x0e, 0x68, 0x4e, 0x97, 0x34, 0x7d, 0xc9, 0xc7,
-  0xcb, 0x86, 0x02, 0x8d, 0x8e, 0x23, 0x2c, 0x02, 0x4a, 0x97, 0x2c, 0x20,
-  0x7c, 0xcd, 0xa6, 0x33, 0x7e, 0x9a, 0x5e, 0x0f, 0xcb, 0x2a, 0xa7, 0x1b,
-  0x07, 0x38, 0x38, 0x6d, 0x8c, 0x76, 0x7e, 0x1f, 0x12, 0x85, 0x6c, 0x8a,
-  0x58, 0x73, 0x1a, 0x7a, 0x61, 0x82, 0xb2, 0x24, 0x6c, 0x7a, 0x8e, 0xfd,
-  0x4a, 0xbf, 0xb3, 0xad, 0x6a, 0xfd, 0xb0, 0x58, 0x84, 0x92, 0x13, 0x6a,
-  0x5c, 0x35, 0x25, 0x45, 0x0c, 0xd8, 0xd1, 0xba, 0x81, 0x52, 0x64, 0xcc,
-  0x6c, 0xbc, 0x0a, 0xc9, 0xa1, 0xa1, 0x87, 0x22, 0xaf, 0xeb, 0x25, 0x16,
-  0xec, 0xcd, 0xc9, 0xe9, 0xb1, 0x05, 0x05, 0xfd, 0xef, 0x9d, 0x21, 0x4d,
-  0x79, 0x35, 0x09, 0x20, 0x50, 0x9c, 0x94, 0xe5, 0x65, 0xd8, 0x49, 0xd6,
-  0xd6, 0x77, 0x7d, 0x2e, 0x3d, 0x83, 0x1f, 0xb7, 0x52, 0xb6, 0x8e, 0xdf,
-  0x7d, 0x7f, 0x72, 0x71, 0xf6, 0xee, 0xed, 0xf1, 0x3b, 0xeb, 0xed, 0xa5,
-  0x43, 0x11, 0xe3, 0x8f, 0xad, 0xc3, 0x90, 0x6f, 0x4e, 0xf1, 0x02, 0x22,
-  0x31, 0x44, 0xcd, 0x2c, 0xa2, 0xda, 0x58, 0x2c, 0xe4, 0x5f, 0x43, 0xbf,
-  0x39, 0xef, 0x21, 0xf5, 0xf8, 0x52, 0x20, 0x7e, 0x41, 0xe6, 0xfe, 0x94,
-  0x02, 0x6f, 0x43, 0xf6, 0x11, 0xdb, 0xe2, 0x5d, 0x44, 0x61, 0xfb, 0x69,
-  0x92, 0x49, 0xe9, 0x52, 0x2a, 0xd4, 0xb4, 0x61, 0xa7, 0x84, 0xc3, 0x44,
-  0x2e, 0x98, 0xd6, 0xea, 0x84, 0xdb, 0xdc, 0xef, 0x6b, 0xc1, 0x6a, 0x25,
-  0xd1, 0xd1, 0x30, 0x00, 0xdc, 0xaf, 0xec, 0x78, 0x93, 0xd6, 0xce, 0x3d,
-  0x2f, 0xfc, 0xd5, 0xee, 0x06, 0x74, 0x09, 0xb7, 0x7e, 0x9d, 0xb1, 0x6e,
-  0xdc, 0xcf, 0x1b, 0xc5, 0x5f, 0xd4, 0x87, 0x70, 0xb0, 0xb3, 0xf3, 0x33,
-  0x0a, 0xdc, 0x7d, 0x29, 0x15, 0xee, 0x42, 0x42, 0xb4, 0xda, 0xeb, 0x86,
-  0xcb, 0xb8, 0xd0, 0x14, 0x1e, 0xda, 0xb7, 0x76, 0x3a, 0xe1, 0x1c, 0xfc,
-  0x70, 0x7e, 0x71, 0xf6, 0xe3, 0x9f, 0x7f, 0xe3, 0x4f, 0x78, 0x58, 0x9d,
-  0xbf, 0x10, 0x84, 0x4d, 0x1b, 0xff, 0xf9, 0x37, 0xff, 0x5a, 0xbb, 0xf9,
-  0xbe, 0x57, 0x86, 0x35, 0x5a, 0x83, 0x97, 0x19, 0xc8, 0xf3, 0x5a, 0xe3,
-  0x15, 0xf2, 0x03, 0x67, 0xfb, 0x5a, 0x18, 0x0d, 0x2e, 0xb9, 0xba, 0xbd,
-  0x41, 0xbb, 0x6e, 0x3a, 0xb0, 0x3d, 0x20, 0x3d, 0xcf, 0x01, 0x20, 0xfb,
-  0x92, 0xa7, 0x49, 0x89, 0x98, 0x7d, 0x24, 0xf8, 0x01, 0xce, 0x67, 0xe7,
-  0xe3, 0xf0, 0xf4, 0xf4, 0x37, 0x9d, 0x04, 0x14, 0x09, 0x73, 0x63, 0x19,
-  0x58, 0x1d, 0x55, 0x59, 0xe1, 0xd7, 0xf3, 0xd2, 0xbd, 0x3b, 0x93, 0xde,
-  0xbc, 0x84, 0x7a, 0x3c, 0xa8, 0x33, 0xa3, 0xd4, 0x52, 0x5d, 0xe6, 0x64,
-  0x46, 0x88, 0x18, 0x63, 0x6d, 0x53, 0xc7, 0x82, 0x6a, 0x60, 0xf8, 0x25,
-  0xbc, 0xe2, 0xb6, 0x38, 0xa2, 0xe8, 0xc9, 0x9c, 0x4d, 0x04, 0xb8, 0x77,
-  0x69, 0x29, 0x3e, 0xb8, 0x50, 0xa1, 0xd6, 0xb5, 0x0f, 0x2b, 0xa1, 0xe1,
-  0x52, 0xa0, 0x6b, 0xb6, 0xca, 0xeb, 0x8f, 0x80, 0xc2, 0xd3, 0xc1, 0x84,
-  0xb2, 0xab, 0xb9, 0xb0, 0xa4, 0xeb, 0xa2, 0x2b, 0xab, 0x2b, 0x72, 0x3e,
-  0x21, 0x06, 0x2d, 0x5c, 0x2a, 0xd1, 0x53, 0xaa, 0x45, 0x88, 0x74, 0x73,
-  0xd0, 0xe4, 0x20, 0x99, 0xbc, 0x23, 0x28, 0xaf, 0xbc, 0x1c, 0x1a, 0x3a,
-  0xa0, 0xf6, 0x84, 0x7a, 0x39, 0x59, 0x0c, 0x8f, 0xd1, 0xc9, 0x7b, 0xc5,
-  0x4a, 0x25, 0x32, 0xcc, 0x83, 0x44, 0x79, 0xc9, 0x75, 0x91, 0xab, 0x6d,
-  0xf0, 0x29, 0xd1, 0x54, 0x77, 0x9e, 0x10, 0x3f, 0x1f, 0x46, 0x7f, 0xf3,
-  0x98, 0xe6, 0x48, 0x05, 0x87, 0xcf, 0x81, 0x90, 0x06, 0x72, 0xf9, 0x98,
-  0x3f, 0x08, 0x81, 0xd8, 0xc8, 0xde, 0x04, 0x4c, 0x34, 0xe7, 0x94, 0xf0,
-  0xbe, 0xe8, 0xec, 0x01, 0x14, 0x22, 0x1c, 0x41, 0xa4, 0xc7, 0x2b, 0xbb,
-  0x1c, 0x89, 0xce, 0x99, 0xc7, 0xc8, 0x09, 0xca, 0xe4, 0x07, 0xad, 0xf6,
-  0x5c, 0x7f, 0xd1, 0x5b, 0xed, 0x2b, 0x6b, 0x4d, 0xd8, 0x28, 0xb1, 0x20,
-  0x88, 0x59, 0x6f, 0xde, 0xa1, 0xe6, 0xbf, 0x97, 0x67, 0x47, 0x67, 0xa7,
-  0xe6, 0x2f, 0xc7, 0x6f, 0x4e, 0x7e, 0x74, 0x97, 0x18, 0x6f, 0x80, 0x16,
-  0x1c, 0xde, 0x55, 0xad, 0xb4, 0xa7, 0x86, 0x81, 0x4c, 0x31, 0xe6, 0x8b,
-  0x0e, 0x73, 0x9b, 0x77, 0x2c, 0xa5, 0xf6, 0x64, 0xab, 0x8e, 0xa4, 0x90,
-  0x6f, 0x90, 0xd2, 0xc7, 0x2d, 0x5b, 0xe8, 0xb4, 0xdb, 0x99, 0x94, 0x11,
-  0xe1, 0x9f, 0x4a, 0xc1, 0x9e, 0xf9, 0x64, 0x1b, 0x89, 0xbf, 0x0f, 0xa5,
-  0x73, 0x65, 0x65, 0xab, 0x1a, 0x35, 0x7e, 0xcd, 0xbc, 0x0e, 0x17, 0xb3,
-  0xc7, 0xd1, 0x67, 0x14, 0x32, 0x7f, 0x90, 0xaa, 0x9b, 0x19, 0x7d, 0x3f,
-  0xc3, 0x21, 0x46, 0xee, 0x3f, 0xdd, 0x5b, 0x7e, 0x96, 0x77, 0x07, 0x68,
-  0x08, 0x3c, 0xbe, 0x6d, 0xb1, 0x3d, 0x26, 0x99, 0x00, 0x01, 0x04, 0x21,
-  0x78, 0x8e, 0xe2, 0xdf, 0x07, 0xad, 0x6b, 0xca, 0xcc, 0x54, 0x34, 0x39,
-  0x88, 0x93, 0x12, 0xe8, 0x0f, 0x10, 0x44, 0xc3, 0x11, 0x2b, 0x62, 0xc0,
-  0x2f, 0x4f, 0xce, 0x22, 0x4c, 0x3c, 0xe8, 0xfc, 0xc1, 0x90, 0xf1, 0xb7,
-  0x15, 0xbd, 0xa5, 0x8f, 0xd6, 0x6b, 0xbe, 0xaa, 0xc3, 0xb7, 0x9f, 0x0d,
-  0xd0, 0x95, 0x5c, 0xa7, 0x72, 0x5d, 0x13, 0xa4, 0xba, 0xfc, 0x6d, 0x99,
-  0xdf, 0xa6, 0xc8, 0x21, 0xa1, 0xca, 0xaa, 0x52, 0xdc, 0xb2, 0xd3, 0x46,
-  0xfa, 0xab, 0x1a, 0x49, 0xdb, 0xad, 0x3c, 0xfb, 0x35, 0x8d, 0x3c, 0xeb,
-  0xb4, 0x71, 0xf3, 0xab, 0x1a, 0xb1, 0x05, 0xae, 0x8d, 0x06, 0xf7, 0xe3,
-  0xc9, 0x65, 0x72, 0x74, 0xf6, 0xda, 0x1d, 0xad, 0x4b, 0x8b, 0xd2, 0x4c,
-  0x93, 0xf1, 0xb2, 0x30, 0xbb, 0x8f, 0xf8, 0xc3, 0x51, 0x14, 0x0b, 0x5a,
-  0x2e, 0xb0, 0x9b, 0x09, 0xf0, 0x04, 0xb5, 0x32, 0x9f, 0xdc, 0x64, 0x39,
-  0x7e, 0x54, 0x31, 0x48, 0xc0, 0xe7, 0xf6, 0x93, 0xc7, 0xe7, 0xc4, 0x72,
-  0x71, 0x6d, 0xc9, 0x54, 0x71, 0x28, 0x89, 0xec, 0x28, 0xad, 0x34, 0x85,
-  0x6c, 0x9c, 0x12, 0x9d, 0x45, 0xc1, 0x89, 0x50, 0x46, 0x87, 0x6f, 0x13,
-  0x4c, 0x6e, 0xf8, 0x89, 0xb2, 0x3e, 0xcf, 0xa4, 0xd1, 0xf4, 0xf2, 0x46,
-  0x7a, 0xd3, 0x02, 0x46, 0xed, 0x29, 0xb0, 0xb7, 0xb5, 0xd1, 0xa5, 0x2c,
-  0x03, 0x6c, 0x33, 0x02, 0x71, 0x4e, 0x35, 0x07, 0x46, 0x0a, 0x91, 0x58,
-  0x75, 0x9b, 0x6b, 0xb6, 0x05, 0x37, 0xa9, 0x6d, 0xc2, 0x7e, 0x67, 0x9f,
-  0xff, 0x78, 0x93, 0xa2, 0xc4, 0xb9, 0x11, 0x1b, 0x02, 0x93, 0xc9, 0xff,
-  0xee, 0xa9, 0x93, 0x4f, 0xac, 0xf6, 0x60, 0x46, 0x3e, 0x43, 0x21, 0xb0,
-  0x29, 0x9f, 0x88, 0xfa, 0xbe, 0x68, 0xd2, 0x4f, 0x30, 0x1f, 0x49, 0xdb,
-  0x17, 0x42, 0x0f, 0xf7, 0xe6, 0x53, 0xd1, 0x21, 0x12, 0x4b, 0x1b, 0x02,
-  0x2c, 0x8a, 0x66, 0x25, 0x79, 0xc8, 0x07, 0x31, 0xb3, 0x4d, 0x0f, 0x34,
-  0x27, 0x12, 0xa1, 0x9a, 0xac, 0xa6, 0xf2, 0x64, 0x1b, 0xd1, 0xa8, 0xb4,
-  0xfd, 0xac, 0x66, 0x57, 0x96, 0x95, 0xa0, 0x28, 0x5c, 0x85, 0x0d, 0xc7,
-  0xf7, 0x40, 0x45, 0xc5, 0x79, 0xd2, 0x06, 0x51, 0x3a, 0x7a, 0xe4, 0xa2,
-  0x22, 0xed, 0x4a, 0x12, 0x97, 0x44, 0x51, 0x9e, 0x96, 0x98, 0xc9, 0x3e,
-  0x60, 0x81, 0x54, 0x2c, 0xd1, 0xfc, 0xe2, 0x9e, 0x4b, 0x7b, 0xa4, 0x05,
-  0xf2, 0x8b, 0xba, 0x30, 0x47, 0x5d, 0x18, 0x49, 0xbf, 0x70, 0x99, 0x0e,
-  0xcf, 0xf8, 0x8f, 0x23, 0x55, 0x38, 0xb4, 0x66, 0xb3, 0x5f, 0xb5, 0x5e,
-  0xb9, 0xf6, 0xe5, 0x06, 0x67, 0x6f, 0xef, 0x04, 0x61, 0x54, 0xae, 0x4d,
-  0x30, 0x0e, 0xa9, 0x1d, 0xeb, 0x8e, 0x7b, 0xee, 0xf9, 0x8a, 0xef, 0x30,
-  0xb7, 0xc7, 0xa5, 0x65, 0x19, 0xe9, 0x3a, 0xc3, 0xa9, 0xfd, 0xb0, 0xb5,
-  0xcf, 0xba, 0x5b, 0x44, 0x7d, 0xd3, 0x44, 0x01, 0x57, 0xfa, 0x21, 0xaa,
-  0xcf, 0xc5, 0x88, 0xce, 0x28, 0x59, 0x49, 0xb4, 0xbe, 0x2a, 0x5b, 0xcc,
-  0x44, 0x7c, 0xca, 0x4f, 0x10, 0x09, 0x83, 0x19, 0x8c, 0x79, 0x9e, 0x68,
-  0x2f, 0x8d, 0x1e, 0xe7, 0xdb, 0x30, 0x2f, 0xe4, 0xb3, 0x44, 0x3b, 0xc1,
-  0x17, 0x31, 0xc1, 0xbb, 0x8b, 0xdc, 0x6e, 0x3d, 0xa9, 0xa3, 0x87, 0x1f,
-  0x11, 0x74, 0x0b, 0xd9, 0xdc, 0xfa, 0x6f, 0x79, 0x23, 0xe0, 0x3c, 0xea,
-  0x78, 0x41, 0x69, 0xb4, 0xcb, 0x8a, 0x93, 0xf5, 0x1c, 0xcf, 0x17, 0x60,
-  0xb1, 0x69, 0xd1, 0xf0, 0x70, 0x09, 0x4e, 0x4b, 0x5c, 0x30, 0xc9, 0xdb,
-  0x10, 0x0f, 0x53, 0x5e, 0x51, 0xc1, 0x27, 0xce, 0xb9, 0x25, 0xd4, 0x15,
-  0xcf, 0xcf, 0x4d, 0x5a, 0x5c, 0x67, 0xac, 0x23, 0xba, 0x46, 0xb1, 0xd7,
-  0xf5, 0x62, 0x34, 0xc7, 0x1e, 0xde, 0x89, 0x95, 0x59, 0xe7, 0x6e, 0x1e,
-  0xf6, 0x76, 0xed, 0x3c, 0xd0, 0xa0, 0x88, 0x39, 0x00, 0x2b, 0x41, 0x35,
-  0x27, 0xc8, 0xe2, 0xbe, 0x4b, 0x21, 0x4e, 0x6c, 0x99, 0x46, 0xa7, 0x6d,
-  0xdb, 0x18, 0x02, 0xe5, 0xa2, 0x84, 0x18, 0x50, 0x64, 0x70, 0x53, 0x58,
-  0x9f, 0x34, 0x03, 0x06, 0xb1, 0x71, 0x5a, 0x93, 0x5c, 0x5e, 0x7d, 0x58,
-  0xa2, 0x10, 0x80, 0x16, 0xed, 0x85, 0xb5, 0x23, 0x44, 0xfc, 0x46, 0x2c,
-  0xaa, 0xc6, 0x04, 0x26, 0x5e, 0x70, 0x9a, 0xb0, 0xef, 0x4c, 0x99, 0xe9,
-  0x8d, 0x67, 0xcf, 0x8e, 0xe7, 0x0e, 0x1b, 0xe5, 0xfc, 0x70, 0x34, 0xd2,
-  0x6d, 0x72, 0x14, 0xee, 0x08, 0xc1, 0xcd, 0x50, 0x0a, 0xbb, 0x32, 0x7b,
-  0x44, 0x9c, 0x0f, 0xd2, 0x48, 0x27, 0x66, 0xba, 0xc7, 0xe2, 0xed, 0x35,
-  0xcb, 0x68, 0xe8, 0x15, 0x32, 0x5e, 0xde, 0x57, 0x3a, 0xe2, 0xbb, 0xf5,
-  0x33, 0x19, 0xaf, 0x7f, 0x8b, 0x69, 0xc5, 0x3c, 0x23, 0x09, 0x51, 0xc5,
-  0x3d, 0x39, 0x31, 0x8d, 0x00, 0x6a, 0x57, 0x55, 0xdc, 0x7b, 0x12, 0x0e,
-  0xfa, 0x7b, 0x1e, 0x55, 0xff, 0x1f, 0x1a, 0xf4, 0xf7, 0x91, 0x41, 0x3f,
-  0x75, 0x07, 0x87, 0x3f, 0x96, 0xec, 0xef, 0x7f, 0xa6, 0xf8, 0x72, 0xe6,
-  0xa0, 0x9f, 0x25, 0xee, 0x83, 0xde, 0x17, 0xcd, 0x73, 0x03, 0xa1, 0xce,
-  0xcc, 0x02, 0x23, 0xcc, 0x1e, 0x5e, 0xef, 0x53, 0xcf, 0xec, 0xa7, 0x26,
-  0x29, 0x4c, 0x28, 0xa3, 0x1f, 0xb3, 0x94, 0x09, 0x84, 0x8f, 0x2d, 0x4c,
-  0x7f, 0x42, 0x73, 0x60, 0x8c, 0xad, 0x95, 0xe1, 0x70, 0xed, 0x85, 0xf7,
-  0x9d, 0xe7, 0xd6, 0xfe, 0xdf, 0xd9, 0xe7, 0x3d, 0x49, 0xf9, 0xd4, 0x52,
-  0xba, 0x16, 0x3b, 0x73, 0x9a, 0x35, 0x66, 0x4d, 0x9c, 0xdf, 0x8a, 0x73,
-  0x6d, 0xae, 0xaa, 0x14, 0xc4, 0x9b, 0xa8, 0x97, 0x3b, 0x5c, 0x41, 0xed,
-  0xca, 0xda, 0x7f, 0x4a, 0xbd, 0x2f, 0x08, 0x6f, 0x08, 0xb5, 0x40, 0xfc,
-  0x3d, 0xe4, 0x40, 0x44, 0x71, 0xe2, 0x2b, 0xeb, 0x63, 0xd4, 0x82, 0xb9,
-  0xfd, 0x60, 0x86, 0x78, 0x90, 0x7c, 0x64, 0x44, 0x65, 0x88, 0xb3, 0x04,
-  0xed, 0x7d, 0xe6, 0x96, 0xc8, 0xad, 0x03, 0xb9, 0x64, 0x84, 0x1c, 0x60,
-  0xe8, 0x49, 0x6f, 0x2b, 0x4f, 0xd4, 0x9d, 0x2d, 0x9c, 0xf0, 0xc1, 0xbe,
-  0x94, 0x57, 0xdd, 0x57, 0x58, 0x1e, 0x9f, 0x93, 0xb8, 0x13, 0xfa, 0xc5,
-  0x61, 0x72, 0x06, 0x07, 0x52, 0x8b, 0x72, 0xf6, 0x8a, 0x37, 0xbf, 0x4b,
-  0x17, 0x6b, 0x6f, 0xdd, 0x17, 0x6e, 0x8d, 0xb5, 0x4b, 0x1a, 0xcd, 0xdf,
-  0x51, 0x31, 0x6b, 0xaf, 0x14, 0x75, 0x94, 0x66, 0xc9, 0xc5, 0xf1, 0xe5,
-  0x05, 0xc0, 0x48, 0x10, 0x01, 0xdd, 0x3b, 0xd7, 0x88, 0x84, 0x6d, 0x4b,
-  0x53, 0x28, 0x02, 0xcd, 0x29, 0x25, 0x4e, 0x44, 0x30, 0x97, 0x8d, 0x5d,
-  0x71, 0xfe, 0xa7, 0xbe, 0xc7, 0x70, 0x7a, 0xb3, 0xe6, 0x3c, 0xe5, 0x2e,
-  0x14, 0xd1, 0x66, 0xd9, 0xd9, 0xdf, 0x77, 0xb0, 0x0a, 0xae, 0xff, 0xc5,
-  0x37, 0xa9, 0x05, 0xca, 0x0e, 0x6d, 0xc4, 0x5e, 0xe1, 0xe5, 0xca, 0x2e,
-  0x4d, 0xcf, 0x31, 0xd8, 0x34, 0x88, 0xb7, 0xda, 0x8f, 0x8b, 0x16, 0x20,
-  0x9d, 0xb0, 0x09, 0xc5, 0xf8, 0x9c, 0xa7, 0x6e, 0x0a, 0x75, 0xa0, 0xd1,
-  0x89, 0x76, 0x77, 0x23, 0x50, 0xc8, 0x74, 0x6c, 0xc4, 0xaa, 0xa8, 0x76,
-  0x92, 0x26, 0x80, 0xb7, 0xd8, 0xe1, 0x07, 0x5d, 0xb3, 0x26, 0xc3, 0x63,
-  0x70, 0x45, 0x1e, 0x38, 0x9a, 0x31, 0x67, 0x64, 0xd8, 0x81, 0xb2, 0x94,
-  0xf9, 0x01, 0x69, 0x0b, 0x3a, 0x69, 0x1d, 0xf1, 0xc2, 0x39, 0x0d, 0x5a,
-  0x60, 0x2a, 0xf5, 0xa8, 0x39, 0xc5, 0x75, 0x1b, 0xf4, 0x2c, 0x90, 0xe0,
-  0xfb, 0xcf, 0xc2, 0x1d, 0x31, 0xba, 0x3c, 0xbb, 0x90, 0x1d, 0x16, 0x5e,
-  0xce, 0x6c, 0x39, 0xe2, 0x11, 0xc7, 0xb3, 0xd0, 0x8f, 0x14, 0xb8, 0xb6,
-  0x99, 0xc1, 0x96, 0xd2, 0xce, 0xfb, 0x2a, 0xcb, 0x80, 0x0b, 0xca, 0x6d,
-  0x91, 0xa1, 0x7d, 0x2f, 0xb9, 0xc0, 0x4a, 0xdf, 0xa8, 0x27, 0xd3, 0x7b,
-  0x89, 0x0f, 0xda, 0x19, 0x9f, 0x60, 0xce, 0x5b, 0xa5, 0x7d, 0x24, 0x19,
-  0xac, 0x44, 0xff, 0x28, 0xf8, 0x3e, 0x5b, 0x0a, 0xa7, 0xbb, 0x17, 0xf9,
-  0x10, 0x9d, 0x59, 0x82, 0x4e, 0x15, 0xf2, 0xba, 0x69, 0x3c, 0x23, 0x19,
-  0x45, 0x99, 0x48, 0x5a, 0x30, 0x89, 0xa5, 0xa0, 0x35, 0x52, 0x8a, 0xaa,
-  0x74, 0x57, 0x7b, 0x62, 0x54, 0x65, 0xa5, 0xec, 0x93, 0xcb, 0x53, 0x6d,
-  0x07, 0xa7, 0x76, 0xbb, 0x9b, 0xff, 0xfc, 0xec, 0xe2, 0xd2, 0xde, 0xfb,
-  0xf4, 0x59, 0xfc, 0xa0, 0x73, 0x7e, 0x88, 0x24, 0x5f, 0xd2, 0x3a, 0xe4,
-  0x76, 0x43, 0xa9, 0xab, 0x8d, 0x68, 0xfa, 0xb1, 0x2c, 0x0a, 0xda, 0xd1,
-  0x86, 0x88, 0x4b, 0x86, 0x48, 0x55, 0xa7, 0xcc, 0x62, 0x91, 0x3a, 0xb0,
-  0xb8, 0xb8, 0x80, 0xe9, 0xc2, 0x89, 0x97, 0x37, 0x72, 0x4a, 0xee, 0x93,
-  0xbd, 0x70, 0x77, 0x90, 0x51, 0x7d, 0x71, 0x4c, 0xa5, 0xce, 0x2f, 0x6f,
-  0xf8, 0x6f, 0x41, 0xdf, 0x39, 0x31, 0x50, 0x7e, 0x18, 0xfa, 0x00, 0xed,
-  0xee, 0xa0, 0xb0, 0x9a, 0x31, 0x3f, 0xd0, 0xbe, 0x4d, 0x6f, 0xf5, 0xe6,
-  0xec, 0x89, 0x07, 0xa1, 0x82, 0xd8, 0x94, 0xbd, 0x02, 0xa8, 0x29, 0x7e,
-  0xd0, 0x93, 0xaf, 0xf4, 0x8c, 0x72, 0xc6, 0x47, 0xa2, 0x45, 0xc8, 0xfb,
-  0xe4, 0xa9, 0x6b, 0x61, 0x41, 0xf7, 0x95, 0x34, 0x70, 0xa2, 0xd5, 0xa4,
-  0xe8, 0x87, 0x03, 0xdd, 0x2e, 0xb8, 0x32, 0x78, 0x63, 0xf0, 0x73, 0xae,
-  0x9d, 0x67, 0x36, 0x8d, 0x5d, 0x15, 0x06, 0xaf, 0x2b, 0xf4, 0x63, 0xc5,
-  0xae, 0x40, 0xe7, 0xe8, 0x6c, 0xbb, 0x27, 0xbc, 0xdb, 0xbf, 0x4e, 0x91,
-  0xea, 0x22, 0x58, 0x2c, 0x1e, 0xbb, 0x77, 0xb7, 0x92, 0xca, 0x95, 0x17,
-  0xcb, 0x0c, 0x9a, 0x5a, 0x5a, 0xcd, 0x88, 0xfd, 0xdb, 0x08, 0x12, 0x98,
-  0x8b, 0xf4, 0x56, 0x20, 0x75, 0x4b, 0x9f, 0x7e, 0xe2, 0x89, 0xdc, 0x42,
-  0x27, 0xa7, 0xc7, 0x6e, 0xa9, 0x98, 0x39, 0x1c, 0x07, 0xd9, 0x69, 0xfc,
-  0x54, 0x01, 0xd2, 0x5e, 0x15, 0xc3, 0xe4, 0x9c, 0x4a, 0xfb, 0x41, 0x73,
-  0xaa, 0xff, 0xdd, 0xb5, 0xc6, 0x07, 0x05, 0x0e, 0x64, 0x73, 0x79, 0x22,
-  0xd9, 0x31, 0x2f, 0xcc, 0xca, 0xe2, 0x27, 0xf4, 0x57, 0x8f, 0xe5, 0x36,
-  0x18, 0xee, 0x0b, 0xf7, 0x72, 0x6d, 0x46, 0x62, 0xec, 0xf6, 0xee, 0x23,
-  0x4f, 0x65, 0x5f, 0x19, 0xa3, 0x9e, 0xcb, 0x48, 0xab, 0x68, 0xa6, 0xf3,
-  0xac, 0x75, 0xac, 0xb9, 0x85, 0x2b, 0x7d, 0xa6, 0x25, 0xc2, 0xbd, 0xa6,
-  0xf8, 0x42, 0x38, 0x1c, 0xdb, 0xba, 0x11, 0x84, 0x7d, 0x24, 0x75, 0xce,
-  0xb4, 0x55, 0x90, 0xb4, 0x9d, 0x59, 0x00, 0xb1, 0x1f, 0xc2, 0xc4, 0xd4,
-  0x5a, 0xb6, 0x98, 0xee, 0xe4, 0x76, 0xea, 0x14, 0x3e, 0xe5, 0x9d, 0x68,
-  0xb7, 0x8d, 0xbd, 0xc3, 0x5a, 0xbd, 0x13, 0xd0, 0xa5, 0xb0, 0x5e, 0x91,
-  0x17, 0x81, 0xdc, 0xd9, 0xe6, 0x86, 0xf7, 0x4d, 0x80, 0xa7, 0xcf, 0x5c,
-  0x53, 0x57, 0xa0, 0xee, 0x50, 0xd9, 0x7e, 0xd8, 0x92, 0x3f, 0x96, 0x58,
-  0x3c, 0xb7, 0x4f, 0xb2, 0xe5, 0xc8, 0x99, 0xa7, 0x91, 0x23, 0xe5, 0x7d,
-  0x83, 0x37, 0xc3, 0x65, 0x49, 0xdc, 0x23, 0xc5, 0xbd, 0x03, 0x14, 0x4b,
-  0x6d, 0x3b, 0xf6, 0xa3, 0x71, 0xe9, 0x02, 0xf9, 0x8d, 0x90, 0x9a, 0xdd,
-  0x88, 0xb7, 0x86, 0xca, 0x63, 0x05, 0x8c, 0xb5, 0xcb, 0xb9, 0x00, 0x13,
-  0xbd, 0x2f, 0x7d, 0x2e, 0xae, 0x0d, 0x2e, 0x24, 0x6e, 0x9d, 0x01, 0xbe,
-  0x20, 0x2d, 0x2d, 0x4f, 0x85, 0x46, 0xa2, 0x8d, 0x78, 0x9c, 0xa4, 0x16,
-  0xd7, 0x18, 0x32, 0x6c, 0x11, 0x6f, 0x11, 0x5d, 0xc6, 0xa2, 0xf2, 0x6a,
-  0x94, 0xb6, 0xd4, 0xcc, 0x42, 0x09, 0x72, 0xcb, 0x63, 0xfc, 0x2b, 0xe5,
-  0x47, 0x88, 0xf8, 0x99, 0xab, 0xec, 0xaf, 0x50, 0x27, 0x87, 0x7c, 0xe1,
-  0x70, 0x92, 0x10, 0x8f, 0xb2, 0x58, 0xa6, 0x9e, 0x4d, 0xff, 0xf4, 0x85,
-  0xf8, 0xad, 0xc4, 0x2f, 0xa2, 0x45, 0x34, 0xbb, 0xd1, 0xb1, 0x67, 0x7b,
-  0xd6, 0x77, 0x49, 0x30, 0x40, 0x01, 0xb7, 0xfb, 0x60, 0x40, 0x23, 0xdc,
-  0x46, 0xa3, 0x6f, 0x93, 0xb7, 0xaf, 0x9f, 0x11, 0x22, 0xe5, 0x3a, 0xab,
-  0x16, 0xc6, 0x6a, 0x71, 0x86, 0xf9, 0xd9, 0x77, 0x5e, 0x63, 0xfb, 0x0e,
-  0x3c, 0xa0, 0x38, 0x05, 0x11, 0x66, 0x62, 0x35, 0x98, 0x25, 0xa4, 0x6c,
-  0xca, 0xeb, 0xbe, 0x64, 0x46, 0x2b, 0x8b, 0x97, 0x57, 0x4d, 0x3a, 0xa0,
-  0x88, 0xea, 0x08, 0xb0, 0x67, 0x4f, 0x9c, 0x00, 0xa3, 0x7a, 0xf1, 0x44,
-  0x52, 0x78, 0x4d, 0xc6, 0x41, 0xe4, 0x44, 0x3d, 0x63, 0xa1, 0x79, 0xc4,
-  0xe7, 0x9e, 0x14, 0xd9, 0xf0, 0x35, 0x28, 0xe9, 0x70, 0xa0, 0x7a, 0xef,
-  0x3d, 0xf3, 0x7d, 0x0b, 0x44, 0x97, 0x08, 0xa4, 0x0f, 0x93, 0xa4, 0x43,
-  0x4b, 0xf1, 0x9e, 0x7d, 0x6e, 0x9f, 0x25, 0x47, 0x52, 0x5e, 0x78, 0x45,
-  0x2d, 0x56, 0xbc, 0x21, 0x0a, 0xb0, 0x9a, 0x09, 0xaa, 0x9a, 0xb1, 0xce,
-  0xe3, 0xcd, 0xbd, 0xf7, 0xca, 0x8b, 0xb6, 0xeb, 0x04, 0x8c, 0xd2, 0x76,
-  0x63, 0x62, 0x50, 0xf9, 0xe2, 0xc6, 0x3f, 0x9c, 0xcf, 0xf9, 0x96, 0x3e,
-  0xef, 0x62, 0x3b, 0x55, 0x06, 0x66, 0x3e, 0x7f, 0x80, 0x1e, 0x75, 0xde,
-  0xfa, 0x47, 0x87, 0xc9, 0xaa, 0xcc, 0x06, 0xec, 0x75, 0xef, 0x23, 0x7b,
-  0x72, 0x66, 0xa8, 0xba, 0xdb, 0x75, 0x91, 0xff, 0x3d, 0xf3, 0xc0, 0x4c,
-  0x5a, 0x90, 0xc4, 0x7b, 0x7c, 0x5f, 0x04, 0xc6, 0x6d, 0x3a, 0xcb, 0x45,
-  0x28, 0x52, 0xec, 0xcf, 0x3d, 0xf0, 0x44, 0x76, 0x2d, 0x57, 0xb4, 0xe3,
-  0xd0, 0x3d, 0x55, 0xa4, 0xa4, 0xc8, 0x73, 0xd6, 0xc2, 0x0a, 0x3f, 0x7f,
-  0x2a, 0x7a, 0x97, 0xea, 0xc6, 0x74, 0xf3, 0xd2, 0x44, 0xcc, 0x40, 0xc7,
-  0xd6, 0x15, 0xd3, 0xcf, 0xe5, 0xda, 0x93, 0xa5, 0x94, 0x82, 0x84, 0xa9,
-  0x2b, 0xef, 0x42, 0x7f, 0xbd, 0xcb, 0x0b, 0xc1, 0xef, 0x06, 0xaf, 0x3f,
-  0x5f, 0xe1, 0x8f, 0x94, 0x12, 0xed, 0xc7, 0xd8, 0x4b, 0xde, 0xf3, 0x9f,
-  0x79, 0x49, 0x99, 0x20, 0x0f, 0x66, 0x36, 0x3b, 0xcb, 0x63, 0xd6, 0xf7,
-  0x9c, 0x10, 0xf6, 0x2c, 0xb1, 0x23, 0x45, 0xea, 0x58, 0x47, 0x98, 0x86,
-  0xaf, 0xec, 0xe7, 0x67, 0x25, 0x49, 0x53, 0xef, 0x7b, 0xbc, 0xa5, 0xde,
-  0x80, 0xc0, 0xdc, 0x19, 0x07, 0x45, 0xab, 0x24, 0xab, 0x7b, 0xfa, 0x85,
-  0xec, 0x0d, 0xbd, 0x2f, 0xad, 0xc9, 0xba, 0xea, 0x8d, 0xcf, 0x76, 0x7d,
-  0x85, 0x75, 0x4a, 0xd1, 0x45, 0xce, 0x0d, 0x5e, 0xf9, 0x02, 0xef, 0x8c,
-  0x93, 0x19, 0x15, 0x38, 0x9d, 0x69, 0x55, 0x52, 0xe5, 0x32, 0x73, 0x8f,
-  0xed, 0xb7, 0x84, 0xee, 0xa5, 0xaf, 0x3e, 0x25, 0x27, 0xaf, 0xbd, 0x07,
-  0x9f, 0xb8, 0x01, 0xa6, 0x33, 0xd2, 0x06, 0xee, 0xd9, 0x5b, 0x55, 0x4b,
-  0xb5, 0x56, 0xef, 0x51, 0xde, 0x19, 0xef, 0x4a, 0xe6, 0xdc, 0xc1, 0xf4,
-  0x07, 0xcf, 0xf0, 0x76, 0x38, 0xba, 0x31, 0xb7, 0xda, 0xa4, 0x01, 0xa8,
-  0xb1, 0xd0, 0x98, 0x57, 0x77, 0xed, 0x3f, 0x7b, 0xbe, 0xe6, 0x59, 0xb9,
-  0x34, 0x6b, 0x7b, 0xd5, 0x7b, 0xef, 0x7d, 0x16, 0x1e, 0x73, 0x35, 0x09,
-  0x14, 0x7a, 0x6d, 0x8e, 0x1a, 0x9d, 0xb4, 0x64, 0x8b, 0xd2, 0x3f, 0xff,
-  0x5d, 0xdd, 0x83, 0x15, 0xb1, 0x89, 0xd5, 0xff, 0xee, 0xf7, 0xf7, 0x73,
-  0x3f, 0x31, 0x89, 0x7d, 0x83, 0x55, 0x86, 0xe8, 0xc1, 0xa4, 0x45, 0x1f,
-  0xee, 0x20, 0x2e, 0x98, 0x1d, 0xaf, 0x05, 0x5e, 0x73, 0xa3, 0x47, 0x2c,
-  0x0b, 0x27, 0x39, 0xd8, 0x10, 0x94, 0x6c, 0xeb, 0xa9, 0x4f, 0x3c, 0x47,
-  0x32, 0x5f, 0xfc, 0x50, 0x9e, 0x27, 0x75, 0xb7, 0x73, 0x0c, 0xea, 0x9b,
-  0x25, 0x9b, 0xdd, 0x76, 0x44, 0xce, 0xcd, 0xe6, 0xbd, 0xb6, 0xef, 0xa4,
-  0x17, 0xfa, 0x06, 0xb5, 0xf1, 0xc8, 0xf4, 0x96, 0xed, 0x72, 0x4b, 0x28,
-  0x0d, 0x2f, 0xfc, 0x5d, 0x55, 0xd2, 0x5f, 0x95, 0x77, 0x60, 0x2b, 0x5d,
-  0x81, 0x2d, 0x14, 0x38, 0xb4, 0xf7, 0x19, 0x51, 0x6d, 0x08, 0xa1, 0x63,
-  0x56, 0xe9, 0x26, 0x9b, 0x7c, 0xd4, 0x23, 0x23, 0x8d, 0x38, 0x10, 0xb5,
-  0xf7, 0xd6, 0x53, 0x3b, 0xb5, 0x30, 0x69, 0x2e, 0x8e, 0xbb, 0x56, 0x80,
-  0x7b, 0x94, 0x77, 0xcd, 0xc5, 0xe5, 0xe8, 0xfc, 0x80, 0xfa, 0xcc, 0x71,
-  0x44, 0x73, 0x20, 0x8e, 0x46, 0xd9, 0xdf, 0x24, 0x77, 0xa6, 0x76, 0x4f,
-  0x3f, 0x5f, 0xf1, 0xf4, 0x48, 0xdc, 0x7b, 0x27, 0x53, 0x12, 0xbf, 0x66,
-  0x1d, 0xfc, 0x97, 0x3e, 0x13, 0x48, 0xa2, 0xfa, 0xf9, 0xd9, 0x0b, 0x46,
-  0x3d, 0x83, 0x34, 0x24, 0xc0, 0x80, 0x7b, 0xf8, 0x73, 0x67, 0xd3, 0xdc,
-  0x2c, 0x8b, 0x8f, 0x56, 0x5f, 0x14, 0x16, 0x2d, 0x5d, 0x60, 0xf7, 0xc2,
-  0x0b, 0x3d, 0x1a, 0x9e, 0x37, 0xd4, 0xc2, 0x76, 0xfa, 0xe2, 0xa5, 0xd0,
-  0xfa, 0xac, 0x1c, 0x03, 0x35, 0xf2, 0x75, 0xe9, 0xcd, 0xc1, 0x8b, 0x5d,
-  0x7b, 0xfd, 0x0a, 0x21, 0xc7, 0xc7, 0xec, 0xde, 0xed, 0x3a, 0x86, 0x19,
-  0x18, 0x75, 0x31, 0x2f, 0xc8, 0x09, 0xe1, 0x1e, 0x71, 0x0d, 0xec, 0xb5,
-  0x2e, 0x81, 0xae, 0xba, 0x41, 0x65, 0xe5, 0x97, 0xde, 0x15, 0xf3, 0x82,
-  0xf7, 0xce, 0x88, 0x42, 0x91, 0x73, 0xd9, 0xaf, 0x79, 0xa1, 0x3e, 0xb7,
-  0x8e, 0x23, 0x4d, 0x5f, 0xfa, 0xf1, 0x47, 0xbe, 0x47, 0x4a, 0xa5, 0x45,
-  0x91, 0x58, 0x96, 0x2d, 0x07, 0x62, 0x84, 0x2e, 0xab, 0x1e, 0x74, 0x84,
-  0x11, 0x00, 0xaa, 0xb2, 0x59, 0x46, 0x44, 0x83, 0x6c, 0x07, 0xe1, 0xf0,
-  0x0c, 0x02, 0x9b, 0x12, 0x15, 0xb1, 0x38, 0x86, 0x4b, 0xd8, 0x43, 0x38,
-  0x40, 0x0b, 0xf2, 0xbf, 0x89, 0x33, 0xcc, 0xf4, 0xe0, 0xf0, 0xfd, 0xe5,
-  0xb7, 0x67, 0x17, 0xa3, 0x64, 0x87, 0x32, 0x76, 0x2f, 0x2f, 0x4e, 0xbe,
-  0x7e, 0x7f, 0x69, 0xfe, 0xa9, 0x2d, 0xbd, 0x4e, 0x8b, 0xdc, 0xdc, 0x4e,
-  0xa3, 0x26, 0x2b, 0xcc, 0x5e, 0xb9, 0xd6, 0xaa, 0x1d, 0xe0, 0x22, 0xa2,
-  0xfb, 0xb8, 0xac, 0xb8, 0x72, 0x13, 0x08, 0x13, 0x6e, 0x4a, 0x59, 0x70,
-  0x00, 0x44, 0xe0, 0xc7, 0x26, 0x88, 0x5a, 0xe9, 0x6c, 0xe7, 0xbc, 0x9d,
-  0x85, 0x9d, 0x28, 0xea, 0x24, 0xb9, 0xfc, 0xf6, 0xf0, 0xdd, 0x77, 0x23,
-  0x65, 0x74, 0xff, 0xe1, 0x87, 0x1f, 0xba, 0x11, 0x5f, 0xe8, 0xb0, 0x37,
-  0xe9, 0xa7, 0x4f, 0xc3, 0x3a, 0xdb, 0xd8, 0x18, 0x1d, 0x1f, 0x27, 0x87,
-  0xa7, 0xa3, 0xb3, 0x0d, 0x97, 0xa7, 0xbe, 0xb5, 0xb7, 0x6d, 0x94, 0xb4,
-  0xeb, 0xac, 0x31, 0x7f, 0xd9, 0xd8, 0x38, 0x3d, 0xbc, 0x24, 0xeb, 0x58,
-  0x4a, 0xcf, 0xd2, 0x3c, 0x13, 0xe5, 0x44, 0x3a, 0xbb, 0x23, 0x8a, 0xbd,
-  0xab, 0x1c, 0x40, 0xf0, 0x3b, 0x2d, 0x5a, 0x2f, 0xac, 0x93, 0xac, 0xf3,
-  0x33, 0x58, 0xec, 0x8e, 0x78, 0x40, 0x04, 0xcc, 0x45, 0x40, 0x55, 0x33,
-  0x26, 0x65, 0x4f, 0xdb, 0x48, 0x9c, 0x87, 0x8c, 0x69, 0x0a, 0xb2, 0x31,
-  0x97, 0x1d, 0xee, 0x33, 0x2a, 0x13, 0xe8, 0x3c, 0x8f, 0x9b, 0x61, 0xc5,
-  0x10, 0x4e, 0x88, 0x32, 0x35, 0x79, 0x3f, 0x3a, 0xfc, 0xe6, 0x98, 0x9e,
-  0xfd, 0x26, 0x6b, 0xdc, 0xd4, 0xc2, 0xbb, 0x86, 0xaf, 0xbc, 0xcb, 0x9a,
-  0x7a, 0x92, 0x2e, 0xb2, 0x4d, 0xea, 0xd3, 0x78, 0x20, 0xe5, 0x08, 0x5c,
-  0xe3, 0x6c, 0x3a, 0xb8, 0x1a, 0x0a, 0x85, 0x3c, 0x8f, 0x6a, 0x07, 0x7e,
-  0xbb, 0x17, 0xc7, 0x87, 0xaf, 0xdf, 0x1e, 0x6b, 0xf1, 0x6a, 0xa6, 0x2b,
-  0x35, 0x8d, 0xde, 0x50, 0x51, 0x6f, 0x17, 0x5d, 0x21, 0x55, 0x62, 0x69,
-  0xda, 0x30, 0xbf, 0xa1, 0x02, 0xdb, 0xf1, 0xcf, 0xb9, 0xd2, 0x0a, 0x78,
-  0x76, 0x78, 0x95, 0xef, 0x70, 0xeb, 0xfa, 0xbd, 0xd4, 0xce, 0x09, 0x0f,
-  0x22, 0x55, 0xed, 0x9a, 0xdd, 0x1f, 0xf0, 0x9b, 0x7c, 0xbe, 0xbb, 0xbb,
-  0xbb, 0x66, 0x1c, 0x30, 0x3f, 0xe4, 0x92, 0x36, 0x43, 0x39, 0xa0, 0xc7,
-  0x77, 0x5c, 0xfb, 0xae, 0xc7, 0xb4, 0xdf, 0xb0, 0x6e, 0x57, 0x64, 0xbd,
-  0xe3, 0x6a, 0xcf, 0x9b, 0x2c, 0xde, 0xe5, 0x49, 0x59, 0xda, 0x15, 0x68,
-  0x4d, 0x0e, 0xca, 0x0a, 0xe7, 0x8d, 0xc7, 0x86, 0xa8, 0x1d, 0x37, 0xe6,
-  0x12, 0x18, 0xb8, 0xaa, 0xfb, 0x6e, 0x93, 0xf4, 0x1b, 0x60, 0x76, 0x26,
-  0xcd, 0xb0, 0xac, 0xae, 0x77, 0xe6, 0x07, 0xd0, 0x80, 0xcc, 0x43, 0x6f,
-  0x08, 0x01, 0x9c, 0x18, 0x4d, 0xda, 0xb2, 0x6b, 0xd4, 0x34, 0xb1, 0xa5,
-  0xb9, 0xfa, 0x1e, 0xd1, 0xaf, 0x5f, 0x30, 0x0b, 0x4c, 0x8c, 0x74, 0xa5,
-  0x23, 0xd7, 0x52, 0x83, 0x91, 0x8f, 0xd0, 0xfe, 0x83, 0x73, 0x72, 0x68,
-  0x64, 0x81, 0xf9, 0x0a, 0x31, 0x74, 0x61, 0x8b, 0x98, 0xbf, 0x56, 0x66,
-  0xcb, 0x0c, 0x9b, 0x4f, 0x10, 0xd3, 0x52, 0x4b, 0x95, 0x93, 0x29, 0x29,
-  0xfa, 0xbf, 0xa0, 0x92, 0xed, 0x15, 0xb1, 0xe6, 0xf2, 0x17, 0xcc, 0x01,
-  0xd2, 0x7a, 0xde, 0x16, 0xe8, 0x48, 0x0d, 0x77, 0xbf, 0x39, 0x18, 0x60,
-  0xff, 0xd4, 0x76, 0xb7, 0x3c, 0xe2, 0xe3, 0xde, 0xa0, 0x78, 0xf6, 0x0b,
-  0xb9, 0xd5, 0xbd, 0xbd, 0x33, 0x32, 0xbd, 0x08, 0xbe, 0xb5, 0x74, 0xd5,
-  0x60, 0x6b, 0xfe, 0x9c, 0x5f, 0xf3, 0xc3, 0xac, 0xc6, 0x0e, 0x50, 0xb0,
-  0x8f, 0xfe, 0xc6, 0xd1, 0xb9, 0x25, 0xd3, 0x37, 0x63, 0xbf, 0xa5, 0xc1,
-  0xd3, 0x8d, 0x60, 0xee, 0x76, 0xba, 0x32, 0x54, 0x25, 0x06, 0xfc, 0x10,
-  0xd6, 0x2d, 0xea, 0xf9, 0xf8, 0xe6, 0xc9, 0x9a, 0x1e, 0x1e, 0x98, 0xa9,
-  0xa1, 0x1b, 0xe8, 0x7f, 0xef, 0x0c, 0xeb, 0xfa, 0x66, 0x27, 0x9f, 0x7e,
-  0xa8, 0xea, 0x34, 0xf9, 0x69, 0xa3, 0x93, 0x6c, 0xda, 0x1d, 0xc4, 0xff,
-  0xc6, 0x0c, 0xfe, 0xa2, 0x99, 0x5a, 0x3d, 0x8a, 0xdf, 0x63, 0x04, 0x83,
-  0x01, 0xb5, 0xaa, 0x5f, 0xfa, 0x60, 0x1e, 0xf8, 0x60, 0x39, 0x90, 0x7f,
-  0xc5, 0xe8, 0x22, 0xa2, 0xd0, 0x0c, 0x92, 0xc9, 0x31, 0x8d, 0x6c, 0x89,
-  0x6f, 0x74, 0x2d, 0xe4, 0xf1, 0x97, 0xfd, 0xdd, 0xdd, 0xbd, 0x83, 0xbd,
-  0xcf, 0x5f, 0xec, 0x1e, 0xec, 0xed, 0xed, 0xed, 0x1f, 0xec, 0x1d, 0x1c,
-  0xec, 0xef, 0xfe, 0xbc, 0xd3, 0x5b, 0x35, 0x75, 0x6f, 0xbf, 0x5e, 0xd1,
-  0xa0, 0x19, 0x75, 0x8f, 0x99, 0xf7, 0x7e, 0xb2, 0xa3, 0xc7, 0xa8, 0xa6,
-  0xbd, 0xa4, 0x9e, 0x8f, 0x09, 0xf2, 0xc6, 0x87, 0xd3, 0x1f, 0x4c, 0x6d,
-  0x14, 0xef, 0xcc, 0x1b, 0xd0, 0xeb, 0xb3, 0x1f, 0xde, 0x9d, 0x9e, 0x1d,
-  0xbe, 0x4e, 0x2e, 0xcf, 0x92, 0x43, 0xb8, 0x09, 0x23, 0x72, 0x12, 0xec,
-  0x99, 0x84, 0x18, 0xe7, 0x0a, 0x27, 0x5e, 0xa5, 0x2f, 0xf1, 0x69, 0x59,
-  0x7c, 0x27, 0x3a, 0xd1, 0xed, 0x67, 0x09, 0x33, 0x90, 0x5a, 0x1a, 0xde,
-  0x34, 0xf3, 0x87, 0x6f, 0x84, 0xc7, 0x7c, 0xb9, 0xcf, 0x30, 0x0e, 0x67,
-  0xe9, 0xa3, 0x3b, 0x7a, 0xf2, 0x81, 0x1c, 0xb2, 0xf5, 0x35, 0x05, 0x02,
-  0x61, 0xeb, 0xd3, 0x6f, 0x31, 0xb6, 0xcb, 0x15, 0xa8, 0xe2, 0xc2, 0x67,
-  0x1d, 0x5c, 0xad, 0x2d, 0x21, 0x24, 0x18, 0x1b, 0xa8, 0x3b, 0xa4, 0xc3,
-  0x6e, 0x07, 0x03, 0x3c, 0x5b, 0x39, 0x24, 0x73, 0x99, 0x67, 0x9f, 0x30,
-  0xea, 0xb6, 0xec, 0x65, 0x6a, 0x46, 0x37, 0x3a, 0xf0, 0x4f, 0xa9, 0xef,
-  0x22, 0xaf, 0xb4, 0xcb, 0x80, 0xb0, 0x46, 0x3e, 0x47, 0xdf, 0x51, 0x91,
-  0xec, 0x3e, 0x41, 0xbf, 0xf1, 0xef, 0xf1, 0x1d, 0x9b, 0x90, 0xcb, 0x1d,
-  0x78, 0x3f, 0x3a, 0x79, 0xf7, 0x0d, 0xa2, 0xe8, 0x3f, 0x9c, 0x5d, 0xbc,
-  0x1e, 0x99, 0x66, 0x8d, 0xbc, 0x42, 0xe3, 0x97, 0x25, 0x49, 0x42, 0xe9,
-  0x15, 0x9f, 0x4b, 0xfa, 0xf4, 0x9f, 0x78, 0x3b, 0xf5, 0x2d, 0xf1, 0x3e,
-  0xba, 0xe9, 0xd9, 0x47, 0x54, 0x5d, 0x29, 0x7e, 0x6b, 0x78, 0xbb, 0xf1,
-  0xab, 0x79, 0x3a, 0xb9, 0x21, 0x83, 0x9e, 0x37, 0x2b, 0xd0, 0xc4, 0x3b,
-  0x94, 0xed, 0xb2, 0x43, 0x76, 0xda, 0x4e, 0x53, 0x62, 0x3b, 0xa2, 0x95,
-  0xb2, 0xb2, 0x90, 0xc6, 0xd6, 0x8c, 0xd0, 0x5e, 0xbf, 0x9a, 0xa5, 0xd7,
-  0xf8, 0x60, 0x78, 0x0c, 0xbc, 0x8f, 0xc9, 0xe7, 0x1f, 0xfb, 0x49, 0xba,
-  0x36, 0xd0, 0xde, 0x09, 0x36, 0x00, 0x72, 0x94, 0x50, 0x32, 0xea, 0x4a,
-  0x6b, 0x9c, 0x90, 0x02, 0x89, 0xfa, 0x75, 0x04, 0x07, 0x23, 0x16, 0xe6,
-  0x6e, 0xed, 0x1f, 0xd4, 0x68, 0x65, 0x22, 0x72, 0xa3, 0x7e, 0x3b, 0xa8,
-  0xb3, 0xd4, 0x5e, 0x41, 0x4b, 0x9e, 0x4e, 0x5e, 0x3b, 0xe4, 0xb5, 0xab,
-  0x77, 0xcc, 0x53, 0x4e, 0x9d, 0x21, 0x7c, 0x27, 0x67, 0x0e, 0x10, 0xc4,
-  0x53, 0x34, 0xda, 0x1e, 0xb1, 0xfb, 0x13, 0xd8, 0xa9, 0x87, 0x2b, 0xae,
-  0x45, 0x9b, 0xe6, 0x18, 0x3e, 0x8c, 0xb2, 0x5f, 0x4c, 0x53, 0xaa, 0x16,
-  0xc1, 0x50, 0x07, 0xe1, 0x22, 0x31, 0xd6, 0x17, 0x67, 0x65, 0xf4, 0x14,
-  0x32, 0xc5, 0xad, 0xe4, 0x35, 0x33, 0xba, 0xd8, 0xe2, 0x2c, 0x74, 0x79,
-  0xd1, 0xd7, 0xd9, 0x4f, 0x8a, 0x59, 0xb7, 0xf7, 0xa4, 0xf3, 0x74, 0xd2,
-  0x1d, 0x67, 0xf4, 0x71, 0x23, 0xc0, 0x79, 0xe7, 0x68, 0x7c, 0xdd, 0x55,
-  0x4d, 0x6d, 0x4d, 0x9b, 0x32, 0x07, 0x73, 0x73, 0x24, 0x99, 0x9d, 0xd7,
-  0xd6, 0xce, 0xe0, 0x06, 0x60, 0x6b, 0xf6, 0x16, 0xb0, 0x28, 0x72, 0xaf,
-  0xf4, 0x9c, 0x2b, 0x9b, 0xe1, 0x4d, 0x1b, 0x63, 0x4c, 0xdd, 0x7b, 0x66,
-  0x8d, 0xa8, 0xa9, 0xbc, 0xa9, 0xb3, 0xd9, 0x15, 0x99, 0x5b, 0xf6, 0x0a,
-  0xe1, 0xba, 0xd1, 0xae, 0x7e, 0x88, 0x60, 0xa5, 0x97, 0x85, 0xb1, 0x54,
-  0x52, 0xc1, 0x00, 0xb1, 0x2c, 0xb9, 0x86, 0x58, 0x77, 0xc5, 0xea, 0xdb,
-  0x32, 0x84, 0xe3, 0xa7, 0x5f, 0x30, 0xc8, 0xcf, 0x36, 0xd7, 0x12, 0x1d,
-  0x5e, 0x22, 0x05, 0xdf, 0x3a, 0x3a, 0x77, 0x34, 0x5b, 0xf7, 0x0b, 0xa2,
-  0x3a, 0x22, 0x40, 0x88, 0x57, 0x51, 0x51, 0xa9, 0x87, 0xc1, 0x01, 0x9e,
-  0x7d, 0x22, 0x1e, 0x5e, 0x19, 0x9b, 0xb3, 0x09, 0xad, 0x56, 0x2f, 0xe3,
-  0xa5, 0xd6, 0xf0, 0x73, 0xc8, 0x42, 0x9a, 0x6d, 0xd3, 0x6f, 0x90, 0xbb,
-  0x4b, 0xb6, 0x01, 0xab, 0x81, 0x6a, 0x49, 0xda, 0x32, 0x9e, 0xa4, 0x31,
-  0x99, 0x5b, 0x98, 0x39, 0xb2, 0x6d, 0x61, 0x6d, 0xc4, 0x69, 0x53, 0xb6,
-  0x37, 0xa1, 0x04, 0x7b, 0x1f, 0xa6, 0xad, 0x04, 0xb6, 0xb8, 0x56, 0x66,
-  0x4c, 0x6b, 0x94, 0xcb, 0xb1, 0x5b, 0x58, 0xda, 0x23, 0xc0, 0xf5, 0x52,
-  0x93, 0x47, 0x61, 0x95, 0x39, 0x2d, 0xc3, 0xe0, 0xcd, 0x9e, 0x10, 0xa6,
-  0x18, 0x81, 0x82, 0xb4, 0xae, 0x65, 0x6d, 0x77, 0x8e, 0x99, 0xad, 0x8f,
-  0x72, 0x21, 0x6e, 0x00, 0xe0, 0x1f, 0x8a, 0x1b, 0x91, 0xbc, 0xab, 0xe5,
-  0xcd, 0xc3, 0xa2, 0x26, 0xec, 0x92, 0x9a, 0x7e, 0xb3, 0x7b, 0x96, 0x06,
-  0x79, 0xb1, 0x5e, 0xe8, 0x48, 0x27, 0x1e, 0xf5, 0x61, 0x8c, 0x15, 0x6c,
-  0xdc, 0x35, 0x47, 0x61, 0x1c, 0x72, 0x95, 0x41, 0x1f, 0xe0, 0xb0, 0xe8,
-  0xf0, 0xd1, 0xaa, 0x0f, 0xd3, 0xce, 0x23, 0x0e, 0x3c, 0x83, 0x55, 0x0e,
-  0x92, 0xaf, 0xd3, 0x3a, 0x9f, 0xf4, 0xa5, 0x60, 0x84, 0x14, 0x90, 0xa0,
-  0x37, 0x6c, 0x51, 0x89, 0x64, 0x8b, 0xa9, 0x88, 0xb7, 0x87, 0xc9, 0x0f,
-  0x5a, 0x02, 0xc4, 0x18, 0x91, 0xc8, 0xc4, 0xa6, 0xd0, 0xc1, 0x06, 0xd3,
-  0xc3, 0x30, 0xe2, 0x84, 0xe6, 0x43, 0xf6, 0xa7, 0xf8, 0xf2, 0x41, 0x20,
-  0x8e, 0x8f, 0x38, 0x76, 0x44, 0xac, 0x6a, 0x5a, 0x7f, 0xb4, 0x81, 0x33,
-  0xac, 0x95, 0x88, 0x22, 0x2e, 0x20, 0xc6, 0x54, 0xbb, 0x30, 0xf2, 0x05,
-  0x5e, 0x83, 0xb0, 0x5a, 0xe1, 0xd5, 0xff, 0xb6, 0xe5, 0x7b, 0xe0, 0xac,
-  0xad, 0x2d, 0x2c, 0xcb, 0x56, 0x48, 0xc3, 0xce, 0xb4, 0x22, 0x6a, 0x30,
-  0x30, 0x13, 0x46, 0x53, 0x23, 0x02, 0xf4, 0xec, 0xf2, 0xf8, 0x5f, 0x92,
-  0xc3, 0x6e, 0x9c, 0x1d, 0xd4, 0x27, 0x22, 0x86, 0xa5, 0x9a, 0xae, 0xdd,
-  0x60, 0xe8, 0x3b, 0xc3, 0x58, 0x99, 0x33, 0x34, 0xc5, 0xf2, 0x6f, 0x48,
-  0xf2, 0xb0, 0xf3, 0x28, 0xd7, 0xa5, 0xa4, 0x8e, 0xa0, 0xd8, 0xa0, 0x2d,
-  0x4b, 0x87, 0x08, 0x84, 0xc7, 0x95, 0xc8, 0x00, 0xff, 0x3c, 0x85, 0x1e,
-  0x5b, 0x7e, 0x32, 0x07, 0x5b, 0xb3, 0x37, 0x68, 0x9a, 0xaf, 0x6f, 0xb4,
-  0xd0, 0x22, 0xe1, 0xd3, 0x81, 0x39, 0x6f, 0x84, 0xaf, 0x5e, 0x8a, 0x82,
-  0x79, 0x15, 0x72, 0x6c, 0x0b, 0xb4, 0xfb, 0x3f, 0xd0, 0x91, 0xfb, 0xa0,
-  0x17, 0x8b, 0x5c, 0x81, 0xdc, 0x97, 0x2b, 0xb6, 0x83, 0xda, 0x5b, 0x56,
-  0x8f, 0x1d, 0xdf, 0x66, 0xe7, 0x0a, 0x61, 0xc5, 0x42, 0xd0, 0x15, 0x00,
-  0x88, 0x09, 0x02, 0xec, 0xb8, 0x53, 0x55, 0x6a, 0xfa, 0x17, 0x13, 0xf8,
-  0x38, 0xe9, 0x8e, 0xe0, 0x5a, 0xd2, 0xc2, 0xc7, 0xc9, 0x79, 0x0e, 0xa6,
-  0xd5, 0x76, 0x26, 0x12, 0x68, 0x7c, 0x31, 0xab, 0xd4, 0x8b, 0xd1, 0xd9,
-  0xd1, 0x77, 0xa3, 0x56, 0x26, 0x50, 0xcd, 0xc5, 0x66, 0x12, 0xad, 0xaa,
-  0xd4, 0xd9, 0xd0, 0x46, 0x1a, 0x9e, 0x34, 0x1d, 0xf1, 0x64, 0x99, 0x2e,
-  0x3d, 0x7c, 0xf3, 0x1b, 0x05, 0xe7, 0x6b, 0xb3, 0x54, 0x7c, 0x64, 0x92,
-  0x79, 0x44, 0xbd, 0x45, 0xb9, 0xe1, 0xdd, 0x7c, 0xbc, 0x7f, 0xca, 0x5a,
-  0x65, 0x22, 0xd3, 0xb8, 0x72, 0xc5, 0x87, 0x71, 0xc6, 0x3c, 0x4c, 0x66,
-  0x97, 0xf0, 0x2a, 0x52, 0xff, 0x70, 0x02, 0x79, 0x67, 0xce, 0xb1, 0xb9,
-  0x37, 0xdc, 0xee, 0xa6, 0x3b, 0x68, 0xd5, 0x38, 0xa9, 0xbc, 0x00, 0x6d,
-  0x37, 0x75, 0xaf, 0xb3, 0xea, 0x84, 0xda, 0x8c, 0x52, 0x56, 0x85, 0x74,
-  0x2b, 0xed, 0x35, 0xad, 0x0e, 0x34, 0xdb, 0xc2, 0xea, 0x59, 0xba, 0xe8,
-  0x85, 0x97, 0x81, 0x00, 0x99, 0x32, 0x4d, 0xe6, 0xf7, 0x92, 0xdb, 0x23,
-  0xba, 0x01, 0xd1, 0x96, 0xc0, 0x2b, 0xf1, 0xf9, 0xe7, 0x81, 0x2e, 0xf8,
-  0xc9, 0x3e, 0x7d, 0x60, 0x7e, 0xed, 0x79, 0x3f, 0x66, 0x84, 0x49, 0x21,
-  0x6f, 0x03, 0xf4, 0x50, 0xeb, 0x02, 0x89, 0x58, 0x18, 0x5e, 0xd1, 0x32,
-  0xfe, 0xa2, 0x0d, 0xe3, 0x04, 0xbb, 0xac, 0xef, 0xe4, 0xfe, 0x06, 0x9b,
-  0xd7, 0xdc, 0xd1, 0xb4, 0x66, 0x6c, 0xd3, 0x0a, 0xc3, 0x4c, 0xc5, 0x64,
-  0xb7, 0xb7, 0x9e, 0xd6, 0x6c, 0x34, 0xf7, 0x21, 0x5d, 0xaa, 0x64, 0x04,
-  0x8c, 0x4a, 0x69, 0x98, 0x26, 0x59, 0x3a, 0x63, 0x77, 0x47, 0x67, 0x1f,
-  0xd9, 0x6a, 0x61, 0x4e, 0x46, 0xbc, 0x5f, 0xdd, 0x9d, 0xf7, 0xbf, 0xa6,
-  0x3b, 0x87, 0xc9, 0xda, 0x2c, 0x34, 0x4c, 0x10, 0x4b, 0xfc, 0x5a, 0x02,
-  0xb1, 0xd3, 0x12, 0xbb, 0x5a, 0xf5, 0x1e, 0x9e, 0x23, 0x94, 0xeb, 0xe9,
-  0x10, 0x0a, 0x87, 0x8e, 0x89, 0xa2, 0xe4, 0xa7, 0x61, 0xd4, 0x50, 0xfb,
-  0x7d, 0xed, 0xca, 0x63, 0xbb, 0x2b, 0x35, 0x26, 0x6d, 0xaa, 0xa9, 0xfb,
-  0x1e, 0x36, 0xbc, 0xe4, 0x8d, 0xed, 0x0d, 0x77, 0x7d, 0xfd, 0xca, 0xe6,
-  0x7b, 0x56, 0xc8, 0x2e, 0xa3, 0x29, 0xde, 0xf0, 0x54, 0x94, 0xa5, 0x94,
-  0x64, 0xdc, 0xe9, 0xbc, 0x26, 0x3f, 0xdb, 0x63, 0xe2, 0x07, 0x73, 0x92,
-  0x84, 0x58, 0x91, 0x32, 0x80, 0xb3, 0xf9, 0x82, 0xf3, 0xe2, 0x22, 0xa5,
-  0x66, 0x71, 0x8e, 0x9e, 0xba, 0x23, 0xf5, 0xcc, 0x2e, 0xb7, 0xf4, 0x91,
-  0xf3, 0x51, 0xa4, 0x3e, 0x1b, 0xa7, 0x84, 0x40, 0xf9, 0xd4, 0x52, 0x28,
-  0xcd, 0xca, 0x1c, 0xde, 0xa3, 0x36, 0x39, 0x3e, 0xed, 0x67, 0x5c, 0xb6,
-  0xb6, 0x70, 0xa8, 0x10, 0xa2, 0x0b, 0x92, 0x99, 0x5a, 0x25, 0xcc, 0x77,
-  0x44, 0xd2, 0x80, 0x5c, 0x23, 0x43, 0xc5, 0x35, 0x3a, 0xd7, 0xec, 0xe8,
-  0x46, 0xf2, 0x8e, 0xd0, 0x08, 0xbb, 0x50, 0x9d, 0x55, 0xcf, 0x4c, 0xbb,
-  0xb3, 0xdc, 0x74, 0x68, 0x13, 0x4c, 0x43, 0x5a, 0x48, 0x4a, 0x64, 0xa1,
-  0x6e, 0x61, 0xcb, 0xf9, 0xd1, 0xae, 0xd1, 0x14, 0x52, 0x8d, 0x76, 0x85,
-  0x2e, 0x5f, 0x03, 0xfd, 0x64, 0xf0, 0x3f, 0x64, 0x66, 0x48, 0x3d, 0x27,
-  0x98, 0x19, 0x48, 0xa1, 0x16, 0x1e, 0x31, 0x88, 0x20, 0x5b, 0x21, 0xf0,
-  0x09, 0x43, 0xaa, 0xe3, 0xf0, 0x8a, 0x87, 0x73, 0x12, 0x24, 0xe4, 0x9f,
-  0x8e, 0x3d, 0xcf, 0xba, 0xc5, 0xb3, 0x44, 0x54, 0x70, 0x73, 0x1b, 0xae,
-  0xc8, 0x2c, 0x60, 0x85, 0x41, 0x87, 0xed, 0x45, 0xf6, 0x35, 0x71, 0x3f,
-  0x1f, 0x95, 0xa9, 0x3f, 0xad, 0x6a, 0xcb, 0x6d, 0x68, 0x4f, 0x79, 0xf3,
-  0x5b, 0x57, 0x06, 0x53, 0xf2, 0x0f, 0xcc, 0x0b, 0x83, 0xf7, 0xe2, 0xce,
-  0xf8, 0x8a, 0xbf, 0x30, 0x24, 0x79, 0x26, 0x5f, 0x38, 0xa7, 0xb6, 0xec,
-  0x03, 0x07, 0xf2, 0x12, 0xf1, 0xf8, 0xf7, 0xc4, 0x93, 0xd3, 0x9e, 0x15,
-  0x7e, 0x5e, 0x79, 0xfe, 0x3b, 0xe5, 0x7e, 0x71, 0xc8, 0xf8, 0xaf, 0xfc,
-  0xae, 0x18, 0x8f, 0xf7, 0xd4, 0xc4, 0x90, 0x33, 0x36, 0xc4, 0xf7, 0xb2,
-  0xbf, 0xb7, 0xc3, 0x9d, 0xd1, 0x2a, 0xbd, 0xd0, 0xeb, 0x64, 0x4b, 0x3a,
-  0xcc, 0x08, 0x0e, 0x02, 0x0a, 0x6a, 0xb9, 0x81, 0x53, 0x7e, 0x09, 0x61,
-  0x7d, 0xe6, 0x02, 0xba, 0x46, 0x30, 0x8e, 0xae, 0x26, 0x73, 0xd7, 0x82,
-  0xcd, 0x4f, 0x32, 0xb5, 0x89, 0x9b, 0xc7, 0x2e, 0x50, 0xdf, 0xaa, 0x7c,
-  0x9b, 0x54, 0xef, 0xde, 0xb7, 0x9a, 0x32, 0x8a, 0xa8, 0xa4, 0x28, 0xa9,
-  0x7b, 0x67, 0x53, 0x84, 0xf3, 0x5a, 0x91, 0x15, 0x66, 0x47, 0x5f, 0x1c,
-  0xbe, 0xfb, 0xe6, 0x18, 0x9a, 0x00, 0x64, 0x3b, 0x1d, 0xd0, 0x9c, 0x76,
-  0xfb, 0x74, 0xc9, 0xd5, 0x38, 0xcd, 0x8c, 0x01, 0x26, 0x67, 0x56, 0xfb,
-  0xbd, 0x65, 0x7c, 0x06, 0x89, 0x35, 0x36, 0x2f, 0x96, 0x5b, 0xc0, 0x6f,
-  0x1b, 0x89, 0x7a, 0x54, 0xa1, 0x41, 0x00, 0x2a, 0x5d, 0xb1, 0xfb, 0xb5,
-  0x5e, 0x8e, 0x17, 0xa8, 0x52, 0x03, 0xfb, 0xcc, 0x89, 0x19, 0xf5, 0xb3,
-  0x0c, 0xdb, 0x67, 0x71, 0x43, 0x53, 0xa3, 0xac, 0x4d, 0x5f, 0xc1, 0xa6,
-  0x1f, 0xfa, 0x5e, 0x35, 0xe6, 0x0c, 0xd9, 0xdb, 0xdd, 0x75, 0x6c, 0x6e,
-  0xa9, 0x6d, 0x30, 0x90, 0x96, 0x55, 0xb2, 0x3b, 0x78, 0xf1, 0x62, 0x95,
-  0x20, 0xb4, 0x8d, 0x82, 0x25, 0xe2, 0xd9, 0xa3, 0xdb, 0x1c, 0xd0, 0xa3,
-  0xab, 0xda, 0x8c, 0x58, 0x34, 0xa8, 0xbd, 0x27, 0xc0, 0xc3, 0xda, 0x6a,
-  0x2d, 0xe2, 0xe1, 0xe1, 0x68, 0x0d, 0xe2, 0x60, 0x85, 0x35, 0x6b, 0x68,
-  0x2a, 0x37, 0x5c, 0x42, 0x2f, 0x58, 0x55, 0xd4, 0x19, 0xb4, 0x20, 0xec,
-  0x61, 0x6e, 0x43, 0xbe, 0x8f, 0x9a, 0x18, 0xcf, 0x80, 0x5f, 0x31, 0x45,
-  0x57, 0xe1, 0x68, 0x54, 0x25, 0x78, 0x7f, 0x4e, 0xfe, 0xbf, 0x93, 0x77,
-  0xdf, 0xb0, 0x3b, 0xc4, 0xd8, 0xf6, 0xf0, 0xa5, 0xef, 0x74, 0x2c, 0xfd,
-  0xf7, 0x4c, 0xcb, 0x46, 0xc8, 0x53, 0x60, 0x3d, 0x98, 0xc9, 0x3f, 0x2f,
-  0xa4, 0x78, 0xb7, 0xab, 0x44, 0x18, 0xf7, 0x55, 0x5e, 0x26, 0x03, 0x4f,
-  0x39, 0x11, 0x4e, 0x36, 0xd2, 0x4c, 0xe6, 0xf7, 0x6a, 0x19, 0xc9, 0x17,
-  0xd0, 0xba, 0x46, 0x66, 0x6c, 0xb3, 0x6c, 0xe7, 0xb2, 0x79, 0x8e, 0x1d,
-  0x14, 0xe8, 0x26, 0x91, 0x4f, 0xf2, 0x67, 0x70, 0xbe, 0x3b, 0x9a, 0xc8,
-  0xe3, 0xba, 0xd2, 0x72, 0x75, 0xb6, 0x09, 0xa1, 0x49, 0xb3, 0xea, 0xab,
-  0xef, 0xa7, 0xeb, 0x86, 0xe4, 0x42, 0x7b, 0xbe, 0x54, 0xa7, 0xd5, 0x06,
-  0xcf, 0x7c, 0x59, 0xfe, 0xe3, 0xfd, 0x5c, 0xd3, 0x43, 0x3a, 0xa8, 0x74,
-  0x53, 0x15, 0x53, 0xe7, 0xd3, 0x90, 0x1e, 0x47, 0x03, 0x21, 0x97, 0xfc,
-  0x3e, 0x7f, 0x3a, 0x8d, 0x7f, 0x8e, 0xdf, 0xd7, 0xa9, 0x89, 0x1c, 0x00,
-  0x52, 0x69, 0x85, 0xb5, 0xcf, 0xe6, 0xd6, 0xab, 0x2d, 0x43, 0x5a, 0x38,
-  0x24, 0x47, 0xde, 0x56, 0x4b, 0x36, 0x12, 0xa1, 0xf1, 0x00, 0xa5, 0x1f,
-  0xed, 0x21, 0x30, 0xc7, 0xe0, 0xf2, 0xfa, 0x98, 0x0b, 0x3f, 0xf1, 0xb2,
-  0x28, 0x32, 0x32, 0x52, 0x91, 0xa0, 0x9f, 0xb3, 0xbd, 0xd0, 0xb7, 0xa7,
-  0xa8, 0x5a, 0x4a, 0xb5, 0x6b, 0x80, 0x19, 0x4c, 0xe7, 0xd3, 0xfa, 0x06,
-  0xf5, 0xdd, 0xac, 0x2b, 0x2a, 0x54, 0xaf, 0xf0, 0x79, 0x6e, 0x97, 0xf4,
-  0x29, 0x56, 0xa6, 0xa0, 0x5c, 0xb7, 0xa6, 0xa2, 0x3d, 0x03, 0x1b, 0x1b,
-  0xe4, 0x84, 0xdf, 0x21, 0x57, 0xfc, 0x28, 0x9c, 0x40, 0xf5, 0xa5, 0xaf,
-  0xf5, 0xc7, 0xbb, 0x18, 0xc3, 0x03, 0x9e, 0x79, 0xcf, 0x7b, 0xf2, 0xd8,
-  0x13, 0xc7, 0xfa, 0x7b, 0x24, 0xae, 0x88, 0x43, 0xe7, 0x09, 0xb2, 0xe8,
-  0x56, 0x6f, 0x7b, 0xd3, 0x7c, 0x5b, 0x00, 0x4e, 0x1f, 0x58, 0x66, 0x28,
-  0x28, 0xd2, 0x59, 0x2e, 0x4e, 0x53, 0x3b, 0x7f, 0x7f, 0x29, 0x3c, 0x5b,
-  0x2a, 0xde, 0xfd, 0x2a, 0x4b, 0x7e, 0x49, 0x55, 0x48, 0x33, 0xd2, 0x2d,
-  0xd8, 0xfc, 0x45, 0xac, 0x9b, 0x33, 0x2f, 0xf1, 0x4d, 0x8c, 0x90, 0x3b,
-  0xd8, 0xb7, 0x59, 0x36, 0xe7, 0x67, 0xa3, 0x4b, 0x72, 0x23, 0xe0, 0xea,
-  0x53, 0x7b, 0xf4, 0xfb, 0xe3, 0x8b, 0xaf, 0xcf, 0x46, 0xc7, 0x66, 0x3d,
-  0x5e, 0x1f, 0x7f, 0xfd, 0x9e, 0xa4, 0x16, 0xed, 0x0e, 0x76, 0x3d, 0x53,
-  0x06, 0x8e, 0xf8, 0xbf, 0xa8, 0xe0, 0x2d, 0xd2, 0xf0, 0xb0, 0x4d, 0x59,
-  0x0f, 0xea, 0xdb, 0x4c, 0x76, 0x51, 0xf1, 0xb8, 0x64, 0xeb, 0x2c, 0x63,
-  0x5f, 0x65, 0x8e, 0x7c, 0x85, 0xfc, 0x4a, 0x77, 0x18, 0x41, 0x03, 0xa9,
-  0xc0, 0x23, 0xcc, 0x4b, 0x39, 0x4a, 0xcc, 0x30, 0x5e, 0x1f, 0x38, 0xa7,
-  0xe6, 0x2d, 0x7b, 0xa6, 0xe5, 0xf0, 0xb9, 0xb2, 0x94, 0xa0, 0x5a, 0xc2,
-  0xe6, 0x3d, 0xb2, 0x7a, 0xb4, 0xd0, 0x0d, 0xcd, 0x4a, 0xbe, 0x35, 0x51,
-  0x49, 0x91, 0xda, 0xc6, 0x3d, 0x9e, 0x37, 0xb8, 0xc2, 0xd9, 0xa0, 0x90,
-  0xa2, 0x8e, 0x35, 0x6f, 0x6e, 0xae, 0x60, 0x4b, 0x50, 0xb5, 0xcc, 0xab,
-  0xe7, 0x59, 0x43, 0x1b, 0x9e, 0xc9, 0xad, 0x2d, 0xf1, 0x70, 0xc6, 0x05,
-  0x0b, 0xc5, 0xd9, 0x96, 0x18, 0xc1, 0x77, 0x18, 0xa7, 0xb0, 0xb7, 0x73,
-  0x55, 0xc4, 0x4c, 0xc9, 0x7e, 0x69, 0xe6, 0xfd, 0x12, 0x35, 0xbc, 0x75,
-  0x6e, 0x57, 0x8b, 0x9e, 0x4b, 0x1e, 0x29, 0xf9, 0x39, 0x58, 0x11, 0x90,
-  0xd4, 0x27, 0xf4, 0xbb, 0x53, 0xec, 0xc5, 0x29, 0x28, 0x7c, 0x76, 0x29,
-  0xf5, 0xc0, 0x33, 0x21, 0x57, 0xd7, 0x51, 0x54, 0x6d, 0x56, 0x02, 0x4c,
-  0x2e, 0xf1, 0x88, 0x85, 0xab, 0xa0, 0xf6, 0x68, 0x49, 0x11, 0x12, 0xe0,
-  0xcd, 0x17, 0x9e, 0x77, 0x6e, 0x1d, 0xff, 0xc5, 0x19, 0xf5, 0x02, 0x27,
-  0x1b, 0x1b, 0x1b, 0xaf, 0x8f, 0x2f, 0x0f, 0x4f, 0x4e, 0x8f, 0x5f, 0x27,
-  0x27, 0xef, 0xde, 0x9c, 0x5d, 0xbc, 0x3d, 0xbc, 0x14, 0x38, 0xc6, 0x6b,
-  0xeb, 0x91, 0x73, 0x15, 0xe8, 0xa4, 0xcc, 0x92, 0xe7, 0xad, 0xc3, 0x16,
-  0x36, 0xab, 0x78, 0x2d, 0x15, 0xe6, 0x79, 0x1a, 0xb2, 0xd6, 0x1c, 0x6c,
-  0x68, 0xc5, 0x1d, 0x57, 0xb1, 0x8f, 0xf4, 0x82, 0x1d, 0x1b, 0x7b, 0x1f,
-  0xea, 0x74, 0xaa, 0x1b, 0x0d, 0x64, 0xcc, 0x6b, 0x9b, 0xb2, 0x05, 0x58,
-  0xf9, 0x4e, 0xa4, 0xe5, 0x64, 0x7e, 0x13, 0xec, 0xc9, 0xc1, 0xc9, 0x0e,
-  0x97, 0xfa, 0xf6, 0xca, 0x39, 0x68, 0x29, 0x1e, 0x10, 0x96, 0x50, 0x3b,
-  0x1e, 0xb7, 0xd0, 0x55, 0x09, 0x54, 0x89, 0xdf, 0xa6, 0x65, 0xcc, 0xc1,
-  0x8a, 0x1a, 0x2d, 0x80, 0x61, 0x3c, 0x5c, 0xf0, 0xce, 0x5b, 0xdf, 0x9c,
-  0x0b, 0xe2, 0xcc, 0x08, 0xa9, 0x04, 0x70, 0x10, 0xf1, 0x3f, 0xd5, 0x66,
-  0xa5, 0xec, 0x59, 0x07, 0x23, 0x95, 0x15, 0xd8, 0x1a, 0x9d, 0x13, 0x1a,
-  0x5f, 0xbf, 0xa9, 0x2d, 0x1b, 0xaf, 0x37, 0x1a, 0xd3, 0xe0, 0x44, 0x38,
-  0xa5, 0x69, 0x2e, 0xb6, 0x37, 0x50, 0x1f, 0xe9, 0xae, 0x50, 0x3e, 0x3f,
-  0x8b, 0x36, 0x75, 0x16, 0x7f, 0xbe, 0xe3, 0x15, 0xc5, 0xc4, 0x69, 0x73,
-  0xe7, 0x56, 0x39, 0xc0, 0x07, 0xaf, 0xcd, 0x43, 0xd3, 0xe5, 0x7c, 0xd1,
-  0xae, 0x83, 0xce, 0xbe, 0x3c, 0x5d, 0x42, 0x56, 0xda, 0xa0, 0x7c, 0xc0,
-  0xf1, 0xf3, 0x46, 0xe6, 0x80, 0xc7, 0x81, 0xfd, 0xdd, 0x68, 0x28, 0x10,
-  0x85, 0x78, 0x6d, 0xf4, 0xae, 0x5b, 0xd9, 0xb4, 0xad, 0xb9, 0x60, 0x42,
-  0x46, 0xf6, 0xd9, 0x6e, 0x29, 0xd4, 0xd4, 0x61, 0x8d, 0x30, 0xff, 0x5b,
-  0xca, 0x8c, 0x46, 0x5b, 0x56, 0x1a, 0x94, 0xab, 0x22, 0x0c, 0x3e, 0xb6,
-  0x06, 0xe5, 0xbf, 0xd8, 0x86, 0xf4, 0xf8, 0x92, 0x5e, 0x3f, 0xed, 0x58,
-  0xc0, 0xba, 0x3d, 0x10, 0x29, 0x6e, 0xe4, 0xc9, 0xbd, 0x16, 0x01, 0x21,
-  0xba, 0x49, 0xc0, 0x8d, 0xc8, 0x59, 0x0a, 0xce, 0x03, 0x91, 0x94, 0x08,
-  0x88, 0xe9, 0xf6, 0x5d, 0xa2, 0xb2, 0x45, 0xf9, 0x91, 0x6c, 0x79, 0xad,
-  0x68, 0xeb, 0xa5, 0xeb, 0x31, 0x8a, 0x4c, 0x58, 0x00, 0x21, 0xf4, 0x8a,
-  0x0d, 0xcd, 0x2c, 0xd6, 0x97, 0x14, 0xef, 0x08, 0xe9, 0xbf, 0x45, 0x73,
-  0x05, 0x8e, 0x43, 0x54, 0x25, 0xc9, 0xd2, 0x1a, 0x06, 0x15, 0x92, 0x76,
-  0xf8, 0xce, 0xb0, 0x6e, 0x58, 0xc7, 0x67, 0xe7, 0x95, 0xf8, 0x83, 0x88,
-  0x9e, 0x26, 0x2f, 0xe9, 0x59, 0xe2, 0x0b, 0xd2, 0x43, 0xc1, 0x20, 0x7d,
-  0xdb, 0x8a, 0x06, 0x38, 0x4c, 0x33, 0x40, 0x5a, 0x0b, 0xf4, 0xf4, 0x9c,
-  0x1e, 0x48, 0x55, 0xc3, 0xef, 0xb9, 0x6a, 0x4c, 0xbd, 0xc5, 0x8d, 0xf9,
-  0x46, 0x2f, 0xb9, 0x26, 0x1b, 0x69, 0x6c, 0xba, 0x1e, 0x08, 0xd0, 0x29,
-  0x3f, 0xfe, 0xea, 0x22, 0xbd, 0x4a, 0xb3, 0xd9, 0x1f, 0xf7, 0x77, 0x47,
-  0xe9, 0xf5, 0x72, 0x96, 0xfe, 0x2b, 0x5e, 0x7c, 0xf5, 0xe4, 0xc9, 0xfe,
-  0xee, 0x67, 0x9f, 0xef, 0xf6, 0xba, 0xe8, 0x03, 0xc7, 0x5d, 0x02, 0x84,
-  0x0d, 0xe8, 0x6a, 0x48, 0xee, 0xe2, 0x3b, 0xc3, 0xc9, 0x75, 0x0e, 0xa3,
-  0x8e, 0x14, 0x25, 0x99, 0x83, 0x94, 0xad, 0x49, 0x88, 0x49, 0x29, 0x94,
-  0x6a, 0x6e, 0x5c, 0xb3, 0xaf, 0xff, 0xb0, 0x77, 0xc0, 0xa2, 0x0c, 0x24,
-  0x77, 0xb8, 0x27, 0x68, 0x2e, 0x5e, 0xe6, 0x85, 0xb9, 0x81, 0xbe, 0x4c,
-  0x9a, 0xf4, 0xda, 0xee, 0x55, 0x61, 0x62, 0xe0, 0x94, 0x0b, 0x1b, 0xdf,
-  0xbc, 0xa2, 0x4d, 0x9e, 0x53, 0x95, 0x16, 0xf0, 0x6d, 0x6c, 0xd6, 0x50,
-  0xb2, 0x16, 0x59, 0x85, 0xec, 0xd8, 0xeb, 0x2a, 0x9d, 0x6b, 0x62, 0x0b,
-  0xbd, 0x4f, 0xb0, 0xb5, 0xe1, 0x62, 0x96, 0x70, 0x85, 0x6a, 0xf1, 0x5b,
-  0xe4, 0x6e, 0xc3, 0xcd, 0x16, 0xb5, 0x2b, 0x1c, 0xca, 0xd7, 0xcd, 0x89,
-  0xd4, 0x5b, 0xdb, 0x24, 0x97, 0x4a, 0x8f, 0x7d, 0x2a, 0x3d, 0x8c, 0x8a,
-  0x45, 0x06, 0xa4, 0xd9, 0x54, 0x47, 0x3a, 0xc4, 0xdf, 0xc1, 0x1c, 0x92,
-  0x32, 0x57, 0x62, 0x6f, 0xc1, 0xb9, 0xfa, 0xb6, 0xf6, 0x16, 0x3b, 0xdf,
-  0xf2, 0xd6, 0xb8, 0x52, 0x07, 0xf0, 0x4c, 0x5e, 0xaa, 0x97, 0x68, 0xef,
-  0xcb, 0x57, 0xd8, 0x10, 0x7b, 0x5f, 0xfe, 0xab, 0xfd, 0xd9, 0xbe, 0xfc,
-  0x6c, 0xff, 0xcb, 0x7f, 0x1d, 0x0e, 0xd1, 0x3f, 0xda, 0x21, 0x9b, 0xfa,
-  0xeb, 0x4d, 0xa1, 0x93, 0x4a, 0xe5, 0x08, 0xf3, 0xbf, 0xc8, 0x6c, 0xe7,
-  0x1a, 0xad, 0x58, 0xeb, 0x9e, 0x7e, 0xd9, 0x9f, 0xe5, 0xbe, 0x44, 0x54,
-  0xad, 0xdc, 0xca, 0x6b, 0x9b, 0x4a, 0x0f, 0xf4, 0x55, 0x64, 0xd2, 0x6d,
-  0x1c, 0x04, 0xed, 0x08, 0x8c, 0x12, 0x2f, 0xff, 0x1b, 0xed, 0xd4, 0x7f,
-  0xdb, 0x48, 0x24, 0xba, 0x49, 0xcb, 0x71, 0x8f, 0x80, 0x87, 0x6e, 0x5b,
-  0xe6, 0x81, 0x62, 0xca, 0x68, 0x6a, 0x99, 0x52, 0x45, 0xe8, 0x0e, 0xf4,
-  0xaa, 0x4f, 0xfd, 0x49, 0x0a, 0xf6, 0xda, 0x1c, 0x1b, 0x7d, 0x86, 0xd3,
-  0x6a, 0x8c, 0x8e, 0xd1, 0x90, 0x74, 0xc0, 0xb3, 0x7f, 0xfc, 0xf1, 0x47,
-  0x51, 0xa8, 0xcc, 0x5f, 0xa4, 0xe7, 0x37, 0x46, 0x16, 0x4d, 0x8d, 0x78,
-  0x9b, 0xa3, 0x9c, 0x8d, 0x94, 0x0c, 0x93, 0x2b, 0xff, 0x4a, 0x46, 0xca,
-  0x8d, 0x98, 0xa5, 0x3d, 0x1c, 0x1d, 0x9d, 0x9c, 0x00, 0x31, 0x8a, 0x49,
-  0x3d, 0x66, 0x31, 0x86, 0xbd, 0xb9, 0x05, 0x88, 0x87, 0x83, 0x25, 0xfa,
-  0x5b, 0x9f, 0xd6, 0x0e, 0xcb, 0x8e, 0xdd, 0x6f, 0x1a, 0x53, 0x03, 0x5c,
-  0x96, 0x12, 0x7b, 0x96, 0xb5, 0x9c, 0x57, 0x3d, 0x7e, 0xf0, 0x3a, 0xef,
-  0x49, 0x10, 0x8b, 0x7f, 0xd2, 0x73, 0xfc, 0x60, 0xbc, 0x1e, 0x58, 0xb4,
-  0x57, 0xac, 0x3a, 0xe5, 0x7f, 0xcf, 0x5e, 0xed, 0xed, 0xc6, 0x9f, 0x40,
-  0xd4, 0x96, 0xe8, 0x10, 0x5f, 0xb9, 0x80, 0xe0, 0xba, 0xe7, 0xf3, 0x29,
-  0x3f, 0x2d, 0xc5, 0xb6, 0x51, 0xf9, 0xec, 0x55, 0x6f, 0x4c, 0x37, 0x2c,
-  0xfd, 0xff, 0x15, 0xfd, 0x40, 0xc4, 0x4a, 0x9e, 0xad, 0x97, 0xe3, 0x79,
-  0xde, 0xea, 0xf0, 0x0e, 0x0d, 0xf0, 0x4b, 0x1a, 0xf0, 0x0f, 0x99, 0xdd,
-  0x1d, 0x19, 0xa9, 0x76, 0xac, 0xfb, 0x6d, 0x5e, 0x95, 0xe5, 0x38, 0xad,
-  0x36, 0x25, 0x9c, 0xa3, 0xfd, 0xdc, 0xdc, 0xdb, 0x7f, 0xf2, 0xf4, 0xd9,
-  0xe6, 0x50, 0xf4, 0x34, 0x88, 0x88, 0xc6, 0x27, 0x37, 0xe1, 0x26, 0x2c,
-  0x2d, 0x07, 0x23, 0xb3, 0x41, 0x07, 0x10, 0x0b, 0xae, 0x92, 0x14, 0xa3,
-  0xcf, 0xbd, 0xe2, 0xaf, 0xfd, 0x2b, 0x7d, 0xe7, 0x15, 0x3e, 0xf1, 0xaf,
-  0xf9, 0xf4, 0x95, 0x1d, 0xe1, 0xbf, 0xd2, 0x58, 0x5e, 0xc9, 0x20, 0xcc,
-  0xba, 0x6a, 0xca, 0x62, 0xbd, 0xbd, 0x11, 0x95, 0x6b, 0xd1, 0xc5, 0xd5,
-  0x45, 0xdc, 0xc0, 0xa0, 0x81, 0x60, 0x18, 0x4c, 0x39, 0xfa, 0x01, 0x6d,
-  0xd5, 0x25, 0xec, 0xed, 0x7c, 0x1a, 0x98, 0x56, 0x06, 0xd4, 0xca, 0xc0,
-  0x09, 0x6c, 0xb0, 0x58, 0x0e, 0x68, 0x21, 0xfa, 0x92, 0xb1, 0x39, 0x83,
-  0x97, 0x45, 0x54, 0x81, 0xb2, 0x04, 0x08, 0xe0, 0xe8, 0x9b, 0x93, 0x4d,
-  0x01, 0xde, 0xb0, 0x99, 0xd8, 0x8f, 0xf9, 0xa7, 0x2d, 0xc4, 0x70, 0x92,
-  0x2e, 0xe8, 0xf4, 0x6f, 0x24, 0x42, 0xd7, 0x9b, 0x12, 0x8e, 0x84, 0xbe,
-  0xcb, 0xc9, 0xd5, 0xe6, 0x63, 0x72, 0xeb, 0xcc, 0xc8, 0xe3, 0x5d, 0x31,
-  0xc1, 0xa6, 0xd7, 0x8c, 0x99, 0x97, 0x5a, 0x00, 0x25, 0x88, 0xf9, 0x2c,
-  0x6c, 0x76, 0xe6, 0xe0, 0x8d, 0x0d, 0x7a, 0xda, 0x6c, 0x40, 0x79, 0xd4,
-  0xfc, 0x8a, 0xe5, 0x89, 0x8a, 0x88, 0xde, 0x50, 0xcb, 0xa9, 0xf3, 0x4e,
-  0xf0, 0xa5, 0x07, 0x18, 0x02, 0xc6, 0x99, 0xe4, 0x74, 0xb2, 0xdb, 0x84,
-  0x15, 0x43, 0x92, 0x9f, 0x2f, 0x6d, 0x15, 0xc1, 0x2f, 0x13, 0x50, 0x6e,
-  0xf3, 0x5b, 0x12, 0x77, 0x14, 0x07, 0x14, 0xfb, 0x6c, 0xf1, 0x92, 0x98,
-  0x07, 0x36, 0x04, 0xe6, 0xa1, 0x71, 0x44, 0x31, 0x10, 0x2a, 0x51, 0x0c,
-  0x74, 0x7c, 0x2f, 0xce, 0x06, 0x6a, 0x61, 0xf3, 0x0b, 0x1c, 0x82, 0x97,
-  0xb4, 0x0c, 0xf8, 0xf5, 0x97, 0x9b, 0x1b, 0xb6, 0x8c, 0x96, 0xd5, 0xdc,
-  0x3b, 0x01, 0x64, 0xde, 0xa0, 0xfe, 0x78, 0x3c, 0x12, 0x06, 0xd6, 0xc6,
-  0x88, 0xf2, 0x05, 0xb5, 0x32, 0x8c, 0x36, 0x35, 0xa3, 0x34, 0xfe, 0x96,
-  0x83, 0x9a, 0x1b, 0xcf, 0x28, 0x15, 0x82, 0xb4, 0xc7, 0x4d, 0x42, 0xab,
-  0xe2, 0xbd, 0x4d, 0xcb, 0x1b, 0x0b, 0x9f, 0x29, 0x04, 0x5e, 0x95, 0x69,
-  0x6d, 0xdc, 0x0d, 0x21, 0x58, 0x73, 0xda, 0xbc, 0x3f, 0xb0, 0xda, 0x53,
-  0x1e, 0x5c, 0x4e, 0x24, 0xf3, 0x20, 0x05, 0x47, 0xe4, 0x0d, 0x25, 0x1b,
-  0xcb, 0x47, 0x5f, 0xd1, 0x74, 0xef, 0x0d, 0xaf, 0xf3, 0x2b, 0x9e, 0x0c,
-  0x23, 0x22, 0xaf, 0xb3, 0x1d, 0xf3, 0xcf, 0xbe, 0xf9, 0xf9, 0x3e, 0x69,
-  0x65, 0xf4, 0x97, 0x27, 0xc0, 0x63, 0xf9, 0x77, 0xbf, 0x77, 0x36, 0xec,
-  0xb9, 0xa0, 0xbf, 0xe4, 0xf6, 0xce, 0x97, 0xa8, 0x8e, 0xf4, 0x12, 0xdb,
-  0x9c, 0x06, 0x88, 0x4c, 0x3c, 0x55, 0x35, 0x7d, 0x50, 0x09, 0x19, 0x5a,
-  0x64, 0x92, 0x2e, 0x29, 0x05, 0xc6, 0x82, 0x47, 0x04, 0x48, 0x21, 0x8a,
-  0x3a, 0xe9, 0xdd, 0xb9, 0xb8, 0x67, 0x28, 0x65, 0x08, 0x37, 0x6b, 0x76,
-  0xb7, 0xdd, 0xf7, 0x91, 0xb6, 0x46, 0xbc, 0xdf, 0x52, 0x02, 0x3e, 0xb1,
-  0x94, 0x58, 0x9d, 0x16, 0x9f, 0xdf, 0x92, 0x92, 0x93, 0x5e, 0x5e, 0x32,
-  0x96, 0x39, 0xef, 0xae, 0x60, 0xbb, 0x6c, 0x23, 0x03, 0xf9, 0xf2, 0xba,
-  0xd9, 0xa6, 0xcf, 0x64, 0x33, 0xe6, 0x62, 0x93, 0x7a, 0xad, 0xfa, 0x55,
-  0x65, 0x61, 0xc3, 0x87, 0x36, 0xfd, 0xb3, 0x5f, 0x4e, 0x9a, 0xcc, 0xd8,
-  0xba, 0xc8, 0x60, 0x60, 0x39, 0x77, 0x3c, 0x67, 0xba, 0x66, 0x6c, 0xe1,
-  0xd9, 0x80, 0x6f, 0x4f, 0x51, 0x89, 0x06, 0x6f, 0x86, 0xc9, 0x29, 0x10,
-  0xe3, 0x75, 0xca, 0x9c, 0x3f, 0x7a, 0xc3, 0xea, 0x6e, 0x30, 0x5b, 0xa7,
-  0x56, 0x1a, 0x4d, 0x7a, 0x8f, 0xd8, 0x33, 0x74, 0x4b, 0xa1, 0x00, 0xa3,
-  0x33, 0x3a, 0x59, 0xbf, 0x10, 0x7d, 0xa4, 0x0f, 0x5f, 0xb8, 0x7d, 0x0e,
-  0x3e, 0x7f, 0xf6, 0xfb, 0x21, 0x57, 0xcc, 0x6e, 0x58, 0xaf, 0x11, 0x06,
-  0x6d, 0x89, 0x02, 0xea, 0x89, 0x75, 0x7b, 0x08, 0x18, 0x52, 0x99, 0xb1,
-  0xd3, 0x85, 0x48, 0x1c, 0x88, 0x78, 0x08, 0x31, 0x61, 0xd3, 0x1a, 0x76,
-  0x19, 0x15, 0xd3, 0xa4, 0x6d, 0xd4, 0x83, 0xdd, 0x38, 0xcb, 0xac, 0x71,
-  0xcd, 0x6b, 0x55, 0x5a, 0xb8, 0x39, 0x7c, 0x31, 0xac, 0x6e, 0xb8, 0x70,
-  0x1d, 0x75, 0x92, 0xfa, 0x95, 0xde, 0x9a, 0xbf, 0x90, 0x72, 0x36, 0xae,
-  0xcc, 0xaa, 0x67, 0x15, 0x5f, 0x0d, 0x8c, 0x11, 0xf2, 0x2a, 0x8b, 0x7e,
-  0x7b, 0xf9, 0xf6, 0x34, 0x51, 0xee, 0xa4, 0x2b, 0xa7, 0x2a, 0x2a, 0x32,
-  0x13, 0x43, 0x14, 0xcf, 0x08, 0xeb, 0x43, 0xf2, 0x14, 0xdf, 0x72, 0x3c,
-  0xb7, 0x94, 0x54, 0x9f, 0xd0, 0xe4, 0xb4, 0x8e, 0xac, 0xf7, 0x04, 0xbf,
-  0x4a, 0xfb, 0xc8, 0x6c, 0x93, 0x4d, 0x9a, 0x82, 0xcd, 0x7e, 0xb2, 0x49,
-  0x5d, 0xa5, 0x5f, 0x6c, 0x62, 0x3e, 0xf1, 0x63, 0x6f, 0xfa, 0x36, 0x87,
-  0x91, 0x53, 0x48, 0xcf, 0xbc, 0xfa, 0xaa, 0x35, 0x4b, 0xf8, 0xb9, 0x36,
-  0xf5, 0x8a, 0xf3, 0x45, 0x02, 0x9d, 0x5b, 0xdf, 0xf5, 0xda, 0x7f, 0x75,
-  0x64, 0x5a, 0xe1, 0xca, 0xa5, 0x0e, 0xe6, 0x3a, 0xb1, 0x3f, 0xcb, 0x91,
-  0x5f, 0x1b, 0x34, 0xf4, 0xf0, 0x29, 0xbe, 0x54, 0x51, 0x64, 0x21, 0xa0,
-  0x2c, 0xdd, 0x78, 0x0b, 0xa8, 0xe4, 0x35, 0xab, 0x99, 0xb3, 0xdd, 0x77,
-  0x57, 0xc2, 0xcb, 0x00, 0x99, 0xb3, 0x37, 0x44, 0xc2, 0xa5, 0xe3, 0x8d,
-  0xb7, 0x0d, 0x58, 0xe3, 0xbd, 0x87, 0x09, 0xed, 0x59, 0x54, 0xae, 0x9a,
-  0xf4, 0x3a, 0xcb, 0x31, 0xd9, 0xb5, 0xc8, 0x27, 0x94, 0xb2, 0x63, 0x44,
-  0xd7, 0xb4, 0xbc, 0x26, 0xc9, 0xd5, 0x37, 0x07, 0x8d, 0xfe, 0x04, 0x20,
-  0x79, 0x5f, 0x3e, 0xca, 0x1d, 0xc6, 0x59, 0x61, 0x2d, 0x5e, 0xff, 0xbd,
-  0x02, 0xa2, 0xfa, 0x86, 0x5c, 0xa1, 0x13, 0x69, 0xdb, 0x36, 0xcd, 0xeb,
+  0x6b, 0x7b, 0xdc, 0x46, 0x92, 0x26, 0x80, 0x7e, 0xe7, 0xaf, 0x40, 0xb3,
+  0x4f, 0x0f, 0xc9, 0xee, 0xaa, 0xe2, 0x45, 0x17, 0x4b, 0xb4, 0xe4, 0x31,
+  0x4d, 0x51, 0x36, 0xc7, 0x94, 0xc8, 0x65, 0x51, 0xb6, 0x7b, 0x6d, 0x3f,
+  0x7a, 0x50, 0x55, 0x20, 0x89, 0x56, 0x15, 0x50, 0x0d, 0xa0, 0x78, 0xe9,
+  0xd9, 0xd9, 0xdf, 0x7e, 0x32, 0xde, 0x88, 0xc8, 0x4c, 0x20, 0xb3, 0x8a,
+  0xb4, 0xdb, 0xee, 0x9d, 0x73, 0x76, 0x67, 0xb7, 0x2d, 0x89, 0x04, 0x12,
+  0x79, 0x8d, 0x8c, 0xcb, 0x1b, 0x6f, 0x24, 0xc9, 0x43, 0xff, 0xf7, 0x11,
+  0xff, 0xfb, 0x68, 0xfe, 0xcf, 0xfc, 0xb9, 0x96, 0x24, 0x67, 0x55, 0xf9,
+  0xb7, 0x6c, 0xdc, 0xc4, 0x9f, 0xfd, 0xf8, 0xf1, 0x7f, 0x25, 0xfc, 0xff,
+  0xcc, 0x3b, 0x3f, 0x99, 0x3f, 0xd7, 0x56, 0xb6, 0xbd, 0x9d, 0xb8, 0x17,
+  0xfe, 0xd7, 0xc7, 0xad, 0xe4, 0xa1, 0x17, 0xfe, 0x57, 0xb2, 0x89, 0x17,
+  0x3e, 0xca, 0x17, 0x5e, 0xd1, 0xdf, 0x3f, 0x7e, 0x5c, 0xfd, 0x91, 0x9f,
+  0xa8, 0x57, 0xf4, 0x9f, 0x6d, 0x7a, 0xef, 0xa7, 0x8f, 0xf4, 0x57, 0xf3,
+  0x93, 0xb5, 0xb5, 0xf7, 0x07, 0xef, 0x8e, 0xf4, 0xd5, 0xf1, 0xa2, 0x9a,
+  0x26, 0xfd, 0xa4, 0xa9, 0xd2, 0xa2, 0xbe, 0xcc, 0xaa, 0x24, 0x4d, 0x3e,
+  0x9c, 0x9f, 0xac, 0xad, 0x0d, 0xff, 0xfa, 0xfe, 0xf4, 0x6c, 0x78, 0x3c,
+  0x6c, 0x3d, 0xf6, 0x63, 0x39, 0x6f, 0xf2, 0xb2, 0xa8, 0x4d, 0xf7, 0xcd,
+  0x43, 0xf5, 0xcf, 0x6b, 0x6b, 0x6f, 0x8e, 0x86, 0x87, 0xe7, 0xc7, 0x67,
+  0x17, 0xc7, 0xa7, 0xef, 0x5b, 0x4f, 0x26, 0x79, 0x9d, 0x98, 0xa6, 0x9a,
+  0xb2, 0x9c, 0x9a, 0xff, 0xb8, 0xd6, 0x27, 0x69, 0x93, 0x26, 0x97, 0x55,
+  0x39, 0x4b, 0xca, 0x8a, 0x7e, 0x91, 0x26, 0x75, 0x56, 0xdd, 0x64, 0x55,
+  0x2f, 0x59, 0xd4, 0x79, 0x71, 0x95, 0x94, 0x45, 0x96, 0x94, 0x97, 0x49,
+  0x73, 0x9d, 0x69, 0x73, 0xf5, 0x62, 0x3e, 0x2f, 0xab, 0x26, 0x9b, 0x24,
+  0xf3, 0xaa, 0x6c, 0xca, 0x71, 0x39, 0xad, 0x93, 0xcd, 0x37, 0xc7, 0x87,
+  0x17, 0xbd, 0xe4, 0xed, 0xf1, 0xc9, 0x91, 0xf9, 0xef, 0xc5, 0x19, 0xfe,
+  0x33, 0xec, 0x25, 0x5f, 0x9f, 0x9e, 0x7d, 0x73, 0x74, 0xde, 0x4b, 0xbe,
+  0xb9, 0xa0, 0x9f, 0xd1, 0x7f, 0xcd, 0x0f, 0x93, 0xe3, 0x77, 0x07, 0x67,
+  0x3d, 0x6d, 0x8e, 0xfe, 0x41, 0x3f, 0x3c, 0x79, 0x63, 0x7e, 0xc8, 0x7f,
+  0xd0, 0x3f, 0xcf, 0x4e, 0xcf, 0x9e, 0xc8, 0x1f, 0xf4, 0xcf, 0xf3, 0x8b,
+  0x77, 0xe6, 0xb7, 0xe7, 0x17, 0x43, 0xf3, 0xdf, 0xe1, 0x21, 0xfd, 0x07,
+  0x5f, 0x19, 0xbe, 0xfb, 0x0a, 0xff, 0x19, 0xda, 0xe6, 0x86, 0xef, 0xf8,
+  0xe7, 0xf8, 0xd2, 0xc5, 0xd1, 0xc9, 0xfb, 0xa3, 0x8b, 0x24, 0x2d, 0x26,
+  0xc9, 0x85, 0x79, 0x7e, 0x6b, 0x90, 0x5c, 0x5c, 0x67, 0xc9, 0xb8, 0x9c,
+  0xcd, 0xe8, 0x47, 0x66, 0x46, 0x26, 0x59, 0x9d, 0x5f, 0x15, 0x66, 0x28,
+  0x66, 0xe4, 0xb7, 0x65, 0xf5, 0x29, 0x49, 0x6e, 0xf3, 0xe6, 0xba, 0x5c,
+  0x34, 0xda, 0xdc, 0xc2, 0xcc, 0x46, 0x92, 0x17, 0x4d, 0x56, 0xa5, 0x63,
+  0x9a, 0xe9, 0xc1, 0x5a, 0x6b, 0x56, 0xcb, 0x4b, 0x33, 0x87, 0xb5, 0x99,
+  0xb4, 0xd1, 0xa2, 0x9e, 0x96, 0xe9, 0x84, 0xa6, 0xca, 0xbc, 0x72, 0xb9,
+  0x30, 0x93, 0x5c, 0xe5, 0xe3, 0x4f, 0x75, 0x32, 0xcd, 0x3f, 0x65, 0x34,
+  0x51, 0x77, 0xf7, 0x3a, 0x71, 0x3d, 0x6e, 0x34, 0x5d, 0x98, 0x39, 0x2d,
+  0xfa, 0xda, 0x5c, 0x93, 0x8f, 0x53, 0xfa, 0x00, 0x66, 0x2e, 0x59, 0xcc,
+  0xa9, 0x35, 0x9e, 0xb1, 0x64, 0x5e, 0xd6, 0xe6, 0xa5, 0xe1, 0xf0, 0xc4,
+  0xf4, 0xbc, 0x28, 0x32, 0xf4, 0xa3, 0xee, 0x99, 0x7f, 0x94, 0x9f, 0xf2,
+  0xcc, 0xfc, 0xe5, 0x32, 0x9f, 0x66, 0x09, 0xaf, 0xa8, 0x6d, 0x8e, 0x96,
+  0x36, 0xa9, 0xb2, 0x7a, 0x31, 0xcb, 0xcc, 0xec, 0xbd, 0xcb, 0x9a, 0x74,
+  0x9a, 0x17, 0x9f, 0xcc, 0x5f, 0x69, 0xe0, 0xb3, 0xb2, 0xca, 0x06, 0xc9,
+  0x41, 0x9d, 0xdc, 0x97, 0x0b, 0x33, 0xe0, 0xe9, 0xd4, 0xac, 0x79, 0x96,
+  0x8c, 0xb2, 0x69, 0x79, 0xdb, 0xa3, 0x95, 0x4e, 0x8a, 0xc5, 0x6c, 0x64,
+  0x1a, 0x28, 0x2f, 0x5d, 0x73, 0x69, 0xb3, 0x30, 0xcd, 0xf1, 0xd3, 0xb3,
+  0xd4, 0x8c, 0xc9, 0xbc, 0x5b, 0x25, 0xd7, 0x99, 0x19, 0x73, 0x3d, 0xcf,
+  0x8b, 0x3f, 0xb4, 0xe7, 0xc5, 0x4c, 0xed, 0xbc, 0xbc, 0xcd, 0x2a, 0x33,
+  0xb3, 0xa3, 0xfb, 0xc4, 0x4c, 0xc2, 0x88, 0x37, 0xe1, 0xa5, 0xd9, 0x64,
+  0x49, 0x6a, 0x9a, 0xb0, 0x1b, 0xb0, 0x5f, 0x65, 0xd3, 0x94, 0x36, 0x93,
+  0xfd, 0xc6, 0xc0, 0x2c, 0x62, 0x66, 0x77, 0x9b, 0xbc, 0xba, 0xf9, 0x64,
+  0x0b, 0x2f, 0x4f, 0xcc, 0x48, 0xf2, 0x69, 0x6d, 0x96, 0x81, 0x0e, 0x85,
+  0x3c, 0x43, 0x8b, 0x4a, 0xfb, 0xdf, 0xec, 0xcd, 0xfb, 0xa2, 0x49, 0xef,
+  0xf0, 0x79, 0xd9, 0x9b, 0xfd, 0x49, 0x36, 0xcf, 0x8a, 0x49, 0x56, 0x34,
+  0x83, 0xe4, 0xaf, 0xe5, 0x62, 0xc3, 0x7c, 0xfb, 0x32, 0x37, 0x73, 0x90,
+  0x4a, 0x53, 0xe6, 0xcb, 0x66, 0x13, 0x8c, 0xab, 0x7c, 0xee, 0x2d, 0x45,
+  0x59, 0x98, 0x35, 0x4f, 0xce, 0xdf, 0x1e, 0x26, 0x4f, 0x5e, 0xbe, 0x78,
+  0xee, 0xd6, 0xdc, 0x34, 0x90, 0x8c, 0xd3, 0xc2, 0x8c, 0x38, 0x1b, 0xe7,
+  0x97, 0xf7, 0xc9, 0x6c, 0x31, 0x6d, 0xf2, 0xb9, 0x99, 0x7d, 0x3a, 0x7c,
+  0x74, 0x80, 0xe6, 0x69, 0xd5, 0xd4, 0xb4, 0x09, 0xf0, 0x03, 0x8c, 0xfd,
+  0xb6, 0xca, 0x1b, 0x3a, 0x48, 0xf8, 0x9d, 0xe9, 0x61, 0xd6, 0xd4, 0xda,
+  0x1c, 0xed, 0x35, 0xf3, 0x9d, 0x91, 0xd9, 0x5b, 0x66, 0x6a, 0xd3, 0xda,
+  0x7c, 0x74, 0x7f, 0xcd, 0x49, 0x90, 0xeb, 0xa6, 0x99, 0xef, 0x6f, 0x6f,
+  0xd7, 0x79, 0x93, 0x0d, 0xfe, 0xd3, 0x9c, 0xc3, 0x5e, 0x73, 0x5b, 0xf6,
+  0x9a, 0xeb, 0x2a, 0xcb, 0xfe, 0x6b, 0x60, 0xf6, 0xb0, 0x7d, 0xd2, 0x7c,
+  0xf7, 0x5e, 0x3a, 0x76, 0x95, 0x35, 0xe6, 0x0b, 0x7f, 0x5f, 0x64, 0x05,
+  0xb5, 0x68, 0xfa, 0x91, 0x4e, 0xe7, 0xd7, 0xa9, 0x59, 0xce, 0xcc, 0xec,
+  0x46, 0x3a, 0xd9, 0x66, 0xc3, 0x50, 0xaf, 0xf8, 0x6c, 0xff, 0xf8, 0x73,
+  0xf8, 0xd1, 0x4b, 0x7c, 0xd3, 0xfc, 0x77, 0x90, 0xdd, 0xa5, 0x33, 0x33,
+  0x36, 0xfa, 0xd4, 0x36, 0x6d, 0xb1, 0x1f, 0x77, 0xfb, 0xbb, 0x3b, 0x3b,
+  0x3f, 0x0f, 0x9a, 0xbb, 0xe6, 0x71, 0xcf, 0xef, 0xec, 0xb8, 0x37, 0xe8,
+  0xd1, 0x4d, 0x1a, 0x6f, 0x32, 0x35, 0x5b, 0x86, 0x3e, 0xfe, 0x8f, 0xac,
+  0x2a, 0xeb, 0xad, 0xc7, 0xb5, 0x94, 0xf6, 0xff, 0xd1, 0xfe, 0xee, 0xfb,
+  0xac, 0xc6, 0x9e, 0x71, 0x63, 0x4d, 0xd2, 0xca, 0xec, 0xdb, 0xb2, 0x71,
+  0xe2, 0xa9, 0x67, 0x0e, 0x65, 0x63, 0x67, 0xc6, 0x9c, 0x39, 0xf3, 0xb4,
+  0x11, 0x6c, 0xe9, 0x94, 0x64, 0x5a, 0x9d, 0x14, 0xd9, 0x9d, 0x3d, 0xe5,
+  0xe6, 0xf4, 0x67, 0xe9, 0xf8, 0x3a, 0x29, 0xcd, 0xe6, 0xaf, 0x22, 0x4b,
+  0xe0, 0x77, 0x28, 0xad, 0xc6, 0xd7, 0xf9, 0x8d, 0x99, 0x8d, 0x97, 0x2f,
+  0x9f, 0xf7, 0xcd, 0x7f, 0x5e, 0xfe, 0xbc, 0x7d, 0x53, 0x4e, 0xcd, 0xe4,
+  0x3c, 0xfd, 0x79, 0x9b, 0x96, 0xf8, 0x3f, 0xd3, 0xde, 0xa8, 0x37, 0xfe,
+  0xaf, 0xc1, 0x75, 0x33, 0x9b, 0x2e, 0xdd, 0x38, 0x69, 0x61, 0xfe, 0x37,
+  0x2b, 0x17, 0x45, 0x63, 0x37, 0x8b, 0xd9, 0x73, 0x8d, 0x27, 0x9c, 0xcc,
+  0x71, 0x35, 0x67, 0x94, 0xb6, 0x36, 0xed, 0x21, 0x3a, 0x75, 0xe6, 0x80,
+  0xba, 0xe3, 0xd8, 0x8c, 0xaf, 0x69, 0xfc, 0x66, 0xf7, 0xa4, 0x32, 0x09,
+  0x4d, 0x9e, 0xd2, 0xc9, 0x34, 0x02, 0x82, 0x04, 0x16, 0xda, 0xe2, 0xaf,
+  0xe5, 0xe6, 0xc1, 0xb2, 0x9a, 0x64, 0xd5, 0xa0, 0xdb, 0x0d, 0x7b, 0x64,
+  0xbd, 0x6f, 0x26, 0x7a, 0xa3, 0xd0, 0x0f, 0xd0, 0xb1, 0x59, 0x7e, 0x67,
+  0x5a, 0x80, 0xc0, 0x2c, 0xd0, 0x71, 0x6e, 0x2d, 0xa1, 0x1e, 0xe3, 0x33,
+  0xfa, 0xbe, 0x3b, 0xb2, 0xa6, 0xeb, 0xad, 0xa1, 0xe3, 0xa3, 0x6e, 0xf0,
+  0x89, 0x59, 0xbc, 0xb9, 0x79, 0x6b, 0x41, 0x72, 0x15, 0xc7, 0x9a, 0x9a,
+  0x31, 0x02, 0xe1, 0xca, 0xac, 0x8b, 0x59, 0x0b, 0xda, 0xc5, 0xb4, 0x54,
+  0xf7, 0xc9, 0x7b, 0xb3, 0x61, 0x58, 0x18, 0x79, 0x9b, 0x7d, 0x9a, 0x35,
+  0xcd, 0x83, 0xcb, 0xe4, 0x76, 0xec, 0xfe, 0x6e, 0xb0, 0x69, 0x97, 0x3d,
+  0x6f, 0xf6, 0xd9, 0xfe, 0x5e, 0xfb, 0xe1, 0xef, 0x8d, 0x90, 0x76, 0xc7,
+  0xc5, 0x7c, 0xfd, 0x3f, 0xff, 0xcb, 0xdb, 0x75, 0xb7, 0xf4, 0xdb, 0xbc,
+  0xb8, 0x29, 0x3f, 0x99, 0x29, 0xc2, 0x2d, 0x9a, 0xb6, 0x67, 0x93, 0xe4,
+  0xd0, 0x6c, 0xde, 0xd8, 0xeb, 0x89, 0xb6, 0xa3, 0xf9, 0xd1, 0x28, 0x1d,
+  0x4d, 0xef, 0x93, 0xeb, 0xf4, 0x26, 0xa3, 0xf1, 0xce, 0xcd, 0x3e, 0xa5,
+  0x19, 0x30, 0xd7, 0xc6, 0x14, 0x72, 0x4c, 0x04, 0xc3, 0xa4, 0x5c, 0x8c,
+  0x8c, 0x70, 0xf9, 0xfb, 0xa2, 0x6c, 0x78, 0x62, 0xd2, 0x9b, 0x32, 0x9f,
+  0xb4, 0xee, 0xe2, 0xeb, 0x8c, 0x04, 0x1a, 0x7d, 0x18, 0x97, 0x94, 0x11,
+  0xa8, 0xd4, 0x53, 0x1c, 0xb4, 0xbc, 0xa1, 0xeb, 0xce, 0x88, 0xc2, 0x74,
+  0x5a, 0x97, 0x49, 0x72, 0x55, 0xd2, 0x29, 0x81, 0x00, 0xc6, 0x36, 0x37,
+  0x8b, 0x72, 0x9d, 0xd2, 0xad, 0x66, 0x2e, 0x30, 0x7b, 0x0e, 0xaa, 0x0c,
+  0xb2, 0x18, 0x2b, 0x95, 0x4e, 0x7b, 0x7c, 0x7b, 0xd1, 0x3b, 0x32, 0x55,
+  0xc9, 0xc6, 0xbf, 0x6d, 0xf4, 0x92, 0x8d, 0x7f, 0xdf, 0xc0, 0x7e, 0xd8,
+  0xf8, 0xf3, 0x86, 0x5b, 0x67, 0xa3, 0x8c, 0xdd, 0xe4, 0x93, 0x8c, 0xb7,
+  0xc4, 0xf1, 0xd9, 0xcd, 0xf3, 0xe4, 0x1f, 0xa4, 0x3b, 0x18, 0x59, 0x9b,
+  0xdd, 0xe9, 0x86, 0xd4, 0xb1, 0x99, 0xb7, 0x13, 0x23, 0x74, 0xd3, 0x39,
+  0x29, 0x11, 0x59, 0x35, 0x36, 0xbb, 0x37, 0xbd, 0x32, 0xfb, 0xd5, 0xdc,
+  0xc5, 0xda, 0x1c, 0xb5, 0x4f, 0xaf, 0xf0, 0xb0, 0x8c, 0x80, 0x4c, 0x8a,
+  0x74, 0x66, 0x4e, 0xc4, 0x09, 0xf5, 0x28, 0x2f, 0xc2, 0xc5, 0xfc, 0xf1,
+  0x32, 0x7b, 0xb1, 0xb3, 0xbf, 0xff, 0xe4, 0x4f, 0x7b, 0xcf, 0xb2, 0xe6,
+  0x7a, 0xe7, 0xe7, 0x6d, 0xfb, 0xc8, 0xf1, 0x25, 0xa6, 0x5d, 0xb7, 0x9f,
+  0x76, 0xc2, 0xdc, 0xf2, 0xf6, 0x96, 0x30, 0xef, 0x9b, 0xbf, 0x67, 0x97,
+  0xf9, 0x5d, 0x4f, 0xf5, 0x25, 0x3e, 0x73, 0xa9, 0xd9, 0x6a, 0x66, 0xfd,
+  0x48, 0x44, 0x68, 0x73, 0x57, 0x8b, 0xac, 0x36, 0x33, 0x79, 0x7b, 0x9d,
+  0x36, 0x89, 0x6d, 0x80, 0x57, 0x76, 0x96, 0x5f, 0x5d, 0x37, 0xc9, 0x6d,
+  0x4a, 0x97, 0xcd, 0x71, 0xc3, 0x4d, 0xd0, 0x2d, 0x6f, 0xae, 0x98, 0xcb,
+  0xd4, 0xdc, 0x15, 0xb4, 0x86, 0xb8, 0xd2, 0x47, 0x4e, 0xc3, 0x68, 0xcc,
+  0x36, 0xe7, 0x05, 0x71, 0xea, 0xd4, 0x28, 0xad, 0xe9, 0xd0, 0x16, 0x46,
+  0x38, 0x34, 0x46, 0x47, 0x58, 0xd0, 0xbf, 0xae, 0x8d, 0x16, 0x80, 0x39,
+  0x90, 0x8e, 0xe2, 0xa2, 0x7c, 0x4b, 0xcb, 0x49, 0x6b, 0x63, 0x2f, 0x2f,
+  0xb3, 0x48, 0x3d, 0x59, 0x66, 0xfb, 0x46, 0x6d, 0x0e, 0x9c, 0x91, 0x4c,
+  0x76, 0x67, 0xac, 0x93, 0x90, 0x5d, 0xe7, 0x71, 0xa2, 0x8f, 0x69, 0x4d,
+  0x8a, 0x02, 0xab, 0x03, 0xa6, 0xf3, 0xde, 0x60, 0xcd, 0xa4, 0xa5, 0x9f,
+  0x48, 0x25, 0xe9, 0x28, 0x3e, 0x78, 0x6d, 0x52, 0x9a, 0x4d, 0x66, 0x7a,
+  0x6b, 0x84, 0x31, 0x8d, 0x8c, 0x44, 0x2c, 0x66, 0x05, 0x9b, 0xdc, 0xb4,
+  0x49, 0x3f, 0xcc, 0x1b, 0xba, 0x63, 0xa0, 0xc3, 0x9a, 0xfe, 0x9a, 0x49,
+  0x81, 0x22, 0x6a, 0x04, 0xb5, 0x37, 0x7e, 0x5c, 0x8f, 0xe6, 0xd9, 0xe4,
+  0xc6, 0x68, 0x29, 0x46, 0x21, 0xcd, 0xec, 0x5b, 0xb8, 0xcf, 0xc7, 0xa4,
+  0x1b, 0x4d, 0xcd, 0x79, 0x19, 0x97, 0x55, 0x45, 0xfa, 0x3e, 0xad, 0xe0,
+  0x88, 0x85, 0xe8, 0x2c, 0x33, 0x6a, 0x84, 0x3f, 0x9d, 0x39, 0x5d, 0x68,
+  0x46, 0xbe, 0x18, 0xbd, 0x04, 0x12, 0xc4, 0xe8, 0x0f, 0x90, 0xf9, 0x18,
+  0x38, 0x7a, 0x47, 0x6d, 0x8f, 0xc7, 0xd9, 0xbc, 0xa9, 0x63, 0x63, 0xd2,
+  0x05, 0x37, 0xdd, 0xa9, 0x32, 0x9a, 0x79, 0x5f, 0xe9, 0xc2, 0xbc, 0xda,
+  0x4b, 0x1f, 0x7a, 0x97, 0xea, 0x31, 0x46, 0x0f, 0xab, 0xed, 0xac, 0x35,
+  0xd8, 0x1b, 0x46, 0x8c, 0x61, 0xce, 0x67, 0xd4, 0x51, 0x7a, 0xb8, 0xe6,
+  0x93, 0x0a, 0xd1, 0x4c, 0x0b, 0xc9, 0x9a, 0x36, 0x7f, 0x97, 0xae, 0x2e,
+  0x33, 0x9f, 0xb6, 0x71, 0xf3, 0x55, 0xbb, 0xa6, 0xf4, 0x79, 0x52, 0xf1,
+  0xcd, 0x4d, 0x3e, 0xa9, 0xaf, 0x8d, 0xf2, 0x55, 0xcb, 0xc9, 0xce, 0x67,
+  0x66, 0xcf, 0xdc, 0xd0, 0xfa, 0xce, 0xb3, 0x6c, 0x32, 0x48, 0x4e, 0x2f,
+  0x49, 0xaa, 0x56, 0xa6, 0xd3, 0x0d, 0x7e, 0x4d, 0xb7, 0x8a, 0x99, 0xb7,
+  0x09, 0x94, 0x78, 0x7b, 0xb4, 0xb8, 0x2b, 0xde, 0xed, 0x00, 0x49, 0x9e,
+  0x9a, 0x9f, 0x98, 0xde, 0x4e, 0xdb, 0x57, 0x10, 0xce, 0xa1, 0x91, 0xde,
+  0xd4, 0xbd, 0x51, 0x96, 0x60, 0x27, 0x8e, 0xb2, 0xe6, 0x36, 0xcb, 0x6c,
+  0x73, 0x75, 0x66, 0xae, 0x3d, 0x5a, 0x34, 0xd6, 0xfc, 0x20, 0x0c, 0x69,
+  0x6a, 0xcf, 0xce, 0x4f, 0xbf, 0x3e, 0x3f, 0x1a, 0x0e, 0x93, 0x77, 0x47,
+  0x17, 0x47, 0xe7, 0xad, 0x99, 0x2e, 0xca, 0x6a, 0x86, 0x15, 0x9d, 0xe4,
+  0xf5, 0x7c, 0x9a, 0xde, 0xd3, 0x52, 0x9b, 0x91, 0x5c, 0x55, 0x74, 0xb2,
+  0x66, 0x19, 0xdd, 0x0a, 0x93, 0x05, 0x24, 0x99, 0xb9, 0x8e, 0xcc, 0xf2,
+  0x89, 0xc6, 0x4b, 0xc2, 0x04, 0x6a, 0x72, 0x71, 0xe5, 0x66, 0xda, 0x48,
+  0x1c, 0xb9, 0x49, 0xe9, 0x2a, 0xb5, 0xeb, 0x41, 0xaa, 0x27, 0x8c, 0x9b,
+  0x9e, 0xfb, 0x19, 0x4f, 0x13, 0x5f, 0x6d, 0x66, 0xcf, 0xe6, 0x33, 0x08,
+  0x3b, 0xf3, 0xa7, 0xd3, 0x36, 0xb3, 0x4b, 0xa3, 0x6a, 0x9b, 0xdb, 0x95,
+  0x2d, 0x85, 0x6e, 0x9f, 0xb4, 0xb7, 0x56, 0x3f, 0x36, 0xdb, 0x90, 0x44,
+  0x33, 0x35, 0xc8, 0x5d, 0xe1, 0x2f, 0x58, 0x21, 0x66, 0x74, 0x12, 0x92,
+  0x7d, 0xf2, 0xd8, 0x9c, 0xba, 0x90, 0x99, 0x95, 0x9d, 0x70, 0xf3, 0xf5,
+  0xe2, 0x12, 0x07, 0x39, 0xd9, 0x34, 0x9a, 0xf9, 0x3b, 0x63, 0x2d, 0x19,
+  0x8b, 0xa5, 0x97, 0x9c, 0x6d, 0xe1, 0xbd, 0xdd, 0x9d, 0xbd, 0xa7, 0x2c,
+  0x08, 0x06, 0xda, 0xdc, 0x5b, 0x4f, 0x10, 0xef, 0x7e, 0xa2, 0xe5, 0xe5,
+  0x87, 0xa8, 0xf1, 0x41, 0xb2, 0xfb, 0x8e, 0x7f, 0xf2, 0xf4, 0xc5, 0xb3,
+  0xcf, 0x9e, 0xcb, 0x0f, 0xdb, 0x1b, 0xdc, 0xf6, 0x1f, 0xbb, 0x03, 0x96,
+  0x1f, 0x99, 0x82, 0xa6, 0x27, 0x66, 0x74, 0xb3, 0xbc, 0x30, 0xc7, 0xc4,
+  0x1c, 0x2b, 0x91, 0x55, 0xb4, 0x9f, 0x4d, 0xe7, 0x2f, 0x59, 0xb2, 0xc9,
+  0xba, 0xb6, 0x4d, 0x4a, 0xf3, 0xb2, 0xd9, 0xb2, 0x46, 0x96, 0xdb, 0x45,
+  0x62, 0x35, 0xa1, 0xa1, 0x8e, 0xa4, 0x23, 0x12, 0xb0, 0x64, 0x57, 0x19,
+  0x05, 0x38, 0x8b, 0x7e, 0xcd, 0xde, 0x8a, 0xe6, 0x0d, 0xd3, 0x37, 0x73,
+  0x27, 0xd2, 0x35, 0x17, 0xce, 0xbb, 0x11, 0x05, 0x90, 0x90, 0xb7, 0x79,
+  0x0d, 0xd1, 0x70, 0x5b, 0x2e, 0xa6, 0xc6, 0x8a, 0xa1, 0x07, 0x16, 0x73,
+  0xbc, 0x60, 0x3e, 0x35, 0x77, 0x32, 0xc0, 0x68, 0x2c, 0xb4, 0x77, 0xba,
+  0xad, 0x98, 0xae, 0x99, 0x7f, 0xce, 0xcd, 0x56, 0xe2, 0xee, 0x0c, 0xba,
+  0x37, 0x04, 0x64, 0x5f, 0xb0, 0x13, 0xe9, 0xcc, 0x43, 0x68, 0x9f, 0x9d,
+  0x0e, 0x2f, 0x48, 0x03, 0x38, 0xfb, 0x70, 0x61, 0x1a, 0x32, 0x2a, 0x40,
+  0xdd, 0x98, 0x4d, 0x49, 0x2f, 0x16, 0x19, 0x4c, 0x48, 0x6d, 0xce, 0xec,
+  0xbd, 0x1c, 0x82, 0x0a, 0x6a, 0x8d, 0x7e, 0x92, 0xfb, 0xc8, 0x36, 0x36,
+  0x1d, 0x41, 0xb5, 0xb0, 0xf9, 0x0e, 0xb7, 0xef, 0x24, 0x9b, 0x5f, 0x6c,
+  0x99, 0x3d, 0xdb, 0x2f, 0xed, 0xec, 0xf4, 0xfb, 0xf2, 0xaa, 0xf9, 0x76,
+  0x9d, 0xcf, 0xf2, 0x69, 0x5a, 0x79, 0x5d, 0x67, 0x89, 0x4a, 0xe7, 0xd3,
+  0xca, 0x95, 0xb1, 0xd9, 0x35, 0xe8, 0xb6, 0x33, 0x25, 0x69, 0x0e, 0x21,
+  0x95, 0xdc, 0x52, 0x4d, 0x48, 0x21, 0x80, 0xc6, 0x3c, 0xcf, 0xed, 0xd4,
+  0xd1, 0x9a, 0x91, 0xb8, 0x6a, 0x4d, 0x54, 0x77, 0xdd, 0x82, 0x89, 0xa3,
+  0x1b, 0x09, 0x9e, 0x0a, 0x3b, 0x75, 0xc9, 0xfa, 0x28, 0xad, 0xd6, 0x13,
+  0x2b, 0x8b, 0xf9, 0x6c, 0xd2, 0x09, 0xa9, 0xb2, 0xab, 0x85, 0x19, 0x41,
+  0xc2, 0xb3, 0x4b, 0x23, 0xfd, 0xa3, 0x37, 0x52, 0x6d, 0xa0, 0x3f, 0xa2,
+  0x47, 0xf2, 0x9a, 0xcd, 0xcc, 0x4b, 0x63, 0xb7, 0xd0, 0xa1, 0x51, 0xfd,
+  0x15, 0x1a, 0x8d, 0xec, 0x98, 0xc8, 0x86, 0xf1, 0xf4, 0x5a, 0x73, 0x54,
+  0x9a, 0xcc, 0x08, 0x1a, 0x88, 0x7f, 0x7a, 0xb2, 0x6f, 0x96, 0xac, 0xdf,
+  0xaf, 0xcd, 0xfc, 0x93, 0xee, 0x3d, 0x17, 0x9b, 0xfe, 0x14, 0x0e, 0x13,
+  0xeb, 0x5b, 0x39, 0x15, 0x1d, 0x18, 0xd7, 0x26, 0xbf, 0x0b, 0x11, 0x6a,
+  0x14, 0xd5, 0x5b, 0xf3, 0xe1, 0xd4, 0x2c, 0x99, 0x39, 0x70, 0xef, 0x68,
+  0xa2, 0xd8, 0x37, 0x92, 0x58, 0xb5, 0x19, 0x3b, 0x23, 0xa7, 0x73, 0x9f,
+  0x3a, 0x5d, 0x66, 0x32, 0xc9, 0xe9, 0xb7, 0xe6, 0x7c, 0x99, 0x1b, 0x6e,
+  0x91, 0xc1, 0xf6, 0x90, 0x49, 0x9d, 0xb9, 0xc9, 0x84, 0x19, 0x5b, 0x5f,
+  0x97, 0x64, 0x26, 0xae, 0xb3, 0x2c, 0xee, 0xd3, 0xb7, 0xd6, 0x71, 0x9f,
+  0xcf, 0x12, 0xfd, 0x96, 0x7c, 0xca, 0x8c, 0x63, 0xe2, 0xeb, 0x66, 0x3d,
+  0x73, 0xd1, 0xdc, 0x7b, 0x46, 0x02, 0x64, 0x35, 0xf7, 0xbd, 0xb2, 0x0a,
+  0x8f, 0xb9, 0x52, 0xe7, 0xa4, 0x4c, 0x89, 0x0c, 0xc7, 0x65, 0x88, 0x23,
+  0x5b, 0x73, 0xd7, 0x7a, 0x66, 0x6e, 0xe9, 0xc9, 0xab, 0x6b, 0x7d, 0xd4,
+  0xbb, 0x58, 0x53, 0x33, 0x38, 0xba, 0x1c, 0xc8, 0x9e, 0x9e, 0xa8, 0xdc,
+  0x2f, 0x2b, 0x16, 0x66, 0xd3, 0xd2, 0xec, 0xe5, 0x75, 0x56, 0x59, 0xa5,
+  0xdb, 0xd4, 0x6b, 0xea, 0x25, 0xcd, 0x38, 0xfb, 0x99, 0x4a, 0xbb, 0x36,
+  0xb6, 0xd3, 0x32, 0x5f, 0xf5, 0x83, 0x5d, 0x73, 0x13, 0x35, 0xc4, 0x1c,
+  0x99, 0xab, 0xb3, 0xa6, 0x7d, 0xac, 0x33, 0x8f, 0xed, 0x6d, 0xae, 0xba,
+  0x8d, 0x86, 0xcf, 0x23, 0x6c, 0xac, 0xce, 0xcc, 0xd7, 0xd8, 0x3e, 0x72,
+  0x91, 0xd9, 0x91, 0x99, 0x11, 0x4d, 0xf2, 0x14, 0xfb, 0x84, 0x97, 0x06,
+  0xca, 0x88, 0xb3, 0x08, 0x23, 0x7a, 0xf0, 0x7d, 0xd7, 0xa0, 0x9b, 0x4e,
+  0xfd, 0x2b, 0x49, 0xfb, 0xd4, 0x3f, 0x35, 0x63, 0x3f, 0xc1, 0x38, 0xfa,
+  0x37, 0x09, 0x1d, 0x3f, 0x63, 0x36, 0xd0, 0x59, 0xec, 0x9f, 0x9e, 0xdc,
+  0x78, 0xc7, 0x88, 0x2c, 0xf7, 0x82, 0xf4, 0x94, 0x1e, 0xbc, 0x23, 0xa3,
+  0xb2, 0x34, 0x66, 0xb2, 0x1b, 0x1a, 0xdd, 0x07, 0x59, 0x41, 0xbb, 0x5d,
+  0x56, 0xd4, 0x88, 0x84, 0xb9, 0x95, 0xb7, 0xf7, 0xc6, 0x5c, 0x4a, 0xaf,
+  0xd2, 0xdc, 0xee, 0x37, 0x39, 0x19, 0x93, 0x44, 0x1f, 0x2e, 0x4a, 0x79,
+  0x9e, 0x96, 0x8a, 0x54, 0x20, 0x91, 0x5b, 0x8b, 0x9a, 0x8f, 0x8f, 0x19,
+  0x95, 0x91, 0x3c, 0x90, 0x1d, 0xd2, 0x2e, 0xa9, 0x8d, 0xda, 0xdc, 0x08,
+  0x8a, 0x32, 0xe9, 0x9c, 0x10, 0xbe, 0xd0, 0x20, 0x4d, 0x8b, 0xeb, 0x83,
+  0xe4, 0x9b, 0xf2, 0x36, 0x83, 0xaf, 0x10, 0xfa, 0x7d, 0x4e, 0xde, 0x2e,
+  0xa3, 0x0a, 0xde, 0x66, 0xc9, 0xcc, 0xa8, 0x9e, 0x66, 0x36, 0xa1, 0x7d,
+  0xe0, 0x67, 0x9e, 0x79, 0x68, 0x76, 0xf8, 0x2d, 0xcf, 0x92, 0x1d, 0x85,
+  0x5d, 0xca, 0x4b, 0x3e, 0x12, 0xc9, 0x26, 0xd4, 0x9b, 0x31, 0xcd, 0xd6,
+  0xbc, 0x71, 0xa3, 0xb0, 0x13, 0x72, 0x9b, 0xd6, 0xde, 0xe1, 0xca, 0x60,
+  0x9a, 0x26, 0x9f, 0x0d, 0x76, 0x5f, 0x0e, 0x76, 0x06, 0x64, 0x8a, 0x64,
+  0x37, 0x79, 0xb9, 0xa8, 0x69, 0x3d, 0xa9, 0x27, 0xde, 0xe9, 0x24, 0x9f,
+  0x14, 0x2d, 0xef, 0xd5, 0xd5, 0x94, 0x15, 0x9f, 0xed, 0xf2, 0xf2, 0x32,
+  0xf1, 0x94, 0xa3, 0x2a, 0x9b, 0xb3, 0x0d, 0x44, 0x73, 0x23, 0x07, 0x8e,
+  0x85, 0x6a, 0x68, 0x24, 0x0f, 0x9c, 0xfb, 0xa2, 0xdf, 0x4f, 0x47, 0x75,
+  0x43, 0xe6, 0x54, 0x7f, 0x51, 0xe4, 0x77, 0xfd, 0xba, 0x1c, 0x7f, 0x32,
+  0xcb, 0xf2, 0x6a, 0x9e, 0x36, 0xd7, 0x5f, 0x74, 0x9c, 0xc2, 0x9b, 0x74,
+  0x9b, 0x6c, 0x25, 0xc9, 0x21, 0x2b, 0x96, 0x34, 0x17, 0x15, 0x9f, 0x38,
+  0xb3, 0x9e, 0xd2, 0x4a, 0xf2, 0xc1, 0xb4, 0x62, 0x76, 0xf3, 0xcc, 0x2c,
+  0x6b, 0xc2, 0x8d, 0xf5, 0x54, 0x98, 0x76, 0x9a, 0x83, 0xcb, 0x91, 0x2e,
+  0x12, 0x78, 0xee, 0xcc, 0xe1, 0x29, 0xab, 0x4f, 0x03, 0xf2, 0x91, 0x18,
+  0xab, 0x71, 0x9f, 0x36, 0x74, 0x63, 0xc4, 0x58, 0xc3, 0xf3, 0x5e, 0x8b,
+  0x10, 0xa6, 0x6e, 0xb1, 0x4c, 0x76, 0x52, 0x4a, 0xe7, 0x53, 0x7b, 0x20,
+  0x9f, 0x4d, 0xd4, 0xde, 0x90, 0xad, 0xb7, 0xf1, 0xa5, 0xb1, 0x00, 0xaf,
+  0x79, 0xe1, 0xd1, 0x18, 0x8f, 0xd1, 0xec, 0xd1, 0x2b, 0x63, 0x43, 0x14,
+  0x4d, 0xa7, 0x39, 0xf3, 0x55, 0xba, 0xac, 0xe9, 0x9e, 0x61, 0x73, 0x17,
+  0xdb, 0x44, 0x7c, 0x40, 0xd6, 0x02, 0x1d, 0xac, 0x75, 0x5e, 0x3b, 0xd0,
+  0x55, 0xfd, 0x6c, 0xf0, 0xec, 0x89, 0x59, 0x54, 0x7f, 0xa2, 0x8b, 0x7b,
+  0xf2, 0x9d, 0xc6, 0x27, 0xf5, 0xc2, 0xdc, 0xa5, 0x35, 0xab, 0x27, 0xe6,
+  0x0c, 0x5f, 0xe6, 0x57, 0x8b, 0x2a, 0xe3, 0x4b, 0x0d, 0xee, 0x56, 0xf5,
+  0xb2, 0xd2, 0x3d, 0x71, 0x5d, 0xc2, 0x39, 0x69, 0xe4, 0x4b, 0x36, 0xbd,
+  0xec, 0x75, 0x67, 0x81, 0x34, 0x3a, 0xda, 0x02, 0x18, 0x22, 0x36, 0x91,
+  0xd1, 0xdc, 0xd0, 0x58, 0x91, 0xc9, 0xbd, 0x3e, 0x33, 0x13, 0x9c, 0x90,
+  0x77, 0x2e, 0x19, 0x4f, 0xd3, 0x7c, 0x06, 0x73, 0x47, 0xbc, 0x4f, 0x83,
+  0x4e, 0x73, 0x17, 0xa2, 0x8e, 0x43, 0x13, 0x1f, 0x91, 0x35, 0x50, 0xd5,
+  0x24, 0xac, 0x68, 0x12, 0x52, 0x55, 0x26, 0x58, 0xd7, 0xbe, 0xce, 0xc6,
+  0x9f, 0x74, 0x35, 0xf5, 0x16, 0xee, 0x77, 0x9a, 0x23, 0xb7, 0x2b, 0x4c,
+  0x0e, 0xf3, 0xd4, 0xc2, 0xac, 0xe9, 0xbc, 0xac, 0xeb, 0x9c, 0x3c, 0x0a,
+  0xa4, 0x21, 0x2f, 0xc6, 0x50, 0x9c, 0xc9, 0xc4, 0xbe, 0x33, 0x2b, 0xa9,
+  0x5b, 0x22, 0x31, 0x7b, 0xac, 0x98, 0xf4, 0x9b, 0x2a, 0x9f, 0x2f, 0xeb,
+  0x1d, 0x5f, 0x19, 0xed, 0x3b, 0xbb, 0x16, 0x23, 0x06, 0xf6, 0x01, 0x5b,
+  0x0c, 0xe3, 0xa4, 0x33, 0x9b, 0x9d, 0xe6, 0x78, 0x6e, 0x7b, 0x64, 0x22,
+  0xe7, 0x46, 0x84, 0xb2, 0xfe, 0x08, 0x0f, 0x90, 0xd1, 0x16, 0xe5, 0x2c,
+  0x1b, 0xc5, 0x36, 0x1f, 0xe3, 0x5e, 0xc8, 0xaf, 0x32, 0x72, 0x6f, 0x9b,
+  0xe3, 0xdd, 0x4c, 0xcd, 0x6d, 0xe1, 0x09, 0x0a, 0xbb, 0xe2, 0x45, 0x76,
+  0x55, 0x36, 0x24, 0xa0, 0x83, 0x6d, 0xf2, 0x01, 0x1b, 0xdf, 0xee, 0x09,
+  0xd5, 0x84, 0xfc, 0x6b, 0x2a, 0x67, 0x15, 0xc5, 0x7c, 0x9a, 0x35, 0x21,
+  0x31, 0xc2, 0xea, 0xc6, 0xec, 0xc0, 0xee, 0xaa, 0x9b, 0xd6, 0xc6, 0x19,
+  0xd4, 0x51, 0xdc, 0xa5, 0x7a, 0x95, 0xab, 0x0e, 0x34, 0x22, 0x93, 0x8d,
+  0xcc, 0xe3, 0xdb, 0x7c, 0x9c, 0xa9, 0x87, 0x42, 0xdc, 0x76, 0xd3, 0x3c,
+  0xdc, 0xfb, 0xb3, 0x45, 0x0d, 0xab, 0x89, 0xd5, 0x14, 0x32, 0x28, 0x6f,
+  0x73, 0x52, 0x63, 0x8e, 0x2f, 0xe5, 0xac, 0xd2, 0x2d, 0xca, 0xe7, 0x23,
+  0xad, 0x72, 0x58, 0xcf, 0xa6, 0x39, 0xe9, 0xa7, 0x67, 0xe4, 0xa8, 0xdd,
+  0xe6, 0xfa, 0x8d, 0xf7, 0x45, 0xb3, 0x73, 0x1a, 0x1d, 0x0c, 0xc9, 0xcb,
+  0x34, 0x9f, 0x46, 0xe6, 0x09, 0x0a, 0xaa, 0xb1, 0x48, 0xaf, 0xb3, 0x4a,
+  0xd6, 0x60, 0x41, 0x93, 0x4e, 0xa1, 0x88, 0xe0, 0xe9, 0x61, 0x96, 0xb1,
+  0x8a, 0x05, 0x7d, 0xec, 0xee, 0xde, 0x4e, 0x2f, 0xee, 0x31, 0x5e, 0x3b,
+  0xf9, 0x3b, 0x2f, 0x9f, 0x77, 0x3c, 0x53, 0x6a, 0x35, 0x9d, 0x93, 0xcf,
+  0xbd, 0x7b, 0x42, 0x49, 0x1b, 0xa5, 0xb0, 0xcd, 0x96, 0x3a, 0xd5, 0x32,
+  0x71, 0x29, 0xda, 0x70, 0x07, 0x84, 0x03, 0x45, 0x17, 0xe4, 0x08, 0x73,
+  0x3b, 0xa2, 0x29, 0x75, 0x9a, 0x33, 0xaa, 0x19, 0xf9, 0x09, 0x61, 0x84,
+  0xb7, 0x76, 0xac, 0x31, 0x88, 0x2b, 0xeb, 0x74, 0x27, 0x27, 0x18, 0xcd,
+  0xb7, 0xea, 0x9e, 0x38, 0xb3, 0x78, 0xa9, 0xd3, 0x1c, 0x69, 0xc3, 0xa4,
+  0x3a, 0x98, 0x43, 0x93, 0xd3, 0x7e, 0xc4, 0x26, 0x50, 0xbf, 0xab, 0xd9,
+  0xbe, 0xec, 0x19, 0x53, 0xb9, 0xca, 0xca, 0x06, 0xba, 0x7b, 0x39, 0x4d,
+  0xaf, 0xcc, 0xbe, 0xeb, 0x34, 0x97, 0x5f, 0x19, 0x1b, 0x97, 0xa3, 0x1f,
+  0x75, 0x69, 0x6e, 0x0f, 0x1a, 0xb7, 0xd8, 0xfb, 0xc6, 0xdc, 0x33, 0xdb,
+  0x6c, 0xba, 0x80, 0x04, 0x3c, 0x35, 0x03, 0x1c, 0x0e, 0xbf, 0xd9, 0xf2,
+  0x05, 0x1c, 0xe6, 0xf7, 0x31, 0xe2, 0x0d, 0xf2, 0x09, 0xa6, 0x49, 0xf2,
+  0x15, 0xd6, 0xa4, 0x2b, 0xe5, 0x78, 0xa5, 0x23, 0x93, 0xa7, 0x13, 0x41,
+  0x2e, 0xa2, 0x81, 0x08, 0x00, 0x48, 0x00, 0x4c, 0x93, 0x7a, 0xab, 0x78,
+  0x87, 0x93, 0x17, 0x81, 0xaf, 0x69, 0xf3, 0xb7, 0x45, 0xbd, 0x20, 0xc3,
+  0xbd, 0xd3, 0xdc, 0xdc, 0x08, 0xb2, 0xc6, 0x18, 0x6f, 0x46, 0x22, 0x2d,
+  0x0a, 0xfa, 0xd3, 0x6a, 0x17, 0x39, 0xf4, 0x5c, 0x5a, 0x92, 0x8a, 0x9c,
+  0x83, 0x64, 0x21, 0xd8, 0xbb, 0xd9, 0x88, 0x16, 0x69, 0xb9, 0xbb, 0xb4,
+  0x70, 0x9f, 0x50, 0xa4, 0x04, 0x62, 0x67, 0x92, 0x53, 0x94, 0x8d, 0x0e,
+  0xde, 0x12, 0x29, 0xbe, 0x59, 0x2f, 0x8c, 0x9c, 0x21, 0xad, 0x8a, 0x85,
+  0x48, 0x20, 0x40, 0x54, 0xc8, 0x18, 0x05, 0xce, 0x93, 0x26, 0x5b, 0xbf,
+  0xf5, 0x31, 0xc1, 0xc2, 0xf9, 0x2b, 0x39, 0x36, 0xfa, 0xac, 0xd1, 0x54,
+  0x5f, 0xd1, 0x7e, 0x0b, 0xb4, 0x80, 0x8b, 0x93, 0x61, 0x6c, 0x41, 0xdb,
+  0x8e, 0x7b, 0x7a, 0x9f, 0x44, 0x2e, 0xf9, 0x57, 0xd8, 0xdf, 0x54, 0x92,
+  0xb6, 0xe4, 0x39, 0xef, 0x7d, 0x47, 0xc8, 0x3c, 0x23, 0x2f, 0x3f, 0x1b,
+  0x12, 0x1c, 0x15, 0x24, 0x31, 0x66, 0xd4, 0xa8, 0x86, 0xd4, 0x08, 0xeb,
+  0x5b, 0x3a, 0x3c, 0xf0, 0xdb, 0x85, 0x33, 0xa9, 0xbb, 0x41, 0xbc, 0xdf,
+  0x6f, 0xd6, 0x5b, 0x56, 0x92, 0x99, 0x56, 0xce, 0x8e, 0xde, 0x41, 0xb1,
+  0x4f, 0xcd, 0xc6, 0x79, 0xaf, 0x7e, 0x1c, 0x0d, 0xfa, 0x8d, 0x16, 0xf9,
+  0xb4, 0xe5, 0x2c, 0x75, 0xb6, 0x08, 0x22, 0x6e, 0xbc, 0xaf, 0xd0, 0x35,
+  0x76, 0xfb, 0xe7, 0xf0, 0x9b, 0x75, 0x77, 0x59, 0x73, 0x3f, 0x17, 0x97,
+  0xdf, 0xa2, 0x6e, 0x59, 0xd6, 0x7a, 0x3b, 0x4f, 0x1b, 0x28, 0x1f, 0xa4,
+  0xf0, 0x7b, 0x6d, 0x06, 0x2b, 0x84, 0x6e, 0xd1, 0x65, 0x70, 0x55, 0xe4,
+  0xff, 0x10, 0xdf, 0x42, 0x56, 0xdc, 0xe4, 0x55, 0x59, 0x90, 0xaa, 0x62,
+  0x6c, 0x82, 0x2a, 0x87, 0x70, 0x26, 0x75, 0xd7, 0x88, 0x8f, 0x8d, 0xc3,
+  0x0f, 0xe7, 0x27, 0x1f, 0x0f, 0x0f, 0x3e, 0x7e, 0xf5, 0xe1, 0xfd, 0x9b,
+  0x93, 0xa3, 0x8d, 0xee, 0xa1, 0xbe, 0x64, 0xb1, 0x40, 0x07, 0xa5, 0x26,
+  0x85, 0x0c, 0x27, 0xc4, 0x74, 0x91, 0x5b, 0xbe, 0xca, 0x6f, 0x8c, 0x58,
+  0x83, 0x6a, 0x05, 0xe7, 0x25, 0xfe, 0x06, 0x73, 0x5f, 0x26, 0xbc, 0xd3,
+  0xdc, 0xc8, 0xdc, 0xc7, 0xa6, 0xd3, 0x7c, 0xfa, 0x64, 0xf0, 0x7a, 0x52,
+  0xc4, 0x9c, 0xd1, 0x0e, 0x06, 0x23, 0xa3, 0x25, 0xa6, 0xcb, 0x84, 0x54,
+  0x3a, 0x4f, 0x7b, 0xf6, 0xfc, 0x98, 0x8b, 0xc6, 0x28, 0x8f, 0xea, 0x39,
+  0x35, 0xd6, 0x59, 0xf9, 0x49, 0xc3, 0xaf, 0x46, 0xf3, 0x3c, 0x88, 0x2c,
+  0x77, 0xcd, 0xeb, 0xc2, 0x53, 0xb1, 0x41, 0x2d, 0x99, 0xfd, 0xdb, 0x97,
+  0x4e, 0x8e, 0xab, 0xc6, 0xa8, 0x7d, 0x59, 0x8e, 0x83, 0xa1, 0xe1, 0x25,
+  0x52, 0x8b, 0xe1, 0xb5, 0xe8, 0xea, 0x27, 0xc6, 0x28, 0xbc, 0xa7, 0x39,
+  0xa0, 0x46, 0x06, 0xd9, 0x5d, 0x86, 0x93, 0x27, 0x6f, 0x1d, 0x2e, 0x2a,
+  0x9c, 0xe5, 0xef, 0x8d, 0x4e, 0x42, 0x12, 0xf0, 0x0d, 0xdc, 0x1e, 0xe6,
+  0x05, 0x7d, 0xc8, 0x5c, 0x36, 0xdd, 0x8b, 0xaf, 0x9c, 0x52, 0xc0, 0x29,
+  0x85, 0x89, 0x09, 0x87, 0xc0, 0xd9, 0xc1, 0xc5, 0x37, 0xc1, 0x9c, 0x90,
+  0x98, 0x77, 0x58, 0x07, 0xd9, 0x8a, 0x30, 0x8c, 0xea, 0x46, 0x0e, 0xc8,
+  0xfb, 0xe1, 0x30, 0x41, 0x24, 0x7d, 0x9a, 0x8f, 0xaa, 0x94, 0xbe, 0x49,
+  0x3f, 0xa6, 0x9f, 0x9a, 0x6d, 0xdd, 0x69, 0xee, 0xec, 0xdb, 0xc3, 0xe1,
+  0x1f, 0x77, 0x77, 0x8d, 0xf2, 0x37, 0x59, 0x98, 0x79, 0xd9, 0x34, 0xaf,
+  0x14, 0xb5, 0x39, 0x99, 0xb3, 0x41, 0x5d, 0x6e, 0xe1, 0xf2, 0x86, 0xc6,
+  0x87, 0xeb, 0x21, 0xbd, 0x31, 0xb7, 0x2e, 0x76, 0x12, 0xcf, 0x31, 0xed,
+  0xe7, 0xae, 0x9a, 0xce, 0x0b, 0xac, 0x40, 0x03, 0x23, 0x31, 0xcc, 0xbd,
+  0x3d, 0xbd, 0x0f, 0x46, 0xb1, 0x99, 0x9f, 0x0e, 0x25, 0x4c, 0x9f, 0x8e,
+  0xcd, 0x5f, 0xc9, 0x86, 0xda, 0xa2, 0xb1, 0xb5, 0xcf, 0x98, 0x8e, 0x6b,
+  0xc8, 0x5a, 0xe9, 0x05, 0xb9, 0x38, 0x81, 0x2e, 0x08, 0xe5, 0x42, 0xd1,
+  0x3d, 0x5e, 0x0e, 0xc1, 0x81, 0xce, 0x8e, 0xd2, 0xf1, 0xa7, 0xdb, 0xb4,
+  0x9a, 0xb0, 0xc3, 0xc4, 0xec, 0x99, 0x51, 0x3e, 0xcd, 0x9b, 0x7b, 0xbe,
+  0x3d, 0xba, 0xa3, 0xe0, 0xd0, 0x11, 0x4d, 0xa1, 0x39, 0x49, 0x57, 0xc6,
+  0x16, 0x22, 0x2d, 0x94, 0x2c, 0x44, 0x73, 0x30, 0x3c, 0x5d, 0x1f, 0xaa,
+  0x52, 0x63, 0x55, 0x1d, 0xfb, 0xed, 0x4e, 0x73, 0x70, 0x3f, 0xd1, 0x49,
+  0x42, 0x37, 0xdd, 0xee, 0x55, 0x41, 0xe8, 0x8b, 0x29, 0xdd, 0x40, 0x49,
+  0x7d, 0x6f, 0x6e, 0xfb, 0x59, 0x12, 0x51, 0x15, 0x01, 0xac, 0x48, 0xbe,
+  0xcd, 0xee, 0x8d, 0x61, 0x91, 0x17, 0x4e, 0x56, 0xb2, 0x8f, 0x28, 0x23,
+  0x4b, 0x95, 0x75, 0xd2, 0x5c, 0xfd, 0x8c, 0x99, 0xb8, 0x8a, 0xf9, 0x26,
+  0x09, 0x2d, 0x2b, 0x7e, 0x5f, 0xf5, 0x71, 0x6a, 0x62, 0xa3, 0x6e, 0x09,
+  0x65, 0x7c, 0x29, 0x5c, 0xc4, 0xa1, 0xf9, 0xb9, 0xb1, 0xee, 0xa6, 0xdb,
+  0xdf, 0xe7, 0x05, 0x4d, 0x16, 0xaf, 0xe2, 0xc5, 0xb2, 0x75, 0xe0, 0x85,
+  0x90, 0x67, 0x93, 0xbc, 0x7b, 0x21, 0x7e, 0x2f, 0x27, 0x3d, 0xf9, 0x0c,
+  0x01, 0xd0, 0x84, 0x10, 0x13, 0x72, 0x3f, 0x29, 0xb4, 0xe2, 0xb3, 0xc1,
+  0xf3, 0x1d, 0x04, 0x47, 0xe9, 0x57, 0x83, 0xce, 0x97, 0xba, 0x6a, 0x6e,
+  0x6b, 0xfd, 0xed, 0xf2, 0x47, 0x56, 0x3f, 0xba, 0xe0, 0x9f, 0x77, 0xc5,
+  0xa2, 0x68, 0x5f, 0xec, 0xf7, 0xf5, 0x75, 0x6f, 0xb9, 0xd2, 0xa4, 0xfb,
+  0x1b, 0x46, 0x79, 0x2d, 0x2b, 0x58, 0xd5, 0x55, 0x69, 0x16, 0x5e, 0xa6,
+  0xb1, 0x2b, 0x3c, 0x78, 0xb1, 0x37, 0x69, 0xbe, 0xad, 0x70, 0x37, 0xdd,
+  0xe4, 0xc9, 0xd9, 0x8a, 0x9d, 0xfa, 0x40, 0x47, 0x81, 0x77, 0x8a, 0x63,
+  0xfd, 0xe4, 0xdd, 0xaf, 0xf9, 0x98, 0x4f, 0xd3, 0xba, 0x81, 0xf9, 0x86,
+  0x2d, 0x26, 0x4e, 0xa0, 0xf6, 0x75, 0x0d, 0x91, 0xfd, 0xca, 0xc8, 0xb4,
+  0x7f, 0xfe, 0xb6, 0x66, 0xc9, 0x08, 0x49, 0x18, 0x5e, 0x60, 0xb2, 0x2d,
+  0x5b, 0xb7, 0xf6, 0x3b, 0xbd, 0x9e, 0xa9, 0x13, 0xd6, 0x51, 0x35, 0xe7,
+  0xb0, 0x2a, 0x6b, 0x92, 0xec, 0x71, 0x0b, 0x2d, 0x03, 0x72, 0x9a, 0x88,
+  0x63, 0x66, 0x7f, 0x3d, 0xd9, 0xcc, 0x06, 0x57, 0xa6, 0xbd, 0x75, 0x6a,
+  0x67, 0x77, 0x9f, 0xfe, 0xbb, 0x87, 0xff, 0x3e, 0x59, 0x57, 0x00, 0x94,
+  0x7f, 0xaa, 0xe8, 0x6a, 0xef, 0x5e, 0x4c, 0x12, 0xb5, 0xa0, 0xab, 0x5e,
+  0xee, 0x7a, 0xb9, 0xeb, 0xe8, 0x0a, 0x8c, 0xcb, 0x21, 0x56, 0x64, 0x4f,
+  0x7a, 0x11, 0x65, 0xd3, 0x4d, 0x04, 0xd4, 0x08, 0xb8, 0x01, 0x46, 0xe4,
+  0xe1, 0x33, 0x63, 0x1b, 0x1b, 0x65, 0x11, 0xce, 0x16, 0x8e, 0x01, 0x02,
+  0x4d, 0xf0, 0xb1, 0xca, 0xae, 0xd3, 0xda, 0xec, 0xbd, 0x45, 0x83, 0xad,
+  0x18, 0xd9, 0xbd, 0xd3, 0xdc, 0x7a, 0xb7, 0xe4, 0xc3, 0x03, 0x6b, 0x0b,
+  0xca, 0x2a, 0xb2, 0x9f, 0x78, 0x5a, 0xde, 0xea, 0x13, 0x7d, 0x41, 0x24,
+  0xc5, 0x74, 0x04, 0xb3, 0x9a, 0x00, 0x35, 0xd1, 0x63, 0x7e, 0xbc, 0x6f,
+  0x46, 0x8a, 0x25, 0xc1, 0xa5, 0xcc, 0xe6, 0xbf, 0x34, 0x33, 0x46, 0x46,
+  0xde, 0x14, 0xeb, 0x46, 0xe6, 0x2c, 0x7a, 0x1d, 0x28, 0x9b, 0xa2, 0xf4,
+  0xe5, 0x97, 0xe2, 0xe3, 0x92, 0x7f, 0xe3, 0x72, 0x15, 0x55, 0xac, 0xe6,
+  0x98, 0x60, 0x57, 0x0f, 0x7b, 0x78, 0x6b, 0xab, 0xac, 0xb4, 0x27, 0x43,
+  0x06, 0xcb, 0x6e, 0x65, 0xdd, 0xd7, 0x62, 0x7c, 0xc4, 0x7c, 0x1a, 0xa6,
+  0x57, 0x7c, 0x4c, 0x7f, 0xfd, 0x21, 0x31, 0x3d, 0xee, 0x93, 0x47, 0x69,
+  0x51, 0x3f, 0xe2, 0x8c, 0x78, 0xf2, 0x97, 0xdf, 0xb1, 0x3e, 0x35, 0x8e,
+  0x7d, 0xfa, 0x13, 0xd0, 0xdd, 0x85, 0xf7, 0x9e, 0x5f, 0xeb, 0xd0, 0x3b,
+  0x59, 0x43, 0x6e, 0xe8, 0x5c, 0xbc, 0x26, 0x9b, 0xe9, 0xa7, 0x74, 0x90,
+  0x9c, 0x1e, 0x0e, 0xcf, 0xe8, 0x13, 0x66, 0x6b, 0x14, 0x57, 0xa6, 0x17,
+  0x27, 0xc3, 0x4e, 0x73, 0xd9, 0x5d, 0x93, 0x15, 0x75, 0x0b, 0xc2, 0xb7,
+  0x74, 0x9a, 0xd5, 0xd7, 0xaa, 0x20, 0x04, 0xe9, 0xac, 0x31, 0xfe, 0x11,
+  0x3d, 0xa4, 0x60, 0x18, 0x45, 0xaa, 0x13, 0x3e, 0x6a, 0xc1, 0x87, 0xe6,
+  0x66, 0xc3, 0x4f, 0xb6, 0xac, 0xf7, 0xa6, 0xa7, 0x7b, 0xc1, 0x06, 0x55,
+  0xea, 0xc5, 0x15, 0x19, 0x24, 0xb5, 0x9a, 0x91, 0xf6, 0x0b, 0x66, 0x36,
+  0x02, 0x5d, 0x4a, 0x87, 0x6d, 0xce, 0x04, 0x1f, 0x1b, 0x63, 0x41, 0x11,
+  0xde, 0x04, 0xfa, 0x52, 0x51, 0xba, 0x56, 0xc9, 0x68, 0x02, 0xb6, 0x2e,
+  0x47, 0x18, 0x62, 0x9c, 0x19, 0x7d, 0x74, 0x12, 0xd1, 0x07, 0x78, 0x51,
+  0xd4, 0x86, 0xba, 0x14, 0x3c, 0x5d, 0xc4, 0x25, 0x84, 0x86, 0xc6, 0xac,
+  0xaf, 0xd1, 0xae, 0x87, 0x3b, 0x37, 0x27, 0xff, 0x37, 0x69, 0xcf, 0x6c,
+  0xbd, 0x53, 0x7b, 0xf6, 0xec, 0x7f, 0x5d, 0x2c, 0xcc, 0xc4, 0x47, 0x2e,
+  0x66, 0xd2, 0xb0, 0xe8, 0x9e, 0xa1, 0x09, 0x5c, 0xe5, 0xeb, 0x7b, 0xba,
+  0xdb, 0xf6, 0xf5, 0x61, 0xb3, 0x19, 0x6b, 0x20, 0x4b, 0x5e, 0xd1, 0x7f,
+  0x1f, 0x94, 0xca, 0x08, 0xf0, 0xfb, 0x52, 0x18, 0xef, 0x4a, 0x84, 0x88,
+  0xe5, 0xe8, 0x8a, 0x1d, 0x07, 0xec, 0xc0, 0x80, 0xc4, 0x5e, 0x2f, 0x79,
+  0x73, 0x74, 0x8e, 0xe5, 0x3f, 0x7a, 0xff, 0x35, 0xdc, 0xef, 0xd6, 0x8a,
+  0x98, 0xa0, 0xcd, 0x9a, 0xdd, 0x0a, 0x1c, 0x3e, 0x13, 0xf1, 0xdf, 0x9d,
+  0x6a, 0x12, 0x9f, 0x14, 0x35, 0x01, 0xb8, 0x62, 0xf2, 0xfb, 0x5d, 0x5c,
+  0x81, 0x39, 0x7a, 0xd4, 0x93, 0xa9, 0x13, 0x27, 0xcd, 0xa7, 0xec, 0xde,
+  0xfd, 0x0d, 0xd3, 0xe9, 0xcd, 0xb1, 0x7b, 0xf8, 0x95, 0x37, 0x33, 0x3f,
+  0xee, 0x13, 0x80, 0xc3, 0x68, 0xaa, 0x93, 0x9f, 0x7f, 0xdd, 0x55, 0x28,
+  0x1e, 0xb1, 0xa4, 0x7d, 0x27, 0x46, 0x1c, 0x2f, 0xf0, 0x79, 0x29, 0x54,
+  0x82, 0x23, 0xa3, 0x2c, 0xd8, 0x05, 0x2d, 0x4c, 0x40, 0x62, 0xda, 0xe9,
+  0x69, 0xc1, 0xaa, 0x08, 0x89, 0x68, 0xc6, 0xc7, 0x00, 0x2f, 0x13, 0x68,
+  0x0f, 0xe5, 0x34, 0xb8, 0xe4, 0x5a, 0xe6, 0x2b, 0xb4, 0xfa, 0x3d, 0xb9,
+  0xd6, 0x60, 0xd2, 0xc9, 0xe5, 0xc3, 0x9a, 0x74, 0xf7, 0x1c, 0x58, 0xbd,
+  0x9a, 0x35, 0x2f, 0xef, 0x4a, 0x4c, 0xbc, 0x97, 0x11, 0x09, 0x44, 0xf7,
+  0x58, 0x47, 0x1a, 0xc8, 0xf2, 0x66, 0x51, 0x23, 0xc0, 0xac, 0xae, 0xce,
+  0xae, 0x59, 0x76, 0xf2, 0x3a, 0xb9, 0x3d, 0xc4, 0x21, 0x16, 0x5e, 0x66,
+  0x23, 0xdf, 0xaa, 0x5c, 0xb4, 0x34, 0x86, 0x07, 0x76, 0x0f, 0xb3, 0x06,
+  0x64, 0xc5, 0x2b, 0x25, 0x9e, 0x13, 0x6c, 0x2b, 0xdd, 0x57, 0xbc, 0xfd,
+  0xc8, 0x1e, 0x5d, 0xf7, 0xa6, 0x64, 0x3d, 0xb6, 0x14, 0x0d, 0xc7, 0x86,
+  0xe4, 0xbc, 0xe4, 0x37, 0x34, 0x75, 0xba, 0x77, 0x9c, 0x93, 0xb3, 0xad,
+  0xfe, 0x96, 0x05, 0xfd, 0x59, 0x90, 0x73, 0xec, 0x0f, 0x91, 0x0d, 0x19,
+  0xdd, 0x8b, 0xe4, 0x27, 0x97, 0xb8, 0x19, 0x34, 0x17, 0xc2, 0x88, 0x09,
+  0x48, 0x37, 0x62, 0x10, 0xc5, 0xcc, 0x3a, 0xd5, 0x3a, 0xd4, 0x7a, 0xf3,
+  0x4c, 0xba, 0xc0, 0xe2, 0x09, 0xd4, 0x4b, 0xf3, 0x5b, 0x8a, 0xb8, 0xf3,
+  0xde, 0x25, 0x3f, 0x6c, 0x3e, 0xfe, 0x04, 0x60, 0x95, 0x5c, 0x4d, 0x2d,
+  0xf9, 0x21, 0xb0, 0x26, 0x06, 0xe4, 0x45, 0x96, 0x00, 0x16, 0x25, 0x39,
+  0x88, 0x69, 0x4f, 0xd2, 0xb5, 0x9c, 0x17, 0xac, 0xac, 0x2d, 0xf5, 0x35,
+  0x98, 0xbe, 0x7e, 0x7c, 0x73, 0x7c, 0x9e, 0x6c, 0x92, 0xee, 0xdd, 0x55,
+  0x6e, 0xf4, 0x5e, 0xdf, 0xce, 0x9a, 0xf1, 0xf6, 0xfc, 0x53, 0xbe, 0x6d,
+  0x4c, 0xce, 0xc9, 0x68, 0xcb, 0x1a, 0x52, 0xf8, 0x1c, 0x36, 0xa1, 0x9a,
+  0xa7, 0x6a, 0x9f, 0xc2, 0x40, 0xed, 0x9e, 0x06, 0xcf, 0x60, 0xe5, 0x04,
+  0x00, 0x67, 0xa7, 0x62, 0x9a, 0xd8, 0x9b, 0x03, 0x3c, 0x10, 0x07, 0x8f,
+  0x13, 0x72, 0xc4, 0x66, 0xec, 0xa3, 0x36, 0x96, 0x76, 0xf7, 0xac, 0x32,
+  0x38, 0x4c, 0xdc, 0x39, 0xec, 0xc6, 0x51, 0x44, 0x93, 0xdc, 0x13, 0x4e,
+  0xdb, 0xeb, 0x11, 0x16, 0x8d, 0x26, 0x65, 0x4e, 0x77, 0xd1, 0x84, 0x7c,
+  0x81, 0xdd, 0xe6, 0x60, 0x61, 0xac, 0x0f, 0xb6, 0xd7, 0x13, 0x8b, 0xbe,
+  0x33, 0xb3, 0xcc, 0xf0, 0x52, 0x0b, 0x77, 0x34, 0x5b, 0xec, 0x72, 0x51,
+  0xb3, 0x7f, 0x9b, 0x5c, 0x2b, 0x76, 0xbd, 0x06, 0x31, 0x81, 0xea, 0x2d,
+  0xa7, 0x55, 0xb6, 0x8c, 0x52, 0x8c, 0x73, 0x65, 0x6d, 0xf6, 0x91, 0xed,
+  0x14, 0x96, 0x6a, 0xfd, 0xa7, 0xf5, 0xc4, 0x43, 0x6f, 0xb5, 0xbc, 0x90,
+  0xb9, 0xc3, 0x57, 0x78, 0x57, 0x80, 0xb9, 0x8a, 0xed, 0x09, 0x9e, 0x64,
+  0xd3, 0x7c, 0x96, 0xc3, 0xea, 0xf2, 0xbb, 0x10, 0x2c, 0x45, 0xbb, 0x4b,
+  0x3f, 0x85, 0x5d, 0x52, 0x44, 0x64, 0x4a, 0xbf, 0x36, 0x5d, 0x82, 0x5f,
+  0x8c, 0x01, 0x6b, 0x71, 0xcb, 0xb9, 0xdd, 0x21, 0x8b, 0xa9, 0x5c, 0x11,
+  0x56, 0xfb, 0x7d, 0x9c, 0x0b, 0xed, 0x23, 0x53, 0x37, 0x40, 0x6e, 0xd1,
+  0x39, 0x13, 0x7f, 0xd1, 0x88, 0x2f, 0x07, 0x3d, 0x63, 0xe9, 0x2a, 0xcb,
+  0x6f, 0x5b, 0x05, 0x0f, 0x24, 0x8f, 0x7a, 0x9a, 0xd8, 0xe2, 0x37, 0x07,
+  0x06, 0x16, 0xfe, 0x27, 0x31, 0xf0, 0xa1, 0x01, 0x41, 0x58, 0xb1, 0xa7,
+  0xad, 0xab, 0xef, 0xaa, 0xb0, 0xef, 0x67, 0xc5, 0xb8, 0x9c, 0x74, 0xec,
+  0x33, 0x9a, 0x04, 0x4f, 0xc8, 0x61, 0xc7, 0x73, 0xa8, 0x0a, 0xbb, 0x3c,
+  0xee, 0xc3, 0x24, 0xe7, 0x19, 0x3b, 0x56, 0x7f, 0xd1, 0xbe, 0x8f, 0x79,
+  0x52, 0xb0, 0xed, 0x7f, 0xd5, 0xae, 0x7f, 0x9c, 0xaf, 0xe1, 0x30, 0x10,
+  0xd6, 0xb5, 0xbd, 0x07, 0xbd, 0x6b, 0x3a, 0x90, 0x40, 0xa9, 0x46, 0x87,
+  0x8d, 0x1e, 0x4b, 0x90, 0x1a, 0xc4, 0x11, 0xe0, 0xc5, 0x6c, 0x2f, 0x32,
+  0x72, 0x48, 0x36, 0x4f, 0x38, 0x52, 0x95, 0x9c, 0xbd, 0xfd, 0x41, 0x8e,
+  0xc9, 0x32, 0x5f, 0xc3, 0xe7, 0x16, 0x33, 0x61, 0x34, 0x48, 0xc2, 0x6f,
+  0xe4, 0x82, 0x85, 0x12, 0xaf, 0x00, 0xc7, 0x44, 0x8d, 0xa4, 0xf3, 0x10,
+  0xe3, 0x66, 0xca, 0xbb, 0xb3, 0xf6, 0x4a, 0x9e, 0x9e, 0x96, 0xac, 0xbf,
+  0x7e, 0xf1, 0x93, 0xfc, 0x84, 0xe6, 0xc6, 0xfc, 0xa3, 0xb9, 0x5e, 0xcc,
+  0x46, 0x66, 0x5d, 0x8b, 0xe6, 0x8b, 0x75, 0x8e, 0xb9, 0x5d, 0xca, 0xb4,
+  0xae, 0x54, 0xae, 0xdb, 0x1b, 0xad, 0x35, 0x69, 0x68, 0xbe, 0xd7, 0x46,
+  0xda, 0xac, 0xb3, 0x17, 0x33, 0x68, 0xee, 0x83, 0xd9, 0x9e, 0x3f, 0xbd,
+  0xfb, 0xeb, 0x4f, 0x2f, 0x9f, 0x3c, 0x4d, 0x3f, 0x4b, 0xc7, 0xcf, 0x2f,
+  0x5f, 0xa4, 0xcf, 0x26, 0xcf, 0x3e, 0x7b, 0xb9, 0xf7, 0xe2, 0x59, 0xfa,
+  0xd9, 0xd3, 0xcb, 0xf4, 0xf9, 0x6e, 0xb6, 0xfb, 0xf2, 0x72, 0xef, 0xc9,
+  0x64, 0x72, 0x99, 0xbd, 0x98, 0x7c, 0x96, 0xae, 0x0f, 0xa0, 0x6b, 0x6b,
+  0x97, 0x43, 0x7d, 0x54, 0xe2, 0x2d, 0xa6, 0xf7, 0xc3, 0x6f, 0x0e, 0xfa,
+  0xbb, 0xc9, 0x75, 0x76, 0xa7, 0x07, 0x8c, 0x3d, 0x59, 0x16, 0x88, 0x92,
+  0x89, 0xd1, 0xbe, 0x5c, 0xbd, 0xd5, 0xdc, 0x19, 0x02, 0x12, 0x92, 0x61,
+  0x0c, 0xad, 0x87, 0x27, 0x4f, 0x67, 0x93, 0xa1, 0x26, 0x76, 0xcd, 0xf6,
+  0xd5, 0x5b, 0x4b, 0xe3, 0xea, 0x1e, 0xfe, 0x13, 0xf3, 0xce, 0xf4, 0x5d,
+  0x3a, 0x36, 0x17, 0xa3, 0x99, 0x11, 0x79, 0x70, 0x68, 0xec, 0x98, 0x7c,
+  0x6c, 0xfe, 0x2d, 0x7f, 0x21, 0xef, 0xa0, 0xd7, 0xc6, 0xd7, 0x55, 0xb9,
+  0x98, 0x9f, 0x95, 0xd3, 0x7c, 0x7c, 0xbf, 0xaa, 0x39, 0xff, 0xb1, 0xd6,
+  0x2f, 0x8e, 0x08, 0x0d, 0x3e, 0xa7, 0x58, 0xe9, 0xbf, 0x50, 0x9d, 0xf6,
+  0xac, 0x90, 0x47, 0xe8, 0xd3, 0xfd, 0x71, 0x3e, 0xbf, 0xa6, 0x28, 0xdf,
+  0x2b, 0x00, 0x5f, 0xc8, 0x29, 0xcf, 0x3f, 0x88, 0xeb, 0xd1, 0x43, 0x39,
+  0x8a, 0xb5, 0xac, 0xa7, 0xbe, 0x2d, 0xb7, 0x6c, 0xae, 0x59, 0x21, 0xea,
+  0x93, 0x10, 0xb0, 0x55, 0x1e, 0x38, 0x6d, 0xdc, 0x87, 0xf8, 0x98, 0xab,
+  0x86, 0xc5, 0x96, 0xaa, 0xfc, 0x6a, 0x60, 0xac, 0x66, 0x8a, 0x93, 0x2e,
+  0xe6, 0x0c, 0xfa, 0x85, 0x5b, 0x8f, 0x7f, 0xd7, 0x69, 0x0e, 0x9d, 0x97,
+  0x1d, 0xc3, 0xca, 0xa7, 0x99, 0xd1, 0x0f, 0xe7, 0x27, 0xfb, 0xdd, 0x79,
+  0x02, 0xfe, 0xbe, 0xde, 0xdf, 0xde, 0x86, 0xb3, 0xff, 0x3a, 0xbd, 0xbb,
+  0x1b, 0xd4, 0xd9, 0xf6, 0xa4, 0x1c, 0xd7, 0xdb, 0x75, 0x3d, 0xd5, 0xd9,
+  0x68, 0xa7, 0xc3, 0xfc, 0x0e, 0xae, 0xbb, 0x72, 0x06, 0x69, 0x95, 0x4d,
+  0xfa, 0x75, 0x1d, 0x60, 0x43, 0x86, 0x87, 0x1a, 0x79, 0x3e, 0x2a, 0x18,
+  0x65, 0x8a, 0x7b, 0xae, 0x6f, 0x66, 0x77, 0x38, 0xfc, 0x26, 0xd1, 0x97,
+  0x31, 0xbd, 0x16, 0x0d, 0x61, 0x71, 0x19, 0xbd, 0xc8, 0xd5, 0x9b, 0x8a,
+  0xc0, 0xfe, 0xdc, 0xb7, 0xde, 0x49, 0x85, 0x2a, 0xf9, 0x0f, 0x81, 0x73,
+  0xe7, 0xcd, 0x4a, 0x64, 0xcb, 0xf3, 0x8e, 0xb5, 0x6b, 0x07, 0x11, 0x8f,
+  0xfe, 0xaa, 0xc7, 0x23, 0x4d, 0xdc, 0x93, 0xce, 0xfc, 0xef, 0xe6, 0x6b,
+  0x9a, 0xdd, 0x7b, 0x55, 0x56, 0xe6, 0xf2, 0x98, 0xd5, 0x31, 0x97, 0x97,
+  0x9e, 0xf2, 0x5a, 0x5d, 0x7b, 0x35, 0xf9, 0xe5, 0xd8, 0x05, 0xb7, 0x28,
+  0xbc, 0x0f, 0x98, 0xa5, 0x04, 0xb0, 0x67, 0x60, 0x17, 0x2c, 0x1e, 0xd9,
+  0xd0, 0xe5, 0xeb, 0x38, 0x4d, 0xc4, 0x6b, 0x92, 0x40, 0x9e, 0x17, 0x9e,
+  0xcb, 0x1b, 0x97, 0xb2, 0xe9, 0x72, 0x2f, 0xd6, 0x3b, 0xac, 0x73, 0x95,
+  0xe1, 0xa2, 0x20, 0x45, 0xa2, 0xaa, 0x4a, 0x4f, 0x9b, 0xe9, 0x7f, 0x0b,
+  0xab, 0xc2, 0x5c, 0x91, 0xf9, 0x95, 0x46, 0x57, 0xbb, 0xc7, 0x57, 0xb6,
+  0x3f, 0x5d, 0x30, 0x0d, 0x30, 0x7d, 0x92, 0x26, 0x49, 0x57, 0x82, 0x39,
+  0x02, 0x8c, 0x2f, 0x10, 0xcc, 0x12, 0x63, 0x42, 0x5a, 0xd9, 0xa1, 0xc1,
+  0x71, 0x20, 0x2c, 0xbc, 0x7b, 0x9c, 0xb0, 0x34, 0x7a, 0x38, 0xd1, 0xbc,
+  0xd8, 0xad, 0x6e, 0x77, 0x26, 0xa4, 0x93, 0xc1, 0x44, 0x34, 0xcf, 0x74,
+  0x2f, 0x59, 0xc0, 0xd0, 0xac, 0x4b, 0x22, 0x96, 0xfa, 0xd5, 0x1d, 0x8f,
+  0x42, 0x52, 0x75, 0x7a, 0x73, 0x24, 0x1b, 0xa6, 0xc0, 0xbb, 0xc6, 0x2e,
+  0xf6, 0xd2, 0x8b, 0xd1, 0x51, 0x83, 0x81, 0xcf, 0x9e, 0x33, 0x8e, 0x80,
+  0x43, 0x56, 0x04, 0x3f, 0x94, 0x61, 0x23, 0x86, 0xcc, 0xad, 0x47, 0x48,
+  0x4c, 0x4a, 0x31, 0x9d, 0x96, 0x4e, 0xcb, 0x32, 0xbb, 0xcf, 0x08, 0x44,
+  0x64, 0xe9, 0x0c, 0x02, 0xe1, 0xcd, 0x58, 0x7d, 0x46, 0x1d, 0x70, 0xce,
+  0x09, 0x5f, 0xe1, 0x6a, 0xf1, 0x4e, 0x61, 0x5d, 0x70, 0x88, 0xd4, 0x09,
+  0x35, 0x5a, 0xbf, 0x98, 0x4f, 0x40, 0xd0, 0xaa, 0x9c, 0x00, 0x94, 0x23,
+  0xb5, 0x4d, 0x92, 0xa1, 0x18, 0x7c, 0xab, 0xbe, 0xcc, 0xba, 0xec, 0x49,
+  0x53, 0x53, 0x0a, 0x80, 0x56, 0xd2, 0xc7, 0xee, 0x8e, 0xb2, 0x89, 0x4e,
+  0x3e, 0xfc, 0x93, 0xd6, 0xc7, 0x62, 0x58, 0xeb, 0x30, 0x54, 0xe5, 0x26,
+  0x33, 0x66, 0xb6, 0x04, 0x78, 0x60, 0x74, 0xa4, 0xca, 0xf4, 0x0b, 0x45,
+  0xd9, 0xed, 0x94, 0xf6, 0xa3, 0x1f, 0x1a, 0xf1, 0x16, 0xf3, 0xea, 0x75,
+  0x40, 0xb1, 0xaf, 0x76, 0x95, 0xe3, 0x37, 0x5e, 0xe6, 0x1e, 0x80, 0xe9,
+  0x5e, 0xda, 0x70, 0xbf, 0xbf, 0x90, 0xed, 0xe7, 0x64, 0xb7, 0x74, 0xfd,
+  0x96, 0xc5, 0x78, 0x5a, 0x2a, 0x66, 0xd8, 0xbc, 0xcf, 0x69, 0x67, 0x03,
+  0x8a, 0x3e, 0xb1, 0xf1, 0x2b, 0x2b, 0x20, 0xbf, 0xe8, 0x89, 0xac, 0xb8,
+  0x54, 0x5d, 0xa2, 0xdb, 0x1c, 0xdb, 0x22, 0xdd, 0x14, 0x4d, 0x67, 0x82,
+  0xee, 0x27, 0xc9, 0x4f, 0x3f, 0xf5, 0x12, 0x32, 0x84, 0x7e, 0x6a, 0xcc,
+  0xff, 0xcc, 0x46, 0xfb, 0x89, 0x51, 0xfa, 0x3f, 0xdd, 0x0c, 0x92, 0x6e,
+  0x84, 0x9a, 0xbc, 0x87, 0xf5, 0x94, 0xc2, 0x02, 0xac, 0x56, 0xb7, 0xbd,
+  0x2e, 0x9c, 0x12, 0x08, 0x07, 0x1e, 0xfb, 0xbe, 0x7d, 0xd4, 0x0f, 0x14,
+  0xcb, 0xd0, 0x4d, 0xb4, 0x98, 0x15, 0x62, 0x8d, 0xf0, 0x3e, 0xc4, 0x11,
+  0x87, 0xdc, 0xdf, 0xf8, 0xe3, 0x86, 0xdb, 0x33, 0x3d, 0x75, 0xdd, 0x36,
+  0x2a, 0x57, 0x23, 0xc7, 0x49, 0x0f, 0xbe, 0x26, 0xd0, 0x21, 0xfe, 0xcf,
+  0x71, 0x30, 0x23, 0x37, 0x4f, 0xc9, 0x6f, 0xca, 0x69, 0x10, 0xa5, 0x05,
+  0x8f, 0x22, 0x1b, 0x64, 0x7e, 0x7d, 0x5f, 0x53, 0x88, 0x3e, 0x26, 0x6d,
+  0xc2, 0x53, 0x32, 0x58, 0x2a, 0xe4, 0x1a, 0x45, 0x7c, 0xc0, 0xc6, 0xa2,
+  0x5d, 0xd0, 0x12, 0x91, 0xa6, 0x3b, 0x1b, 0xfd, 0x0d, 0x1b, 0xe5, 0x10,
+  0x58, 0x44, 0x80, 0x24, 0x55, 0x89, 0xe0, 0x21, 0xcd, 0x82, 0x4f, 0x7a,
+  0xe8, 0xa7, 0xd2, 0xc7, 0xb6, 0xb9, 0xe4, 0x4e, 0xca, 0xce, 0xd2, 0x50,
+  0xad, 0x7c, 0x5f, 0xe4, 0x4c, 0xc4, 0xa3, 0x00, 0x0c, 0x1c, 0xc2, 0xe8,
+  0xda, 0x00, 0xcc, 0x5d, 0xe7, 0xf8, 0xef, 0xf7, 0x91, 0x67, 0x3f, 0xe7,
+  0xdc, 0x78, 0xda, 0x1d, 0x08, 0x2f, 0xdf, 0x53, 0x26, 0xc4, 0x3c, 0x00,
+  0x22, 0x29, 0xee, 0x4b, 0x93, 0x0d, 0xe9, 0x20, 0x53, 0x42, 0xf6, 0x6d,
+  0x21, 0x09, 0xb5, 0xc3, 0x12, 0x66, 0xf7, 0x18, 0x81, 0x6a, 0x41, 0x45,
+  0x48, 0x4e, 0x45, 0xc4, 0xe4, 0xa3, 0xcb, 0x2e, 0x50, 0x78, 0xa8, 0x3f,
+  0xaf, 0x93, 0xf5, 0xe5, 0x6a, 0xcf, 0x7a, 0xf7, 0x0d, 0xc0, 0xdd, 0x9c,
+  0x0f, 0x4b, 0xf2, 0x45, 0xd1, 0x91, 0x4d, 0xc1, 0x4b, 0xf5, 0xff, 0xce,
+  0x60, 0x48, 0x4e, 0x69, 0x90, 0xab, 0x74, 0x8b, 0xd1, 0xa0, 0x75, 0x00,
+  0x87, 0xa8, 0x3c, 0x30, 0x8d, 0xb7, 0x3f, 0x1c, 0x1c, 0x25, 0x87, 0x67,
+  0x13, 0xb7, 0x14, 0xdf, 0x6a, 0xde, 0xd3, 0x5d, 0xf9, 0x63, 0xdf, 0x26,
+  0xc4, 0x35, 0x7d, 0x4f, 0x3c, 0x8e, 0x7a, 0x45, 0x58, 0x5b, 0x61, 0x3e,
+  0x45, 0x9e, 0xba, 0x62, 0xbd, 0xa1, 0xff, 0x04, 0xb3, 0xb3, 0xbb, 0x65,
+  0xb3, 0x83, 0x90, 0x6c, 0xce, 0x30, 0x5c, 0x51, 0x09, 0xd6, 0xaf, 0x4b,
+  0x86, 0x8c, 0xac, 0xef, 0x53, 0xe2, 0x0a, 0xa3, 0x60, 0x79, 0x8c, 0x9a,
+  0x06, 0xdc, 0x69, 0x0e, 0x80, 0x9c, 0x6f, 0x4e, 0xdf, 0x1d, 0xb5, 0xe1,
+  0x96, 0xf8, 0x49, 0xcc, 0xbb, 0x66, 0xe4, 0xd5, 0x5b, 0x23, 0x5f, 0x78,
+  0x0f, 0xa4, 0x81, 0xea, 0xc6, 0x7b, 0xcb, 0x74, 0xeb, 0x2a, 0x6b, 0xe6,
+  0xb7, 0x8b, 0x7c, 0xb2, 0xb9, 0x45, 0x7b, 0x84, 0xc0, 0xd6, 0x7d, 0x60,
+  0xfc, 0xd9, 0x00, 0xac, 0x93, 0x4d, 0xd6, 0xc6, 0xab, 0xac, 0x59, 0x54,
+  0x05, 0x7b, 0x44, 0xa9, 0xef, 0x61, 0x64, 0x53, 0xae, 0x34, 0xdf, 0x13,
+  0x20, 0x9c, 0x11, 0x8c, 0x54, 0xe1, 0x06, 0xb7, 0x48, 0x08, 0x68, 0x1c,
+  0x1c, 0x0b, 0x8f, 0xb1, 0x04, 0xf7, 0x94, 0x3f, 0x13, 0xc9, 0xc1, 0xd9,
+  0xd9, 0x9b, 0x83, 0x8b, 0x03, 0x3b, 0x36, 0x5c, 0xc4, 0x90, 0x2c, 0x50,
+  0x87, 0x8d, 0x48, 0x22, 0xed, 0x88, 0x9e, 0xdc, 0xf8, 0xd3, 0x87, 0xe1,
+  0xd1, 0x79, 0x77, 0x61, 0xcf, 0xce, 0x4f, 0x89, 0x90, 0xe3, 0x4f, 0x3f,
+  0x1d, 0x50, 0xc0, 0x54, 0xc2, 0x3d, 0x6f, 0xd2, 0x26, 0xdd, 0x08, 0x4e,
+  0xf5, 0xde, 0x16, 0xf5, 0xef, 0xd6, 0xf6, 0xef, 0x52, 0x2e, 0x33, 0x98,
+  0xf4, 0xc9, 0x47, 0x5a, 0xd0, 0x6a, 0xac, 0x58, 0x4b, 0x3b, 0x1b, 0x98,
+  0x00, 0x40, 0x25, 0x97, 0x0f, 0xa4, 0x74, 0x92, 0x4c, 0xf1, 0x42, 0x3a,
+  0x59, 0x53, 0x63, 0x4f, 0x67, 0xe3, 0x45, 0xa3, 0x5b, 0x1e, 0xfb, 0x8b,
+  0xb2, 0x18, 0xbb, 0xf3, 0x12, 0x2c, 0x8f, 0xf3, 0x92, 0xb3, 0x14, 0x40,
+  0x12, 0xad, 0xd9, 0x68, 0xc0, 0xc3, 0x0e, 0xa4, 0xb7, 0x2c, 0xc5, 0x62,
+  0xf1, 0xe8, 0x8c, 0xfd, 0xe6, 0x48, 0xaa, 0xe5, 0x2e, 0x05, 0x13, 0xf2,
+  0x47, 0x73, 0x1a, 0xfb, 0xc9, 0x91, 0x64, 0x7b, 0x60, 0xe0, 0xe6, 0x07,
+  0xc1, 0x43, 0x8d, 0xb5, 0x15, 0x44, 0xd8, 0xc7, 0x65, 0x85, 0x97, 0x68,
+  0xbe, 0xde, 0x55, 0x9e, 0x39, 0xb5, 0xcb, 0x3c, 0x44, 0xdd, 0xa6, 0x49,
+  0x87, 0xa9, 0xb4, 0x1e, 0x41, 0xb6, 0xf4, 0xd3, 0x2b, 0xda, 0x5e, 0xe6,
+  0x51, 0xa3, 0x45, 0x1b, 0x0b, 0x89, 0xfe, 0xb5, 0xbd, 0x3b, 0xd8, 0x59,
+  0x0f, 0x3b, 0x4f, 0x87, 0x05, 0x24, 0x01, 0x36, 0x6c, 0x42, 0xd2, 0xb0,
+  0x29, 0xcb, 0x07, 0xfb, 0xc7, 0x22, 0xcc, 0xe8, 0xa1, 0x73, 0xd3, 0x7e,
+  0xb4, 0x2b, 0xfd, 0xd3, 0x00, 0x4c, 0x4a, 0xf0, 0xcc, 0x4a, 0x85, 0xa2,
+  0x91, 0x89, 0x45, 0x79, 0x4b, 0x23, 0x31, 0x5b, 0x6d, 0x3a, 0x6d, 0xb1,
+  0x39, 0xac, 0xc7, 0xa7, 0xb9, 0x00, 0x71, 0x4a, 0xd6, 0x9d, 0xed, 0x68,
+  0x4c, 0x52, 0x95, 0x4c, 0x5f, 0x93, 0xb3, 0xc8, 0x46, 0x98, 0x8c, 0x76,
+  0x27, 0xf8, 0xc9, 0xb4, 0x46, 0xca, 0x05, 0x72, 0x6f, 0xea, 0xc7, 0xdc,
+  0xfb, 0x1a, 0xf8, 0xef, 0x53, 0x23, 0xa4, 0x7d, 0xbe, 0xe2, 0x5c, 0xcd,
+  0xc0, 0x70, 0x7f, 0x97, 0xde, 0xe5, 0xb3, 0xc5, 0x0c, 0x1f, 0xa3, 0xbd,
+  0x2d, 0x8f, 0x89, 0xc3, 0x18, 0x2e, 0x44, 0x06, 0x1e, 0x60, 0x93, 0x6f,
+  0xd4, 0x89, 0x67, 0xbe, 0xc7, 0x2e, 0x19, 0x73, 0x25, 0x0f, 0xdc, 0xf0,
+  0x0a, 0xc0, 0xf5, 0xc8, 0xa3, 0x5c, 0x77, 0x4c, 0x7f, 0xa3, 0x2d, 0xa4,
+  0x14, 0x4d, 0xae, 0x4b, 0x0b, 0xc3, 0x88, 0x88, 0x73, 0x4e, 0x16, 0x16,
+  0x1d, 0xce, 0x83, 0x25, 0x66, 0x55, 0x5e, 0x4e, 0xec, 0xb9, 0x21, 0x25,
+  0x31, 0x2f, 0x16, 0x66, 0x9e, 0xa9, 0x2d, 0xba, 0x52, 0x15, 0xef, 0x1c,
+  0x44, 0xb3, 0x01, 0xa1, 0x1e, 0x02, 0x19, 0xaf, 0x48, 0xc3, 0xcf, 0x06,
+  0x4f, 0xf6, 0x06, 0x3b, 0xbd, 0x96, 0xf5, 0x2e, 0x39, 0xd5, 0xe6, 0x74,
+  0x8d, 0xf3, 0x99, 0xcd, 0xb7, 0x1a, 0xfc, 0xcb, 0xbc, 0x34, 0x94, 0x69,
+  0xd6, 0x9f, 0xa5, 0x77, 0x58, 0xbe, 0xe8, 0xb2, 0x96, 0xc9, 0xab, 0x6f,
+  0x4e, 0x87, 0x17, 0xbb, 0xfb, 0x67, 0xa7, 0xe7, 0xe6, 0xbf, 0xf4, 0xf7,
+  0x3d, 0xfc, 0x7d, 0x2f, 0xb0, 0x1e, 0xdf, 0x0a, 0x50, 0x52, 0x33, 0x33,
+  0xa0, 0xa1, 0x40, 0xa3, 0xe1, 0xd9, 0x4c, 0xbc, 0x86, 0xc8, 0x5f, 0x0a,
+  0x31, 0x38, 0xb6, 0xf9, 0x3c, 0xdd, 0x25, 0xf6, 0x3e, 0xa5, 0x68, 0x29,
+  0x75, 0x34, 0xf8, 0x68, 0xb0, 0xbc, 0x51, 0x6d, 0x4a, 0x72, 0x41, 0x35,
+  0xcb, 0xb4, 0xeb, 0xa2, 0xe5, 0x3c, 0x3e, 0x49, 0xc6, 0x50, 0xbe, 0x26,
+  0xa0, 0x7e, 0xda, 0xbf, 0x1a, 0x4f, 0x8d, 0xa6, 0x9f, 0x11, 0x4a, 0x60,
+  0x92, 0x31, 0x57, 0x08, 0xfd, 0x24, 0x66, 0x80, 0x98, 0xe3, 0x27, 0xe8,
+  0xf4, 0x2e, 0x76, 0x8c, 0x77, 0xa4, 0xe0, 0x70, 0x29, 0x6d, 0xda, 0xf4,
+  0x31, 0xaf, 0xaf, 0x65, 0x3a, 0x8a, 0xac, 0xe9, 0x36, 0xc7, 0x3c, 0x4a,
+  0xbe, 0xc7, 0x0a, 0x49, 0xaa, 0x48, 0x37, 0x7d, 0x7f, 0x7a, 0x91, 0xa4,
+  0x97, 0x97, 0x9a, 0x1b, 0x4b, 0xf0, 0x73, 0xd2, 0x58, 0xb7, 0xe7, 0x7c,
+  0x93, 0x21, 0xfc, 0x18, 0x4a, 0x3e, 0xd6, 0x47, 0x2e, 0x4e, 0x86, 0xdb,
+  0xe4, 0xaf, 0x62, 0x78, 0xd3, 0xf0, 0xfd, 0x71, 0xaf, 0xe5, 0x91, 0xf6,
+  0x41, 0x0d, 0x5b, 0x74, 0x53, 0xc6, 0x15, 0x8a, 0xd4, 0xbb, 0x0b, 0x1d,
+  0xe3, 0x02, 0xc1, 0xa5, 0xb0, 0xa4, 0xeb, 0xe2, 0x0c, 0x59, 0xc7, 0xd2,
+  0xae, 0x27, 0x1a, 0x16, 0x83, 0xfd, 0x3b, 0x9b, 0x87, 0x60, 0x24, 0xf8,
+  0x62, 0x7b, 0xe0, 0x21, 0x20, 0xa5, 0x63, 0x9d, 0x6c, 0x12, 0x1a, 0x16,
+  0x86, 0xb4, 0x3e, 0xe0, 0x66, 0xf7, 0xd6, 0xd1, 0x2a, 0x1a, 0x35, 0x7f,
+  0xa7, 0x36, 0xb1, 0x69, 0x47, 0x59, 0x0c, 0xc5, 0xcd, 0x1f, 0xf2, 0x1a,
+  0x4f, 0x6c, 0xf3, 0xa6, 0x63, 0x36, 0x29, 0x49, 0x77, 0x07, 0x09, 0x98,
+  0xb2, 0xca, 0xaf, 0x28, 0x10, 0xdc, 0xcd, 0x13, 0x72, 0x1d, 0x09, 0xdc,
+  0x50, 0xa4, 0x8c, 0xd5, 0xcd, 0xba, 0xe7, 0x32, 0x68, 0x02, 0x1c, 0x36,
+  0x10, 0x81, 0x95, 0xda, 0x33, 0xda, 0x1d, 0x92, 0x3f, 0x4d, 0x44, 0x8f,
+  0x67, 0x65, 0xcf, 0x8c, 0x8e, 0xee, 0x1d, 0x17, 0xf1, 0xd1, 0x3c, 0x0f,
+  0x3d, 0x4b, 0x60, 0x82, 0x38, 0x6e, 0x54, 0x80, 0x73, 0x8c, 0xa8, 0xdb,
+  0x1c, 0x33, 0x16, 0x19, 0x89, 0xa0, 0xd0, 0xfe, 0xf5, 0xdd, 0xbd, 0xcf,
+  0x06, 0x3b, 0xe6, 0xff, 0x99, 0x45, 0x11, 0xfd, 0x88, 0xf9, 0x52, 0x98,
+  0xe6, 0x82, 0x3f, 0xc5, 0x4f, 0x27, 0x69, 0x77, 0x0f, 0xd9, 0x0b, 0xae,
+  0xac, 0xae, 0xd6, 0xe3, 0x58, 0x17, 0x19, 0x74, 0xeb, 0x56, 0xa1, 0xb5,
+  0xb4, 0x37, 0x4a, 0x3a, 0x91, 0x9f, 0xe8, 0x31, 0xaf, 0x16, 0xd3, 0x08,
+  0x66, 0xcb, 0x73, 0x1b, 0x93, 0x82, 0x36, 0xbd, 0x11, 0xa7, 0xf1, 0x37,
+  0x24, 0x9e, 0x38, 0x6f, 0x6b, 0xd0, 0x42, 0xbc, 0xbc, 0x6c, 0xf9, 0x00,
+  0x0f, 0xc5, 0x6a, 0x83, 0x70, 0xee, 0x9b, 0xf3, 0xf0, 0xaa, 0xbc, 0xbc,
+  0xac, 0xb3, 0xa6, 0x7b, 0x07, 0x1d, 0xca, 0x23, 0xdb, 0xe7, 0xe0, 0xf8,
+  0xe2, 0xb0, 0x8d, 0xa4, 0x56, 0x24, 0x6d, 0x66, 0x8a, 0x44, 0x20, 0x46,
+  0x2c, 0xb9, 0xb8, 0xb9, 0x41, 0x04, 0x4e, 0xee, 0xff, 0x5e, 0x51, 0x00,
+  0x9c, 0x18, 0xaa, 0x7c, 0x07, 0x48, 0xaf, 0x61, 0x2a, 0x03, 0xb9, 0xec,
+  0xba, 0xc4, 0x44, 0x7a, 0x2a, 0x3e, 0xe5, 0xf3, 0x39, 0x59, 0x38, 0x4c,
+  0xf2, 0x83, 0x9d, 0x6b, 0x03, 0x66, 0xa3, 0xcc, 0x6c, 0x55, 0xec, 0x66,
+  0x85, 0x82, 0x19, 0x3d, 0x79, 0x2c, 0xd7, 0xfe, 0x28, 0x33, 0xc7, 0x36,
+  0x0b, 0xb5, 0x76, 0xea, 0x8f, 0xc7, 0xec, 0x20, 0x09, 0xe9, 0x13, 0x62,
+  0x71, 0x28, 0x52, 0x95, 0x32, 0x97, 0x5e, 0xce, 0xb3, 0x24, 0x7b, 0xc5,
+  0xf0, 0x88, 0x2e, 0x15, 0xc7, 0xba, 0xdc, 0x86, 0xc7, 0xff, 0xf3, 0xc8,
+  0xf1, 0x70, 0x58, 0xa2, 0x0b, 0x4e, 0x6c, 0x88, 0xa5, 0x89, 0x98, 0x3d,
+  0xd5, 0x3f, 0x34, 0xeb, 0x85, 0x18, 0x93, 0x07, 0x27, 0x28, 0x3b, 0xc0,
+  0x7b, 0x98, 0x3e, 0xa4, 0x4c, 0x40, 0x21, 0xda, 0xa6, 0xd4, 0xd7, 0xe0,
+  0x76, 0x60, 0x9a, 0x36, 0x76, 0x25, 0xca, 0x18, 0x71, 0x40, 0x1a, 0xc9,
+  0x92, 0xf2, 0xb3, 0x0b, 0x44, 0x5f, 0xdc, 0xce, 0x0b, 0xd2, 0x1a, 0x59,
+  0x87, 0x09, 0xc0, 0xf7, 0x9a, 0xf7, 0xc8, 0x09, 0xff, 0x8b, 0xe6, 0x5f,
+  0x18, 0x2b, 0xa9, 0x68, 0xff, 0x82, 0xc9, 0xc9, 0xdb, 0xd4, 0x63, 0xde,
+  0xd4, 0x44, 0x57, 0xd7, 0xff, 0x9b, 0x31, 0xb4, 0x5f, 0xa9, 0xa7, 0x62,
+  0x59, 0x66, 0xac, 0xfa, 0x35, 0x08, 0x2c, 0x0f, 0x3b, 0x0c, 0x7b, 0xc3,
+  0x52, 0x34, 0xe8, 0x54, 0xb3, 0x4b, 0x25, 0x85, 0x3a, 0x03, 0x2e, 0xbc,
+  0xae, 0xac, 0xbf, 0x04, 0xef, 0x83, 0xe5, 0x01, 0xf0, 0x72, 0xe5, 0x06,
+  0x14, 0x95, 0x9a, 0x72, 0x0b, 0x35, 0xa3, 0xe6, 0xa4, 0x0d, 0xb5, 0x1b,
+  0xf2, 0xe0, 0xda, 0xcd, 0x8b, 0xfe, 0x2c, 0x9b, 0x01, 0xd0, 0xcb, 0xcf,
+  0x22, 0x78, 0x46, 0xc4, 0x45, 0xb2, 0x1d, 0x79, 0x89, 0xd8, 0x12, 0x6f,
+  0x04, 0x00, 0x02, 0xcd, 0x16, 0x9f, 0x0d, 0x63, 0x8f, 0x65, 0xc1, 0x6e,
+  0x47, 0xf8, 0x0a, 0xf9, 0xe3, 0xe4, 0x22, 0xfb, 0x64, 0xd4, 0xe7, 0xa2,
+  0x47, 0x3f, 0x45, 0xe2, 0xa1, 0x97, 0x85, 0x46, 0xdd, 0x6d, 0x32, 0x0e,
+  0x52, 0x64, 0x11, 0x75, 0xd6, 0x7b, 0x56, 0x1e, 0xf5, 0x3c, 0x29, 0xef,
+  0xb3, 0x46, 0xe0, 0x01, 0xdc, 0x79, 0xcd, 0xc2, 0x41, 0x26, 0xcf, 0xf1,
+  0x65, 0xa7, 0x39, 0x30, 0x26, 0x65, 0x8d, 0xf3, 0x09, 0x41, 0xc0, 0x32,
+  0x41, 0x24, 0xd3, 0xc4, 0x90, 0xdb, 0xb3, 0x67, 0x8e, 0xc1, 0xba, 0xba,
+  0x60, 0x79, 0x04, 0xb2, 0x51, 0x22, 0x8e, 0x19, 0xea, 0x0e, 0x79, 0x8a,
+  0x9a, 0x49, 0x6c, 0x4f, 0xb2, 0xfa, 0xab, 0x07, 0x52, 0xd8, 0xb3, 0x64,
+  0x83, 0x72, 0x46, 0x8b, 0xd1, 0x26, 0x10, 0xad, 0x77, 0x5f, 0x13, 0xb4,
+  0x15, 0x36, 0x7a, 0x37, 0xf7, 0xd2, 0x65, 0x11, 0x12, 0x4c, 0xa2, 0x9a,
+  0xa8, 0x73, 0x44, 0x3b, 0x6a, 0xa4, 0xb0, 0x98, 0x46, 0xb7, 0x29, 0x76,
+  0x9a, 0x6d, 0x3f, 0x8f, 0x68, 0x21, 0x1e, 0xc6, 0xad, 0x3f, 0x72, 0xdb,
+  0xd9, 0x31, 0x48, 0x44, 0x5d, 0xb3, 0xf2, 0x10, 0xed, 0x79, 0x73, 0xb1,
+  0x6c, 0x40, 0xb2, 0x48, 0x26, 0x21, 0x48, 0x19, 0xec, 0xa4, 0xf0, 0x14,
+  0xde, 0x5e, 0x97, 0x53, 0xb6, 0x8c, 0x83, 0x08, 0x8b, 0x4d, 0xf1, 0x04,
+  0xbf, 0x01, 0x61, 0x36, 0xe1, 0x58, 0xbe, 0x01, 0x1c, 0xb4, 0x15, 0x25,
+  0x31, 0x2a, 0x5e, 0x96, 0x52, 0x62, 0x89, 0x00, 0xa2, 0x93, 0xfe, 0x4d,
+  0x98, 0x10, 0x67, 0xce, 0xf9, 0xa8, 0xac, 0xed, 0x7e, 0xa1, 0x44, 0x4a,
+  0xba, 0x41, 0x6e, 0xd3, 0x0a, 0x82, 0x59, 0x88, 0x62, 0x94, 0x43, 0xcf,
+  0xc7, 0x85, 0x91, 0x36, 0xd8, 0x05, 0xb3, 0xe7, 0x94, 0x7c, 0x6c, 0xb6,
+  0x89, 0xd1, 0x01, 0xc8, 0x4d, 0x8b, 0xbd, 0x43, 0x4d, 0x0a, 0x05, 0xcc,
+  0x35, 0xd8, 0x20, 0x25, 0x43, 0xd9, 0x9c, 0xc3, 0x6b, 0xba, 0xd6, 0xf3,
+  0x66, 0x91, 0x36, 0x8f, 0x43, 0xe3, 0x2e, 0x93, 0x4d, 0x2c, 0x9c, 0x7c,
+  0x30, 0x43, 0x24, 0x94, 0x80, 0x6d, 0xbb, 0x24, 0x6a, 0xe8, 0x2f, 0xe4,
+  0x2b, 0x3a, 0x6b, 0x4b, 0xe4, 0xd1, 0x19, 0xb8, 0xac, 0xae, 0xdb, 0x64,
+  0x28, 0xc8, 0xbb, 0x94, 0x6b, 0x44, 0x53, 0x9b, 0xb8, 0x29, 0xbd, 0xe5,
+  0x8f, 0x23, 0xf1, 0x7c, 0xc4, 0xbf, 0x4c, 0x2f, 0xa6, 0xf7, 0xae, 0x41,
+  0x2f, 0x25, 0x52, 0x51, 0xbb, 0x1e, 0x51, 0x94, 0xfd, 0x42, 0x92, 0x76,
+  0xb5, 0x9a, 0xa1, 0x51, 0xbe, 0xf9, 0x9b, 0xfb, 0xeb, 0xca, 0xbb, 0x67,
+  0x89, 0x44, 0x44, 0x78, 0x48, 0x4e, 0x8e, 0xc5, 0xf4, 0x8b, 0xcf, 0x9e,
+  0x4e, 0x7d, 0xb7, 0x39, 0x22, 0xa1, 0xdd, 0x7d, 0xfd, 0xdd, 0xc1, 0xc9,
+  0x87, 0xa3, 0xdd, 0xcf, 0x13, 0xfa, 0xd7, 0x1e, 0xff, 0x6b, 0x6f, 0x3d,
+  0xb6, 0x4a, 0x46, 0x3e, 0x6d, 0xbc, 0xde, 0x48, 0xea, 0xfb, 0xd9, 0xa8,
+  0x9c, 0xda, 0x75, 0x92, 0xa9, 0xd0, 0x50, 0x59, 0x4f, 0x2e, 0x6f, 0x9b,
+  0xa1, 0x2b, 0x1e, 0xf2, 0xae, 0xa4, 0xae, 0x05, 0x4f, 0xa6, 0x52, 0x06,
+  0x31, 0x3a, 0x3f, 0x57, 0xb4, 0x41, 0x3a, 0xad, 0x8a, 0x2e, 0x89, 0xd6,
+  0x2d, 0xc3, 0xf8, 0xe1, 0x2e, 0xd2, 0xf3, 0x5c, 0x47, 0x04, 0x86, 0x64,
+  0xa6, 0xf3, 0xee, 0x87, 0x4f, 0x5c, 0x9c, 0x96, 0x2c, 0x2b, 0x02, 0xc1,
+  0x6f, 0xc4, 0x12, 0xce, 0x92, 0xe5, 0x5c, 0xd5, 0x16, 0x48, 0x95, 0xa7,
+  0xb9, 0x25, 0x6a, 0xae, 0x7b, 0xc9, 0x35, 0xdf, 0xa8, 0x32, 0x2b, 0x76,
+  0x31, 0xf4, 0x20, 0xf6, 0x30, 0x1b, 0x89, 0xd6, 0xe2, 0xf1, 0xd2, 0x9c,
+  0xd0, 0x66, 0x54, 0x1c, 0x86, 0x4d, 0x07, 0xac, 0x90, 0x34, 0xef, 0x3c,
+  0x19, 0x89, 0x47, 0x7b, 0x6a, 0x09, 0xd4, 0x84, 0x81, 0xcc, 0x63, 0x64,
+  0x84, 0xab, 0x4d, 0x1c, 0xcd, 0x0e, 0x96, 0xe6, 0xe4, 0x38, 0x61, 0xdc,
+  0x49, 0xb5, 0x23, 0x64, 0x49, 0x57, 0x70, 0x1a, 0xb5, 0xb2, 0x4e, 0x36,
+  0x8d, 0x5c, 0xdf, 0xea, 0x79, 0xb1, 0x58, 0x5d, 0x40, 0x71, 0x49, 0x34,
+  0x36, 0x6a, 0xba, 0x24, 0x4e, 0x70, 0x71, 0xdd, 0xba, 0x61, 0x54, 0xd7,
+  0xd3, 0x1c, 0x56, 0x8e, 0xc1, 0xca, 0x95, 0xc1, 0xcd, 0xf0, 0x46, 0x25,
+  0x68, 0xde, 0x34, 0x0d, 0xe6, 0x8c, 0xb3, 0x9c, 0x85, 0xf7, 0x80, 0x22,
+  0xfa, 0x76, 0xeb, 0x9b, 0xef, 0xdf, 0x4f, 0xb3, 0x2d, 0x35, 0x0a, 0xf4,
+  0x96, 0xdb, 0x7e, 0x57, 0xfe, 0xc3, 0xf4, 0x3b, 0x95, 0x8f, 0xc4, 0x2e,
+  0x4b, 0xb9, 0xfb, 0x96, 0xf6, 0xdc, 0x09, 0x16, 0xce, 0x04, 0xf6, 0xc5,
+  0x45, 0xcb, 0x2e, 0x46, 0xa0, 0x97, 0x14, 0x32, 0xe0, 0x70, 0x83, 0xd5,
+  0x16, 0xb5, 0x22, 0xb8, 0x9a, 0x45, 0x90, 0x20, 0xb2, 0x93, 0x5c, 0x94,
+  0x02, 0xc5, 0xb1, 0x5b, 0x4c, 0xee, 0x9b, 0xae, 0xec, 0xee, 0x2a, 0x53,
+  0x4b, 0x6e, 0xa0, 0xa3, 0xbb, 0xac, 0x1a, 0x13, 0xa7, 0xc0, 0xd8, 0x28,
+  0xa4, 0x10, 0xa4, 0x97, 0xe2, 0x9a, 0xa2, 0x20, 0x9c, 0xcd, 0xb7, 0xf1,
+  0x3d, 0x6a, 0xb8, 0x77, 0x75, 0xa7, 0x2d, 0xdd, 0x64, 0x00, 0x39, 0x8c,
+  0xcd, 0xc6, 0x18, 0x58, 0xfa, 0x27, 0xbd, 0x19, 0xdb, 0x02, 0x44, 0x13,
+  0x87, 0x10, 0x4a, 0x08, 0x40, 0x66, 0x98, 0x61, 0x7d, 0xd1, 0x5b, 0x4d,
+  0xd9, 0x2e, 0xe8, 0x0b, 0x93, 0xf9, 0xb8, 0xc8, 0x10, 0xe5, 0x82, 0x83,
+  0x11, 0x65, 0x39, 0x0e, 0xd1, 0xae, 0x0e, 0x88, 0x1a, 0x10, 0x29, 0x29,
+  0xee, 0x95, 0x47, 0x65, 0x13, 0xf7, 0x25, 0x6b, 0x85, 0xca, 0xb7, 0x05,
+  0x95, 0x2b, 0xcc, 0x37, 0x9d, 0x96, 0xb7, 0x14, 0x7f, 0x69, 0xb3, 0xdf,
+  0xcd, 0xca, 0x09, 0xef, 0x87, 0xd1, 0xbd, 0xe5, 0xc9, 0xee, 0x93, 0x92,
+  0xc4, 0x9f, 0x1d, 0x68, 0xc8, 0x31, 0xba, 0x03, 0x34, 0x7d, 0xae, 0x9b,
+  0x5f, 0x92, 0xba, 0xec, 0x92, 0x86, 0x1d, 0xc9, 0xac, 0x58, 0x38, 0xea,
+  0x99, 0xd8, 0x8d, 0x86, 0x11, 0x8f, 0x4a, 0xe2, 0x34, 0x94, 0xbb, 0x0d,
+  0x03, 0x26, 0x3f, 0x9c, 0x31, 0x8b, 0x1b, 0x68, 0xff, 0x6a, 0xff, 0x35,
+  0x82, 0x23, 0x15, 0x47, 0x51, 0x10, 0x6b, 0xfc, 0xc4, 0xc4, 0x47, 0x65,
+  0xa3, 0xa4, 0x96, 0x42, 0xf8, 0xd6, 0x20, 0x89, 0x8f, 0x94, 0x4d, 0x58,
+  0xbf, 0xe0, 0xd7, 0x32, 0xdf, 0x25, 0x54, 0x52, 0x5d, 0x13, 0x97, 0x12,
+  0x0d, 0x3d, 0x0d, 0x78, 0x14, 0x30, 0xd5, 0x84, 0xac, 0x71, 0x8b, 0xba,
+  0xc9, 0x4c, 0x27, 0xe8, 0x85, 0x48, 0x13, 0x22, 0x40, 0x80, 0xc1, 0x3e,
+  0xd2, 0x77, 0xea, 0x2d, 0xf2, 0x63, 0x44, 0x40, 0x97, 0x2d, 0xe5, 0x75,
+  0xc9, 0xa1, 0xfd, 0xa7, 0x2d, 0x9a, 0xc0, 0xc2, 0xab, 0x6a, 0x26, 0x90,
+  0x04, 0x05, 0xa7, 0x45, 0x3e, 0x63, 0xca, 0x43, 0xe1, 0x95, 0xba, 0xf8,
+  0x1b, 0x4c, 0x8a, 0xee, 0x28, 0xe6, 0x13, 0xe8, 0x7c, 0xfa, 0x0e, 0xb4,
+  0x24, 0x8f, 0x08, 0xae, 0x2e, 0xe5, 0x44, 0xa2, 0x79, 0x12, 0x34, 0x4e,
+  0xd2, 0xc4, 0x18, 0x51, 0xba, 0x32, 0xc0, 0x0f, 0xb0, 0xb4, 0x78, 0x8a,
+  0xd8, 0x87, 0x33, 0xf3, 0xe5, 0x83, 0x79, 0x11, 0x57, 0x70, 0xdf, 0xec,
+  0xff, 0x3a, 0x16, 0xa8, 0xd4, 0x6b, 0xdc, 0x48, 0xf9, 0xbf, 0x2d, 0x8a,
+  0x71, 0xe7, 0x9a, 0x2a, 0x7b, 0x1e, 0x1f, 0x9d, 0x44, 0x65, 0xed, 0x2d,
+  0xd1, 0xdd, 0xf8, 0xf8, 0x90, 0x70, 0x9d, 0x50, 0xa6, 0x1f, 0xc1, 0xf3,
+  0xe9, 0x8a, 0x9b, 0x7a, 0x39, 0x81, 0xd7, 0xb9, 0x59, 0xa1, 0x6a, 0x7c,
+  0x8d, 0x84, 0x71, 0xf8, 0x91, 0x32, 0x75, 0x8e, 0xc6, 0x71, 0x46, 0xd2,
+  0xac, 0x68, 0x64, 0x39, 0x89, 0x24, 0xa2, 0x84, 0x28, 0x0b, 0x15, 0xd4,
+  0xcb, 0xfa, 0x19, 0xc2, 0xb8, 0xae, 0x69, 0xce, 0xb3, 0x69, 0x9d, 0x59,
+  0xf4, 0x87, 0x7d, 0xc7, 0xdd, 0x95, 0xb0, 0xc0, 0x0b, 0xf8, 0x64, 0x39,
+  0x07, 0x24, 0x8f, 0x9e, 0x72, 0xf4, 0xc4, 0x28, 0x3b, 0xd2, 0x19, 0x32,
+  0x2a, 0x69, 0x9f, 0xdc, 0x2b, 0xa1, 0x88, 0xb4, 0xa0, 0xbb, 0x4e, 0x09,
+  0x45, 0x82, 0xdb, 0xa7, 0xb4, 0xf3, 0x26, 0x24, 0x1d, 0x3a, 0x55, 0xb9,
+  0xf2, 0x0d, 0xf3, 0x56, 0x21, 0x2f, 0x86, 0xe9, 0x0d, 0xf3, 0xe0, 0x53,
+  0xfc, 0xab, 0xdf, 0xbf, 0x6c, 0xe6, 0xfd, 0xe8, 0x12, 0x60, 0xad, 0xdb,
+  0x5b, 0x60, 0x7a, 0x29, 0x84, 0x2c, 0xef, 0x94, 0x8b, 0xea, 0x86, 0x92,
+  0x34, 0x92, 0x93, 0xb7, 0xec, 0xc5, 0x3b, 0x3c, 0xa7, 0xbf, 0xe5, 0x96,
+  0x8e, 0x66, 0x80, 0x43, 0x41, 0xc4, 0xf6, 0x9c, 0xab, 0xfc, 0xee, 0xbb,
+  0x6e, 0x82, 0xdd, 0xe6, 0xe9, 0x70, 0xfb, 0xc9, 0xcb, 0x9d, 0xad, 0x08,
+  0x40, 0xd9, 0x7c, 0xc3, 0xf1, 0x74, 0x7d, 0x36, 0x78, 0xba, 0x33, 0xd8,
+  0xd9, 0xea, 0xf4, 0x86, 0xa6, 0x7b, 0x05, 0x4f, 0x86, 0xb2, 0x0b, 0xdb,
+  0x8b, 0x03, 0xa0, 0x63, 0x4b, 0x45, 0xa1, 0x20, 0x69, 0x3f, 0x4d, 0xf0,
+  0x3c, 0xbb, 0x31, 0x5b, 0x2d, 0x66, 0x75, 0x27, 0x27, 0x79, 0x2d, 0x56,
+  0x0d, 0xdd, 0x66, 0x7a, 0xbf, 0x50, 0x1e, 0x6e, 0x1b, 0xfa, 0x8b, 0x47,
+  0xe8, 0xc2, 0x64, 0xac, 0x43, 0x24, 0xda, 0x52, 0x9b, 0x4e, 0x55, 0x40,
+  0xe1, 0x21, 0xa6, 0xff, 0xbb, 0x7b, 0x5a, 0x3c, 0xcf, 0xe1, 0xee, 0xcb,
+  0xc1, 0x67, 0xfe, 0x9a, 0x92, 0xbe, 0xdf, 0x4f, 0xeb, 0x71, 0x9e, 0xaf,
+  0x34, 0x66, 0x14, 0xde, 0xf8, 0xb7, 0x05, 0x18, 0xa7, 0xcc, 0x36, 0xcd,
+  0x53, 0x0e, 0xd5, 0x3a, 0xa2, 0xbe, 0xa0, 0x59, 0xd2, 0x57, 0xcd, 0x16,
+  0x5b, 0xd5, 0xae, 0x18, 0xf0, 0x54, 0xac, 0x40, 0xb8, 0x45, 0xad, 0x86,
+  0x59, 0x77, 0x55, 0x29, 0x73, 0x16, 0x98, 0x9b, 0x6a, 0x5e, 0x85, 0x09,
+  0x5c, 0x04, 0xc4, 0x04, 0xbc, 0x39, 0x6d, 0xea, 0x92, 0xe6, 0x29, 0x36,
+  0xa9, 0x70, 0x4f, 0x80, 0x9d, 0xd1, 0x9a, 0x51, 0xf6, 0xec, 0x0b, 0x18,
+  0xe8, 0x4b, 0x0f, 0xb9, 0xd3, 0x32, 0x83, 0xd2, 0x88, 0x32, 0xc8, 0xe4,
+  0xd2, 0x09, 0xc2, 0xe3, 0x9c, 0x2a, 0x43, 0x03, 0x11, 0x8a, 0x75, 0xf8,
+  0x3c, 0x18, 0x23, 0x22, 0x04, 0xeb, 0xc4, 0x35, 0x63, 0x67, 0x2b, 0xc2,
+  0x24, 0xd4, 0x33, 0xe3, 0x03, 0x75, 0x1d, 0x76, 0x50, 0x91, 0xdd, 0x92,
+  0x34, 0xae, 0x45, 0x9d, 0xa8, 0xaa, 0x9c, 0x9c, 0x46, 0x16, 0x5c, 0xc0,
+  0x2a, 0x19, 0xc1, 0x2d, 0xe9, 0x82, 0x9e, 0x44, 0xb2, 0x76, 0xc7, 0x38,
+  0x9d, 0xb5, 0x05, 0x68, 0x17, 0x20, 0x5f, 0x23, 0x32, 0xb1, 0x68, 0xb6,
+  0x54, 0x5b, 0xad, 0xb3, 0xc4, 0x5e, 0x91, 0x4d, 0x07, 0x26, 0x7c, 0x87,
+  0xf0, 0x68, 0x22, 0x5e, 0x25, 0x82, 0x68, 0xb0, 0xff, 0x85, 0xc9, 0x98,
+  0x30, 0xd7, 0x69, 0x2d, 0x55, 0x13, 0x46, 0xbc, 0x1b, 0x57, 0x6c, 0x9d,
+  0x2a, 0xbd, 0x7d, 0x78, 0x3f, 0x7a, 0xbb, 0x46, 0x66, 0x7a, 0x0a, 0x9f,
+  0x8c, 0xc7, 0x1d, 0x49, 0x8e, 0x08, 0x0b, 0x0c, 0x8c, 0xf4, 0x54, 0x38,
+  0xcb, 0x99, 0x30, 0xdc, 0x4c, 0x66, 0x23, 0x86, 0x14, 0xcb, 0xf5, 0x2f,
+  0x57, 0x24, 0xc5, 0x38, 0xef, 0xa5, 0x1b, 0x45, 0xcb, 0x45, 0xdf, 0x21,
+  0xa0, 0xc3, 0xb0, 0xcc, 0x95, 0xc7, 0x59, 0x25, 0x8f, 0x38, 0x14, 0x6e,
+  0x74, 0x3d, 0xbb, 0x91, 0x44, 0xf9, 0x67, 0x0f, 0x94, 0x37, 0x4c, 0x61,
+  0x2a, 0x8c, 0x41, 0x0e, 0xd9, 0x21, 0x4f, 0xdb, 0x0a, 0x44, 0x22, 0x96,
+  0x81, 0x6a, 0x9e, 0x55, 0x24, 0x05, 0x01, 0xcf, 0xee, 0x2b, 0xaa, 0x36,
+  0x76, 0xb1, 0x98, 0xcd, 0x7f, 0xf8, 0xf5, 0x31, 0x60, 0xc6, 0xe6, 0xd0,
+  0x17, 0x92, 0x4a, 0xce, 0xfd, 0xe7, 0xf2, 0x14, 0xd6, 0x08, 0xbb, 0xca,
+  0x2d, 0x7b, 0x54, 0x9a, 0xb4, 0xd8, 0x20, 0x3b, 0x3a, 0x72, 0xa2, 0xca,
+  0xb0, 0x00, 0x29, 0x45, 0xa7, 0x15, 0x13, 0xd1, 0x86, 0x22, 0x53, 0x87,
+  0x5d, 0x8f, 0xce, 0x17, 0xbe, 0xae, 0x94, 0x07, 0x69, 0x2d, 0xd1, 0x46,
+  0x28, 0x16, 0x01, 0xae, 0xd9, 0xed, 0x57, 0x2e, 0xf7, 0x91, 0x85, 0x18,
+  0x2d, 0xf9, 0x7c, 0xbc, 0x1a, 0x0f, 0xd6, 0xc4, 0x15, 0x32, 0xc1, 0x47,
+  0xec, 0xd4, 0x65, 0xbe, 0x85, 0xcb, 0x49, 0x42, 0xe4, 0xfd, 0x89, 0xb9,
+  0x18, 0x55, 0x2d, 0x21, 0x7f, 0xec, 0x7f, 0x90, 0x34, 0xc5, 0x1d, 0x61,
+  0xce, 0x27, 0xdd, 0x92, 0x9a, 0xbc, 0xe5, 0xb7, 0xa6, 0x1c, 0x63, 0x82,
+  0xd0, 0x8c, 0x37, 0x47, 0xf6, 0xca, 0x6b, 0xba, 0xd9, 0xbf, 0x14, 0xd7,
+  0x8a, 0x39, 0xaa, 0x4a, 0xde, 0xcb, 0x26, 0x24, 0x67, 0xee, 0xb1, 0xd7,
+  0x42, 0x08, 0x51, 0x68, 0x1a, 0xe2, 0xcd, 0x71, 0x34, 0xce, 0x9b, 0x3d,
+  0xde, 0x71, 0x44, 0x11, 0x5c, 0x73, 0xc9, 0x97, 0x3f, 0x74, 0x27, 0xef,
+  0xf5, 0xc3, 0xb3, 0xf7, 0x4b, 0xa7, 0x6f, 0xf5, 0xec, 0x31, 0xd5, 0xb6,
+  0xa2, 0x3a, 0x5f, 0x7b, 0x2e, 0x25, 0x00, 0x13, 0xd8, 0x56, 0xb0, 0xae,
+  0xa5, 0xb6, 0x94, 0xf1, 0x8c, 0xa2, 0xd7, 0xbf, 0xd5, 0xaa, 0x63, 0x33,
+  0xc2, 0x02, 0xa5, 0xce, 0xc7, 0x9b, 0xe3, 0xf8, 0x17, 0xd6, 0xde, 0x27,
+  0x84, 0x13, 0x9d, 0x11, 0x2d, 0xc0, 0xc9, 0x62, 0xf6, 0x7f, 0xc3, 0x9b,
+  0x79, 0x04, 0x48, 0x62, 0x3f, 0xde, 0x9c, 0x66, 0xa8, 0x89, 0xd2, 0x18,
+  0x8c, 0xef, 0x4b, 0xbd, 0xa4, 0x1e, 0x1a, 0x5c, 0xcb, 0x9b, 0x05, 0x14,
+  0x8c, 0x38, 0x02, 0x2d, 0x1a, 0xca, 0x62, 0x18, 0x22, 0xde, 0x52, 0x9b,
+  0x26, 0x68, 0x09, 0xea, 0xb8, 0xe2, 0x87, 0xde, 0x60, 0x5b, 0xbd, 0xf6,
+  0x9c, 0x11, 0x01, 0x17, 0xee, 0x03, 0x59, 0xe8, 0x78, 0x73, 0x39, 0x0c,
+  0x53, 0x59, 0x3e, 0x62, 0xd1, 0x8e, 0x2e, 0xdf, 0xff, 0x9f, 0x0d, 0x91,
+  0xbd, 0xb0, 0x1c, 0x96, 0xe6, 0xd2, 0x3f, 0x57, 0x4c, 0x68, 0x67, 0xba,
+  0x05, 0x40, 0x78, 0xd2, 0xaa, 0x77, 0x11, 0xa0, 0x14, 0x60, 0x7c, 0xf7,
+  0x10, 0x1c, 0x9c, 0x22, 0x82, 0x9a, 0x33, 0x2b, 0xef, 0x6b, 0x7b, 0xf3,
+  0x4c, 0xfa, 0x34, 0xbc, 0xbe, 0xec, 0xda, 0x01, 0xf6, 0xe1, 0x8a, 0xcd,
+  0x6a, 0x37, 0x67, 0x7c, 0x5f, 0x06, 0x3b, 0x70, 0xf9, 0xed, 0xa8, 0xdc,
+  0x8f, 0x72, 0xbd, 0xb7, 0x2e, 0xcb, 0xdd, 0x17, 0xad, 0xcb, 0xd2, 0xbd,
+  0xb3, 0xea, 0x9a, 0x1c, 0x66, 0x8c, 0x9f, 0xf2, 0x7d, 0x6e, 0x78, 0x09,
+  0x98, 0x15, 0xf0, 0xae, 0x87, 0x48, 0x1c, 0x7a, 0xb5, 0xab, 0x03, 0x08,
+  0x14, 0xc6, 0x79, 0xba, 0xd9, 0x11, 0x4a, 0x11, 0x1e, 0x51, 0xe6, 0x93,
+  0x51, 0x55, 0xde, 0xd6, 0xd0, 0x9e, 0xd4, 0x9e, 0x4a, 0x19, 0xb1, 0x79,
+  0x1d, 0xc0, 0x06, 0xcc, 0xf4, 0x4e, 0x2d, 0x47, 0xe5, 0x37, 0x17, 0xef,
+  0x4e, 0x98, 0x87, 0x9b, 0x33, 0x47, 0x29, 0x39, 0x46, 0xfa, 0xbc, 0x18,
+  0xcd, 0xcc, 0xfa, 0x1b, 0x05, 0xa5, 0x61, 0x69, 0xa6, 0x02, 0x32, 0x48,
+  0x6f, 0x45, 0xf8, 0x49, 0x82, 0x97, 0xf3, 0x58, 0x50, 0x41, 0x5c, 0x41,
+  0x2e, 0x68, 0x27, 0x8b, 0x8b, 0x24, 0xb3, 0xe5, 0x48, 0x96, 0xed, 0xbb,
+  0xfe, 0xed, 0xed, 0x6d, 0x9f, 0x7a, 0xe7, 0x14, 0x13, 0x32, 0xd9, 0x0e,
+  0x19, 0xc0, 0x01, 0x55, 0xea, 0x2d, 0x2d, 0x05, 0x3d, 0x12, 0x9c, 0x3e,
+  0x4f, 0x53, 0x43, 0xb9, 0x18, 0xd0, 0xdd, 0x5a, 0x87, 0x02, 0x29, 0x5e,
+  0x96, 0x2b, 0x1e, 0xe4, 0x3d, 0x69, 0x5b, 0xd9, 0xea, 0x8a, 0x34, 0xa7,
+  0x7c, 0x39, 0xd6, 0x77, 0x5f, 0xff, 0x22, 0x55, 0x84, 0x54, 0x22, 0x89,
+  0x7e, 0x2c, 0x2a, 0xf2, 0x3f, 0xb1, 0x85, 0xd1, 0x8b, 0x40, 0xc4, 0x45,
+  0x27, 0x51, 0x07, 0xb4, 0x0d, 0xc3, 0xb5, 0x2c, 0x13, 0xa5, 0xb7, 0xa6,
+  0xb6, 0xbd, 0xe3, 0x1b, 0xd1, 0x13, 0x99, 0x2a, 0x07, 0xc0, 0x7f, 0xac,
+  0xa6, 0xd9, 0x6c, 0xa6, 0x75, 0x54, 0x6f, 0x49, 0xe1, 0xcf, 0x0d, 0x34,
+  0xbc, 0xa8, 0x8e, 0xed, 0xb8, 0xdf, 0x6b, 0x47, 0xf7, 0xad, 0xe6, 0x1d,
+  0x18, 0x83, 0xc0, 0x11, 0x04, 0xbe, 0xef, 0xb2, 0xed, 0x9e, 0xe9, 0x07,
+  0xa1, 0x4a, 0x71, 0xd7, 0xf4, 0xbc, 0x98, 0x50, 0x4e, 0x0e, 0x13, 0x3f,
+  0xb6, 0xe5, 0xa2, 0xc0, 0xb3, 0xac, 0xba, 0x62, 0xd4, 0x3c, 0x13, 0x55,
+  0x46, 0xb3, 0xea, 0xd3, 0xc4, 0xa3, 0x8b, 0x4a, 0x92, 0x7f, 0xeb, 0xf3,
+  0xa5, 0x0a, 0xcf, 0xca, 0x82, 0x02, 0x18, 0xe2, 0x02, 0xde, 0xe8, 0x4f,
+  0x58, 0xac, 0x4c, 0xd2, 0xc2, 0xcc, 0x84, 0x39, 0xb1, 0x21, 0x96, 0x63,
+  0x3a, 0x7d, 0x3d, 0x2d, 0x17, 0xf5, 0xfd, 0x46, 0x22, 0xa5, 0x17, 0x84,
+  0xad, 0xbc, 0x11, 0xdc, 0x09, 0x00, 0x38, 0xe3, 0xeb, 0x45, 0xf1, 0x49,
+  0xef, 0x45, 0x02, 0xd6, 0xd7, 0xec, 0x5b, 0xec, 0x34, 0xb7, 0xe1, 0x7d,
+  0xec, 0xdf, 0xfc, 0xb6, 0xa3, 0xb3, 0x0c, 0x4f, 0x24, 0xdb, 0x79, 0x8f,
+  0x33, 0xf4, 0x5c, 0x14, 0x21, 0x66, 0xe5, 0x25, 0xad, 0xf0, 0x92, 0x6d,
+  0x90, 0xee, 0x0d, 0x26, 0x07, 0x55, 0x2f, 0xb9, 0x83, 0x19, 0x40, 0xde,
+  0x2c, 0xc9, 0x95, 0x70, 0xb5, 0x13, 0x39, 0x06, 0xe2, 0x28, 0xbc, 0x98,
+  0x52, 0xc1, 0x96, 0x2a, 0xf0, 0x33, 0xb3, 0x06, 0xc9, 0x99, 0x99, 0xaf,
+  0x7e, 0x10, 0x62, 0xba, 0xf2, 0x9a, 0x4b, 0x7d, 0x2a, 0x46, 0xb9, 0xd6,
+  0x6c, 0xe6, 0x39, 0x80, 0xd0, 0x8c, 0x6e, 0x4f, 0xac, 0x35, 0x19, 0x40,
+  0x4a, 0xd8, 0xb4, 0x44, 0xbe, 0x84, 0x5a, 0x9f, 0xd6, 0x53, 0x4c, 0x1c,
+  0xd0, 0x44, 0x34, 0x40, 0x61, 0x78, 0x35, 0xa6, 0xd9, 0xd7, 0xce, 0x6e,
+  0xce, 0xe0, 0xcc, 0x78, 0xa7, 0x97, 0xe6, 0x03, 0x42, 0xc0, 0x12, 0x42,
+  0xd3, 0x4d, 0xd6, 0x31, 0xba, 0x38, 0x57, 0xde, 0x89, 0x95, 0x38, 0x61,
+  0xdc, 0x2a, 0xec, 0x94, 0x7f, 0xb6, 0xbd, 0xdb, 0xc6, 0x59, 0x5d, 0xdd,
+  0x2b, 0x68, 0xb9, 0xbf, 0xd0, 0x51, 0x6a, 0x3a, 0x11, 0xc8, 0xaf, 0x1f,
+  0x2b, 0x26, 0x4b, 0x5a, 0x13, 0x4f, 0x97, 0x6f, 0xea, 0x65, 0xd3, 0xec,
+  0x8a, 0xc7, 0xf4, 0xea, 0xe4, 0xe8, 0xbb, 0xa3, 0x93, 0xe0, 0x02, 0xfb,
+  0x7a, 0x38, 0xdc, 0xfe, 0x94, 0x55, 0x23, 0x54, 0xb3, 0x23, 0x9f, 0x77,
+  0x82, 0xe7, 0x2c, 0x2c, 0xc8, 0x93, 0xea, 0xb7, 0x8e, 0xcc, 0x41, 0x10,
+  0xc2, 0x81, 0xb1, 0x4f, 0xd0, 0x4f, 0xfe, 0xa4, 0x90, 0x41, 0x23, 0x57,
+  0x45, 0x10, 0x68, 0xb8, 0xa5, 0xc6, 0x55, 0x36, 0xe1, 0x62, 0x6f, 0x21,
+  0xf6, 0xac, 0x20, 0x35, 0x3f, 0x49, 0xde, 0x60, 0x29, 0x19, 0x82, 0x8c,
+  0xe8, 0x87, 0x1d, 0x44, 0xf0, 0xc6, 0x1c, 0x39, 0xd6, 0xc9, 0x1b, 0xf9,
+  0xa6, 0x24, 0x2c, 0xd2, 0x6c, 0x30, 0xd7, 0x13, 0x9b, 0x0c, 0xa7, 0xdf,
+  0xf6, 0x0f, 0x86, 0xfd, 0x37, 0x47, 0x27, 0x47, 0x5f, 0x1f, 0x5c, 0x1c,
+  0x29, 0xe3, 0x31, 0xb9, 0xff, 0x97, 0x28, 0x43, 0x2c, 0xef, 0xbe, 0x95,
+  0x69, 0xc1, 0xf8, 0x89, 0x31, 0xbb, 0xc9, 0x99, 0xc7, 0x5e, 0x83, 0xa7,
+  0x5c, 0x92, 0x94, 0x4c, 0x94, 0x86, 0xd1, 0x65, 0xf1, 0xe6, 0xcc, 0xe9,
+  0x9b, 0xce, 0xa4, 0xab, 0xc1, 0x08, 0xd2, 0xe9, 0x2d, 0x55, 0xb4, 0xf9,
+  0x50, 0x10, 0x06, 0x3b, 0xb7, 0xb9, 0x86, 0x3c, 0x7a, 0x6f, 0xf2, 0xbd,
+  0x99, 0x6d, 0x2d, 0x30, 0x98, 0x81, 0x97, 0x18, 0xef, 0x9a, 0x2c, 0x8c,
+  0xe0, 0xe3, 0x1b, 0x3c, 0xd9, 0x61, 0x20, 0x1e, 0xb8, 0x6c, 0xe1, 0xc2,
+  0xfe, 0x2a, 0x42, 0x6b, 0x41, 0x1b, 0xa8, 0x1e, 0x5f, 0x67, 0x33, 0xd1,
+  0x28, 0x29, 0xb2, 0x8d, 0x08, 0x2a, 0x27, 0xe6, 0x09, 0x93, 0x08, 0x1f,
+  0xf4, 0x51, 0xc6, 0x89, 0xf9, 0x60, 0x4f, 0xa2, 0xcd, 0x1b, 0xc3, 0x88,
+  0xde, 0x12, 0x2f, 0x39, 0x39, 0xe9, 0x09, 0xec, 0x81, 0x0c, 0xd4, 0x01,
+  0x60, 0x69, 0x12, 0x71, 0x8e, 0xc7, 0x98, 0xb9, 0xec, 0x52, 0xf7, 0xf2,
+  0xb7, 0x04, 0xc7, 0x1e, 0x45, 0x29, 0x45, 0x76, 0xf0, 0x23, 0x08, 0x4c,
+  0x55, 0x7d, 0xa9, 0x93, 0xbf, 0xd2, 0xc3, 0x29, 0xb8, 0x76, 0x97, 0x8f,
+  0x97, 0xc0, 0x26, 0x8d, 0xc3, 0x7d, 0xa3, 0x82, 0x41, 0xca, 0xd8, 0x51,
+  0x77, 0xb5, 0xbf, 0x6c, 0xa3, 0x29, 0xfb, 0x32, 0x2f, 0x65, 0x22, 0x67,
+  0x59, 0x28, 0xcb, 0x1f, 0x29, 0x18, 0x5a, 0x9c, 0xe6, 0xc4, 0x21, 0xad,
+  0x7f, 0x0d, 0x99, 0xe7, 0x6d, 0x96, 0x56, 0x3f, 0x9b, 0x07, 0x94, 0xbe,
+  0x9b, 0x6f, 0x95, 0xa5, 0xdb, 0xea, 0x79, 0x7e, 0x99, 0x1a, 0xaf, 0xa6,
+  0xc4, 0xd1, 0xd9, 0x39, 0x17, 0xa6, 0x3d, 0xa1, 0xbf, 0x48, 0xd0, 0xa6,
+  0x8e, 0x71, 0x63, 0x49, 0x95, 0x00, 0x42, 0x33, 0x64, 0xf0, 0xfa, 0xdb,
+  0x58, 0xac, 0x82, 0xd8, 0x18, 0xb7, 0x28, 0x54, 0xcc, 0x72, 0x20, 0x62,
+  0x49, 0x8f, 0x5e, 0x6d, 0x33, 0xea, 0x09, 0x75, 0x41, 0x98, 0x57, 0xd1,
+  0x09, 0xc6, 0x5e, 0xaa, 0x6f, 0xfd, 0x94, 0x7e, 0x49, 0xba, 0x9f, 0x72,
+  0x88, 0x2f, 0x99, 0xc6, 0x16, 0x55, 0x3a, 0x35, 0x4b, 0x6f, 0x26, 0x15,
+  0x2a, 0xe1, 0xa5, 0xa6, 0x2b, 0x83, 0xce, 0x50, 0x51, 0xcb, 0x84, 0xb8,
+  0xf8, 0x42, 0x57, 0x3a, 0xaa, 0xb8, 0x88, 0x5f, 0x4c, 0x00, 0xcd, 0x18,
+  0xb0, 0xc2, 0xb4, 0x7b, 0x12, 0xa2, 0x4e, 0x6d, 0xb8, 0x12, 0x50, 0x73,
+  0xc4, 0xae, 0x03, 0x6d, 0x5b, 0xe0, 0xec, 0x8a, 0x60, 0xca, 0xee, 0x25,
+  0xea, 0xca, 0xca, 0xd9, 0xa5, 0x44, 0xb6, 0x52, 0x70, 0x9d, 0xc2, 0xcc,
+  0x18, 0xb1, 0x36, 0x01, 0x34, 0xd8, 0x75, 0x5a, 0x44, 0x4e, 0x9d, 0x99,
+  0x78, 0x5b, 0x4e, 0x06, 0xa3, 0x94, 0x65, 0x8b, 0x28, 0xd4, 0xb4, 0x37,
+  0x5a, 0x60, 0x62, 0xc2, 0xce, 0xdf, 0x91, 0xc2, 0x9e, 0x93, 0x4b, 0x5c,
+  0xba, 0xc2, 0x33, 0x43, 0x64, 0x3b, 0xba, 0xdf, 0xca, 0xd8, 0xae, 0x12,
+  0xf1, 0xe2, 0x1c, 0xf5, 0xad, 0x2d, 0xb8, 0xc4, 0x05, 0x9c, 0x25, 0x16,
+  0x3b, 0x54, 0x23, 0x39, 0xc3, 0x23, 0xda, 0xa4, 0xf2, 0x8c, 0xed, 0xec,
+  0x0d, 0x2c, 0x1f, 0xee, 0xf5, 0xa2, 0x0b, 0x60, 0xc8, 0x18, 0xaf, 0x6f,
+  0xbe, 0x8d, 0xee, 0x92, 0x57, 0xc6, 0x06, 0xf3, 0x68, 0xf3, 0x04, 0xdf,
+  0x7f, 0x83, 0xce, 0xd1, 0x77, 0xf0, 0x02, 0x4e, 0x3e, 0x51, 0xd4, 0x5c,
+  0x89, 0xbd, 0x24, 0x5b, 0x79, 0x94, 0x99, 0xef, 0xe5, 0x54, 0x3e, 0xc8,
+  0x2f, 0xbf, 0x15, 0xc2, 0x63, 0x6b, 0xb3, 0x01, 0x01, 0x28, 0x2f, 0xd9,
+  0x1f, 0x43, 0xef, 0x52, 0x28, 0x3e, 0x4b, 0xfc, 0xda, 0x5b, 0xd8, 0x10,
+  0xd0, 0xde, 0xcf, 0x7a, 0x12, 0x0a, 0x03, 0x2c, 0x2e, 0x88, 0x28, 0x9b,
+  0x09, 0x1c, 0x5b, 0x4e, 0x1e, 0x7d, 0x32, 0xad, 0x6f, 0xe2, 0x27, 0xbc,
+  0xbe, 0x89, 0x9e, 0xf0, 0x47, 0x9c, 0x73, 0x67, 0xfb, 0x1c, 0x9d, 0x0d,
+  0xbf, 0x4b, 0x96, 0xf0, 0x0a, 0x70, 0xc5, 0x07, 0x3e, 0xe2, 0x6e, 0x74,
+  0xb4, 0xe9, 0xfd, 0x63, 0xbe, 0xfc, 0x9c, 0x47, 0xdd, 0xf5, 0xc1, 0x39,
+  0x37, 0xdf, 0x97, 0xc3, 0x7d, 0x76, 0x30, 0xfc, 0xce, 0x3b, 0xd6, 0xde,
+  0x16, 0x88, 0xe5, 0xf1, 0x59, 0x44, 0x34, 0xc5, 0x17, 0x79, 0xeb, 0x50,
+  0x63, 0xd1, 0xfd, 0x5e, 0xdf, 0x3c, 0x66, 0xbf, 0x9b, 0x9e, 0x04, 0xfb,
+  0x3d, 0x98, 0xe3, 0x55, 0xfb, 0xdd, 0x5f, 0xa8, 0x36, 0xd8, 0xd2, 0xdb,
+  0xed, 0x05, 0x17, 0x20, 0xbd, 0x46, 0xe1, 0xec, 0xf8, 0x36, 0xa7, 0x18,
+  0x94, 0x6c, 0xed, 0x10, 0x8b, 0x86, 0x7e, 0xfe, 0xb2, 0x8d, 0x6e, 0x5e,
+  0x08, 0x36, 0xba, 0xae, 0x67, 0x7c, 0xa7, 0x2f, 0xdb, 0xe8, 0x0a, 0x45,
+  0xcd, 0x78, 0x93, 0xfb, 0x7b, 0x3c, 0xdc, 0xdf, 0xde, 0xae, 0xf5, 0x33,
+  0x88, 0xc3, 0x19, 0x52, 0xa0, 0x12, 0x23, 0x8e, 0x68, 0x97, 0x38, 0x3e,
+  0x80, 0x08, 0xff, 0x84, 0x66, 0xf7, 0x73, 0x2e, 0x65, 0xe8, 0x5d, 0xb7,
+  0x59, 0xdd, 0x2d, 0xd4, 0x7c, 0xa5, 0xba, 0x34, 0x6e, 0x71, 0x5c, 0xdb,
+  0x30, 0xd5, 0xfd, 0x5c, 0xf4, 0xcb, 0xe0, 0x44, 0xb6, 0x58, 0x66, 0xb2,
+  0x68, 0x62, 0x73, 0x9d, 0x11, 0x44, 0x00, 0xc4, 0x54, 0xad, 0x73, 0x5a,
+  0xd4, 0x7d, 0x57, 0x20, 0xf6, 0x95, 0xfd, 0x6b, 0xa0, 0xa5, 0xbf, 0x79,
+  0x3f, 0xec, 0x1c, 0xd7, 0x3a, 0x63, 0x60, 0xfe, 0x15, 0x8e, 0x9e, 0xf9,
+  0xbd, 0xcd, 0xa7, 0xa9, 0x5d, 0x41, 0x26, 0x69, 0x32, 0xc8, 0x98, 0xa6,
+  0x4f, 0x0c, 0x3a, 0x09, 0x89, 0x92, 0x05, 0x8a, 0x9a, 0xc6, 0xf0, 0xf7,
+  0x91, 0xcf, 0xc5, 0xeb, 0x9d, 0x64, 0x14, 0x93, 0x27, 0x25, 0xc6, 0x27,
+  0xc3, 0x42, 0x96, 0xfa, 0xa9, 0xb5, 0x21, 0x85, 0xe5, 0x58, 0xd8, 0x9e,
+  0x6c, 0x2d, 0x99, 0x22, 0xf1, 0x6a, 0xe2, 0xc6, 0x22, 0x33, 0x9b, 0xc2,
+  0x4f, 0x23, 0x90, 0x9d, 0xad, 0x95, 0xda, 0x14, 0x4f, 0xe1, 0xfc, 0xe6,
+  0x69, 0x9f, 0x1e, 0x57, 0xe5, 0x49, 0x7e, 0xf8, 0x1c, 0x3f, 0x1c, 0x74,
+  0x27, 0x3a, 0xb0, 0x35, 0xa5, 0x80, 0x9b, 0xf5, 0x32, 0x2e, 0x8a, 0x09,
+  0x51, 0xdb, 0x53, 0xb7, 0x95, 0x9e, 0xfc, 0x36, 0x75, 0x94, 0xfc, 0xc8,
+  0xf6, 0x67, 0x1e, 0x18, 0xb3, 0x97, 0xba, 0x93, 0x9b, 0xa2, 0x04, 0xbc,
+  0xe7, 0x51, 0x7c, 0xd2, 0x0d, 0xbf, 0xb5, 0x7a, 0xfc, 0x4a, 0x86, 0x19,
+  0x5f, 0x72, 0x5e, 0x73, 0xcf, 0x92, 0x1f, 0xe5, 0x5c, 0x4f, 0xe6, 0x55,
+  0x3e, 0xef, 0xeb, 0x9b, 0x2c, 0x84, 0x67, 0xe9, 0x27, 0xb9, 0x1a, 0x9f,
+  0xd2, 0x32, 0x44, 0x06, 0xc9, 0xf5, 0x1e, 0xfd, 0xc0, 0x0e, 0x6d, 0x1b,
+  0xbb, 0x6b, 0x44, 0x65, 0x69, 0x2c, 0x27, 0x22, 0xcc, 0x1b, 0xfe, 0x46,
+  0x2c, 0xdf, 0x46, 0x21, 0xb2, 0xbe, 0xcf, 0x42, 0xb1, 0xf5, 0xe8, 0x85,
+  0x7d, 0xf7, 0xc1, 0xf5, 0x73, 0xfb, 0x61, 0xd5, 0xfa, 0xe9, 0x9c, 0xfd,
+  0xf7, 0x58, 0xbf, 0xe7, 0xbf, 0xdb, 0xfa, 0x3d, 0xff, 0x6f, 0xb1, 0x7e,
+  0xcf, 0xff, 0xf9, 0xf5, 0x7b, 0xda, 0x5d, 0xbf, 0xe7, 0xff, 0x5d, 0xd6,
+  0x4f, 0x2b, 0x19, 0xe9, 0xea, 0x65, 0xc1, 0xfa, 0x91, 0x27, 0x44, 0x50,
+  0xfa, 0x79, 0x2d, 0xb5, 0x79, 0x69, 0xba, 0xf5, 0x4d, 0x0e, 0x3c, 0x08,
+  0xd6, 0x8c, 0x3d, 0xbb, 0x0a, 0x79, 0x44, 0x8e, 0x7f, 0x9c, 0x17, 0x55,
+  0x8a, 0xdb, 0x28, 0xb3, 0xda, 0xf1, 0x59, 0x62, 0x3b, 0xe0, 0x2d, 0x83,
+  0xe3, 0x33, 0x82, 0x92, 0x13, 0x75, 0xb9, 0xd6, 0xe4, 0x87, 0x33, 0x13,
+  0xc0, 0xa9, 0x6d, 0xb5, 0xcb, 0xc9, 0x8c, 0x11, 0x16, 0x99, 0xc9, 0xdb,
+  0x7f, 0x45, 0xf3, 0xd5, 0xe7, 0xc7, 0xbf, 0x88, 0x26, 0x1a, 0xa1, 0x60,
+  0xa4, 0xeb, 0x52, 0xcc, 0xcd, 0xee, 0x4d, 0xdd, 0xa3, 0x97, 0x6d, 0x59,
+  0x4d, 0x1d, 0x5d, 0xc2, 0x71, 0xff, 0xa1, 0x25, 0x7b, 0x03, 0xcd, 0x60,
+  0x31, 0x9b, 0x4b, 0x02, 0xe2, 0x03, 0x09, 0x58, 0xd0, 0x3f, 0xb7, 0x92,
+  0xef, 0x91, 0x5d, 0xc5, 0x9e, 0x55, 0xc9, 0x4a, 0xb0, 0xd5, 0xce, 0x15,
+  0x88, 0xad, 0x61, 0x8b, 0x25, 0x4c, 0x49, 0x51, 0xd2, 0x9a, 0x4e, 0x7a,
+  0x31, 0x23, 0xe7, 0x6d, 0xf9, 0xf0, 0xac, 0xf0, 0x35, 0x24, 0xe5, 0x86,
+  0xc4, 0x46, 0x92, 0x8f, 0x46, 0x69, 0x5a, 0xe9, 0x5a, 0xe4, 0x8c, 0x0c,
+  0xea, 0x34, 0x53, 0x8e, 0x99, 0xd7, 0x4d, 0x53, 0x03, 0x49, 0xcb, 0xf0,
+  0x8a, 0x6f, 0x6b, 0xef, 0xc1, 0x02, 0x13, 0x83, 0x12, 0xab, 0x2a, 0x03,
+  0xbb, 0x50, 0xf2, 0xfb, 0x2d, 0x81, 0x4b, 0x71, 0xa3, 0x20, 0x7d, 0x82,
+  0x3e, 0xb4, 0x4a, 0x17, 0xf4, 0x47, 0x61, 0xaa, 0x8d, 0xc2, 0x38, 0x79,
+  0xc4, 0x7f, 0xc0, 0xfe, 0x5d, 0x02, 0xe2, 0x66, 0x1d, 0xc2, 0xb7, 0x43,
+  0x83, 0x35, 0xf7, 0x21, 0xe2, 0x83, 0xb5, 0x55, 0xf0, 0x4d, 0xc6, 0x05,
+  0x5e, 0x67, 0x7e, 0xba, 0xa3, 0xe5, 0x8a, 0x63, 0x87, 0x30, 0x03, 0x8f,
+  0xcc, 0xe0, 0x04, 0xc5, 0x16, 0x94, 0x81, 0x40, 0x46, 0xb3, 0xcc, 0xd6,
+  0xba, 0x30, 0xb0, 0x2c, 0x84, 0x23, 0x32, 0xa5, 0x0d, 0x01, 0x96, 0x90,
+  0x7f, 0x61, 0x7a, 0xa1, 0x87, 0xea, 0xf4, 0x45, 0x52, 0x76, 0xc5, 0xb1,
+  0xd0, 0x55, 0x08, 0xc2, 0x0e, 0x59, 0x12, 0x73, 0x9c, 0x5a, 0xba, 0x24,
+  0xb8, 0x64, 0x8a, 0xa6, 0x2a, 0xe7, 0xf7, 0xc9, 0xd7, 0x29, 0x0d, 0x0b,
+  0x6a, 0x61, 0x9a, 0xcd, 0x82, 0xe4, 0x12, 0x2e, 0x8b, 0x29, 0x5a, 0x1a,
+  0x97, 0xc8, 0xd4, 0x11, 0x42, 0xaf, 0xe4, 0x69, 0x31, 0x72, 0xd9, 0xcc,
+  0x17, 0xf9, 0xf3, 0x04, 0xf6, 0xcd, 0xb0, 0xc9, 0xe1, 0xf0, 0x24, 0x54,
+  0xa6, 0xb5, 0xdc, 0xc4, 0xca, 0x64, 0x62, 0xb4, 0xd6, 0x6f, 0x9f, 0x28,
+  0x33, 0x72, 0x6e, 0xfc, 0x55, 0xf4, 0x30, 0xcb, 0xb8, 0xb3, 0xa9, 0xe6,
+  0xdb, 0x0b, 0x51, 0x7f, 0x32, 0xae, 0xee, 0xe7, 0x64, 0xa0, 0x49, 0xf6,
+  0x1c, 0x9f, 0x3d, 0xea, 0x1f, 0xb3, 0x35, 0xae, 0xcc, 0x57, 0xfc, 0x80,
+  0x08, 0x99, 0xbc, 0x0a, 0x41, 0x4c, 0xc1, 0x4c, 0x62, 0x2f, 0x25, 0x62,
+  0x1a, 0x11, 0xcc, 0x24, 0xb3, 0x26, 0x60, 0x62, 0x70, 0x64, 0xa2, 0x01,
+  0xdd, 0x18, 0x8a, 0xc9, 0x74, 0xa8, 0xcb, 0xe1, 0xd6, 0x41, 0x3a, 0x26,
+  0xd1, 0x63, 0xc3, 0xa3, 0xbd, 0xa5, 0x17, 0x83, 0xbc, 0xd1, 0x29, 0x73,
+  0xac, 0x22, 0xd8, 0x32, 0x5b, 0xa7, 0x94, 0x9a, 0x5d, 0x04, 0x34, 0x10,
+  0x1c, 0xf2, 0xde, 0xdd, 0xd9, 0x79, 0x90, 0xdf, 0x43, 0xdc, 0xbf, 0x2b,
+  0x69, 0x3e, 0x48, 0x46, 0xb1, 0x8f, 0xd9, 0x26, 0xa3, 0xa6, 0xb9, 0x24,
+  0x1c, 0x74, 0x19, 0x91, 0xcc, 0x27, 0x2d, 0xdd, 0x86, 0x3b, 0x82, 0x2c,
+  0xeb, 0x98, 0x06, 0x07, 0x64, 0x1f, 0x46, 0x84, 0x1d, 0xa1, 0x8f, 0xf5,
+  0x7e, 0xeb, 0x9d, 0x68, 0xed, 0x4f, 0xea, 0x10, 0xbd, 0x24, 0xda, 0xcb,
+  0x20, 0xf9, 0xea, 0xde, 0x19, 0x4e, 0x90, 0x53, 0xec, 0x90, 0x43, 0xaf,
+  0xd8, 0xd5, 0x2a, 0x95, 0xe7, 0x57, 0x91, 0xaa, 0xc4, 0x39, 0x3c, 0xfe,
+  0xc0, 0x82, 0x05, 0xcd, 0x1a, 0x01, 0x34, 0xaf, 0xd1, 0x2a, 0xa8, 0x00,
+  0xe2, 0x1e, 0x03, 0x3b, 0x5a, 0x73, 0x7b, 0x75, 0x4b, 0x5f, 0x78, 0x55,
+  0x2c, 0xf8, 0x52, 0x59, 0x49, 0xbc, 0xda, 0x66, 0x64, 0x69, 0xa3, 0xf2,
+  0x3e, 0x6b, 0xab, 0x25, 0x94, 0x13, 0xd9, 0x47, 0xe6, 0x63, 0x37, 0xdd,
+  0x9b, 0x92, 0x25, 0x49, 0x76, 0x11, 0x95, 0x89, 0x1a, 0x99, 0x52, 0x80,
+  0xd5, 0x98, 0xbf, 0x0c, 0x83, 0xd0, 0x5c, 0x89, 0x0e, 0xd1, 0xa4, 0x2f,
+  0x58, 0x95, 0x22, 0x5b, 0x4f, 0xfa, 0xa4, 0xf4, 0x78, 0x67, 0x6c, 0x7a,
+  0x4c, 0xc7, 0x96, 0x66, 0x63, 0x3a, 0xc2, 0x42, 0xc5, 0xcb, 0xa3, 0x9e,
+  0x1a, 0xe8, 0x64, 0x9c, 0xe5, 0x89, 0x70, 0x31, 0x54, 0x09, 0xd6, 0x3d,
+  0x3e, 0x9c, 0x9f, 0xf4, 0x12, 0x29, 0x1b, 0x4b, 0x80, 0x4f, 0xb3, 0xd2,
+  0x71, 0xdd, 0xc8, 0x91, 0x22, 0x31, 0x07, 0x1e, 0x8f, 0xa5, 0x76, 0x64,
+  0x4e, 0x24, 0xb6, 0xe1, 0xfc, 0x34, 0x4d, 0xd6, 0x8a, 0x90, 0x09, 0x5d,
+  0x52, 0x5e, 0x6a, 0xa5, 0x79, 0x90, 0xd8, 0x25, 0xea, 0x05, 0xdc, 0x87,
+  0xda, 0x69, 0xcb, 0x9f, 0x24, 0xcf, 0x4a, 0xda, 0x29, 0x39, 0x2b, 0x22,
+  0xb9, 0xab, 0x12, 0x8a, 0x24, 0xea, 0xb5, 0x04, 0xcb, 0x83, 0xec, 0xd5,
+  0x45, 0xe5, 0x05, 0x24, 0xd7, 0xaf, 0x73, 0xb3, 0xae, 0xc5, 0x3a, 0xee,
+  0xd3, 0x7a, 0x31, 0x62, 0xca, 0xc0, 0x06, 0x1f, 0x8e, 0xc1, 0x83, 0x09,
+  0x5f, 0xe7, 0xbc, 0x63, 0xf1, 0x9a, 0xb0, 0x2d, 0x10, 0x6c, 0x2f, 0x69,
+  0x1d, 0x0a, 0x55, 0x38, 0xb9, 0x6b, 0x2e, 0x73, 0x36, 0x5a, 0x63, 0x81,
+  0x77, 0x8a, 0x4b, 0xa6, 0xa1, 0xd3, 0x8f, 0x9a, 0x29, 0x3d, 0xbf, 0x6e,
+  0x81, 0xf3, 0xf6, 0xa5, 0x33, 0xf2, 0x01, 0xb0, 0xc2, 0x4b, 0x13, 0x1d,
+  0x57, 0x57, 0x2a, 0xcb, 0xb7, 0x10, 0xe1, 0xfe, 0x14, 0xac, 0x53, 0x7a,
+  0x8f, 0xac, 0x01, 0xfb, 0x69, 0xec, 0xf0, 0x80, 0xc0, 0x89, 0xc8, 0xcc,
+  0x4a, 0xe8, 0x8e, 0xb2, 0x97, 0x89, 0x1b, 0x6f, 0x5c, 0xe5, 0xf3, 0x86,
+  0xc3, 0xbf, 0x02, 0x38, 0x7d, 0x48, 0x0d, 0xbb, 0x9a, 0x96, 0xa3, 0x94,
+  0xcf, 0x89, 0x05, 0x7b, 0xa8, 0xdb, 0xa9, 0x45, 0x2c, 0x0a, 0x1e, 0x6c,
+  0xb3, 0x3d, 0x23, 0x89, 0x3a, 0x66, 0xc8, 0xfd, 0x7d, 0x94, 0xf2, 0xa5,
+  0x78, 0xd4, 0xaa, 0x0f, 0xda, 0x4f, 0x30, 0x7d, 0x57, 0xff, 0xb2, 0x27,
+  0x27, 0x58, 0x0b, 0xb4, 0x01, 0x2b, 0x53, 0x7b, 0xe7, 0x2a, 0x50, 0x85,
+  0x90, 0x03, 0x3d, 0x59, 0x64, 0x6d, 0xe8, 0xcc, 0x86, 0x44, 0xeb, 0xa4,
+  0xd8, 0x10, 0xe0, 0x1b, 0x20, 0x14, 0x07, 0x19, 0x29, 0x47, 0xc5, 0xa2,
+  0xb0, 0x10, 0x22, 0xf2, 0x14, 0x18, 0x87, 0x2b, 0x6f, 0x5d, 0xd0, 0xcd,
+  0xe4, 0x3a, 0xa7, 0x88, 0x44, 0x6f, 0xae, 0x38, 0x2b, 0xba, 0x0a, 0x2a,
+  0x34, 0x5f, 0xb2, 0x9e, 0x06, 0x9c, 0x27, 0xaf, 0xc9, 0x8a, 0x99, 0xf1,
+  0x29, 0x81, 0xf7, 0x5a, 0x52, 0xcd, 0x7e, 0x3a, 0x7e, 0x45, 0x41, 0xb4,
+  0xd5, 0xa4, 0xcb, 0x93, 0x93, 0x75, 0x93, 0x0a, 0xa4, 0x73, 0xf6, 0x4a,
+  0x8a, 0xf8, 0x2f, 0xb8, 0xed, 0x94, 0x86, 0x97, 0xa5, 0x41, 0x3c, 0xb3,
+  0x86, 0x4e, 0x8a, 0x94, 0x6c, 0x47, 0x85, 0x6a, 0xac, 0x39, 0xb4, 0x50,
+  0x71, 0xdc, 0xea, 0x86, 0xca, 0x9a, 0xb1, 0xf7, 0xcb, 0x49, 0x96, 0x4e,
+  0x63, 0xd4, 0xf6, 0xd4, 0x61, 0xf2, 0x36, 0xb2, 0x70, 0x23, 0x8e, 0x83,
+  0x42, 0xfc, 0xd6, 0x82, 0x3b, 0x65, 0xd8, 0x55, 0x21, 0x59, 0x9d, 0xda,
+  0x43, 0x9c, 0xaa, 0x88, 0xa1, 0x43, 0x05, 0x16, 0xf0, 0x00, 0xf2, 0xff,
+  0xc6, 0x92, 0x57, 0x0c, 0x29, 0xea, 0x20, 0xf4, 0xd0, 0xff, 0xdf, 0x9d,
+  0xd8, 0x07, 0xb0, 0x03, 0x80, 0x11, 0xee, 0x36, 0x27, 0x8e, 0x38, 0xce,
+  0xeb, 0xc2, 0x45, 0xa3, 0x50, 0x76, 0xea, 0x18, 0xc3, 0x0d, 0x48, 0x4c,
+  0x6e, 0xc9, 0x39, 0x44, 0xb8, 0x5b, 0x24, 0xc7, 0x3c, 0x5c, 0xe9, 0x9b,
+  0x4c, 0xa1, 0x22, 0xb0, 0x2f, 0x78, 0x01, 0x1a, 0x9b, 0xee, 0x46, 0xad,
+  0x89, 0x9c, 0x61, 0x21, 0xb3, 0xb7, 0xb7, 0x84, 0xfa, 0x40, 0x8a, 0xd9,
+  0xca, 0x1e, 0xc3, 0x61, 0xaf, 0xd3, 0x4b, 0x5b, 0x67, 0x5a, 0x04, 0x78,
+  0x39, 0x36, 0x53, 0x88, 0x48, 0x19, 0x18, 0x45, 0x48, 0x43, 0x0a, 0x02,
+  0x69, 0x2c, 0xae, 0x49, 0x4a, 0xda, 0x6b, 0x97, 0x0e, 0x82, 0xc2, 0x27,
+  0xeb, 0x69, 0x3e, 0xb7, 0x3e, 0xce, 0x1e, 0x31, 0xb5, 0x32, 0x8c, 0x83,
+  0x02, 0xb4, 0xb7, 0x21, 0x2b, 0x61, 0xa7, 0xe6, 0xae, 0x10, 0x58, 0x4e,
+  0x49, 0xfd, 0xdf, 0xec, 0xb4, 0xff, 0x74, 0x67, 0x17, 0xdd, 0x7d, 0xba,
+  0xf3, 0xd9, 0x56, 0xfb, 0x6e, 0x9e, 0xd6, 0x59, 0x1f, 0x38, 0x9e, 0xb8,
+  0x8e, 0xca, 0xd5, 0x84, 0x9c, 0x9f, 0x07, 0xfa, 0x28, 0xbd, 0x24, 0xe0,
+  0x9f, 0xc9, 0xa2, 0x52, 0x44, 0x1c, 0x15, 0x98, 0x22, 0x9b, 0xb1, 0xbe,
+  0x26, 0xde, 0xb4, 0xe0, 0xae, 0x77, 0xef, 0xc0, 0x98, 0x82, 0x0b, 0x9d,
+  0x67, 0xca, 0xec, 0x1e, 0x7a, 0xd7, 0x16, 0x26, 0x92, 0xc9, 0x60, 0x70,
+  0x11, 0x59, 0x8c, 0x21, 0x87, 0xad, 0x4f, 0x16, 0xc5, 0x49, 0x08, 0x1c,
+  0x45, 0x69, 0x57, 0x85, 0xb4, 0x92, 0xe7, 0x6d, 0x5e, 0xe4, 0xf5, 0x35,
+  0xaa, 0x49, 0xd6, 0x75, 0x7a, 0x95, 0x85, 0x69, 0xaa, 0x46, 0x24, 0x19,
+  0xc3, 0x49, 0xaa, 0xbe, 0x83, 0x43, 0x9a, 0xb0, 0x38, 0x7c, 0x1e, 0x04,
+  0xc6, 0x2f, 0x65, 0x90, 0x16, 0x08, 0x54, 0xd8, 0x61, 0x2e, 0xa9, 0xd8,
+  0xee, 0x8a, 0x73, 0x2d, 0xab, 0xcd, 0x45, 0x05, 0x63, 0xc0, 0x70, 0xc3,
+  0xa5, 0x3c, 0xb8, 0x96, 0x47, 0x80, 0xd8, 0x23, 0x3f, 0xc2, 0x26, 0x2d,
+  0xee, 0xe9, 0xd0, 0x08, 0x21, 0x57, 0x48, 0x12, 0xa8, 0x28, 0xf3, 0xb3,
+  0x1f, 0x8c, 0x46, 0x3a, 0x78, 0x69, 0x7f, 0xbc, 0xf5, 0xb8, 0x62, 0x5e,
+  0x7b, 0x1d, 0x0d, 0x8d, 0xe0, 0x89, 0xe2, 0xce, 0x86, 0xc1, 0xf2, 0x9a,
+  0xff, 0xb1, 0xc4, 0x09, 0x81, 0xac, 0xb1, 0xe4, 0xf8, 0xdd, 0x01, 0x18,
+  0x61, 0x1c, 0x47, 0xab, 0x0f, 0xe3, 0xf1, 0xb3, 0x6c, 0x50, 0xd9, 0x8c,
+  0x14, 0xd6, 0x28, 0x45, 0x97, 0x65, 0xd5, 0x64, 0x50, 0x55, 0x8b, 0x34,
+  0x99, 0xe9, 0xba, 0xa7, 0x54, 0xc3, 0x85, 0x4e, 0x81, 0x91, 0x91, 0x27,
+  0x19, 0x97, 0xb5, 0x48, 0x36, 0xbe, 0xdc, 0x88, 0xe4, 0xe3, 0x6c, 0xbc,
+  0xf2, 0x08, 0x82, 0xeb, 0x9e, 0xa5, 0x3c, 0xdf, 0xf8, 0x9c, 0x70, 0x9a,
+  0x44, 0x8a, 0xc0, 0xdf, 0x94, 0x35, 0x60, 0xc8, 0x61, 0x3c, 0xba, 0xaa,
+  0x10, 0x2a, 0x61, 0xf8, 0x6a, 0xa3, 0x38, 0xb8, 0x3e, 0x29, 0xb1, 0x27,
+  0x77, 0xc6, 0xad, 0x3a, 0xdd, 0x46, 0x40, 0x79, 0x43, 0x50, 0x66, 0x26,
+  0xdb, 0x90, 0x32, 0x9e, 0xae, 0xc4, 0x1c, 0xf7, 0x89, 0x3b, 0x03, 0x77,
+  0xd7, 0x78, 0x9c, 0x93, 0xee, 0x82, 0x93, 0x6f, 0x7e, 0x79, 0x75, 0x15,
+  0xc5, 0x9a, 0x98, 0x29, 0xa0, 0x85, 0xa7, 0x31, 0x5f, 0x66, 0x69, 0x03,
+  0x8d, 0x83, 0x6e, 0xfa, 0xe5, 0x78, 0x52, 0xa7, 0xc1, 0x47, 0x9e, 0xf1,
+  0x46, 0xf1, 0xca, 0x47, 0xed, 0xc7, 0x77, 0x01, 0x36, 0x01, 0xef, 0x01,
+  0xe2, 0xe4, 0xc3, 0xcf, 0xac, 0x17, 0xea, 0x32, 0x35, 0x9b, 0xe2, 0x5e,
+  0x22, 0x7c, 0x53, 0xa0, 0xab, 0x59, 0x82, 0x64, 0xb3, 0x45, 0x77, 0x8b,
+  0x4f, 0x15, 0xad, 0xc8, 0xa0, 0x5e, 0xa2, 0xfe, 0x67, 0xfc, 0x67, 0xc2,
+  0x54, 0xd9, 0xc4, 0x32, 0x66, 0x71, 0xc0, 0x89, 0x72, 0xdf, 0x3b, 0x78,
+  0x6f, 0x50, 0xbb, 0xd9, 0x03, 0xfb, 0x8a, 0xb2, 0xa2, 0x96, 0x20, 0xf0,
+  0xca, 0x02, 0x49, 0xf7, 0xbd, 0x43, 0x87, 0x82, 0xe5, 0xbd, 0x08, 0xb1,
+  0xbc, 0x6c, 0x48, 0x18, 0x49, 0xb4, 0x8d, 0x43, 0xc2, 0x20, 0xeb, 0x31,
+  0x51, 0x51, 0x40, 0xc8, 0x94, 0xc9, 0xf9, 0xdb, 0xc3, 0x64, 0xef, 0xc9,
+  0x8b, 0x17, 0x83, 0x28, 0x53, 0x21, 0x27, 0x58, 0x9a, 0x4d, 0x48, 0x33,
+  0xe5, 0x58, 0xed, 0x7a, 0x96, 0x9f, 0x94, 0xbe, 0x4f, 0x3b, 0x8c, 0xf9,
+  0xc1, 0x67, 0x44, 0x41, 0x42, 0xc2, 0x71, 0x31, 0x0d, 0x8d, 0x7c, 0xc4,
+  0xae, 0x66, 0xa4, 0x58, 0x88, 0x14, 0x83, 0x82, 0x45, 0x52, 0x63, 0x96,
+  0x2f, 0x51, 0xea, 0x32, 0xc1, 0x49, 0x31, 0x7e, 0x4e, 0x98, 0xbd, 0x04,
+  0xbc, 0xc7, 0x48, 0x48, 0xa3, 0x37, 0x00, 0xf6, 0xcb, 0xc1, 0x77, 0x9e,
+  0x8e, 0x8d, 0x48, 0x3a, 0x25, 0xcd, 0xcf, 0x46, 0xa2, 0xe1, 0xb3, 0x51,
+  0x66, 0x33, 0xa4, 0xb9, 0x50, 0x4e, 0x87, 0xc5, 0x82, 0x93, 0x3e, 0x0b,
+  0xca, 0x94, 0x21, 0x4e, 0x7a, 0xf3, 0x81, 0x4e, 0x73, 0xc8, 0x71, 0xbc,
+  0xca, 0x9a, 0x30, 0xbb, 0xc3, 0x83, 0x59, 0xae, 0x68, 0x3c, 0x66, 0x19,
+  0x49, 0x72, 0x4a, 0xf2, 0x4a, 0x0b, 0xad, 0x6b, 0x79, 0x7a, 0x1a, 0x98,
+  0xf2, 0xb8, 0x7f, 0x89, 0xd5, 0x78, 0x25, 0x53, 0x2f, 0xc9, 0x5a, 0x5f,
+  0x46, 0x29, 0x8a, 0x04, 0xeb, 0x09, 0xbe, 0x9c, 0xa6, 0x31, 0x8a, 0xb5,
+  0x93, 0xdd, 0x00, 0xd6, 0x82, 0x1a, 0x45, 0xa0, 0x9f, 0x3c, 0xc1, 0x0c,
+  0xa0, 0x9b, 0xc6, 0xb8, 0x03, 0x5f, 0xd9, 0x46, 0xa5, 0x28, 0x01, 0x61,
+  0x9b, 0xa9, 0x2b, 0xb1, 0x99, 0x50, 0xa6, 0x61, 0x92, 0x0f, 0xe6, 0xe9,
+  0xc0, 0xee, 0xa1, 0x77, 0xbd, 0x79, 0x0a, 0xd7, 0xde, 0x8f, 0xa7, 0x4a,
+  0x4e, 0x3c, 0x4f, 0xb1, 0xc3, 0xc4, 0xfa, 0xce, 0x7d, 0x19, 0xa9, 0x75,
+  0x9a, 0x76, 0x5d, 0xa5, 0x34, 0x54, 0x97, 0x8b, 0x89, 0x9d, 0x75, 0x55,
+  0x66, 0xdc, 0x4b, 0x24, 0xc6, 0xeb, 0xac, 0x92, 0xc7, 0xb2, 0xa9, 0x16,
+  0x63, 0x52, 0x2d, 0x61, 0x9a, 0xe3, 0x53, 0xb1, 0xe2, 0x39, 0x94, 0x41,
+  0xd1, 0x1a, 0x31, 0x4a, 0x5c, 0x61, 0xbd, 0x30, 0xcb, 0xca, 0xe7, 0x25,
+  0x90, 0x34, 0xea, 0x9a, 0xea, 0x20, 0xcb, 0x48, 0x83, 0xc1, 0x0c, 0x46,
+  0x68, 0xa5, 0x7f, 0x48, 0xb8, 0x46, 0xc9, 0x5e, 0x53, 0x25, 0x39, 0x82,
+  0xb7, 0x23, 0x23, 0xe6, 0xed, 0xe4, 0x0d, 0xd5, 0x83, 0xc3, 0x8d, 0x1e,
+  0xc9, 0x77, 0xdb, 0xa8, 0x5b, 0x90, 0x5f, 0xbe, 0x98, 0x48, 0x9f, 0xab,
+  0xb2, 0xab, 0x05, 0x5d, 0x76, 0x98, 0xae, 0x4d, 0x65, 0x40, 0xd4, 0x27,
+  0x92, 0x79, 0x1e, 0xc8, 0x0f, 0x12, 0x02, 0x62, 0xe8, 0x71, 0xa5, 0xb7,
+  0x45, 0x61, 0x66, 0xad, 0x59, 0x50, 0x38, 0x6b, 0xca, 0xd5, 0x48, 0x8c,
+  0x18, 0xfb, 0x1b, 0xfc, 0x80, 0xa5, 0xcc, 0x00, 0x33, 0xe8, 0x4f, 0x62,
+  0x99, 0x0a, 0x44, 0xcb, 0x88, 0x80, 0xb4, 0xd1, 0xbb, 0xc1, 0x4a, 0x44,
+  0x61, 0xfd, 0x46, 0xa5, 0x00, 0xd7, 0x84, 0x22, 0x9f, 0xcc, 0xe7, 0x14,
+  0xef, 0x1a, 0x73, 0x90, 0x00, 0x1a, 0x0b, 0x66, 0x25, 0xc4, 0xf4, 0x15,
+  0xa0, 0x34, 0x4b, 0x54, 0x7d, 0xf2, 0x99, 0xee, 0x58, 0x01, 0xa3, 0xb8,
+  0x1c, 0x0d, 0x93, 0x93, 0x3e, 0x84, 0xbd, 0x83, 0x0a, 0xc8, 0x13, 0xa8,
+  0xbc, 0x0e, 0x0b, 0xc3, 0xe2, 0x1e, 0x60, 0xd5, 0xfa, 0x6f, 0xd6, 0xea,
+  0x25, 0xe1, 0x17, 0xe1, 0x41, 0x01, 0xf3, 0xe3, 0x3e, 0x07, 0xfc, 0x51,
+  0x7d, 0x4a, 0x64, 0x9a, 0xda, 0x1f, 0x9a, 0x34, 0xc2, 0x5a, 0xe2, 0x86,
+  0x91, 0x9e, 0x34, 0xef, 0x1b, 0x72, 0x76, 0x63, 0xe4, 0x1b, 0xce, 0xd8,
+  0x87, 0xb4, 0xe6, 0x93, 0x62, 0xb9, 0xea, 0xac, 0x18, 0x21, 0xad, 0xaa,
+  0x4a, 0x8d, 0xd0, 0xfc, 0xdb, 0xfc, 0x6a, 0x09, 0x2d, 0x1a, 0x17, 0xb8,
+  0x30, 0x06, 0x43, 0x58, 0x56, 0x07, 0xfb, 0xb0, 0xff, 0x36, 0x91, 0xfe,
+  0xbc, 0xfe, 0xb2, 0xd5, 0x9c, 0xb2, 0xcf, 0xfb, 0xe4, 0xca, 0x02, 0x5f,
+  0x1e, 0x5f, 0xe5, 0x0f, 0x4c, 0x02, 0x33, 0x93, 0x5b, 0x68, 0x67, 0x7d,
+  0x5d, 0x66, 0xb2, 0x72, 0x05, 0xec, 0x60, 0x5b, 0x30, 0xc5, 0x8c, 0xab,
+  0x8e, 0xd2, 0xe2, 0xab, 0xd2, 0xbb, 0xbc, 0xdb, 0xb8, 0xda, 0xff, 0xa3,
+  0xbc, 0x2e, 0xe8, 0x1f, 0xf4, 0x05, 0xfa, 0xc0, 0xeb, 0xdd, 0xdd, 0x68,
+  0xcf, 0x97, 0xf6, 0x97, 0x3b, 0xac, 0x3d, 0xa6, 0xfb, 0x48, 0xc0, 0x7a,
+  0x9e, 0x78, 0x6b, 0xd9, 0xff, 0x03, 0xe4, 0x12, 0x85, 0xfe, 0x36, 0x9c,
+  0x1f, 0x10, 0x0b, 0x79, 0xaf, 0x32, 0x10, 0x2a, 0x90, 0x8a, 0xec, 0xa9,
+  0x27, 0xf3, 0x52, 0x90, 0xf7, 0x5d, 0x55, 0x02, 0x0c, 0x16, 0xb4, 0x28,
+  0xcb, 0x87, 0xbf, 0x4e, 0x91, 0x9a, 0xfb, 0xd7, 0xaf, 0xae, 0x17, 0x57,
+  0x19, 0x84, 0x67, 0x73, 0xd7, 0xac, 0x3f, 0x6a, 0xec, 0xae, 0xfa, 0x19,
+  0x87, 0x88, 0x1b, 0x2f, 0x02, 0xce, 0xf4, 0x2c, 0xbe, 0x1e, 0xc1, 0x9e,
+  0x43, 0x32, 0x97, 0xb4, 0x5c, 0x72, 0x37, 0xdf, 0x82, 0x35, 0xd2, 0x1e,
+  0x4f, 0x9b, 0xa4, 0xaf, 0xbb, 0x24, 0xe4, 0x15, 0x23, 0xb8, 0xcd, 0x46,
+  0xaf, 0xbf, 0x24, 0x17, 0xd7, 0x1d, 0x68, 0xc0, 0x59, 0xb5, 0xa5, 0xc9,
+  0xdb, 0x06, 0x2b, 0x78, 0xe2, 0x0d, 0x62, 0x2d, 0x10, 0x47, 0xcb, 0x9b,
+  0xf5, 0xf2, 0x3f, 0xbc, 0x26, 0x2f, 0xcb, 0x72, 0x65, 0x8b, 0xea, 0xc2,
+  0xc1, 0x9c, 0x78, 0xc0, 0x32, 0x86, 0x5b, 0xb9, 0xdc, 0x36, 0xde, 0x12,
+  0xb8, 0x6c, 0x5a, 0x77, 0x66, 0x2c, 0xdd, 0x18, 0x15, 0xd5, 0xd9, 0x54,
+  0xd7, 0x6b, 0xe7, 0x75, 0x8f, 0xd3, 0x2b, 0xa2, 0x85, 0x1f, 0xdc, 0x18,
+  0xf8, 0x40, 0x62, 0x1f, 0xd0, 0x5f, 0x3f, 0xb7, 0xaf, 0xd3, 0x7f, 0xcc,
+  0x79, 0x06, 0xb1, 0xee, 0x8a, 0xd1, 0x10, 0x42, 0x53, 0xdf, 0xd9, 0xe6,
+  0x6a, 0xe5, 0x5a, 0x18, 0x72, 0xa3, 0xc7, 0xda, 0xf6, 0xe7, 0x1b, 0xf0,
+  0xe7, 0x2a, 0xec, 0x07, 0x35, 0x57, 0x20, 0xe5, 0x26, 0x65, 0xa0, 0xdb,
+  0x12, 0x32, 0x8e, 0x8b, 0xb2, 0xa0, 0xf7, 0x4b, 0x3a, 0x4e, 0x3d, 0xd7,
+  0xae, 0xff, 0xb4, 0x6e, 0x3b, 0xff, 0xd3, 0xba, 0xeb, 0xfe, 0x4f, 0xeb,
+  0x6e, 0x00, 0x3f, 0xad, 0x13, 0xa7, 0x1c, 0x0d, 0x22, 0xb0, 0x16, 0x7f,
+  0xf1, 0xa2, 0x6f, 0xf0, 0x57, 0xdd, 0x47, 0xbd, 0x6f, 0x7a, 0x9f, 0x5c,
+  0xdf, 0x58, 0x35, 0x69, 0x7e, 0x98, 0x08, 0x59, 0x0a, 0xdd, 0x39, 0x34,
+  0x02, 0xbb, 0x35, 0x4d, 0x6e, 0x5a, 0xc8, 0x42, 0x0b, 0xbc, 0xe6, 0xde,
+  0x03, 0x34, 0xe3, 0xae, 0xc0, 0x8c, 0xc7, 0x9d, 0x6e, 0x29, 0xe9, 0x74,
+  0x1d, 0xb4, 0x46, 0x67, 0x50, 0x36, 0xd1, 0xbe, 0x1e, 0xdc, 0x40, 0xff,
+  0xc3, 0x7c, 0x01, 0x46, 0x00, 0xda, 0x90, 0x53, 0x0d, 0x1e, 0x0a, 0x41,
+  0x78, 0x01, 0xbc, 0x5a, 0x70, 0x00, 0x93, 0x2f, 0xc0, 0x4b, 0xce, 0xfb,
+  0xe0, 0x2d, 0x11, 0xe0, 0x9a, 0x67, 0x39, 0x2a, 0x0b, 0x99, 0x51, 0x4d,
+  0xd9, 0x4c, 0xdd, 0xa6, 0x7b, 0x01, 0x38, 0x44, 0x94, 0xfb, 0xa9, 0x61,
+  0xa7, 0x8b, 0x05, 0x2b, 0x45, 0x7b, 0x78, 0x1e, 0x96, 0x6f, 0x69, 0xd2,
+  0xc6, 0xa7, 0x65, 0x55, 0xbf, 0x5e, 0xaf, 0xa8, 0x54, 0x63, 0x72, 0x55,
+  0x19, 0x35, 0xf6, 0x73, 0xda, 0x5a, 0x0b, 0xb3, 0x58, 0xee, 0x9c, 0xde,
+  0xf5, 0x67, 0xf7, 0xa6, 0xdf, 0x1b, 0xbf, 0x68, 0x67, 0x78, 0x22, 0x6d,
+  0x82, 0x38, 0xba, 0x11, 0x8e, 0xb3, 0xa4, 0x0b, 0x22, 0xe0, 0xa3, 0xeb,
+  0x1d, 0x4a, 0xf9, 0xfd, 0xeb, 0x18, 0x63, 0x55, 0x30, 0x10, 0x4f, 0xf2,
+  0xc2, 0x5e, 0x7b, 0x7d, 0xfa, 0xed, 0xe7, 0xda, 0xc0, 0x4f, 0xeb, 0x3f,
+  0xf4, 0xf9, 0xa7, 0xc8, 0xa3, 0xdc, 0x4f, 0x4e, 0xbf, 0xa5, 0xdd, 0xfd,
+  0xcb, 0x04, 0xd8, 0xaa, 0x0f, 0x7c, 0xc9, 0x7f, 0xc1, 0xce, 0x5e, 0xd5,
+  0xec, 0x85, 0x03, 0x1f, 0xbc, 0xa6, 0xa2, 0xa3, 0xc8, 0xfa, 0x80, 0x29,
+  0x3e, 0x9f, 0x53, 0x1e, 0x87, 0xe6, 0x0d, 0x36, 0x9c, 0x37, 0xc8, 0xda,
+  0xe5, 0xa8, 0x64, 0xb8, 0x6a, 0x13, 0xf2, 0xdb, 0x82, 0x5f, 0x13, 0x6b,
+  0xcb, 0x79, 0xcc, 0x66, 0x43, 0x91, 0xf7, 0x02, 0x3a, 0xb1, 0xce, 0x2e,
+  0x17, 0x2f, 0x4f, 0x27, 0x6d, 0x93, 0xe7, 0x28, 0xc2, 0x65, 0xee, 0x38,
+  0x4a, 0xf8, 0x6f, 0xd0, 0xcc, 0x40, 0xc5, 0x42, 0x76, 0x16, 0x15, 0x45,
+  0x4a, 0xab, 0x4c, 0x0b, 0x5d, 0x48, 0x09, 0x2e, 0xae, 0xb6, 0xf4, 0x79,
+  0x2c, 0x22, 0x20, 0x81, 0x4a, 0x01, 0x05, 0x5f, 0x96, 0x53, 0xa9, 0xb6,
+  0x5b, 0x9b, 0x5d, 0xcf, 0x0b, 0x6c, 0xab, 0x5e, 0x19, 0x9d, 0x83, 0xa6,
+  0x42, 0x02, 0x16, 0xf2, 0xd9, 0x88, 0xd2, 0x21, 0x81, 0x45, 0x76, 0xc8,
+  0x81, 0xe0, 0x4a, 0x78, 0x7f, 0x78, 0xe3, 0x7f, 0x4e, 0x96, 0xff, 0x28,
+  0x9b, 0x70, 0x99, 0x77, 0xc9, 0x8c, 0xeb, 0x8b, 0x8f, 0x38, 0xe2, 0xc6,
+  0x49, 0xec, 0xb9, 0xd1, 0x83, 0xc3, 0x88, 0x08, 0x4d, 0x90, 0x23, 0x42,
+  0x98, 0x6f, 0x48, 0x29, 0x14, 0x50, 0xb1, 0x16, 0xa8, 0xa0, 0xeb, 0x25,
+  0x3e, 0x58, 0x9c, 0x61, 0x55, 0x24, 0xc2, 0xd3, 0x96, 0xfc, 0x51, 0x5c,
+  0xca, 0xfa, 0x58, 0x2a, 0x1a, 0x97, 0x2c, 0xd6, 0x20, 0x78, 0xe1, 0x07,
+  0x81, 0xec, 0xf4, 0x77, 0xf7, 0xbd, 0x62, 0x23, 0xfc, 0xb3, 0x78, 0xf3,
+  0x3e, 0x3f, 0x86, 0xc6, 0x8a, 0x6b, 0x99, 0xfe, 0x15, 0xed, 0xef, 0xd9,
+  0xf6, 0xd7, 0x22, 0x94, 0x14, 0x4c, 0x1a, 0x11, 0xff, 0x2c, 0x31, 0x17,
+  0x2a, 0x9a, 0x4c, 0xdc, 0xa8, 0x9e, 0x43, 0x23, 0x61, 0x5f, 0x82, 0x3a,
+  0x13, 0x6c, 0xd9, 0x30, 0xe6, 0xac, 0x88, 0x24, 0x00, 0x21, 0x37, 0x64,
+  0xc2, 0x60, 0x65, 0x1e, 0x89, 0x99, 0xc8, 0xae, 0xa5, 0x28, 0xd5, 0x94,
+  0x79, 0x6b, 0x95, 0x33, 0xe2, 0x53, 0x9c, 0xec, 0xbb, 0x22, 0x75, 0xf0,
+  0x07, 0xa8, 0xdf, 0x43, 0xab, 0x0c, 0x69, 0x02, 0x63, 0x90, 0x66, 0xd6,
+  0xe2, 0x2b, 0x0d, 0x3e, 0x65, 0x84, 0x31, 0xf3, 0xd2, 0xc0, 0x4e, 0x91,
+  0xb3, 0xb0, 0xb9, 0x21, 0xbe, 0x15, 0xfa, 0x10, 0xd5, 0x76, 0x03, 0x54,
+  0x09, 0xc3, 0x4d, 0x41, 0x25, 0x20, 0x33, 0xd0, 0x8f, 0xe8, 0x1d, 0xfb,
+  0x10, 0xee, 0xf6, 0x54, 0x30, 0x8b, 0x0a, 0x48, 0x54, 0xd4, 0x7c, 0x46,
+  0xa9, 0xd1, 0x36, 0x73, 0x4a, 0x68, 0x2b, 0x7b, 0x53, 0x2c, 0x8d, 0x49,
+  0x35, 0x78, 0x8b, 0x7b, 0x4b, 0x93, 0x8d, 0xd7, 0x5b, 0x1b, 0x76, 0x68,
+  0xcb, 0x4d, 0xa3, 0x4e, 0x21, 0x37, 0xc7, 0xc2, 0xcc, 0x38, 0x2a, 0xd3,
+  0x3a, 0x1c, 0x4c, 0x33, 0x02, 0x42, 0x64, 0x7d, 0xac, 0x67, 0x94, 0x0a,
+  0xab, 0x56, 0x9e, 0x02, 0x32, 0xb3, 0x0a, 0x9c, 0x4f, 0x26, 0xc2, 0xe0,
+  0x4d, 0x9e, 0x4e, 0x4d, 0x0f, 0x29, 0x27, 0xed, 0x46, 0x69, 0xfc, 0xea,
+  0x7d, 0x4f, 0x27, 0x8f, 0x1c, 0x50, 0x8a, 0xe8, 0x80, 0x0a, 0x5d, 0x3c,
+  0x23, 0x9e, 0x63, 0x63, 0x95, 0xf2, 0xbd, 0xf1, 0x7a, 0x93, 0xaf, 0x2c,
+  0xe7, 0x56, 0xf3, 0xbe, 0xbd, 0x91, 0xfc, 0x14, 0xcf, 0x33, 0x4c, 0xf8,
+  0x5d, 0xcf, 0x4a, 0x90, 0x4d, 0xfb, 0xd0, 0x1b, 0xc9, 0xab, 0x51, 0x39,
+  0xb9, 0xff, 0x02, 0xf1, 0x27, 0x79, 0xe5, 0xd5, 0x36, 0x7e, 0xd4, 0x51,
+  0x9a, 0x97, 0x35, 0x84, 0x56, 0xcc, 0x52, 0xe1, 0xcf, 0x2f, 0xe9, 0x71,
+  0xb5, 0x19, 0x36, 0x92, 0xc1, 0xc0, 0x88, 0xa1, 0x7a, 0x86, 0xba, 0x3a,
+  0x2b, 0xae, 0x16, 0x26, 0xae, 0xc2, 0x25, 0x3b, 0xca, 0x1c, 0x9f, 0x08,
+  0xdb, 0x32, 0xd6, 0xd8, 0x16, 0x7f, 0x24, 0xff, 0xb6, 0x7a, 0x3d, 0x48,
+  0x0e, 0x14, 0x36, 0xb3, 0x16, 0xe1, 0x23, 0x31, 0x8f, 0xf2, 0xfd, 0xe1,
+  0x25, 0xe2, 0xbe, 0x18, 0xe5, 0xe2, 0x6f, 0x9f, 0x94, 0x2d, 0x0a, 0xbd,
+  0x84, 0x13, 0xde, 0xe9, 0x8a, 0x8f, 0x0b, 0x6f, 0xb3, 0x67, 0x2a, 0x8e,
+  0x17, 0xb1, 0x88, 0xb0, 0x66, 0x8c, 0x74, 0xae, 0x7f, 0x24, 0xdf, 0x54,
+  0x69, 0xda, 0x4b, 0x3e, 0xd3, 0x8f, 0x75, 0xaf, 0xe7, 0x02, 0x5e, 0x89,
+  0xbf, 0x81, 0xbf, 0xf3, 0x45, 0x9f, 0x9e, 0xf2, 0x6a, 0x3c, 0xda, 0x04,
+  0x78, 0x37, 0x6c, 0x84, 0xde, 0x7a, 0x52, 0xba, 0x70, 0x12, 0x12, 0x16,
+  0xe4, 0x05, 0x97, 0x5e, 0xe1, 0x6b, 0x61, 0x94, 0xd6, 0xd9, 0xf3, 0xa7,
+  0x3c, 0x4a, 0x9e, 0x2a, 0xf1, 0xd4, 0xb4, 0x5c, 0xb2, 0x7c, 0x21, 0x55,
+  0x61, 0x44, 0xd0, 0x0e, 0x91, 0x33, 0x3e, 0x49, 0x4f, 0xa3, 0x72, 0x3e,
+  0x8c, 0xeb, 0xa4, 0x8b, 0xd5, 0xe8, 0x94, 0x57, 0x28, 0x58, 0x9e, 0x7c,
+  0xf6, 0xdc, 0xeb, 0xf8, 0x03, 0xbe, 0x0b, 0x77, 0xde, 0x71, 0x02, 0xe5,
+  0x88, 0xcb, 0x88, 0xbc, 0x21, 0xb0, 0xf1, 0x6e, 0xbe, 0x1b, 0xf4, 0x8b,
+  0x1c, 0x1f, 0x4c, 0xcf, 0x24, 0x23, 0xb4, 0x0e, 0xc7, 0x87, 0xce, 0x93,
+  0x7f, 0x1a, 0x3e, 0xd7, 0xdd, 0xd3, 0xfd, 0xf4, 0xca, 0xdd, 0xed, 0x59,
+  0x4b, 0xfa, 0x3e, 0x77, 0x82, 0x77, 0xf8, 0xc3, 0x1b, 0x9c, 0x82, 0x0a,
+  0x97, 0x8b, 0x0a, 0x17, 0x91, 0x3c, 0xc6, 0xfa, 0x82, 0xa6, 0x8f, 0x88,
+  0xca, 0xfe, 0xee, 0xe0, 0xfd, 0x87, 0x83, 0x93, 0xc7, 0x17, 0xf9, 0x68,
+  0x95, 0x8e, 0x5a, 0xf9, 0x9a, 0x97, 0x2f, 0xda, 0xa1, 0x42, 0x79, 0x38,
+  0x91, 0x9c, 0xf2, 0x75, 0x68, 0xf7, 0x10, 0x34, 0x24, 0xce, 0x84, 0xc2,
+  0x98, 0x5b, 0x09, 0x8c, 0x7b, 0x98, 0xcd, 0xb4, 0x96, 0x4a, 0x6a, 0xeb,
+  0xfa, 0x3e, 0xbd, 0xbe, 0x2e, 0x98, 0x63, 0x9b, 0xa4, 0x1b, 0x91, 0x9e,
+  0x36, 0xaf, 0xd8, 0x62, 0xae, 0xb4, 0xe2, 0xac, 0x5c, 0x5e, 0x2d, 0x6f,
+  0x5b, 0x79, 0x79, 0xe9, 0x45, 0x2b, 0xba, 0x51, 0xbd, 0xc3, 0xc3, 0xe5,
+  0xd9, 0x8e, 0xbf, 0x27, 0xc7, 0x61, 0x07, 0x7b, 0x8e, 0x69, 0x74, 0xa2,
+  0xbc, 0xdf, 0x94, 0x9c, 0x09, 0xfc, 0x4a, 0xfa, 0x16, 0x9f, 0x55, 0x26,
+  0xec, 0xf0, 0xc2, 0xd8, 0xaa, 0xd3, 0xa2, 0x4c, 0xe4, 0xf0, 0xe8, 0x1c,
+  0xd3, 0x75, 0x76, 0x30, 0x1c, 0xda, 0x44, 0x5c, 0x81, 0xf8, 0x04, 0xb6,
+  0x17, 0x02, 0x7d, 0x5e, 0xa1, 0x82, 0x41, 0x62, 0xcb, 0x3b, 0x0a, 0x8e,
+  0x13, 0x13, 0x68, 0x2c, 0xbc, 0x8b, 0xc5, 0xcc, 0x9c, 0x09, 0xa3, 0xdf,
+  0x4e, 0x08, 0x42, 0xc5, 0xe1, 0xd7, 0xee, 0xe6, 0x22, 0xf9, 0xa4, 0x8a,
+  0x13, 0x63, 0x20, 0x4a, 0xfc, 0xd7, 0xf4, 0x7a, 0xa8, 0xb2, 0x3a, 0xd5,
+  0x80, 0xb5, 0xc7, 0x4c, 0xd9, 0x8b, 0xba, 0x7a, 0xd6, 0x87, 0xc7, 0x17,
+  0x47, 0xc9, 0xc1, 0x87, 0x8b, 0x6f, 0xd6, 0x79, 0x82, 0xbb, 0x04, 0x04,
+  0x70, 0xd3, 0x53, 0x59, 0xc6, 0x9b, 0x4c, 0xea, 0x3c, 0xd7, 0x34, 0x93,
+  0xe4, 0xd1, 0x24, 0xe3, 0x20, 0xa6, 0x70, 0xbb, 0x6f, 0x0e, 0x56, 0xac,
+  0xd2, 0xb3, 0xc1, 0xb3, 0xee, 0x2a, 0x2d, 0x27, 0x99, 0x05, 0xed, 0xa8,
+  0x94, 0xe3, 0x96, 0xb9, 0x93, 0x1d, 0x2f, 0x74, 0xa6, 0x04, 0x9b, 0xda,
+  0x76, 0x25, 0x0f, 0x10, 0x5b, 0x4b, 0x19, 0xb0, 0x1b, 0xb9, 0x0b, 0x2c,
+  0xa9, 0x9a, 0x0d, 0x85, 0x83, 0x70, 0xd5, 0x92, 0xae, 0x88, 0x77, 0x97,
+  0x23, 0xa0, 0x66, 0xc5, 0xd2, 0x6a, 0x62, 0x13, 0xf2, 0x22, 0x9c, 0x03,
+  0x8a, 0xf2, 0xa3, 0x2a, 0x2a, 0x66, 0x0b, 0x68, 0x15, 0x85, 0x56, 0xa2,
+  0x64, 0xc8, 0x8a, 0xee, 0x32, 0x2e, 0xe3, 0x14, 0xb8, 0x70, 0x9a, 0xa3,
+  0xb0, 0x82, 0xe5, 0x72, 0x5d, 0x89, 0x7b, 0x8c, 0xb3, 0xb6, 0xd2, 0xbc,
+  0x0a, 0x4a, 0xe4, 0x15, 0xff, 0x19, 0xdf, 0xef, 0x74, 0xb3, 0x56, 0xe5,
+  0x94, 0xdd, 0x85, 0xf2, 0x02, 0xa3, 0x37, 0x39, 0x45, 0x02, 0x14, 0x3a,
+  0x08, 0xd9, 0x20, 0xea, 0x09, 0x6b, 0x84, 0x09, 0xc0, 0xc3, 0x4a, 0x39,
+  0x9b, 0x04, 0xcf, 0x50, 0xdf, 0xea, 0x05, 0xc2, 0x88, 0x68, 0x2f, 0x92,
+  0xfd, 0x12, 0x50, 0xf4, 0xc5, 0x48, 0x4e, 0xbc, 0xd3, 0x1b, 0x1a, 0x48,
+  0x10, 0xc6, 0xe3, 0xdb, 0x49, 0x5c, 0xdb, 0xc2, 0x10, 0x80, 0x1c, 0xb3,
+  0x79, 0x36, 0x87, 0xdf, 0xbf, 0xf1, 0x8a, 0x63, 0x28, 0x34, 0x4d, 0xd1,
+  0xdd, 0x6c, 0x7f, 0x2c, 0x23, 0xda, 0xf3, 0x78, 0xc2, 0x50, 0x92, 0x8a,
+  0x22, 0xa9, 0x93, 0x2c, 0x9b, 0x5b, 0x46, 0xe2, 0x1c, 0xc9, 0x19, 0x79,
+  0x8d, 0xc8, 0xa9, 0xb0, 0x41, 0xcf, 0x42, 0x47, 0x92, 0xc5, 0x71, 0xb3,
+  0xe4, 0x70, 0x94, 0x10, 0x54, 0xec, 0x87, 0xe2, 0xb6, 0xbb, 0x9f, 0x3d,
+  0x79, 0x61, 0x2e, 0xdf, 0x7b, 0xd0, 0x03, 0xb7, 0x98, 0x48, 0x99, 0xc1,
+  0x73, 0x39, 0xdd, 0x99, 0x58, 0x30, 0x0a, 0xec, 0x95, 0x4c, 0xf6, 0xa4,
+  0x26, 0x9b, 0x01, 0xfe, 0x28, 0xc9, 0x2b, 0x0d, 0x89, 0x40, 0xcc, 0x24,
+  0xaa, 0xdb, 0x0f, 0x33, 0x86, 0x74, 0x57, 0x9a, 0x2d, 0x46, 0x86, 0x0d,
+  0xbc, 0x3d, 0x6c, 0xf4, 0x38, 0x2a, 0x7f, 0xd4, 0x4b, 0xce, 0x8f, 0x2e,
+  0xce, 0x7b, 0xc9, 0xf0, 0xe2, 0xf4, 0x7c, 0x09, 0x47, 0x5d, 0xc3, 0x0c,
+  0x09, 0x34, 0x67, 0x0a, 0x51, 0xe1, 0x53, 0xd9, 0x22, 0xaf, 0x02, 0x06,
+  0x9a, 0x05, 0x4f, 0x1d, 0xe5, 0x3b, 0xf2, 0x68, 0x8f, 0xbc, 0xd9, 0xc2,
+  0xb6, 0x31, 0xf7, 0xc3, 0xca, 0x81, 0xf1, 0xb2, 0x3f, 0x62, 0x87, 0xd0,
+  0x5e, 0xa4, 0xe1, 0x5a, 0x31, 0x8f, 0xde, 0x1a, 0x0b, 0x8d, 0xbc, 0xfd,
+  0x8e, 0x7c, 0x5a, 0x8b, 0xca, 0x2e, 0xe1, 0x26, 0x64, 0x40, 0x6e, 0xed,
+  0x40, 0xc3, 0x66, 0xcb, 0xad, 0x6b, 0x06, 0xf6, 0xba, 0x39, 0x6e, 0xcc,
+  0xc5, 0x63, 0xd9, 0xc6, 0x1e, 0xd8, 0xbf, 0x46, 0xdf, 0xd9, 0xb2, 0x69,
+  0xa3, 0xf4, 0xbf, 0xba, 0x9c, 0x65, 0xec, 0xd3, 0x87, 0xe7, 0x47, 0xe5,
+  0x13, 0x17, 0x5e, 0x03, 0x45, 0x67, 0x8c, 0x8a, 0xc0, 0x32, 0x29, 0xd1,
+  0x2a, 0x6f, 0xd8, 0x64, 0x6e, 0x2d, 0x98, 0xce, 0xeb, 0x92, 0x19, 0xb3,
+  0xb4, 0x01, 0x45, 0xd5, 0x86, 0xf6, 0xca, 0xa3, 0x58, 0x6a, 0x0b, 0xef,
+  0xdd, 0xae, 0x90, 0xa1, 0x7c, 0xf8, 0xa8, 0x64, 0x21, 0x70, 0x8a, 0x66,
+  0x35, 0x03, 0x5a, 0xa5, 0xa8, 0x1a, 0xa8, 0x12, 0x7e, 0xcd, 0xbf, 0x33,
+  0xcd, 0x65, 0xcf, 0xeb, 0x98, 0x42, 0x81, 0x94, 0x37, 0xe2, 0x51, 0x70,
+  0x9b, 0x5b, 0xd6, 0x9c, 0x83, 0x32, 0x8b, 0xae, 0xd4, 0xed, 0x24, 0x97,
+  0x77, 0x0d, 0x02, 0x51, 0xcd, 0x12, 0x57, 0x4d, 0x25, 0x20, 0x02, 0x98,
+  0xff, 0x13, 0xe5, 0x66, 0x7e, 0x19, 0x7d, 0x09, 0x55, 0xac, 0x95, 0x94,
+  0x7e, 0xb0, 0xfd, 0x15, 0x80, 0x3d, 0x4c, 0xec, 0xcc, 0x11, 0xa1, 0x0d,
+  0xa1, 0xb5, 0x70, 0x6f, 0x4d, 0x4a, 0xa8, 0xed, 0x34, 0xe8, 0x90, 0xfb,
+  0x0c, 0x2e, 0x63, 0x20, 0x08, 0xf4, 0xa6, 0x91, 0xc6, 0x9c, 0xf5, 0x31,
+  0x6e, 0xba, 0x23, 0x45, 0x82, 0x7d, 0x30, 0xd0, 0x33, 0x7f, 0xd9, 0x58,
+  0xa2, 0xc1, 0xc0, 0x71, 0x82, 0xa0, 0xe1, 0x3c, 0x77, 0x4e, 0x66, 0x57,
+  0x17, 0x80, 0x30, 0x0a, 0x14, 0xd1, 0x3c, 0x29, 0x66, 0x13, 0xd0, 0x12,
+  0xd6, 0xad, 0x2c, 0x7d, 0x9d, 0xc9, 0xc1, 0x0a, 0x8e, 0x27, 0x3f, 0xa9,
+  0xbf, 0xb5, 0x25, 0x77, 0x5b, 0x5a, 0x5f, 0x7b, 0x74, 0x4b, 0x13, 0x46,
+  0x59, 0xa1, 0x38, 0xa7, 0x85, 0xab, 0xb9, 0x42, 0x5d, 0xe6, 0x76, 0x57,
+  0x5e, 0xe4, 0xc4, 0xe3, 0x52, 0x56, 0xdb, 0x94, 0xa2, 0x42, 0xec, 0x65,
+  0x89, 0xb9, 0x21, 0x15, 0x8a, 0xba, 0xa4, 0x8c, 0xaa, 0xd5, 0x13, 0x4d,
+  0xd3, 0xed, 0xb2, 0x98, 0x5e, 0x75, 0x29, 0xba, 0x4c, 0x25, 0x5f, 0x1f,
+  0x73, 0x3b, 0x48, 0x62, 0x28, 0x78, 0xe6, 0x6c, 0x6d, 0x00, 0x73, 0x6c,
+  0x6b, 0x64, 0x5a, 0x4e, 0x50, 0x6b, 0x02, 0x60, 0x61, 0xa1, 0xf1, 0x6d,
+  0xd4, 0x4b, 0x13, 0xeb, 0xb4, 0x1c, 0x03, 0xd4, 0x7c, 0x33, 0x2b, 0x3d,
+  0x46, 0x84, 0xb4, 0xcf, 0x26, 0x2c, 0x87, 0xf6, 0xc7, 0xea, 0xac, 0x59,
+  0xcc, 0xc3, 0x7b, 0xfe, 0xf8, 0xcc, 0x35, 0x29, 0xc4, 0xa7, 0x34, 0xd5,
+  0xa8, 0x02, 0xde, 0xf8, 0x9d, 0x6c, 0xca, 0x81, 0x5b, 0x00, 0x77, 0xf5,
+  0x07, 0xe6, 0x39, 0x29, 0x02, 0xc1, 0xed, 0xbe, 0x2c, 0x81, 0x5c, 0xaf,
+  0x17, 0x2a, 0xeb, 0xb9, 0x6e, 0xb4, 0x8b, 0x9d, 0x75, 0xbf, 0xa0, 0x3c,
+  0x07, 0xd5, 0xed, 0xbb, 0x66, 0x52, 0x5a, 0xbd, 0x0d, 0xcf, 0x8c, 0x66,
+  0xa2, 0x48, 0x06, 0x21, 0xad, 0xcf, 0x26, 0x55, 0x90, 0xc6, 0x19, 0xde,
+  0x5a, 0x0b, 0x87, 0x2e, 0x6d, 0xad, 0xea, 0xd5, 0xee, 0xcb, 0xbd, 0xc1,
+  0xee, 0xf3, 0x17, 0x83, 0x5d, 0xd4, 0x9f, 0xf4, 0x7a, 0xe7, 0x8a, 0x24,
+  0x7a, 0x0d, 0x45, 0xaa, 0x70, 0x26, 0xcb, 0x89, 0x4d, 0xf9, 0x0b, 0xb3,
+  0xfb, 0x01, 0x3d, 0x37, 0xe0, 0x5a, 0x18, 0xc1, 0x37, 0x66, 0x46, 0xad,
+  0xc9, 0x8b, 0x20, 0xec, 0xd1, 0x77, 0x48, 0x22, 0xbd, 0xee, 0xe7, 0x39,
+  0xed, 0x23, 0xa5, 0x1b, 0x74, 0xbd, 0xb2, 0x55, 0xbc, 0xb4, 0x2e, 0x01,
+  0x9d, 0xce, 0x78, 0x8f, 0x54, 0xa8, 0x8f, 0x45, 0x8f, 0x74, 0x72, 0xdd,
+  0x7e, 0xff, 0x9f, 0xb0, 0xf9, 0x54, 0x46, 0xbe, 0xc9, 0x9d, 0x87, 0x42,
+  0x3c, 0x17, 0x62, 0x93, 0x00, 0x60, 0x01, 0x82, 0x9d, 0x2e, 0x47, 0x8b,
+  0x50, 0x6e, 0xb0, 0xf8, 0xeb, 0xd0, 0x9c, 0x78, 0x97, 0xcc, 0x91, 0xc7,
+  0xa9, 0xe4, 0x23, 0x90, 0xd0, 0xa6, 0x06, 0xca, 0xbb, 0x34, 0x3a, 0xf2,
+  0x1a, 0x2e, 0x2c, 0x96, 0xd0, 0xda, 0x1c, 0xbd, 0xf6, 0x97, 0xbf, 0x38,
+  0x89, 0xc4, 0xc5, 0x90, 0x99, 0x82, 0xff, 0x59, 0x4f, 0x58, 0x0a, 0x39,
+  0xbe, 0xc5, 0x1c, 0xe9, 0xc9, 0xfa, 0xfe, 0x8f, 0x70, 0x07, 0xff, 0xdc,
+  0xff, 0xd1, 0xfc, 0xfb, 0xe7, 0x75, 0x9b, 0x63, 0xc8, 0xbc, 0x48, 0xac,
+  0x25, 0xaf, 0xb5, 0x0f, 0x73, 0xaf, 0x5d, 0x4a, 0x12, 0x7a, 0xc1, 0xc5,
+  0xe1, 0x19, 0x1f, 0xc5, 0x8a, 0xc3, 0xdc, 0x18, 0x29, 0x89, 0x22, 0x28,
+  0xf6, 0x24, 0xc3, 0x99, 0x21, 0xd1, 0xec, 0x14, 0x3b, 0x97, 0x5a, 0x2a,
+  0x87, 0x0d, 0x4b, 0xbc, 0xd8, 0x73, 0x24, 0x82, 0xa4, 0x3a, 0x56, 0x5c,
+  0x7b, 0xe4, 0xda, 0xf4, 0x85, 0xbc, 0x07, 0x48, 0x69, 0x36, 0x02, 0x58,
+  0x95, 0x6a, 0xfe, 0x81, 0x36, 0x47, 0x1c, 0x4b, 0x35, 0x39, 0xe3, 0x6f,
+  0x4d, 0xd7, 0x7a, 0xc2, 0x06, 0xca, 0x99, 0x11, 0x8d, 0x10, 0xda, 0x99,
+  0xe9, 0x30, 0x13, 0xa6, 0x74, 0xa8, 0x55, 0x5e, 0x7f, 0xa2, 0x11, 0x4a,
+  0x9a, 0x4f, 0xc2, 0x18, 0xa1, 0x35, 0x4f, 0xeb, 0x46, 0xcf, 0x28, 0xec,
+  0x25, 0xb4, 0x21, 0x36, 0x77, 0xcf, 0x9b, 0x62, 0x77, 0x4d, 0xe8, 0xe2,
+  0x6b, 0x6e, 0x7c, 0x94, 0xfa, 0x48, 0x1e, 0xab, 0xb2, 0x38, 0x23, 0x97,
+  0xcf, 0x23, 0xa0, 0xe4, 0x1f, 0x69, 0x72, 0x66, 0x34, 0x5e, 0xbb, 0x4d,
+  0x3c, 0x82, 0x9c, 0x64, 0x93, 0x7e, 0x40, 0xd7, 0xe0, 0x56, 0xf7, 0xfa,
+  0xa2, 0x02, 0x13, 0x69, 0xee, 0x3b, 0x68, 0xcc, 0xba, 0xd1, 0x89, 0xa5,
+  0xd4, 0x89, 0xca, 0xf4, 0x81, 0xd0, 0x79, 0x92, 0xda, 0xad, 0x39, 0x48,
+  0x14, 0xdc, 0x55, 0xd5, 0x6e, 0x2d, 0x6a, 0x34, 0x88, 0x9b, 0xd6, 0xe9,
+  0xa5, 0x48, 0xa4, 0x64, 0xf7, 0x2b, 0x4f, 0x3c, 0xfd, 0x09, 0xc9, 0x4d,
+  0xe9, 0x39, 0xb7, 0x05, 0x6a, 0x9b, 0x86, 0x96, 0x0d, 0x3a, 0x3f, 0x8b,
+  0x51, 0x96, 0x7a, 0xb7, 0xeb, 0xde, 0x4e, 0xe8, 0x53, 0xa1, 0x82, 0xad,
+  0x98, 0xe4, 0x7e, 0x3e, 0x7f, 0x98, 0xd2, 0x4c, 0xa9, 0x96, 0x68, 0x2d,
+  0x5b, 0x02, 0xc6, 0x5e, 0x35, 0xf5, 0xe2, 0xea, 0x0a, 0xa4, 0x0a, 0x21,
+  0x2c, 0xaf, 0xa9, 0xbd, 0x24, 0x48, 0xe1, 0x78, 0x37, 0x42, 0x1d, 0x5d,
+  0xd7, 0xe9, 0x70, 0xa9, 0x91, 0x22, 0x7a, 0x1c, 0x53, 0xee, 0xd2, 0xec,
+  0x59, 0xca, 0x32, 0xe1, 0x83, 0xee, 0x34, 0x9a, 0x2a, 0xeb, 0xbb, 0x72,
+  0xc9, 0x4c, 0x05, 0xdc, 0xba, 0x3c, 0x02, 0x58, 0xaf, 0x27, 0x1b, 0xeb,
+  0x15, 0x62, 0x70, 0xb0, 0xb2, 0x34, 0x3d, 0xb9, 0xdb, 0xa8, 0xc2, 0x05,
+  0x53, 0xba, 0xe4, 0x97, 0xc2, 0xa5, 0xc6, 0x64, 0x58, 0x95, 0x25, 0x17,
+  0xf2, 0xb9, 0x0f, 0xba, 0x17, 0xe8, 0x25, 0xe6, 0x63, 0x95, 0x8b, 0xc0,
+  0x89, 0x44, 0x5f, 0x71, 0x7a, 0x3a, 0xd8, 0x0b, 0x96, 0xb6, 0x9e, 0xf6,
+  0xc7, 0xe3, 0x71, 0x1f, 0x2a, 0xc1, 0x2b, 0xd6, 0x54, 0xb6, 0x45, 0x4f,
+  0x88, 0xeb, 0x50, 0xc3, 0x4c, 0xe6, 0xfb, 0xf0, 0xf0, 0x50, 0x54, 0x9a,
+  0x8b, 0xeb, 0x8e, 0x6e, 0x61, 0x59, 0x7f, 0x44, 0xb1, 0x8a, 0xe6, 0x54,
+  0xd5, 0xd7, 0x8b, 0x66, 0x82, 0x5a, 0xa6, 0x24, 0x35, 0x54, 0x0e, 0xdb,
+  0x44, 0xd9, 0x0e, 0x3b, 0x23, 0x55, 0x95, 0xee, 0x59, 0x44, 0x22, 0x35,
+  0x1e, 0x64, 0x12, 0xce, 0xb9, 0x2a, 0x04, 0x5e, 0x94, 0xb6, 0xbb, 0x95,
+  0x12, 0xb9, 0xaf, 0x3e, 0x81, 0x92, 0xf6, 0xb0, 0x8e, 0xa1, 0xd8, 0xb4,
+  0x15, 0x7c, 0x36, 0xcd, 0x05, 0x13, 0x9b, 0xca, 0xb7, 0xba, 0x6d, 0x3f,
+  0xb0, 0x1e, 0x32, 0xd5, 0xed, 0x25, 0x79, 0xbe, 0x74, 0x49, 0xe2, 0x92,
+  0x0a, 0xc5, 0x85, 0x69, 0xe6, 0x93, 0xcd, 0x43, 0x90, 0x3b, 0x12, 0x89,
+  0x33, 0x4e, 0xc5, 0xe1, 0x35, 0xa1, 0xb7, 0xa6, 0x66, 0x81, 0x4c, 0xaf,
+  0x6b, 0xc8, 0x01, 0xae, 0x9e, 0x36, 0x3c, 0xd9, 0xbe, 0x38, 0x19, 0x06,
+  0x80, 0xf7, 0x7b, 0xf2, 0x1e, 0x73, 0x09, 0xdc, 0x96, 0xef, 0x93, 0xa7,
+  0x08, 0x74, 0xb9, 0xe5, 0x65, 0x7b, 0x87, 0xf3, 0x17, 0xa2, 0x8c, 0x19,
+  0x8b, 0xc2, 0x96, 0x4d, 0xb7, 0xde, 0xdb, 0x22, 0x2b, 0x90, 0x4a, 0x4e,
+  0xf7, 0x39, 0x8e, 0x00, 0xa0, 0xb0, 0x75, 0xf2, 0xfe, 0xe0, 0x82, 0xd2,
+  0x5b, 0x1a, 0x41, 0x77, 0x5c, 0x96, 0x01, 0xce, 0x5c, 0xd9, 0x39, 0x2d,
+  0x9f, 0x61, 0x3a, 0x76, 0x15, 0x22, 0x54, 0x69, 0xe7, 0xe5, 0xab, 0x75,
+  0xe7, 0xad, 0x9a, 0x7e, 0x33, 0xa5, 0x72, 0x3f, 0x74, 0xf7, 0x7c, 0x77,
+  0x35, 0x76, 0xa3, 0xab, 0xc1, 0x13, 0x10, 0x5d, 0x91, 0x73, 0x91, 0xe6,
+  0x32, 0xcd, 0x76, 0xeb, 0xc2, 0x8d, 0x39, 0x2d, 0xaf, 0x72, 0xa4, 0x97,
+  0xf2, 0x52, 0xb5, 0xa2, 0x6d, 0x81, 0xc7, 0x94, 0x27, 0x87, 0x12, 0xb1,
+  0x71, 0x2f, 0xb6, 0x13, 0xab, 0xf8, 0x90, 0xd0, 0x5d, 0x61, 0x27, 0x55,
+  0xa8, 0xc1, 0x35, 0x07, 0x32, 0x4c, 0x31, 0x24, 0x19, 0x93, 0x8f, 0x8d,
+  0xad, 0x30, 0x26, 0xd8, 0xc7, 0x5b, 0x84, 0x41, 0x5a, 0xe0, 0xda, 0xbc,
+  0x45, 0x8d, 0x66, 0x7d, 0xa5, 0x14, 0xb0, 0x8f, 0xe6, 0x00, 0xc9, 0x18,
+  0x57, 0xba, 0xe4, 0x9f, 0xb7, 0xae, 0x8f, 0xaf, 0xc9, 0x38, 0xbb, 0x0a,
+  0xae, 0x5d, 0xf6, 0xeb, 0x32, 0x00, 0xbb, 0x53, 0x8f, 0xc6, 0xd5, 0x60,
+  0x20, 0x2f, 0x11, 0xc7, 0xd6, 0x3b, 0x95, 0x16, 0x27, 0xbd, 0x28, 0x43,
+  0x79, 0xaf, 0x4b, 0xfa, 0x5d, 0x85, 0xbc, 0xc0, 0x2d, 0x5e, 0x19, 0x4b,
+  0x0b, 0xd2, 0x69, 0xee, 0x6b, 0x73, 0xef, 0x5b, 0x46, 0xf9, 0x0e, 0xfd,
+  0x4c, 0x8b, 0x6d, 0x9e, 0xb1, 0x38, 0x14, 0x73, 0xba, 0xa5, 0x5a, 0x8a,
+  0xb7, 0x71, 0x7b, 0x87, 0x15, 0xda, 0x0b, 0xc7, 0x4f, 0xcd, 0xc7, 0x43,
+  0x49, 0xfc, 0x55, 0x64, 0x7d, 0x38, 0x3f, 0xb1, 0x81, 0xf9, 0x7f, 0xdf,
+  0x70, 0x25, 0x53, 0x06, 0x4b, 0xd8, 0xda, 0x62, 0x34, 0xae, 0x88, 0x35,
+  0x49, 0xb0, 0x49, 0xa1, 0x14, 0x7e, 0xbe, 0x49, 0x04, 0xcc, 0xad, 0xe3,
+  0x5b, 0xdd, 0xa3, 0x6f, 0x8e, 0x0e, 0xde, 0x58, 0x36, 0x81, 0x5f, 0x50,
+  0x54, 0xa8, 0xab, 0xf2, 0xc3, 0x51, 0xe2, 0x60, 0x17, 0x65, 0x91, 0x2d,
+  0x73, 0x92, 0xa8, 0xe3, 0x6f, 0x94, 0x31, 0x31, 0xfe, 0x42, 0x7c, 0x26,
+  0x29, 0x96, 0x47, 0xb7, 0x2a, 0x36, 0x8a, 0xd1, 0xd7, 0xea, 0x8c, 0x0f,
+  0xc8, 0x72, 0x82, 0xf8, 0xa5, 0x6e, 0x12, 0x1f, 0x77, 0x20, 0xde, 0x6b,
+  0xd2, 0x9a, 0x39, 0xb9, 0xca, 0xdb, 0xca, 0x57, 0xd8, 0xca, 0xd3, 0x72,
+  0x54, 0x5e, 0x5e, 0xae, 0x08, 0x03, 0x32, 0x4d, 0x1f, 0x92, 0xa0, 0x78,
+  0xc7, 0xac, 0xd3, 0x34, 0xd2, 0x7b, 0x23, 0xea, 0xbe, 0x59, 0x54, 0x73,
+  0xdc, 0xd6, 0x25, 0x33, 0x41, 0xca, 0x68, 0x07, 0x57, 0x8f, 0x17, 0x4d,
+  0xb8, 0x17, 0x68, 0xab, 0x9a, 0x7b, 0xc8, 0xce, 0x67, 0xd7, 0x8c, 0x22,
+  0x84, 0x2c, 0xd7, 0xb9, 0x99, 0xf5, 0xff, 0xfc, 0xaf, 0x1f, 0x7f, 0x8e,
+  0x30, 0xbe, 0x03, 0x09, 0x76, 0xcd, 0xb9, 0x85, 0xe6, 0xf9, 0x99, 0xb0,
+  0xb7, 0x58, 0x62, 0x6e, 0x57, 0xce, 0x9e, 0x54, 0xb0, 0x6c, 0x7a, 0x39,
+  0x70, 0x75, 0x4b, 0xc2, 0x8b, 0xb1, 0x76, 0x1f, 0x44, 0xbd, 0x29, 0x4a,
+  0x06, 0xe7, 0x04, 0x5e, 0xa2, 0x50, 0x46, 0xe1, 0x14, 0x87, 0x97, 0xb6,
+  0x04, 0xab, 0xb2, 0x12, 0x91, 0x64, 0x02, 0xad, 0x2d, 0xd1, 0x8d, 0x9f,
+  0x7f, 0x38, 0x3f, 0xb6, 0x5e, 0x4f, 0x5f, 0x2e, 0x5f, 0x9b, 0x9d, 0x7a,
+  0xdf, 0xcf, 0xee, 0xb3, 0x91, 0x91, 0x11, 0xb5, 0xf2, 0x3f, 0xf4, 0x67,
+  0x75, 0xf2, 0x6a, 0x66, 0x76, 0x78, 0xbe, 0x84, 0xb9, 0xe3, 0x1b, 0x7a,
+  0xcd, 0x58, 0xd4, 0xf2, 0x9e, 0x25, 0x92, 0xbc, 0x2a, 0x2b, 0x33, 0x45,
+  0x33, 0xc9, 0xc8, 0x95, 0xb4, 0xe4, 0xb6, 0x5f, 0x03, 0x19, 0x26, 0x81,
+  0x6f, 0x80, 0x58, 0xd8, 0x28, 0xad, 0xca, 0xa3, 0xf3, 0x12, 0xc5, 0x70,
+  0xb2, 0x48, 0xa7, 0xa4, 0xd5, 0x1b, 0x63, 0x1b, 0x06, 0x3e, 0x39, 0x09,
+  0x79, 0x47, 0x21, 0xb1, 0x02, 0xaf, 0x44, 0x99, 0x04, 0x6c, 0x1e, 0x22,
+  0xac, 0x2c, 0x92, 0x3a, 0xfe, 0x88, 0x6c, 0x21, 0x42, 0xff, 0x93, 0x52,
+  0x82, 0x34, 0x9c, 0x57, 0xe9, 0x3e, 0x1f, 0x68, 0x0b, 0x5b, 0xa5, 0x4c,
+  0x8d, 0x5c, 0x6b, 0x84, 0xa6, 0xbe, 0x8e, 0xec, 0x11, 0x4e, 0x04, 0x87,
+  0x72, 0x96, 0x4e, 0x6c, 0x2e, 0xbd, 0x4f, 0x3f, 0x87, 0x3c, 0xc4, 0x94,
+  0x12, 0x23, 0xb3, 0xe9, 0x40, 0x8a, 0xe3, 0x02, 0x50, 0xe5, 0x5a, 0x85,
+  0xcc, 0xed, 0x02, 0x48, 0x6a, 0xc2, 0x04, 0x70, 0x3a, 0xac, 0x2d, 0x1d,
+  0x9e, 0x59, 0x27, 0x44, 0x34, 0xf0, 0x0b, 0xb5, 0x04, 0x86, 0xae, 0x99,
+  0x15, 0x31, 0x21, 0xc0, 0x59, 0x8b, 0x8a, 0x4a, 0x4c, 0x46, 0x42, 0x2f,
+  0x03, 0x4e, 0x41, 0x22, 0x44, 0xd6, 0xfb, 0x48, 0xd6, 0xbb, 0xd3, 0x1c,
+  0xc5, 0x5e, 0x92, 0xe7, 0xcf, 0x9e, 0x3d, 0x4b, 0x38, 0xfa, 0x92, 0xac,
+  0x1f, 0x33, 0xf9, 0xfa, 0xf9, 0xd1, 0xe1, 0xe9, 0xbb, 0x77, 0x47, 0xef,
+  0xdf, 0x1c, 0xbd, 0xb1, 0x07, 0x4d, 0xc7, 0x62, 0x77, 0x47, 0x30, 0x22,
+  0x42, 0x08, 0x4e, 0x92, 0xdd, 0x67, 0x3b, 0xfd, 0xbd, 0x67, 0x3b, 0x89,
+  0xd9, 0x8a, 0xa9, 0xcd, 0x53, 0x4b, 0xa7, 0x29, 0x79, 0x04, 0xae, 0x17,
+  0x46, 0x4f, 0x23, 0x76, 0xc8, 0x86, 0x78, 0x37, 0xe0, 0x86, 0x25, 0x4f,
+  0x71, 0x91, 0x35, 0x64, 0x44, 0x07, 0x1a, 0x50, 0x3a, 0x19, 0xac, 0x27,
+  0x96, 0xea, 0xcb, 0xc5, 0x2f, 0x45, 0xfd, 0xc1, 0x06, 0xdd, 0xdb, 0xa1,
+  0x4f, 0x0d, 0x92, 0xb7, 0x46, 0x03, 0xb9, 0x2c, 0xef, 0x12, 0xd6, 0x03,
+  0x8d, 0x5a, 0x9a, 0x85, 0x71, 0xcb, 0xf6, 0xeb, 0xf4, 0xf6, 0x13, 0x7e,
+  0xfb, 0x5f, 0x18, 0xb0, 0x7f, 0xf6, 0xb2, 0x6d, 0x5c, 0x9a, 0x83, 0x0c,
+  0x72, 0x6e, 0xcd, 0x49, 0x5c, 0x5e, 0xff, 0x85, 0xee, 0xa0, 0x83, 0x33,
+  0x7a, 0xd8, 0xd8, 0xe5, 0xa7, 0x3f, 0xfc, 0xb5, 0x4b, 0x36, 0x96, 0x48,
+  0x1a, 0x2b, 0x6a, 0x93, 0x21, 0xa7, 0x2a, 0x8e, 0xe4, 0x6b, 0x99, 0x84,
+  0x7a, 0xc7, 0x60, 0x7c, 0x84, 0x3d, 0x35, 0x13, 0xc7, 0x25, 0x83, 0x64,
+  0xcd, 0xaa, 0x5a, 0xd2, 0x88, 0xe0, 0x35, 0x0e, 0x70, 0x41, 0xe5, 0x5d,
+  0xce, 0xdc, 0xfb, 0x79, 0x31, 0xe1, 0xaa, 0x92, 0x2d, 0xf7, 0x6c, 0x53,
+  0x2d, 0x5a, 0x16, 0xb0, 0xba, 0x63, 0x1f, 0x22, 0xdb, 0x98, 0x57, 0xf9,
+  0x2c, 0xad, 0x72, 0xae, 0x1f, 0x4d, 0x7b, 0x1b, 0x06, 0xaf, 0x82, 0x27,
+  0x11, 0x02, 0xb3, 0xb4, 0x84, 0x84, 0x25, 0x48, 0x23, 0xdc, 0xd6, 0x20,
+  0xd4, 0x07, 0x42, 0x89, 0x49, 0x83, 0x78, 0x49, 0xa5, 0xf6, 0xfc, 0x8a,
+  0x15, 0x7a, 0xde, 0x36, 0xff, 0x2d, 0x74, 0x25, 0x9a, 0x7e, 0x4b, 0x3a,
+  0xee, 0xdb, 0xe3, 0x93, 0xa3, 0xad, 0xe4, 0x6d, 0xd6, 0x48, 0x6e, 0x93,
+  0x02, 0x8b, 0xe9, 0xa6, 0xff, 0x03, 0xb4, 0x2b, 0xcb, 0x69, 0x27, 0xf9,
+  0xc1, 0xd1, 0x1a, 0xc8, 0x6c, 0xc3, 0x40, 0xcd, 0xd0, 0x3c, 0x29, 0x5e,
+  0x18, 0x0c, 0x91, 0xc2, 0x72, 0x8a, 0x26, 0xd3, 0x30, 0xa7, 0xac, 0x3b,
+  0x25, 0x5b, 0x85, 0x35, 0x16, 0x99, 0xe5, 0x61, 0xe0, 0x6b, 0x9a, 0x60,
+  0x02, 0x77, 0x50, 0x02, 0xea, 0xb7, 0xa0, 0x9d, 0x39, 0x2e, 0x98, 0xd7,
+  0xf3, 0x29, 0xc9, 0x81, 0x18, 0xc7, 0xcb, 0x54, 0x32, 0xa0, 0x80, 0x7e,
+  0xa6, 0x4d, 0xcf, 0xb5, 0x9e, 0xc5, 0xe2, 0x81, 0x38, 0xa5, 0xf1, 0x7a,
+  0x13, 0xf7, 0x8d, 0x4e, 0x1c, 0xc1, 0x4f, 0xf8, 0xcf, 0xed, 0x2f, 0xa3,
+  0xf4, 0x63, 0xbc, 0xc7, 0x8f, 0x50, 0xf0, 0x52, 0x5e, 0xc0, 0x8e, 0xe2,
+  0x12, 0xc8, 0x72, 0xbf, 0xab, 0xc6, 0xd9, 0xda, 0x09, 0x31, 0xdd, 0x15,
+  0xfb, 0xc1, 0x85, 0xe4, 0xff, 0x2a, 0x85, 0x6b, 0x54, 0x7b, 0xa0, 0x04,
+  0x70, 0x77, 0xb5, 0x64, 0xde, 0x47, 0xeb, 0x68, 0x85, 0x28, 0x16, 0xc8,
+  0x52, 0x50, 0x93, 0x15, 0x29, 0x02, 0xe9, 0xa7, 0x8a, 0xd2, 0xd7, 0x0e,
+  0xd3, 0x63, 0xd7, 0xc2, 0x1f, 0x0c, 0x4f, 0x0a, 0xa7, 0x8f, 0xd5, 0x11,
+  0xd7, 0xbf, 0x4b, 0x8f, 0x73, 0x51, 0x3e, 0x14, 0x9a, 0x64, 0xc7, 0x8c,
+  0x42, 0x10, 0x7a, 0x92, 0xd4, 0x75, 0xc7, 0xcf, 0x4c, 0xef, 0x23, 0x8a,
+  0x92, 0x7c, 0xdd, 0x97, 0x3e, 0x5d, 0x7d, 0xdd, 0x7e, 0xa3, 0xb4, 0xcc,
+  0x39, 0x62, 0x85, 0x86, 0x9a, 0x22, 0xcd, 0x1d, 0xfb, 0xca, 0x51, 0x09,
+  0x9c, 0x92, 0xde, 0xc7, 0x9f, 0x72, 0xb2, 0x8c, 0xea, 0x66, 0x01, 0x6d,
+  0x2e, 0x2d, 0xfc, 0x5e, 0x5a, 0xb2, 0xed, 0x49, 0x89, 0x99, 0x8e, 0x2b,
+  0x9e, 0xa4, 0x1d, 0x91, 0xbf, 0x80, 0x08, 0x3c, 0xb5, 0x37, 0x3c, 0x1a,
+  0x7b, 0x56, 0xac, 0x86, 0x46, 0x89, 0x90, 0xcc, 0xf5, 0x1d, 0xa1, 0x15,
+  0xce, 0x50, 0x2e, 0x15, 0xee, 0xbe, 0x5b, 0x21, 0x19, 0xdb, 0x30, 0xa7,
+  0x09, 0x6a, 0xf1, 0xc0, 0xd8, 0xa1, 0x33, 0xca, 0x04, 0x00, 0xb6, 0x56,
+  0x86, 0x2c, 0xd3, 0x63, 0x04, 0xdb, 0x55, 0x7e, 0x13, 0x45, 0x5b, 0x68,
+  0xc7, 0x00, 0xd5, 0xd0, 0x5e, 0x28, 0xce, 0x18, 0xa0, 0x0f, 0xe6, 0xaa,
+  0x83, 0x5b, 0x1a, 0xd5, 0x6c, 0xed, 0xf2, 0x05, 0x27, 0x78, 0x4a, 0xda,
+  0x2a, 0x51, 0x7a, 0x15, 0xfb, 0x66, 0xfb, 0x27, 0xeb, 0xdf, 0x18, 0xb5,
+  0x67, 0x7f, 0xdd, 0x92, 0x5a, 0x0b, 0x38, 0x2a, 0xeb, 0xec, 0x1c, 0x29,
+  0xf8, 0xda, 0x8f, 0x96, 0x61, 0x62, 0x9d, 0xbd, 0x51, 0xb9, 0x65, 0xd3,
+  0x6c, 0x42, 0x28, 0xb3, 0x4d, 0x7b, 0xe9, 0x81, 0xe0, 0xe4, 0x3a, 0x24,
+  0xed, 0xa6, 0x2e, 0xfd, 0xd0, 0x3f, 0xc4, 0xc7, 0xfb, 0xdf, 0xa0, 0xbd,
+  0xcf, 0xd7, 0xad, 0xb7, 0xb7, 0xfb, 0x2b, 0xd3, 0xf1, 0xb5, 0x18, 0xf4,
+  0xa7, 0x55, 0x62, 0xae, 0x5e, 0x54, 0x9a, 0x72, 0x04, 0x5c, 0x89, 0xf4,
+  0x12, 0xe4, 0x6f, 0x93, 0xc9, 0xb6, 0x5d, 0x74, 0x86, 0xd0, 0x2d, 0xab,
+  0xd9, 0x69, 0xae, 0x91, 0x39, 0xa8, 0x74, 0x26, 0xfd, 0xf2, 0xb2, 0x0f,
+  0x58, 0xb4, 0x91, 0xfe, 0x9f, 0x08, 0x95, 0xe4, 0x9d, 0x3a, 0x90, 0x83,
+  0x80, 0xba, 0x79, 0x32, 0x89, 0x69, 0xe5, 0x9c, 0xc1, 0x48, 0x1a, 0x87,
+  0x6c, 0x7c, 0xcd, 0xaf, 0xe0, 0xc5, 0xdc, 0x17, 0xaf, 0x3c, 0x5e, 0xb7,
+  0x25, 0x7f, 0x88, 0x97, 0x6b, 0x65, 0x85, 0xa0, 0x1e, 0x6b, 0xee, 0x18,
+  0x34, 0x4c, 0xb7, 0x19, 0x7b, 0x72, 0xe1, 0x7b, 0x5e, 0xcc, 0xa1, 0xad,
+  0x12, 0x89, 0x66, 0xe0, 0x7a, 0xd1, 0xdc, 0x10, 0xbe, 0xf5, 0x9f, 0x0d,
+  0x76, 0x7a, 0x41, 0xb4, 0xbe, 0x81, 0x8d, 0x5f, 0x38, 0xa8, 0x10, 0x80,
+  0x12, 0x90, 0x91, 0xfd, 0x68, 0x5a, 0x6d, 0xdd, 0xdc, 0x93, 0xb4, 0xb6,
+  0x69, 0xb4, 0xe0, 0xb0, 0x76, 0xf9, 0x0e, 0x0e, 0xdf, 0xc3, 0xb5, 0xcd,
+  0x0b, 0x97, 0x3e, 0x1b, 0xe3, 0x1d, 0x15, 0xe4, 0xd6, 0x97, 0xfd, 0x6e,
+  0xd5, 0x47, 0x5b, 0xfc, 0xc9, 0x4f, 0xda, 0xf0, 0xca, 0x38, 0x2d, 0x75,
+  0x33, 0x81, 0xcb, 0xfc, 0x40, 0xcb, 0xa5, 0xf4, 0xcd, 0xa4, 0x4a, 0x8d,
+  0xcb, 0x7e, 0x46, 0x3f, 0x64, 0xb2, 0x0e, 0x25, 0xf3, 0xac, 0x1f, 0x98,
+  0xb3, 0x27, 0x9f, 0xd1, 0x9c, 0x59, 0x76, 0x77, 0xad, 0x62, 0xe2, 0x2e,
+  0x08, 0x6c, 0x5b, 0xef, 0x2c, 0x75, 0xe7, 0x8c, 0xe4, 0x0a, 0x49, 0x02,
+  0x18, 0xf4, 0xec, 0xb5, 0x44, 0x13, 0x4b, 0x61, 0xc4, 0x4b, 0xf0, 0xbd,
+  0x38, 0x36, 0x6f, 0x49, 0xa7, 0xef, 0xbf, 0x37, 0xcb, 0xb0, 0x9f, 0xfc,
+  0x47, 0x99, 0x71, 0xaa, 0xea, 0x03, 0x99, 0xaa, 0xdf, 0x1f, 0x9c, 0xbf,
+  0x3f, 0x7e, 0xff, 0xf5, 0xbe, 0xcb, 0xe4, 0x82, 0xcc, 0xf3, 0x0a, 0x86,
+  0x74, 0x9c, 0x3e, 0x88, 0xfe, 0xd1, 0x23, 0xe4, 0x99, 0x99, 0x4e, 0x97,
+  0x50, 0x34, 0x27, 0x7d, 0x96, 0xce, 0xec, 0xba, 0xac, 0x32, 0x8e, 0x8a,
+  0xb0, 0x21, 0x6a, 0x13, 0x26, 0x7a, 0x5a, 0x07, 0x8b, 0x0b, 0x28, 0x34,
+  0x65, 0x60, 0x76, 0x8a, 0xbb, 0xe4, 0x04, 0xee, 0x92, 0x69, 0xd9, 0xaa,
+  0xd7, 0x43, 0xbb, 0x73, 0x8a, 0x5d, 0x50, 0xfa, 0x1b, 0x81, 0x4d, 0x66,
+  0xa0, 0x61, 0x43, 0x84, 0x09, 0x67, 0xc0, 0xa0, 0x92, 0x2f, 0xae, 0x89,
+  0x56, 0x95, 0x12, 0xae, 0x34, 0x50, 0x63, 0xd1, 0xea, 0x1c, 0x9e, 0x06,
+  0x37, 0x27, 0x4b, 0x8c, 0x62, 0x5c, 0x66, 0x4c, 0x50, 0x9c, 0x2e, 0xf8,
+  0xd0, 0x30, 0x3d, 0x99, 0xfc, 0xd4, 0xe5, 0x63, 0xd8, 0x39, 0x58, 0x1d,
+  0x77, 0x70, 0xe8, 0xff, 0x08, 0xb2, 0x19, 0x21, 0x3f, 0x27, 0xb3, 0xb6,
+  0x2b, 0xdc, 0x26, 0x51, 0x1a, 0x92, 0x69, 0xe6, 0xf2, 0x91, 0xac, 0xba,
+  0x73, 0xcd, 0xea, 0xce, 0x74, 0x1e, 0xb0, 0xed, 0x11, 0xaa, 0x9c, 0x7e,
+  0x21, 0x73, 0x4b, 0x91, 0x2b, 0x5c, 0xc1, 0x6a, 0x92, 0xb4, 0xb8, 0xed,
+  0x6c, 0xa9, 0x3c, 0x45, 0xe9, 0x87, 0x57, 0x2a, 0xd1, 0x3d, 0x65, 0x4c,
+  0x38, 0xe6, 0x67, 0xbe, 0x98, 0xaf, 0x9b, 0x49, 0x9e, 0x2f, 0x46, 0xb3,
+  0xc9, 0xb3, 0xe4, 0x95, 0xf9, 0x4f, 0xa0, 0x67, 0x0d, 0x19, 0x58, 0x7a,
+  0x48, 0x5e, 0x74, 0x42, 0xbb, 0xd0, 0xad, 0xc1, 0x9c, 0x37, 0xe2, 0x48,
+  0xa1, 0xbf, 0x3e, 0xd9, 0x33, 0x9d, 0xbd, 0x4b, 0x95, 0xe1, 0x72, 0x62,
+  0x16, 0xb0, 0x01, 0x0a, 0x6d, 0x09, 0x6d, 0x90, 0x83, 0x37, 0xd2, 0x82,
+  0xef, 0xee, 0xbd, 0x48, 0x28, 0xdb, 0xe0, 0xdd, 0x9b, 0x67, 0xc9, 0xf8,
+  0x3a, 0x1b, 0x7f, 0xaa, 0x17, 0x33, 0x95, 0xc7, 0x09, 0x4d, 0x29, 0x05,
+  0x42, 0xa8, 0x9f, 0x01, 0x31, 0x8f, 0xe9, 0xf8, 0x34, 0x1f, 0x53, 0xd2,
+  0x5f, 0xaf, 0x15, 0xa0, 0xba, 0xd4, 0x40, 0x9a, 0x67, 0x83, 0xda, 0x9b,
+  0x03, 0xc8, 0x01, 0x86, 0xd7, 0x44, 0x2c, 0x1d, 0x33, 0x07, 0xe6, 0xf3,
+  0x35, 0x97, 0xf8, 0x5d, 0xe9, 0xb2, 0xfd, 0xac, 0xe5, 0xf5, 0xde, 0xc1,
+  0x52, 0x9a, 0xf3, 0xbd, 0x3b, 0xd8, 0x59, 0x52, 0x93, 0x1b, 0x38, 0x15,
+  0x0d, 0xf7, 0x51, 0x0f, 0x61, 0x0d, 0x48, 0x0d, 0xf2, 0xc4, 0xbc, 0xe7,
+  0x6b, 0x61, 0x0a, 0x1b, 0x37, 0x13, 0xb9, 0x04, 0xe5, 0x65, 0xee, 0x15,
+  0xf1, 0x8d, 0x64, 0x93, 0x56, 0x53, 0x8f, 0xc5, 0xdb, 0x4b, 0x77, 0x77,
+  0xc5, 0xc7, 0x4f, 0xff, 0x6a, 0x45, 0x55, 0xe4, 0xd7, 0xbf, 0x72, 0x34,
+  0xbb, 0x0f, 0x9c, 0x2b, 0xd7, 0x11, 0x4c, 0x9e, 0x9b, 0x3d, 0x5b, 0x81,
+  0x8a, 0x3b, 0xe4, 0x26, 0xbd, 0xd3, 0x5c, 0x48, 0xa2, 0x8e, 0x17, 0x28,
+  0x75, 0xa2, 0xac, 0xfa, 0xa4, 0x13, 0x4e, 0xb3, 0x49, 0x70, 0x45, 0x47,
+  0xbb, 0x6f, 0x94, 0x8d, 0x7a, 0xa1, 0x24, 0x24, 0x14, 0x2d, 0x00, 0xa7,
+  0x19, 0x33, 0x66, 0xb9, 0x02, 0x16, 0x31, 0x78, 0x38, 0x3d, 0xb3, 0xbd,
+  0xe7, 0x79, 0x0b, 0xf1, 0x03, 0x9a, 0xd4, 0xe4, 0xc3, 0xfc, 0xaa, 0x4a,
+  0x01, 0x5d, 0x3a, 0x6e, 0x1c, 0x31, 0x39, 0x7a, 0x97, 0x2c, 0xeb, 0x9d,
+  0xe3, 0x95, 0xd2, 0x90, 0x2f, 0x72, 0x00, 0x6b, 0xfd, 0x4e, 0x4d, 0xc9,
+  0x95, 0xd0, 0x2a, 0xb9, 0x0a, 0x14, 0x7e, 0xee, 0x55, 0xd9, 0x88, 0x11,
+  0xc7, 0x9a, 0x97, 0x98, 0x61, 0xb4, 0xd4, 0x56, 0x5a, 0xb0, 0x6d, 0xa2,
+  0xc4, 0x66, 0x75, 0x52, 0xcb, 0x72, 0x39, 0x4a, 0xf2, 0x80, 0x95, 0x8f,
+  0x17, 0x57, 0x94, 0x84, 0x0e, 0x69, 0x5c, 0x10, 0x5d, 0x88, 0x2e, 0xc7,
+  0xa3, 0x29, 0xda, 0x03, 0x6e, 0xa8, 0x9c, 0xdd, 0x2f, 0x9a, 0x16, 0xc9,
+  0x63, 0x19, 0x3c, 0x6e, 0x73, 0xef, 0xf4, 0xa2, 0xbd, 0xa3, 0xdd, 0xe6,
+  0x6f, 0xfe, 0x16, 0xd1, 0xda, 0xcb, 0xc8, 0xe6, 0xfa, 0x55, 0x67, 0x61,
+  0x6f, 0x55, 0x8c, 0xcd, 0x28, 0xf1, 0xe9, 0x74, 0x5e, 0x0c, 0xf4, 0x0b,
+  0x8f, 0x9a, 0x9f, 0xee, 0x32, 0x5b, 0x42, 0xfb, 0x5f, 0x37, 0x3f, 0xdd,
+  0xb9, 0xf1, 0x65, 0x99, 0x3f, 0x3f, 0xdd, 0xb5, 0x5c, 0x59, 0xd1, 0x80,
+  0xb3, 0x98, 0xb5, 0x90, 0x72, 0x9f, 0xd3, 0xb3, 0x62, 0x59, 0x0b, 0xc2,
+  0xba, 0x29, 0x44, 0x64, 0xbd, 0xe4, 0x98, 0x89, 0x76, 0x11, 0x2b, 0x97,
+  0x97, 0x4f, 0x38, 0xb7, 0x4b, 0xfc, 0x30, 0x0e, 0xec, 0x1b, 0x49, 0x04,
+  0xcd, 0xc7, 0xc4, 0xf2, 0x33, 0x05, 0x1d, 0x12, 0xbc, 0x40, 0xd0, 0xe2,
+  0x6c, 0x7d, 0x80, 0x05, 0x7b, 0xb9, 0x0e, 0xe6, 0x94, 0xa2, 0x65, 0xa4,
+  0xd4, 0x9d, 0x6a, 0xc6, 0x91, 0x18, 0x8f, 0xb9, 0xd5, 0x4b, 0x24, 0x5a,
+  0x2a, 0x24, 0xb4, 0xd3, 0x1d, 0x6a, 0x98, 0x99, 0xb8, 0xa6, 0x04, 0x81,
+  0xae, 0x34, 0x59, 0x6f, 0x8f, 0x10, 0xf0, 0x57, 0x01, 0xd5, 0xf7, 0xe8,
+  0xbe, 0x89, 0x24, 0x28, 0x80, 0x6a, 0x8c, 0xa6, 0x61, 0x93, 0x59, 0x7f,
+  0xcc, 0xc6, 0x7b, 0x3e, 0xd8, 0xd9, 0xea, 0x51, 0x89, 0xd8, 0x39, 0x26,
+  0x81, 0x10, 0xe4, 0xf6, 0xba, 0xa7, 0xc0, 0x6f, 0x7e, 0x45, 0x16, 0x94,
+  0x20, 0x93, 0x03, 0x2c, 0xf7, 0x3f, 0x32, 0x45, 0xdd, 0x28, 0xa6, 0x45,
+  0xc8, 0x0f, 0xdb, 0x24, 0xe7, 0x79, 0x0f, 0x85, 0x74, 0xe0, 0x2e, 0xe9,
+  0x7a, 0x32, 0xc5, 0x89, 0x42, 0x1f, 0x57, 0x19, 0xa8, 0xfc, 0xda, 0x56,
+  0x01, 0xb3, 0xf0, 0x6c, 0x21, 0x8e, 0x17, 0xde, 0xae, 0x88, 0x6f, 0x25,
+  0xf2, 0xf2, 0x18, 0xf6, 0xb6, 0x7e, 0x05, 0x66, 0x11, 0x14, 0x4f, 0x91,
+  0x7a, 0x64, 0xb8, 0xf4, 0x94, 0x90, 0xbf, 0x7b, 0x72, 0x27, 0x60, 0x73,
+  0x66, 0xed, 0xc0, 0x11, 0x97, 0xb6, 0x0e, 0x9c, 0x92, 0x8d, 0x0e, 0x06,
+  0x83, 0x48, 0x5e, 0xf5, 0x4d, 0x9e, 0xdd, 0xb6, 0xbc, 0x43, 0xd2, 0xad,
+  0x9e, 0x25, 0xed, 0x67, 0x9b, 0xe4, 0x86, 0x66, 0xc8, 0x34, 0x39, 0x2a,
+  0x6d, 0x31, 0xe2, 0x15, 0x07, 0xd9, 0x7f, 0xda, 0x9b, 0xe6, 0x4f, 0x3c,
+  0xcd, 0x75, 0x2c, 0x53, 0x89, 0x69, 0x3a, 0x1d, 0xc7, 0x78, 0x8f, 0x54,
+  0xf4, 0xea, 0x3e, 0x01, 0x99, 0xbc, 0x53, 0x5c, 0x20, 0x57, 0x18, 0x1b,
+  0x9b, 0xd7, 0xcc, 0x92, 0x99, 0xc7, 0xe0, 0xda, 0x6c, 0x07, 0xd0, 0x77,
+  0x06, 0xed, 0x2b, 0x5f, 0x3c, 0x37, 0xb6, 0x46, 0x76, 0x55, 0x8e, 0xc9,
+  0x38, 0x42, 0x41, 0x52, 0x61, 0xc7, 0x26, 0xdb, 0x20, 0x12, 0x09, 0x97,
+  0xf5, 0xf0, 0xd8, 0xf4, 0xbd, 0xb8, 0xad, 0x2b, 0x71, 0x90, 0xe8, 0x00,
+  0xa3, 0xc1, 0x87, 0xa0, 0x91, 0xd6, 0x30, 0x46, 0xf7, 0x5a, 0x64, 0xc6,
+  0x3a, 0x06, 0x6c, 0x91, 0xbd, 0x40, 0xdf, 0xf3, 0x32, 0xa7, 0x12, 0xc7,
+  0xee, 0xe2, 0x7b, 0x5b, 0x2c, 0xff, 0x92, 0x7c, 0xa0, 0xf6, 0x88, 0x5b,
+  0x03, 0x12, 0x73, 0xaf, 0x22, 0xb8, 0x69, 0x98, 0xeb, 0x40, 0x44, 0x97,
+  0x98, 0x8d, 0x70, 0x4e, 0xbe, 0x36, 0xdb, 0xb9, 0x5c, 0x50, 0x14, 0x14,
+  0xc7, 0x5f, 0x72, 0x27, 0x25, 0x5d, 0xb2, 0x9b, 0x53, 0x6f, 0xb9, 0x89,
+  0x68, 0xee, 0x07, 0xd7, 0xe9, 0xdd, 0xdd, 0xa0, 0xce, 0xb6, 0xcd, 0xae,
+  0xad, 0xb7, 0xeb, 0x7a, 0x4a, 0x1f, 0xad, 0x41, 0x03, 0xb4, 0xfc, 0x7a,
+  0x60, 0xfb, 0x55, 0xe7, 0x57, 0x84, 0xf1, 0x38, 0xa5, 0x57, 0x5b, 0xc2,
+  0xd6, 0xd5, 0xeb, 0xe2, 0xa2, 0x05, 0x5d, 0x0c, 0x1b, 0xd3, 0xa0, 0x92,
+  0xe3, 0xc0, 0xcf, 0x01, 0x63, 0xc9, 0xe0, 0x80, 0x02, 0xb6, 0x19, 0x8f,
+  0xde, 0x99, 0x88, 0x4f, 0xab, 0x65, 0xa0, 0xe3, 0x44, 0xce, 0xaa, 0xef,
+  0xaf, 0x2f, 0x2b, 0x07, 0xce, 0x35, 0x37, 0x84, 0x63, 0x78, 0x40, 0x65,
+  0x10, 0x54, 0xb1, 0x8e, 0x70, 0x8f, 0x2c, 0x33, 0xa4, 0xbd, 0xa1, 0x11,
+  0x8a, 0x79, 0xdf, 0x71, 0x5d, 0xdd, 0xde, 0xde, 0x0e, 0x56, 0x59, 0xd2,
+  0xff, 0x74, 0x40, 0xa6, 0xdd, 0xdc, 0x69, 0x91, 0x9c, 0xe4, 0xc5, 0xe2,
+  0xce, 0x23, 0x1a, 0xb0, 0xe5, 0x29, 0xd4, 0x4d, 0x9c, 0x7c, 0x77, 0xfe,
+  0xd6, 0xd6, 0xc6, 0x4c, 0x34, 0xc3, 0x1b, 0xbe, 0x88, 0x3a, 0xe2, 0x35,
+  0xcd, 0x72, 0x6c, 0x1e, 0x26, 0x31, 0x3d, 0x3c, 0x38, 0xfb, 0xf8, 0xfe,
+  0xe8, 0xe2, 0xe3, 0xf9, 0xc1, 0xf7, 0x34, 0x85, 0x0c, 0xb9, 0x30, 0xf7,
+  0x15, 0xf9, 0xa8, 0xaa, 0xb2, 0x34, 0x12, 0xf6, 0x5d, 0x89, 0xf2, 0xb4,
+  0xc8, 0xf2, 0x8f, 0xd5, 0x91, 0xb0, 0xdc, 0x25, 0xdc, 0x4f, 0xea, 0xcc,
+  0xbe, 0xb7, 0x07, 0x69, 0xbe, 0x3e, 0x19, 0xcb, 0x21, 0x9b, 0x0e, 0xca,
+  0xea, 0x8a, 0x76, 0xe1, 0xf6, 0x1b, 0x91, 0x9f, 0xd1, 0xe6, 0xb6, 0x25,
+  0xc4, 0x46, 0x5c, 0x38, 0x37, 0xd5, 0x25, 0x25, 0xce, 0xaf, 0xaa, 0x2d,
+  0xed, 0x97, 0x5c, 0xf2, 0xb6, 0xe6, 0x53, 0x08, 0xc0, 0xf9, 0xcd, 0xd3,
+  0x55, 0xc6, 0x40, 0xd3, 0x52, 0xa0, 0xe8, 0x84, 0x4d, 0x6f, 0xd8, 0x19,
+  0x0e, 0x13, 0xdb, 0x8f, 0x9c, 0x66, 0x1c, 0x23, 0xe9, 0x45, 0x52, 0x73,
+  0xc1, 0xf0, 0x5c, 0xda, 0x44, 0x66, 0xa4, 0x5e, 0x50, 0xc4, 0x77, 0xb9,
+  0xd4, 0xf6, 0xd4, 0xa0, 0xae, 0xd1, 0xb1, 0xdc, 0x58, 0x79, 0x1e, 0xea,
+  0x92, 0x54, 0x45, 0xca, 0x1b, 0xf3, 0x73, 0x19, 0xf3, 0xf3, 0x7f, 0x6e,
+  0xcc, 0xcf, 0x7f, 0xfd, 0x98, 0x9f, 0xfe, 0xcb, 0xc7, 0xfc, 0x37, 0x1a,
+  0xf3, 0xdf, 0x16, 0xc5, 0xa7, 0xbe, 0xe9, 0x2e, 0xdd, 0xc2, 0x52, 0x89,
+  0xa7, 0x8e, 0xab, 0xcc, 0xad, 0xe2, 0x0f, 0xe4, 0x68, 0xf2, 0xe8, 0x2e,
+  0xbd, 0xc2, 0x42, 0xa9, 0xe4, 0x12, 0x72, 0xc4, 0x69, 0x69, 0xb9, 0x5c,
+  0xcf, 0x19, 0x99, 0x53, 0x26, 0x5a, 0x3d, 0x26, 0xcb, 0x06, 0x15, 0x4f,
+  0xd6, 0xa5, 0x3b, 0x89, 0x36, 0xbc, 0x6e, 0x07, 0x1a, 0xe3, 0x68, 0xa4,
+  0x8a, 0xc5, 0x4c, 0xda, 0xcd, 0x05, 0x2d, 0x6d, 0x64, 0xc6, 0x15, 0x6c,
+  0xcd, 0x89, 0x07, 0x8d, 0xd8, 0x48, 0xb4, 0xe5, 0x5c, 0x58, 0x7d, 0x42,
+  0x99, 0x71, 0x71, 0x3f, 0xa7, 0xe6, 0x92, 0x51, 0x65, 0x2e, 0x60, 0x84,
+  0x45, 0xb9, 0x8e, 0xb0, 0xf6, 0x30, 0xe9, 0x76, 0xce, 0xba, 0xde, 0xae,
+  0xb3, 0xfb, 0x8d, 0x40, 0x61, 0x18, 0x4f, 0x4b, 0x92, 0x38, 0xa4, 0xd7,
+  0xad, 0xd0, 0x44, 0x46, 0xae, 0x0c, 0x12, 0xdf, 0x17, 0x9d, 0xba, 0x48,
+  0xfe, 0xbd, 0xf1, 0x29, 0xcb, 0xe6, 0xe9, 0x14, 0x49, 0xdf, 0x14, 0x8d,
+  0x5b, 0x56, 0xbc, 0xa5, 0xbd, 0x31, 0xea, 0xac, 0xd1, 0x4b, 0x17, 0x6f,
+  0x25, 0x7e, 0x92, 0x1a, 0x0b, 0x3b, 0x5e, 0x4d, 0x82, 0x70, 0x27, 0xf9,
+  0x24, 0xe0, 0xc1, 0x10, 0xfd, 0x54, 0x03, 0x72, 0xb6, 0x13, 0xa4, 0x9a,
+  0x8c, 0x84, 0x80, 0x00, 0x88, 0x3b, 0x6a, 0x5d, 0xf9, 0x8c, 0x10, 0x2d,
+  0xbe, 0xc9, 0x09, 0x22, 0xd2, 0x69, 0xae, 0xfb, 0x3e, 0xc8, 0x4d, 0x5a,
+  0x3c, 0xde, 0x96, 0x77, 0x93, 0x82, 0x33, 0x72, 0x01, 0x92, 0x1b, 0x0a,
+  0x45, 0xd1, 0x82, 0x2d, 0xa5, 0x3c, 0x9e, 0x3c, 0xc4, 0x8b, 0xc3, 0xb3,
+  0x8f, 0xdf, 0x1e, 0x1d, 0x9d, 0x1d, 0xbf, 0x39, 0x39, 0x92, 0x13, 0x63,
+  0x7f, 0xf4, 0xfe, 0xe2, 0xbb, 0x13, 0xad, 0x5d, 0xa4, 0xf3, 0x13, 0x6c,
+  0x78, 0x21, 0xa1, 0x16, 0xb1, 0xdc, 0x43, 0x8d, 0x96, 0xa2, 0x49, 0x0e,
+  0x8e, 0x7f, 0x30, 0x6a, 0xeb, 0x59, 0xff, 0xc3, 0x0f, 0x01, 0x39, 0x7e,
+  0x0b, 0xf2, 0x1c, 0x2f, 0x1c, 0x6c, 0x36, 0x21, 0x6c, 0x47, 0x37, 0xf6,
+  0x65, 0xf8, 0x8f, 0xdf, 0xf8, 0x1a, 0x24, 0x1c, 0x5d, 0x61, 0x35, 0x06,
+  0x7e, 0x51, 0xeb, 0x4f, 0x78, 0x10, 0x8b, 0xe7, 0x3b, 0x5a, 0xda, 0x67,
+  0xa5, 0x0f, 0xed, 0x45, 0xdb, 0x66, 0xfc, 0x94, 0xdd, 0x83, 0x4c, 0x2c,
+  0x79, 0x45, 0xff, 0x5d, 0x52, 0x7a, 0xe9, 0xac, 0xca, 0x6f, 0x48, 0x01,
+  0x34, 0x0f, 0x73, 0x94, 0x81, 0x9e, 0x1d, 0xd8, 0x4a, 0x54, 0x12, 0xe8,
+  0xa0, 0x56, 0x10, 0x0a, 0x45, 0xab, 0xb4, 0x33, 0x82, 0x60, 0x19, 0x91,
+  0x36, 0x90, 0x3f, 0xc6, 0xb6, 0x96, 0x9b, 0xad, 0xf3, 0xe6, 0xe8, 0xbc,
+  0x97, 0x9c, 0x1d, 0xbd, 0x63, 0xd0, 0xf4, 0xd1, 0xfb, 0xaf, 0x85, 0xbd,
+  0x4a, 0x0b, 0x2e, 0x0d, 0x18, 0xb8, 0x17, 0x22, 0x87, 0xbc, 0x39, 0x31,
+  0xaf, 0x03, 0x25, 0x55, 0xd7, 0xe6, 0x76, 0xfd, 0x1d, 0xa9, 0x1d, 0x78,
+  0x68, 0xaf, 0xcc, 0x7f, 0x62, 0x53, 0x65, 0xec, 0x88, 0x6f, 0xb6, 0xc2,
+  0xd9, 0x12, 0xb5, 0xcc, 0x46, 0x73, 0xc5, 0x24, 0xa0, 0xd9, 0xe0, 0x09,
+  0x33, 0x33, 0x12, 0xc6, 0x15, 0x75, 0x86, 0x0a, 0x61, 0x68, 0x92, 0x62,
+  0x80, 0x12, 0x14, 0x22, 0x23, 0xd6, 0x7c, 0xad, 0x47, 0xdb, 0x12, 0xb4,
+  0xb8, 0x6e, 0x2e, 0xa2, 0x79, 0x7b, 0x55, 0x2e, 0x69, 0x2d, 0xce, 0x1d,
+  0x6f, 0x54, 0xaa, 0x49, 0x3e, 0x41, 0x62, 0xb0, 0xf9, 0x48, 0x59, 0x4d,
+  0x22, 0x3c, 0xa8, 0xbf, 0xe5, 0xc4, 0x55, 0xa3, 0xe4, 0xd5, 0xd4, 0xbc,
+  0x38, 0x5d, 0x92, 0xf2, 0x78, 0xc4, 0x35, 0x3a, 0xbe, 0x35, 0x16, 0x5d,
+  0x56, 0x95, 0x75, 0xb7, 0x60, 0x83, 0xd4, 0xe3, 0x65, 0xec, 0x16, 0xda,
+  0xd1, 0x30, 0x6b, 0xc0, 0xf9, 0xd3, 0xc0, 0x44, 0x12, 0x4e, 0xd8, 0x76,
+  0x56, 0xff, 0x06, 0x10, 0xce, 0x1b, 0xbd, 0x64, 0x83, 0x8a, 0x52, 0xd0,
+  0x9f, 0xa8, 0xcf, 0x4b, 0xfc, 0xf1, 0x79, 0x3a, 0xdd, 0xe8, 0x85, 0x85,
+  0xb6, 0x37, 0x64, 0xbf, 0x6e, 0x98, 0x7d, 0x38, 0x94, 0xa4, 0x77, 0x64,
+  0x2b, 0x21, 0x25, 0x23, 0x4d, 0xa4, 0x2f, 0x8a, 0x08, 0xa3, 0xc5, 0x70,
+  0x0c, 0x02, 0x75, 0x50, 0x3c, 0xc1, 0x36, 0xd7, 0x66, 0x5e, 0x58, 0x86,
+  0x49, 0xfa, 0x8d, 0x65, 0x09, 0x2f, 0xc3, 0x2f, 0xac, 0xd9, 0xe8, 0x15,
+  0xda, 0xec, 0x34, 0xa7, 0x6b, 0xe5, 0xaf, 0xb3, 0xbe, 0x1f, 0xad, 0x61,
+  0x77, 0x20, 0x89, 0x65, 0xed, 0xa8, 0x1a, 0x58, 0x8c, 0x09, 0x07, 0x3d,
+  0x61, 0xf5, 0x5d, 0x52, 0x66, 0xfc, 0x32, 0xce, 0xf4, 0xb7, 0x10, 0x08,
+  0x81, 0xa1, 0x82, 0x72, 0x5c, 0xbb, 0xdd, 0x67, 0x13, 0xeb, 0x30, 0x11,
+  0x93, 0x11, 0x60, 0xea, 0xdb, 0x8a, 0x98, 0xd5, 0x0a, 0xc7, 0xd0, 0x38,
+  0x95, 0x70, 0x78, 0x84, 0x83, 0x43, 0xd9, 0xd7, 0xcc, 0x22, 0x4d, 0xa5,
+  0x20, 0x92, 0x82, 0x18, 0x2a, 0xed, 0x53, 0x5f, 0x42, 0x40, 0x6a, 0xd6,
+  0xd1, 0x7b, 0x7f, 0x78, 0x10, 0x6c, 0xfc, 0xd0, 0xda, 0x39, 0xbd, 0x2b,
+  0x96, 0x65, 0xf9, 0x68, 0xaa, 0x99, 0x4e, 0x6a, 0x00, 0x40, 0x86, 0x7d,
+  0x48, 0x8e, 0x57, 0x46, 0x48, 0x64, 0x01, 0xd7, 0xc6, 0xb0, 0x95, 0x9e,
+  0x29, 0xb5, 0xe2, 0x14, 0x78, 0x8f, 0xf7, 0x6c, 0x21, 0x4b, 0x57, 0xbf,
+  0x16, 0x7b, 0xbf, 0x9f, 0x44, 0xaa, 0x60, 0x83, 0xe1, 0xdc, 0xe5, 0x76,
+  0xe1, 0xd4, 0x82, 0x46, 0x48, 0x39, 0x12, 0x14, 0x5c, 0xc5, 0xd3, 0x41,
+  0xfe, 0x42, 0x81, 0xed, 0x40, 0xfd, 0x0b, 0x48, 0x8a, 0x19, 0x23, 0x09,
+  0xb2, 0x70, 0xdd, 0x04, 0x1b, 0x13, 0xf6, 0x5d, 0x61, 0x49, 0x6c, 0x57,
+  0x51, 0xdf, 0x9d, 0x7d, 0xc1, 0x0c, 0xc8, 0x31, 0x27, 0x3a, 0xd0, 0xe7,
+  0x46, 0xa6, 0x89, 0xdb, 0x7c, 0xd2, 0x5c, 0x83, 0xc6, 0x5f, 0xd5, 0xd7,
+  0x5a, 0xb2, 0x09, 0xc9, 0x97, 0x98, 0xc7, 0x80, 0xf2, 0x51, 0x2f, 0x8b,
+  0x2c, 0x18, 0x26, 0x35, 0x61, 0x7a, 0x0d, 0xf2, 0xa7, 0x60, 0x1d, 0xe0,
+  0x79, 0xdc, 0xe6, 0xfb, 0xd8, 0x66, 0x96, 0x1b, 0xbb, 0x7f, 0x71, 0x49,
+  0x0c, 0xfd, 0x81, 0x4e, 0xad, 0x80, 0xf6, 0x81, 0x9e, 0x10, 0xda, 0xc3,
+  0x1b, 0x9f, 0x98, 0x42, 0xf7, 0xdb, 0x0d, 0x2d, 0x47, 0xb7, 0x28, 0x1a,
+  0x1f, 0x73, 0x4b, 0xaa, 0x71, 0xf2, 0x29, 0x9f, 0x96, 0x51, 0xbf, 0xa7,
+  0xb9, 0x08, 0x36, 0x66, 0xdc, 0xc2, 0xbb, 0x0d, 0xf5, 0x66, 0x51, 0xba,
+  0xe5, 0x55, 0x2a, 0xbf, 0xe7, 0x5c, 0xeb, 0x8d, 0x2b, 0x7e, 0xe8, 0x6b,
+  0xf7, 0x50, 0xa7, 0x39, 0x72, 0xad, 0xb2, 0x2b, 0x55, 0x63, 0xf0, 0xf5,
+  0x3e, 0x21, 0x3a, 0xbf, 0xed, 0x25, 0x4f, 0x66, 0x58, 0x94, 0xdd, 0xaf,
+  0x63, 0x82, 0x8b, 0x8b, 0x0b, 0xd6, 0x36, 0xad, 0x35, 0xe9, 0xff, 0x95,
+  0xf4, 0x62, 0x4c, 0x18, 0xef, 0x4b, 0x0b, 0x1e, 0x67, 0x3a, 0x5c, 0x3f,
+  0xca, 0xde, 0xbd, 0xc0, 0x68, 0xa9, 0xe6, 0xa4, 0xc8, 0x4d, 0x32, 0xe5,
+  0x14, 0x9d, 0xc1, 0xff, 0x44, 0x11, 0xd6, 0xb9, 0xa4, 0xd2, 0xd2, 0x76,
+  0xed, 0x5b, 0x96, 0xb2, 0x7a, 0x4a, 0x0f, 0xa0, 0xb2, 0x46, 0x19, 0x00,
+  0xb2, 0xa6, 0x73, 0x68, 0xb1, 0xb6, 0xf8, 0x8d, 0xd7, 0x29, 0x4a, 0x86,
+  0x19, 0x27, 0x62, 0x88, 0xff, 0x8e, 0xba, 0xc4, 0xb4, 0x87, 0xf3, 0x59,
+  0x37, 0x7d, 0xb2, 0x35, 0x63, 0x8e, 0xfa, 0xb3, 0xd3, 0xb3, 0x27, 0x5b,
+  0x3e, 0xa7, 0x96, 0xe4, 0x53, 0x32, 0x21, 0x03, 0xe2, 0xc4, 0x36, 0xd9,
+  0xd2, 0x26, 0xa8, 0x30, 0xb0, 0x3f, 0xf4, 0x2d, 0x32, 0x31, 0x28, 0xfb,
+  0x8f, 0xf0, 0x45, 0xf8, 0x65, 0x1d, 0xb8, 0xd4, 0xab, 0x9f, 0xe4, 0x0e,
+  0x26, 0x2e, 0x87, 0x3a, 0x70, 0x47, 0x91, 0x38, 0x80, 0xd6, 0x29, 0x09,
+  0xdd, 0x7d, 0xa4, 0x0b, 0xb4, 0xf9, 0xc7, 0x89, 0x5e, 0x34, 0xe8, 0x65,
+  0x27, 0x8d, 0xd6, 0x0b, 0x03, 0x0b, 0x30, 0xdf, 0x3d, 0x09, 0xaf, 0xb1,
+  0xe6, 0x4f, 0x80, 0x9e, 0xc0, 0x85, 0xd0, 0xc8, 0xa5, 0x45, 0xbb, 0x96,
+  0xf9, 0x17, 0x07, 0x4b, 0x0b, 0xc8, 0x5a, 0x16, 0xec, 0x96, 0xda, 0x2c,
+  0x85, 0x4e, 0xd2, 0xe4, 0xfd, 0xc9, 0xf0, 0xc2, 0x77, 0xf4, 0xa3, 0xe8,
+  0x72, 0x80, 0x80, 0x6a, 0xf3, 0xc2, 0x78, 0x11, 0xe3, 0x93, 0xe3, 0xe1,
+  0xc5, 0x20, 0xc6, 0xef, 0xbc, 0x6f, 0xc4, 0x2a, 0x41, 0x74, 0x79, 0xf0,
+  0x1a, 0x0a, 0xd1, 0x12, 0xd2, 0x34, 0xf5, 0x1c, 0xc5, 0xe0, 0xb0, 0x5e,
+  0x5e, 0xf9, 0x99, 0xa4, 0xdd, 0xe6, 0x4c, 0x17, 0x3f, 0x67, 0x74, 0x93,
+  0x20, 0xa3, 0xd4, 0x8d, 0x5f, 0x2f, 0x46, 0x7d, 0x8f, 0x88, 0x89, 0xf5,
+  0x1d, 0x54, 0xf5, 0x30, 0xbb, 0xd7, 0xdc, 0x50, 0x9f, 0x42, 0x43, 0x60,
+  0x93, 0x37, 0x14, 0xe6, 0x47, 0x28, 0xb4, 0x5a, 0x0e, 0xc9, 0x71, 0x92,
+  0x81, 0x94, 0x0f, 0x9e, 0x00, 0x7a, 0xf6, 0xd1, 0x9b, 0x8a, 0xa6, 0xa2,
+  0x33, 0x93, 0x52, 0x08, 0xaa, 0x0d, 0x75, 0xa4, 0xd0, 0x8a, 0xdd, 0x72,
+  0xab, 0x82, 0x49, 0xe1, 0x16, 0x74, 0x9b, 0xae, 0x36, 0x96, 0x37, 0x7c,
+  0x02, 0xb6, 0xdb, 0x4b, 0x79, 0x02, 0xf3, 0x09, 0xf3, 0x68, 0xd5, 0x6d,
+  0x22, 0x2d, 0x4e, 0x94, 0x24, 0xa1, 0xc3, 0x05, 0x03, 0x48, 0x75, 0x5b,
+  0xb6, 0x92, 0xec, 0x38, 0x69, 0x61, 0x5a, 0xfa, 0x3f, 0x30, 0x50, 0x0a,
+  0xd1, 0x8c, 0xde, 0x32, 0x7e, 0x97, 0x70, 0x1b, 0x69, 0xf1, 0x86, 0x0f,
+  0xc6, 0xb4, 0xed, 0x26, 0xf6, 0x4b, 0x49, 0x77, 0x19, 0x2b, 0x61, 0x61,
+  0x55, 0x6c, 0x62, 0x4d, 0x36, 0xc2, 0x6a, 0x14, 0xf9, 0xdf, 0x11, 0x41,
+  0x87, 0xee, 0x7a, 0x09, 0xf8, 0x67, 0x95, 0xb2, 0x7b, 0x93, 0xa3, 0x62,
+  0x39, 0x61, 0xbb, 0x6d, 0xf9, 0x1b, 0x9a, 0x0a, 0x3e, 0xb1, 0x9f, 0x62,
+  0xc8, 0xe6, 0x65, 0x39, 0x53, 0x7e, 0xc6, 0xf5, 0x6e, 0x9b, 0x1f, 0x0d,
+  0x54, 0x88, 0xc2, 0x66, 0x62, 0xae, 0xa4, 0x6d, 0xe4, 0x3c, 0xc4, 0x0a,
+  0xa8, 0xa7, 0x1e, 0x6c, 0xa2, 0x95, 0x9c, 0x4f, 0x47, 0x98, 0x33, 0x25,
+  0x36, 0xdf, 0x9e, 0x9f, 0xbe, 0xeb, 0x5f, 0x9c, 0xa2, 0x4a, 0xae, 0x94,
+  0x26, 0x48, 0x22, 0x1a, 0xa7, 0xd6, 0x39, 0xf7, 0x8a, 0xfd, 0xb6, 0x51,
+  0x27, 0x9b, 0xf5, 0x96, 0xd6, 0xe2, 0xc5, 0xa5, 0x32, 0xf7, 0xab, 0xa3,
+  0x07, 0x74, 0xe7, 0x05, 0xeb, 0x22, 0x29, 0xea, 0xaa, 0x91, 0x87, 0x68,
+  0xec, 0x85, 0x1b, 0xf0, 0xbe, 0xca, 0xee, 0xd1, 0xa2, 0xbe, 0x4f, 0x24,
+  0x25, 0xa5, 0xa6, 0xa5, 0x22, 0xa7, 0x4c, 0xe8, 0xc4, 0xb5, 0x25, 0x3b,
+  0x2d, 0xd3, 0x01, 0x61, 0xf5, 0x19, 0x10, 0xde, 0x94, 0xe6, 0x00, 0xa7,
+  0x55, 0x55, 0xde, 0xea, 0xd5, 0x25, 0x09, 0x63, 0xa6, 0xeb, 0xb4, 0x48,
+  0xd5, 0xfd, 0xd2, 0xac, 0x70, 0x61, 0x3c, 0xd1, 0x92, 0xa3, 0x2b, 0x15,
+  0xc0, 0x67, 0xed, 0x4c, 0x5d, 0xc5, 0x8c, 0xf5, 0x9b, 0x6a, 0x51, 0x87,
+  0xf5, 0x8b, 0xc5, 0x3b, 0x78, 0x42, 0x82, 0x92, 0x50, 0x66, 0xee, 0x85,
+  0x9e, 0x50, 0x32, 0x51, 0xd6, 0x3e, 0x4a, 0xc3, 0x58, 0x38, 0x37, 0xbc,
+  0x34, 0x8c, 0x75, 0xfc, 0x4b, 0x70, 0x86, 0x85, 0xac, 0x91, 0x74, 0xfa,
+  0xe9, 0xd4, 0x21, 0xcd, 0x04, 0x64, 0x41, 0x65, 0xcd, 0x69, 0x6f, 0x2b,
+  0x16, 0x0c, 0x54, 0x2c, 0x10, 0x07, 0xf4, 0xd3, 0x40, 0x9b, 0x54, 0x76,
+  0x85, 0x9c, 0xf2, 0x5a, 0x27, 0x8b, 0x31, 0x96, 0x89, 0x02, 0x33, 0x54,
+  0x13, 0x6c, 0xc4, 0xcc, 0x6f, 0x9a, 0x1c, 0x4a, 0x4d, 0x3b, 0x98, 0x1d,
+  0xdb, 0xd9, 0x5d, 0x3d, 0x2b, 0xe1, 0xc7, 0x5c, 0x95, 0x13, 0x52, 0x27,
+  0xa9, 0xe0, 0x4b, 0xc6, 0xaa, 0x65, 0x15, 0x94, 0x09, 0x2c, 0x2e, 0x4b,
+  0x2d, 0xb5, 0x18, 0x0a, 0x2c, 0xa2, 0xd8, 0x05, 0xa7, 0xa8, 0xe0, 0x33,
+  0x88, 0x1a, 0x8b, 0x36, 0x30, 0x62, 0xa3, 0x5f, 0x91, 0x67, 0xb3, 0xd3,
+  0xde, 0xd6, 0x0a, 0x2f, 0xe2, 0x42, 0x11, 0x99, 0xde, 0xea, 0xb5, 0x16,
+  0x24, 0xbe, 0x72, 0xc7, 0xad, 0xdc, 0x58, 0x8e, 0xa0, 0x7b, 0x33, 0x2e,
+  0xe7, 0x1a, 0xb4, 0x4d, 0x24, 0x05, 0xc8, 0xc5, 0x95, 0x10, 0x66, 0x2e,
+  0x22, 0x9e, 0x52, 0x5b, 0x04, 0xaa, 0x49, 0xf4, 0xa3, 0xc9, 0xa6, 0xe6,
+  0x8c, 0x58, 0x0c, 0xf3, 0x89, 0xfc, 0x6a, 0xdf, 0xa6, 0xb4, 0x90, 0x54,
+  0xeb, 0x34, 0xf7, 0xe4, 0x87, 0x1f, 0xda, 0x65, 0x1b, 0xb7, 0xda, 0x72,
+  0x32, 0x00, 0xb3, 0x4e, 0x4a, 0x85, 0x9f, 0xa1, 0xc3, 0x01, 0x20, 0x5f,
+  0xb7, 0x1d, 0x91, 0x52, 0x03, 0xfb, 0x37, 0x70, 0x29, 0xa6, 0x4d, 0x69,
+  0x8c, 0xc0, 0x6b, 0x45, 0x69, 0xb7, 0x22, 0xed, 0xc8, 0xae, 0x3d, 0x8e,
+  0x80, 0x51, 0x20, 0x72, 0x35, 0x3e, 0xce, 0xae, 0x6f, 0x20, 0xd9, 0xfc,
+  0xe9, 0xaa, 0x5b, 0x88, 0xcf, 0x6b, 0xf2, 0x02, 0xf3, 0x7d, 0xb0, 0xba,
+  0xb6, 0xa4, 0x4d, 0x2b, 0x15, 0x8c, 0x1c, 0x6e, 0x7c, 0x26, 0xa1, 0x26,
+  0xbc, 0xd3, 0xb8, 0xca, 0xc4, 0xdf, 0xa0, 0x45, 0x03, 0x82, 0x60, 0x1f,
+  0xa5, 0xfa, 0xf3, 0xe1, 0x01, 0x2e, 0x3d, 0xf5, 0xce, 0x8b, 0xa3, 0x6c,
+  0xea, 0xac, 0x98, 0xa0, 0x37, 0x23, 0xc5, 0xac, 0x4b, 0x24, 0x4b, 0xa3,
+  0x56, 0x03, 0x48, 0x67, 0x4a, 0x0e, 0x27, 0x4a, 0xcd, 0x41, 0xbe, 0x71,
+  0xfe, 0xa2, 0x27, 0x77, 0xe0, 0xc7, 0x98, 0x68, 0x17, 0xc4, 0x22, 0x55,
+  0x2a, 0x4c, 0x68, 0x5d, 0x88, 0x1f, 0x90, 0x72, 0x10, 0xb5, 0x84, 0x09,
+  0xf9, 0xf4, 0x34, 0x96, 0xc9, 0x0a, 0x35, 0xb2, 0x57, 0x6d, 0x3d, 0xe1,
+  0xe0, 0xe2, 0xd1, 0x23, 0xcb, 0x29, 0xf6, 0x24, 0x69, 0x2c, 0xb7, 0x0d,
+  0xac, 0x86, 0xbe, 0x31, 0x4b, 0xfb, 0x78, 0xac, 0x5e, 0x86, 0x0a, 0x10,
+  0xee, 0x52, 0x94, 0x2f, 0x65, 0xb2, 0x75, 0x7f, 0xce, 0xd4, 0xbb, 0x6d,
+  0x53, 0xa5, 0x05, 0xa1, 0x2e, 0xac, 0xdd, 0x5f, 0x1f, 0x5d, 0x74, 0x8f,
+  0x96, 0x1f, 0xe0, 0x41, 0x5e, 0xb2, 0xf9, 0xf7, 0xd9, 0x87, 0x8b, 0x2d,
+  0x57, 0x9c, 0x5a, 0xb6, 0xab, 0x8f, 0x6e, 0x95, 0xcc, 0x97, 0xb0, 0xe0,
+  0x1a, 0xa7, 0x02, 0x8b, 0x9c, 0x82, 0x6c, 0xb0, 0x27, 0x83, 0xbc, 0x2c,
+  0x4f, 0x76, 0x76, 0x8d, 0x25, 0xb5, 0xb3, 0x87, 0x2a, 0x95, 0x4f, 0x76,
+  0x9e, 0xd8, 0xe4, 0x49, 0x7d, 0x2a, 0xb8, 0x16, 0x26, 0xfc, 0x22, 0x9c,
+  0x26, 0xd8, 0xf7, 0x4f, 0xee, 0xee, 0xf0, 0xe3, 0x5e, 0x0b, 0xfd, 0x5f,
+  0x65, 0xfd, 0x5a, 0xdc, 0x2d, 0x3e, 0x31, 0x7a, 0xfc, 0xe6, 0xf7, 0x66,
+  0x1c, 0xe1, 0x97, 0x45, 0xc1, 0xb9, 0x43, 0xa8, 0x03, 0x4a, 0xd9, 0xc6,
+  0x83, 0xe5, 0xf5, 0x30, 0x9a, 0x16, 0x2d, 0x0d, 0xcd, 0xad, 0x5f, 0xd0,
+  0xc6, 0x6c, 0x17, 0x1a, 0xbf, 0x7e, 0x47, 0x72, 0x97, 0x03, 0xe1, 0x4c,
+  0xcf, 0x08, 0xcf, 0x83, 0x99, 0x85, 0x3b, 0x37, 0x47, 0xb6, 0xd2, 0x9a,
+  0x25, 0x43, 0x53, 0x81, 0xe4, 0x60, 0xb8, 0xa1, 0x23, 0x82, 0x24, 0xe0,
+  0x3e, 0xc5, 0xf3, 0xcd, 0xa9, 0xc0, 0x0c, 0xeb, 0x5f, 0xf7, 0x24, 0xa6,
+  0xcf, 0xff, 0x7a, 0xd2, 0xbe, 0x2b, 0xaf, 0xf2, 0xa2, 0xaf, 0x8d, 0xbe,
+  0x92, 0xbf, 0x04, 0xfe, 0x4a, 0x94, 0x27, 0x84, 0x7e, 0x0c, 0x46, 0xf9,
+  0xad, 0x96, 0x0f, 0x05, 0x6d, 0xd8, 0x8e, 0x89, 0x9e, 0x22, 0x85, 0x5f,
+  0x59, 0x48, 0xaf, 0x14, 0x1e, 0x83, 0x65, 0x25, 0x83, 0x54, 0x1b, 0x94,
+  0x0f, 0xb8, 0xa1, 0xc3, 0x3d, 0x27, 0x1d, 0x70, 0xd9, 0x86, 0x56, 0x37,
+  0x8e, 0x86, 0xef, 0x6a, 0x01, 0x3e, 0xd2, 0xfd, 0xaa, 0x61, 0x75, 0xe9,
+  0x63, 0xa7, 0x3b, 0xc9, 0x41, 0x83, 0x32, 0x92, 0xf0, 0x85, 0x85, 0x66,
+  0x2a, 0x4d, 0x45, 0x8f, 0xa7, 0x02, 0xe5, 0x59, 0x89, 0x60, 0x5f, 0xf1,
+  0x70, 0xad, 0x99, 0x60, 0x97, 0x35, 0xf8, 0x21, 0x35, 0xa2, 0x1e, 0xb9,
+  0xd3, 0x24, 0x9c, 0xee, 0x8d, 0x53, 0xfb, 0x6b, 0x4e, 0x22, 0x5d, 0xae,
+  0xa4, 0xfa, 0x4b, 0x11, 0xc9, 0xa7, 0x3d, 0xfc, 0xed, 0xd9, 0xce, 0x4b,
+  0x5e, 0xd1, 0xe3, 0xa3, 0x8b, 0xb7, 0x5d, 0x87, 0x5e, 0x65, 0x36, 0x14,
+  0xff, 0xb7, 0x9f, 0xa5, 0xd5, 0xb5, 0x31, 0x30, 0x88, 0x63, 0xa1, 0x4f,
+  0x34, 0xdd, 0xfd, 0x9d, 0x9d, 0x58, 0x80, 0xfd, 0x77, 0x4c, 0x2a, 0x7d,
+  0xf2, 0xb4, 0x1d, 0x7b, 0x21, 0xb5, 0xbe, 0x4f, 0xd3, 0xbd, 0x9c, 0x0c,
+  0xb0, 0xbd, 0xbd, 0x2c, 0x5f, 0xac, 0x3c, 0xae, 0x15, 0xd6, 0x7d, 0x46,
+  0xb2, 0xd6, 0x7e, 0x88, 0xe5, 0x95, 0x76, 0xef, 0x2a, 0xcb, 0x22, 0xb4,
+  0xc9, 0x96, 0x44, 0x73, 0xbf, 0x95, 0x70, 0xe5, 0x29, 0x2e, 0x10, 0xd3,
+  0xb8, 0x42, 0xc0, 0xd1, 0x9c, 0xbb, 0x5a, 0xf2, 0x0d, 0xaa, 0x8c, 0xa8,
+  0x5a, 0x58, 0xf1, 0x93, 0x42, 0x1b, 0x0f, 0xd3, 0xcd, 0x60, 0x0a, 0xaa,
+  0xf1, 0x5c, 0xf2, 0x4f, 0xf8, 0xdf, 0x74, 0x19, 0xb7, 0x80, 0x8e, 0x7b,
+  0xcf, 0x22, 0x13, 0x87, 0x2b, 0xfb, 0x57, 0x4e, 0x9c, 0x53, 0x8f, 0xd8,
+  0x87, 0xc7, 0xb5, 0x3d, 0x94, 0xd2, 0x36, 0xa4, 0x01, 0xa9, 0xb5, 0x1a,
+  0xe4, 0x2f, 0x1e, 0x0b, 0xcd, 0xf6, 0x60, 0x15, 0x6d, 0x95, 0x7b, 0xeb,
+  0x57, 0x8e, 0xa5, 0xe7, 0xc8, 0xd3, 0xe9, 0xfe, 0x98, 0x49, 0x29, 0x18,
+  0xf8, 0x1a, 0x10, 0x79, 0xea, 0xa6, 0x93, 0x67, 0xf3, 0x0c, 0x83, 0xf7,
+  0xa8, 0x20, 0xfc, 0xcd, 0x6d, 0xed, 0x54, 0xb2, 0x15, 0x35, 0x91, 0xc2,
+  0x5c, 0xa3, 0xf9, 0x9c, 0xb2, 0x85, 0xeb, 0xa8, 0xaf, 0xa5, 0x55, 0xf3,
+  0x19, 0x93, 0xa9, 0x6e, 0xd9, 0x9e, 0x5c, 0x64, 0xf2, 0xba, 0xce, 0xb1,
+  0x95, 0x57, 0x69, 0x98, 0x4f, 0x47, 0x26, 0x3b, 0xda, 0xb0, 0x8b, 0x55,
+  0xba, 0xa4, 0x3c, 0x6e, 0xbc, 0x5c, 0xa2, 0x00, 0x78, 0xfd, 0x48, 0x52,
+  0x7f, 0x6f, 0x33, 0x36, 0x4d, 0xb7, 0xfc, 0xe6, 0x77, 0xe7, 0x6f, 0xff,
+  0xaa, 0xf6, 0x37, 0xf4, 0xd2, 0xd0, 0x1a, 0xee, 0x74, 0x78, 0x94, 0x79,
+  0xa0, 0x2d, 0xc9, 0x1f, 0x6d, 0xcd, 0xbb, 0xfb, 0x47, 0x04, 0xdf, 0xcb,
+  0x6c, 0x88, 0xc9, 0x26, 0x95, 0xe4, 0x35, 0x8f, 0x0d, 0xc5, 0xa8, 0x7b,
+  0x32, 0x78, 0x06, 0x9f, 0xc8, 0xdb, 0xc3, 0x67, 0x4f, 0xf6, 0x76, 0x8d,
+  0xdd, 0xba, 0xd9, 0x91, 0x16, 0x5b, 0x6b, 0x8f, 0x9a, 0x6d, 0xbb, 0xde,
+  0xd9, 0xdd, 0x9c, 0xf6, 0xde, 0xe6, 0xd1, 0x0f, 0x67, 0xef, 0xdb, 0xe3,
+  0xe3, 0x11, 0x05, 0xb9, 0x95, 0xcb, 0x46, 0xe8, 0x74, 0x81, 0x56, 0xfb,
+  0x8a, 0x3d, 0x43, 0x91, 0xcb, 0x30, 0x6b, 0x76, 0xfd, 0x6d, 0x95, 0x93,
+  0x96, 0xbb, 0x4e, 0x13, 0xb2, 0x7e, 0x52, 0x16, 0x13, 0x73, 0xf5, 0x9f,
+  0x12, 0xb7, 0x4f, 0x46, 0x18, 0x90, 0x07, 0x47, 0xb7, 0xfc, 0x98, 0xbc,
+  0xeb, 0xe1, 0xa8, 0x14, 0x21, 0x14, 0xe1, 0x1d, 0x7e, 0x08, 0x46, 0x45,
+  0x4a, 0x8b, 0xe6, 0x7c, 0x93, 0x85, 0xe4, 0xf2, 0xa0, 0x88, 0x44, 0xfb,
+  0xb4, 0xdd, 0xa1, 0x40, 0x19, 0xbc, 0x3e, 0xaf, 0xe0, 0xd4, 0x5e, 0x16,
+  0x0f, 0x11, 0x2a, 0x64, 0x89, 0x88, 0xb0, 0x9f, 0x68, 0x53, 0x5d, 0xfb,
+  0x5b, 0x5e, 0x21, 0x58, 0x90, 0x7e, 0x71, 0xbc, 0x83, 0x34, 0xb7, 0x88,
+  0xcc, 0xc5, 0x63, 0xce, 0xb2, 0xc8, 0x2d, 0x7c, 0x59, 0x32, 0xb0, 0x08,
+  0x9d, 0x49, 0x79, 0xa4, 0xbd, 0x36, 0xeb, 0x51, 0xcc, 0x0f, 0x8e, 0x58,
+  0x2f, 0x2a, 0xf4, 0xa4, 0x45, 0x9b, 0x22, 0x8e, 0xf2, 0x20, 0xd9, 0xfe,
+  0xc9, 0xee, 0x50, 0x76, 0xcd, 0x28, 0x89, 0xcf, 0x9f, 0x84, 0xf7, 0x91,
+  0xd6, 0x7c, 0x15, 0xed, 0xae, 0xf2, 0x75, 0x00, 0xbe, 0xa4, 0x45, 0xf1,
+  0xed, 0x45, 0x63, 0x11, 0xb1, 0xb0, 0x14, 0x47, 0x26, 0xc4, 0x3e, 0xeb,
+  0xc4, 0x26, 0xfc, 0x58, 0x04, 0xea, 0xbb, 0x52, 0x34, 0x42, 0x22, 0x0d,
+  0xa1, 0xa9, 0xe2, 0x45, 0x27, 0x96, 0x87, 0x27, 0x56, 0x04, 0x24, 0xba,
+  0x46, 0xa8, 0x0d, 0x4f, 0xb4, 0x36, 0xdf, 0xb3, 0x17, 0x91, 0xcd, 0xf7,
+  0xfe, 0xf4, 0xe2, 0x68, 0x5f, 0x88, 0x41, 0x34, 0x8d, 0x5e, 0x0d, 0x05,
+  0xc6, 0x10, 0x71, 0xf5, 0x57, 0x4e, 0x27, 0xa1, 0x4b, 0x56, 0x57, 0xbd,
+  0x17, 0x3b, 0xf2, 0x00, 0xf3, 0xd2, 0x31, 0x61, 0x4f, 0x6f, 0x13, 0xa0,
+  0x4c, 0x14, 0x57, 0x82, 0x24, 0x41, 0xb1, 0x0d, 0x78, 0x3f, 0xc5, 0x4a,
+  0xdb, 0x5f, 0x72, 0xe6, 0x2d, 0x92, 0x59, 0xf9, 0xbe, 0x0d, 0xb6, 0x10,
+  0x5f, 0x65, 0x6c, 0x72, 0x59, 0xc4, 0xd5, 0x98, 0x2a, 0xb0, 0x85, 0x65,
+  0xc3, 0x10, 0xa5, 0x7b, 0x2b, 0xc5, 0x67, 0x61, 0x91, 0x58, 0x7a, 0xae,
+  0x55, 0x57, 0x9c, 0x0b, 0x26, 0x76, 0x0f, 0x95, 0x98, 0x67, 0xe4, 0x07,
+  0x5c, 0x42, 0x1c, 0x00, 0x4f, 0xa0, 0x3b, 0x4f, 0xba, 0x4f, 0xcc, 0x39,
+  0x52, 0x3b, 0x8d, 0xec, 0x4a, 0x6b, 0xa4, 0x48, 0xfa, 0x7b, 0x18, 0xc2,
+  0x86, 0x08, 0x6c, 0x3b, 0x46, 0x5c, 0x91, 0x64, 0x55, 0xd7, 0x80, 0xb0,
+  0xa0, 0x99, 0xd5, 0xa0, 0x25, 0xf3, 0x86, 0xc6, 0x19, 0xdc, 0x70, 0x5d,
+  0x78, 0x9d, 0xa8, 0x93, 0x75, 0xca, 0xec, 0x1c, 0xd5, 0x8b, 0x6a, 0xb2,
+  0x98, 0x19, 0xc9, 0xe5, 0x03, 0xc6, 0xa1, 0xf9, 0xc1, 0xaa, 0x05, 0x28,
+  0x23, 0x12, 0x2b, 0x78, 0xb6, 0xd3, 0x6a, 0x6c, 0x80, 0x81, 0xfb, 0xeb,
+  0x6f, 0x9e, 0xe9, 0xef, 0x5a, 0x57, 0x6c, 0x8e, 0xd4, 0x38, 0xa1, 0x82,
+  0xf9, 0xfd, 0x82, 0x4d, 0xb3, 0x9e, 0xac, 0xd4, 0x4a, 0xd8, 0xd9, 0x3b,
+  0x0d, 0x00, 0xd3, 0x43, 0x79, 0xa1, 0x88, 0x22, 0xd6, 0x97, 0x38, 0x9e,
+  0xa7, 0x94, 0x77, 0xe6, 0x7c, 0x96, 0x14, 0x47, 0x77, 0x61, 0xf0, 0x48,
+  0x85, 0x5d, 0x4a, 0x53, 0x4a, 0x12, 0x9f, 0xbf, 0x84, 0x9c, 0xfa, 0x74,
+  0x36, 0x64, 0x79, 0x68, 0xee, 0xe1, 0x77, 0x1b, 0x51, 0xf6, 0x5f, 0xf2,
+  0xb7, 0x72, 0x24, 0xce, 0x18, 0xb2, 0x1f, 0x63, 0x54, 0x00, 0x97, 0x00,
+  0x3b, 0x2f, 0xcc, 0x5e, 0x9b, 0x2c, 0xd8, 0xbf, 0x4a, 0x1d, 0x12, 0xe0,
+  0x2c, 0x97, 0x8c, 0xa4, 0xd0, 0x47, 0x72, 0xc5, 0xc4, 0xe5, 0x13, 0xf6,
+  0xd9, 0x30, 0xd7, 0x6d, 0x98, 0xce, 0xb6, 0xd7, 0x4d, 0xf8, 0x4e, 0xc7,
+  0xe4, 0x15, 0x31, 0x8d, 0x4b, 0x62, 0x25, 0xb3, 0xf5, 0x38, 0x84, 0x71,
+  0x3a, 0x6e, 0x16, 0x32, 0xf1, 0xdd, 0xde, 0x95, 0xea, 0x2d, 0x35, 0xef,
+  0x82, 0x47, 0x16, 0xf9, 0xc1, 0x63, 0xb3, 0xff, 0xd2, 0xf1, 0xbd, 0xea,
+  0x0c, 0xee, 0x8a, 0x15, 0x32, 0x28, 0xc7, 0x3a, 0x1b, 0x0c, 0xd6, 0x76,
+  0x82, 0xe2, 0x9e, 0x79, 0xfd, 0xeb, 0x69, 0xdf, 0x1f, 0x6f, 0xad, 0xf8,
+  0xc5, 0x3b, 0xd8, 0xf9, 0xac, 0xa4, 0x55, 0xad, 0x03, 0x9f, 0x35, 0x29,
+  0xcd, 0xf2, 0xc3, 0x59, 0xbc, 0x8d, 0xcf, 0xb7, 0xca, 0x31, 0x42, 0x90,
+  0xcb, 0x50, 0x42, 0x04, 0x22, 0xe2, 0x5a, 0xb8, 0xe2, 0x38, 0xd4, 0x26,
+  0xde, 0xc9, 0x57, 0xa4, 0x7e, 0x38, 0x44, 0x96, 0xe6, 0x9b, 0xb0, 0xb5,
+  0xf9, 0x34, 0xd9, 0x04, 0x39, 0xd2, 0xb3, 0x17, 0xcf, 0x9e, 0x6e, 0x25,
+  0x1d, 0xd8, 0xd8, 0x56, 0xac, 0x52, 0x22, 0x4e, 0xdc, 0xa2, 0xb6, 0xe9,
+  0x2c, 0xb3, 0x9c, 0x2a, 0x6a, 0x71, 0xb6, 0xaf, 0x38, 0x38, 0x73, 0x2e,
+  0xc0, 0x41, 0xae, 0x76, 0x54, 0xb1, 0x61, 0xd1, 0x1c, 0x20, 0x09, 0xe8,
+  0x63, 0x19, 0xbf, 0x6c, 0x4b, 0x9b, 0x5b, 0x11, 0xee, 0x12, 0x39, 0x98,
+  0x1a, 0x18, 0xaa, 0x9a, 0xb2, 0x03, 0x6f, 0x21, 0x3f, 0x31, 0x9a, 0x37,
+  0xc8, 0x70, 0x61, 0x28, 0xab, 0xa2, 0x80, 0x5c, 0x53, 0x25, 0xd7, 0xd2,
+  0xbb, 0x1d, 0xd8, 0x43, 0xc2, 0xa9, 0x38, 0x7c, 0xfd, 0xc4, 0x68, 0x2e,
+  0xcd, 0x95, 0x88, 0xeb, 0x91, 0xae, 0xb3, 0xf6, 0x3c, 0x32, 0x6b, 0x1a,
+  0xed, 0x14, 0x7d, 0x5f, 0xa0, 0x52, 0xb2, 0x26, 0x64, 0x41, 0x06, 0x89,
+  0x9f, 0x52, 0x5f, 0x5e, 0xe1, 0xcf, 0x48, 0xdb, 0x98, 0xa8, 0xd3, 0xdb,
+  0xd5, 0x91, 0x16, 0x78, 0xe7, 0xb2, 0xcc, 0x7d, 0x75, 0x86, 0xa4, 0x9a,
+  0x62, 0xdc, 0xea, 0xd9, 0xd2, 0x74, 0x04, 0xdd, 0x6d, 0x9a, 0xcb, 0xdf,
+  0xcd, 0x42, 0xd0, 0xbf, 0xdb, 0x5d, 0x19, 0x26, 0x20, 0xf1, 0x57, 0x3b,
+  0x13, 0xb1, 0xa4, 0xf7, 0xb0, 0xa7, 0x98, 0x75, 0x07, 0xce, 0x94, 0x7e,
+  0x48, 0x20, 0x92, 0x6c, 0xa2, 0xc3, 0xdb, 0xdb, 0x5b, 0x0f, 0x77, 0x5a,
+  0x9e, 0x7c, 0xa8, 0x93, 0x67, 0xec, 0xde, 0xf0, 0xf8, 0xa8, 0x2f, 0xbd,
+  0x3e, 0xd0, 0x37, 0x73, 0x80, 0x98, 0x69, 0x03, 0x31, 0x06, 0x94, 0x21,
+  0x34, 0x28, 0x88, 0x62, 0xb4, 0x93, 0x48, 0xae, 0x83, 0xe0, 0xd3, 0x78,
+  0x80, 0xed, 0xb1, 0x8b, 0xf1, 0xcb, 0x7c, 0x40, 0x22, 0x42, 0x08, 0x24,
+  0x05, 0x82, 0x96, 0x03, 0xb3, 0x09, 0x43, 0xad, 0xd3, 0x75, 0xcb, 0x1b,
+  0x1c, 0x0c, 0xdd, 0xbc, 0x97, 0x78, 0xee, 0x76, 0x3e, 0x85, 0xea, 0x89,
+  0x60, 0xb7, 0x7c, 0x04, 0xca, 0xae, 0x4f, 0xab, 0x34, 0x92, 0x0a, 0xac,
+  0x21, 0x9d, 0x22, 0x3f, 0xe9, 0xd5, 0xd1, 0x0d, 0x77, 0xa7, 0xef, 0x2a,
+  0x95, 0x06, 0x8d, 0x44, 0xfd, 0xe4, 0xc6, 0xcc, 0x5c, 0x86, 0x5c, 0xe9,
+  0x55, 0x92, 0xdc, 0x6d, 0x62, 0x5c, 0x5a, 0x85, 0xde, 0x77, 0xf4, 0xcd,
+  0xee, 0x6f, 0x2e, 0x68, 0x8c, 0x54, 0xfe, 0x11, 0xff, 0xb4, 0x35, 0x99,
+  0x3d, 0x3e, 0xa3, 0x48, 0xa3, 0x8f, 0x69, 0xec, 0x28, 0xbf, 0x14, 0xa6,
+  0xea, 0xda, 0x39, 0x5c, 0x09, 0xc6, 0xb3, 0x68, 0x3c, 0xf8, 0x7b, 0x05,
+  0x8f, 0x17, 0xde, 0xb3, 0xea, 0x71, 0xd3, 0x46, 0xdb, 0x1e, 0x87, 0xcf,
+  0xda, 0x1e, 0x07, 0x9b, 0x75, 0xbc, 0x84, 0xe0, 0x09, 0x30, 0xcc, 0x3a,
+  0x79, 0xaf, 0x8f, 0x25, 0x9b, 0xc3, 0xb3, 0xf7, 0x47, 0x5f, 0x9f, 0x6e,
+  0x3d, 0xe4, 0xa9, 0x6c, 0xcb, 0x7f, 0x3b, 0x2e, 0x60, 0xf3, 0x2a, 0xc2,
+  0xf5, 0x71, 0xf7, 0x61, 0xa3, 0x7c, 0x3d, 0x1c, 0xf6, 0x0f, 0xce, 0x8e,
+  0x51, 0x2b, 0x6b, 0x68, 0xfe, 0x5c, 0xc2, 0xe4, 0x3a, 0x00, 0x8f, 0x70,
+  0xff, 0x3b, 0x49, 0xf5, 0xab, 0x15, 0x2e, 0x08, 0x3f, 0x20, 0xca, 0x67,
+  0x43, 0x79, 0x10, 0x25, 0xcf, 0xe6, 0x6e, 0xa3, 0xf9, 0xae, 0xe1, 0x73,
+  0x76, 0xbc, 0x8d, 0x4f, 0xd1, 0x27, 0x31, 0xa0, 0x25, 0x4e, 0x84, 0x45,
+  0x58, 0x29, 0x8b, 0x34, 0x1f, 0x80, 0x4d, 0x21, 0xa0, 0x15, 0xbb, 0x6b,
+  0xec, 0x3f, 0xba, 0x4e, 0x5c, 0xe0, 0x2e, 0x9e, 0x29, 0x41, 0x0e, 0x31,
+  0x82, 0xc2, 0x2b, 0xed, 0x5a, 0xc7, 0x01, 0x07, 0x43, 0x8d, 0xb9, 0x75,
+  0x50, 0xf5, 0x78, 0xa8, 0x51, 0xd6, 0xae, 0x6b, 0x64, 0xa3, 0xbf, 0x48,
+  0x92, 0xfd, 0x0d, 0x8e, 0x2e, 0x65, 0x45, 0xb9, 0xb8, 0xba, 0x66, 0x33,
+  0xab, 0xed, 0x8b, 0x68, 0x95, 0xcc, 0xb3, 0xcc, 0xcf, 0xa6, 0x93, 0xc1,
+  0x16, 0xc4, 0x3b, 0xaa, 0xf7, 0x54, 0x19, 0x05, 0x89, 0x58, 0xbd, 0x61,
+  0xf8, 0xc5, 0xe4, 0x5f, 0x52, 0x64, 0x66, 0x85, 0x06, 0x32, 0xe2, 0x00,
+  0x2a, 0x9c, 0x69, 0x45, 0x33, 0x9d, 0xc9, 0x5f, 0xd3, 0xe2, 0x1e, 0x4e,
+  0x53, 0xf1, 0xe2, 0x23, 0x5d, 0xcf, 0xee, 0xe9, 0xf6, 0x46, 0x6f, 0xaa,
+  0x31, 0xd7, 0x23, 0x7f, 0xa5, 0x15, 0xd0, 0x57, 0xe7, 0x59, 0xa0, 0x12,
+  0xee, 0xcc, 0x5c, 0xd3, 0x30, 0xf0, 0xfa, 0x45, 0x4f, 0x5b, 0xe9, 0x19,
+  0xa3, 0x58, 0xc2, 0x65, 0xa2, 0x08, 0xcb, 0x26, 0x88, 0x88, 0x22, 0xd4,
+  0x92, 0xda, 0x34, 0xe6, 0x43, 0x39, 0x5d, 0x70, 0x4d, 0x76, 0x72, 0x8d,
+  0x52, 0x2e, 0xc4, 0x16, 0xb6, 0xae, 0x84, 0x31, 0x4d, 0xab, 0x89, 0x07,
+  0x45, 0x4d, 0x92, 0xc3, 0x10, 0xb6, 0xed, 0x0a, 0x9d, 0x0d, 0x5c, 0x20,
+  0x80, 0xa3, 0x89, 0xe2, 0xa5, 0xa0, 0x99, 0xe5, 0xb6, 0xd0, 0xd4, 0x1c,
+  0x00, 0xa5, 0x9b, 0x32, 0x5e, 0x6e, 0xd7, 0xac, 0x9f, 0xae, 0x55, 0x6b,
+  0x76, 0xd4, 0xc7, 0x4e, 0xa2, 0xdb, 0xaf, 0xad, 0xe8, 0x69, 0x8d, 0xd1,
+  0xd4, 0x9d, 0x65, 0x98, 0x65, 0x45, 0x0d, 0x8c, 0xe8, 0x94, 0x8c, 0xee,
+  0xed, 0xc7, 0xf8, 0x3b, 0x29, 0x50, 0x3d, 0x56, 0x11, 0x7e, 0x2c, 0x77,
+  0x86, 0x5b, 0x8c, 0xc1, 0x2a, 0x50, 0x4a, 0xfb, 0x4b, 0x9d, 0xa6, 0xbf,
+  0xcb, 0x18, 0x81, 0xc6, 0x4b, 0x8c, 0xd5, 0x68, 0x2d, 0x32, 0x6b, 0xf9,
+  0xdd, 0xfa, 0x38, 0x34, 0x11, 0x03, 0x3c, 0x11, 0x6c, 0x60, 0x0a, 0xa9,
+  0xdb, 0x51, 0xa9, 0x7a, 0x44, 0x5e, 0xb7, 0x94, 0xeb, 0x72, 0xf1, 0xcb,
+  0xde, 0x37, 0x6c, 0xe6, 0x46, 0xb9, 0xba, 0x74, 0x9e, 0x5b, 0x9d, 0xc1,
+  0x23, 0x26, 0xc4, 0x8d, 0xdf, 0xfd, 0x30, 0xb0, 0xec, 0x6c, 0xdc, 0xb8,
+  0x1e, 0x0b, 0xef, 0xcf, 0x40, 0x76, 0xe1, 0xe6, 0x47, 0xf9, 0x0b, 0x9d,
+  0x81, 0xef, 0xf3, 0xc2, 0x68, 0x86, 0xf5, 0x96, 0x6e, 0x4e, 0x49, 0x3b,
+  0x0f, 0xcf, 0x6e, 0xb5, 0x41, 0xb5, 0xe1, 0x8c, 0xc4, 0x71, 0x90, 0x3d,
+  0x52, 0x9c, 0x39, 0x6c, 0x13, 0x88, 0x22, 0xaf, 0x42, 0xda, 0xfd, 0x3c,
+  0x48, 0x77, 0x18, 0x5b, 0xa1, 0x83, 0x36, 0x40, 0x7d, 0x68, 0xcc, 0x82,
+  0x22, 0xbf, 0x1b, 0xd8, 0x20, 0x3f, 0xee, 0x0d, 0x26, 0x2c, 0x70, 0x7e,
+  0x2f, 0x23, 0x08, 0x23, 0x65, 0x7f, 0x21, 0xd9, 0xba, 0x81, 0x2c, 0x9a,
+  0x5d, 0x8c, 0x73, 0xf3, 0xd9, 0x56, 0x72, 0xd9, 0xcc, 0x37, 0x77, 0xb7,
+  0x98, 0x02, 0x57, 0x0a, 0xaf, 0x7a, 0xd5, 0xd1, 0x42, 0x5f, 0x0e, 0xa1,
+  0x0c, 0x71, 0x42, 0x5d, 0xc9, 0x00, 0x14, 0x37, 0x43, 0xbe, 0xd5, 0xa5,
+  0x9c, 0x60, 0x9e, 0x30, 0xcb, 0x4e, 0x6e, 0xf3, 0xd9, 0xba, 0xce, 0x65,
+  0x80, 0x7f, 0xe6, 0xc4, 0x0d, 0x87, 0x5c, 0x34, 0x63, 0x41, 0xe4, 0x8d,
+  0xcf, 0xc2, 0x47, 0x54, 0xc3, 0x9c, 0xa8, 0x6a, 0x66, 0x6e, 0x3a, 0xe9,
+  0x93, 0x0c, 0xb9, 0xaa, 0x4a, 0x73, 0x45, 0x56, 0x11, 0x02, 0x2d, 0xb1,
+  0x29, 0x48, 0xd5, 0xcf, 0x8a, 0x9b, 0xbc, 0x2a, 0x0b, 0xb0, 0x94, 0xdd,
+  0xa4, 0x55, 0x8e, 0x70, 0xff, 0xfa, 0x37, 0xa7, 0xef, 0x8e, 0xd6, 0x7d,
+  0xd7, 0xc8, 0x65, 0x2e, 0xde, 0x74, 0xac, 0x5f, 0xd7, 0x57, 0xad, 0xab,
+  0x19, 0x73, 0x1d, 0x9a, 0x2b, 0x9d, 0x98, 0x82, 0x61, 0x4b, 0xdd, 0xe8,
+  0x61, 0x22, 0xd5, 0xde, 0x2f, 0x2a, 0x2f, 0x80, 0x00, 0x29, 0xd2, 0xa4,
+  0xbb, 0x2c, 0x04, 0xe3, 0xc0, 0x95, 0xa0, 0xc6, 0x21, 0x18, 0xf4, 0x4b,
+  0xbf, 0x48, 0x50, 0xe2, 0x15, 0x12, 0x22, 0x45, 0x9f, 0x37, 0x00, 0x96,
+  0x36, 0x06, 0x90, 0xdf, 0x98, 0xdd, 0x93, 0x65, 0xb3, 0xd1, 0xbe, 0x00,
+  0x37, 0x6a, 0x32, 0xc6, 0x9b, 0x0d, 0x9d, 0x5e, 0x00, 0x47, 0x9d, 0x8c,
+  0x0f, 0x4b, 0x37, 0x2e, 0xf9, 0x36, 0xef, 0x6a, 0xfe, 0x84, 0x6b, 0x9d,
+  0x1b, 0x77, 0xa7, 0x6f, 0x9f, 0x4f, 0x5f, 0x50, 0x04, 0x3c, 0xa4, 0x2b,
+  0x49, 0x5d, 0x42, 0x4f, 0xbb, 0xf0, 0x63, 0x1b, 0x54, 0x40, 0x04, 0xd5,
+  0xa1, 0x6f, 0xd1, 0x7c, 0xbe, 0x1c, 0xe7, 0xad, 0x08, 0xb8, 0x75, 0xf8,
+  0x09, 0xf5, 0x00, 0xa7, 0xa8, 0xb0, 0xa6, 0x54, 0x78, 0xf4, 0xe6, 0x09,
+  0x35, 0xb9, 0x84, 0xb1, 0xcc, 0x5c, 0xdd, 0x5c, 0x76, 0x52, 0x99, 0xcf,
+  0x08, 0x99, 0x9a, 0x90, 0xcf, 0xd3, 0xe2, 0x2c, 0xe5, 0x6b, 0x3d, 0x3f,
+  0x03, 0x36, 0xa8, 0x2e, 0x2b, 0xd6, 0xb0, 0x43, 0xa6, 0x58, 0xe5, 0x84,
+  0x99, 0xfc, 0x98, 0x0b, 0xce, 0xb2, 0xfc, 0x28, 0x1d, 0x5e, 0xa8, 0x24,
+  0xdb, 0xe9, 0x54, 0x1f, 0x37, 0x91, 0xae, 0x11, 0x4a, 0x87, 0x6d, 0x1a,
+  0x1b, 0xca, 0xc6, 0x76, 0x64, 0xad, 0x83, 0xf8, 0xcb, 0x95, 0xa8, 0x33,
+  0x6a, 0x62, 0xdb, 0x43, 0x69, 0xc6, 0x26, 0x54, 0xcc, 0xf5, 0xa2, 0xba,
+  0x41, 0xa6, 0xa2, 0x94, 0xf0, 0x60, 0xa4, 0xb0, 0x5b, 0x94, 0x38, 0x6c,
+  0x02, 0x82, 0xdd, 0xf5, 0x90, 0x50, 0x9c, 0xd5, 0x42, 0xf8, 0x7a, 0xbf,
+  0xe6, 0x5e, 0xd8, 0x0e, 0x5a, 0x73, 0x87, 0x48, 0x2b, 0x58, 0x95, 0x0d,
+  0x30, 0xfb, 0x65, 0x0d, 0xf6, 0xbd, 0xa6, 0x4a, 0xc7, 0xee, 0x2f, 0xfd,
+  0xb4, 0x1e, 0xe7, 0xb9, 0x96, 0x84, 0xa0, 0x50, 0x61, 0x46, 0xe8, 0xd8,
+  0x38, 0xa7, 0x89, 0xf5, 0xdb, 0x5b, 0x2e, 0xf6, 0x09, 0xf3, 0x81, 0x0b,
+  0x00, 0x85, 0x6b, 0x66, 0x03, 0xce, 0x42, 0x9e, 0x29, 0x8d, 0x23, 0xc6,
+  0xaa, 0x64, 0x68, 0xe2, 0xcd, 0x12, 0xfb, 0xd6, 0x98, 0xe0, 0xbb, 0xbe,
+  0x0d, 0xae, 0x93, 0xd0, 0x27, 0xde, 0xe0, 0xba, 0x61, 0x7b, 0xf2, 0xf6,
+  0x76, 0x6f, 0xb0, 0xa2, 0x10, 0xb6, 0x1f, 0x0c, 0x7a, 0xde, 0xb1, 0x50,
+  0x98, 0xa1, 0x27, 0x66, 0x9f, 0x0c, 0xb7, 0x5a, 0xb5, 0xb3, 0x0e, 0x4e,
+  0xce, 0xde, 0x27, 0xa0, 0x45, 0x02, 0x01, 0x6b, 0x01, 0x27, 0x59, 0x22,
+  0x3f, 0x66, 0x3d, 0x19, 0x16, 0x73, 0x12, 0x42, 0x3f, 0x95, 0x5f, 0x1a,
+  0x56, 0x44, 0x98, 0xf4, 0xc4, 0x58, 0xb7, 0x02, 0xd4, 0x20, 0x6a, 0xbf,
+  0x40, 0xca, 0xab, 0x91, 0xd1, 0x1d, 0x8e, 0xf9, 0xe4, 0x80, 0x3f, 0xec,
+  0x11, 0x35, 0xdb, 0xbc, 0xa4, 0xf6, 0xbb, 0x96, 0x16, 0xaa, 0x4c, 0x84,
+  0x04, 0x2a, 0x10, 0xea, 0x4d, 0x66, 0x19, 0xa8, 0xc4, 0xb8, 0xb3, 0x74,
+  0x6a, 0xe2, 0x5a, 0x12, 0xbc, 0x06, 0xc8, 0x06, 0x34, 0xad, 0x39, 0xae,
+  0x53, 0xd8, 0x34, 0x74, 0x33, 0xb1, 0xc5, 0xbc, 0x08, 0xb2, 0xd0, 0xed,
+  0x8c, 0x27, 0xa1, 0x35, 0x1a, 0xa0, 0x8e, 0x57, 0x27, 0x8a, 0x69, 0x67,
+  0xa9, 0xfa, 0xc6, 0x8a, 0x25, 0x7e, 0xdf, 0xe3, 0x8f, 0x8e, 0x16, 0x24,
+  0x23, 0x3a, 0xdf, 0x90, 0x05, 0x66, 0xdd, 0x89, 0x9f, 0xa0, 0xef, 0x89,
+  0x17, 0x8c, 0xd9, 0x6f, 0x88, 0x97, 0x2b, 0x4b, 0x67, 0x54, 0x2d, 0x49,
+  0x33, 0x07, 0xc8, 0x01, 0x4c, 0xf0, 0xce, 0xee, 0x54, 0x2e, 0x52, 0x91,
+  0x59, 0x2d, 0x6c, 0x54, 0x27, 0xa1, 0x80, 0x3f, 0x43, 0x80, 0x36, 0xbf,
+  0xf9, 0x58, 0x92, 0x18, 0x5e, 0x87, 0x14, 0x01, 0x36, 0x9b, 0x83, 0x38,
+  0x5a, 0x42, 0x8c, 0x09, 0x48, 0xb9, 0x09, 0x5b, 0x4f, 0x94, 0x0a, 0x60,
+  0x5c, 0x2f, 0x8a, 0x4f, 0xa6, 0x0b, 0x61, 0x12, 0xab, 0x62, 0x7f, 0x89,
+  0x45, 0x9b, 0x4b, 0xf0, 0xd1, 0x5f, 0x6c, 0x4e, 0x3a, 0xb7, 0x40, 0xdc,
+  0xa7, 0x37, 0xe4, 0xcf, 0x0b, 0xcb, 0x38, 0xc7, 0x7a, 0x37, 0xb1, 0x27,
+  0x24, 0x6d, 0xdc, 0x04, 0x46, 0xf1, 0xed, 0xba, 0xce, 0xae, 0x78, 0xad,
+  0xd9, 0x8f, 0xb8, 0x59, 0x44, 0xe1, 0xe4, 0x90, 0xb6, 0xd2, 0xfe, 0x20,
+  0x45, 0x49, 0x71, 0x5f, 0x81, 0x40, 0x5c, 0x60, 0xe3, 0x93, 0xe5, 0x86,
+  0x6f, 0xd2, 0x7e, 0xf0, 0x0b, 0x58, 0x44, 0x7a, 0xd2, 0xce, 0xa8, 0x5e,
+  0xb6, 0x0f, 0xda, 0x15, 0xf5, 0x5c, 0x02, 0xb6, 0xc0, 0x52, 0xac, 0xea,
+  0x46, 0x65, 0xe6, 0xfc, 0xea, 0x56, 0x11, 0xc9, 0xe5, 0x72, 0xbb, 0xb2,
+  0xc2, 0x6e, 0xb2, 0x19, 0x1d, 0x55, 0x91, 0x07, 0xff, 0xc2, 0x59, 0x72,
+  0x03, 0xf1, 0x26, 0xca, 0xfe, 0xb0, 0x33, 0x49, 0xc5, 0xa3, 0xe4, 0xe1,
+  0x7b, 0x23, 0x7e, 0x48, 0x1a, 0x7a, 0xc2, 0xf0, 0x3d, 0x4b, 0x24, 0x15,
+  0x84, 0x6e, 0xa4, 0x5d, 0xb7, 0xd7, 0xe5, 0xaf, 0x91, 0x82, 0xd4, 0x3c,
+  0xe1, 0xed, 0xcf, 0xde, 0x77, 0x9b, 0xb3, 0x95, 0x55, 0x46, 0xa8, 0xe3,
+  0xf7, 0x90, 0x1c, 0xb4, 0x16, 0xbc, 0xfc, 0x6c, 0x89, 0x87, 0xeb, 0xd7,
+  0x0b, 0xc1, 0x36, 0xfb, 0x5b, 0x5c, 0x06, 0x16, 0x2d, 0x11, 0x28, 0x5a,
+  0xfd, 0xef, 0x26, 0x04, 0xe9, 0x8b, 0xd2, 0xe5, 0x7c, 0x12, 0xcf, 0xbc,
+  0xd7, 0xb5, 0x95, 0xea, 0x72, 0x12, 0xb9, 0xa0, 0xd5, 0x50, 0xce, 0x8f,
+  0xe3, 0x37, 0x66, 0x93, 0x91, 0xce, 0x7a, 0x65, 0x06, 0xf1, 0xd5, 0xb2,
+  0xc5, 0x45, 0x21, 0x6b, 0x8d, 0xf0, 0xc2, 0xce, 0xa7, 0x9a, 0xdd, 0x3e,
+  0x1d, 0x13, 0xb1, 0xb3, 0x79, 0xb5, 0x54, 0x24, 0xfa, 0xae, 0x64, 0xf6,
+  0x71, 0xbf, 0x04, 0xd8, 0xb3, 0x80, 0x97, 0x32, 0x7a, 0xd5, 0x82, 0xca,
+  0x34, 0xd2, 0x95, 0xc7, 0x95, 0x27, 0xa4, 0x3a, 0x4a, 0x95, 0x51, 0x9f,
+  0xdb, 0x1d, 0x0e, 0x08, 0xc6, 0xd8, 0x9b, 0x5d, 0x67, 0xe6, 0x20, 0x72,
+  0xea, 0xd0, 0xa8, 0x2a, 0x3f, 0x65, 0xbc, 0xeb, 0x60, 0x5e, 0x80, 0x31,
+  0x87, 0x75, 0x29, 0x71, 0xca, 0x1a, 0x39, 0x37, 0xb1, 0x10, 0xc6, 0x88,
+  0x3e, 0x4b, 0x95, 0xae, 0x24, 0xd5, 0xde, 0x49, 0xc3, 0xdc, 0x65, 0xba,
+  0x2b, 0x23, 0x34, 0x2f, 0xd7, 0x98, 0xe8, 0xb9, 0xe2, 0x27, 0xdf, 0x6e,
+  0x02, 0x29, 0x76, 0xbd, 0xec, 0xf0, 0xfb, 0x67, 0x5f, 0x3c, 0x35, 0xcb,
+  0x4f, 0xbe, 0x5d, 0x75, 0xff, 0xe4, 0x47, 0x56, 0xf4, 0xf1, 0xf5, 0xab,
+  0xcc, 0x5e, 0x82, 0x27, 0x2c, 0x79, 0x65, 0x36, 0x15, 0xfb, 0xc4, 0x28,
+  0xa6, 0xd5, 0x75, 0x77, 0xa1, 0x06, 0x5b, 0x5f, 0x4d, 0x8f, 0x09, 0xa3,
+  0x7a, 0x60, 0xb2, 0x91, 0x26, 0xce, 0x69, 0x0e, 0x13, 0x57, 0x19, 0x51,
+  0xa8, 0x98, 0x7b, 0xac, 0x24, 0x99, 0x1d, 0x13, 0x39, 0xe4, 0xce, 0x91,
+  0xc3, 0x69, 0xb1, 0xd0, 0xc3, 0x69, 0x79, 0xc0, 0xb7, 0x92, 0x7b, 0x55,
+  0xee, 0xff, 0x4c, 0xa8, 0x60, 0xa3, 0xd5, 0x36, 0x04, 0x0b, 0xc3, 0xb7,
+  0x02, 0xb5, 0x93, 0x2b, 0x12, 0xd9, 0xc4, 0x11, 0xce, 0xfb, 0xb6, 0x5c,
+  0x22, 0xc4, 0x60, 0xef, 0xeb, 0x06, 0xcc, 0x13, 0x9d, 0x1c, 0x91, 0xd1,
+  0x12, 0xb1, 0x08, 0xd9, 0x73, 0x91, 0xdb, 0xc4, 0xbb, 0x5c, 0x38, 0x66,
+  0x19, 0xc1, 0x25, 0x16, 0x76, 0xaa, 0xe0, 0x2c, 0x1e, 0xbc, 0xa5, 0x38,
+  0x0b, 0x4f, 0x3d, 0xf5, 0x88, 0xf1, 0x4f, 0x62, 0xa6, 0xe9, 0x0f, 0x6c,
+  0x25, 0xa2, 0x16, 0x78, 0x86, 0x8d, 0x14, 0x68, 0xc7, 0x9c, 0x47, 0x1c,
+  0x1b, 0x6c, 0xe2, 0x3d, 0xe6, 0xbf, 0xb2, 0xff, 0x62, 0xa7, 0x27, 0x22,
+  0x8a, 0xc2, 0x5d, 0xfe, 0x33, 0xa8, 0x1e, 0x15, 0xea, 0x11, 0xf4, 0x98,
+  0xf9, 0xa9, 0x7d, 0x32, 0x94, 0x81, 0x42, 0x76, 0xf8, 0xec, 0x09, 0xc5,
+  0xbc, 0xe3, 0x3e, 0x25, 0xbe, 0x68, 0x7d, 0x2f, 0x82, 0x75, 0x23, 0xd4,
+  0x31, 0xf0, 0xa7, 0x77, 0xb6, 0xec, 0x6a, 0x1c, 0x4b, 0xbc, 0x74, 0x03,
+  0x45, 0x8b, 0xa2, 0x1e, 0x89, 0x49, 0x5e, 0x47, 0x9c, 0x18, 0x8c, 0x67,
+  0x93, 0x0d, 0x67, 0xab, 0x49, 0xa1, 0xa0, 0x06, 0x6f, 0x6d, 0xac, 0xa2,
+  0x39, 0x30, 0xeb, 0xa0, 0xc3, 0xb7, 0xb5, 0xd2, 0xf3, 0x95, 0x49, 0x6b,
+  0xbb, 0x2f, 0x07, 0x4f, 0x5b, 0xe7, 0xa4, 0x99, 0xce, 0xfa, 0xb7, 0xa3,
+  0x07, 0x62, 0x1f, 0x17, 0x27, 0xef, 0x92, 0xd9, 0x02, 0x05, 0x9b, 0x85,
+  0xbb, 0xf5, 0x7e, 0x9a, 0xa9, 0x1b, 0x9a, 0x1c, 0x3c, 0xec, 0x2b, 0xbc,
+  0x06, 0xa3, 0x5f, 0x08, 0xe9, 0x8e, 0x02, 0x6d, 0x6d, 0x1a, 0xa9, 0xd8,
+  0xfd, 0xc2, 0x55, 0x46, 0x4d, 0xb2, 0x3f, 0x7b, 0x3e, 0x9f, 0xe6, 0xd1,
+  0x4c, 0x1f, 0x05, 0xda, 0x66, 0x77, 0xd9, 0x78, 0x81, 0x38, 0x35, 0xa9,
+  0x87, 0x44, 0xfb, 0xb3, 0xda, 0x81, 0xee, 0x39, 0xcd, 0xc5, 0x4d, 0x6e,
+  0x7e, 0xd0, 0x9d, 0x8c, 0xee, 0xd8, 0x79, 0xf0, 0x81, 0xf7, 0x8c, 0x53,
+  0xde, 0x63, 0xbf, 0x0b, 0x62, 0xc5, 0x80, 0xf7, 0xd3, 0x85, 0x68, 0xb6,
+  0x54, 0x7e, 0x55, 0xb0, 0xd2, 0xf1, 0x2e, 0x1f, 0x57, 0x65, 0x5d, 0x5e,
+  0x32, 0x70, 0xcd, 0x33, 0x91, 0x8e, 0x8f, 0x87, 0xc9, 0x6d, 0x36, 0xd2,
+  0x2c, 0xd9, 0x41, 0xe8, 0x4c, 0x86, 0x0c, 0xa1, 0x08, 0x49, 0x95, 0x67,
+  0x0d, 0x4d, 0x99, 0xc6, 0x44, 0x7b, 0x5a, 0xf0, 0xa6, 0x9f, 0x15, 0x57,
+  0xc6, 0x5a, 0x85, 0x02, 0x4f, 0xe5, 0xc1, 0xa6, 0x7c, 0x31, 0xcd, 0xb3,
+  0x32, 0x12, 0x18, 0xe7, 0x0e, 0xe8, 0xb5, 0x22, 0x05, 0xea, 0xe8, 0x0e,
+  0x1f, 0xa5, 0x35, 0x67, 0xb4, 0xb0, 0x77, 0xc0, 0x88, 0x1d, 0xd2, 0x51,
+  0xc4, 0x71, 0xf9, 0x89, 0x7c, 0x66, 0x41, 0xf2, 0xca, 0x28, 0xa3, 0x5a,
+  0x65, 0x14, 0xee, 0x6f, 0x7b, 0xef, 0x8a, 0x49, 0x59, 0x01, 0x90, 0xe4,
+  0x55, 0x46, 0x40, 0xf9, 0xb0, 0x45, 0x85, 0x2c, 0x2c, 0xd0, 0x4e, 0x86,
+  0xf2, 0xf4, 0xf6, 0x9a, 0xe3, 0xb6, 0xba, 0x0a, 0x74, 0x39, 0x21, 0xf1,
+  0x96, 0x73, 0x7d, 0x84, 0x7c, 0x9b, 0xab, 0xe7, 0xea, 0x75, 0xe3, 0xad,
+  0x46, 0x94, 0xa2, 0x4e, 0xd6, 0xc3, 0x65, 0x99, 0x8a, 0x7b, 0xe6, 0x4d,
+  0x7e, 0xb5, 0xa4, 0x46, 0x9e, 0xe5, 0x7b, 0xc0, 0xe5, 0x84, 0x13, 0x8b,
+  0xde, 0xc8, 0x95, 0x59, 0xf1, 0x19, 0x0d, 0x0b, 0x3f, 0xa2, 0xd6, 0x41,
+  0xe8, 0x89, 0x5d, 0xb2, 0xfb, 0x96, 0xd1, 0x64, 0xfc, 0x06, 0x35, 0xf9,
+  0x56, 0x31, 0xb1, 0x79, 0x5d, 0xb1, 0x27, 0x20, 0xa6, 0xf2, 0xf9, 0x5a,
+  0x5e, 0xc0, 0x49, 0xe1, 0xc5, 0x64, 0xe3, 0x4a, 0xdf, 0x32, 0x0a, 0x60,
+  0x84, 0xb4, 0x22, 0xc0, 0x14, 0x2f, 0x2a, 0x3b, 0xb1, 0x05, 0xa2, 0x69,
+  0x7d, 0xda, 0x31, 0x2f, 0xff, 0xec, 0x96, 0xf4, 0x83, 0xbd, 0xfe, 0x28,
+  0x4b, 0xa9, 0x58, 0xc3, 0xab, 0x86, 0x34, 0xa6, 0x78, 0xa6, 0xca, 0x92,
+  0x44, 0x95, 0xaf, 0xf8, 0xcd, 0x0b, 0xa8, 0x5a, 0xb4, 0xb6, 0xa7, 0x07,
+  0x1f, 0x2e, 0xbe, 0x49, 0x92, 0x3d, 0x22, 0x04, 0x7f, 0x4c, 0xa6, 0x0a,
+  0x44, 0x42, 0xab, 0x15, 0x57, 0x0e, 0x98, 0x2e, 0xd2, 0xbf, 0x2d, 0x8a,
+  0x36, 0x11, 0x7c, 0xcc, 0x4b, 0x8f, 0x0b, 0x54, 0xee, 0x5e, 0x4e, 0x9d,
+  0x6e, 0xe1, 0xac, 0xb5, 0x52, 0x08, 0x2f, 0x49, 0xbf, 0x8f, 0x79, 0x27,
+  0x67, 0xd7, 0x03, 0x01, 0xcd, 0x3a, 0x4e, 0xd9, 0x21, 0xbd, 0x95, 0xee,
+  0x2a, 0xa7, 0x90, 0x46, 0x4e, 0xab, 0x4c, 0x5c, 0xfd, 0x4d, 0xb7, 0xc8,
+  0xdf, 0xf9, 0xdb, 0xc3, 0x4e, 0x73, 0xcf, 0x3f, 0x7b, 0xb6, 0xf3, 0x3b,
+  0xc2, 0xf5, 0x4a, 0x72, 0x90, 0x88, 0x23, 0x21, 0xca, 0xa4, 0xf3, 0x7d,
+  0x45, 0x89, 0xac, 0xea, 0x6a, 0x28, 0xe5, 0x21, 0x3f, 0xd5, 0xbe, 0x6e,
+  0x26, 0x84, 0xdb, 0xb2, 0x4c, 0x1c, 0x95, 0xea, 0xfb, 0xff, 0xf9, 0x5f,
+  0x61, 0xa2, 0xed, 0x8f, 0x3f, 0xb3, 0xb7, 0xf8, 0x12, 0xf5, 0xb1, 0x1c,
+  0xf0, 0x5f, 0xe5, 0x4c, 0xed, 0xae, 0x64, 0x3a, 0xd2, 0x1b, 0x7f, 0xdc,
+  0xb0, 0x35, 0x2c, 0xa0, 0xf4, 0x47, 0xd3, 0xb4, 0xf5, 0xf6, 0x94, 0xbe,
+  0xe9, 0xc2, 0x56, 0x52, 0xf9, 0xdd, 0xea, 0x03, 0x2e, 0xc7, 0x52, 0xca,
+  0x3a, 0x4c, 0x96, 0xd5, 0xa0, 0xd1, 0x5a, 0x0c, 0x52, 0xd5, 0x40, 0x1d,
+  0xe6, 0xe4, 0x26, 0x67, 0x94, 0x15, 0xfa, 0x4f, 0xba, 0x28, 0x12, 0x9a,
+  0xf3, 0x62, 0x89, 0x03, 0x53, 0xa0, 0x44, 0xff, 0x69, 0x56, 0xa0, 0xd7,
+  0xdc, 0x96, 0xff, 0xd5, 0x76, 0x66, 0x1a, 0x15, 0x83, 0x7a, 0xfc, 0xf1,
+  0x8f, 0xbb, 0x94, 0x21, 0xb4, 0xde, 0x6d, 0x82, 0xd1, 0xfe, 0x76, 0x55,
+  0xad, 0x86, 0xb4, 0x8a, 0x55, 0x55, 0x3f, 0x48, 0xe9, 0xc7, 0x3d, 0x52,
+  0x1c, 0xff, 0x6b, 0x40, 0xff, 0xfd, 0x71, 0xb7, 0xff, 0xec, 0x67, 0xfb,
+  0xd1, 0x3f, 0xee, 0x7e, 0xfc, 0xe3, 0xde, 0x7a, 0x34, 0xcd, 0xce, 0xf1,
+  0x01, 0x78, 0x58, 0x45, 0xd2, 0x67, 0x8b, 0x7b, 0x49, 0xdb, 0x90, 0x58,
+  0xa3, 0x2b, 0x9a, 0x85, 0x02, 0x9c, 0x21, 0x67, 0x12, 0xb9, 0xae, 0x3a,
+  0xaa, 0xaa, 0xd6, 0xcd, 0x52, 0xe1, 0x70, 0x5b, 0xf2, 0xcb, 0xe2, 0x56,
+  0x91, 0x92, 0xe3, 0x92, 0x4f, 0x10, 0x08, 0xc3, 0x22, 0x6b, 0xef, 0x0d,
+  0x62, 0x50, 0x51, 0xda, 0x8d, 0x70, 0x36, 0x04, 0x20, 0x65, 0xae, 0xb3,
+  0x34, 0xe9, 0x4c, 0xfa, 0x68, 0x64, 0x7f, 0x52, 0x64, 0x41, 0x62, 0x56,
+  0x6a, 0x13, 0x19, 0xd9, 0x80, 0xb3, 0x52, 0xc1, 0xbc, 0x69, 0x03, 0xd8,
+  0x12, 0xd7, 0x42, 0xef, 0x5d, 0xe9, 0x55, 0xaa, 0x00, 0xda, 0x95, 0x16,
+  0x7f, 0x5b, 0x68, 0x5d, 0x5c, 0x77, 0xa3, 0x98, 0x96, 0x72, 0x57, 0x2f,
+  0x9d, 0x7f, 0x26, 0x11, 0x18, 0x64, 0xfc, 0x73, 0xd5, 0xa6, 0x32, 0xe6,
+  0x12, 0x48, 0x47, 0x54, 0xd4, 0xaa, 0x55, 0x22, 0x64, 0x8c, 0x9a, 0x9d,
+  0x35, 0x0c, 0x5a, 0x65, 0xa0, 0x4a, 0xeb, 0x25, 0x13, 0xe2, 0x4f, 0x85,
+  0x37, 0x09, 0x32, 0x51, 0x98, 0x9c, 0x15, 0x9e, 0x5d, 0x4e, 0x93, 0x25,
+  0x1c, 0x69, 0x93, 0xf5, 0xbd, 0x3c, 0x59, 0xe4, 0xe5, 0xe2, 0xa7, 0x1e,
+  0xd6, 0x4d, 0x02, 0x7c, 0xfd, 0x20, 0x2a, 0x69, 0x36, 0xd1, 0xe4, 0xde,
+  0x48, 0x42, 0xe6, 0xe3, 0xb4, 0xfc, 0x7e, 0xea, 0x22, 0x10, 0x59, 0x63,
+  0xf6, 0xd9, 0x46, 0x7f, 0x23, 0xd9, 0x44, 0x2e, 0x3d, 0xec, 0xba, 0x64,
+  0x92, 0xd6, 0xd7, 0x5b, 0x31, 0x47, 0xa4, 0xf3, 0xfd, 0x39, 0x41, 0x35,
+  0x12, 0xdf, 0x03, 0x5d, 0x99, 0x2c, 0xa1, 0xa2, 0x03, 0xd3, 0x0b, 0xfb,
+  0x14, 0x01, 0x13, 0x06, 0x0c, 0xf6, 0x6d, 0x7e, 0x4d, 0xe7, 0x67, 0x7d,
+  0x10, 0x8f, 0xf2, 0xcf, 0xff, 0x23, 0xbc, 0x17, 0xe4, 0x49, 0xc6, 0x7c,
+  0xf5, 0x39, 0x29, 0xca, 0x5d, 0xa4, 0x14, 0xcd, 0x4b, 0x5e, 0xcd, 0xaf,
+  0x2b, 0xa3, 0xfe, 0x85, 0xb9, 0x57, 0xc3, 0x6f, 0x12, 0xb8, 0x62, 0xa8,
+  0x12, 0x0b, 0x3f, 0x63, 0x37, 0x88, 0x47, 0x64, 0xf8, 0x3b, 0xf2, 0xe6,
+  0x11, 0x9c, 0xa4, 0x9f, 0xd6, 0xfd, 0x40, 0xd5, 0xb9, 0xf0, 0xb1, 0xb5,
+  0xa4, 0x78, 0x92, 0x35, 0x42, 0x30, 0x46, 0x0a, 0xac, 0x15, 0x63, 0x54,
+  0xf6, 0x4d, 0xb6, 0x07, 0x83, 0x6d, 0x12, 0x58, 0xdb, 0xe6, 0x0f, 0xc7,
+  0x20, 0x0f, 0xd4, 0x6d, 0xb7, 0x02, 0x8e, 0xd9, 0xe8, 0xc0, 0xae, 0x80,
+  0x3e, 0x43, 0x0a, 0xc6, 0xb9, 0x40, 0x7b, 0xfd, 0xf7, 0x05, 0xa0, 0xa8,
+  0x95, 0x51, 0x28, 0x2b, 0xce, 0xec, 0x9d, 0xb5, 0xee, 0xc8, 0xa0, 0xee,
+  0x0c, 0x7b, 0xd6, 0x6b, 0x61, 0x91, 0x68, 0xae, 0x3b, 0x29, 0x67, 0x0c,
+  0xa3, 0x01, 0x40, 0x38, 0x6f, 0x94, 0xbd, 0x0b, 0x59, 0xd5, 0xe9, 0x4a,
+  0x83, 0xee, 0xe9, 0x5e, 0xdb, 0xf1, 0x31, 0xcf, 0x0b, 0x63, 0x62, 0x18,
+  0xd5, 0x18, 0xcc, 0x8c, 0x84, 0xc5, 0x0b, 0x73, 0x7a, 0xd8, 0x9b, 0xd6,
+  0xa9, 0x40, 0x02, 0x7f, 0x32, 0xcb, 0x37, 0xab, 0x71, 0xa8, 0x8a, 0x0d,
+  0xea, 0x45, 0x89, 0xe7, 0x6f, 0x06, 0x97, 0x25, 0x7f, 0x64, 0x8b, 0x6f,
+  0x4c, 0x41, 0xeb, 0x62, 0x43, 0x64, 0x7c, 0xb7, 0x49, 0x69, 0xa6, 0x11,
+  0x1c, 0x28, 0x84, 0x06, 0x82, 0xf6, 0x8e, 0xd6, 0x62, 0x6e, 0x0f, 0xeb,
+  0x73, 0xb0, 0x9e, 0x12, 0x57, 0x65, 0x87, 0xc6, 0x4c, 0xe4, 0x96, 0x66,
+  0xde, 0xdf, 0x1c, 0x9d, 0x8b, 0x7a, 0x02, 0x0f, 0x84, 0xab, 0x90, 0x18,
+  0xb0, 0xa9, 0xc2, 0x92, 0x79, 0xfe, 0xd4, 0xd6, 0x2b, 0xae, 0xaf, 0xd3,
+  0xbd, 0x67, 0xcf, 0xa5, 0xdb, 0xca, 0xa2, 0x85, 0x7b, 0x7b, 0x83, 0x7f,
+  0xb5, 0xbd, 0xcd, 0x61, 0x73, 0xb2, 0x4d, 0x03, 0xb9, 0x90, 0x4a, 0xd1,
+  0xe5, 0x8d, 0xcf, 0x37, 0xa2, 0x80, 0x39, 0xd5, 0x5c, 0xd9, 0x7e, 0x27,
+  0xef, 0x33, 0x40, 0x7d, 0x3e, 0xa3, 0x7e, 0xaf, 0x45, 0x32, 0x9f, 0x08,
+  0x17, 0x42, 0xa0, 0x35, 0xb4, 0xc8, 0xe6, 0x85, 0x76, 0x42, 0x4b, 0xf2,
+  0x24, 0x9a, 0x9d, 0x3a, 0x48, 0x0e, 0x5a, 0xf3, 0x53, 0x73, 0x75, 0xc8,
+  0x71, 0x48, 0x6d, 0x22, 0xe0, 0x37, 0x5a, 0x0d, 0xaf, 0x61, 0x41, 0x81,
+  0x12, 0x6b, 0x31, 0xd1, 0xfd, 0xd1, 0xc6, 0xd3, 0xb0, 0x0b, 0xbb, 0x64,
+  0xd0, 0x53, 0xf3, 0x85, 0x20, 0x53, 0x44, 0xf7, 0x85, 0x42, 0xa4, 0xd8,
+  0xa2, 0xf7, 0x60, 0x82, 0xee, 0xb4, 0x98, 0xeb, 0xa0, 0x6a, 0x3a, 0xcc,
+  0x34, 0xab, 0x29, 0x79, 0x01, 0x13, 0x1b, 0x67, 0x39, 0x13, 0x32, 0x99,
+  0xb5, 0xa5, 0xc0, 0x4f, 0x70, 0x0e, 0xcc, 0x56, 0xd8, 0xa6, 0x7d, 0x20,
+  0xc6, 0x46, 0xc0, 0x7e, 0x4f, 0x4e, 0xe6, 0x97, 0x83, 0x9d, 0xfd, 0xe4,
+  0x74, 0x9e, 0x15, 0x66, 0x0d, 0x7a, 0xc9, 0xd7, 0xc5, 0x82, 0x96, 0x84,
+  0x46, 0xfd, 0xf5, 0xf0, 0xdb, 0x20, 0xe1, 0x8a, 0xde, 0x78, 0xfa, 0x84,
+  0xde, 0x78, 0x3f, 0xe4, 0xa7, 0x6e, 0xcb, 0xe9, 0xa5, 0x79, 0x73, 0xfb,
+  0xf0, 0x3e, 0x35, 0x7f, 0xc4, 0x1e, 0xff, 0x8c, 0x1e, 0x37, 0x1b, 0x6f,
+  0xd2, 0x04, 0xb5, 0x8a, 0x13, 0x29, 0xe3, 0xb2, 0x9f, 0x9c, 0x95, 0xd3,
+  0xb4, 0x82, 0xdf, 0x97, 0x37, 0xdf, 0x8a, 0x1e, 0x3f, 0x7d, 0x1a, 0xe9,
+  0x71, 0x6f, 0x49, 0x87, 0x06, 0xff, 0x7c, 0x8f, 0x4e, 0xe1, 0xf8, 0xa3,
+  0xbf, 0x8d, 0xd2, 0xf1, 0x27, 0x6c, 0x45, 0xa0, 0xda, 0x2d, 0xe1, 0xec,
+  0xef, 0x29, 0xcd, 0x99, 0x8d, 0xe0, 0x31, 0x55, 0x6d, 0x2a, 0x10, 0xb2,
+  0x35, 0x48, 0x72, 0xff, 0x6c, 0xef, 0xc9, 0xee, 0xf6, 0xf3, 0xc1, 0xd3,
+  0xc1, 0x9e, 0x45, 0x99, 0x99, 0x8d, 0x75, 0x43, 0x35, 0x14, 0x28, 0x9e,
+  0xbf, 0xac, 0x04, 0x5d, 0x5e, 0x98, 0x76, 0x3c, 0xee, 0x85, 0x9a, 0x3d,
+  0x47, 0x0e, 0x5f, 0x42, 0x4c, 0x0b, 0xbb, 0x7e, 0xba, 0x52, 0xac, 0x84,
+  0x18, 0x11, 0x38, 0x50, 0x27, 0xc4, 0xd9, 0xb1, 0xa8, 0x30, 0x03, 0xa3,
+  0xdc, 0xd8, 0xcc, 0x4d, 0xb9, 0x80, 0x4f, 0x9d, 0x1c, 0x38, 0x4a, 0xb9,
+  0x2d, 0x3a, 0x12, 0x9b, 0xc8, 0x74, 0xc6, 0x96, 0x54, 0x37, 0xb6, 0x78,
+  0x5e, 0x0a, 0x10, 0x79, 0xd5, 0x9e, 0xc9, 0x1b, 0x8b, 0x7a, 0xf1, 0x28,
+  0x77, 0x61, 0xcc, 0x99, 0x62, 0x6c, 0x0e, 0xfd, 0x37, 0xc6, 0xd4, 0xb8,
+  0x21, 0xc7, 0x71, 0xac, 0x88, 0xb0, 0x64, 0x31, 0xaa, 0xe3, 0x5f, 0x40,
+  0x0e, 0x8e, 0x11, 0x5b, 0x7e, 0xc0, 0xb9, 0x13, 0x9a, 0xbd, 0xca, 0x39,
+  0x5f, 0xfd, 0x30, 0xf3, 0xd7, 0x3a, 0xbc, 0xda, 0xe4, 0x9d, 0xc2, 0x2a,
+  0x4d, 0x09, 0x4c, 0xec, 0xe3, 0x66, 0x96, 0x39, 0x9a, 0x46, 0x97, 0x8e,
+  0x16, 0x73, 0xc1, 0xac, 0x72, 0xd1, 0x45, 0x29, 0x29, 0xf8, 0x5f, 0xdd,
+  0x92, 0x7f, 0x72, 0x09, 0xc6, 0xca, 0x72, 0x75, 0x2a, 0xa3, 0x69, 0xab,
+  0xbf, 0x7a, 0x97, 0x3d, 0xf9, 0xed, 0x77, 0xd9, 0xde, 0x63, 0x77, 0x99,
+  0xb7, 0xcd, 0xd8, 0x15, 0xb4, 0x62, 0xa3, 0x99, 0x29, 0xe4, 0x9a, 0xc8,
+  0xf1, 0x5d, 0xe6, 0x6d, 0xb2, 0xd1, 0x7d, 0x74, 0x8b, 0xb5, 0xf7, 0x98,
+  0xdb, 0x64, 0xcb, 0x76, 0x19, 0xb6, 0x99, 0xdd, 0x67, 0x0f, 0x6c, 0x34,
+  0xf6, 0xb4, 0xad, 0xde, 0x65, 0x9d, 0x8a, 0xda, 0x2b, 0xf6, 0x98, 0xbf,
+  0x21, 0x1e, 0xbd, 0xcb, 0x9c, 0xdb, 0x8b, 0xe5, 0x4e, 0xb2, 0x64, 0xa3,
+  0xf9, 0xfb, 0x6c, 0x69, 0xf1, 0xb7, 0xdd, 0x97, 0xb1, 0x5d, 0xf6, 0xe4,
+  0x57, 0xef, 0xb2, 0xa7, 0xbf, 0xfd, 0x2e, 0x7b, 0xf2, 0xff, 0x64, 0xd9,
+  0x7f, 0x2f, 0x59, 0xb6, 0xfb, 0x8b, 0x65, 0xd9, 0x5e, 0x27, 0xb0, 0x69,
+  0xd4, 0x55, 0xf6, 0x37, 0xff, 0xa8, 0x6e, 0xff, 0xfd, 0xed, 0xed, 0x9f,
+  0xe1, 0x3c, 0xd9, 0xa7, 0xfb, 0xfa, 0xe7, 0xa0, 0x92, 0x67, 0x44, 0xad,
+  0x1f, 0x9e, 0x1e, 0x7e, 0x3b, 0x14, 0xbf, 0xb5, 0x28, 0x5e, 0xaa, 0x98,
+  0xb1, 0x83, 0xcf, 0xa8, 0xeb, 0x48, 0x83, 0x0e, 0x74, 0x7d, 0x2e, 0xf7,
+  0xd7, 0xbf, 0xeb, 0xa9, 0xef, 0x18, 0x90, 0x23, 0x39, 0xda, 0xe0, 0x7b,
+  0x93, 0x04, 0x63, 0xce, 0x74, 0x90, 0x56, 0x85, 0x96, 0x27, 0xf4, 0x13,
+  0x70, 0x47, 0xac, 0x07, 0x5d, 0x7c, 0x1a, 0x85, 0xf7, 0xe2, 0x66, 0x73,
+  0x5d, 0x21, 0xb7, 0x03, 0x8f, 0x6e, 0x69, 0xd8, 0x68, 0x55, 0xef, 0xa4,
+  0x5f, 0xdf, 0x80, 0x19, 0x77, 0x5e, 0x65, 0x4b, 0x0a, 0xe8, 0x5e, 0x5c,
+  0x7b, 0xbf, 0x0d, 0x0b, 0x83, 0xba, 0xe9, 0x12, 0x9e, 0x37, 0x6f, 0xbe,
+  0xe9, 0xbd, 0x20, 0x25, 0x3d, 0xbf, 0xeb, 0x90, 0x0f, 0xa5, 0x53, 0xd4,
+  0xc9, 0x44, 0xd9, 0x07, 0x1d, 0xa2, 0x36, 0xc2, 0xe0, 0xa5, 0x0c, 0xa5,
+  0x1b, 0xea, 0xa7, 0xa6, 0xc9, 0x00, 0x36, 0x8a, 0x5f, 0xa4, 0xf4, 0x1b,
+  0xfe, 0xfb, 0x33, 0xfa, 0x2e, 0xb9, 0x7a, 0xf9, 0x5f, 0xd7, 0xf4, 0x4f,
+  0x7c, 0x4f, 0x89, 0xa4, 0x5a, 0xab, 0x3c, 0x8e, 0x4f, 0xb4, 0x9f, 0x34,
+  0x64, 0x49, 0x0e, 0xde, 0x97, 0x2e, 0xad, 0xce, 0x1f, 0xb5, 0xcf, 0x48,
+  0xb7, 0x04, 0x2d, 0x68, 0x9a, 0x41, 0xcb, 0x4f, 0xe3, 0x4a, 0x62, 0xe6,
+  0xf3, 0x4d, 0x2a, 0x7d, 0x80, 0x5f, 0xed, 0xc9, 0x45, 0x4a, 0x65, 0x01,
+  0x40, 0xd8, 0x16, 0x49, 0x8e, 0x91, 0x52, 0x06, 0xd2, 0xef, 0xdd, 0x9d,
+  0x17, 0xa1, 0xb7, 0xf9, 0x83, 0x26, 0xb5, 0x39, 0xd2, 0x45, 0x00, 0x22,
+  0x00, 0x2f, 0x1f, 0xb9, 0x54, 0x8e, 0xd8, 0x67, 0x23, 0x79, 0x6f, 0xe4,
+  0x00, 0x98, 0x64, 0x6c, 0x31, 0x8e, 0xd8, 0xf4, 0x0f, 0x0a, 0xd1, 0x73,
+  0x1a, 0x6f, 0x0d, 0x39, 0x29, 0x74, 0xc1, 0x89, 0x44, 0xf5, 0x03, 0x69,
+  0x41, 0x48, 0x13, 0x0d, 0x36, 0x7d, 0xe9, 0x28, 0xdd, 0xfe, 0xf4, 0x74,
+  0x87, 0x56, 0x55, 0x5b, 0x49, 0xb9, 0x22, 0x3b, 0xef, 0xb9, 0x3f, 0x3d,
+  0x49, 0x07, 0xff, 0x42, 0x42, 0xa6, 0x67, 0x6d, 0x57, 0xc2, 0x1f, 0xe5,
+  0x8c, 0x5f, 0x11, 0x67, 0x4c, 0x7f, 0x94, 0x56, 0x91, 0x14, 0x0a, 0x7b,
+  0x17, 0x08, 0xdd, 0x88, 0xc7, 0xd6, 0xa1, 0x6f, 0x72, 0x89, 0x73, 0xc1,
+  0xc5, 0xdb, 0x1f, 0x86, 0xcd, 0x79, 0xae, 0x7a, 0xbf, 0x3c, 0x68, 0x8f,
+  0x49, 0xb2, 0x3c, 0x8e, 0xac, 0x74, 0xda, 0xa3, 0x28, 0x5e, 0x84, 0x49,
+  0x09, 0xab, 0xe3, 0x7f, 0x82, 0xb8, 0xae, 0x6e, 0x3d, 0x47, 0x02, 0x13,
+  0xd5, 0x5f, 0xc2, 0x5f, 0xef, 0xd0, 0x17, 0x64, 0x7a, 0x53, 0x34, 0x36,
+  0x76, 0x9b, 0xd5, 0xe3, 0x8a, 0x6a, 0xbf, 0x48, 0xf1, 0x04, 0xb4, 0x35,
+  0x27, 0xaa, 0x40, 0x73, 0x8d, 0x5d, 0x65, 0x9a, 0x3e, 0x69, 0x07, 0xad,
+  0x2c, 0x19, 0xa0, 0xc6, 0x18, 0x44, 0x40, 0xc9, 0x0e, 0x74, 0xa4, 0xf5,
+  0x5a, 0x53, 0xe1, 0xd1, 0xa0, 0x57, 0x35, 0x91, 0xd5, 0x67, 0x59, 0x9c,
+  0xa3, 0xc8, 0x59, 0x7d, 0x9d, 0x77, 0x4b, 0x34, 0x6f, 0xf6, 0x5f, 0x97,
+  0xaf, 0xfb, 0x5b, 0x1a, 0xa3, 0x23, 0x0e, 0xcb, 0x1a, 0x16, 0x1c, 0x3a,
+  0x4b, 0xb1, 0xda, 0x6b, 0xf8, 0x9a, 0xe4, 0x42, 0x43, 0xd6, 0x26, 0xe0,
+  0x97, 0xc2, 0x50, 0x15, 0x94, 0xc4, 0xe0, 0x9e, 0x55, 0x14, 0xa6, 0x15,
+  0x89, 0x47, 0x5e, 0x29, 0x33, 0x5b, 0x97, 0x8c, 0xed, 0x42, 0x5e, 0x27,
+  0x45, 0xb0, 0x85, 0x56, 0x99, 0x1d, 0xe2, 0xe5, 0xbc, 0x7d, 0x3b, 0x51,
+  0x8a, 0xb0, 0x4a, 0x87, 0x57, 0x2a, 0x56, 0xbe, 0x78, 0x30, 0x01, 0xc0,
+  0x0a, 0xa0, 0x4b, 0xf1, 0xe5, 0xd0, 0xf1, 0x43, 0x42, 0x08, 0x13, 0x32,
+  0x8f, 0xaf, 0xb3, 0x99, 0x94, 0x0e, 0xf9, 0x85, 0x85, 0xd0, 0x3b, 0x7d,
+  0x62, 0x68, 0xdc, 0x65, 0x33, 0x1f, 0xcc, 0xca, 0x7f, 0x98, 0x69, 0x4e,
+  0xa9, 0x16, 0x59, 0x70, 0x28, 0xcc, 0xed, 0x5f, 0xf0, 0xba, 0x50, 0x74,
+  0xa3, 0xb0, 0xb6, 0xb0, 0xcf, 0x28, 0x27, 0xb4, 0xd9, 0x9c, 0xf6, 0x9e,
+  0x24, 0x87, 0xa6, 0xc7, 0x47, 0x1f, 0x3f, 0xbc, 0x1f, 0x7e, 0x38, 0xeb,
+  0x9e, 0xfd, 0xb3, 0xd3, 0xf3, 0x8b, 0xa3, 0x37, 0x1f, 0xcf, 0xce, 0x4f,
+  0x2f, 0x4e, 0x0f, 0x4f, 0x4f, 0x92, 0xcd, 0xdd, 0xad, 0x95, 0x69, 0x5e,
+  0xd6, 0x13, 0xe3, 0xd1, 0x06, 0x6a, 0xff, 0x59, 0x6a, 0xd9, 0x5e, 0x6c,
+  0xd2, 0x78, 0xc2, 0xd6, 0xbe, 0xd7, 0x6a, 0xc0, 0xad, 0x58, 0x32, 0x3b,
+  0x64, 0x70, 0xc1, 0x41, 0xb0, 0xa7, 0xc9, 0xd5, 0x82, 0x4f, 0x8a, 0x8b,
+  0xf4, 0x33, 0x6d, 0x66, 0xa0, 0x88, 0x65, 0x12, 0x6c, 0xf4, 0x32, 0x84,
+  0x56, 0x7a, 0x25, 0x9f, 0x75, 0xb5, 0x16, 0x5a, 0x03, 0x28, 0xa3, 0x6e,
+  0x57, 0xd4, 0xab, 0xb7, 0x05, 0xd3, 0x8a, 0x80, 0x95, 0xda, 0xbe, 0x01,
+  0xca, 0x7e, 0x89, 0xfd, 0x94, 0x85, 0xd5, 0x6e, 0x07, 0x54, 0x94, 0x27,
+  0x70, 0xe1, 0xcb, 0x2b, 0xa6, 0xbf, 0x85, 0x14, 0x7a, 0x94, 0x8e, 0x20,
+  0xf8, 0x87, 0xca, 0x24, 0x1c, 0x8b, 0x36, 0x0f, 0xd0, 0x6f, 0x3d, 0xb9,
+  0x8a, 0xf4, 0xa8, 0xc0, 0x71, 0xce, 0x2f, 0x33, 0xe5, 0xc6, 0xad, 0xd7,
+  0x29, 0x6a, 0x8e, 0xd4, 0x32, 0xd0, 0x02, 0x46, 0x64, 0xec, 0x91, 0x46,
+  0x96, 0x38, 0xc7, 0x07, 0x27, 0x12, 0x0a, 0x8c, 0xd2, 0xcd, 0x0c, 0xfd,
+  0xc1, 0x3c, 0xb0, 0x91, 0x79, 0x12, 0xc9, 0xc5, 0xdf, 0xa3, 0xb5, 0xef,
+  0xf1, 0x86, 0x96, 0x80, 0xda, 0x8a, 0x04, 0x03, 0x07, 0x86, 0xf4, 0x1d,
+  0x73, 0xe8, 0x10, 0x85, 0x0b, 0xdc, 0x68, 0xbc, 0xae, 0x68, 0x9a, 0xa7,
+  0xb9, 0x5d, 0xba, 0x93, 0xcb, 0xe9, 0x33, 0x9a, 0x82, 0xcf, 0x04, 0x3f,
+  0x8e, 0x8b, 0x98, 0x28, 0x3c, 0x8c, 0x8a, 0xbf, 0x6f, 0x61, 0x56, 0x84,
+  0x3b, 0xe2, 0x0c, 0x7e, 0xf0, 0x22, 0x1e, 0x9e, 0x45, 0xf8, 0x23, 0x5c,
+  0x3e, 0x3f, 0xc4, 0xad, 0x56, 0xa3, 0xdd, 0x19, 0xec, 0x24, 0xc3, 0x77,
+  0x5f, 0x09, 0xa1, 0xe2, 0x57, 0x43, 0x4e, 0xa9, 0x67, 0x4b, 0x4e, 0x5f,
+  0x19, 0xc4, 0x59, 0xab, 0x38, 0x71, 0x78, 0x2a, 0x31, 0xf2, 0xbf, 0xa4,
+  0x2e, 0x43, 0xae, 0x96, 0x9f, 0xbb, 0x61, 0xfb, 0xe3, 0xee, 0x45, 0x73,
+  0xe0, 0x39, 0xf2, 0x43, 0xc5, 0x58, 0xed, 0xb0, 0xb9, 0x46, 0x29, 0x0f,
+  0x7a, 0xb0, 0x9a, 0xbf, 0x6b, 0x2f, 0x38, 0x0f, 0xbf, 0xd9, 0x49, 0xb0,
+  0x81, 0x0c, 0x15, 0xe2, 0xdd, 0xe9, 0x38, 0x73, 0xa3, 0x04, 0x51, 0x07,
+  0x65, 0xfa, 0x30, 0xe0, 0x31, 0xbb, 0x84, 0x12, 0x87, 0x1c, 0xbc, 0x1e,
+  0x7e, 0x89, 0xa0, 0x9d, 0x85, 0x65, 0xf1, 0x62, 0xc4, 0xc8, 0x3e, 0xd2,
+  0xb1, 0xaf, 0x14, 0x2b, 0xf1, 0x5b, 0x77, 0x0e, 0xfe, 0x82, 0xd2, 0x9f,
+  0xcc, 0x7a, 0xcb, 0x97, 0xb3, 0xd0, 0x37, 0x14, 0xc4, 0x46, 0x97, 0x6b,
+  0x54, 0xce, 0x3b, 0x4b, 0x53, 0x4a, 0xea, 0xbb, 0xe7, 0x7c, 0xc0, 0x20,
+  0x79, 0x01, 0x8a, 0xd4, 0x84, 0x8c, 0x02, 0x87, 0x3d, 0xd7, 0x5d, 0x8d,
+  0xd2, 0x4f, 0x8e, 0xc7, 0x4b, 0x34, 0xa3, 0x50, 0x36, 0xf6, 0x93, 0xe4,
+  0x4d, 0x56, 0xdc, 0xab, 0x6c, 0x74, 0xe8, 0x29, 0xf0, 0x70, 0xc0, 0xe1,
+  0x9c, 0x37, 0x2e, 0x55, 0x5c, 0x31, 0xa1, 0xb6, 0x8b, 0x61, 0x97, 0xda,
+  0x7d, 0x8e, 0x49, 0x80, 0xd7, 0x76, 0x1a, 0x04, 0xb5, 0xe3, 0xcf, 0xc5,
+  0x26, 0xd8, 0x1e, 0x34, 0xae, 0x88, 0xef, 0x69, 0x8b, 0x2b, 0xa7, 0x61,
+  0x0b, 0x71, 0x04, 0x4e, 0x7c, 0xaf, 0x17, 0xa3, 0xbf, 0xd1, 0x81, 0x85,
+  0x45, 0x30, 0x4d, 0x61, 0x0c, 0xf3, 0x54, 0x08, 0xde, 0xce, 0xc8, 0x37,
+  0xf3, 0x0c, 0x07, 0xc3, 0x42, 0xaf, 0x37, 0x95, 0x87, 0x41, 0xc4, 0x53,
+  0x99, 0xbb, 0xdb, 0x9b, 0x00, 0x9d, 0x8a, 0x66, 0x59, 0x65, 0x4b, 0x2e,
+  0x5f, 0xdd, 0xe2, 0xfd, 0x4b, 0x92, 0x4e, 0x0c, 0xe2, 0xea, 0x5c, 0x63,
+  0x3c, 0x9b, 0x8c, 0x1c, 0xb4, 0x38, 0x56, 0x7a, 0x7c, 0x69, 0x5b, 0x2a,
+  0xf3, 0xea, 0xde, 0x5f, 0xe8, 0x8f, 0x70, 0x14, 0xad, 0xb8, 0x0f, 0x4d,
+  0xb4, 0x1e, 0x76, 0x7a, 0x1c, 0x02, 0x04, 0xaf, 0x2f, 0xfb, 0xc0, 0x6b,
+  0x27, 0x50, 0x57, 0xb7, 0x0d, 0xe1, 0xf3, 0x98, 0x0f, 0x7c, 0x28, 0x94,
+  0x25, 0x4d, 0xf7, 0xf7, 0xdc, 0x12, 0xb7, 0xdf, 0xa6, 0x55, 0x01, 0x9c,
+  0xba, 0x6f, 0x54, 0x10, 0xad, 0xc6, 0x5c, 0xca, 0x3a, 0xa4, 0x97, 0x04,
+  0xf1, 0xad, 0x32, 0xc7, 0x32, 0x4b, 0xeb, 0xc8, 0xec, 0x39, 0x42, 0x5c,
+  0xad, 0x80, 0xd3, 0x79, 0xd9, 0x30, 0x85, 0x36, 0x61, 0x82, 0x49, 0x67,
+  0xa8, 0xc8, 0x7b, 0xe3, 0x4d, 0xb2, 0xaa, 0x9b, 0xd4, 0x9a, 0xdd, 0x4d,
+  0xd4, 0xd2, 0x62, 0x4e, 0xe1, 0x47, 0x01, 0x6b, 0x71, 0x28, 0xd7, 0x13,
+  0x33, 0xf2, 0x39, 0x46, 0x75, 0xc1, 0xe5, 0xe4, 0x8a, 0x1e, 0xa5, 0x37,
+  0x25, 0xd5, 0x50, 0x70, 0xc0, 0x6e, 0x28, 0x42, 0x6e, 0x97, 0x5c, 0xc4,
+  0xcb, 0x40, 0x38, 0x30, 0x8d, 0xd8, 0x2a, 0x0e, 0x6c, 0x9c, 0xd6, 0xad,
+  0x2c, 0xa2, 0xbc, 0x05, 0x3b, 0x06, 0xea, 0xc2, 0xd8, 0x12, 0x44, 0xe1,
+  0x66, 0xf6, 0x64, 0xc1, 0xb1, 0x30, 0x31, 0xe4, 0x54, 0x26, 0x52, 0x0f,
+  0x01, 0x84, 0x2b, 0xc8, 0x7e, 0x18, 0x5b, 0x62, 0xa3, 0x2e, 0x4f, 0x76,
+  0xbb, 0xc0, 0xb1, 0xbd, 0x55, 0x2d, 0x38, 0xd4, 0x29, 0x8c, 0x83, 0x07,
+  0xc4, 0xf8, 0xdd, 0xbd, 0xa2, 0xd1, 0x56, 0x8a, 0xf0, 0x39, 0x25, 0x0a,
+  0x13, 0x87, 0x6c, 0xde, 0x60, 0xc1, 0x3a, 0x68, 0x58, 0x45, 0x89, 0x8a,
+  0xef, 0x63, 0x36, 0x5b, 0x74, 0x8f, 0x7c, 0x61, 0xa3, 0x7f, 0x36, 0x1d,
+  0x55, 0x4b, 0x2e, 0x41, 0x95, 0x10, 0xa7, 0x07, 0xd7, 0x0e, 0xf0, 0xca,
+  0x29, 0x10, 0xe8, 0x98, 0x02, 0x82, 0x71, 0x3f, 0xe2, 0xb6, 0x25, 0x8a,
+  0x31, 0x1b, 0xa6, 0x98, 0xf4, 0x8d, 0x10, 0x98, 0xaf, 0xf0, 0x69, 0x39,
+  0xb7, 0x4f, 0x0b, 0x47, 0xeb, 0x33, 0x53, 0xf0, 0x4f, 0x18, 0xad, 0x27,
+  0x73, 0x17, 0xe2, 0xd0, 0x8d, 0x3e, 0xf0, 0x24, 0x36, 0x93, 0x31, 0x3c,
+  0x20, 0xcf, 0xa3, 0xdb, 0x77, 0x34, 0xa8, 0xa5, 0x05, 0x05, 0x78, 0x06,
+  0x31, 0x81, 0x3a, 0x61, 0xcb, 0xb0, 0x53, 0x3c, 0x77, 0x32, 0x6d, 0x1f,
+  0x38, 0x4f, 0x0b, 0x2d, 0x22, 0x01, 0xb7, 0x10, 0x04, 0xb6, 0xf7, 0x25,
+  0x36, 0x8a, 0x82, 0x79, 0x04, 0x75, 0x93, 0x70, 0xd3, 0xcb, 0x93, 0x70,
+  0xd4, 0xfb, 0xd2, 0x2e, 0xbe, 0xda, 0x11, 0xbf, 0x0a, 0xe4, 0x24, 0x3e,
+  0x44, 0x1d, 0xcb, 0x57, 0x92, 0x22, 0x2c, 0x59, 0x8c, 0x18, 0x1f, 0xc8,
+  0xa4, 0x03, 0x6e, 0xd5, 0x9f, 0x73, 0x1d, 0xef, 0x38, 0xa2, 0x6e, 0x28,
+  0xe7, 0x4d, 0xab, 0x7d, 0x43, 0x4e, 0x2b, 0x9c, 0xd1, 0x73, 0xb4, 0x71,
+  0x85, 0xa3, 0xbb, 0xe6, 0x11, 0x30, 0xd3, 0x71, 0x8a, 0xf0, 0xbf, 0x22,
+  0x56, 0xa4, 0x5d, 0xf7, 0x4f, 0xff, 0xb7, 0x77, 0xbd, 0x98, 0x90, 0xa6,
+  0xb5, 0x5a, 0xee, 0xb1, 0x68, 0x7f, 0xe6, 0x95, 0x39, 0xd1, 0xab, 0x06,
+  0x85, 0x87, 0x7e, 0xcd, 0xa0, 0x82, 0x51, 0x61, 0x18, 0x98, 0xef, 0x60,
+  0x4d, 0xf8, 0x33, 0x2b, 0xa2, 0x08, 0x4b, 0x86, 0x60, 0x5a, 0x5c, 0x51,
+  0x88, 0xd4, 0x1b, 0x86, 0x7d, 0xf0, 0x97, 0x8e, 0xe4, 0xe1, 0x69, 0xc4,
+  0xd6, 0xa0, 0xff, 0xfe, 0xb8, 0x0f, 0x97, 0xda, 0xe4, 0xe7, 0xa5, 0xfd,
+  0x38, 0xea, 0x49, 0x5f, 0x7e, 0x87, 0x6e, 0xe4, 0xf3, 0x6b, 0x72, 0x98,
+  0xbc, 0x8a, 0x25, 0xf0, 0x78, 0x13, 0x21, 0x8f, 0xfd, 0xf6, 0xdf, 0xaf,
+  0xa6, 0x8e, 0x33, 0x67, 0xc5, 0xf7, 0xe5, 0xb1, 0xdf, 0xfc, 0xfb, 0x7c,
+  0x76, 0x1f, 0x74, 0xa0, 0x40, 0x50, 0xbd, 0x11, 0x90, 0x74, 0x44, 0x26,
+  0xfe, 0x6a, 0xa1, 0x28, 0xc0, 0xeb, 0x50, 0x2a, 0xca, 0xc7, 0xa2, 0x05,
+  0x1e, 0x44, 0x2c, 0x42, 0x2a, 0xfe, 0x26, 0x12, 0x0c, 0xa2, 0x39, 0x9c,
+  0x1c, 0xa9, 0xb8, 0xf2, 0x8a, 0xff, 0xdc, 0xfe, 0x32, 0xb6, 0x46, 0x9a,
+  0xd0, 0x41, 0xb7, 0xa0, 0x96, 0x68, 0x41, 0xcd, 0x0f, 0x26, 0x21, 0x10,
+  0x8d, 0xd7, 0xd6, 0xab, 0xa0, 0xc9, 0xb2, 0xa5, 0x7d, 0xe8, 0xd5, 0x58,
+  0x61, 0x18, 0x99, 0x21, 0xc2, 0xa2, 0x92, 0x11, 0xa6, 0x2e, 0x7f, 0x07,
+  0x42, 0x22, 0xc5, 0x23, 0xf3, 0xbe, 0x58, 0x2f, 0xab, 0xf2, 0xd5, 0xad,
+  0xaf, 0xe9, 0x38, 0x51, 0xbf, 0xe9, 0x49, 0x5d, 0x16, 0xd3, 0x1a, 0xed,
+  0x2a, 0xc1, 0x62, 0x4a, 0x20, 0x41, 0x96, 0x33, 0x64, 0x8e, 0x91, 0xda,
+  0xe9, 0xa0, 0x7f, 0x00, 0xf0, 0x94, 0x46, 0x78, 0x78, 0xfa, 0xfe, 0xfd,
+  0xd1, 0x61, 0x37, 0x58, 0x68, 0x33, 0x1b, 0x9c, 0xaa, 0x1f, 0x14, 0x06,
+  0xc4, 0xe7, 0x41, 0xf8, 0x2e, 0x91, 0x17, 0xfe, 0x3e, 0x2a, 0x06, 0xa5,
+  0xc2, 0xfa, 0xca, 0xbf, 0x94, 0x34, 0x1f, 0x66, 0x04, 0x95, 0x1d, 0x10,
+  0xc9, 0x19, 0x0b, 0xf6, 0x83, 0x9f, 0x86, 0x0e, 0xb7, 0x14, 0x31, 0x50,
+  0x68, 0xa6, 0x21, 0xcc, 0x4c, 0xe9, 0x05, 0x60, 0xdb, 0x93, 0xc9, 0xb6,
+  0xa0, 0xa2, 0xf5, 0xdb, 0xcb, 0xf6, 0x32, 0x93, 0x88, 0x51, 0xf2, 0x49,
+  0xbf, 0xbc, 0xe4, 0x1a, 0xa5, 0xb3, 0xb4, 0xfa, 0x44, 0x81, 0x46, 0x2f,
+  0x0d, 0x05, 0x69, 0x88, 0x60, 0x35, 0x9e, 0x4c, 0x62, 0xf9, 0xed, 0xf0,
+  0x5e, 0x2b, 0xec, 0x1e, 0xfe, 0x31, 0xee, 0x8c, 0xd4, 0xf5, 0xdb, 0xd7,
+  0xfc, 0x40, 0x7a, 0xbd, 0xc8, 0x6e, 0xe9, 0x33, 0x4c, 0xeb, 0x41, 0x49,
+  0xea, 0x61, 0x91, 0x00, 0x26, 0xa6, 0x66, 0x0f, 0xfd, 0xbd, 0xe4, 0xc7,
+  0xd3, 0x52, 0xcd, 0x98, 0x86, 0x1f, 0x4c, 0xbf, 0x54, 0xd9, 0x8a, 0x73,
+  0x4b, 0x82, 0xb9, 0xfa, 0x46, 0x78, 0xfa, 0x3a, 0xc1, 0xa9, 0x76, 0xc6,
+  0x08, 0x4f, 0x25, 0x75, 0x0a, 0x2e, 0x64, 0x4b, 0xe0, 0x17, 0x5e, 0x3f,
+  0x76, 0x3b, 0x60, 0xae, 0xb1, 0x10, 0x64, 0xaf, 0xd4, 0x8e, 0xd5, 0x47,
+  0x4a, 0x00, 0xfa, 0xbb, 0x3e, 0x38, 0xcf, 0xc4, 0xbf, 0xcd, 0xb8, 0xb4,
+  0x02, 0x37, 0xda, 0xb3, 0x2e, 0x8b, 0x2c, 0x08, 0x96, 0xe0, 0x70, 0x24,
+  0x66, 0xb5, 0x2b, 0x20, 0xe8, 0xe9, 0x61, 0x1c, 0xd7, 0x40, 0xd1, 0x25,
+  0x91, 0x8a, 0x04, 0xb3, 0x9e, 0x96, 0xd2, 0xa6, 0xbd, 0x6a, 0xe6, 0x97,
+  0x56, 0x42, 0x66, 0x5f, 0x49, 0x52, 0xd8, 0xa3, 0x2f, 0x47, 0xd8, 0xfc,
+  0x39, 0x5f, 0x34, 0x41, 0x58, 0x8e, 0x38, 0xa3, 0x98, 0x27, 0xe0, 0xcb,
+  0x7e, 0x58, 0x67, 0x29, 0x9d, 0xf8, 0xab, 0x0a, 0x11, 0x0e, 0xd3, 0xbf,
+  0x6e, 0x8c, 0x04, 0x78, 0x80, 0xd3, 0x0f, 0x9c, 0xae, 0xb6, 0xd2, 0x44,
+  0xdb, 0xae, 0xc1, 0x8c, 0xb9, 0xcd, 0xba, 0x0d, 0xdf, 0x42, 0x77, 0x37,
+  0xd8, 0x57, 0x54, 0x48, 0xac, 0x62, 0x05, 0x01, 0x6f, 0x61, 0x47, 0xfe,
+  0x19, 0x3b, 0x87, 0xbc, 0x4f, 0xd9, 0xb2, 0x6b, 0xe9, 0x13, 0x97, 0x7e,
+  0xe2, 0x87, 0x7e, 0xfb, 0xbb, 0x69, 0x75, 0xb9, 0x74, 0x77, 0x39, 0xda,
+  0xe7, 0x7e, 0x8f, 0x1e, 0x44, 0xeb, 0x8f, 0xb7, 0xbe, 0xfd, 0xf8, 0xcf,
+  0x06, 0x04, 0x7a, 0x8f, 0xbb, 0x77, 0x1d, 0x39, 0xa4, 0x63, 0x87, 0x0c,
+  0x12, 0x1e, 0x6f, 0xc3, 0x74, 0xb0, 0xd6, 0x9d, 0xbc, 0xf2, 0x16, 0x76,
+  0x7c, 0x00, 0xfe, 0x45, 0x1c, 0x09, 0x7f, 0xc7, 0x88, 0x2a, 0x25, 0x9c,
+  0xf3, 0xb8, 0x4b, 0xf9, 0xc1, 0x4b, 0xb8, 0x95, 0x4e, 0xda, 0x45, 0x5a,
+  0xd9, 0x74, 0xb2, 0x47, 0x4e, 0x5c, 0x24, 0x81, 0x32, 0xf9, 0x27, 0x15,
+  0x16, 0xe4, 0xb0, 0xb5, 0xd4, 0x15, 0x7c, 0xa5, 0x35, 0x09, 0x8f, 0xb9,
+  0x97, 0x82, 0x29, 0x71, 0x6b, 0x10, 0xd1, 0x56, 0xc2, 0x59, 0x58, 0x05,
+  0xa4, 0x77, 0xdb, 0x13, 0x4f, 0xfd, 0xe6, 0xc7, 0xe2, 0xff, 0x30, 0x0a,
+  0xdc, 0x07, 0x81, 0x7b, 0x7e, 0x89, 0xff, 0x87, 0x02, 0xff, 0x7f, 0x28,
+  0xf0, 0xdf, 0x01, 0x05, 0xfe, 0x5b, 0xe2, 0x91, 0x71, 0x7a, 0x68, 0x45,
+  0xf2, 0xb1, 0xe4, 0xd7, 0xbc, 0x5a, 0xca, 0x93, 0xaa, 0x79, 0x67, 0x2d,
+  0x38, 0x88, 0x84, 0x6c, 0xdd, 0xd2, 0xe6, 0x63, 0x5b, 0x1d, 0x14, 0x31,
+  0x32, 0x7c, 0x22, 0x60, 0x3d, 0x92, 0xdd, 0x12, 0x41, 0x94, 0xf9, 0x51,
+  0xd5, 0x27, 0xb1, 0xb3, 0x5e, 0xd7, 0xd3, 0x3e, 0xfa, 0x40, 0xc9, 0xaf,
+  0x81, 0xa5, 0xe8, 0x24, 0x4d, 0xe7, 0xb9, 0xdf, 0x5e, 0xe8, 0x34, 0xd3,
+  0x9a, 0x24, 0xe1, 0x63, 0x14, 0x02, 0xff, 0xd1, 0xdf, 0xa3, 0x1f, 0x16,
+  0x02, 0xf4, 0x8a, 0xf1, 0x3d, 0x2b, 0x7b, 0x62, 0x1f, 0xfe, 0x3d, 0x7a,
+  0x82, 0x7c, 0xda, 0xe8, 0x1e, 0x6a, 0xf5, 0x01, 0x8f, 0xfd, 0x1e, 0xdf,
+  0xbf, 0xd9, 0x5d, 0xf6, 0x59, 0xd4, 0x00, 0xc4, 0x13, 0xbf, 0xe1, 0x87,
+  0x3f, 0x58, 0x93, 0x9e, 0xd3, 0x8f, 0x5f, 0xd1, 0x7f, 0xf7, 0x75, 0x86,
+  0x57, 0x16, 0x17, 0x5a, 0xc2, 0xd9, 0xec, 0x95, 0x36, 0x16, 0x57, 0xc1,
+  0xca, 0x04, 0xff, 0x65, 0x19, 0xfc, 0xcc, 0xdf, 0x22, 0x6c, 0xae, 0x20,
+  0xd9, 0xee, 0x5b, 0x32, 0x3c, 0xb6, 0x40, 0x85, 0x80, 0x82, 0xfd, 0x8f,
+  0xc6, 0xaa, 0x13, 0x4a, 0x94, 0x2e, 0x0b, 0x8e, 0x53, 0xf5, 0xe8, 0x34,
+  0xc7, 0x15, 0x18, 0xc6, 0x30, 0xde, 0x6b, 0x41, 0x48, 0xbf, 0xec, 0x43,
+  0x80, 0xac, 0x98, 0x32, 0x61, 0xda, 0x6a, 0xce, 0x6a, 0xf0, 0x0c, 0xf8,
+  0xe4, 0x21, 0x23, 0x76, 0x3a, 0x04, 0x25, 0x41, 0x38, 0xe6, 0xed, 0x91,
+  0x19, 0x4e, 0x5d, 0xc2, 0xb9, 0x15, 0x59, 0xfb, 0xc9, 0x7a, 0xff, 0x43,
+  0xb2, 0xbf, 0xfe, 0x3b, 0x4a, 0x52, 0xcf, 0xb5, 0xf3, 0x0b, 0x80, 0xaa,
+  0xed, 0x92, 0x20, 0xcb, 0x61, 0x9b, 0x6d, 0xec, 0x5e, 0x90, 0x28, 0x1f,
+  0x07, 0x6c, 0x5e, 0x12, 0x7b, 0xee, 0xfb, 0xee, 0x02, 0x44, 0x90, 0x8f,
+  0x84, 0xef, 0x60, 0x38, 0x85, 0x1d, 0x5d, 0x83, 0xac, 0x51, 0xa4, 0xe0,
+  0xfb, 0xd1, 0x96, 0x0f, 0x41, 0x31, 0x52, 0x87, 0xe7, 0x5c, 0x8e, 0xe0,
+  0xf4, 0x00, 0x9c, 0xc0, 0x31, 0xb3, 0xe3, 0x09, 0xe5, 0xdb, 0x03, 0x77,
+  0x0e, 0x68, 0x46, 0x19, 0xbc, 0xa9, 0xd8, 0x4d, 0x1f, 0xba, 0x69, 0x94,
+  0x38, 0x2f, 0x00, 0xe6, 0x68, 0xc1, 0xc8, 0x6b, 0x11, 0x0f, 0xbd, 0x60,
+  0x1b, 0x82, 0x27, 0xfa, 0xb3, 0xa0, 0xe6, 0x13, 0x1f, 0x7d, 0xf5, 0x30,
+  0x69, 0x63, 0xc9, 0x4d, 0x9e, 0x72, 0x58, 0x93, 0x27, 0x52, 0xbe, 0xc5,
+  0x33, 0xea, 0x3e, 0xb5, 0xcc, 0xb9, 0xcd, 0x5c, 0x0a, 0x91, 0xfc, 0xab,
+  0xf7, 0xc3, 0x61, 0x88, 0xe1, 0x2c, 0xcc, 0x7d, 0x5f, 0x5e, 0x15, 0xf9,
+  0x3f, 0x84, 0xf8, 0xa1, 0x8b, 0xbd, 0x6a, 0x61, 0x68, 0x05, 0x83, 0xc5,
+  0xc5, 0xed, 0x10, 0x7d, 0xec, 0xae, 0x06, 0x30, 0x24, 0x2a, 0xa5, 0x00,
+  0x84, 0x20, 0x76, 0x12, 0x9d, 0x4a, 0xae, 0xb2, 0xcd, 0xb5, 0x16, 0x5a,
+  0x91, 0x44, 0x65, 0x42, 0xe8, 0xaa, 0xb8, 0xb2, 0x2b, 0x04, 0xaa, 0xf8,
+  0xdf, 0x00, 0xf3, 0xda, 0xf6, 0x47, 0x78, 0xcc, 0x45, 0xd9, 0x5d, 0x5e,
+  0x43, 0x4d, 0x8c, 0x31, 0x0e, 0x89, 0xbf, 0x27, 0x52, 0xae, 0xc9, 0xf7,
+  0xef, 0x81, 0x66, 0xfd, 0x11, 0xf4, 0x45, 0xd4, 0x4e, 0x13, 0xa5, 0xe8,
+  0x8f, 0x90, 0x17, 0xd9, 0xd6, 0x1f, 0xc1, 0x5a, 0x44, 0xbe, 0x31, 0xe5,
+  0x9d, 0x95, 0x2e, 0x83, 0x92, 0x9d, 0xeb, 0xfd, 0x65, 0x4c, 0x35, 0x64,
+  0xa1, 0xea, 0xdc, 0x32, 0x0e, 0x6c, 0xb4, 0x64, 0xd8, 0x9c, 0x38, 0xfd,
+  0x49, 0xa1, 0x1d, 0x69, 0x26, 0x4c, 0xc3, 0x73, 0x4b, 0x6f, 0x0f, 0x88,
+  0x58, 0x87, 0xb2, 0x00, 0x2c, 0xe7, 0x09, 0x69, 0xc7, 0x48, 0x89, 0xd1,
+  0x3d, 0xd1, 0xdd, 0x5a, 0x8e, 0x03, 0xd8, 0x76, 0x91, 0xe3, 0xae, 0xe2,
+  0x36, 0xb3, 0x05, 0x6e, 0x1c, 0xd5, 0x37, 0xb2, 0x7a, 0xa5, 0x2e, 0x7a,
+  0x48, 0x37, 0xa8, 0xd3, 0xd4, 0x2c, 0x8c, 0x72, 0x4c, 0xcc, 0x80, 0x8c,
+  0x7b, 0xb7, 0x6b, 0xd2, 0x23, 0xe9, 0xc3, 0x22, 0x57, 0x8c, 0xdf, 0xfe,
+  0x5c, 0xa5, 0x6c, 0x77, 0xb0, 0xf7, 0xd2, 0xc8, 0x92, 0xfa, 0xd0, 0xff,
+  0x77, 0x40, 0xa5, 0xbd, 0x9b, 0x82, 0xae, 0x9d, 0xf0, 0x9e, 0x80, 0xef,
+  0x9d, 0xcc, 0x1c, 0x06, 0x17, 0xdc, 0xa6, 0x96, 0xa2, 0x3e, 0xa6, 0xa4,
+  0x47, 0x4f, 0x52, 0xaf, 0x85, 0x0d, 0xf3, 0x24, 0x88, 0xca, 0x47, 0x46,
+  0x68, 0x52, 0x71, 0x9c, 0x08, 0x81, 0x03, 0x3a, 0x40, 0x89, 0x9a, 0x93,
+  0x4c, 0x98, 0x57, 0xfe, 0xe2, 0x18, 0xe2, 0x7f, 0x6f, 0x33, 0x67, 0xd7,
+  0xc8, 0xe6, 0x57, 0xde, 0x7d, 0xfc, 0xc5, 0x63, 0x32, 0x47, 0x70, 0xd4,
+  0x12, 0x7a, 0xb5, 0x4d, 0x70, 0x16, 0x11, 0x7a, 0xf1, 0x03, 0x83, 0xb2,
+  0x74, 0x4c, 0x62, 0x25, 0xe2, 0x8d, 0xe0, 0x26, 0xf4, 0xf2, 0x12, 0x01,
+  0x27, 0x14, 0x7a, 0x4a, 0x9f, 0x6d, 0xe4, 0xf9, 0x28, 0x6b, 0x6e, 0x09,
+  0x94, 0x8d, 0xd9, 0xd0, 0x69, 0xf4, 0x64, 0x80, 0x95, 0x87, 0x4b, 0x83,
+  0xc8, 0x3d, 0xe1, 0x2e, 0x24, 0x89, 0xc2, 0xfc, 0x8c, 0xb6, 0x34, 0xb5,
+  0x46, 0x4a, 0x82, 0xe3, 0x17, 0x2b, 0xf9, 0xe0, 0xe2, 0x3e, 0xfc, 0x7d,
+  0x9a, 0x17, 0x0f, 0xe2, 0xd6, 0x02, 0xb4, 0x2b, 0x16, 0x40, 0x1e, 0xf4,
+  0xdd, 0x66, 0xf6, 0x18, 0xcb, 0xb1, 0x8d, 0x39, 0x14, 0xda, 0x62, 0x4e,
+  0x17, 0xdf, 0xd3, 0xb3, 0xda, 0x2e, 0x77, 0x09, 0x02, 0xe0, 0x7e, 0x8c,
+  0xe4, 0x7c, 0xf1, 0x32, 0x7a, 0x17, 0x29, 0x00, 0x3d, 0x3c, 0x15, 0x92,
+  0xab, 0xc3, 0x02, 0xc4, 0xce, 0xc3, 0xd2, 0x63, 0xe1, 0x0d, 0x73, 0x96,
+  0x11, 0xbc, 0x48, 0x4e, 0x6b, 0xae, 0x0c, 0x06, 0xf4, 0xad, 0x3e, 0x22,
+  0x51, 0x4e, 0x54, 0x32, 0x59, 0x12, 0x7d, 0x24, 0x70, 0xff, 0xd3, 0x47,
+  0xd3, 0xb9, 0xf9, 0x12, 0xb8, 0xd7, 0xe9, 0x7a, 0x9b, 0xa5, 0x5c, 0x1a,
+  0x49, 0xa4, 0x9e, 0x37, 0x0d, 0x9d, 0xb0, 0x56, 0x04, 0xaa, 0x18, 0x96,
+  0x13, 0x12, 0x23, 0x82, 0x05, 0x93, 0xc0, 0x5c, 0xc5, 0x1f, 0xa1, 0x21,
+  0x2e, 0x71, 0x94, 0xd2, 0xae, 0x8c, 0x13, 0xf9, 0x08, 0xc7, 0x69, 0xc1,
+  0xdb, 0xa6, 0x2b, 0xb0, 0xc3, 0x72, 0xbc, 0x17, 0x25, 0xab, 0x53, 0x5c,
+  0x7d, 0xb7, 0xdb, 0x77, 0x41, 0xe0, 0x68, 0x0d, 0x26, 0x86, 0xb0, 0xd0,
+  0x17, 0xb8, 0xa4, 0x62, 0x68, 0x34, 0x08, 0x7b, 0x88, 0xbe, 0x20, 0x24,
+  0x9a, 0xd2, 0xbe, 0xad, 0x54, 0xb7, 0x2c, 0xa6, 0x10, 0x8b, 0xbf, 0xb6,
+  0x84, 0x83, 0x78, 0x0d, 0x23, 0x5e, 0xf5, 0xcd, 0x21, 0xd5, 0x25, 0x18,
+  0x1e, 0x9e, 0x6d, 0x25, 0x67, 0xce, 0xdb, 0x04, 0x1f, 0x1e, 0xa0, 0xf9,
+  0x74, 0x67, 0xfb, 0xf2, 0x5e, 0x2a, 0x03, 0x31, 0x4b, 0x5a, 0xdc, 0x79,
+  0x24, 0xee, 0x3c, 0xec, 0x5d, 0xcb, 0x05, 0x88, 0xa0, 0xcd, 0x6f, 0x2e,
+  0xff, 0x3a, 0x63, 0x39, 0x00, 0x23, 0x08, 0x33, 0x04, 0x88, 0x9b, 0xca,
+  0x17, 0x06, 0xc6, 0xa6, 0x2b, 0x29, 0xe1, 0x84, 0x6b, 0x71, 0x88, 0x3b,
+  0x8d, 0x77, 0x10, 0x86, 0xde, 0x69, 0x0e, 0x13, 0xa1, 0x98, 0x51, 0x8f,
+  0x0a, 0x45, 0x8a, 0x62, 0xd5, 0x7c, 0xfb, 0x75, 0xd8, 0xaa, 0xb1, 0xbd,
+  0xaf, 0xb2, 0x22, 0xe4, 0xbf, 0xc7, 0x47, 0x49, 0x5f, 0x90, 0x0d, 0x3c,
+  0x19, 0x74, 0x99, 0x97, 0x3d, 0x77, 0x9f, 0x74, 0x2e, 0x07, 0x82, 0x99,
+  0xf7, 0xfb, 0x12, 0x8e, 0x36, 0x56, 0x25, 0xa9, 0x26, 0x16, 0x09, 0xde,
+  0x2b, 0x72, 0xb0, 0x36, 0xb8, 0x48, 0xe7, 0xf7, 0x34, 0x19, 0xe6, 0xb1,
+  0xba, 0xbe, 0xde, 0x33, 0xe2, 0x69, 0x6f, 0xf0, 0x82, 0x0d, 0xdc, 0x6b,
+  0xa3, 0x13, 0x44, 0x08, 0x1d, 0x39, 0xf4, 0x2b, 0xd5, 0xf3, 0x3a, 0xed,
+  0x89, 0xb2, 0x3f, 0x70, 0xf6, 0x45, 0xff, 0x7f, 0xd0, 0x4e, 0xfb, 0xfb,
+  0x22, 0xf4, 0xbc, 0x6f, 0xd2, 0x86, 0x4a, 0x68, 0x5b, 0x6d, 0x71, 0xad,
+  0x27, 0x8e, 0x11, 0x8e, 0xf2, 0x06, 0xe4, 0xca, 0xca, 0x20, 0xd4, 0x3e,
+  0x98, 0xa8, 0x87, 0x52, 0xe1, 0xad, 0x68, 0xc6, 0xe8, 0x20, 0xf9, 0x1f,
+  0xf4, 0x29, 0x7d, 0x9b, 0x01, 0xfa, 0x08, 0x63, 0x7e, 0x75, 0xf4, 0xf6,
+  0xf4, 0xfc, 0xa8, 0x9d, 0xb4, 0xd3, 0x70, 0xf1, 0x5d, 0x84, 0xe9, 0xba,
+  0xbd, 0x03, 0x2d, 0x92, 0x26, 0x97, 0x4a, 0x8c, 0x31, 0x27, 0x9c, 0x65,
+  0x72, 0xf6, 0xfd, 0x1b, 0xdb, 0xbb, 0x1c, 0xe2, 0xf9, 0xad, 0x57, 0x36,
+  0xb6, 0xc7, 0x33, 0xdd, 0xd5, 0x20, 0x48, 0xd7, 0xa0, 0xda, 0x24, 0x52,
+  0xeb, 0xd4, 0xf6, 0x0f, 0xc1, 0x51, 0x0e, 0x6a, 0xf3, 0xb7, 0x52, 0x66,
+  0xe1, 0xad, 0x6b, 0x4a, 0x49, 0xb5, 0x8d, 0x06, 0xea, 0x35, 0x6b, 0x18,
+  0xe0, 0x9e, 0x11, 0x58, 0x60, 0xca, 0xf4, 0x43, 0xc4, 0x49, 0x34, 0x48,
+  0xc2, 0x0f, 0x69, 0x38, 0x17, 0x5f, 0x89, 0xc5, 0xe1, 0xa9, 0x18, 0x2f,
+  0xbb, 0x30, 0xf9, 0x5a, 0x25, 0x16, 0x79, 0xda, 0xb4, 0xb6, 0x0c, 0x4a,
+  0x8f, 0xa9, 0xa2, 0xc4, 0x51, 0xeb, 0x4f, 0x64, 0x24, 0xb6, 0x65, 0xbe,
+  0xb9, 0x59, 0x13, 0x4c, 0xd9, 0xeb, 0xaa, 0xfd, 0x4d, 0xa2, 0x76, 0xfa,
+  0xc6, 0x5f, 0x36, 0x1c, 0xa2, 0x9b, 0xcb, 0x39, 0xc5, 0xcb, 0x9f, 0xb9,
+  0x72, 0x38, 0x5b, 0x0f, 0x61, 0x2f, 0x74, 0xc4, 0xcb, 0x6c, 0x34, 0x71,
+  0xba, 0x4b, 0x38, 0x1e, 0x55, 0xe9, 0x00, 0x3a, 0x80, 0x8b, 0x16, 0x15,
+  0x9e, 0x2c, 0xcb, 0x9e, 0x36, 0xd5, 0x8b, 0x25, 0xb0, 0x92, 0xd7, 0xa7,
+  0x6a, 0x97, 0x7d, 0xb5, 0xc9, 0x5b, 0xf0, 0x77, 0x2b, 0x01, 0x32, 0xea,
+  0xa5, 0xa1, 0xf8, 0x48, 0x7d, 0x5f, 0x34, 0x74, 0x5a, 0x21, 0x58, 0x82,
+  0x49, 0xab, 0x70, 0x21, 0xd1, 0x5e, 0x72, 0xbb, 0xb7, 0x46, 0xa2, 0xf8,
+  0xcb, 0x67, 0x2f, 0x49, 0x89, 0x00, 0xc0, 0x40, 0x2a, 0xc4, 0x08, 0x49,
+  0x68, 0x8f, 0x8f, 0x6a, 0x48, 0xa0, 0x29, 0xaa, 0x87, 0x6d, 0x49, 0xea,
+  0x7a, 0x8e, 0xb2, 0x29, 0xd7, 0xa4, 0x19, 0x7a, 0x8d, 0xac, 0xb6, 0x2d,
+  0x97, 0x03, 0x78, 0x07, 0xac, 0x9f, 0x98, 0x65, 0x48, 0x3f, 0xb9, 0xec,
+  0xe1, 0x65, 0x47, 0xb3, 0xa7, 0x5b, 0xc1, 0xeb, 0x97, 0xa5, 0x55, 0x37,
+  0x62, 0x3b, 0xab, 0xf2, 0xfa, 0x93, 0x39, 0x78, 0x7f, 0x16, 0x3a, 0xa1,
+  0x99, 0x4d, 0x32, 0x8c, 0xc4, 0x87, 0xf2, 0x62, 0xc1, 0xe4, 0xa1, 0xb6,
+  0x62, 0xb4, 0xb6, 0x78, 0x89, 0x12, 0x46, 0xc4, 0x47, 0x19, 0xcb, 0x7a,
+  0xa9, 0x9b, 0x72, 0x1e, 0x14, 0x98, 0x90, 0x94, 0x65, 0xd9, 0x09, 0xe1,
+  0xad, 0x49, 0x53, 0x05, 0xea, 0x55, 0xf1, 0x13, 0xaa, 0xf2, 0x34, 0x48,
+  0x3e, 0x14, 0xd0, 0x6e, 0x64, 0x6b, 0xca, 0x55, 0x92, 0x17, 0x66, 0x2c,
+  0x66, 0xac, 0x94, 0xfb, 0x1c, 0x11, 0x54, 0x90, 0x85, 0x6e, 0x6f, 0x25,
+  0x2a, 0x4a, 0x3b, 0x01, 0x10, 0x1c, 0x6d, 0xcb, 0x94, 0xcb, 0xb2, 0x2d,
+  0x79, 0x1b, 0x96, 0x64, 0xe2, 0x6a, 0x32, 0x52, 0xba, 0x1c, 0x6d, 0x53,
+  0x80, 0x2b, 0x9b, 0x4e, 0xfb, 0x4c, 0xd5, 0x4b, 0xd4, 0xa5, 0x64, 0x67,
+  0x70, 0x3e, 0x21, 0x00, 0x2a, 0x6a, 0x84, 0x91, 0x0d, 0x16, 0xdc, 0x3e,
+  0x48, 0x8b, 0x1c, 0x00, 0xe3, 0xaf, 0x7c, 0x02, 0x92, 0x6d, 0xa1, 0xe9,
+  0x10, 0x94, 0x3d, 0xe3, 0x5c, 0x33, 0x98, 0x9d, 0xbf, 0xab, 0xd0, 0x8d,
+  0xd5, 0x4f, 0x09, 0xb9, 0xef, 0xc6, 0xd7, 0x57, 0xd5, 0x9c, 0x0b, 0x39,
+  0xc5, 0xaa, 0x4c, 0x79, 0x06, 0x00, 0x3f, 0xa9, 0x6b, 0x5b, 0x67, 0x0d,
+  0x77, 0x85, 0x5f, 0x3d, 0x7e, 0xd3, 0x2a, 0x08, 0x4b, 0x33, 0x11, 0xab,
+  0x6f, 0xe2, 0x33, 0x14, 0x70, 0x08, 0x13, 0x47, 0xd6, 0xdd, 0x2d, 0xb6,
+  0x35, 0x67, 0xed, 0x8c, 0xee, 0xdd, 0x6f, 0xe2, 0xcd, 0x49, 0x1b, 0xac,
+  0xce, 0x72, 0x0b, 0xda, 0x2c, 0xf6, 0x8a, 0x96, 0x2c, 0xa6, 0xdd, 0x40,
+  0xe5, 0xc9, 0xf5, 0x23, 0x21, 0x08, 0xea, 0x7a, 0x56, 0x4e, 0x28, 0x63,
+  0x23, 0x7b, 0x70, 0x2e, 0xe8, 0x41, 0x9d, 0x0b, 0xc9, 0x76, 0xa9, 0xfd,
+  0x71, 0xa1, 0x11, 0xb3, 0x4b, 0x69, 0xe7, 0x89, 0x10, 0x8b, 0x37, 0xe7,
+  0x06, 0xaa, 0x85, 0xd5, 0x32, 0x7e, 0xd9, 0x1f, 0x42, 0x91, 0x94, 0xe3,
+  0xc6, 0x1b, 0x01, 0x3d, 0x10, 0x6f, 0x8e, 0x85, 0x6f, 0x64, 0x64, 0x94,
+  0x00, 0x01, 0xe3, 0xf6, 0xa1, 0x91, 0xd1, 0x83, 0xc1, 0x2a, 0x9b, 0x1f,
+  0xb2, 0x48, 0xef, 0x2c, 0x31, 0x2f, 0x4e, 0xbc, 0xb9, 0xf6, 0x02, 0xeb,
+  0x0a, 0xa3, 0x0f, 0xb1, 0x05, 0x16, 0xa2, 0xd4, 0x50, 0x0b, 0x73, 0xa6,
+  0x3a, 0xcf, 0x8e, 0x7d, 0x70, 0xe9, 0x02, 0xcb, 0x37, 0x82, 0x59, 0x98,
+  0x1a, 0x09, 0x69, 0xb4, 0xe0, 0x71, 0xf6, 0x91, 0x8b, 0xda, 0x53, 0xb5,
+  0xfa, 0xe6, 0xe3, 0xea, 0x09, 0x99, 0x4a, 0xde, 0xf1, 0xfd, 0x0c, 0x95,
+  0x51, 0xad, 0xac, 0x10, 0x0a, 0xc3, 0x54, 0xf2, 0x70, 0x8d, 0x12, 0xc8,
+  0xd5, 0x67, 0x9b, 0xe5, 0x13, 0xe2, 0x7d, 0x8f, 0x69, 0xd5, 0xf9, 0xaa,
+  0x9a, 0x97, 0x39, 0xd7, 0x1c, 0xb7, 0x32, 0xc6, 0xeb, 0x63, 0x8c, 0xf3,
+  0x62, 0x55, 0xa0, 0x65, 0xf6, 0x89, 0x52, 0x28, 0xac, 0xa2, 0xf0, 0x31,
+  0x42, 0x41, 0xef, 0x0d, 0x8e, 0x9f, 0xd6, 0xd5, 0xe6, 0x21, 0x29, 0xe3,
+  0xba, 0xab, 0xa0, 0xe7, 0x8e, 0xf3, 0x8a, 0x7d, 0xdc, 0xfe, 0xa4, 0x3d,
+  0x93, 0xdd, 0xfe, 0xcd, 0x6f, 0x27, 0x96, 0xf6, 0xe1, 0xd6, 0x1d, 0x21,
+  0x55, 0x01, 0x50, 0x8b, 0x54, 0xab, 0x54, 0x12, 0x40, 0x81, 0x1b, 0xbb,
+  0x54, 0xa2, 0xd5, 0x25, 0x53, 0x01, 0xfe, 0xd5, 0x40, 0x4b, 0x0a, 0x3e,
+  0x5e, 0x65, 0x8c, 0x6b, 0xc3, 0xfc, 0xca, 0x72, 0x2c, 0x9f, 0x1c, 0x79,
+  0xda, 0x75, 0x91, 0xe5, 0xbb, 0x5f, 0x50, 0xdb, 0xcd, 0x91, 0x1e, 0x87,
+  0x15, 0x02, 0x4f, 0x3e, 0xdb, 0x15, 0x79, 0x93, 0x8c, 0x7c, 0xc4, 0xbc,
+  0x17, 0x00, 0xc9, 0x78, 0xf8, 0x64, 0x71, 0xcf, 0x97, 0xce, 0x71, 0x35,
+  0x7b, 0xe0, 0x90, 0x9b, 0x07, 0xdc, 0xa8, 0x38, 0x67, 0xdd, 0x8e, 0x2a,
+  0x38, 0x97, 0x52, 0x8d, 0x73, 0xc9, 0xcc, 0x2f, 0xeb, 0x41, 0x6b, 0x17,
+  0x2e, 0xef, 0x89, 0x3c, 0x19, 0xed, 0x8e, 0x9b, 0x5c, 0xca, 0x8b, 0xbb,
+  0x77, 0x3d, 0x8b, 0x37, 0x27, 0xdd, 0x75, 0x6f, 0xc9, 0xf4, 0xf4, 0x3c,
+  0x47, 0x2a, 0x33, 0xd6, 0x1b, 0xe3, 0x32, 0xdc, 0x1b, 0x7a, 0xc0, 0x7f,
+  0x91, 0x80, 0x20, 0x2b, 0x7e, 0x5a, 0xf8, 0x76, 0x3b, 0x7d, 0xd1, 0xdc,
+  0xbd, 0x2b, 0xc0, 0xea, 0x1e, 0xdb, 0xb5, 0x5d, 0x6e, 0x2e, 0x80, 0x88,
+  0x50, 0x21, 0x00, 0x37, 0x00, 0xa2, 0xa1, 0xe2, 0x89, 0xd8, 0xce, 0xa0,
+  0xea, 0x99, 0x10, 0x97, 0x7c, 0x88, 0x8c, 0x4d, 0xf8, 0x9b, 0x09, 0xe3,
+  0x32, 0x30, 0xad, 0xe0, 0x18, 0x10, 0x45, 0x44, 0x0b, 0x2c, 0xd6, 0x99,
+  0x58, 0x13, 0xf2, 0x38, 0xd3, 0xd3, 0x87, 0x55, 0x25, 0x3b, 0x00, 0x99,
+  0x7a, 0xe0, 0x39, 0x2b, 0x98, 0xd3, 0x35, 0xbb, 0x9a, 0xf8, 0x35, 0x5a,
+  0xbd, 0xe1, 0x57, 0x3d, 0x9e, 0x82, 0x2b, 0x33, 0x78, 0xfc, 0x11, 0x85,
+  0x81, 0x43, 0x6b, 0x86, 0xb2, 0x42, 0xb9, 0xc8, 0x5b, 0xc9, 0x79, 0x46,
+  0x69, 0x8f, 0x37, 0x24, 0x4c, 0x47, 0xf7, 0x0d, 0x3a, 0x68, 0x1a, 0xd8,
+  0xcc, 0x07, 0xe6, 0x3a, 0x64, 0xd8, 0x2f, 0xa9, 0x48, 0xc4, 0xfa, 0x1c,
+  0xe8, 0x34, 0x66, 0x67, 0x6c, 0x09, 0x9c, 0x06, 0xf1, 0x27, 0xd4, 0xe9,
+  0xd9, 0x1d, 0xec, 0x1a, 0x65, 0x1c, 0x36, 0xad, 0x18, 0xa8, 0x6a, 0x69,
+  0x10, 0x38, 0x49, 0x18, 0x67, 0xe9, 0xd3, 0x5d, 0x6f, 0xc4, 0x39, 0x7d,
+  0xb8, 0x0e, 0x5d, 0xd4, 0xf0, 0x73, 0x3b, 0xb3, 0xe6, 0x36, 0xbd, 0x0f,
+  0x15, 0xf5, 0x9d, 0xfe, 0xd3, 0x97, 0x2f, 0x5b, 0x37, 0x7a, 0xed, 0x31,
+  0xf6, 0x3e, 0xdb, 0xd9, 0xc1, 0xd8, 0x82, 0xac, 0x47, 0xf3, 0x8b, 0xfe,
+  0x4b, 0xbc, 0xd8, 0x7e, 0xad, 0xce, 0xcc, 0x12, 0x4c, 0x96, 0xbf, 0xd7,
+  0xa7, 0xdf, 0x44, 0x3e, 0x07, 0xaf, 0xcb, 0xd2, 0xb7, 0x5e, 0xd2, 0xe7,
+  0x22, 0x6f, 0xe1, 0x61, 0x9e, 0xc6, 0xf2, 0xf2, 0x92, 0xdc, 0x5d, 0xf4,
+  0xa4, 0x72, 0x58, 0xdc, 0xa6, 0xd5, 0x24, 0x1c, 0xee, 0x4e, 0xaf, 0xbf,
+  0xbb, 0x6c, 0xb8, 0xe0, 0x1b, 0x06, 0xbc, 0x85, 0xd6, 0x93, 0xac, 0x49,
+  0x63, 0x4b, 0x70, 0x0a, 0x40, 0xb7, 0xa1, 0x5d, 0xd3, 0xa3, 0xdd, 0x97,
+  0x2f, 0x7b, 0xd4, 0xb3, 0x67, 0x2f, 0x5f, 0x2e, 0x4d, 0xf9, 0xf4, 0x3e,
+  0x73, 0x5b, 0x3a, 0x27, 0x15, 0xbd, 0xee, 0x36, 0x4d, 0x4d, 0x26, 0x4b,
+  0xfc, 0x3b, 0xf4, 0x9b, 0xd7, 0xc9, 0xfb, 0xd3, 0x8b, 0x23, 0xcf, 0x7d,
+  0x83, 0xe3, 0xc5, 0xe1, 0x4b, 0xcf, 0x1e, 0x45, 0x3c, 0x78, 0x8e, 0x8a,
+  0x31, 0x30, 0x8d, 0xc9, 0xd6, 0x0a, 0x51, 0x0e, 0x80, 0xa3, 0xab, 0xdf,
+  0xf0, 0x0f, 0xdd, 0xcf, 0x9d, 0x02, 0xfa, 0x3f, 0xc9, 0xaf, 0xf2, 0xc6,
+  0xe7, 0x38, 0xd9, 0x34, 0xab, 0xbd, 0x05, 0x4f, 0xc8, 0x4d, 0x3a, 0xcd,
+  0x6d, 0x68, 0x67, 0xa3, 0x26, 0xf8, 0x36, 0x23, 0xdd, 0x36, 0xc8, 0x30,
+  0xda, 0x08, 0x00, 0xd4, 0xd9, 0x74, 0x52, 0xeb, 0x45, 0xc8, 0x8f, 0xf7,
+  0xf1, 0xa0, 0x9c, 0x16, 0xd8, 0xb3, 0x5c, 0x98, 0x36, 0x85, 0x73, 0x99,
+  0x3f, 0xbd, 0x3c, 0xb8, 0x43, 0x92, 0x90, 0x71, 0x9b, 0x9a, 0x7b, 0x41,
+  0xed, 0xf4, 0xbc, 0x79, 0xd8, 0xa8, 0xbb, 0x15, 0xec, 0xa9, 0x0c, 0x7c,
+  0x1c, 0xf0, 0x80, 0x88, 0xc2, 0x24, 0x9b, 0x2b, 0x64, 0xac, 0x68, 0xb7,
+  0x63, 0xf6, 0xf2, 0x65, 0x7e, 0xb5, 0xa8, 0xe2, 0xe0, 0xaa, 0xbf, 0xba,
+  0x44, 0x00, 0xe5, 0xa6, 0x4e, 0x6f, 0xd3, 0x2a, 0xd3, 0x5a, 0x4a, 0xc5,
+  0xbd, 0x3d, 0xd7, 0x6a, 0x27, 0x2b, 0xe0, 0x1f, 0xcc, 0xe1, 0x81, 0x5f,
+  0x8c, 0x4c, 0xe6, 0x4b, 0xa3, 0xcb, 0xc0, 0x99, 0x20, 0x00, 0x13, 0x78,
+  0xff, 0xa4, 0x8a, 0x94, 0x64, 0x5d, 0xa8, 0xab, 0xdd, 0xac, 0x37, 0x5d,
+  0xa7, 0xa9, 0x4c, 0x41, 0x37, 0x8a, 0x57, 0x2e, 0x36, 0xa6, 0x2e, 0x90,
+  0x40, 0x4f, 0xc2, 0x27, 0x73, 0x5d, 0x7a, 0x54, 0xf4, 0x61, 0x5a, 0xb6,
+  0x10, 0x4b, 0x40, 0xfa, 0xf0, 0x12, 0x4d, 0x8c, 0x12, 0x3d, 0x2d, 0xd3,
+  0x89, 0xb8, 0x57, 0x5c, 0x68, 0x9f, 0xb5, 0x03, 0xa9, 0x59, 0x2b, 0x6b,
+  0x1b, 0x30, 0x17, 0xd3, 0x52, 0xcb, 0x2a, 0x13, 0xf0, 0x53, 0xea, 0x3b,
+  0xeb, 0x26, 0x2d, 0x0b, 0xab, 0x25, 0xb1, 0x9c, 0x32, 0x1f, 0xe1, 0x2c,
+  0xf8, 0xad, 0x41, 0xc4, 0x0d, 0x40, 0x1b, 0x9e, 0x57, 0xcb, 0x12, 0xaa,
+  0xa3, 0x3a, 0x1b, 0x5d, 0x92, 0x9e, 0xd7, 0x23, 0x19, 0x1e, 0xff, 0xcf,
+  0xa3, 0xdf, 0x33, 0x04, 0x56, 0xa5, 0xb7, 0x36, 0x35, 0xe8, 0x7b, 0xa6,
+  0x7b, 0x93, 0xd0, 0x94, 0xcd, 0x45, 0x4f, 0xa7, 0x62, 0xc6, 0x53, 0x35,
+  0x6b, 0xdc, 0x1e, 0x08, 0x72, 0x4a, 0xf1, 0x45, 0xb3, 0xb1, 0xc2, 0xbd,
+  0x4d, 0x25, 0x82, 0xc8, 0x15, 0xe3, 0x68, 0x90, 0x00, 0x37, 0x45, 0x5a,
+  0x07, 0x03, 0x8b, 0x74, 0x31, 0x6d, 0x2d, 0xed, 0x19, 0x1c, 0xc3, 0xe0,
+  0x5f, 0x09, 0xea, 0xaa, 0x81, 0x41, 0x8c, 0xba, 0x65, 0x7a, 0xfb, 0x40,
+  0xf5, 0x2b, 0x3f, 0x9b, 0x16, 0x05, 0x53, 0xab, 0x8c, 0xe2, 0x65, 0x55,
+  0xf2, 0xea, 0xc3, 0xf9, 0xc9, 0x92, 0x94, 0xa8, 0x21, 0x56, 0x81, 0xa6,
+  0x6b, 0xfd, 0x3c, 0x03, 0xf7, 0x4f, 0x95, 0x9c, 0xa5, 0x57, 0xd9, 0xba,
+  0x4f, 0xb7, 0xd4, 0x62, 0x5c, 0x13, 0x1f, 0x44, 0xcc, 0x53, 0xe4, 0xf3,
+  0xbb, 0x93, 0x18, 0x77, 0x51, 0x6a, 0x3f, 0x91, 0xe9, 0x72, 0x9a, 0xca,
+  0xec, 0x2d, 0x2a, 0x94, 0x71, 0xff, 0x3e, 0x5a, 0x24, 0x45, 0x7c, 0x42,
+  0x6d, 0x2e, 0x46, 0x07, 0xa8, 0xa2, 0x00, 0x11, 0xea, 0xf8, 0xae, 0x7f,
+  0x4e, 0x6e, 0xfa, 0xf5, 0xc4, 0xe5, 0x1f, 0xf5, 0xb3, 0x18, 0xe1, 0x39,
+  0x4f, 0x05, 0x93, 0x7a, 0x5b, 0xb7, 0x12, 0xbb, 0xfc, 0x5b, 0x6e, 0xfe,
+  0x3a, 0xd3, 0x20, 0x51, 0x46, 0x74, 0x88, 0x75, 0xa4, 0x3c, 0x30, 0xce,
+  0x30, 0x11, 0x44, 0x94, 0x1c, 0xeb, 0x48, 0x93, 0x13, 0xe9, 0xdf, 0xbe,
+  0x44, 0x64, 0x58, 0x11, 0xb2, 0x5d, 0x93, 0xb0, 0xb9, 0x66, 0x8b, 0xc4,
+  0x06, 0x9b, 0x4e, 0xa9, 0xf2, 0x82, 0xf5, 0x64, 0xd1, 0x38, 0x27, 0x25,
+  0x91, 0xf5, 0xa3, 0xc2, 0x6f, 0x61, 0x9d, 0xce, 0xad, 0x95, 0xfd, 0xdd,
+  0xa9, 0xc1, 0x5c, 0xa0, 0xe8, 0xa0, 0x27, 0xe5, 0x44, 0xfa, 0x66, 0x77,
+  0x14, 0x92, 0xeb, 0xea, 0x2d, 0xab, 0xb7, 0xf7, 0xfe, 0xa3, 0x17, 0x65,
+  0x98, 0x5f, 0xc2, 0x8a, 0xe9, 0x75, 0xb7, 0x01, 0x10, 0x1d, 0x1b, 0xe6,
+  0xb4, 0xd7, 0xe1, 0xb8, 0x77, 0x59, 0x71, 0x72, 0x5f, 0x46, 0x7d, 0x8b,
+  0x7d, 0x2f, 0x4e, 0x9d, 0x1c, 0x72, 0x7e, 0x56, 0xff, 0x4d, 0x6e, 0xee,
+  0x91, 0x9a, 0x89, 0x46, 0xd8, 0x31, 0xc0, 0x58, 0x5c, 0x7b, 0x10, 0x93,
+  0xb0, 0x8c, 0x91, 0xc6, 0x53, 0x80, 0xa4, 0xb3, 0xaf, 0xd8, 0xe8, 0x8e,
+  0xd9, 0x13, 0x4b, 0xea, 0xf6, 0xf8, 0x68, 0x6e, 0xab, 0x34, 0xa4, 0xce,
+  0x6b, 0x21, 0x35, 0x87, 0x19, 0xf4, 0xce, 0xe7, 0xc3, 0xdc, 0x0a, 0x91,
+  0xf9, 0x51, 0xfe, 0x0f, 0xc0, 0x78, 0x1c, 0x2b, 0x87, 0x94, 0xfb, 0x08,
+  0xcc, 0x4d, 0x5b, 0x6b, 0x55, 0xb3, 0xbe, 0xba, 0x7e, 0x60, 0xd3, 0x25,
+  0x5b, 0x73, 0x81, 0x63, 0x2c, 0xcc, 0x5a, 0xc5, 0x09, 0x68, 0x63, 0xd3,
+  0xf0, 0xa0, 0xe3, 0x19, 0xd7, 0x72, 0x11, 0x4b, 0x50, 0x86, 0xad, 0x51,
+  0x01, 0xee, 0xe8, 0x6f, 0x3d, 0x8a, 0x22, 0x14, 0xa5, 0xf0, 0x38, 0xc4,
+  0x62, 0xfa, 0x00, 0x14, 0x99, 0x27, 0xbc, 0x7b, 0x90, 0x01, 0x24, 0xc9,
+  0x9f, 0xfa, 0x8e, 0xb0, 0x7f, 0xf3, 0x3e, 0x33, 0x3a, 0xb6, 0x65, 0xb7,
+  0x51, 0x63, 0x2a, 0x92, 0xe1, 0x95, 0x70, 0x25, 0xba, 0xba, 0x85, 0x3d,
+  0x87, 0x19, 0xe2, 0xc5, 0x20, 0x79, 0xca, 0x8d, 0x26, 0x40, 0x7c, 0xd7,
+  0x8b, 0x22, 0xbb, 0x23, 0x0e, 0xd6, 0xe5, 0xcd, 0x85, 0x8a, 0xf6, 0xf7,
+  0x07, 0xe7, 0xef, 0x8f, 0xdf, 0x7f, 0xbd, 0x9f, 0x1c, 0xdd, 0x65, 0xd5,
+  0x98, 0xaa, 0xa6, 0xfe, 0x6d, 0x31, 0xc9, 0xc7, 0x10, 0x14, 0x52, 0x8b,
+  0xd2, 0xcf, 0xc4, 0xa3, 0x02, 0xe2, 0xe2, 0x65, 0xa5, 0x4b, 0x37, 0x90,
+  0xef, 0x02, 0x46, 0x1d, 0xa0, 0x94, 0x7c, 0x55, 0x5e, 0x2d, 0xbc, 0xed,
+  0x33, 0xe6, 0x1a, 0x59, 0x08, 0x18, 0x20, 0x9a, 0x7a, 0x2d, 0x73, 0x4d,
+  0xae, 0xd7, 0xe4, 0xcd, 0xc9, 0x49, 0x48, 0x7e, 0x89, 0x5a, 0xae, 0xdc,
+  0x7d, 0x4e, 0xe7, 0x43, 0x13, 0x66, 0xf3, 0xd7, 0xf9, 0x88, 0x61, 0x4f,
+  0xa4, 0x02, 0x70, 0x85, 0x2c, 0x4f, 0xe4, 0xc1, 0xb7, 0x62, 0xba, 0xd2,
+  0x5d, 0x64, 0xe0, 0x64, 0x81, 0x56, 0xc4, 0x0a, 0xe7, 0xd5, 0x04, 0xf6,
+  0x90, 0x91, 0x91, 0xe5, 0x65, 0x43, 0x3a, 0x52, 0xeb, 0x36, 0x6d, 0x17,
+  0x9f, 0x58, 0x19, 0x49, 0xb8, 0x66, 0x53, 0xa7, 0xc5, 0x8f, 0x30, 0xb6,
+  0x05, 0xdf, 0xe9, 0xd2, 0x65, 0xe5, 0x10, 0x55, 0x4b, 0x62, 0x61, 0xb4,
+  0x49, 0x96, 0xda, 0x5a, 0xac, 0x35, 0xc9, 0xcb, 0x50, 0x60, 0xdc, 0x66,
+  0x95, 0x98, 0x9f, 0x36, 0x53, 0xd0, 0x88, 0xbb, 0x41, 0x32, 0x2c, 0xcd,
+  0xf3, 0xa1, 0x96, 0x65, 0xeb, 0x7b, 0xb5, 0x4a, 0x05, 0xa3, 0x3b, 0x0e,
+  0xe8, 0x85, 0xd2, 0x27, 0x88, 0xce, 0xb5, 0xc7, 0x1b, 0xa9, 0x2d, 0x4a,
+  0xfb, 0x7f, 0x94, 0x59, 0xa5, 0xe2, 0x5e, 0xe3, 0x3f, 0xb4, 0x49, 0xd6,
+  0xfb, 0x46, 0xa0, 0xae, 0xd3, 0xcc, 0xa2, 0xe2, 0xa9, 0xd7, 0xd2, 0x03,
+  0x75, 0xfb, 0x7c, 0x98, 0x75, 0x77, 0xc0, 0x0f, 0x54, 0x43, 0x52, 0xcb,
+  0xd3, 0x73, 0x9f, 0x4a, 0x4d, 0x1a, 0x1b, 0x53, 0x65, 0x99, 0x94, 0xa1,
+  0x7c, 0x69, 0x10, 0x2a, 0x67, 0x93, 0xc2, 0xba, 0x64, 0xfc, 0x74, 0x58,
+  0xff, 0x75, 0xb9, 0x71, 0x7a, 0xce, 0xc3, 0x40, 0x7a, 0x41, 0x90, 0x92,
+  0x69, 0xec, 0xbc, 0xc1, 0x56, 0x0c, 0xe8, 0x23, 0x72, 0x91, 0xaf, 0xa4,
+  0xda, 0xa8, 0xd7, 0x93, 0x07, 0x25, 0x1f, 0xc4, 0x56, 0xa4, 0xac, 0x0f,
+  0x16, 0xd4, 0xf7, 0x8a, 0x73, 0x73, 0x10, 0x26, 0xa9, 0x05, 0x13, 0x35,
+  0x7e, 0x5c, 0x13, 0x3a, 0x01, 0x52, 0x8f, 0xc3, 0xe6, 0x3c, 0x22, 0xbe,
+  0xe5, 0x42, 0x58, 0x62, 0x37, 0x79, 0x71, 0x53, 0x7e, 0xe2, 0x1b, 0x5f,
+  0x32, 0x9b, 0x83, 0x04, 0x79, 0x9f, 0x69, 0x2e, 0x8a, 0x5a, 0x53, 0x5a,
+  0x11, 0xee, 0x3b, 0xdf, 0x58, 0x1e, 0x10, 0xde, 0x0c, 0x46, 0x42, 0x32,
+  0x36, 0xcd, 0xc7, 0x5e, 0x4f, 0x9d, 0xe6, 0xec, 0x59, 0xea, 0x69, 0xf1,
+  0xda, 0x24, 0x9b, 0xd6, 0x59, 0xcf, 0x4b, 0xf9, 0xb1, 0x64, 0x53, 0x72,
+  0xdb, 0x00, 0x8d, 0xaa, 0x51, 0xcc, 0xe5, 0x37, 0xc9, 0x20, 0xd1, 0xb9,
+  0xf7, 0xa7, 0xdb, 0x19, 0xb2, 0x88, 0x80, 0x72, 0xec, 0x69, 0x7c, 0x5d,
+  0x96, 0xd1, 0x8b, 0xdb, 0xdd, 0x21, 0x50, 0x6a, 0x90, 0xf7, 0xbe, 0x44,
+  0x83, 0x68, 0x57, 0x45, 0x93, 0x6c, 0x85, 0xee, 0xd9, 0x53, 0x4a, 0x31,
+  0xd1, 0x07, 0x3d, 0x3e, 0xbf, 0xf6, 0xed, 0xc6, 0x1d, 0x0a, 0xee, 0xe6,
+  0x18, 0xcc, 0x81, 0x7f, 0xd7, 0xb9, 0x8f, 0x9b, 0x56, 0x86, 0xb4, 0x3f,
+  0x29, 0xd1, 0xcb, 0x8e, 0x11, 0x71, 0x0e, 0x27, 0x89, 0x7d, 0x03, 0xc3,
+  0xa9, 0x68, 0x87, 0x35, 0xd0, 0xcf, 0xbc, 0x81, 0x00, 0xf9, 0xd3, 0xde,
+  0xce, 0x32, 0x21, 0xcf, 0x8a, 0xac, 0x66, 0xb2, 0xd1, 0x71, 0xb4, 0x06,
+  0x3a, 0x5f, 0x84, 0x2e, 0xbb, 0x9c, 0x2e, 0x90, 0xc5, 0x3c, 0x41, 0xc5,
+  0x1c, 0xaa, 0xb7, 0xb4, 0x64, 0xfe, 0xa3, 0x96, 0xf1, 0xaf, 0xad, 0xb2,
+  0xb5, 0xac, 0xcc, 0x96, 0x93, 0x5f, 0xe7, 0xde, 0x1a, 0x53, 0x4b, 0x31,
+  0xc4, 0x9b, 0xc8, 0x12, 0xcf, 0x5d, 0xe2, 0x69, 0xed, 0x4e, 0x6f, 0x80,
+  0x75, 0x0f, 0x61, 0xc7, 0x68, 0x84, 0x3c, 0x14, 0xc9, 0xc6, 0xae, 0x9d,
+  0xcd, 0x23, 0x02, 0xcb, 0x1e, 0x02, 0xc1, 0xfc, 0xd2, 0x2d, 0x65, 0x61,
+  0xbb, 0x1a, 0x7b, 0x0e, 0x37, 0xad, 0x27, 0x4b, 0xd9, 0x24, 0x4f, 0x05,
+  0x40, 0x8a, 0x39, 0xa1, 0x6f, 0xb5, 0xaf, 0x46, 0x60, 0xd3, 0xfa, 0x51,
+  0x9f, 0xbf, 0xe8, 0xc1, 0x91, 0xf4, 0x58, 0x58, 0x53, 0x8e, 0x3f, 0x7a,
+  0x9d, 0x5f, 0x5f, 0x4f, 0x36, 0x49, 0xae, 0x6e, 0xa9, 0xf6, 0x1a, 0xc6,
+  0xfb, 0x5d, 0x0d, 0x6b, 0x08, 0xe0, 0xb4, 0x0e, 0xc0, 0xbc, 0xd0, 0x5f,
+  0x13, 0x63, 0xe8, 0x55, 0x46, 0x05, 0x58, 0x4c, 0xd3, 0x8a, 0x64, 0xbb,
+  0xf9, 0xe4, 0xe5, 0x62, 0x1a, 0x33, 0x75, 0x70, 0xb6, 0x35, 0x46, 0x64,
+  0xa6, 0xa8, 0x26, 0x35, 0x05, 0xc6, 0xa0, 0x23, 0x93, 0x10, 0x72, 0xb1,
+  0xa9, 0xe9, 0x11, 0x48, 0xb4, 0xa7, 0x5c, 0x1b, 0x29, 0xba, 0x77, 0xe1,
+  0x20, 0xc6, 0x9c, 0xa9, 0x8a, 0xc9, 0x96, 0x14, 0xf7, 0xad, 0xca, 0xae,
+  0xa8, 0x4b, 0xae, 0xfe, 0x12, 0x4d, 0x41, 0x8f, 0x99, 0x2c, 0x3a, 0xcd,
+  0xad, 0x9f, 0x9e, 0x5d, 0x1c, 0x9f, 0xbe, 0x1f, 0x26, 0x7f, 0x5e, 0x5f,
+  0x99, 0xa0, 0xd4, 0xa6, 0x22, 0xfd, 0xa1, 0xe7, 0xd6, 0x24, 0x79, 0x25,
+  0xde, 0x86, 0x65, 0xf6, 0xb1, 0xa7, 0xc3, 0x8f, 0xcd, 0xfd, 0x6d, 0x04,
+  0xac, 0xbe, 0x29, 0x14, 0x4e, 0xb2, 0x58, 0x1d, 0xd6, 0xa9, 0x40, 0x5f,
+  0xf6, 0x93, 0xbb, 0x7d, 0x3b, 0x9a, 0xa5, 0xbd, 0x33, 0x5b, 0x3a, 0xad,
+  0x2f, 0x91, 0xc1, 0x5c, 0x0d, 0xd4, 0xda, 0x2f, 0x16, 0xa8, 0x22, 0x6f,
+  0x61, 0x9a, 0x6f, 0x49, 0x3b, 0xc5, 0x83, 0x9b, 0x52, 0xc6, 0x9a, 0x55,
+  0xad, 0x3a, 0x44, 0x13, 0x7e, 0x7d, 0x74, 0xb1, 0x35, 0x48, 0xce, 0x95,
+  0x09, 0x41, 0xf1, 0xa9, 0x56, 0xf1, 0x49, 0xad, 0x6e, 0x26, 0xc4, 0xaf,
+  0xe2, 0xc9, 0x30, 0xfa, 0xf3, 0x34, 0x2d, 0xa2, 0x49, 0x58, 0xa4, 0xd3,
+  0x52, 0x6d, 0x6d, 0x92, 0xc4, 0x2a, 0x93, 0xd5, 0x87, 0xe2, 0x55, 0x30,
+  0x60, 0x02, 0x96, 0xb3, 0x0f, 0x17, 0x68, 0xf0, 0xcd, 0xd1, 0xc9, 0xd1,
+  0xc5, 0x51, 0xd7, 0x7a, 0x1f, 0x31, 0x69, 0x1d, 0xb2, 0x6f, 0x9a, 0x6c,
+  0x7c, 0x5d, 0x94, 0xd3, 0xf2, 0x2a, 0x97, 0xea, 0x82, 0xc9, 0xf7, 0xd9,
+  0xe8, 0xcd, 0xc1, 0x77, 0xa4, 0x51, 0x90, 0xdf, 0xe9, 0xec, 0xfc, 0xf4,
+  0xec, 0xed, 0xf1, 0xfb, 0x37, 0xbd, 0xe4, 0xf0, 0xf4, 0xec, 0xaf, 0xbd,
+  0xe4, 0xdd, 0xe9, 0x77, 0x47, 0x11, 0xd4, 0x35, 0x11, 0x4a, 0x47, 0xaa,
+  0x9b, 0x4b, 0x8d, 0x2f, 0xbe, 0xd0, 0xd8, 0xfc, 0x46, 0x51, 0xe1, 0xce,
+  0x45, 0x42, 0x69, 0x09, 0x75, 0x29, 0x12, 0xd7, 0xcc, 0x5d, 0x2f, 0xf9,
+  0xe6, 0xe8, 0xe0, 0x4d, 0x2f, 0xa0, 0xfc, 0x1d, 0xf2, 0xa8, 0x68, 0x74,
+  0x76, 0xc8, 0x20, 0x8a, 0x65, 0xfb, 0x03, 0x5a, 0x02, 0x87, 0xba, 0xf8,
+  0xc8, 0x9a, 0x0d, 0x8b, 0x5c, 0xdc, 0xc9, 0x32, 0x04, 0x85, 0xb0, 0x57,
+  0x2f, 0xad, 0xe7, 0xd9, 0xca, 0x04, 0x81, 0xc2, 0xa6, 0xaa, 0x76, 0x9b,
+  0x99, 0x05, 0x78, 0x7f, 0x9b, 0xee, 0xa7, 0x4b, 0x1e, 0x67, 0x06, 0xe9,
+  0xb5, 0x52, 0x82, 0x21, 0x90, 0xd8, 0x05, 0x99, 0x4a, 0x31, 0x34, 0x14,
+  0x8e, 0x20, 0x10, 0xd0, 0x90, 0x89, 0x71, 0x95, 0x10, 0x32, 0x4c, 0x6f,
+  0x68, 0x29, 0x0a, 0xa5, 0x12, 0x10, 0x0b, 0x49, 0x0b, 0x4d, 0xa1, 0xfb,
+  0xa6, 0x54, 0x5e, 0xf8, 0x81, 0x7f, 0x1c, 0xc1, 0x5d, 0x73, 0x7d, 0xa2,
+  0x4b, 0xb3, 0x39, 0x33, 0x46, 0x57, 0x61, 0x9d, 0x9c, 0x7b, 0x20, 0xe9,
+  0x1f, 0xab, 0x73, 0x62, 0x95, 0x9a, 0x25, 0x07, 0x46, 0x1c, 0x34, 0x20,
+  0x85, 0x51, 0xc7, 0x55, 0x5b, 0x4e, 0x38, 0x3e, 0x6e, 0x3e, 0x7b, 0x97,
+  0x81, 0x6c, 0x03, 0x99, 0xac, 0xae, 0x73, 0x2f, 0x11, 0x65, 0x45, 0x9d,
+  0x39, 0x97, 0x8e, 0x29, 0x93, 0xd1, 0xba, 0x6d, 0xbf, 0x96, 0xb9, 0x67,
+  0x03, 0x1a, 0x1f, 0x7a, 0xcc, 0x48, 0x93, 0x42, 0x5c, 0xa3, 0x14, 0x82,
+  0xeb, 0xb3, 0x3d, 0xed, 0x23, 0x84, 0x55, 0x84, 0xda, 0xb4, 0x63, 0xe9,
+  0x42, 0xbc, 0x08, 0x75, 0xab, 0x86, 0xab, 0x3d, 0xeb, 0x4f, 0x76, 0xee,
+  0x9c, 0xb7, 0x9d, 0x34, 0x8a, 0x3a, 0xe9, 0x0b, 0x03, 0xef, 0xcc, 0x5c,
+  0x85, 0xa1, 0x9f, 0x69, 0xf3, 0xed, 0x12, 0xe1, 0xe8, 0xfb, 0x6f, 0x65,
+  0x31, 0x3c, 0x74, 0xf8, 0xc9, 0xb1, 0x39, 0x12, 0x11, 0x12, 0x8c, 0x49,
+  0x89, 0x4a, 0xa5, 0x80, 0x1c, 0xe4, 0x7a, 0x9d, 0x50, 0x5b, 0xe1, 0x87,
+  0xa9, 0x74, 0x6f, 0xf4, 0xcb, 0xa8, 0xe9, 0xfb, 0xc0, 0xa7, 0x83, 0x35,
+  0x3b, 0x3f, 0xba, 0x38, 0x1f, 0x24, 0x9b, 0x3e, 0xbf, 0xe3, 0xf3, 0xc1,
+  0x4e, 0x18, 0xbe, 0xa1, 0xaa, 0xc1, 0x5b, 0x89, 0xf7, 0x59, 0xf7, 0x5d,
+  0x14, 0x14, 0x5e, 0xfd, 0xdd, 0x10, 0x77, 0xec, 0x71, 0xba, 0xec, 0xc4,
+  0xbe, 0xe7, 0xd7, 0x26, 0x6e, 0x8d, 0x92, 0x7e, 0xb1, 0xe2, 0x6b, 0xdf,
+  0x1c, 0x9d, 0x44, 0x6a, 0x62, 0x7c, 0x77, 0xfe, 0xf6, 0xaf, 0xed, 0x51,
+  0x3e, 0x79, 0x1a, 0xf9, 0xea, 0x6f, 0xe9, 0x5a, 0xcf, 0xea, 0x72, 0x6a,
+  0x74, 0x16, 0x24, 0x97, 0x20, 0xb7, 0x64, 0xdf, 0x5c, 0x02, 0x84, 0x4d,
+  0xff, 0xb1, 0x27, 0x7f, 0xf9, 0x79, 0x30, 0x18, 0x7c, 0x11, 0x92, 0x14,
+  0xc3, 0x53, 0x43, 0x61, 0x2f, 0x19, 0x70, 0x22, 0x8f, 0x0b, 0x2e, 0xd3,
+  0x33, 0xc6, 0x91, 0xd0, 0x83, 0x0c, 0x26, 0x8a, 0x63, 0xcc, 0xd3, 0x3c,
+  0x70, 0x4a, 0x7f, 0xb0, 0x60, 0x6b, 0x97, 0x81, 0x06, 0xa1, 0x23, 0x46,
+  0xdc, 0xd4, 0x1e, 0xd7, 0x4d, 0x62, 0xad, 0xe0, 0x3c, 0xc2, 0x64, 0x69,
+  0xa8, 0xdf, 0xf6, 0x04, 0x77, 0x1f, 0xf9, 0x87, 0x41, 0x8b, 0x44, 0x00,
+  0x25, 0x7b, 0xdf, 0x16, 0x7a, 0x87, 0xc8, 0x0c, 0x4c, 0xec, 0x5b, 0xc1,
+  0xa5, 0x6b, 0x33, 0x38, 0x0f, 0x25, 0xbc, 0x0e, 0x43, 0x0c, 0x17, 0x0b,
+  0xea, 0x54, 0x66, 0xcd, 0x78, 0x9b, 0xc6, 0x58, 0x87, 0x65, 0x44, 0x62,
+  0x3e, 0xb0, 0xb2, 0xe8, 0x60, 0x6b, 0xe9, 0xae, 0x60, 0x3f, 0xb4, 0x9f,
+  0x98, 0xe3, 0xaa, 0x9b, 0x78, 0x5a, 0x3b, 0xf5, 0x23, 0x12, 0x8b, 0xf7,
+  0x72, 0x71, 0xc7, 0x2e, 0xa9, 0x45, 0x19, 0xe2, 0x5b, 0x8b, 0x8f, 0x17,
+  0x06, 0x28, 0x4e, 0xcf, 0x49, 0x74, 0x11, 0x0f, 0x0b, 0x8b, 0x68, 0xdd,
+  0x4e, 0x96, 0x6e, 0xb8, 0x5d, 0x5e, 0x5d, 0x9d, 0x75, 0x3a, 0x6d, 0xd2,
+  0x8f, 0xae, 0x3a, 0x4f, 0xba, 0x36, 0x3a, 0xc1, 0xd4, 0xc1, 0x6a, 0xcb,
+  0xcf, 0x51, 0x9f, 0x3e, 0x5e, 0xe6, 0x45, 0x54, 0x60, 0x6d, 0x98, 0xe4,
+  0x7c, 0x9b, 0xf1, 0xbd, 0x3d, 0x20, 0xf5, 0xc4, 0xf7, 0x9f, 0x86, 0xd1,
+  0x84, 0x7c, 0x7e, 0xf3, 0x14, 0xee, 0x9b, 0xe7, 0x3d, 0xfe, 0xd7, 0x73,
+  0x97, 0xa8, 0xe1, 0x99, 0x28, 0xac, 0xc4, 0xb3, 0xce, 0x7b, 0x7c, 0xa6,
+  0x29, 0xa7, 0x01, 0x51, 0xb9, 0xc7, 0xbc, 0xcb, 0xbd, 0x54, 0xf5, 0xdd,
+  0xbc, 0xa3, 0xbd, 0x25, 0x81, 0x68, 0x4e, 0xee, 0x8f, 0xa3, 0x8a, 0x0a,
+  0xf4, 0x35, 0xf5, 0xcf, 0xab, 0x12, 0x7c, 0x8d, 0xc6, 0xfb, 0xd9, 0x20,
+  0x4c, 0xa4, 0x8a, 0x7f, 0xc8, 0x42, 0x79, 0xdd, 0xd7, 0x88, 0x0c, 0x05,
+  0xb4, 0x69, 0x04, 0x7c, 0xa1, 0xef, 0xac, 0xf8, 0xd0, 0xcb, 0xc1, 0xce,
+  0x2f, 0xa3, 0xc8, 0x72, 0x96, 0x23, 0xd3, 0x63, 0xf1, 0x4f, 0xb0, 0x96,
+  0x02, 0x71, 0x2a, 0x03, 0x45, 0x04, 0x47, 0x69, 0x25, 0xb9, 0xfa, 0xee,
+  0xe0, 0x49, 0x5b, 0xfe, 0x98, 0xae, 0x23, 0x0d, 0xa6, 0x32, 0x46, 0x4d,
+  0xb8, 0xbb, 0x8f, 0xdb, 0xdc, 0xe3, 0xf6, 0x0c, 0x53, 0x48, 0x8f, 0x7f,
+  0x6c, 0x44, 0x86, 0xc2, 0x5e, 0x92, 0x23, 0x4a, 0xd4, 0x39, 0x3f, 0x7a,
+  0xfb, 0x61, 0x78, 0xf4, 0x06, 0x98, 0x97, 0x34, 0x56, 0x39, 0x23, 0x47,
+  0xe8, 0x4f, 0x4a, 0x41, 0x34, 0x65, 0xc9, 0x67, 0x48, 0xfa, 0x12, 0xd4,
+  0x35, 0x13, 0x60, 0x8c, 0x31, 0xe8, 0xc2, 0xdc, 0x0a, 0x56, 0x3f, 0xe4,
+  0xc5, 0x5f, 0xc0, 0xf8, 0xc0, 0xa3, 0x9e, 0x64, 0x54, 0x86, 0xe5, 0x15,
+  0x63, 0x38, 0x02, 0xca, 0x9f, 0x77, 0x76, 0x77, 0xd6, 0xd3, 0x2c, 0x9b,
+  0x4b, 0x06, 0xdd, 0xac, 0x5c, 0x14, 0xec, 0xcf, 0x33, 0x2b, 0xa3, 0x5e,
+  0x2c, 0x76, 0x9a, 0x26, 0x68, 0x55, 0x2d, 0xc1, 0x74, 0x49, 0xcd, 0x10,
+  0x90, 0xff, 0x24, 0x80, 0x4e, 0x67, 0x13, 0x2f, 0x13, 0x21, 0x98, 0x99,
+  0xcd, 0xbc, 0xf1, 0xfd, 0xbf, 0x4b, 0x8a, 0x0a, 0x51, 0x11, 0x13, 0xa3,
+  0xd1, 0x73, 0x77, 0xd2, 0xe9, 0x55, 0x59, 0x99, 0x06, 0x67, 0x36, 0xed,
+  0xaf, 0x02, 0x66, 0xa7, 0xde, 0x6a, 0xcf, 0x6a, 0x98, 0x3e, 0xcd, 0x3a,
+  0x30, 0x02, 0xb8, 0x19, 0xe7, 0x42, 0xd3, 0x81, 0xe6, 0x79, 0x02, 0x78,
+  0x93, 0x42, 0x5b, 0x2c, 0x84, 0x87, 0x92, 0xc1, 0x8c, 0xf9, 0xe0, 0x29,
+  0x0c, 0x36, 0xe2, 0x3f, 0xb2, 0xaa, 0xec, 0xba, 0x21, 0x54, 0xdd, 0x8c,
+  0xf5, 0xfc, 0x5f, 0x59, 0xb9, 0x67, 0x77, 0x2f, 0x76, 0x02, 0x66, 0xe9,
+  0x1d, 0x9c, 0x2b, 0x4b, 0xb7, 0x03, 0x43, 0x0d, 0x69, 0x3a, 0xe8, 0x31,
+  0xe0, 0x32, 0xa8, 0x86, 0x45, 0x63, 0x79, 0x78, 0xd4, 0x81, 0x8a, 0x5a,
+  0x5e, 0x6e, 0xb5, 0xc5, 0xfb, 0x12, 0x60, 0x98, 0x78, 0x61, 0x6c, 0xaf,
+  0xe1, 0xe1, 0x4a, 0x69, 0x98, 0x64, 0x77, 0x6c, 0x72, 0x11, 0x11, 0x7c,
+  0x6f, 0x8b, 0x7e, 0x3c, 0x2d, 0x29, 0xbe, 0x56, 0x5b, 0xaf, 0x4d, 0x84,
+  0x50, 0x8a, 0x54, 0xdb, 0x8a, 0x36, 0x22, 0xf0, 0x63, 0x16, 0x36, 0x82,
+  0x7a, 0x08, 0x48, 0x88, 0xca, 0xc7, 0xe2, 0xab, 0xd7, 0x4a, 0x3c, 0x18,
+  0x07, 0xbf, 0x19, 0x08, 0x12, 0x6e, 0x87, 0xc7, 0x84, 0x26, 0x7a, 0x6d,
+  0xe6, 0x4f, 0xe9, 0x36, 0xd2, 0x0d, 0x91, 0x96, 0x80, 0xa2, 0x39, 0x92,
+  0x6e, 0x1e, 0xb1, 0xe9, 0x7b, 0x5a, 0x83, 0x01, 0xe9, 0x3b, 0x34, 0x1c,
+  0x58, 0x47, 0x69, 0xe1, 0xf7, 0x15, 0x0b, 0x60, 0xda, 0xc8, 0xcb, 0x09,
+  0x12, 0x7f, 0xb8, 0x96, 0x43, 0x58, 0xea, 0x4e, 0x6a, 0x87, 0x4b, 0x67,
+  0x36, 0x90, 0xf6, 0x78, 0x97, 0xcf, 0x16, 0xb3, 0x04, 0x4d, 0xf4, 0x58,
+  0x43, 0xe9, 0xcf, 0xe8, 0xce, 0xd1, 0x85, 0x05, 0x3e, 0x8e, 0xf1, 0x44,
+  0xdd, 0xbd, 0x6f, 0x03, 0xa6, 0xd8, 0xb6, 0x52, 0x11, 0x9b, 0xde, 0x61,
+  0x12, 0x78, 0x2c, 0xd4, 0xff, 0xf1, 0x1d, 0x9a, 0xbc, 0x32, 0x2a, 0xc8,
+  0x17, 0x61, 0x27, 0x52, 0x4f, 0x72, 0xb0, 0xe0, 0xc0, 0xce, 0x24, 0x9c,
+  0x6e, 0x36, 0xf1, 0xac, 0x1f, 0xde, 0x6e, 0xf0, 0x4b, 0xc9, 0x2a, 0x2d,
+  0x97, 0x51, 0x3d, 0xcf, 0xad, 0x2d, 0x7b, 0x9e, 0x86, 0xea, 0x3c, 0x97,
+  0x7c, 0x2d, 0xc9, 0xc6, 0xbf, 0x62, 0xca, 0xa9, 0xc5, 0x3c, 0xb8, 0xaf,
+  0xad, 0xa4, 0xb0, 0xfa, 0x93, 0xf9, 0xfc, 0x8e, 0xc0, 0x39, 0xc4, 0x26,
+  0x23, 0x5f, 0xaf, 0xcc, 0xb1, 0xba, 0x5f, 0x94, 0x12, 0x3c, 0x2e, 0xf2,
+  0xb6, 0xc8, 0x13, 0x14, 0x5c, 0x23, 0xcc, 0x47, 0xc0, 0x2c, 0x34, 0xfb,
+  0x34, 0x29, 0xbc, 0x7c, 0x3d, 0x4d, 0x36, 0x7b, 0x7a, 0x77, 0x17, 0x5e,
+  0x96, 0xce, 0x8c, 0x63, 0x3e, 0x34, 0xb6, 0xf1, 0x9e, 0xdd, 0x75, 0x6c,
+  0xbc, 0x41, 0x94, 0xb5, 0x4c, 0xb3, 0x4e, 0xd3, 0x51, 0xc9, 0x81, 0x23,
+  0x9e, 0xa9, 0xd4, 0x9b, 0x45, 0x75, 0x7d, 0x8b, 0x50, 0xb8, 0x4d, 0x69,
+  0x56, 0xc3, 0xcc, 0x23, 0x01, 0x11, 0x7a, 0x25, 0xfd, 0x34, 0xb8, 0x87,
+  0xca, 0x54, 0x46, 0x4d, 0xa5, 0x59, 0xd4, 0x49, 0xd2, 0x46, 0x27, 0xe5,
+  0x82, 0xa3, 0x6f, 0x59, 0x10, 0xce, 0xc9, 0x79, 0xda, 0xe9, 0x34, 0x99,
+  0xdb, 0x2a, 0x47, 0x95, 0x74, 0x3e, 0xd2, 0x75, 0xb2, 0x6b, 0xe6, 0x3f,
+  0x2f, 0x16, 0x04, 0x24, 0xf4, 0x18, 0x43, 0x75, 0x6b, 0x46, 0xa7, 0x1d,
+  0xc5, 0xca, 0xf4, 0x46, 0x11, 0x31, 0x50, 0x7b, 0x41, 0x2d, 0x3e, 0x20,
+  0xa8, 0x9a, 0x23, 0xde, 0x08, 0xff, 0x82, 0x8d, 0xe9, 0xb7, 0x1a, 0x3a,
+  0x94, 0x10, 0x70, 0x76, 0x67, 0x26, 0x9b, 0x6b, 0x32, 0x24, 0xf6, 0x5e,
+  0x70, 0xb7, 0x99, 0x40, 0x5b, 0x99, 0x4b, 0x3c, 0x02, 0x58, 0x69, 0xc9,
+  0x6f, 0x5b, 0x02, 0x06, 0x22, 0xae, 0x6c, 0xe4, 0x2c, 0x72, 0x12, 0xb3,
+  0xc4, 0x38, 0xff, 0x1b, 0x9c, 0xe9, 0x3a, 0xad, 0xa7, 0xfd, 0xbc, 0x2b,
+  0xc6, 0x8f, 0x00, 0x82, 0xb3, 0x10, 0x16, 0xbb, 0x0b, 0x4d, 0x13, 0xc3,
+  0x83, 0xe1, 0x49, 0x87, 0x3b, 0x69, 0x25, 0x03, 0xea, 0x6e, 0x5b, 0xe3,
+  0xf9, 0x0d, 0x68, 0xda, 0x34, 0x24, 0x44, 0xf7, 0x08, 0x83, 0x3c, 0x08,
+  0xb6, 0x0b, 0xda, 0xcc, 0x65, 0x55, 0x9c, 0xea, 0x7d, 0xfe, 0xba, 0x63,
+  0x83, 0x0c, 0x3b, 0xc3, 0x3c, 0x40, 0x84, 0x2d, 0xe1, 0x6a, 0x5b, 0x49,
+  0x84, 0x4c, 0x06, 0x4f, 0x6c, 0x0b, 0x72, 0xe5, 0xa1, 0xf0, 0x2f, 0x33,
+  0xbf, 0xe9, 0xc8, 0x87, 0x74, 0x09, 0x50, 0x39, 0xba, 0x7e, 0x8c, 0xf4,
+  0xc6, 0xa2, 0xd9, 0x44, 0x95, 0xac, 0xf1, 0x34, 0xa1, 0x58, 0x1a, 0xb9,
+  0xb1, 0xac, 0xa8, 0xa2, 0x36, 0x1c, 0x18, 0x84, 0x38, 0x88, 0x43, 0xc6,
+  0x62, 0x8e, 0x11, 0x5e, 0x72, 0xc5, 0x2f, 0xed, 0x81, 0xd7, 0x66, 0x57,
+  0x40, 0xe2, 0x87, 0x8c, 0x82, 0xfb, 0xfb, 0x22, 0xcf, 0x1a, 0x4e, 0x48,
+  0x1a, 0x24, 0x6f, 0x18, 0xd0, 0x24, 0x95, 0xb3, 0xb8, 0x44, 0x1f, 0xca,
+  0xf8, 0xd1, 0xa3, 0xb6, 0x03, 0x41, 0xe8, 0xc6, 0x74, 0x88, 0xce, 0xe1,
+  0x3b, 0x74, 0xfa, 0x90, 0x3a, 0x3d, 0x33, 0x07, 0x1d, 0x7c, 0x2d, 0x92,
+  0xcb, 0x07, 0x08, 0x8b, 0x84, 0xba, 0x15, 0x80, 0xce, 0x47, 0x32, 0xad,
+  0x3f, 0x85, 0x86, 0x6d, 0xaf, 0x55, 0x2c, 0x05, 0x86, 0x9e, 0x18, 0x01,
+  0x0d, 0xd5, 0xda, 0x29, 0xd2, 0xe9, 0x76, 0xdd, 0x4c, 0x48, 0xfe, 0x2d,
+  0x8a, 0x29, 0x75, 0x92, 0x9a, 0xd2, 0xc2, 0x50, 0xdd, 0xb9, 0x69, 0x62,
+  0xd4, 0x2a, 0xc1, 0x02, 0x71, 0xd4, 0x39, 0x8c, 0x4d, 0x5a, 0xdd, 0xb5,
+  0x71, 0xa5, 0xac, 0x42, 0x0a, 0x1d, 0x7f, 0xaa, 0xc8, 0xe0, 0xe5, 0x11,
+  0x63, 0x22, 0x5b, 0xeb, 0xb6, 0x2a, 0xd3, 0xff, 0x86, 0x3a, 0x64, 0x36,
+  0xda, 0xa8, 0xac, 0x95, 0xbd, 0xd4, 0x0c, 0xd2, 0xbc, 0xde, 0x3a, 0x4f,
+  0x20, 0xac, 0x7a, 0x90, 0x13, 0xa4, 0x4d, 0xd2, 0xc5, 0xe5, 0x3f, 0x1f,
+  0x24, 0x03, 0xe1, 0x37, 0xc2, 0x9a, 0xa9, 0xbf, 0x98, 0x0e, 0xc4, 0x1d,
+  0x68, 0xc7, 0x76, 0x44, 0x36, 0xa4, 0x45, 0xec, 0x09, 0x10, 0xa7, 0xc5,
+  0x8c, 0x01, 0xbb, 0x8d, 0x62, 0xa2, 0x91, 0x42, 0x56, 0x66, 0x3b, 0x2d,
+  0x24, 0xc5, 0x7f, 0x3c, 0x35, 0xb2, 0x3e, 0x62, 0x6b, 0x6a, 0x11, 0x33,
+  0x22, 0xcd, 0xea, 0x75, 0xc5, 0x69, 0xbd, 0x20, 0xdd, 0x63, 0xba, 0xa0,
+  0x6f, 0x33, 0xdf, 0x94, 0xe5, 0x3b, 0xd2, 0xcc, 0xe4, 0x28, 0x47, 0x98,
+  0x65, 0x15, 0xa1, 0x33, 0xea, 0xd1, 0xa5, 0x2d, 0xb4, 0xe4, 0xa1, 0x32,
+  0x89, 0x75, 0x29, 0xb7, 0x06, 0x4b, 0x7a, 0x47, 0x06, 0x61, 0xcf, 0xaf,
+  0x10, 0xec, 0x87, 0xca, 0x29, 0x0b, 0x43, 0xbb, 0xd3, 0x2a, 0xff, 0x9b,
+  0xc6, 0x38, 0xa0, 0xd8, 0xc5, 0xc2, 0x97, 0x8c, 0xdf, 0x37, 0xbd, 0x3d,
+  0x34, 0x61, 0x17, 0xd8, 0xe8, 0x56, 0xd1, 0xdd, 0xe3, 0xae, 0x77, 0x37,
+  0x28, 0x0d, 0xcc, 0x8a, 0x83, 0xad, 0xef, 0x2b, 0x67, 0xaf, 0xd5, 0x25,
+  0xa6, 0x74, 0x29, 0x62, 0x10, 0xdb, 0xc7, 0x14, 0x05, 0x6e, 0x95, 0x01,
+  0xfe, 0x57, 0xde, 0x87, 0xcf, 0xda, 0x35, 0x6d, 0x84, 0x00, 0xee, 0x57,
+  0x1d, 0xa8, 0xf4, 0x71, 0x27, 0x6a, 0x09, 0x1c, 0xfe, 0xff, 0xce, 0x13,
+  0x95, 0x3e, 0xee, 0x48, 0xa5, 0xad, 0x33, 0xb5, 0xa4, 0x94, 0xf3, 0xd2,
+  0x1e, 0xff, 0x86, 0xa7, 0xcc, 0x62, 0x06, 0x1e, 0x7b, 0xc6, 0x74, 0x4f,
+  0xfc, 0xdf, 0x7d, 0xca, 0x5e, 0x74, 0xb4, 0x40, 0xb0, 0x29, 0xae, 0x28,
+  0x1d, 0xe5, 0xa3, 0x2a, 0x08, 0xc3, 0x4c, 0xba, 0xd6, 0xb6, 0x25, 0x3e,
+  0x8b, 0xd7, 0x8f, 0x62, 0x06, 0x9d, 0x48, 0x18, 0x9f, 0xd1, 0x74, 0x98,
+  0x90, 0x67, 0x76, 0x39, 0x34, 0x35, 0x78, 0x65, 0xcb, 0x81, 0x8d, 0x6e,
+  0xe9, 0x47, 0x09, 0x80, 0x69, 0xab, 0x8d, 0x09, 0xef, 0x96, 0x1d, 0xd7,
+  0x95, 0xb9, 0xdb, 0xe7, 0x39, 0xab, 0x08, 0x46, 0x7b, 0xa1, 0x2c, 0xce,
+  0xaf, 0x87, 0xc3, 0xfe, 0xc1, 0xd9, 0x71, 0xf7, 0xe4, 0xb5, 0x3f, 0xa7,
+  0x95, 0xb9, 0x9f, 0x2d, 0xad, 0x24, 0xb5, 0x1c, 0x23, 0xd1, 0xfe, 0xb6,
+  0xd1, 0x74, 0xbb, 0x13, 0x7b, 0x50, 0x27, 0x2d, 0x10, 0xa0, 0xf4, 0xc8,
+  0xe7, 0x31, 0x16, 0xfe, 0x4d, 0xce, 0xe4, 0xe3, 0xb4, 0x72, 0x92, 0x5b,
+  0x78, 0x20, 0x80, 0x4c, 0x82, 0x25, 0x83, 0x38, 0x2e, 0x76, 0x5f, 0x3e,
+  0xdf, 0x35, 0xe7, 0xe2, 0x9e, 0x69, 0xe2, 0xe4, 0xe5, 0xa7, 0x83, 0x27,
+  0xdb, 0x4f, 0x07, 0x4f, 0x49, 0xaa, 0x49, 0x00, 0x03, 0x66, 0x9d, 0x34,
+  0x6f, 0xe4, 0x5d, 0x04, 0x32, 0xc0, 0xd7, 0xd8, 0xfb, 0xa3, 0xc3, 0x84,
+  0x91, 0x65, 0x20, 0x0e, 0x4b, 0x90, 0xe8, 0x42, 0x49, 0x33, 0x92, 0xff,
+  0x8c, 0xc8, 0x36, 0x09, 0x53, 0x59, 0x44, 0xde, 0xae, 0x81, 0x39, 0x16,
+  0x4c, 0x87, 0x1a, 0x13, 0x48, 0x1e, 0x2f, 0x6c, 0x47, 0x48, 0xe0, 0xb1,
+  0x5d, 0x21, 0xf3, 0x42, 0x7d, 0x0c, 0x93, 0x44, 0xbc, 0x29, 0x79, 0x24,
+  0xf1, 0x33, 0x55, 0x4f, 0x5d, 0xbe, 0x3e, 0x6a, 0xc0, 0x2c, 0x31, 0x81,
+  0x9c, 0x7b, 0x32, 0xb0, 0x74, 0x44, 0x24, 0x2a, 0x2a, 0x8e, 0xbc, 0x2c,
+  0xe3, 0x99, 0x35, 0x4a, 0x2e, 0xff, 0x3e, 0x29, 0x06, 0xbf, 0xd4, 0xa2,
+  0x8a, 0xa8, 0xc4, 0x9e, 0xe1, 0xa4, 0x5d, 0x17, 0x51, 0x26, 0xd6, 0xd2,
+  0xb2, 0x01, 0x89, 0x91, 0xd4, 0xf5, 0x05, 0xf0, 0x16, 0xa0, 0xe3, 0xcc,
+  0x36, 0x94, 0xd7, 0x94, 0x6d, 0x3f, 0xf2, 0x33, 0x6d, 0x3d, 0x92, 0x3b,
+  0x40, 0x1f, 0xe3, 0xb6, 0xaa, 0x2c, 0x9d, 0x4a, 0xaf, 0xbc, 0xef, 0x84,
+  0xbf, 0x44, 0x3c, 0x92, 0xc4, 0x6d, 0x1d, 0x62, 0xa6, 0x1c, 0x99, 0xa8,
+  0x76, 0xc1, 0x22, 0x28, 0x1c, 0x99, 0xfa, 0xbc, 0x32, 0x17, 0x4a, 0x3e,
+  0x4f, 0xa7, 0xc9, 0x23, 0xa0, 0xbf, 0xcb, 0x17, 0xff, 0x81, 0x62, 0x79,
+  0xe8, 0xbd, 0x9e, 0xce, 0x15, 0xa2, 0x4e, 0x89, 0x5b, 0xba, 0x97, 0x5e,
+  0x28, 0xe7, 0x96, 0x34, 0x46, 0x50, 0x54, 0x91, 0x67, 0x9e, 0x38, 0xeb,
+  0x46, 0xb6, 0x09, 0x06, 0xa2, 0x3e, 0xa6, 0x71, 0x39, 0x9b, 0x23, 0x5e,
+  0x80, 0x8b, 0x4e, 0x9b, 0x95, 0xcc, 0x34, 0x72, 0x88, 0x71, 0x35, 0x87,
+  0x15, 0xe2, 0x9d, 0x6b, 0x31, 0x8f, 0x1f, 0x21, 0x7b, 0x7f, 0x0b, 0x61,
+  0x48, 0x4a, 0x1c, 0x7b, 0x1a, 0x7e, 0xb9, 0x3a, 0x27, 0x53, 0x98, 0x6c,
+  0x22, 0x34, 0x2b, 0x39, 0x46, 0xca, 0x56, 0xa8, 0xe1, 0xf2, 0x88, 0x9f,
+  0x0a, 0x81, 0x31, 0x6c, 0x90, 0xad, 0xc1, 0xa3, 0xe8, 0x65, 0x3b, 0xaa,
+  0x5f, 0x48, 0x72, 0xf3, 0x7f, 0x83, 0x22, 0xf8, 0x2c, 0xb1, 0x6b, 0xf5,
+  0x18, 0x85, 0x90, 0x99, 0x98, 0xb9, 0xe8, 0x67, 0x40, 0x32, 0xe4, 0x8c,
+  0xae, 0xff, 0xa7, 0x0f, 0xfe, 0xff, 0x92, 0x3e, 0xf8, 0xcf, 0x9c, 0x52,
+  0xaa, 0x10, 0x0d, 0x1d, 0xc2, 0x3f, 0x99, 0xfe, 0x61, 0x8c, 0xe1, 0x81,
+  0xa7, 0xf7, 0x03, 0x97, 0x05, 0xf6, 0x0b, 0x8e, 0x68, 0xb8, 0x15, 0xfe,
+  0xef, 0x38, 0xa2, 0x8f, 0x3a, 0x99, 0xff, 0xcf, 0xfb, 0xf1, 0xdf, 0xed,
+  0x1c, 0xae, 0xc0, 0x7a, 0x6c, 0x9a, 0x6d, 0x76, 0x4b, 0x95, 0x0e, 0xb8,
+  0xda, 0x08, 0x6c, 0xed, 0x2d, 0xa7, 0xfa, 0x50, 0xbe, 0x0c, 0x4f, 0xdd,
+  0xf1, 0xd9, 0x77, 0xcf, 0x7b, 0x14, 0xc1, 0x1a, 0x76, 0xa3, 0x96, 0x55,
+  0x72, 0xf2, 0xe6, 0xe0, 0xec, 0x17, 0x9c, 0xf6, 0xbf, 0xc2, 0xd1, 0x3a,
+  0xcf, 0xb2, 0x49, 0x9f, 0x23, 0x24, 0xaf, 0xf0, 0x8f, 0x68, 0x4c, 0x51,
+  0x93, 0xe0, 0xb1, 0x6d, 0x29, 0x70, 0x12, 0x06, 0x6b, 0xf1, 0xb2, 0x51,
+  0x53, 0x0a, 0xa1, 0xa5, 0x98, 0xa3, 0xf6, 0x61, 0xe0, 0x65, 0x29, 0x8b,
+  0xc9, 0x96, 0xa8, 0x80, 0xfc, 0x6d, 0x6c, 0x15, 0x09, 0xb2, 0xd3, 0xf1,
+  0xbe, 0x22, 0xf2, 0x2a, 0x4b, 0xff, 0xe7, 0x3d, 0xc3, 0x40, 0xa1, 0x28,
+  0xe2, 0xe3, 0xde, 0x0d, 0x85, 0x83, 0x3b, 0x4c, 0x31, 0xf5, 0x64, 0x87,
+  0x0b, 0xdb, 0x23, 0x17, 0xf8, 0x77, 0x4c, 0x88, 0xef, 0x7e, 0x7e, 0x19,
+  0x66, 0x60, 0xe5, 0x54, 0xfa, 0x2b, 0xd1, 0x9a, 0x41, 0x8a, 0x05, 0x4e,
+  0x16, 0x55, 0x58, 0xc8, 0x2b, 0xf5, 0x67, 0x87, 0xc3, 0xe4, 0xdc, 0x5f,
+  0xfb, 0x89, 0xf6, 0x5c, 0x9a, 0xcf, 0xb7, 0xa6, 0x33, 0x02, 0x8d, 0xef,
+  0xb5, 0x20, 0x19, 0x7e, 0x97, 0x6c, 0x44, 0x70, 0x37, 0x51, 0xe7, 0x3e,
+  0x70, 0x5b, 0x82, 0x58, 0x31, 0xbb, 0x29, 0x34, 0xfd, 0xdc, 0xeb, 0x0f,
+  0x21, 0x9d, 0xca, 0xa2, 0xa9, 0x98, 0x4b, 0x59, 0x82, 0xa5, 0xb5, 0x92,
+  0x7c, 0x2f, 0xbc, 0x82, 0x8a, 0x29, 0xd7, 0x36, 0xa7, 0x59, 0x0b, 0x19,
+  0x0d, 0xf9, 0x7c, 0x67, 0xcd, 0x78, 0x60, 0x57, 0x16, 0x2c, 0x63, 0x54,
+  0xf3, 0xdc, 0xa8, 0xb8, 0x5a, 0x16, 0xd2, 0x8c, 0xb0, 0xba, 0xd7, 0x7c,
+  0xf7, 0xfe, 0x12, 0x6f, 0x85, 0x06, 0xfb, 0x97, 0xe0, 0x9f, 0x7f, 0x43,
+  0xbc, 0xe7, 0xea, 0x02, 0x44, 0x61, 0x8e, 0xb7, 0x3a, 0x64, 0xac, 0x54,
+  0x48, 0x51, 0x7c, 0x1c, 0x55, 0x48, 0xcd, 0xef, 0xf2, 0xe6, 0x9e, 0x68,
+  0x02, 0x6e, 0x05, 0x9d, 0xde, 0x95, 0xf7, 0xc3, 0x93, 0x27, 0x98, 0xd6,
+  0x8b, 0x93, 0xa1, 0x4f, 0xb7, 0x5d, 0xa3, 0x72, 0x25, 0xf2, 0x93, 0xbe,
+  0x3a, 0x3a, 0x18, 0x5e, 0x0c, 0x82, 0x21, 0x9a, 0x31, 0x86, 0xa8, 0x10,
+  0x9b, 0x63, 0x94, 0x81, 0x7c, 0x68, 0x9a, 0xde, 0x13, 0xc7, 0x9d, 0xe4,
+  0x3d, 0x51, 0xe7, 0xb8, 0x6f, 0xda, 0x3a, 0xd9, 0xb9, 0x29, 0xc3, 0x6e,
+  0x9b, 0xac, 0x0a, 0xa9, 0xa9, 0xcc, 0xdc, 0x8d, 0xf2, 0x29, 0x8d, 0xc0,
+  0xf4, 0xcb, 0x58, 0x43, 0x33, 0x41, 0x33, 0x23, 0x89, 0xb6, 0x9c, 0x12,
+  0x9e, 0x8c, 0x3e, 0xd3, 0xf6, 0x43, 0x10, 0x85, 0xa6, 0x64, 0x16, 0x2f,
+  0xcf, 0x13, 0x34, 0x5a, 0x46, 0x59, 0x67, 0xc2, 0x53, 0x46, 0x6d, 0xe8,
+  0x5c, 0x71, 0x12, 0x93, 0x4d, 0x23, 0xc0, 0x2b, 0x60, 0x59, 0x08, 0x93,
+  0xb0, 0xd2, 0xfa, 0x93, 0x42, 0xd1, 0x51, 0xda, 0x8b, 0x90, 0x33, 0x2b,
+  0x81, 0x75, 0x5d, 0x4b, 0xc8, 0x2c, 0x34, 0x52, 0x56, 0x29, 0x75, 0xa1,
+  0x6b, 0xdb, 0x7d, 0x9f, 0x13, 0xe9, 0xef, 0xd6, 0x8a, 0xf5, 0xb6, 0x11,
+  0xf2, 0x56, 0x49, 0x33, 0x6a, 0x2d, 0x5e, 0xca, 0x27, 0x19, 0x5f, 0x67,
+  0xe6, 0x12, 0x19, 0x78, 0x89, 0xd7, 0x8f, 0x9e, 0x90, 0xb5, 0x80, 0xa1,
+  0x2b, 0x32, 0x3d, 0xbf, 0x78, 0x42, 0x9e, 0x3e, 0x0d, 0x27, 0xa4, 0xca,
+  0xfe, 0x3e, 0x89, 0x91, 0x1a, 0x03, 0x1a, 0x0e, 0x5c, 0x3a, 0xe3, 0xb9,
+  0xcf, 0x99, 0x99, 0x99, 0xba, 0xba, 0x4d, 0x25, 0x50, 0x14, 0x63, 0xeb,
+  0xf8, 0xae, 0xc8, 0xc2, 0xa6, 0x10, 0x64, 0x58, 0x11, 0xb5, 0x91, 0x7c,
+  0x69, 0xf7, 0xac, 0x02, 0x9e, 0xba, 0xd9, 0xfa, 0x82, 0xf2, 0x94, 0x8f,
+  0xac, 0xd4, 0x20, 0x09, 0xdb, 0x89, 0x42, 0x1a, 0x94, 0x00, 0x66, 0x0f,
+  0x4f, 0xbf, 0x7f, 0xd9, 0xcc, 0xed, 0xc0, 0x56, 0xee, 0x8e, 0x9d, 0x60,
+  0x32, 0x94, 0xcf, 0x19, 0x63, 0xe7, 0xc1, 0xcb, 0xe8, 0x93, 0x0b, 0x48,
+  0x2c, 0xf6, 0xc2, 0xae, 0x98, 0x82, 0x00, 0x52, 0x46, 0x75, 0x3a, 0x18,
+  0x2d, 0x0a, 0x6e, 0x21, 0xa9, 0x64, 0xfa, 0xd8, 0x89, 0x08, 0x85, 0x07,
+  0xa6, 0xa5, 0x15, 0x1b, 0xb5, 0x03, 0x16, 0x09, 0xae, 0xf1, 0x51, 0x99,
+  0x02, 0xce, 0x7c, 0x02, 0xc8, 0xb8, 0x1f, 0x92, 0xff, 0x1a, 0x6b, 0xfe,
+  0x26, 0x9b, 0x22, 0x17, 0x28, 0x2b, 0xc6, 0xd5, 0xfd, 0xdc, 0x67, 0xe1,
+  0x9e, 0xfc, 0x33, 0xf3, 0xaf, 0x90, 0x7d, 0xa9, 0xaa, 0xbb, 0x6b, 0x84,
+  0xdd, 0x56, 0xa8, 0x7f, 0x51, 0xda, 0xa2, 0xca, 0x37, 0xf6, 0x4c, 0x01,
+  0x71, 0xcb, 0x31, 0x62, 0xab, 0xff, 0x92, 0x35, 0xa3, 0xd2, 0x9b, 0x79,
+  0xee, 0x98, 0x59, 0xac, 0x1b, 0xf7, 0x58, 0x80, 0xb7, 0xc8, 0x42, 0x95,
+  0x1f, 0xbd, 0xf6, 0x7b, 0x3d, 0x9e, 0xb0, 0x9b, 0xbd, 0x20, 0x97, 0x81,
+  0x44, 0xc2, 0x5b, 0xf2, 0xd2, 0xb4, 0x1d, 0xf1, 0x74, 0x60, 0xb5, 0xa0,
+  0xd1, 0x1e, 0xbb, 0xa2, 0xfc, 0x92, 0x89, 0x8a, 0x21, 0x0d, 0xf0, 0x4d,
+  0x9c, 0x16, 0x4d, 0x6f, 0xbb, 0x1c, 0xba, 0xa1, 0x11, 0xae, 0x8c, 0xde,
+  0x52, 0xdf, 0xd2, 0x68, 0x91, 0x0b, 0x43, 0x00, 0xdd, 0x80, 0xe6, 0xe9,
+  0x9b, 0xbd, 0x65, 0x9c, 0xd2, 0x03, 0xf9, 0x35, 0x72, 0x4c, 0x27, 0x54,
+  0xbe, 0xc0, 0x11, 0xde, 0x25, 0xb6, 0x72, 0x2e, 0xc0, 0x8b, 0xe4, 0xa0,
+  0x7e, 0xbe, 0xfb, 0xd9, 0xf3, 0xad, 0x55, 0xa5, 0x42, 0xa9, 0xda, 0x07,
+  0x65, 0xcf, 0xf1, 0x26, 0xa2, 0x7f, 0xed, 0x0d, 0xfc, 0x09, 0xf2, 0x4a,
+  0x12, 0x48, 0xd6, 0x69, 0x78, 0xc7, 0x99, 0x0b, 0x87, 0x36, 0x05, 0x26,
+  0x42, 0x99, 0xdb, 0xb1, 0x5d, 0x78, 0x5c, 0x64, 0xcd, 0xc8, 0x39, 0xc7,
+  0x66, 0xee, 0x9a, 0x85, 0x41, 0xb1, 0x4a, 0x98, 0x89, 0xfd, 0x27, 0xda,
+  0x07, 0xbe, 0x3f, 0xfd, 0xfa, 0x6f, 0xdc, 0x59, 0xfc, 0x7d, 0xd0, 0xfe,
+  0x97, 0x1f, 0xd0, 0x74, 0x0d, 0xfc, 0x9a, 0x55, 0x7e, 0xf2, 0x2f, 0x58,
+  0xe5, 0x27, 0xab, 0x57, 0xf9, 0xc9, 0x63, 0x57, 0xf9, 0xb3, 0x67, 0xcf,
+  0x5f, 0xfc, 0x8a, 0x55, 0xf6, 0x66, 0xf8, 0xff, 0xd8, 0x2a, 0x7b, 0x3b,
+  0xed, 0xd7, 0xad, 0xb2, 0x00, 0x43, 0x02, 0x41, 0x2c, 0xa5, 0x32, 0x08,
+  0xc2, 0x47, 0xb9, 0xee, 0x0c, 0xe1, 0xe7, 0x67, 0x2d, 0x7b, 0x6c, 0x8b,
+  0x50, 0xd8, 0x96, 0xc9, 0x22, 0x4d, 0x2c, 0x62, 0x66, 0xbb, 0xcc, 0x7b,
+  0xe8, 0xb8, 0xf3, 0x29, 0x95, 0x5b, 0xda, 0xe8, 0x6f, 0xa8, 0x83, 0x44,
+  0x33, 0x9b, 0x94, 0xb8, 0x86, 0x3f, 0x67, 0x96, 0xfa, 0x5f, 0x48, 0x7c,
+  0x14, 0xe2, 0x66, 0x3c, 0xe4, 0x53, 0x6b, 0xd2, 0x96, 0x54, 0xdf, 0x88,
+  0x26, 0xb6, 0x53, 0xc1, 0x97, 0x76, 0xc5, 0x17, 0xc6, 0x87, 0x32, 0x17,
+  0x14, 0x34, 0xe1, 0x6e, 0x65, 0x93, 0xbc, 0x06, 0x2e, 0x39, 0x48, 0x9d,
+  0xa3, 0xbb, 0x4e, 0xc0, 0x4f, 0xed, 0xb2, 0x22, 0x0e, 0x68, 0x67, 0x8b,
+  0x8b, 0x77, 0x2d, 0x96, 0xc0, 0x7a, 0x22, 0xc0, 0xa9, 0x94, 0x7f, 0xd1,
+  0x9b, 0x83, 0x6d, 0xd3, 0x37, 0x34, 0xe8, 0xc9, 0x62, 0x36, 0x57, 0x1a,
+  0x2f, 0xca, 0x6d, 0xc8, 0xb9, 0xb6, 0x38, 0x27, 0xf1, 0xc6, 0x4a, 0xf8,
+  0xa6, 0x95, 0xe7, 0x7e, 0x11, 0xdc, 0x17, 0xbb, 0x72, 0xb4, 0x72, 0x89,
+  0xe3, 0xf6, 0xe1, 0x31, 0x48, 0x0e, 0x11, 0xb2, 0x09, 0x8a, 0x2e, 0x2c,
+  0x92, 0xb3, 0x1f, 0x29, 0xd5, 0x69, 0x92, 0x8d, 0x16, 0x57, 0x9a, 0x09,
+  0x6b, 0x2b, 0x45, 0xb5, 0x17, 0x0b, 0xd9, 0x17, 0xc4, 0x8d, 0x91, 0x69,
+  0x61, 0xe0, 0x90, 0x14, 0xa0, 0xa1, 0x1a, 0x69, 0xe3, 0x55, 0xb8, 0xa9,
+  0x60, 0xe0, 0xd8, 0x03, 0xad, 0x91, 0xe3, 0x27, 0xad, 0x0a, 0x3e, 0x91,
+  0x92, 0x36, 0xfe, 0x56, 0x69, 0xc6, 0xf3, 0xfe, 0x65, 0x4a, 0xb4, 0x7a,
+  0x41, 0x2a, 0xa4, 0x60, 0x25, 0xc5, 0x89, 0x77, 0x71, 0x78, 0x96, 0xbc,
+  0x4d, 0xa5, 0xa0, 0x46, 0xb2, 0x69, 0x04, 0xd3, 0x67, 0x4f, 0x77, 0x9f,
+  0x6c, 0xad, 0x54, 0x50, 0xdb, 0x34, 0x31, 0xf8, 0x56, 0x51, 0xc6, 0x30,
+  0xab, 0x17, 0x8b, 0x0a, 0x79, 0xc2, 0x98, 0x7e, 0xf3, 0xa5, 0x8f, 0xef,
+  0x4f, 0xdf, 0x1c, 0x9d, 0x1c, 0xfc, 0xd5, 0xe6, 0x39, 0xd3, 0x24, 0x68,
+  0xaa, 0xdc, 0x47, 0x63, 0xd7, 0xdd, 0x7f, 0x34, 0xa6, 0xb2, 0xf9, 0xe5,
+  0xe6, 0x93, 0x2d, 0xca, 0xda, 0x09, 0xaa, 0xab, 0x5d, 0x65, 0xad, 0x1c,
+  0x71, 0x81, 0x10, 0xaf, 0x20, 0x3a, 0xb1, 0x9e, 0xbb, 0x9d, 0xc1, 0x9e,
+  0x90, 0xe6, 0x0b, 0xe9, 0xb7, 0x3b, 0xca, 0x1e, 0x7d, 0x7f, 0x2a, 0x4c,
+  0x48, 0x9a, 0x93, 0x1d, 0x6c, 0x8f, 0xbb, 0xf9, 0x34, 0x1f, 0xe7, 0xa4,
+  0xc6, 0xd7, 0x66, 0xd7, 0x9a, 0x3d, 0x91, 0x53, 0x7c, 0xfa, 0xb2, 0x4d,
+  0xa8, 0x86, 0x4c, 0x33, 0xfa, 0xc5, 0xea, 0x78, 0x6b, 0x5b, 0x24, 0x36,
+  0x90, 0xa1, 0xd9, 0xb4, 0xc8, 0x9a, 0xbe, 0x74, 0xec, 0x95, 0xf9, 0xf3,
+  0xf5, 0x4d, 0x3a, 0x0d, 0x92, 0x18, 0xa9, 0x38, 0x99, 0xee, 0x4c, 0x8b,
+  0x2b, 0xa4, 0x37, 0xbd, 0x82, 0x01, 0x43, 0xcb, 0x9b, 0xaf, 0x4f, 0x9a,
+  0xa3, 0x12, 0xf0, 0xe3, 0x5f, 0x5c, 0xfc, 0xf5, 0xec, 0xe8, 0xf5, 0x2b,
+  0x42, 0x25, 0x7e, 0x41, 0xb8, 0xf3, 0xba, 0x05, 0x52, 0x4c, 0xa8, 0x76,
+  0x6e, 0x30, 0x86, 0x1f, 0xde, 0x1c, 0x0f, 0xcf, 0x4e, 0x4e, 0x0f, 0x5f,
+  0xbf, 0xfa, 0x81, 0xcc, 0x2d, 0x23, 0x53, 0xef, 0xbd, 0x77, 0xed, 0xcf,
+  0x2c, 0x05, 0x78, 0x98, 0x06, 0x7f, 0xf4, 0xfd, 0xc7, 0xa3, 0xf7, 0xdf,
+  0xbd, 0x7e, 0x75, 0x93, 0x56, 0x3d, 0x1a, 0x1f, 0xbf, 0xbd, 0xa4, 0xf6,
+  0x5f, 0x6b, 0xab, 0x91, 0xde, 0x3a, 0x9a, 0x7e, 0xaa, 0xf3, 0x7f, 0x64,
+  0x89, 0x79, 0x7d, 0xba, 0x08, 0x29, 0x78, 0x2f, 0x38, 0x73, 0xd8, 0x4c,
+  0x06, 0xfd, 0x2d, 0xf9, 0xea, 0xe4, 0x5b, 0xa2, 0x79, 0xb4, 0x0e, 0xc4,
+  0x19, 0x57, 0x16, 0x49, 0xbe, 0x78, 0xb6, 0xbb, 0xb7, 0xe5, 0xca, 0xe6,
+  0x81, 0x26, 0xd6, 0xf4, 0xf8, 0x53, 0x90, 0x33, 0xf1, 0x0f, 0xa5, 0xba,
+  0xb2, 0xa5, 0x1d, 0x00, 0xec, 0xf7, 0x48, 0x19, 0xd4, 0x17, 0x83, 0x0c,
+  0x6f, 0xa6, 0x9e, 0x28, 0x49, 0x1e, 0x10, 0x5b, 0x4e, 0xe0, 0x8a, 0xba,
+  0x78, 0xeb, 0x51, 0x33, 0x7c, 0xe5, 0xb6, 0x9e, 0xe9, 0x8e, 0xb8, 0xb3,
+  0x56, 0x5e, 0x1b, 0xbf, 0x63, 0x90, 0xa3, 0x6b, 0x6b, 0x61, 0xb2, 0x8d,
+  0x29, 0x2e, 0xfb, 0x27, 0x3e, 0xcf, 0x1e, 0xfc, 0x05, 0xd9, 0x1f, 0x25,
+  0xd3, 0x89, 0x61, 0x94, 0xba, 0xf1, 0x34, 0x07, 0xf6, 0x01, 0xe7, 0x56,
+  0x3e, 0xa3, 0x9c, 0xc1, 0xac, 0x4e, 0xd4, 0xf1, 0xe1, 0xb9, 0x35, 0xa6,
+  0xd9, 0x55, 0x3a, 0xbe, 0xb7, 0xf4, 0xa8, 0x42, 0xed, 0x11, 0xc9, 0xd8,
+  0x4f, 0xc7, 0x64, 0xe5, 0x4c, 0xb3, 0xc9, 0x15, 0xc4, 0x33, 0xa7, 0xfe,
+  0x9b, 0xe3, 0x6a, 0xbd, 0x21, 0xdc, 0x35, 0x4b, 0x71, 0xa0, 0xd7, 0xe5,
+  0xf2, 0xfc, 0x16, 0x5b, 0x06, 0xad, 0xbd, 0xfb, 0x68, 0xdb, 0xa0, 0xa8,
+  0xe7, 0xca, 0x39, 0x7d, 0xda, 0x76, 0x25, 0xff, 0x03, 0x87, 0x9c, 0xd8,
+  0x63, 0xe0, 0xad, 0x7c, 0x45, 0x7f, 0x8d, 0x73, 0x48, 0xa3, 0x00, 0x0d,
+  0xec, 0x79, 0xae, 0xdb, 0xea, 0x28, 0xd7, 0x2c, 0xef, 0x97, 0xd4, 0x65,
+  0x20, 0x2a, 0xe2, 0xc6, 0xf9, 0x99, 0xe3, 0xdc, 0x4c, 0xd6, 0xdb, 0x6b,
+  0xb6, 0x27, 0x5f, 0x56, 0xb4, 0x33, 0x96, 0xb4, 0xe7, 0x65, 0x66, 0x85,
+  0xb1, 0x0b, 0x4e, 0x09, 0xa2, 0x28, 0xfd, 0x2b, 0x6a, 0x8b, 0x44, 0x22,
+  0xe9, 0x24, 0x66, 0xa6, 0xbe, 0xd0, 0x70, 0x48, 0xea, 0xb3, 0x57, 0xe0,
+  0x21, 0x66, 0x3f, 0xa8, 0xc3, 0xc4, 0x71, 0x57, 0x0f, 0x9e, 0x04, 0x27,
+  0x23, 0x17, 0x28, 0xd6, 0x64, 0x29, 0x51, 0x4d, 0x37, 0x6b, 0x55, 0xd6,
+  0x28, 0x05, 0x0a, 0xf6, 0xab, 0x23, 0x4c, 0x8c, 0x30, 0x6f, 0xf8, 0x19,
+  0x3b, 0x44, 0x9d, 0x23, 0xbc, 0x25, 0x18, 0x9c, 0xd6, 0x24, 0x40, 0xa7,
+  0x36, 0x67, 0x34, 0x98, 0x2d, 0x26, 0xb5, 0x8a, 0x92, 0x99, 0x5b, 0xe5,
+  0xb2, 0x75, 0x4f, 0x99, 0x46, 0xe9, 0x7d, 0xb9, 0xa3, 0x70, 0x2b, 0x71,
+  0x16, 0x31, 0x37, 0xeb, 0xcd, 0x48, 0x90, 0x11, 0xd2, 0x30, 0xc2, 0xbd,
+  0x7b, 0x49, 0x11, 0x25, 0xae, 0xe2, 0xca, 0xfd, 0x19, 0x55, 0x86, 0x66,
+  0x54, 0x5b, 0xda, 0xec, 0x6f, 0xd9, 0xe4, 0xdf, 0xbc, 0xb1, 0x4a, 0x5b,
+  0x84, 0x26, 0xc2, 0xd2, 0xf6, 0xda, 0x1a, 0x5a, 0xec, 0x15, 0xd4, 0x1d,
+  0x22, 0x7b, 0x82, 0x3e, 0xb6, 0xcd, 0x79, 0x5f, 0x2a, 0x84, 0xf2, 0x48,
+  0xea, 0x69, 0xd0, 0x58, 0x91, 0xdd, 0xfa, 0x8d, 0x39, 0x85, 0xdc, 0x36,
+  0xf8, 0x7b, 0x3a, 0x82, 0x8d, 0x31, 0x41, 0x49, 0x2b, 0xc9, 0xab, 0xef,
+  0x8e, 0xce, 0x87, 0xc7, 0xa7, 0xef, 0xbf, 0x88, 0xda, 0x89, 0x89, 0xfc,
+  0x36, 0xb1, 0xd5, 0x8c, 0x34, 0xd3, 0xcd, 0xd5, 0x93, 0x21, 0xef, 0x90,
+  0xba, 0x21, 0x92, 0x03, 0xca, 0xee, 0xa1, 0x07, 0xba, 0x5b, 0xa0, 0x96,
+  0x16, 0xe0, 0xfe, 0x4c, 0xab, 0x2b, 0xcc, 0x85, 0xd9, 0x8b, 0xb0, 0x69,
+  0x50, 0x2b, 0x54, 0x8d, 0x1d, 0xfb, 0xd7, 0xbd, 0x60, 0xfc, 0x71, 0xa8,
+  0x8a, 0x17, 0x29, 0x5e, 0xcc, 0x39, 0x13, 0x8a, 0x52, 0xeb, 0x99, 0x8c,
+  0xc3, 0xef, 0x5d, 0x40, 0x2a, 0x4e, 0xa5, 0x31, 0xfd, 0x17, 0xcd, 0xc3,
+  0x37, 0xbb, 0x5e, 0xf6, 0x86, 0x7d, 0x6e, 0x37, 0xf6, 0xdc, 0x6e, 0xf8,
+  0xdc, 0x5e, 0xec, 0xb9, 0xbd, 0xf0, 0xb9, 0x27, 0xb1, 0xe7, 0xbc, 0x04,
+  0x1d, 0xcf, 0x7c, 0xd5, 0x19, 0x5a, 0x65, 0x11, 0x7a, 0xeb, 0xd9, 0x2a,
+  0xa2, 0xb8, 0xe6, 0x99, 0x70, 0x9e, 0x09, 0xab, 0x16, 0xec, 0x72, 0x03,
+  0xd6, 0x87, 0xd8, 0x74, 0xfc, 0xa8, 0xe6, 0x43, 0x84, 0xd8, 0x21, 0x95,
+  0xc6, 0x08, 0x5e, 0xf3, 0xdf, 0x2f, 0xc2, 0xb4, 0xbb, 0x04, 0xd3, 0x1e,
+  0x96, 0x5a, 0x27, 0x35, 0x28, 0xa1, 0xcc, 0x10, 0x2e, 0xef, 0xdb, 0x53,
+  0x83, 0x42, 0xea, 0x88, 0xf1, 0x86, 0x5a, 0x7a, 0x7d, 0xac, 0x0f, 0xcf,
+  0xcf, 0xd6, 0x7b, 0x12, 0xcc, 0x33, 0x1f, 0xe8, 0x9b, 0x7f, 0x27, 0xd0,
+  0xb5, 0x89, 0x20, 0xff, 0xd9, 0x53, 0xc1, 0xdd, 0x70, 0x1f, 0x51, 0xdc,
+  0x25, 0xe2, 0x5d, 0xc6, 0x2f, 0x2d, 0xf6, 0x88, 0xab, 0xcd, 0xb9, 0x5a,
+  0x16, 0x46, 0x0d, 0x6e, 0x8f, 0x90, 0x11, 0x01, 0x3d, 0x47, 0x9b, 0x1a,
+  0xef, 0x9d, 0xc7, 0xd8, 0xc4, 0xdd, 0x1c, 0x74, 0xfc, 0x87, 0x65, 0xf5,
+  0x49, 0x08, 0xbd, 0xc5, 0x07, 0xca, 0xeb, 0x11, 0x54, 0x59, 0xec, 0xb8,
+  0x18, 0x48, 0x90, 0xf0, 0x0a, 0x89, 0xff, 0x45, 0x87, 0x2d, 0xb3, 0xd5,
+  0x93, 0x24, 0xba, 0x25, 0xa5, 0x04, 0xa5, 0xba, 0x1f, 0x1d, 0x29, 0x29,
+  0xe6, 0x8d, 0x56, 0x3a, 0x8d, 0x3c, 0x90, 0xaf, 0xff, 0xb4, 0xb3, 0xfa,
+  0x3a, 0x79, 0x91, 0x65, 0xb7, 0xf3, 0x4a, 0x4b, 0x04, 0xbd, 0x4e, 0x99,
+  0xb4, 0x50, 0x48, 0xbc, 0xb3, 0x1d, 0x84, 0xe9, 0x66, 0x79, 0xba, 0x89,
+  0xe6, 0xd7, 0x7b, 0x0b, 0x32, 0x50, 0xdf, 0xbc, 0x28, 0x2f, 0x6e, 0xad,
+  0x3d, 0x3e, 0xeb, 0x87, 0x07, 0xe4, 0x8f, 0x07, 0x6f, 0x47, 0xf1, 0x98,
+  0xd8, 0xc9, 0x0a, 0x58, 0x4b, 0x1e, 0x35, 0x28, 0xa5, 0x29, 0xfa, 0x75,
+  0x43, 0x12, 0xff, 0x53, 0x77, 0x8f, 0xd2, 0xc8, 0x42, 0x0f, 0xc0, 0xa3,
+  0x06, 0xda, 0x1a, 0x29, 0xc9, 0x91, 0x40, 0xfd, 0x3c, 0x19, 0x6e, 0x25,
+  0xea, 0x0f, 0x74, 0x60, 0x44, 0x1a, 0xa7, 0x27, 0x3a, 0x21, 0x2a, 0x1f,
+  0x01, 0x42, 0x14, 0x77, 0x20, 0xbd, 0xa9, 0xf4, 0xe3, 0x2b, 0x72, 0x04,
+  0x43, 0xc9, 0x42, 0xb2, 0x2d, 0xda, 0xc3, 0x88, 0xc3, 0xb2, 0xdd, 0xbd,
+  0x5d, 0xe1, 0x3d, 0xf0, 0xfa, 0xc7, 0x85, 0x72, 0x7f, 0xfb, 0x1e, 0xee,
+  0xfd, 0xea, 0x39, 0xdc, 0xfb, 0x17, 0xcd, 0xe1, 0x93, 0x5f, 0x37, 0x87,
+  0x4f, 0x7e, 0xb3, 0x39, 0x74, 0xf5, 0x4f, 0xe9, 0x21, 0x6a, 0xd9, 0x2b,
+  0x17, 0x29, 0x7a, 0x03, 0xe9, 0x01, 0xe6, 0x9f, 0x23, 0x8a, 0xea, 0x93,
+  0x07, 0xc5, 0x3c, 0x48, 0xb9, 0xb7, 0x19, 0x2a, 0x41, 0x76, 0x06, 0xec,
+  0xf8, 0x22, 0x2d, 0x71, 0x33, 0xb9, 0x1a, 0x91, 0xd8, 0x0f, 0xfe, 0x4c,
+  0x92, 0xe3, 0x5f, 0x95, 0xa4, 0x1d, 0x1b, 0x79, 0xd7, 0x4b, 0xde, 0x0f,
+  0x87, 0x1c, 0x6b, 0x1d, 0xc2, 0x5b, 0xdc, 0xb5, 0x97, 0xc8, 0xd0, 0xc4,
+  0x65, 0xb7, 0x49, 0x37, 0xcb, 0xa9, 0xe9, 0x21, 0xd4, 0x0e, 0x18, 0x00,
+  0xfc, 0xde, 0x2c, 0x1d, 0xd3, 0x8f, 0x77, 0x06, 0xbb, 0x4f, 0xec, 0x6f,
+  0xb6, 0x7e, 0x01, 0xc5, 0x87, 0x73, 0xe5, 0xc6, 0xf5, 0xaa, 0x30, 0xdd,
+  0xa1, 0xbd, 0x14, 0x77, 0xa1, 0x07, 0x9e, 0x95, 0xd8, 0x07, 0x97, 0x82,
+  0x03, 0x4d, 0x9c, 0x8f, 0xde, 0x39, 0xc1, 0xbd, 0x44, 0xf4, 0xab, 0x98,
+  0x6e, 0xf5, 0xa0, 0xc7, 0xdc, 0xf3, 0x4e, 0xff, 0x1f, 0xf3, 0x98, 0xc7,
+  0xf5, 0x9f, 0xd6, 0xbf, 0x5a, 0x69, 0xce, 0x4d, 0xd5, 0xd7, 0xa2, 0x0e,
+  0x71, 0xda, 0x48, 0x67, 0x19, 0x12, 0xc6, 0x19, 0x9c, 0x3a, 0x13, 0xde,
+  0x1f, 0x14, 0x43, 0x3c, 0x92, 0x77, 0x9d, 0x83, 0x96, 0x23, 0xd3, 0xd1,
+  0xea, 0x9d, 0xc2, 0xdc, 0xa7, 0x59, 0xe3, 0x9a, 0xb6, 0xcb, 0xa3, 0xac,
+  0x79, 0x5b, 0x2d, 0x0a, 0xfd, 0x8c, 0xcb, 0x7f, 0x05, 0x75, 0x45, 0xb0,
+  0xac, 0xe3, 0x8c, 0x69, 0x0d, 0xf2, 0x87, 0x84, 0xfc, 0xf3, 0xf6, 0x78,
+  0xd3, 0x71, 0xd6, 0x4f, 0xeb, 0x71, 0x9e, 0xc7, 0x4d, 0x31, 0xf6, 0x5a,
+  0xc2, 0xf4, 0x5b, 0xc0, 0x05, 0x43, 0x75, 0x6c, 0xc9, 0x69, 0xaa, 0x75,
+  0x22, 0x89, 0xea, 0x91, 0x13, 0xfe, 0xd9, 0x0a, 0x2c, 0x17, 0xcd, 0x15,
+  0x48, 0xdf, 0xd0, 0xd9, 0x5e, 0x60, 0xd9, 0x91, 0x63, 0x95, 0x29, 0x11,
+  0xeb, 0x71, 0x95, 0xcf, 0xc1, 0x7c, 0xe5, 0x55, 0xa4, 0xe8, 0xd9, 0x92,
+  0x8d, 0xb0, 0x95, 0xc4, 0xfd, 0xcd, 0x35, 0x0c, 0x3f, 0x04, 0x79, 0xd6,
+  0xeb, 0xfd, 0x75, 0xb2, 0x4b, 0x2d, 0x8d, 0xbf, 0x79, 0x97, 0x28, 0x0b,
+  0x99, 0xf6, 0x87, 0x5f, 0x45, 0x49, 0xdc, 0xe5, 0xe1, 0x05, 0xf5, 0x43,
+  0x99, 0x2d, 0x74, 0xaf, 0xa4, 0x78, 0x60, 0x2a, 0x56, 0xff, 0xf2, 0x88,
+  0xb9, 0x4f, 0xc9, 0x3f, 0xa2, 0x34, 0xb4, 0xd7, 0xd9, 0x1d, 0x67, 0xc8,
+  0x84, 0xda, 0xa2, 0x94, 0x60, 0xb9, 0xa6, 0xdc, 0x09, 0x3c, 0x7b, 0x30,
+  0x3c, 0x3c, 0x3e, 0x6e, 0xe5, 0xd3, 0xd0, 0xe4, 0x21, 0xc5, 0x99, 0x73,
+  0xb5, 0x6b, 0x62, 0x15, 0x23, 0xaf, 0x3b, 0xba, 0x1b, 0x23, 0x29, 0x9e,
+  0xe5, 0x57, 0xd7, 0x70, 0x9d, 0x65, 0x69, 0x9d, 0x6b, 0x1d, 0xa1, 0x54,
+  0x74, 0xa6, 0xc2, 0x74, 0x13, 0x56, 0xd2, 0xf5, 0xc2, 0x18, 0xc5, 0xbf,
+  0x3f, 0x45, 0x40, 0x1c, 0xa6, 0x2a, 0xb3, 0xc5, 0xe7, 0xca, 0x77, 0xd5,
+  0x87, 0x7b, 0x2d, 0xc2, 0x08, 0x7c, 0x56, 0x49, 0xcd, 0x18, 0xa6, 0xc1,
+  0x10, 0x4a, 0x5f, 0x2a, 0x6b, 0x4a, 0x34, 0x45, 0xdc, 0xb2, 0x19, 0xab,
+  0x7a, 0xff, 0x99, 0x2b, 0x53, 0x04, 0x49, 0xa4, 0x7a, 0xac, 0xf8, 0x41,
+  0x57, 0xe6, 0x01, 0xec, 0x76, 0xaf, 0x41, 0x7c, 0x64, 0xe5, 0x09, 0x20,
+  0xd2, 0x23, 0x9c, 0x01, 0xe9, 0x51, 0xeb, 0x14, 0xd8, 0x43, 0x40, 0x33,
+  0x60, 0x8f, 0xc0, 0xbf, 0xe8, 0x04, 0x00, 0x03, 0xec, 0xaa, 0x5f, 0x3c,
+  0x7c, 0x08, 0x60, 0x49, 0xae, 0xff, 0x69, 0x3d, 0xce, 0x19, 0xfd, 0x88,
+  0x93, 0xd4, 0x4a, 0x2e, 0xff, 0xd7, 0xee, 0xb4, 0x48, 0xb6, 0xbb, 0x27,
+  0xc4, 0xfc, 0x35, 0x5d, 0x14, 0xf9, 0x1d, 0xa0, 0xaa, 0x46, 0x5f, 0x78,
+  0x45, 0x84, 0xc9, 0x4b, 0x98, 0x80, 0x0f, 0x59, 0x7b, 0x49, 0x14, 0x79,
+  0x8b, 0x51, 0x7c, 0x30, 0x2f, 0x27, 0x93, 0x72, 0x46, 0x71, 0x4b, 0x6e,
+  0xa3, 0xe7, 0xd3, 0x31, 0x42, 0xac, 0x47, 0xe2, 0x9e, 0x45, 0xd6, 0x90,
+  0xe9, 0xb6, 0xd2, 0x35, 0xd9, 0x76, 0xf7, 0x5e, 0xa0, 0xfc, 0xca, 0x9c,
+  0xe0, 0x90, 0x2b, 0xca, 0xfb, 0xb1, 0xc7, 0xd6, 0x03, 0x1f, 0x32, 0x96,
+  0xd9, 0x1a, 0xa2, 0x1e, 0x6d, 0x75, 0xbb, 0x9c, 0x3a, 0xf8, 0xa0, 0x63,
+  0x21, 0x5a, 0x4b, 0x5c, 0xee, 0x58, 0xff, 0xf3, 0xae, 0x63, 0x09, 0xcc,
+  0xf2, 0xce, 0xff, 0x2e, 0x85, 0x79, 0x56, 0x92, 0x66, 0x33, 0xd1, 0xb9,
+  0xab, 0x87, 0xd6, 0x2a, 0x8f, 0x00, 0xae, 0x99, 0x7c, 0x4a, 0x9b, 0x7f,
+  0x5b, 0xc3, 0x53, 0xd3, 0x10, 0x55, 0xe8, 0x58, 0xf7, 0x59, 0xd4, 0x11,
+  0x84, 0x1d, 0x2e, 0x6a, 0xfa, 0x37, 0x68, 0x22, 0xa4, 0xd4, 0x5a, 0x67,
+  0x10, 0xbc, 0xfd, 0xcb, 0x68, 0xed, 0x73, 0x0e, 0x20, 0x5c, 0x53, 0x29,
+  0x46, 0xed, 0x57, 0xc5, 0x1b, 0xb1, 0x5d, 0x6c, 0x53, 0x63, 0x12, 0x1e,
+  0x93, 0x78, 0xa4, 0x1c, 0xb3, 0xe8, 0x60, 0xa2, 0x3b, 0x31, 0x71, 0x18,
+  0x65, 0x10, 0x10, 0x6f, 0x31, 0xe1, 0x0f, 0x6c, 0xe9, 0x37, 0x5e, 0x58,
+  0xaf, 0x82, 0x78, 0x10, 0xda, 0x22, 0xf2, 0x8d, 0x16, 0x22, 0x74, 0xc1,
+  0xf5, 0xa2, 0x14, 0x84, 0xbe, 0x69, 0x14, 0x71, 0x2d, 0xaf, 0x4d, 0x2d,
+  0x12, 0xe7, 0xb0, 0xab, 0xad, 0x1d, 0xb0, 0xe7, 0x2e, 0x3b, 0x4d, 0x9a,
+  0x16, 0xe1, 0x26, 0x8a, 0x24, 0xc7, 0x66, 0xaa, 0xe4, 0x54, 0xe4, 0xea,
+  0xdc, 0x52, 0xd5, 0xd2, 0x9c, 0xf0, 0xbc, 0xf0, 0xb7, 0x7b, 0xa0, 0x46,
+  0xb2, 0x6c, 0x12, 0xa9, 0x64, 0xb6, 0xb7, 0xd0, 0x58, 0x66, 0xd6, 0x47,
+  0xe3, 0x7d, 0x67, 0xe0, 0x7f, 0x87, 0x61, 0xc0, 0x5b, 0x01, 0x05, 0xf2,
+  0x7d, 0xb7, 0x34, 0xa2, 0xfd, 0x36, 0xf5, 0x53, 0xb3, 0xdd, 0xa4, 0x67,
+  0x08, 0x2d, 0x13, 0x62, 0x0c, 0x91, 0xa3, 0xf0, 0x24, 0x72, 0x95, 0x64,
+  0x58, 0x22, 0x60, 0x1f, 0xc7, 0x7d, 0x09, 0x9d, 0x44, 0x4b, 0xb0, 0x88,
+  0x48, 0x13, 0x1a, 0x30, 0xdb, 0x2c, 0x79, 0xe4, 0xc3, 0xe6, 0x78, 0x11,
+  0x23, 0x93, 0xfa, 0xd7, 0x4e, 0x3a, 0x04, 0xc9, 0xb4, 0xf0, 0x40, 0xdb,
+  0x2a, 0x25, 0x44, 0x7b, 0xee, 0x93, 0x79, 0x46, 0x89, 0xa0, 0x85, 0xdd,
+  0x33, 0x39, 0xa2, 0x37, 0xc2, 0xc6, 0xfe, 0x82, 0x56, 0x88, 0x13, 0xd5,
+  0xab, 0x42, 0x84, 0x9a, 0x9e, 0xc1, 0xce, 0x92, 0xbd, 0x27, 0x7c, 0xb2,
+  0xc8, 0x5d, 0x1c, 0x08, 0xc3, 0x3e, 0xa9, 0xed, 0xaa, 0x68, 0x26, 0xeb,
+  0x57, 0xd3, 0x72, 0x34, 0x32, 0xc3, 0x5e, 0xf7, 0xd4, 0x52, 0xf3, 0xe5,
+  0xc0, 0x11, 0xe6, 0xf7, 0xc3, 0xba, 0x64, 0x7b, 0x0c, 0x2d, 0x60, 0xdb,
+  0x0f, 0x57, 0xb2, 0x26, 0x89, 0xc8, 0xf7, 0x95, 0x86, 0x32, 0x72, 0xd3,
+  0x08, 0xf6, 0x4f, 0xb6, 0x06, 0x0d, 0xcc, 0xc3, 0x72, 0x4a, 0xce, 0x14,
+  0xfd, 0x54, 0x3b, 0x98, 0x70, 0xc1, 0xf3, 0x65, 0x40, 0x20, 0x47, 0x7a,
+  0x0d, 0xc1, 0x25, 0x55, 0x50, 0xf2, 0xb0, 0x3a, 0x39, 0xcf, 0x42, 0x7b,
+  0x40, 0xeb, 0xff, 0x49, 0x7f, 0xec, 0xf6, 0xe8, 0xbf, 0x7b, 0xff, 0xb5,
+  0x9e, 0x90, 0x15, 0xb3, 0xbf, 0xbd, 0x7d, 0x7b, 0x7b, 0x3b, 0x10, 0x76,
+  0xe7, 0x81, 0x59, 0xb2, 0xb5, 0x30, 0xab, 0x81, 0x58, 0x66, 0x96, 0x7c,
+  0xe0, 0x22, 0x59, 0xcf, 0x67, 0x57, 0x3f, 0xee, 0xf6, 0x77, 0x77, 0x76,
+  0x76, 0x7e, 0x1e, 0xcc, 0x69, 0x8a, 0x2f, 0xd1, 0xac, 0xf9, 0xaf, 0xdf,
+  0xec, 0x36, 0xf7, 0x64, 0x7b, 0x2d, 0x5e, 0x2b, 0x01, 0xbf, 0xb4, 0x19,
+  0xea, 0x05, 0x73, 0x05, 0xf3, 0x56, 0xde, 0xf7, 0xc4, 0x0c, 0x87, 0x02,
+  0xd2, 0xe5, 0x39, 0x82, 0x5c, 0xb8, 0x83, 0xfc, 0x9f, 0xcf, 0x9e, 0xec,
+  0xed, 0x25, 0xac, 0x72, 0x30, 0xf4, 0x9e, 0xe3, 0x51, 0x94, 0x75, 0x29,
+  0x05, 0x0e, 0xf9, 0x36, 0x1b, 0x13, 0xfd, 0x4c, 0xc5, 0xb5, 0xd3, 0x82,
+  0x52, 0x5a, 0x16, 0xe9, 0x81, 0x7d, 0x6b, 0xae, 0x4a, 0x42, 0x25, 0x96,
+  0x93, 0x7b, 0xd7, 0xb0, 0xd9, 0xe5, 0x15, 0x49, 0x57, 0x2a, 0x51, 0xe4,
+  0x95, 0xe3, 0x4e, 0xeb, 0x98, 0xde, 0x66, 0x61, 0xf4, 0xb8, 0xe6, 0xc0,
+  0x72, 0x56, 0xd0, 0xfc, 0xa2, 0x12, 0x06, 0x78, 0x8a, 0x16, 0x95, 0xd0,
+  0xab, 0x23, 0x56, 0x75, 0x9b, 0xde, 0xb7, 0xae, 0x7b, 0x33, 0xe3, 0xaf,
+  0xcc, 0x7f, 0x96, 0x55, 0xc6, 0x4d, 0xb1, 0x95, 0x30, 0xc2, 0x66, 0x7c,
+  0x1d, 0xd0, 0x76, 0x42, 0x80, 0x93, 0xf2, 0x7e, 0x6d, 0x46, 0x63, 0x59,
+  0x31, 0x97, 0x14, 0x9f, 0xf1, 0x72, 0x8e, 0x4c, 0xa3, 0xc4, 0x31, 0x8c,
+  0x5a, 0xae, 0x5c, 0x8f, 0x92, 0xa5, 0xe2, 0xb2, 0x22, 0x62, 0xb6, 0x66,
+  0x0b, 0x60, 0x3f, 0x79, 0xad, 0x39, 0x51, 0xe3, 0xeb, 0x6c, 0x26, 0x12,
+  0x73, 0x53, 0x51, 0x2f, 0xeb, 0xb2, 0x09, 0xd7, 0xc3, 0x4b, 0x6d, 0xfd,
+  0x52, 0x7e, 0x63, 0x06, 0xb3, 0x25, 0x39, 0x45, 0xf6, 0x9e, 0x13, 0xfe,
+  0xf5, 0xab, 0x05, 0xd9, 0x8d, 0xa3, 0x54, 0x2e, 0x14, 0xa5, 0xf7, 0x5d,
+  0x86, 0xd9, 0x22, 0xa1, 0x98, 0x55, 0xb8, 0xc7, 0xc8, 0xcd, 0xd2, 0x17,
+  0xed, 0x47, 0xae, 0x55, 0xc4, 0x08, 0xcd, 0x89, 0x7d, 0x73, 0x7c, 0x78,
+  0x81, 0x04, 0x9f, 0x1e, 0x90, 0xc0, 0x3d, 0x64, 0xf5, 0x84, 0x0c, 0xf9,
+  0x67, 0x70, 0x83, 0x60, 0xa3, 0x8a, 0x2b, 0x3c, 0x75, 0x28, 0x89, 0x0e,
+  0xe7, 0x7a, 0x2f, 0xf1, 0x78, 0x96, 0x63, 0x84, 0xf5, 0x2d, 0x3d, 0xd1,
+  0x62, 0x4b, 0x9e, 0x3e, 0x1b, 0xec, 0xf0, 0x18, 0x69, 0x0a, 0x25, 0x06,
+  0x2a, 0x38, 0x74, 0x78, 0x8b, 0x6a, 0xe1, 0xf3, 0x4b, 0x97, 0x70, 0x91,
+  0x6a, 0x77, 0x7a, 0x09, 0xd3, 0x57, 0x72, 0x9a, 0xa8, 0xfe, 0xd6, 0x03,
+  0xbc, 0xac, 0xd4, 0x4d, 0xfd, 0x7a, 0xc8, 0xb4, 0x2d, 0x3b, 0xac, 0x83,
+  0xe4, 0xd8, 0x2f, 0x6d, 0x06, 0x89, 0xe4, 0x90, 0x47, 0x4b, 0x8b, 0xa2,
+  0x2a, 0x86, 0x38, 0xaa, 0x9a, 0xac, 0xe8, 0x39, 0xc2, 0xfb, 0x92, 0x6e,
+  0x01, 0xb9, 0xb2, 0x04, 0x56, 0xdd, 0xaa, 0x12, 0x15, 0xd3, 0x50, 0x82,
+  0x5a, 0x02, 0xfd, 0xaf, 0xa4, 0xd0, 0x1f, 0x6b, 0xca, 0x31, 0x58, 0x3b,
+  0x2d, 0xe5, 0x96, 0x02, 0x95, 0xd8, 0x72, 0x55, 0x95, 0x73, 0x40, 0xde,
+  0xc0, 0x84, 0xd7, 0x5d, 0xfa, 0xcb, 0xc5, 0x1a, 0xe1, 0x6b, 0x0e, 0xca,
+  0x58, 0x64, 0x05, 0xb2, 0xb7, 0x85, 0x00, 0x83, 0x45, 0xba, 0x9e, 0x40,
+  0xda, 0x09, 0x30, 0xf7, 0xe0, 0xa0, 0x5a, 0xff, 0x9c, 0x7c, 0xda, 0xaf,
+  0x0f, 0xd6, 0x5b, 0x27, 0x32, 0x46, 0x99, 0x5f, 0xb3, 0x74, 0x6b, 0xdb,
+  0x32, 0x22, 0xd3, 0x48, 0xee, 0x67, 0x77, 0x0d, 0xdf, 0xfc, 0x97, 0x28,
+  0x7e, 0x57, 0x3c, 0xd9, 0x4b, 0xea, 0x7b, 0xa3, 0x46, 0xcc, 0xfc, 0x49,
+  0xe8, 0x56, 0x3b, 0x8c, 0xfa, 0xf1, 0x5b, 0x25, 0x42, 0x58, 0x6e, 0x7d,
+  0xa0, 0x57, 0x0e, 0xf0, 0x8a, 0x94, 0x14, 0x50, 0xc8, 0xc5, 0x23, 0x4a,
+  0x68, 0x96, 0x5a, 0xcf, 0x27, 0x19, 0x4d, 0xd3, 0xe2, 0x93, 0xad, 0xf9,
+  0xc7, 0x2d, 0xf5, 0xa8, 0x30, 0x15, 0x67, 0xc9, 0xb8, 0x1f, 0x0a, 0x06,
+  0x03, 0x37, 0x63, 0xa7, 0xb9, 0xbf, 0x2f, 0x48, 0x33, 0x9d, 0xa5, 0x15,
+  0xa5, 0x4f, 0x60, 0xce, 0x04, 0xbf, 0xb6, 0xb4, 0x4a, 0x27, 0xea, 0x39,
+  0xda, 0x82, 0x8e, 0xe1, 0x15, 0xc6, 0xf5, 0xb7, 0x99, 0xd3, 0x40, 0x41,
+  0x80, 0x4b, 0x4a, 0x51, 0xfc, 0x76, 0x11, 0xe5, 0x85, 0xae, 0x84, 0x91,
+  0xda, 0xe6, 0xbf, 0xfb, 0x1a, 0xbf, 0x58, 0x55, 0xd9, 0x1c, 0x8f, 0xdb,
+  0x62, 0x8b, 0x36, 0xe2, 0xe1, 0x57, 0xcf, 0x62, 0x05, 0xcf, 0x45, 0x59,
+  0x62, 0xc9, 0x27, 0x83, 0xe4, 0xd4, 0x19, 0x94, 0x45, 0x0f, 0x84, 0x7f,
+  0x4d, 0x35, 0x16, 0x73, 0x12, 0x7f, 0xef, 0x6b, 0x29, 0xdc, 0xd8, 0x0c,
+  0xa0, 0x9a, 0x04, 0x21, 0x5b, 0xee, 0xed, 0x35, 0xd0, 0xea, 0x5d, 0xcf,
+  0x95, 0x07, 0x9b, 0x82, 0x85, 0xa8, 0xa4, 0x7a, 0x46, 0xc2, 0x73, 0x1f,
+  0x80, 0xeb, 0x78, 0x10, 0xf1, 0x5a, 0x61, 0x1c, 0x95, 0x64, 0x09, 0xcc,
+  0xe4, 0xf4, 0xf2, 0x78, 0x2d, 0x91, 0xc8, 0xa9, 0xb9, 0x17, 0x17, 0x73,
+  0x57, 0x6b, 0x8a, 0x33, 0x50, 0xa7, 0x65, 0xd1, 0x0b, 0xb8, 0x2b, 0x28,
+  0xee, 0xc7, 0x3e, 0x27, 0x82, 0x75, 0xcc, 0xa4, 0x78, 0x60, 0x66, 0x8b,
+  0x12, 0xf1, 0x7b, 0xba, 0x37, 0xfd, 0x2f, 0x3f, 0x50, 0xe5, 0x8c, 0x69,
+  0xd8, 0x75, 0x31, 0xcc, 0x2e, 0xec, 0x71, 0x8e, 0xc2, 0x60, 0x89, 0x3a,
+  0xc3, 0xd2, 0xe0, 0x5b, 0x63, 0xc3, 0x67, 0x55, 0x69, 0x04, 0xc9, 0x77,
+  0xcf, 0x14, 0x70, 0x21, 0x55, 0x13, 0xe5, 0xce, 0x92, 0xb5, 0xbc, 0xb7,
+  0x75, 0x9c, 0xa3, 0xae, 0x14, 0x96, 0x91, 0xfa, 0xa6, 0x5c, 0x5a, 0x6c,
+  0xca, 0x15, 0xdd, 0x65, 0xa1, 0xeb, 0xcc, 0xf4, 0x91, 0x46, 0x16, 0xe2,
+  0x37, 0x5a, 0x25, 0x3e, 0xc9, 0x78, 0x30, 0xd7, 0x30, 0xe9, 0x3f, 0xe4,
+  0xf4, 0xa1, 0x12, 0x8f, 0xa3, 0x26, 0xe5, 0x0a, 0x73, 0xb6, 0xe7, 0x17,
+  0x39, 0x39, 0x06, 0x06, 0xb2, 0x25, 0xa2, 0xf8, 0x5d, 0xb9, 0xfc, 0x1c,
+  0x47, 0x66, 0x27, 0xfe, 0x47, 0xda, 0x46, 0x7d, 0x4d, 0xf7, 0x35, 0xdd,
+  0x23, 0x30, 0x06, 0xd7, 0xe2, 0x9c, 0x8f, 0x34, 0x69, 0xef, 0x2f, 0x4e,
+  0xde, 0xf5, 0x3a, 0x27, 0x21, 0x28, 0x2b, 0xaf, 0x5b, 0x53, 0x53, 0xc3,
+  0xc3, 0xac, 0x38, 0x59, 0xd8, 0x5e, 0x62, 0x01, 0xf6, 0x9c, 0x95, 0x49,
+  0x53, 0xd7, 0x93, 0x80, 0x73, 0x25, 0xd0, 0x6d, 0xb5, 0x0f, 0x79, 0x5e,
+  0x43, 0x8f, 0x27, 0x21, 0x96, 0x6a, 0xf8, 0x0e, 0x60, 0x52, 0x1b, 0xb9,
+  0x63, 0xb6, 0xa3, 0x57, 0x13, 0x25, 0xdc, 0xd7, 0x65, 0xeb, 0xd0, 0xf8,
+  0x0b, 0x46, 0xdb, 0x90, 0x29, 0x71, 0x93, 0x37, 0xe5, 0x6d, 0xd1, 0x3f,
+  0xa1, 0xfc, 0x9b, 0xe4, 0xa4, 0xbc, 0x22, 0xab, 0xe9, 0x7d, 0xdc, 0xba,
+  0xff, 0x70, 0xf6, 0x3e, 0xd9, 0x24, 0xe9, 0x9c, 0x9c, 0x59, 0xd6, 0x15,
+  0x7a, 0x74, 0x4b, 0xb4, 0xd0, 0x9a, 0x6f, 0x2e, 0xe9, 0x4d, 0x2f, 0x39,
+  0xfa, 0xe1, 0xe0, 0xdd, 0xd9, 0xc9, 0xd1, 0x4f, 0xac, 0x88, 0x06, 0xc3,
+  0xa1, 0x1f, 0x7f, 0xe9, 0x69, 0xe6, 0xf0, 0xe4, 0x53, 0x6c, 0xcb, 0xf4,
+  0xe4, 0x7e, 0x99, 0x2c, 0xe0, 0xe3, 0xa3, 0x5b, 0x70, 0x38, 0x3c, 0x3b,
+  0xee, 0x2b, 0x61, 0x0a, 0x17, 0xd2, 0xc9, 0x0b, 0x52, 0xa2, 0xf9, 0x00,
+  0x2b, 0x99, 0xf1, 0xb7, 0x61, 0xd0, 0xc2, 0x9e, 0x87, 0x5e, 0xf2, 0x5e,
+  0x19, 0x48, 0x7b, 0x58, 0x74, 0x92, 0xd2, 0x6f, 0xf2, 0x2b, 0x44, 0x1e,
+  0x3a, 0xf4, 0x27, 0x5a, 0x76, 0x7c, 0x1c, 0xe0, 0x76, 0x29, 0x43, 0xcf,
+  0x86, 0x8c, 0xea, 0x6c, 0xca, 0x4e, 0xae, 0xa5, 0x52, 0x14, 0x78, 0x2c,
+  0x5e, 0x45, 0x00, 0x42, 0x83, 0x90, 0x8a, 0x00, 0x44, 0x47, 0x56, 0xea,
+  0x89, 0xea, 0xca, 0x3b, 0x84, 0xa5, 0x87, 0xdc, 0x39, 0x56, 0x38, 0xec,
+  0x1b, 0xfb, 0x7d, 0x91, 0xec, 0xaf, 0xff, 0x8e, 0x17, 0x89, 0xef, 0x11,
+  0x8c, 0x70, 0xe2, 0xdb, 0x08, 0xab, 0xf5, 0x1f, 0x73, 0xb2, 0x32, 0xbb,
+  0x36, 0xd5, 0x31, 0x03, 0x9f, 0xa8, 0x39, 0xe9, 0xa2, 0xf6, 0x8d, 0x16,
+  0x57, 0x57, 0x91, 0x84, 0x66, 0x2a, 0x9c, 0x93, 0x65, 0xb8, 0x9e, 0x8d,
+  0x16, 0xb3, 0x51, 0x27, 0xec, 0xe7, 0x35, 0xfd, 0x5f, 0x47, 0xfc, 0x4a,
+  0xc9, 0x24, 0xca, 0xc9, 0x3a, 0x57, 0x7e, 0x65, 0x57, 0x35, 0x6a, 0xaf,
+  0x87, 0xcd, 0x31, 0x42, 0x63, 0xe3, 0x8b, 0x0d, 0xa5, 0x83, 0x36, 0x0a,
+  0x3f, 0xdf, 0xbe, 0xd0, 0x74, 0xd6, 0x59, 0xd5, 0x19, 0x71, 0x35, 0xa6,
+  0x5e, 0xb2, 0xf1, 0x6a, 0x43, 0x9e, 0x5b, 0x8f, 0x5e, 0xe4, 0xfc, 0x0e,
+  0x47, 0x82, 0x58, 0x01, 0x1e, 0x5b, 0x5f, 0x19, 0x29, 0x09, 0xf9, 0x64,
+  0x92, 0x15, 0xe2, 0x3a, 0xa1, 0x5a, 0x26, 0xc2, 0x71, 0xd4, 0x93, 0x9b,
+  0xa5, 0x7b, 0x31, 0xa1, 0xeb, 0xda, 0x73, 0xee, 0xeb, 0xc6, 0x9f, 0xb5,
+  0x07, 0x5e, 0xe1, 0x2f, 0x72, 0x5d, 0xbb, 0x22, 0x1c, 0xf2, 0xd5, 0x65,
+  0x27, 0x05, 0xf1, 0x11, 0x98, 0x50, 0xd0, 0x97, 0xd4, 0x82, 0x14, 0x49,
+  0xcd, 0x2a, 0x6e, 0xaf, 0x03, 0xc2, 0x47, 0xfc, 0x23, 0x74, 0x73, 0x35,
+  0x96, 0xd3, 0x8b, 0x5a, 0xde, 0xa8, 0x88, 0xa5, 0x9d, 0x6b, 0x73, 0x52,
+  0xc1, 0x92, 0x25, 0xdf, 0x57, 0x0f, 0xa0, 0xdb, 0x78, 0x9c, 0x4d, 0xa7,
+  0x48, 0x48, 0xb2, 0xce, 0xf0, 0x60, 0x56, 0xc0, 0x17, 0xac, 0x16, 0x40,
+  0x2f, 0xcc, 0xe7, 0xe6, 0x0a, 0x12, 0x4a, 0x20, 0x6d, 0xa3, 0x14, 0xed,
+  0x98, 0x9a, 0x22, 0x19, 0xa3, 0x4c, 0xb2, 0x5e, 0xba, 0x49, 0xbb, 0xbc,
+  0x88, 0xf8, 0x3c, 0x41, 0xb1, 0x1b, 0x8d, 0xbb, 0x8a, 0xda, 0x4d, 0xf3,
+  0xe4, 0x26, 0x2a, 0xc8, 0x01, 0x71, 0x5e, 0x73, 0x3f, 0x40, 0x13, 0xe2,
+  0x9b, 0xa2, 0xee, 0xf3, 0xef, 0xe4, 0x54, 0x45, 0xf0, 0x94, 0x6f, 0x24,
+  0xc0, 0xd2, 0xaa, 0x24, 0xcf, 0x39, 0x01, 0xec, 0x5e, 0x12, 0x4d, 0x56,
+  0xc3, 0xb8, 0x1a, 0x51, 0xce, 0xe1, 0x05, 0xae, 0x07, 0xd1, 0xea, 0xb0,
+  0x15, 0xdc, 0xa7, 0x45, 0xa6, 0xb7, 0x3a, 0xbb, 0x61, 0x11, 0x70, 0xd1,
+  0xf7, 0x4b, 0x61, 0x98, 0xea, 0x79, 0x11, 0xe2, 0x48, 0x08, 0x0e, 0xf7,
+  0xc7, 0x13, 0x5b, 0xd2, 0xd8, 0x3c, 0x5a, 0xa5, 0x15, 0x57, 0x95, 0x2b,
+  0x3e, 0x29, 0xa2, 0x86, 0x1a, 0xcf, 0xee, 0xb2, 0xf1, 0xa2, 0x69, 0x63,
+  0xdd, 0x7d, 0xe5, 0x4b, 0x79, 0xce, 0xd1, 0xad, 0x4d, 0x1c, 0x05, 0x35,
+  0x5a, 0xce, 0x34, 0x33, 0x7d, 0x7f, 0x7d, 0x4b, 0xc2, 0x7d, 0x14, 0x06,
+  0xb2, 0x09, 0xeb, 0xb1, 0x38, 0x9e, 0xf6, 0xb9, 0xca, 0xd8, 0xef, 0xe6,
+  0x42, 0xda, 0xd1, 0xcf, 0x73, 0x59, 0xe6, 0xc8, 0xb7, 0xdf, 0xb2, 0x87,
+  0xc6, 0xfb, 0xb4, 0x2d, 0xe5, 0x23, 0xce, 0x9b, 0x3a, 0x38, 0xca, 0xc1,
+  0x97, 0x51, 0x55, 0x6f, 0x90, 0x1c, 0xd8, 0x8a, 0x98, 0xfa, 0xaa, 0xce,
+  0x7f, 0xe0, 0x34, 0x3b, 0x3e, 0xbb, 0x79, 0xee, 0xf9, 0x3c, 0xe9, 0xce,
+  0xc3, 0x8f, 0xac, 0xc4, 0x0f, 0x46, 0xf1, 0xa9, 0x1a, 0x3d, 0x35, 0x7f,
+  0x7c, 0x4b, 0x7f, 0x90, 0x58, 0x25, 0x13, 0x93, 0x69, 0x65, 0xd8, 0x5b,
+  0x17, 0x6e, 0x6d, 0x4a, 0x0a, 0x94, 0x3f, 0x64, 0xd1, 0x81, 0x65, 0xa6,
+  0x94, 0x04, 0x22, 0xa1, 0x71, 0x7c, 0x00, 0x50, 0x7e, 0xb5, 0x9d, 0x9e,
+  0xa6, 0x09, 0xc5, 0x71, 0x9e, 0xe0, 0x4c, 0x61, 0x4e, 0x92, 0x1e, 0x3c,
+  0x13, 0x43, 0x16, 0xe4, 0x65, 0x2c, 0x51, 0xc4, 0x4c, 0xd5, 0x3f, 0xc8,
+  0xa1, 0xad, 0x65, 0xb4, 0x51, 0xd3, 0x75, 0x66, 0x81, 0xc1, 0xa6, 0x33,
+  0x5e, 0xdc, 0x9f, 0x7d, 0x98, 0x74, 0xcc, 0x58, 0x9c, 0x85, 0x98, 0x2b,
+  0x4b, 0x15, 0xb3, 0x6c, 0xc8, 0xb8, 0xdc, 0xe5, 0x8f, 0x90, 0x76, 0x6d,
+  0xf9, 0x7b, 0x6f, 0x90, 0x26, 0x25, 0x07, 0x9e, 0x8f, 0xc2, 0x82, 0x8b,
+  0xde, 0xea, 0x62, 0xbb, 0x0c, 0x4a, 0x7e, 0x58, 0x6c, 0x45, 0x56, 0x4c,
+  0x96, 0xf4, 0x93, 0xaa, 0x27, 0x32, 0xf1, 0x34, 0xa4, 0xc2, 0x27, 0x8d,
+  0x68, 0xce, 0xb2, 0x19, 0x05, 0x48, 0xec, 0xbd, 0xc8, 0x34, 0x16, 0xec,
+  0x12, 0xa0, 0x8f, 0xf5, 0xe3, 0xcd, 0x4d, 0x48, 0x7f, 0xa3, 0x2b, 0x96,
+  0xb1, 0x3c, 0x7f, 0x08, 0xa2, 0x62, 0xf5, 0x7d, 0x31, 0xbe, 0x7e, 0xf3,
+  0x7e, 0x18, 0x7f, 0x3d, 0x1c, 0x1c, 0x9e, 0x37, 0x7a, 0x08, 0x6d, 0x06,
+  0xa9, 0x2c, 0x0c, 0x16, 0x27, 0xa3, 0xe4, 0x1d, 0x78, 0xbf, 0x8b, 0x37,
+  0xd7, 0x7a, 0xc1, 0xfa, 0x8b, 0x48, 0xb1, 0x60, 0x21, 0x2e, 0x9a, 0x27,
+  0xf0, 0xe6, 0xfd, 0x94, 0x8e, 0x02, 0xea, 0xfd, 0x04, 0x0a, 0xb4, 0x3d,
+  0xd3, 0x14, 0x55, 0x40, 0x61, 0x4f, 0x34, 0x59, 0x79, 0x68, 0xa4, 0xee,
+  0xbe, 0x06, 0xe9, 0xbc, 0xfe, 0xf1, 0x4b, 0x96, 0xf9, 0x84, 0x2a, 0xc3,
+  0x46, 0x82, 0x50, 0xfe, 0x0c, 0xb5, 0x60, 0x23, 0x5e, 0x8c, 0xd0, 0xec,
+  0xd5, 0x29, 0xbd, 0xce, 0xdb, 0xb4, 0x27, 0xbb, 0x15, 0x3f, 0xaa, 0x96,
+  0x0d, 0xc9, 0x4c, 0xca, 0xde, 0xd7, 0x5f, 0x85, 0xb7, 0xe7, 0x9b, 0xf7,
+  0x4b, 0x3e, 0x47, 0xbf, 0xe9, 0x6b, 0xda, 0x80, 0x68, 0x04, 0x9e, 0x4a,
+  0x1f, 0xce, 0x45, 0x9c, 0xe0, 0xb4, 0xfd, 0xcb, 0x87, 0xa4, 0x84, 0x79,
+  0x42, 0xfe, 0x58, 0xf9, 0xa0, 0xc0, 0x56, 0xe3, 0x9f, 0x22, 0x3c, 0xeb,
+  0x26, 0xa3, 0xbd, 0x92, 0x73, 0x0e, 0xf6, 0x9d, 0x89, 0x26, 0xbc, 0x15,
+  0x59, 0xa2, 0xa5, 0x70, 0x63, 0x67, 0x06, 0x25, 0x31, 0x52, 0x06, 0x92,
+  0x0b, 0x7b, 0xfc, 0xc7, 0xf6, 0x9e, 0x85, 0x30, 0xd9, 0xdc, 0x0f, 0x1c,
+  0x52, 0x73, 0x81, 0x87, 0x0a, 0x42, 0x91, 0xdf, 0x0d, 0x11, 0x77, 0x5e,
+  0xb2, 0x9b, 0x11, 0xa0, 0xe6, 0xc8, 0xb4, 0x9d, 0x03, 0xea, 0xa8, 0x6a,
+  0x62, 0xd1, 0x9e, 0x0c, 0xd9, 0xc9, 0xf3, 0xd0, 0x66, 0xca, 0x23, 0xa8,
+  0xab, 0x55, 0xcc, 0x53, 0xef, 0x8c, 0x92, 0x44, 0x97, 0xeb, 0xc3, 0xc7,
+  0xd8, 0xee, 0x1b, 0xfb, 0x4e, 0xb2, 0x39, 0x32, 0x37, 0xb6, 0x97, 0x49,
+  0x4e, 0xf2, 0xe6, 0x29, 0x50, 0xda, 0xf1, 0xe6, 0x9e, 0xbd, 0x78, 0xf6,
+  0x74, 0x6b, 0x4b, 0x81, 0xcc, 0x0c, 0xa2, 0x18, 0x51, 0xa2, 0x41, 0x4e,
+  0x72, 0xab, 0x66, 0x65, 0xd6, 0x4c, 0xf0, 0x35, 0x7c, 0xaf, 0x9e, 0x23,
+  0x26, 0xde, 0x1c, 0xdd, 0x63, 0xfa, 0x2a, 0x2d, 0x22, 0x99, 0xe0, 0x90,
+  0xe8, 0xd6, 0x0c, 0x4e, 0x55, 0x26, 0xd6, 0xce, 0x33, 0xbf, 0x54, 0x2a,
+  0x20, 0x96, 0xe4, 0xfc, 0x50, 0x5c, 0x44, 0x1c, 0x62, 0x54, 0x6f, 0xda,
+  0x10, 0x15, 0x78, 0xc6, 0xd7, 0x1e, 0xfd, 0x41, 0xfb, 0xf9, 0x5a, 0x4b,
+  0xb9, 0x9d, 0x2d, 0x46, 0x53, 0x73, 0x03, 0x0d, 0xa9, 0x18, 0xea, 0x5d,
+  0x72, 0x92, 0x4b, 0x55, 0x44, 0xb1, 0x15, 0x14, 0x48, 0xb7, 0xec, 0xce,
+  0xe1, 0x81, 0x23, 0xdd, 0x16, 0x5b, 0xad, 0x85, 0x0b, 0x77, 0xc9, 0x5a,
+  0xac, 0xb7, 0xad, 0xcf, 0xf9, 0x5b, 0xf5, 0xe2, 0xb2, 0xbf, 0x6c, 0x60,
+  0x77, 0x59, 0xed, 0x99, 0x71, 0xfd, 0x5b, 0x52, 0x10, 0x91, 0x2d, 0x4e,
+  0xae, 0xe9, 0xe4, 0x15, 0xab, 0x82, 0xcb, 0xab, 0x92, 0x69, 0x7a, 0xa2,
+  0xaf, 0x34, 0x42, 0xff, 0x86, 0x1b, 0x37, 0xbd, 0xa4, 0x5c, 0x2a, 0x46,
+  0xd5, 0x4d, 0x33, 0x14, 0x04, 0x26, 0x41, 0x16, 0x40, 0xa2, 0x6d, 0x61,
+  0x65, 0x31, 0xef, 0x13, 0xf1, 0x52, 0x88, 0x4f, 0x16, 0x78, 0xa9, 0x14,
+  0x0c, 0x00, 0xf0, 0xd6, 0x70, 0xe2, 0x39, 0xbb, 0x86, 0xcd, 0x00, 0x26,
+  0x31, 0x0b, 0xac, 0xed, 0xb4, 0xd7, 0xf4, 0xc7, 0x9a, 0xdd, 0x5a, 0xf2,
+  0x95, 0xd0, 0xc9, 0x12, 0xab, 0x16, 0x37, 0x35, 0x93, 0x41, 0xc6, 0x6b,
+  0xb2, 0xce, 0xfd, 0xa1, 0xe4, 0x03, 0xba, 0x43, 0x34, 0x22, 0x0a, 0x44,
+  0x8d, 0x6a, 0xf8, 0xac, 0x23, 0x4b, 0xfb, 0xb0, 0xbd, 0xd3, 0x58, 0x01,
+  0x77, 0xd6, 0xf9, 0xbe, 0x54, 0x60, 0xce, 0xba, 0xc6, 0x73, 0x5b, 0xc6,
+  0xbd, 0x6d, 0xce, 0xce, 0x4a, 0x24, 0x07, 0x92, 0x83, 0xdc, 0x28, 0xc9,
+  0x48, 0xab, 0x66, 0x1a, 0xed, 0xaf, 0xc7, 0x15, 0x5f, 0x3b, 0x07, 0x60,
+  0x50, 0x87, 0x15, 0xda, 0xb2, 0xd0, 0xf4, 0x2b, 0x6a, 0x90, 0x13, 0x28,
+  0xb7, 0xc9, 0x9b, 0x45, 0x28, 0x1d, 0x25, 0xea, 0x87, 0x8c, 0x51, 0x78,
+  0x9a, 0x69, 0x25, 0x5c, 0x5a, 0x27, 0xcc, 0x31, 0xc2, 0xef, 0x51, 0xe1,
+  0xa3, 0x3a, 0xb1, 0xa7, 0x19, 0xb9, 0x70, 0xd3, 0xf2, 0x36, 0xc0, 0xf5,
+  0x92, 0x3b, 0xd5, 0xf5, 0xae, 0x9d, 0x8c, 0x61, 0x1a, 0xf8, 0xd3, 0x7f,
+  0xea, 0x2f, 0x3f, 0xd2, 0x64, 0xfd, 0x97, 0x4e, 0x96, 0x74, 0x3b, 0x0d,
+  0x12, 0x17, 0x61, 0x07, 0xff, 0x09, 0x93, 0xf2, 0x37, 0x42, 0xa9, 0xf0,
+  0xcc, 0x98, 0x2e, 0xcf, 0xd0, 0xdc, 0x9f, 0x06, 0x56, 0xdf, 0xd5, 0x26,
+  0x28, 0x0d, 0x8b, 0xad, 0xfa, 0xd1, 0x7d, 0xe0, 0x3b, 0xa2, 0x3d, 0xf8,
+  0x53, 0xd1, 0x03, 0x2b, 0xa0, 0x31, 0xbd, 0x28, 0x6f, 0x9a, 0x4b, 0x5b,
+  0xf1, 0x32, 0xfe, 0x54, 0x09, 0x03, 0x80, 0x31, 0x3a, 0x4c, 0xc7, 0xc9,
+  0x20, 0xe3, 0x9f, 0x87, 0x16, 0x00, 0x21, 0x68, 0xf6, 0xb1, 0x1a, 0x7f,
+  0xea, 0xd7, 0xf7, 0xb3, 0x51, 0x39, 0x95, 0x8d, 0x4e, 0xc3, 0x35, 0x7d,
+  0xd6, 0x9f, 0xf1, 0xb2, 0x20, 0xda, 0xd1, 0xf7, 0xb2, 0x78, 0x7b, 0x51,
+  0xe6, 0x62, 0x32, 0x51, 0xca, 0xf1, 0x18, 0xe9, 0x34, 0x84, 0xec, 0x36,
+  0xdb, 0xfd, 0x4f, 0x09, 0xc3, 0x73, 0x10, 0x8c, 0xe3, 0x12, 0x4d, 0x13,
+  0x0d, 0x7e, 0x8a, 0xa3, 0x76, 0x69, 0x16, 0x4b, 0x74, 0xf3, 0x78, 0xab,
+  0x63, 0x6d, 0x8b, 0x58, 0x06, 0x34, 0x9d, 0x50, 0xd3, 0xd1, 0x8f, 0xc8,
+  0x9a, 0x91, 0x7d, 0x77, 0xc8, 0x3f, 0xeb, 0x5f, 0xe0, 0x67, 0x8a, 0x45,
+  0x90, 0x8c, 0x3b, 0x8a, 0x6e, 0x4b, 0x4a, 0x1c, 0xf9, 0x28, 0xe3, 0x52,
+  0xaa, 0x0d, 0x70, 0x42, 0x25, 0xcd, 0x22, 0xbc, 0xaf, 0xf4, 0x30, 0x7d,
+  0x64, 0xda, 0x01, 0x63, 0xf3, 0xaf, 0x6e, 0x0d, 0x1c, 0xf0, 0xd3, 0x26,
+  0x9f, 0xa5, 0x02, 0x09, 0x62, 0x0c, 0x90, 0xdd, 0xc6, 0x4a, 0x9a, 0x01,
+  0x84, 0xa8, 0xd9, 0x6f, 0x83, 0x87, 0x9a, 0xa3, 0x0b, 0x51, 0x01, 0xee,
+  0x82, 0x9e, 0x20, 0xdf, 0x93, 0xb9, 0x72, 0xf4, 0xfe, 0x6d, 0xca, 0x29,
+  0xc3, 0x36, 0xa8, 0xe5, 0x07, 0xc6, 0x5a, 0x6a, 0x9e, 0xaa, 0x78, 0x94,
+  0x38, 0xe4, 0x73, 0xda, 0x4b, 0x5c, 0x84, 0x50, 0xa1, 0x51, 0x09, 0x05,
+  0x13, 0x57, 0x37, 0x67, 0x23, 0x8d, 0xd6, 0xbd, 0x7f, 0x4c, 0x9e, 0x2e,
+  0xc4, 0x85, 0x17, 0xec, 0x23, 0xcb, 0x29, 0x25, 0x61, 0x46, 0x5e, 0xcd,
+  0x48, 0xac, 0x2e, 0x89, 0x88, 0x58, 0x04, 0x98, 0xfe, 0xc3, 0x8b, 0x58,
+  0xb2, 0xe3, 0xa7, 0xef, 0x45, 0x2a, 0x07, 0x5a, 0x3d, 0x79, 0x75, 0x73,
+  0xcb, 0x4b, 0x39, 0x5f, 0x36, 0xf3, 0x8f, 0x28, 0x6c, 0xfa, 0x91, 0xb0,
+  0x7e, 0x58, 0x33, 0xf5, 0xb9, 0xe3, 0x07, 0x98, 0x59, 0xce, 0xf1, 0x5b,
+  0xcc, 0xa9, 0x1d, 0x6c, 0xf2, 0x69, 0xc9, 0x06, 0xcd, 0x43, 0xc3, 0x68,
+  0xa3, 0xea, 0xfc, 0x5c, 0xf2, 0xcd, 0x76, 0x95, 0x90, 0xa7, 0x41, 0xc7,
+  0x28, 0x88, 0xff, 0x11, 0xd1, 0x3f, 0xbb, 0x99, 0xcc, 0x75, 0x93, 0x55,
+  0xf9, 0xd8, 0x2f, 0x99, 0x85, 0x07, 0xb0, 0xa5, 0x98, 0x3b, 0x8a, 0xc2,
+  0x81, 0x51, 0x92, 0xbc, 0xce, 0xff, 0xc1, 0x3b, 0x2a, 0x15, 0xc2, 0xc8,
+  0xed, 0x67, 0x41, 0x63, 0x89, 0xc4, 0x6b, 0x09, 0x9d, 0xe0, 0xa2, 0xb8,
+  0xc7, 0x0f, 0x8c, 0x13, 0x2c, 0x9c, 0x7b, 0x18, 0xab, 0x51, 0xcf, 0xd2,
+  0xda, 0x76, 0x90, 0x47, 0x60, 0x6b, 0xd3, 0x72, 0x80, 0xe4, 0x3a, 0x20,
+  0x3a, 0x0c, 0xcf, 0x21, 0xc3, 0x78, 0xe8, 0xd6, 0x1f, 0x2c, 0x99, 0x19,
+  0x86, 0x5f, 0x8a, 0x0c, 0x70, 0x53, 0xc3, 0x53, 0x22, 0x7a, 0x4e, 0x77,
+  0x52, 0x62, 0xb8, 0xc1, 0xa4, 0x8b, 0x89, 0x57, 0x92, 0x94, 0x4d, 0x76,
+  0x6d, 0xa7, 0x42, 0xaa, 0xbc, 0x25, 0xd8, 0x30, 0xd5, 0x91, 0x94, 0x57,
+  0xe5, 0xa1, 0xe6, 0x20, 0x86, 0x3a, 0x0b, 0xbe, 0xb7, 0x6c, 0xc1, 0x55,
+  0xa1, 0x95, 0x61, 0xd1, 0xcf, 0xac, 0x53, 0xc3, 0x1f, 0x54, 0x62, 0x65,
+  0xd0, 0xf4, 0x3e, 0x89, 0x12, 0xb1, 0x76, 0xfe, 0xcf, 0xff, 0xfc, 0xb3,
+  0x58, 0x8d, 0x71, 0xa0, 0x31, 0x3f, 0xe6, 0x73, 0x4f, 0x78, 0x79, 0xf5,
+  0x86, 0x2d, 0xc2, 0x8b, 0x41, 0x9b, 0x74, 0x22, 0x3c, 0xd8, 0x17, 0x9d,
+  0xf2, 0x87, 0xa6, 0x61, 0x8c, 0x5c, 0xcc, 0x84, 0x4d, 0x67, 0x8f, 0xac,
+  0xad, 0xaf, 0x5a, 0x92, 0x18, 0xd2, 0xc7, 0x67, 0xa8, 0xa5, 0xbc, 0xba,
+  0x39, 0xb8, 0x90, 0x5a, 0x65, 0xda, 0x5f, 0x2e, 0x1d, 0x12, 0xec, 0x10,
+  0x1d, 0x12, 0x77, 0xdf, 0x27, 0x63, 0x16, 0x7c, 0x3d, 0x03, 0x58, 0xda,
+  0xdd, 0x5c, 0xdd, 0x07, 0x6f, 0x0c, 0x0f, 0xf6, 0xc4, 0x7c, 0xeb, 0xa3,
+  0x25, 0xf3, 0x34, 0xd7, 0x34, 0x7f, 0x9a, 0xbe, 0x6d, 0xf4, 0x02, 0x47,
+  0xf3, 0x89, 0x3a, 0xa3, 0xb2, 0x53, 0xb9, 0x2b, 0x71, 0x7d, 0x36, 0x89,
+  0xa8, 0xb7, 0x9d, 0xfd, 0xf5, 0x24, 0xda, 0x07, 0x2d, 0x5a, 0x56, 0xdb,
+  0x3e, 0x98, 0x2e, 0xb8, 0x1f, 0xca, 0xfe, 0xa2, 0x4b, 0xd0, 0x1c, 0x1b,
+  0x29, 0x25, 0xa8, 0x8c, 0x3c, 0xbf, 0x6e, 0x9f, 0x87, 0xfd, 0xc0, 0x61,
+  0xfa, 0x58, 0xd7, 0x53, 0xda, 0xec, 0xf9, 0xe5, 0xbd, 0xe9, 0x54, 0xbd,
+  0x34, 0xdb, 0xda, 0xbf, 0x4b, 0xf9, 0x39, 0x5d, 0x30, 0xcf, 0xb2, 0xdc,
+  0xa8, 0xe1, 0xfc, 0x9b, 0x67, 0x84, 0x66, 0x60, 0x22, 0xc9, 0x07, 0x66,
+  0x0c, 0x3c, 0x93, 0xf8, 0xbc, 0x0b, 0x88, 0x89, 0x0c, 0xb5, 0x7a, 0xc3,
+  0x80, 0x6a, 0x78, 0xc2, 0x68, 0x7a, 0x70, 0xf0, 0xad, 0x96, 0xa8, 0x11,
+  0x17, 0x03, 0x6e, 0x4f, 0x08, 0xa5, 0x6f, 0x05, 0x13, 0xa2, 0xf3, 0xff,
+  0x91, 0xc5, 0x0a, 0x02, 0xb7, 0x5a, 0xa5, 0xd3, 0x56, 0xa2, 0x4d, 0x65,
+  0x77, 0x68, 0xe8, 0xb5, 0x7f, 0x42, 0xf7, 0xe2, 0x34, 0xc2, 0x93, 0x99,
+  0x84, 0xc8, 0x05, 0xae, 0x8b, 0x00, 0x50, 0xab, 0x5b, 0xec, 0x4d, 0xc2,
+  0xbb, 0xd0, 0xb7, 0xb8, 0x7a, 0x2c, 0x7e, 0xb1, 0xdc, 0x17, 0xe9, 0x08,
+  0xa1, 0x9a, 0x2d, 0x8b, 0xe5, 0x51, 0xad, 0x4d, 0x20, 0x0b, 0x60, 0x74,
+  0xc2, 0x1d, 0x30, 0x26, 0x0a, 0x71, 0xe0, 0x76, 0xd2, 0x87, 0xb6, 0x8d,
+  0x90, 0x88, 0x71, 0x69, 0x0d, 0x98, 0x3a, 0x57, 0x20, 0xbb, 0x28, 0x3b,
+  0x5b, 0xc9, 0xdc, 0x2f, 0x91, 0x99, 0xa3, 0x7b, 0xd5, 0x0a, 0xad, 0x0b,
+  0x77, 0xd5, 0xb6, 0x45, 0xd7, 0x3f, 0x7d, 0xc0, 0x97, 0x08, 0xa9, 0x8e,
+  0x1c, 0x7a, 0xe8, 0x8e, 0x8c, 0x8a, 0x06, 0x19, 0x83, 0x4a, 0x29, 0x6f,
+  0x0c, 0xcb, 0xa4, 0xd4, 0xef, 0x25, 0xa4, 0x04, 0x4c, 0xd8, 0xb2, 0xe9,
+  0x80, 0x2e, 0x93, 0x5f, 0x6c, 0xd6, 0x8e, 0x6f, 0x8f, 0xb2, 0x8f, 0x26,
+  0xd6, 0xb3, 0xbe, 0x15, 0xe3, 0x1e, 0xe9, 0x6a, 0x74, 0x66, 0x07, 0xfb,
+  0x97, 0x16, 0xe2, 0xb6, 0x0f, 0x9e, 0x0d, 0x22, 0x6f, 0xf9, 0x68, 0x89,
+  0x9f, 0x39, 0xc2, 0x81, 0x6a, 0xa7, 0xae, 0x44, 0x39, 0xd3, 0xf0, 0xf0,
+  0xf9, 0x25, 0xc9, 0xa5, 0x4f, 0x47, 0x9c, 0x59, 0x68, 0x4d, 0x83, 0xa5,
+  0xab, 0x5a, 0xd3, 0xa4, 0x2b, 0xdb, 0x14, 0x62, 0x8e, 0x0f, 0x9c, 0x34,
+  0x22, 0x54, 0x8b, 0x7e, 0x51, 0x0f, 0xb1, 0xcc, 0x29, 0x7f, 0x72, 0xc5,
+  0x08, 0x3c, 0xd3, 0x79, 0xf5, 0x17, 0x7d, 0x11, 0x11, 0xff, 0xb4, 0xa0,
+  0xa9, 0x93, 0xc7, 0x4d, 0xdd, 0x52, 0xc8, 0x3a, 0x38, 0xaf, 0xdd, 0x3a,
+  0x50, 0x5b, 0x29, 0x45, 0xdc, 0xaf, 0x3c, 0x56, 0x6e, 0x66, 0x4a, 0x77,
+  0xe6, 0x8d, 0x91, 0x9d, 0xf5, 0xa2, 0xe2, 0x5a, 0xb4, 0x0f, 0xab, 0x7b,
+  0xea, 0xc1, 0xb1, 0xed, 0x11, 0xdd, 0x52, 0x9b, 0x2e, 0x7c, 0x49, 0xaf,
+  0xec, 0x10, 0x31, 0xb9, 0xda, 0x2d, 0xc5, 0x91, 0xff, 0x46, 0xbd, 0xe2,
+  0xd6, 0x1e, 0xd3, 0xa7, 0x7f, 0xf6, 0x5e, 0xeb, 0xde, 0x64, 0x4c, 0x89,
+  0xac, 0x37, 0xcc, 0xa3, 0x84, 0xfd, 0xea, 0xab, 0xac, 0x75, 0x5b, 0x3d,
+  0x7c, 0x66, 0x97, 0x5d, 0x65, 0xbb, 0x31, 0x11, 0x42, 0xd2, 0xe1, 0x63,
+  0x3a, 0x9f, 0x8b, 0xd8, 0x79, 0x78, 0xec, 0x4c, 0x68, 0xc3, 0x95, 0xbd,
+  0x88, 0x5b, 0x5e, 0x6a, 0x72, 0x37, 0x65, 0xf9, 0x29, 0x11, 0x68, 0x09,
+  0x03, 0xac, 0x28, 0x94, 0xb9, 0xba, 0x39, 0xae, 0x01, 0xcd, 0x8f, 0x13,
+  0xab, 0xef, 0x70, 0xf8, 0xcd, 0x76, 0xd6, 0x8c, 0xad, 0x0c, 0xdc, 0x76,
+  0xa0, 0x29, 0x36, 0xcb, 0x1e, 0xba, 0x99, 0x20, 0x84, 0x51, 0xe2, 0x83,
+  0xe6, 0xc1, 0xba, 0x18, 0x1f, 0x3b, 0x0d, 0x6d, 0x0b, 0xe5, 0x77, 0x1a,
+  0x28, 0x11, 0x02, 0x26, 0xf6, 0x4b, 0x5c, 0x46, 0x36, 0x6b, 0xf5, 0x7d,
+  0xf3, 0xa1, 0x7d, 0x2e, 0xc6, 0x4d, 0x7b, 0x8c, 0xd1, 0x11, 0x91, 0xdd,
+  0x4d, 0x68, 0x89, 0xc5, 0xfc, 0xff, 0xc0, 0xc2, 0x22, 0xb3, 0xc0, 0xc5,
+  0xe2, 0x80, 0x2e, 0x79, 0xb8, 0xcb, 0x73, 0x32, 0x71, 0xd9, 0x8a, 0x7d,
+  0xb8, 0xcf, 0xd2, 0x69, 0x28, 0xbc, 0x91, 0x6e, 0xa3, 0xd7, 0x8c, 0xb5,
+  0xfd, 0x05, 0x7d, 0xe6, 0xec, 0x3a, 0xe9, 0x03, 0xba, 0x0c, 0x97, 0xa1,
+  0xad, 0xa7, 0x6e, 0xb4, 0x8a, 0xab, 0xbc, 0x78, 0x8c, 0xef, 0xc7, 0x42,
+  0x1c, 0x18, 0x33, 0x90, 0xf5, 0x6d, 0xab, 0x92, 0xd9, 0xc5, 0x51, 0x0c,
+  0x4a, 0xe6, 0x7f, 0x50, 0x4c, 0xa4, 0x42, 0x47, 0x48, 0xa2, 0xc2, 0xf3,
+  0x87, 0x8e, 0xd5, 0x63, 0x41, 0x20, 0x88, 0x7c, 0xbc, 0xa0, 0xb4, 0xe6,
+  0x48, 0xc1, 0xba, 0xc0, 0xcb, 0x61, 0x74, 0x00, 0x4e, 0x67, 0xb8, 0xa1,
+  0x98, 0xe6, 0x92, 0xb5, 0xb0, 0xba, 0xde, 0x92, 0x0d, 0x42, 0xd5, 0xcc,
+  0x31, 0xcf, 0x52, 0x16, 0x5e, 0x9f, 0x7f, 0x50, 0x4c, 0x19, 0x11, 0x37,
+  0xaf, 0xbd, 0x14, 0x59, 0x6c, 0x13, 0xde, 0xa8, 0x3d, 0x3d, 0x1c, 0xbd,
+  0xe4, 0xd1, 0x5b, 0x41, 0x68, 0xc9, 0x64, 0x6e, 0x3d, 0x7a, 0x35, 0xb2,
+  0x8a, 0x98, 0x68, 0x91, 0x7e, 0x99, 0x8e, 0x55, 0xdd, 0x7f, 0xa8, 0x77,
+  0x29, 0x17, 0xaa, 0x68, 0x4f, 0x02, 0x63, 0x30, 0x5a, 0x97, 0x0c, 0x43,
+  0x4b, 0x1e, 0x23, 0xe2, 0x39, 0xe3, 0x99, 0xa1, 0xc1, 0x9a, 0x29, 0xe5,
+  0xcf, 0x57, 0x3d, 0x78, 0xbc, 0x56, 0x1a, 0x35, 0xd2, 0xd0, 0x57, 0xf4,
+  0xfc, 0xf1, 0xc7, 0xe7, 0xf7, 0x11, 0x71, 0x8c, 0xf1, 0x21, 0x4d, 0x25,
+  0x72, 0x78, 0x46, 0xd9, 0x63, 0x0d, 0x64, 0x62, 0xfe, 0xeb, 0x1c, 0xa3,
+  0xae, 0x80, 0x50, 0x44, 0xdb, 0xb4, 0x2e, 0x1f, 0xd6, 0x0c, 0x64, 0x05,
+  0x5a, 0xe8, 0x5f, 0xa2, 0x21, 0x65, 0x22, 0x52, 0xb2, 0x30, 0xa7, 0x74,
+  0x7c, 0x38, 0x2c, 0xf0, 0xa0, 0xc7, 0x89, 0xea, 0x7c, 0x46, 0x97, 0x40,
+  0x74, 0xc5, 0x96, 0xfe, 0x16, 0xce, 0xb3, 0x26, 0xb6, 0x4a, 0xa6, 0x39,
+  0xe0, 0x89, 0x8f, 0xd9, 0x46, 0xe4, 0x0d, 0x8b, 0x9c, 0x56, 0xd0, 0xbb,
+  0xaa, 0xaa, 0xce, 0x5f, 0xb6, 0x29, 0x18, 0xf0, 0xa8, 0x51, 0x2a, 0x14,
+  0x98, 0x0c, 0xc9, 0xe0, 0x57, 0x2e, 0x04, 0xd8, 0x26, 0xa4, 0x65, 0xf4,
+  0x1f, 0xf2, 0xc5, 0xaa, 0xd7, 0x9a, 0x00, 0x78, 0x48, 0xcf, 0x9d, 0x4e,
+  0xbc, 0xfa, 0x84, 0x62, 0xa8, 0x5a, 0x42, 0xd2, 0xfd, 0xd5, 0xcd, 0x29,
+  0x95, 0xf1, 0xef, 0x48, 0x62, 0x77, 0x97, 0x9a, 0x53, 0x10, 0x05, 0xa5,
+  0xd7, 0x29, 0x2e, 0x22, 0x9b, 0x18, 0x6a, 0x9d, 0xea, 0xed, 0xaa, 0x58,
+  0xed, 0xa2, 0x17, 0x75, 0x53, 0x06, 0xb9, 0x3c, 0xa4, 0xec, 0x51, 0xcc,
+  0x11, 0xb7, 0x85, 0xb1, 0xb2, 0x52, 0x4e, 0xc9, 0x2b, 0x8c, 0x48, 0x68,
+  0xd8, 0xfb, 0x2c, 0xbe, 0x7a, 0xea, 0x4a, 0x3e, 0x5a, 0x34, 0x08, 0x53,
+  0x3b, 0x8a, 0xb3, 0x08, 0x28, 0x5d, 0x92, 0xc5, 0xf0, 0x35, 0xeb, 0xff,
+  0xbc, 0x9b, 0x5c, 0x0d, 0xca, 0x2a, 0xa7, 0x1b, 0x07, 0x98, 0x3b, 0x6d,
+  0x8d, 0xb6, 0x7e, 0x0f, 0xf2, 0x84, 0x6c, 0x8a, 0x58, 0x73, 0x12, 0x79,
+  0x49, 0x94, 0xaf, 0xac, 0xdd, 0xee, 0x0c, 0x9b, 0x15, 0x01, 0x18, 0xdb,
+  0xa6, 0xab, 0x7e, 0x16, 0x8b, 0x50, 0x4a, 0x96, 0x4d, 0xe2, 0xca, 0x41,
+  0x29, 0x66, 0xc0, 0x0e, 0xd9, 0x8d, 0x95, 0x62, 0x63, 0xb7, 0x69, 0x85,
+  0x7c, 0xd1, 0xc0, 0x43, 0x91, 0xd7, 0xf5, 0x02, 0x0b, 0xf6, 0xf6, 0xf8,
+  0xe4, 0xc8, 0x82, 0x82, 0xfe, 0xf7, 0xf6, 0x80, 0x26, 0xbc, 0x1a, 0x07,
+  0x10, 0x28, 0x4e, 0xd4, 0xf2, 0xb2, 0xee, 0x24, 0x93, 0xeb, 0xdb, 0x1e,
+  0x97, 0xce, 0xc1, 0x8f, 0x5b, 0x69, 0x5c, 0x47, 0xef, 0xbf, 0x3b, 0x3e,
+  0x3f, 0x7d, 0xff, 0xee, 0xe8, 0xbd, 0xf5, 0xf6, 0xd2, 0xa1, 0x88, 0xf1,
+  0xdf, 0xd6, 0x61, 0xd0, 0x37, 0xa7, 0x78, 0xc1, 0x2d, 0x32, 0x6d, 0x98,
+  0x85, 0xda, 0x8c, 0x53, 0xfe, 0x35, 0xf0, 0x9b, 0xf3, 0x1e, 0x52, 0x8f,
+  0x2f, 0xc5, 0xe1, 0xe7, 0x64, 0xef, 0x4f, 0x28, 0xf4, 0x36, 0x60, 0x1f,
+  0xb1, 0x2d, 0x3d, 0x46, 0x14, 0xbc, 0x77, 0xe3, 0x4c, 0x4a, 0xaf, 0x52,
+  0x82, 0xc6, 0x9a, 0x9d, 0x12, 0x8e, 0x12, 0xb9, 0x60, 0x5a, 0xab, 0x13,
+  0x6e, 0x73, 0x7f, 0xe0, 0x44, 0xc2, 0x38, 0x97, 0x2f, 0x03, 0xc0, 0x1b,
+  0x57, 0xba, 0x94, 0xb3, 0x3d, 0xd5, 0x39, 0xaf, 0xf4, 0xdb, 0x1e, 0x84,
+  0xce, 0x65, 0xe1, 0xfa, 0x55, 0xd2, 0xba, 0x71, 0x3f, 0x6f, 0x14, 0x3f,
+  0xaa, 0x0b, 0x61, 0x7f, 0x7b, 0xfb, 0x67, 0x14, 0xe8, 0xfb, 0x42, 0x2a,
+  0xf4, 0x85, 0x24, 0x69, 0xb5, 0xd7, 0x11, 0x11, 0xb9, 0x5e, 0x0a, 0x0f,
+  0xed, 0x5b, 0x3b, 0x9d, 0x70, 0x0e, 0x7e, 0x3c, 0x3b, 0x3f, 0xfd, 0xe1,
+  0xaf, 0xbf, 0xf1, 0x27, 0x3c, 0xac, 0xce, 0x8f, 0x04, 0x61, 0xd3, 0xc6,
+  0x7f, 0xfe, 0x55, 0x5f, 0x5b, 0xf9, 0xb9, 0x76, 0xfb, 0xbd, 0x76, 0x1d,
+  0xd9, 0x20, 0x41, 0x09, 0x19, 0x92, 0x4c, 0x9b, 0xaf, 0xf9, 0x92, 0xce,
+  0xea, 0xb5, 0x00, 0x1a, 0xbe, 0xe1, 0x6a, 0x9f, 0x04, 0x02, 0xea, 0x6e,
+  0xd7, 0x4d, 0x07, 0x02, 0x08, 0xa4, 0xed, 0x39, 0x00, 0xa4, 0xa6, 0x6e,
+  0x52, 0x7a, 0x26, 0x27, 0x70, 0x02, 0xd0, 0x67, 0xe7, 0xe3, 0xe0, 0xe4,
+  0xe4, 0xd7, 0x4f, 0x82, 0x16, 0x5a, 0x6c, 0x4f, 0x03, 0xea, 0x9c, 0xd9,
+  0x01, 0xf5, 0xad, 0x96, 0xaa, 0x47, 0x60, 0x15, 0x57, 0xdd, 0xfb, 0x53,
+  0xe9, 0xcd, 0x2b, 0xa8, 0xc7, 0xfd, 0x3a, 0x33, 0x4a, 0x2d, 0xd5, 0x95,
+  0x4e, 0xa6, 0x84, 0x89, 0x31, 0xe6, 0x36, 0x75, 0x2c, 0xa8, 0x66, 0xe6,
+  0xff, 0x92, 0xc1, 0x68, 0x3c, 0x8f, 0x9c, 0x4b, 0x04, 0xb4, 0x77, 0x69,
+  0x49, 0x3f, 0xb8, 0xd0, 0xa2, 0x54, 0xdc, 0xbc, 0x4c, 0x22, 0x95, 0xdc,
+  0x38, 0xf5, 0x9a, 0xee, 0xd9, 0x2a, 0xaf, 0x3f, 0x01, 0x0b, 0x4f, 0x27,
+  0x13, 0xda, 0xae, 0x26, 0xc7, 0x92, 0xb2, 0x8b, 0xbe, 0x2c, 0xa1, 0x5c,
+  0xf6, 0xcf, 0xa6, 0xe7, 0x73, 0x95, 0xa4, 0x55, 0x5b, 0xe1, 0xd1, 0xed,
+  0x25, 0x4a, 0x2e, 0x87, 0x6f, 0x37, 0x74, 0x98, 0xe8, 0xa2, 0x4b, 0xd0,
+  0x97, 0xe7, 0x1e, 0xa7, 0x35, 0xb1, 0x05, 0x08, 0xbc, 0x58, 0x3d, 0x77,
+  0x22, 0x6d, 0x58, 0xa8, 0x04, 0x68, 0x03, 0x9e, 0xe1, 0xd7, 0xac, 0x77,
+  0xfa, 0xa9, 0xe9, 0x16, 0x49, 0xd4, 0xbf, 0x4b, 0x34, 0x29, 0x9e, 0x27,
+  0xca, 0x4f, 0x8b, 0x0f, 0x03, 0x60, 0xe6, 0xb1, 0x48, 0x63, 0x29, 0x5c,
+  0x10, 0x02, 0xee, 0x6e, 0x08, 0x8a, 0xd8, 0xe0, 0x7a, 0xe3, 0x47, 0xc1,
+  0x1e, 0x11, 0x22, 0xba, 0x7f, 0x9f, 0xde, 0x91, 0x0f, 0x94, 0x49, 0x11,
+  0x1e, 0xd3, 0x41, 0x47, 0x0e, 0x93, 0xc5, 0xa2, 0x20, 0x71, 0x1c, 0x0d,
+  0x76, 0x20, 0x82, 0x6b, 0xae, 0xbe, 0x68, 0x37, 0x71, 0xd6, 0xa5, 0xb1,
+  0x79, 0xa1, 0xcf, 0xe3, 0x2e, 0x68, 0x51, 0x5c, 0xe0, 0x99, 0xd0, 0x82,
+  0x09, 0x18, 0xdb, 0x62, 0xa4, 0x6d, 0xed, 0x74, 0x64, 0x03, 0xa1, 0x55,
+  0x61, 0xe8, 0x90, 0x28, 0x43, 0x90, 0x9e, 0x3b, 0x9e, 0x96, 0x90, 0xf0,
+  0x23, 0x82, 0xf9, 0x66, 0xd8, 0xb0, 0x7c, 0xc6, 0xcc, 0x7f, 0x2f, 0x4e,
+  0x0f, 0x4f, 0x4f, 0xcc, 0x5f, 0x8e, 0xde, 0x1e, 0xff, 0xe0, 0xae, 0x61,
+  0x4e, 0xbb, 0x76, 0xb9, 0x34, 0x1c, 0xc8, 0xd4, 0xd2, 0xa1, 0xbe, 0xfc,
+  0x63, 0x2c, 0x56, 0xc0, 0xe9, 0xd1, 0xe6, 0xa3, 0xf3, 0x04, 0x8b, 0x54,
+  0xff, 0x6c, 0x55, 0xf2, 0x14, 0x42, 0x11, 0x52, 0x5b, 0xb9, 0x55, 0x8b,
+  0xfd, 0x76, 0x53, 0x7d, 0xdc, 0x92, 0x29, 0x50, 0x65, 0xfc, 0xab, 0xba,
+  0x2d, 0x8d, 0xb8, 0x53, 0x08, 0x8a, 0xe7, 0x97, 0xd6, 0x7e, 0xf1, 0xab,
+  0x16, 0x6a, 0x0e, 0x88, 0xd0, 0x61, 0x53, 0x7c, 0xd8, 0x91, 0x0f, 0x92,
+  0x5a, 0xd9, 0xf3, 0x06, 0xa9, 0x1a, 0x66, 0x53, 0x65, 0x90, 0x44, 0x40,
+  0x9a, 0xb4, 0x72, 0xd7, 0x3b, 0xfb, 0x82, 0x36, 0x84, 0x6b, 0xae, 0x3d,
+  0x26, 0x99, 0x00, 0x41, 0x34, 0x21, 0xd2, 0x8d, 0xf2, 0xeb, 0xfb, 0xad,
+  0x8b, 0xd6, 0xcc, 0x54, 0x34, 0xbd, 0x89, 0xd3, 0x2a, 0xe8, 0x0f, 0xd7,
+  0x09, 0x95, 0x65, 0x7e, 0x85, 0x78, 0x16, 0xc1, 0x1a, 0x1b, 0x20, 0xb7,
+  0x43, 0xa0, 0xcd, 0xdd, 0xa9, 0x76, 0xdd, 0xbe, 0xe2, 0xeb, 0x15, 0x9f,
+  0x0e, 0x27, 0x20, 0x40, 0x89, 0x72, 0xb9, 0xd0, 0x55, 0x6d, 0x90, 0x0a,
+  0xf6, 0xf7, 0x45, 0x7e, 0x93, 0x22, 0x17, 0x86, 0x6a, 0xdc, 0x4a, 0x8d,
+  0xd1, 0x4e, 0x1b, 0xe9, 0xaf, 0x6a, 0x24, 0x6d, 0xb7, 0xf2, 0xec, 0xd7,
+  0x34, 0xf2, 0xac, 0xd3, 0xc6, 0xf5, 0xaf, 0x6a, 0xc4, 0x16, 0x1a, 0x37,
+  0x9a, 0xe8, 0x0f, 0xc7, 0x17, 0xc9, 0xe1, 0xe9, 0x1b, 0x77, 0xc0, 0x2e,
+  0xa0, 0x15, 0x60, 0x0b, 0xd0, 0xde, 0x1b, 0x2d, 0x0a, 0xda, 0x85, 0x24,
+  0x3d, 0xb8, 0x42, 0x19, 0xb5, 0x05, 0x1c, 0x2a, 0x80, 0x11, 0xb5, 0xa6,
+  0xd9, 0xe4, 0x15, 0xb3, 0x6c, 0x10, 0xd8, 0xc1, 0xe7, 0x2d, 0xe4, 0x47,
+  0x67, 0x44, 0xe0, 0x71, 0xa5, 0x57, 0x1f, 0x9d, 0x49, 0x62, 0x71, 0x4a,
+  0x2b, 0x4d, 0x82, 0x1b, 0xa5, 0x44, 0xd2, 0x51, 0x70, 0x36, 0x17, 0xc1,
+  0xe8, 0x9b, 0x96, 0x55, 0xec, 0x38, 0x3f, 0x02, 0x0e, 0x4d, 0xa3, 0xb1,
+  0xe6, 0x8d, 0x76, 0xc5, 0x07, 0x78, 0xed, 0x2a, 0x40, 0xb9, 0xb5, 0xdd,
+  0xa5, 0x3c, 0x06, 0xee, 0x41, 0x42, 0xa2, 0x82, 0xdb, 0x07, 0xc2, 0x84,
+  0x54, 0xd1, 0xc2, 0x01, 0x8d, 0xb9, 0x70, 0x5c, 0x70, 0x45, 0xd9, 0x26,
+  0xec, 0x77, 0xf6, 0xf8, 0x8f, 0xb7, 0x29, 0x2a, 0xcd, 0x1b, 0xe1, 0x21,
+  0x70, 0x9f, 0xfc, 0x1f, 0x9e, 0x5a, 0xfc, 0xc4, 0x6a, 0x41, 0x66, 0xf0,
+  0x53, 0x94, 0x64, 0x9b, 0xf0, 0xb1, 0xa8, 0xef, 0x8b, 0x26, 0xbd, 0x83,
+  0x19, 0x4c, 0x36, 0x8b, 0x30, 0x95, 0xb8, 0x37, 0x9f, 0x8a, 0x2e, 0x64,
+  0x19, 0x51, 0xca, 0xca, 0x5a, 0x81, 0x0e, 0xbd, 0xe1, 0x7b, 0x0a, 0x6c,
+  0x6a, 0x27, 0x26, 0xd0, 0xcc, 0x0b, 0x95, 0x89, 0x5b, 0x8b, 0x46, 0xd7,
+  0xf5, 0x6d, 0xf3, 0xe1, 0x44, 0x53, 0x45, 0xe9, 0x03, 0x88, 0xad, 0xb9,
+  0x62, 0x27, 0x96, 0xcd, 0xc2, 0x7c, 0x0f, 0x93, 0xd6, 0x8f, 0x96, 0x05,
+  0xb8, 0xf0, 0x93, 0xc7, 0x54, 0xdf, 0x9f, 0x94, 0x98, 0xc6, 0x1e, 0x17,
+  0x56, 0xa1, 0x92, 0x95, 0xe6, 0x37, 0xf7, 0x5a, 0x62, 0x25, 0x2d, 0x90,
+  0x27, 0xd5, 0x85, 0x6b, 0xea, 0xc2, 0x48, 0x12, 0x89, 0xcb, 0xd8, 0x78,
+  0xc6, 0x7f, 0x1c, 0xaa, 0xea, 0xe4, 0xea, 0x67, 0xab, 0xd6, 0x84, 0x1b,
+  0x4f, 0x6e, 0x1d, 0x11, 0xba, 0x7c, 0xeb, 0x8d, 0x71, 0x35, 0x31, 0x12,
+  0x3a, 0x98, 0x8d, 0xba, 0xe3, 0x66, 0x7c, 0xde, 0xf9, 0x8e, 0x7e, 0x86,
+  0x89, 0x4b, 0x2e, 0x2c, 0x81, 0x4a, 0xd7, 0xa9, 0x4f, 0xcd, 0x87, 0xad,
+  0x7d, 0xd6, 0xdd, 0x22, 0xea, 0x60, 0x27, 0x7a, 0xbb, 0xd2, 0x0f, 0xb5,
+  0xbd, 0x10, 0x67, 0x40, 0x46, 0x49, 0x57, 0xa2, 0xba, 0x56, 0xd9, 0x7c,
+  0x2a, 0x32, 0x54, 0x7e, 0x82, 0x78, 0x1e, 0x0c, 0x7a, 0x4c, 0xf5, 0x58,
+  0x7b, 0x69, 0xf4, 0x51, 0xdf, 0x16, 0x7b, 0x29, 0x9f, 0x35, 0x72, 0x98,
+  0xf5, 0x09, 0xb3, 0x19, 0x8a, 0xdc, 0x6e, 0x3c, 0xa9, 0x66, 0x88, 0x1f,
+  0x11, 0x00, 0xcd, 0xdc, 0x55, 0xa5, 0xfd, 0xb7, 0xbe, 0x11, 0xf2, 0x39,
+  0xf1, 0x75, 0xe6, 0xdc, 0xb9, 0x18, 0xef, 0xa2, 0xe2, 0xb4, 0x43, 0xc7,
+  0x62, 0x06, 0x80, 0x6f, 0x5a, 0x34, 0x3c, 0xe0, 0x8a, 0x98, 0xa7, 0x06,
+  0xc9, 0xbb, 0x10, 0xd7, 0x53, 0x5e, 0x36, 0x92, 0x39, 0x4c, 0xd0, 0x31,
+  0x9e, 0x9d, 0xeb, 0xb4, 0xb8, 0xca, 0xd8, 0xf7, 0xe1, 0x91, 0xb0, 0x71,
+  0xd1, 0x0f, 0xb9, 0x1c, 0xcd, 0xa9, 0x87, 0x52, 0x53, 0xc4, 0x8a, 0xdc,
+  0x77, 0xc8, 0x7d, 0x77, 0x77, 0xec, 0x3c, 0x60, 0x58, 0xf3, 0x06, 0xf0,
+  0x7a, 0x9a, 0x88, 0xef, 0x41, 0xbc, 0x75, 0x9b, 0x42, 0x9e, 0xd8, 0x62,
+  0x91, 0xce, 0x66, 0xd0, 0x85, 0xa2, 0x9c, 0x9a, 0x10, 0xcb, 0x0a, 0x58,
+  0x45, 0xca, 0x5e, 0x2d, 0xc6, 0xe2, 0x71, 0x7a, 0x96, 0xdc, 0x5e, 0x3d,
+  0xd8, 0xc1, 0x56, 0x54, 0x72, 0xf4, 0x0b, 0x3a, 0x37, 0x21, 0xfb, 0x97,
+  0xb8, 0x44, 0x88, 0x9d, 0xc5, 0x0b, 0xb2, 0x13, 0x86, 0x9f, 0xe9, 0x40,
+  0xbd, 0xf1, 0xec, 0xba, 0xf1, 0xdc, 0x62, 0xa7, 0x9c, 0x1d, 0x0c, 0x87,
+  0xba, 0x4f, 0x0e, 0xc3, 0x2d, 0x21, 0x31, 0x1c, 0x10, 0x45, 0x48, 0x96,
+  0x67, 0xa8, 0x40, 0x4a, 0x1b, 0x9d, 0xd8, 0xef, 0x2e, 0x8b, 0xb7, 0x37,
+  0x2c, 0xa6, 0xe3, 0xc3, 0xbd, 0x6d, 0x4d, 0x22, 0x3b, 0x91, 0x3b, 0x2c,
+  0x06, 0xf1, 0x3a, 0xc4, 0x98, 0x56, 0x4c, 0x33, 0xd2, 0x29, 0x95, 0x2b,
+  0x99, 0x7c, 0xb1, 0x46, 0xfa, 0xb4, 0xab, 0x5b, 0xee, 0x3e, 0x89, 0x0c,
+  0xfa, 0x3b, 0x1e, 0x55, 0xef, 0x9f, 0x19, 0xf4, 0x77, 0x91, 0x41, 0x3f,
+  0xb5, 0xdf, 0xe2, 0x4f, 0xed, 0xed, 0x7d, 0x26, 0x60, 0x73, 0x76, 0x92,
+  0x4d, 0x13, 0xf7, 0x31, 0xf9, 0x1a, 0x8f, 0xd8, 0x3c, 0xd8, 0x57, 0x5e,
+  0xd0, 0x2c, 0x30, 0x26, 0xed, 0xe1, 0xf5, 0x3e, 0xf5, 0xcc, 0x0d, 0xcb,
+  0x28, 0xe4, 0xd4, 0x1e, 0xe9, 0xfa, 0x2c, 0x67, 0x02, 0xf1, 0xa3, 0xdc,
+  0x49, 0x04, 0x47, 0xb9, 0x25, 0x60, 0xcb, 0x92, 0xb0, 0xbe, 0x76, 0xc3,
+  0xfb, 0xce, 0x73, 0xeb, 0xc7, 0xd8, 0xde, 0xe3, 0x4d, 0x49, 0x55, 0x2f,
+  0xa4, 0x84, 0x30, 0xb6, 0xe6, 0x24, 0x6b, 0xcc, 0x9a, 0x38, 0x17, 0x1c,
+  0xe7, 0x0c, 0x5d, 0x56, 0x29, 0x18, 0x45, 0x51, 0xb6, 0x78, 0xb0, 0x84,
+  0xb6, 0x96, 0x8d, 0x98, 0x94, 0xaa, 0x92, 0x17, 0x64, 0x3b, 0x40, 0x29,
+  0x10, 0xbf, 0x15, 0x39, 0x42, 0x51, 0x24, 0xfa, 0xd2, 0xfa, 0x4a, 0xb5,
+  0x70, 0x71, 0x2f, 0x98, 0x21, 0x1e, 0x62, 0x4b, 0x67, 0x88, 0x33, 0x20,
+  0xed, 0x7e, 0x66, 0xe7, 0xcd, 0xae, 0x04, 0xb9, 0x96, 0x98, 0xe3, 0x60,
+  0xe0, 0x5f, 0x11, 0x22, 0x4e, 0xbc, 0x08, 0x8c, 0x32, 0xf8, 0x07, 0xfb,
+  0x52, 0xde, 0x76, 0x5f, 0x61, 0x79, 0x7c, 0x46, 0xd2, 0x4e, 0xa8, 0x25,
+  0x07, 0xc9, 0x29, 0x1c, 0x61, 0x2d, 0x32, 0x5d, 0x4e, 0x91, 0x48, 0x5d,
+  0xda, 0x5b, 0x7b, 0xeb, 0xbe, 0xf4, 0xd6, 0x58, 0xbb, 0xa5, 0xb0, 0x84,
+  0x6d, 0x11, 0xb4, 0x8e, 0x94, 0x4b, 0xdd, 0xbd, 0x59, 0x72, 0x7e, 0x74,
+  0x71, 0x0e, 0x58, 0x15, 0x89, 0x80, 0xa0, 0xe6, 0x42, 0x5a, 0x6d, 0x59,
+  0x0a, 0x46, 0x91, 0x67, 0x4e, 0x29, 0x71, 0x22, 0x82, 0x79, 0x7a, 0xec,
+  0x8a, 0xf3, 0x3f, 0xf5, 0x3d, 0x4e, 0x0b, 0x30, 0x6b, 0xce, 0x53, 0xee,
+  0x22, 0x92, 0x6d, 0x06, 0xa1, 0xbd, 0x3d, 0x07, 0x0f, 0x41, 0x19, 0x36,
+  0xbe, 0xe7, 0x04, 0xec, 0x3b, 0x10, 0xd4, 0x81, 0xe2, 0xe3, 0x13, 0x4b,
+  0x9a, 0xcd, 0x9a, 0x05, 0x03, 0x66, 0x43, 0x0c, 0xa6, 0xfd, 0xb8, 0xaa,
+  0x01, 0xaa, 0x2d, 0x7a, 0x00, 0x72, 0x7c, 0xd2, 0x93, 0xa1, 0x9c, 0xc5,
+  0xf4, 0x74, 0x67, 0x27, 0x6c, 0x2e, 0x1d, 0x19, 0xb1, 0x2a, 0xaa, 0x9d,
+  0xa4, 0x3b, 0xe0, 0x15, 0x76, 0x5c, 0x42, 0xdd, 0xac, 0xc9, 0xfa, 0xe8,
+  0x5f, 0x92, 0x27, 0x91, 0x66, 0x2c, 0x34, 0x33, 0xf6, 0x58, 0xca, 0x7c,
+  0x8f, 0xfc, 0x0b, 0x99, 0xb3, 0xb6, 0x6c, 0xe1, 0xd4, 0x0c, 0x2d, 0xf3,
+  0x95, 0x2a, 0x7e, 0x15, 0x59, 0x8d, 0xe2, 0x80, 0x0e, 0x7a, 0x16, 0x48,
+  0xf0, 0xbd, 0x67, 0x91, 0x1d, 0x91, 0x0c, 0x2f, 0x4e, 0xcf, 0x95, 0xcc,
+  0x32, 0xbc, 0xa1, 0x81, 0xe5, 0xa0, 0x27, 0x2c, 0x59, 0x44, 0x2f, 0x52,
+  0x68, 0xdc, 0x66, 0x38, 0x5b, 0xb6, 0x3e, 0xef, 0xab, 0x2c, 0x03, 0xce,
+  0x29, 0x4b, 0x47, 0xc6, 0xf6, 0x9d, 0xa4, 0x34, 0x2b, 0x33, 0xa5, 0x9e,
+  0x4c, 0xef, 0x25, 0x3e, 0x68, 0xa7, 0x7c, 0x82, 0x39, 0x03, 0x17, 0xf5,
+  0x72, 0x38, 0x17, 0x97, 0x98, 0x2d, 0x05, 0xa7, 0x68, 0x4b, 0x12, 0x75,
+  0xf7, 0x22, 0x1f, 0xa2, 0x53, 0x47, 0x3e, 0xca, 0x32, 0x5e, 0x06, 0xe9,
+  0x5c, 0x48, 0xa8, 0x8c, 0x85, 0xdc, 0x05, 0xa6, 0xe7, 0x94, 0x3d, 0x04,
+  0xdd, 0x21, 0xd0, 0x60, 0xcd, 0xb1, 0x29, 0xab, 0x89, 0x30, 0x60, 0xc9,
+  0xe5, 0xa9, 0xe6, 0x83, 0x53, 0xbb, 0xbd, 0x9b, 0xff, 0xec, 0xf4, 0xfc,
+  0x22, 0xb1, 0x17, 0x3f, 0xbe, 0x8d, 0x1f, 0x75, 0x8e, 0x10, 0xd5, 0x00,
+  0x80, 0x03, 0xcd, 0x81, 0xeb, 0x03, 0xaf, 0xa0, 0x98, 0x08, 0x8d, 0x36,
+  0xa1, 0x6d, 0x90, 0xff, 0xa1, 0x02, 0x8c, 0x4e, 0x88, 0xc6, 0x3c, 0x99,
+  0x23, 0x59, 0x2c, 0x74, 0xe1, 0xc4, 0xcb, 0x4c, 0x39, 0x25, 0xf7, 0xc9,
+  0x6e, 0x64, 0x77, 0x90, 0x6d, 0x7d, 0x7e, 0x44, 0x45, 0xe7, 0x2f, 0xae,
+  0xf9, 0x6f, 0x41, 0xcf, 0x39, 0x73, 0x52, 0x7e, 0x18, 0x58, 0x2e, 0x76,
+  0x77, 0x50, 0x78, 0xd0, 0x98, 0x1f, 0x68, 0xdf, 0xa6, 0xe9, 0x7a, 0x73,
+  0xf6, 0xc4, 0x83, 0x82, 0x41, 0x72, 0xca, 0x5e, 0xc1, 0x21, 0xc7, 0x0f,
+  0xd6, 0xe5, 0x23, 0xeb, 0x46, 0x3d, 0xe3, 0x43, 0xd1, 0x22, 0x1b, 0x7e,
+  0xf2, 0xd4, 0x93, 0x16, 0x74, 0x5b, 0x49, 0x03, 0xc7, 0x5a, 0xd5, 0x8b,
+  0x7e, 0xd8, 0xd7, 0xed, 0x82, 0x2b, 0x83, 0x37, 0x06, 0x3f, 0xe7, 0xda,
+  0x79, 0x66, 0xd3, 0xf1, 0x55, 0x61, 0xf0, 0xba, 0x42, 0x3f, 0x56, 0x04,
+  0x0e, 0x94, 0xb7, 0xce, 0xb6, 0x7b, 0xc2, 0xbb, 0xfd, 0xab, 0x74, 0xe2,
+  0x20, 0x65, 0x3c, 0x74, 0xef, 0x62, 0x25, 0x8d, 0x2b, 0x2f, 0x16, 0x19,
+  0x34, 0xb5, 0xb4, 0x9a, 0x12, 0xb1, 0xb9, 0x91, 0x23, 0xec, 0x6b, 0xa1,
+  0xd7, 0x02, 0xa9, 0x5b, 0xfa, 0x34, 0x1a, 0x4f, 0xe4, 0x16, 0x3a, 0x3e,
+  0x39, 0x72, 0x2b, 0xc5, 0xac, 0xe8, 0x38, 0xc5, 0x4e, 0xe3, 0xa7, 0x4a,
+  0x9c, 0xf6, 0xaa, 0x18, 0x24, 0x67, 0x54, 0x62, 0x11, 0xda, 0x53, 0xfd,
+  0xef, 0xae, 0x35, 0x3e, 0x28, 0x70, 0x84, 0x9b, 0xcb, 0x13, 0xa6, 0x4a,
+  0x5e, 0x98, 0x85, 0xc5, 0x4f, 0xe8, 0xaf, 0x1e, 0x83, 0x6f, 0x30, 0xdc,
+  0x97, 0xee, 0xe5, 0xda, 0x0c, 0xc5, 0x18, 0xed, 0xdd, 0x47, 0x9e, 0xca,
+  0xbe, 0x32, 0x16, 0x3d, 0x9a, 0xa0, 0x0f, 0x40, 0x36, 0xd3, 0x79, 0xd6,
+  0x7a, 0xe2, 0xdc, 0xc2, 0xa5, 0x3e, 0xa3, 0x46, 0x0d, 0x3f, 0xe7, 0x9a,
+  0xe2, 0x0b, 0xe1, 0x60, 0x64, 0x6b, 0x62, 0x10, 0x82, 0x93, 0xd4, 0x39,
+  0xd3, 0x56, 0x41, 0xd2, 0x76, 0x6a, 0x81, 0xd0, 0x36, 0x1a, 0x4b, 0xf2,
+  0x72, 0xa4, 0x07, 0x87, 0x46, 0xd2, 0x9d, 0xdc, 0x4e, 0xbd, 0xc8, 0xa7,
+  0xbc, 0x13, 0xed, 0xb6, 0xb1, 0x77, 0x58, 0xab, 0x77, 0x02, 0x1d, 0x15,
+  0xea, 0x2e, 0x72, 0x24, 0x90, 0x5b, 0xde, 0x5c, 0xf1, 0xbe, 0x09, 0xf0,
+  0xf4, 0x99, 0x6b, 0xea, 0x92, 0x12, 0xde, 0x6c, 0x5b, 0x4e, 0xfe, 0xb8,
+  0x92, 0x01, 0xb9, 0x7d, 0x4c, 0xac, 0x46, 0xbe, 0xc7, 0x46, 0x11, 0x0e,
+  0x2b, 0x7f, 0x4e, 0x78, 0x33, 0x5c, 0x94, 0x64, 0x06, 0x17, 0xf7, 0x0e,
+  0x19, 0x3d, 0xe0, 0xe0, 0x2e, 0x7b, 0xd3, 0xb8, 0x2c, 0x83, 0xfc, 0x46,
+  0x68, 0xad, 0xaf, 0xc5, 0x5b, 0x43, 0x45, 0xca, 0x02, 0x36, 0xde, 0xc5,
+  0x4c, 0x00, 0x96, 0xde, 0x97, 0x5e, 0x88, 0x6b, 0x83, 0x4b, 0xba, 0x2b,
+  0x85, 0x8c, 0x1d, 0x89, 0x99, 0x68, 0xb1, 0x9c, 0x2d, 0x19, 0x8b, 0xd9,
+  0x3c, 0x40, 0xfe, 0xd5, 0x1e, 0x3d, 0x6e, 0x84, 0x02, 0x0e, 0x97, 0xb1,
+  0x28, 0xbd, 0xea, 0x65, 0x28, 0x3d, 0x02, 0x1f, 0x9a, 0x70, 0x79, 0x8e,
+  0x7f, 0xa5, 0x34, 0x0f, 0xa1, 0xbb, 0xbc, 0xca, 0xfe, 0x06, 0x75, 0x72,
+  0xc0, 0x17, 0x0e, 0x27, 0x3b, 0xf1, 0x28, 0x8b, 0x45, 0xea, 0xd9, 0xf4,
+  0x4f, 0x5f, 0x8a, 0xdf, 0x4a, 0xfc, 0x22, 0x5a, 0xcc, 0xb4, 0x1b, 0xe5,
+  0x7b, 0xb6, 0x6b, 0x3d, 0x98, 0x84, 0x67, 0x14, 0x90, 0xbe, 0x8f, 0x6a,
+  0x24, 0xaa, 0xcf, 0xe1, 0x37, 0xc9, 0xbb, 0x37, 0xcf, 0x08, 0x57, 0x73,
+  0x95, 0x55, 0x73, 0x63, 0xb5, 0x38, 0xc3, 0xfc, 0xf4, 0x5b, 0xaf, 0xb1,
+  0x3d, 0xe7, 0x0e, 0x95, 0x6b, 0x36, 0x97, 0xd3, 0x4b, 0x16, 0x83, 0x59,
+  0x3f, 0x4a, 0x0a, 0xbd, 0xd2, 0xfc, 0x6e, 0xf6, 0x89, 0x21, 0x81, 0xdc,
+  0x15, 0xf5, 0x4e, 0x02, 0xaa, 0xab, 0x8e, 0x00, 0x7b, 0xf6, 0xc4, 0x09,
+  0xb0, 0xea, 0x7e, 0x4e, 0xa5, 0x04, 0x8a, 0x2b, 0xb2, 0x0e, 0x22, 0x27,
+  0xea, 0x19, 0x0b, 0xcd, 0x43, 0x3e, 0xf7, 0xa4, 0xca, 0x86, 0xaf, 0x41,
+  0x49, 0x87, 0x17, 0xd5, 0x7b, 0xef, 0x99, 0xef, 0x5b, 0x20, 0x2a, 0x48,
+  0x20, 0x96, 0x98, 0x00, 0x1e, 0x7a, 0x8a, 0xf7, 0xec, 0x73, 0xfb, 0x2c,
+  0x79, 0x92, 0xf2, 0xc2, 0x2b, 0xd8, 0xb1, 0xe4, 0x0d, 0x51, 0x80, 0xd5,
+  0x4c, 0xd0, 0x2c, 0x3a, 0xd6, 0x7a, 0xbc, 0xb9, 0xf7, 0x5e, 0x79, 0xd9,
+  0x76, 0x9d, 0x80, 0xc9, 0xdb, 0x6e, 0x4d, 0x0c, 0x2a, 0x9f, 0x5f, 0xfb,
+  0x87, 0xf3, 0x39, 0xdf, 0xd2, 0x67, 0x04, 0x52, 0x6d, 0xad, 0xa7, 0x0a,
+  0xc1, 0xcc, 0x67, 0x42, 0xd0, 0xb3, 0xce, 0x7b, 0xff, 0xf0, 0x60, 0x59,
+  0x86, 0x06, 0x76, 0xbb, 0xf7, 0x91, 0x5d, 0x39, 0x33, 0x54, 0x65, 0xef,
+  0xaa, 0xc8, 0xff, 0xa1, 0xb9, 0xdd, 0x74, 0x3b, 0x6b, 0xb1, 0x15, 0xef,
+  0xf1, 0x3d, 0x11, 0x18, 0x37, 0xe9, 0x34, 0x17, 0xa1, 0x48, 0x31, 0x4c,
+  0xf7, 0xc0, 0x13, 0xd9, 0xb5, 0x5c, 0x57, 0x10, 0x16, 0x00, 0x2a, 0x83,
+  0x52, 0x04, 0x3d, 0x6b, 0x61, 0x9e, 0x9f, 0x3f, 0x15, 0xbd, 0x4b, 0x15,
+  0x64, 0xba, 0x79, 0x69, 0x22, 0xa6, 0x20, 0x96, 0xeb, 0x8a, 0xe9, 0xe7,
+  0x72, 0xed, 0xc9, 0x52, 0xda, 0x82, 0x2b, 0xb6, 0x78, 0x0d, 0xfd, 0xf5,
+  0x36, 0x2f, 0x04, 0x85, 0x1c, 0xbc, 0xfe, 0x7c, 0x89, 0x3f, 0xb2, 0xe6,
+  0x3b, 0xf3, 0x08, 0x7b, 0xc9, 0x7b, 0xfe, 0x33, 0x97, 0x5c, 0xea, 0x28,
+  0x0a, 0x95, 0x8e, 0xad, 0xe7, 0x79, 0x20, 0xec, 0x41, 0x12, 0x2f, 0x0a,
+  0x1f, 0x81, 0x49, 0xb4, 0xfa, 0xc5, 0xa5, 0xfd, 0xfc, 0xb4, 0xbc, 0x4a,
+  0x7c, 0x66, 0x89, 0xe7, 0xbc, 0xa5, 0xde, 0x82, 0x99, 0x5d, 0xcf, 0x01,
+  0x49, 0x13, 0xbf, 0x34, 0xae, 0x7b, 0xfa, 0xa5, 0xec, 0x0d, 0xbd, 0x2f,
+  0xad, 0xc9, 0xba, 0xec, 0x8d, 0xcf, 0x76, 0x7c, 0x85, 0x75, 0x42, 0x41,
+  0x52, 0xce, 0x71, 0x5e, 0xfa, 0x02, 0xef, 0x8c, 0xe3, 0x29, 0x55, 0x99,
+  0x9d, 0x6a, 0xed, 0x5a, 0x25, 0x64, 0x73, 0x8f, 0xed, 0xb5, 0x84, 0xee,
+  0x85, 0xaf, 0x3e, 0x25, 0xc7, 0x6f, 0xbc, 0x07, 0x9f, 0xb8, 0x01, 0xa6,
+  0x53, 0xd2, 0x06, 0xee, 0xd9, 0x5d, 0x55, 0x4b, 0xd5, 0x5c, 0xef, 0x51,
+  0xde, 0x19, 0xef, 0x4b, 0xa6, 0x0e, 0xc2, 0xfc, 0x07, 0xcf, 0xf0, 0x76,
+  0x38, 0xbc, 0x36, 0xb7, 0xda, 0xb8, 0x01, 0x38, 0xb3, 0xd0, 0xb8, 0x57,
+  0x77, 0xed, 0x3f, 0x7b, 0xbe, 0xe2, 0x59, 0xb9, 0x34, 0x6b, 0x7b, 0xd5,
+  0x7b, 0xef, 0x7d, 0x16, 0x1e, 0x73, 0x35, 0x09, 0x14, 0x43, 0x2e, 0x27,
+  0x2d, 0xd9, 0xa4, 0x34, 0xd6, 0x7f, 0x57, 0xff, 0x60, 0x45, 0xac, 0x68,
+  0xf5, 0xbf, 0xfb, 0xfd, 0x7d, 0xe1, 0x03, 0xd1, 0xd9, 0x33, 0x58, 0x65,
+  0x08, 0x1c, 0x8c, 0x5b, 0xd4, 0xe8, 0x0e, 0xa8, 0x83, 0xd9, 0xf1, 0x5a,
+  0xe0, 0x35, 0x37, 0x7a, 0xc4, 0xa2, 0x70, 0x92, 0x83, 0x8d, 0x40, 0xc9,
+  0x1b, 0x9f, 0xf8, 0xec, 0x79, 0x24, 0xf3, 0xc5, 0x17, 0xe5, 0x79, 0x52,
+  0x77, 0x3a, 0xc7, 0xa0, 0xbe, 0x5e, 0xb0, 0xd5, 0x6d, 0x47, 0xe4, 0xdc,
+  0x6c, 0xde, 0x6b, 0x7b, 0x4e, 0x7a, 0xc9, 0xb5, 0xcf, 0xd9, 0x00, 0x87,
+  0x94, 0xb8, 0xc2, 0xa6, 0xb9, 0xe5, 0xcb, 0x86, 0xab, 0xbc, 0x2a, 0xd9,
+  0x73, 0x48, 0x4c, 0x04, 0x9b, 0x69, 0x1c, 0x23, 0x29, 0xb0, 0x6e, 0xef,
+  0x33, 0xa2, 0xda, 0x10, 0xd2, 0xc8, 0xac, 0xd2, 0x75, 0x36, 0xfe, 0xa4,
+  0x47, 0xc6, 0xb6, 0x11, 0x79, 0xeb, 0xa9, 0x9d, 0x5a, 0xda, 0x7d, 0x67,
+  0xe7, 0x47, 0x5d, 0x23, 0xc0, 0x3d, 0xca, 0xbb, 0xe6, 0xfc, 0x62, 0x78,
+  0xb6, 0x4f, 0xfd, 0xe5, 0x60, 0xa2, 0x39, 0x10, 0x87, 0xc3, 0xec, 0xef,
+  0x92, 0x04, 0x54, 0xbb, 0xa7, 0x9f, 0x2f, 0x79, 0x7a, 0x28, 0x2e, 0xbe,
+  0xe3, 0x09, 0x49, 0x5f, 0xb3, 0x0e, 0xfe, 0x4b, 0x9f, 0x09, 0xb4, 0x52,
+  0x5d, 0xfd, 0xec, 0x08, 0xa3, 0x9e, 0x41, 0x1a, 0x52, 0xd8, 0xd9, 0x3d,
+  0xfc, 0xc2, 0xf9, 0x6b, 0xae, 0x17, 0xc5, 0x27, 0xab, 0x2f, 0x0a, 0x1b,
+  0x98, 0x2e, 0xb0, 0x7b, 0xe1, 0xa5, 0x1e, 0x0d, 0xcf, 0x1b, 0x6a, 0xe1,
+  0x47, 0x3d, 0xf1, 0x52, 0x68, 0x9d, 0x5c, 0x8e, 0x82, 0x1a, 0xf9, 0xba,
+  0xf0, 0xe6, 0xe0, 0xe5, 0x8e, 0xbd, 0x7e, 0x85, 0x57, 0xe4, 0x53, 0x76,
+  0xef, 0x76, 0x1d, 0xa3, 0x25, 0x8c, 0xba, 0x98, 0x17, 0xe4, 0x84, 0x70,
+  0x8f, 0xb8, 0x06, 0x76, 0x5b, 0x97, 0x40, 0x57, 0xdd, 0xa8, 0x9b, 0xb4,
+  0x59, 0x78, 0x57, 0xcc, 0x4b, 0xde, 0x3b, 0x43, 0x8a, 0x45, 0xce, 0x64,
+  0xbf, 0xe6, 0x85, 0xfa, 0xdc, 0x3a, 0x8e, 0x34, 0x7d, 0xe9, 0x87, 0x1f,
+  0xf8, 0x1e, 0xb1, 0x94, 0x57, 0x12, 0xcb, 0xb2, 0xa5, 0x4e, 0x8c, 0xdc,
+  0x65, 0x1a, 0x54, 0x3a, 0xc2, 0x88, 0x00, 0x55, 0xd9, 0x34, 0x23, 0xca,
+  0x44, 0xb6, 0x83, 0x70, 0x78, 0xfa, 0x81, 0x4d, 0x89, 0x6a, 0x5f, 0x1c,
+  0xc9, 0x25, 0x0c, 0x25, 0xfc, 0x9f, 0x05, 0xf9, 0xdf, 0xc4, 0x1f, 0x66,
+  0x7a, 0x70, 0xf0, 0xe1, 0xe2, 0x9b, 0xd3, 0xf3, 0x61, 0xb2, 0x4d, 0x99,
+  0xc7, 0x17, 0xe7, 0xc7, 0x5f, 0x7d, 0xb8, 0x30, 0xff, 0xd4, 0x96, 0xde,
+  0xa4, 0x45, 0x6e, 0x6e, 0x27, 0x33, 0x9c, 0xac, 0x30, 0x9b, 0xe5, 0x4a,
+  0x4b, 0x92, 0x30, 0x01, 0xab, 0xb9, 0x8f, 0xcb, 0x8a, 0xcb, 0x52, 0x81,
+  0xf9, 0xe1, 0xba, 0x94, 0x15, 0x67, 0x6e, 0xb2, 0x82, 0x81, 0x76, 0xa5,
+  0xb3, 0x9d, 0xf3, 0x4e, 0xe2, 0xb4, 0xa2, 0x67, 0x92, 0x8b, 0x6f, 0x0e,
+  0xde, 0x7f, 0x3b, 0x54, 0xb6, 0xfa, 0xef, 0xbf, 0xff, 0xbe, 0x1b, 0xf2,
+  0x85, 0x1e, 0x7b, 0x9d, 0xde, 0xdd, 0x0d, 0xea, 0x6c, 0x6d, 0x6d, 0x78,
+  0x74, 0x94, 0x1c, 0x9c, 0x0c, 0x4f, 0xd7, 0x5c, 0xbe, 0xfd, 0xe6, 0x2e,
+  0xf1, 0xf0, 0x5c, 0x65, 0x8d, 0xf9, 0xcb, 0xda, 0xda, 0xc9, 0xc1, 0x05,
+  0x19, 0xc7, 0x52, 0x01, 0x98, 0xe6, 0x99, 0xb8, 0x33, 0xd2, 0xe9, 0x2d,
+  0x51, 0x05, 0x5e, 0xe6, 0x00, 0xb4, 0x13, 0x4f, 0x1e, 0x20, 0xbf, 0x5d,
+  0xfe, 0x4c, 0x73, 0xc1, 0xdd, 0x12, 0xa3, 0x89, 0xc0, 0xd2, 0x08, 0x6f,
+  0x6b, 0x86, 0xa4, 0x00, 0x87, 0xb5, 0xc4, 0x79, 0xc8, 0x98, 0xe6, 0x3e,
+  0x1b, 0x71, 0x01, 0xe8, 0x1e, 0xa3, 0x4b, 0x11, 0x22, 0xf3, 0x38, 0x26,
+  0x96, 0x0c, 0xe1, 0x98, 0xa8, 0x5f, 0x93, 0x0f, 0xc3, 0x83, 0xaf, 0x8f,
+  0xe8, 0xd9, 0xaf, 0xb3, 0xc6, 0xcd, 0x2c, 0xdc, 0x6b, 0xf8, 0xca, 0xfb,
+  0xac, 0xa9, 0xc7, 0xe9, 0x3c, 0xdb, 0xa0, 0x3e, 0x8d, 0xfa, 0x52, 0x68,
+  0xc1, 0x35, 0xce, 0xa6, 0x83, 0xab, 0x0f, 0x51, 0xc8, 0xf3, 0xa8, 0xe4,
+  0xe0, 0xb7, 0x7b, 0x7e, 0x74, 0xf0, 0xe6, 0xdd, 0x91, 0xd6, 0x10, 0xe7,
+  0x6b, 0xde, 0x34, 0x7a, 0x4d, 0x95, 0xd5, 0x5d, 0x7c, 0x85, 0x54, 0x89,
+  0x85, 0x69, 0xc3, 0xfc, 0x86, 0x0a, 0x9d, 0xc7, 0x3f, 0xe7, 0xca, 0x46,
+  0xe0, 0xd9, 0xc1, 0x65, 0xbe, 0xcd, 0xad, 0xeb, 0xf7, 0x52, 0x3b, 0x27,
+  0x42, 0x26, 0xa3, 0xea, 0x35, 0xfb, 0x3f, 0xe0, 0x37, 0x79, 0xb1, 0xb3,
+  0xb3, 0xb3, 0x62, 0x1c, 0xb0, 0x3e, 0xe4, 0x92, 0x36, 0x43, 0xd9, 0xa7,
+  0xc7, 0xb7, 0x5d, 0xfb, 0xae, 0xc7, 0xb4, 0xdd, 0xb0, 0x6e, 0x97, 0x64,
+  0xbe, 0xe3, 0x6a, 0xcf, 0x9b, 0x2c, 0xde, 0xe5, 0x71, 0x59, 0xda, 0x15,
+  0x68, 0x4d, 0x0e, 0xca, 0x3b, 0xe7, 0x8d, 0xb2, 0xea, 0xe1, 0x0d, 0xee,
+  0xb8, 0x31, 0x98, 0xc0, 0x24, 0x56, 0xdd, 0x77, 0x9b, 0xa4, 0xdf, 0x00,
+  0x58, 0x34, 0x6e, 0x06, 0x65, 0x75, 0xb5, 0x3d, 0xdb, 0x87, 0x06, 0x64,
+  0x1e, 0x7a, 0x4b, 0x48, 0xe6, 0xc4, 0x68, 0xd2, 0x96, 0x24, 0xa4, 0xa6,
+  0x89, 0x2d, 0xcd, 0xd5, 0xf7, 0x88, 0x7e, 0xfd, 0x82, 0x59, 0x60, 0x82,
+  0xa7, 0x4b, 0x1d, 0xb9, 0x96, 0x51, 0x8c, 0x7c, 0x84, 0xf6, 0x1f, 0xbc,
+  0x93, 0x03, 0x23, 0x0b, 0xcc, 0x57, 0x88, 0x6a, 0x0c, 0x5b, 0xc4, 0xfc,
+  0xb5, 0x22, 0xc8, 0x4d, 0x73, 0x07, 0x31, 0x2d, 0x55, 0x62, 0x39, 0x2b,
+  0x94, 0xf0, 0x1f, 0x73, 0xa3, 0x69, 0x19, 0x03, 0x2a, 0x65, 0xa2, 0x89,
+  0x21, 0x15, 0xba, 0x20, 0x21, 0x72, 0x25, 0x13, 0x07, 0xc8, 0x26, 0x35,
+  0xdc, 0xfd, 0x66, 0xbf, 0x8f, 0xfd, 0x53, 0xdb, 0xdd, 0xf2, 0x88, 0x8f,
+  0x7b, 0x83, 0xe2, 0xd9, 0x2f, 0xe4, 0x56, 0xf7, 0xf6, 0xce, 0xd0, 0xf4,
+  0x22, 0xf8, 0xd6, 0xc2, 0x15, 0xba, 0xad, 0xf9, 0x73, 0x7e, 0x3d, 0x13,
+  0xb3, 0x1a, 0xdb, 0x40, 0xf3, 0x3e, 0xfa, 0x1b, 0x87, 0x67, 0xf2, 0x37,
+  0x82, 0x3d, 0xe6, 0x37, 0x34, 0x78, 0xba, 0x11, 0x92, 0x64, 0x93, 0xae,
+  0x0c, 0xd5, 0x8a, 0x81, 0xa2, 0x84, 0x75, 0x8b, 0x62, 0x45, 0xbe, 0x75,
+  0xb2, 0xa2, 0x87, 0xfb, 0x66, 0x6a, 0xe8, 0x06, 0xfa, 0xdf, 0xdb, 0x83,
+  0xba, 0xbe, 0xde, 0xce, 0x27, 0x1f, 0xab, 0x3a, 0x4d, 0x7e, 0x5a, 0xeb,
+  0x24, 0xcd, 0x76, 0x07, 0xf1, 0xbf, 0x31, 0x83, 0xbf, 0x68, 0xa6, 0x96,
+  0x8f, 0xe2, 0xf7, 0x18, 0x41, 0xbf, 0x4f, 0xad, 0xea, 0x97, 0x3e, 0x9a,
+  0x07, 0x3e, 0x5a, 0x36, 0xe7, 0x5f, 0x31, 0xba, 0x88, 0x28, 0x34, 0x83,
+  0x64, 0x92, 0x4f, 0x23, 0x5b, 0xe2, 0x1b, 0x5d, 0x6b, 0x94, 0xfc, 0xb8,
+  0xb7, 0xb3, 0xb3, 0xbb, 0xbf, 0xfb, 0xe2, 0xe5, 0xce, 0xfe, 0xee, 0xee,
+  0xee, 0xde, 0xfe, 0xee, 0xfe, 0xfe, 0xde, 0xce, 0xcf, 0xdb, 0xeb, 0xcb,
+  0xa6, 0xee, 0xdd, 0x57, 0x4b, 0x1a, 0x34, 0xa3, 0x5e, 0x67, 0x06, 0xc1,
+  0x9f, 0xec, 0xe8, 0x31, 0xaa, 0xc9, 0x7a, 0x52, 0xcf, 0x46, 0x84, 0xdc,
+  0xe3, 0xc3, 0xe9, 0x0f, 0xa6, 0x36, 0x8a, 0x77, 0xe6, 0x0d, 0xe8, 0xcd,
+  0xe9, 0xf7, 0xef, 0x4f, 0x4e, 0x0f, 0xde, 0x24, 0x17, 0xa7, 0xc9, 0x01,
+  0xdc, 0x84, 0x11, 0x39, 0x09, 0x16, 0x50, 0x02, 0xbf, 0x73, 0xf5, 0x16,
+  0xaf, 0x8a, 0x99, 0xf8, 0xb4, 0x2c, 0x4a, 0x15, 0x9d, 0xe8, 0xf6, 0xb3,
+  0x84, 0x19, 0x48, 0x2d, 0x0d, 0xae, 0x9b, 0xd9, 0xc3, 0x37, 0xc2, 0x63,
+  0xbe, 0xdc, 0x63, 0x20, 0x87, 0xb3, 0xf4, 0xd1, 0x1d, 0x3d, 0xf9, 0x40,
+  0x0e, 0x25, 0x1a, 0xfb, 0x12, 0x08, 0x84, 0xca, 0xbb, 0x64, 0x93, 0x01,
+  0x5e, 0xae, 0xf2, 0x16, 0x17, 0x75, 0xeb, 0xa0, 0xe2, 0x6c, 0x79, 0x24,
+  0xc1, 0xd8, 0x40, 0xdd, 0x21, 0x1d, 0x76, 0x2b, 0x18, 0xe0, 0xe9, 0xd2,
+  0x21, 0x99, 0xcb, 0x3c, 0xbb, 0xc3, 0xa8, 0xdb, 0xb2, 0x97, 0x29, 0x26,
+  0xdd, 0xe8, 0x40, 0xa4, 0xa5, 0xbe, 0x8b, 0xbc, 0xd2, 0x2e, 0x03, 0x07,
+  0x19, 0xf9, 0x1c, 0x7d, 0x47, 0x45, 0xb2, 0xfb, 0x04, 0xfd, 0xc6, 0xbf,
+  0xc7, 0xb7, 0x6d, 0x62, 0x31, 0x77, 0xe0, 0xc3, 0xf0, 0xf8, 0xfd, 0xd7,
+  0x88, 0xa2, 0x7f, 0x7f, 0x7a, 0xfe, 0x66, 0x68, 0x9a, 0x35, 0xf2, 0x0a,
+  0x8d, 0x5f, 0x94, 0x24, 0x09, 0xa5, 0x57, 0x7c, 0x2e, 0xe9, 0xd3, 0x7f,
+  0xe1, 0xed, 0xd4, 0xf3, 0x0b, 0x08, 0xcc, 0x7c, 0xfb, 0x88, 0x2a, 0x47,
+  0xc5, 0x6f, 0x0d, 0x6f, 0x37, 0x7e, 0x39, 0x4b, 0xc7, 0xd7, 0x64, 0xd0,
+  0xf3, 0x66, 0x05, 0x2a, 0x7a, 0x9b, 0xd2, 0x76, 0xb6, 0xc9, 0x4e, 0xdb,
+  0x6e, 0x4a, 0x6c, 0x47, 0xb4, 0x52, 0x56, 0x3e, 0xe5, 0xbd, 0xe7, 0xcd,
+  0x31, 0x7b, 0xfd, 0x72, 0x9a, 0x5e, 0xe1, 0x83, 0xe1, 0x31, 0xf0, 0x3e,
+  0x26, 0x9f, 0x7f, 0xec, 0x27, 0xe9, 0xda, 0x40, 0x7b, 0xc7, 0xd8, 0x00,
+  0x48, 0xb5, 0x42, 0x39, 0x2c, 0x09, 0x52, 0xb1, 0xfe, 0x88, 0xda, 0x7c,
+  0x84, 0x08, 0x23, 0x28, 0x6a, 0xb7, 0xae, 0x11, 0xaa, 0xcf, 0x32, 0xa1,
+  0xba, 0x51, 0xbf, 0x1d, 0x60, 0x5b, 0x0a, 0x83, 0xa0, 0x25, 0x4f, 0x27,
+  0xaf, 0x1d, 0x82, 0xdc, 0xd5, 0x72, 0xe6, 0x29, 0xa7, 0xce, 0x10, 0xca,
+  0x93, 0x33, 0x20, 0x04, 0x64, 0x48, 0xa3, 0x5f, 0xa7, 0x3a, 0x05, 0x84,
+  0x74, 0x5a, 0xc7, 0x15, 0x07, 0x27, 0x9b, 0xf2, 0xbf, 0xb9, 0xe8, 0xba,
+  0x51, 0xf6, 0x8b, 0x49, 0x4a, 0x15, 0x2f, 0x18, 0xee, 0x20, 0x94, 0x2a,
+  0xc6, 0xfa, 0xe2, 0xdc, 0x92, 0x75, 0xc5, 0x4b, 0x71, 0x2b, 0x79, 0xcd,
+  0xc4, 0x34, 0xb6, 0x92, 0x18, 0x5d, 0x5e, 0xf4, 0x75, 0xf6, 0x93, 0x72,
+  0xa9, 0x13, 0xbd, 0x27, 0x9d, 0xa7, 0x93, 0xee, 0x38, 0xa3, 0x8f, 0x1b,
+  0x01, 0xce, 0x3b, 0x47, 0xe3, 0xeb, 0xae, 0x22, 0x6c, 0x6b, 0xda, 0x94,
+  0x01, 0x99, 0x9b, 0x23, 0xc9, 0xec, 0x9c, 0xb6, 0x76, 0x06, 0xd7, 0x00,
+  0x5b, 0xb3, 0xb7, 0x80, 0x85, 0xc2, 0xbb, 0xda, 0x76, 0xa9, 0x2b, 0xff,
+  0xe1, 0x4d, 0x1b, 0xa3, 0x4c, 0xdd, 0x7b, 0x66, 0x8d, 0xa8, 0xa9, 0xbc,
+  0xa9, 0xb3, 0xe9, 0x25, 0x99, 0x5b, 0xf6, 0x0a, 0xe1, 0x9a, 0xd8, 0xae,
+  0x0e, 0x8a, 0x50, 0xbd, 0x2f, 0x0a, 0x63, 0xa9, 0xa4, 0x82, 0x00, 0x62,
+  0x59, 0x72, 0x05, 0xb1, 0xce, 0xcf, 0x61, 0x4b, 0xb6, 0x64, 0x08, 0x07,
+  0x50, 0x3f, 0x67, 0x90, 0x9f, 0x6d, 0xae, 0x25, 0x3a, 0xbc, 0x84, 0x10,
+  0xbe, 0x75, 0x74, 0xee, 0x68, 0xb6, 0xee, 0xe7, 0x04, 0x5b, 0x26, 0x3c,
+  0x88, 0x57, 0x2d, 0x52, 0x29, 0x94, 0xc1, 0x65, 0x9e, 0xdd, 0x11, 0xa1,
+  0xb0, 0x8c, 0xcd, 0xd9, 0x84, 0x56, 0xab, 0x97, 0xf1, 0x52, 0x6b, 0xf8,
+  0x39, 0x64, 0x21, 0xcd, 0x36, 0x71, 0x8d, 0x91, 0xcd, 0x25, 0x49, 0x13,
+  0xac, 0x06, 0xaa, 0x25, 0x69, 0x4b, 0x94, 0x92, 0xc6, 0x64, 0x6e, 0x61,
+  0xe6, 0xfa, 0xb6, 0x45, 0xc3, 0x11, 0xa7, 0x4d, 0xd9, 0xde, 0x84, 0x12,
+  0xec, 0x7d, 0x18, 0xe9, 0x59, 0x74, 0x2e, 0x5a, 0x18, 0xe5, 0xd6, 0x28,
+  0x17, 0x23, 0xb7, 0xb0, 0xb4, 0x47, 0x80, 0xee, 0xa5, 0x26, 0x0f, 0xc3,
+  0x22, 0x7a, 0x5a, 0x4e, 0xc2, 0x9b, 0x3d, 0x41, 0xe2, 0x1a, 0x81, 0x82,
+  0xf4, 0xb4, 0x45, 0x6d, 0x77, 0x8e, 0x99, 0xad, 0x4f, 0x72, 0x21, 0xae,
+  0x21, 0x51, 0x21, 0x14, 0x37, 0x22, 0x79, 0x97, 0xcb, 0x9b, 0x87, 0x45,
+  0x4d, 0xd8, 0x25, 0x35, 0xfd, 0xa6, 0xf7, 0x2c, 0x0d, 0xf2, 0x62, 0xb5,
+  0xd0, 0x91, 0x4e, 0x3c, 0xea, 0xc3, 0x18, 0x2b, 0x58, 0xc5, 0x6b, 0x8e,
+  0xc2, 0x38, 0xd0, 0x2a, 0xa3, 0x3e, 0xc0, 0xc5, 0xd1, 0x21, 0xd6, 0x05,
+  0x5a, 0xc5, 0x4f, 0x6b, 0xc1, 0x81, 0x67, 0xb0, 0xca, 0x7e, 0xf2, 0x55,
+  0x5a, 0xe7, 0xe3, 0x9e, 0xd4, 0xbd, 0x90, 0x3a, 0x18, 0xf4, 0x86, 0xad,
+  0x8d, 0x91, 0x6c, 0x32, 0xa5, 0xf2, 0xd6, 0x20, 0xf9, 0x5e, 0x0b, 0x99,
+  0x18, 0x23, 0x92, 0xeb, 0x33, 0xe4, 0x63, 0xd4, 0xac, 0x11, 0xc8, 0x09,
+  0x9f, 0x3d, 0xd9, 0x9f, 0xe2, 0xcb, 0x07, 0x11, 0x3a, 0x3e, 0xe2, 0x68,
+  0x1e, 0xb1, 0xaa, 0x69, 0xfd, 0xc9, 0x06, 0xce, 0xb0, 0x56, 0x22, 0x8a,
+  0x90, 0x18, 0xc9, 0xba, 0x34, 0x1b, 0xf9, 0x02, 0xaf, 0x41, 0x58, 0xad,
+  0x50, 0x90, 0xad, 0x07, 0x64, 0x63, 0x77, 0x6d, 0x6d, 0xf1, 0x6d, 0xb6,
+  0xf8, 0x1b, 0x76, 0xa6, 0x15, 0x51, 0xfd, 0xbe, 0x99, 0x30, 0x9a, 0x1a,
+  0x11, 0xa0, 0xa7, 0x17, 0x47, 0x7f, 0x48, 0x0e, 0xba, 0x71, 0x76, 0xba,
+  0x99, 0x54, 0x0c, 0x4b, 0xa5, 0x60, 0xbb, 0xc1, 0xd0, 0x77, 0x86, 0xb1,
+  0x32, 0xf1, 0x69, 0x8a, 0xe5, 0x5f, 0x93, 0x24, 0x68, 0xe7, 0x54, 0xae,
+  0x4b, 0x49, 0x82, 0x41, 0x25, 0x45, 0x5b, 0x72, 0x0f, 0x11, 0x88, 0x5b,
+  0x57, 0x68, 0x86, 0x79, 0xfb, 0xf3, 0x94, 0x93, 0x90, 0xee, 0xcc, 0xc1,
+  0x46, 0x99, 0x43, 0x08, 0x50, 0xe4, 0x41, 0x48, 0x1d, 0x49, 0x42, 0xa9,
+  0x03, 0x79, 0xde, 0x08, 0xef, 0xbe, 0xd4, 0x3c, 0xf3, 0x6a, 0xd6, 0xd8,
+  0x16, 0x68, 0xf7, 0x7f, 0xa4, 0x23, 0xf7, 0x51, 0x2f, 0x16, 0xb9, 0x02,
+  0xb9, 0x2f, 0x97, 0x6c, 0x07, 0xb5, 0xb7, 0xac, 0x1e, 0x3b, 0xbe, 0xcd,
+  0xce, 0x14, 0xc4, 0x8a, 0x85, 0xa0, 0x2b, 0x00, 0x10, 0x13, 0x04, 0xd8,
+  0x71, 0xa7, 0xaa, 0xd4, 0xf4, 0x2f, 0x26, 0x30, 0x8b, 0xd2, 0x1d, 0xc1,
+  0x75, 0xb2, 0x85, 0x57, 0x94, 0xb3, 0x1d, 0x4c, 0xab, 0xed, 0xac, 0x2a,
+  0x70, 0x11, 0x63, 0x56, 0xa9, 0x17, 0xc3, 0xd3, 0xc3, 0x6f, 0x87, 0xad,
+  0xac, 0x2e, 0xd3, 0x1a, 0x3e, 0xa4, 0xd5, 0xa1, 0x3a, 0x1b, 0xda, 0x48,
+  0xc3, 0xe3, 0xa6, 0x23, 0x9e, 0x2c, 0x63, 0xa7, 0x87, 0x6f, 0x7e, 0xab,
+  0x08, 0x7d, 0x6d, 0x96, 0x8a, 0xa8, 0x8c, 0x33, 0x8f, 0x70, 0xb8, 0x28,
+  0xd7, 0xbc, 0x9b, 0x8f, 0xf7, 0x4f, 0x59, 0xab, 0x4c, 0x64, 0x42, 0x5a,
+  0x2e, 0x5d, 0x31, 0xca, 0x98, 0x4f, 0x8a, 0xc8, 0x22, 0xb1, 0x8a, 0xd4,
+  0x3f, 0x9c, 0x40, 0xde, 0x99, 0x33, 0x6c, 0xee, 0x35, 0xb7, 0xbb, 0xe9,
+  0x0e, 0x5a, 0x36, 0xce, 0x9c, 0x6b, 0x72, 0x5a, 0xf7, 0xba, 0xab, 0xd2,
+  0x59, 0x48, 0x81, 0x18, 0xd2, 0xad, 0xb4, 0xd7, 0xb4, 0x3a, 0xd0, 0x6c,
+  0x0b, 0xab, 0x67, 0xe9, 0xa2, 0xfb, 0x69, 0x08, 0x90, 0x29, 0x93, 0x64,
+  0x76, 0x2f, 0x49, 0x49, 0xa2, 0x1b, 0x10, 0xfd, 0x0a, 0xbc, 0x12, 0x2f,
+  0x5e, 0x04, 0xba, 0xe0, 0x9d, 0x7d, 0x7a, 0xdf, 0xfc, 0xda, 0xf3, 0x7e,
+  0x4c, 0x09, 0x93, 0x42, 0xde, 0x06, 0xe8, 0xa1, 0xd6, 0x05, 0x12, 0xb1,
+  0x30, 0xbc, 0x82, 0x6c, 0xfc, 0x45, 0x1b, 0xc6, 0x09, 0x76, 0x59, 0xcf,
+  0xc9, 0xfd, 0x35, 0x36, 0xaf, 0xb9, 0xa3, 0x69, 0xcd, 0xd8, 0xa6, 0x25,
+  0x86, 0x99, 0x8a, 0xc9, 0x6e, 0x6f, 0x3d, 0xad, 0xd9, 0x68, 0xee, 0x03,
+  0xba, 0x54, 0xc9, 0x08, 0x18, 0x96, 0xd2, 0x30, 0x4d, 0xb2, 0x74, 0xc6,
+  0xee, 0x8e, 0xce, 0x3e, 0xb2, 0x55, 0xcf, 0x9c, 0x8c, 0xf8, 0xb0, 0xbc,
+  0x3b, 0x1f, 0x7e, 0x4d, 0x77, 0x0e, 0x92, 0x95, 0xd9, 0x74, 0x98, 0x20,
+  0x96, 0xf8, 0xb5, 0x72, 0x6d, 0x97, 0xd8, 0xd5, 0xaa, 0xf7, 0xf0, 0x1c,
+  0xa1, 0xec, 0xd0, 0xa8, 0xcd, 0xc3, 0x1b, 0x3a, 0x26, 0x8a, 0x92, 0x9f,
+  0x86, 0x51, 0x43, 0xed, 0xf7, 0xb4, 0x2b, 0x8f, 0xed, 0xee, 0xb1, 0x9f,
+  0x16, 0xd7, 0xd2, 0x4c, 0xb0, 0xe1, 0x25, 0xe1, 0x6d, 0x77, 0xb0, 0xe3,
+  0xeb, 0x57, 0x36, 0x6f, 0xb5, 0x42, 0x62, 0x5c, 0x83, 0x44, 0x3a, 0xa7,
+  0xa2, 0xd0, 0x48, 0xe0, 0x24, 0xee, 0xbc, 0x26, 0x3f, 0xdb, 0x65, 0x02,
+  0x0b, 0x73, 0x92, 0x84, 0x20, 0x92, 0xf2, 0x98, 0xb3, 0xd9, 0x9c, 0xd3,
+  0xfb, 0x22, 0x95, 0x74, 0x71, 0x8e, 0x9e, 0xba, 0x23, 0xf5, 0xcc, 0x2e,
+  0xb7, 0xf4, 0x91, 0xf3, 0x51, 0xa4, 0xce, 0x1c, 0xa7, 0x84, 0x40, 0xf9,
+  0xcc, 0x32, 0x6e, 0xa9, 0x59, 0x9a, 0x8b, 0x7c, 0xd8, 0x26, 0xf9, 0xa7,
+  0xfd, 0x8c, 0xcb, 0xd6, 0x16, 0x45, 0x15, 0x62, 0x77, 0x41, 0x32, 0x53,
+  0xab, 0x84, 0xf9, 0x8e, 0x48, 0x1a, 0x90, 0x84, 0x64, 0xa8, 0x1a, 0x47,
+  0xe7, 0x9a, 0x1d, 0xdd, 0xb4, 0xb5, 0x94, 0x0e, 0xd9, 0x85, 0xea, 0xac,
+  0x7a, 0x66, 0xda, 0x9d, 0xe6, 0xa6, 0x43, 0x1b, 0x60, 0x4c, 0xd2, 0x82,
+  0x58, 0x22, 0x0b, 0x75, 0x0b, 0x5b, 0xee, 0x92, 0x76, 0xb5, 0xa9, 0x90,
+  0x32, 0xb5, 0x2b, 0x74, 0xf9, 0x1a, 0xe8, 0x25, 0xfd, 0xff, 0x21, 0x33,
+  0x43, 0xea, 0x39, 0xc1, 0xcc, 0x40, 0x6e, 0x35, 0xf7, 0x08, 0x4e, 0x04,
+  0xd9, 0x0a, 0x81, 0x4f, 0x18, 0x52, 0x1d, 0x87, 0xad, 0x79, 0xa0, 0x69,
+  0x7a, 0x90, 0x7f, 0x3a, 0xf6, 0x3c, 0xeb, 0x16, 0x01, 0x13, 0x51, 0xc1,
+  0xcd, 0xad, 0xb9, 0xf2, 0xb9, 0x00, 0x16, 0x06, 0x1d, 0xb6, 0x17, 0xd9,
+  0x57, 0xc4, 0x62, 0x7d, 0x58, 0xa6, 0xfe, 0xb4, 0xaa, 0x2d, 0xb7, 0xa6,
+  0x3d, 0xe5, 0xcd, 0x6f, 0x5d, 0x19, 0x5c, 0x5b, 0xa0, 0x6f, 0x5e, 0xe8,
+  0x7f, 0x10, 0x77, 0xc6, 0x97, 0xfc, 0x85, 0x01, 0xc9, 0x33, 0xf9, 0xc2,
+  0x19, 0x6a, 0x2f, 0xea, 0x03, 0xfb, 0xf2, 0x12, 0x15, 0x24, 0x58, 0x17,
+  0x4f, 0x4e, 0x7b, 0x56, 0xf8, 0x79, 0x2d, 0x58, 0xd0, 0x29, 0x65, 0x8c,
+  0x43, 0xc6, 0x7f, 0xe5, 0x77, 0xc5, 0x78, 0xbc, 0xa7, 0x26, 0x06, 0x9c,
+  0xaf, 0x21, 0xbe, 0x97, 0xbd, 0xdd, 0x6d, 0xee, 0x8c, 0x56, 0x20, 0x86,
+  0x5e, 0x27, 0x5b, 0xd2, 0x61, 0x46, 0x70, 0x10, 0x50, 0x19, 0xcc, 0x0d,
+  0x9c, 0x52, 0x4c, 0x08, 0xeb, 0x33, 0x23, 0x80, 0x84, 0x52, 0x99, 0xd3,
+  0xd5, 0x64, 0xee, 0x5a, 0xe6, 0xa0, 0x2c, 0x65, 0x7d, 0xd6, 0xdc, 0x02,
+  0xf5, 0xac, 0xca, 0x67, 0xb6, 0x52, 0xff, 0xc6, 0xb7, 0x9a, 0x32, 0x8a,
+  0xa8, 0xa4, 0xa8, 0x15, 0x7c, 0x6b, 0xd3, 0x9d, 0xf3, 0x5a, 0x91, 0x15,
+  0x66, 0x47, 0x9f, 0x1f, 0xbc, 0xff, 0xfa, 0x08, 0x9a, 0x00, 0x64, 0x3b,
+  0x1d, 0xd0, 0x9c, 0x76, 0xfb, 0x64, 0x31, 0x86, 0x29, 0x64, 0x66, 0x0c,
+  0x30, 0xb9, 0x7a, 0x20, 0xd9, 0xf0, 0x9c, 0xff, 0x92, 0xca, 0xe6, 0xc5,
+  0x72, 0x0b, 0xf8, 0x6d, 0x2d, 0x51, 0x8f, 0x2a, 0x34, 0x08, 0x40, 0xa5,
+  0x2b, 0x76, 0xbf, 0xd6, 0x8b, 0xd1, 0x1c, 0xd5, 0x76, 0x60, 0x9f, 0x39,
+  0x31, 0xa3, 0x7e, 0x96, 0x41, 0xfb, 0x2c, 0xae, 0x69, 0x6a, 0x94, 0xb5,
+  0xe9, 0x2b, 0xd8, 0xf4, 0x03, 0xdf, 0xab, 0xc6, 0xd4, 0x27, 0xbb, 0x3b,
+  0x3b, 0x8e, 0x95, 0x2e, 0xb5, 0x0d, 0x06, 0xd2, 0xb2, 0x4a, 0x76, 0xfa,
+  0x2f, 0x5f, 0x2e, 0x13, 0x84, 0xb6, 0x51, 0xb0, 0x5d, 0x3c, 0x7b, 0x74,
+  0x9b, 0x7d, 0x7a, 0x74, 0x59, 0x9b, 0x11, 0x8b, 0x06, 0x55, 0x04, 0x05,
+  0x78, 0x58, 0x5b, 0xad, 0x45, 0x3c, 0x3c, 0x1c, 0xad, 0x41, 0x1c, 0xcc,
+  0x56, 0x9f, 0xc3, 0x54, 0xae, 0x25, 0xd6, 0xfe, 0x00, 0x3b, 0x8c, 0x3a,
+  0x83, 0xe6, 0x84, 0x3d, 0xcc, 0x6d, 0xc8, 0xf7, 0x51, 0x13, 0xe3, 0x19,
+  0xf0, 0x4b, 0xa6, 0xe8, 0x32, 0x1c, 0x8d, 0xaa, 0x04, 0x1f, 0xce, 0xc8,
+  0xff, 0x77, 0xfc, 0xfe, 0x6b, 0x76, 0x87, 0x18, 0xdb, 0x1e, 0xbe, 0xf4,
+  0xed, 0x8e, 0xa5, 0xff, 0x41, 0x8a, 0xa4, 0x53, 0x0d, 0x30, 0xc2, 0x7a,
+  0x70, 0x45, 0x82, 0xbc, 0x90, 0xca, 0xe4, 0x76, 0xf5, 0x97, 0xf8, 0x2a,
+  0x2f, 0x92, 0xbe, 0xa7, 0x9c, 0x08, 0xb7, 0x1c, 0x69, 0x26, 0xb3, 0x7b,
+  0xb5, 0x8c, 0xe4, 0x0b, 0x68, 0x5d, 0x23, 0x33, 0xb6, 0x59, 0xb6, 0x73,
+  0xd9, 0x3c, 0xc7, 0x0e, 0x0a, 0x74, 0x93, 0xc8, 0x27, 0xf9, 0x33, 0x38,
+  0xdf, 0x1d, 0x4d, 0xe4, 0x71, 0x5d, 0x69, 0xb9, 0x3a, 0xdb, 0xc4, 0xd6,
+  0xa4, 0x59, 0xf5, 0xd4, 0xf7, 0xd3, 0x75, 0x43, 0x72, 0xc9, 0x40, 0x5f,
+  0xaa, 0xd3, 0x6a, 0x83, 0x30, 0xbf, 0x2c, 0xff, 0xf9, 0x7e, 0xae, 0xe8,
+  0x21, 0x1d, 0x54, 0xba, 0xa9, 0x8a, 0x89, 0xf3, 0x69, 0x48, 0x8f, 0xa3,
+  0x81, 0x90, 0x0b, 0x7e, 0x9f, 0x3f, 0x9d, 0xc6, 0x3f, 0xc7, 0xef, 0xeb,
+  0xd4, 0x44, 0x0e, 0x00, 0xa9, 0xb4, 0xc2, 0x3d, 0x68, 0x59, 0x02, 0xd4,
+  0x96, 0x21, 0x2d, 0x1c, 0x92, 0x23, 0x6f, 0xab, 0x25, 0x6b, 0x89, 0xd0,
+  0x91, 0x80, 0x99, 0x90, 0xf6, 0x10, 0x28, 0x70, 0x70, 0x79, 0x7d, 0x02,
+  0x8e, 0xd4, 0x3c, 0xbf, 0x28, 0x8a, 0x8c, 0x8c, 0x54, 0x14, 0x0e, 0xcd,
+  0xd9, 0x5e, 0xe8, 0xd9, 0x53, 0x54, 0x2d, 0xa4, 0x94, 0x37, 0xc0, 0x0c,
+  0xa6, 0xf3, 0x69, 0x7d, 0x0d, 0x94, 0xa1, 0x75, 0x45, 0x85, 0xea, 0x15,
+  0x3e, 0xcf, 0xed, 0x92, 0x3e, 0xc5, 0xca, 0x14, 0x94, 0xeb, 0xd6, 0x54,
+  0xb4, 0x67, 0x60, 0x6d, 0x8d, 0x9c, 0xf0, 0xdb, 0xe4, 0x8a, 0x1f, 0x86,
+  0x13, 0xa8, 0xbe, 0xf4, 0x95, 0xfe, 0x78, 0x17, 0x63, 0x78, 0xc0, 0x33,
+  0xef, 0x79, 0x4f, 0x1e, 0x7b, 0xe2, 0x58, 0x7f, 0x8f, 0xc4, 0x15, 0x71,
+  0xe8, 0x3c, 0x41, 0x16, 0xdd, 0xea, 0x6d, 0x6f, 0x9a, 0x6f, 0x0b, 0xc0,
+  0xe9, 0x03, 0xcb, 0x0c, 0x65, 0x51, 0x3a, 0xcb, 0xc5, 0x59, 0x6a, 0x67,
+  0x1f, 0x2e, 0x84, 0x2d, 0x4c, 0xc5, 0xbb, 0x5f, 0x2e, 0xca, 0xaf, 0x0b,
+  0x0b, 0x69, 0x46, 0xba, 0x05, 0x9b, 0xbf, 0x88, 0x75, 0x73, 0xf2, 0x25,
+  0xbe, 0x89, 0x11, 0x72, 0x07, 0x7b, 0x36, 0xcb, 0xe6, 0xec, 0x74, 0x78,
+  0x41, 0x6e, 0x04, 0x5c, 0x7d, 0x6a, 0x8f, 0x7e, 0x77, 0x74, 0xfe, 0xd5,
+  0xe9, 0xf0, 0xc8, 0xac, 0xc7, 0x9b, 0xa3, 0xaf, 0x3e, 0x90, 0xd4, 0xa2,
+  0xdd, 0xc1, 0xae, 0x67, 0xca, 0xc0, 0x11, 0xff, 0x17, 0x95, 0xee, 0x45,
+  0x22, 0x1e, 0xb6, 0x29, 0xeb, 0x41, 0x5a, 0xb2, 0xd5, 0xaa, 0x78, 0x5c,
+  0x7a, 0x76, 0x9a, 0xb1, 0xaf, 0x32, 0x47, 0xbe, 0x02, 0xb3, 0x34, 0x49,
+  0xaa, 0x13, 0x8a, 0x55, 0xc2, 0xbc, 0x94, 0xa3, 0xc4, 0x4c, 0xe9, 0xf5,
+  0xbe, 0x73, 0x6a, 0xde, 0xb0, 0x67, 0x5a, 0x0e, 0x9f, 0x2b, 0xaf, 0x09,
+  0xca, 0x28, 0x6c, 0xde, 0x43, 0xab, 0x47, 0x0b, 0x69, 0xd2, 0xb4, 0xe4,
+  0x5b, 0x13, 0x15, 0x21, 0xa9, 0x6d, 0xdc, 0xe3, 0x79, 0x83, 0x2b, 0x9c,
+  0x0d, 0x0a, 0xa9, 0x4e, 0x59, 0xf3, 0xe6, 0xe6, 0x52, 0xbc, 0x04, 0x55,
+  0xcb, 0xbc, 0xca, 0xa4, 0x75, 0xc6, 0x95, 0x2a, 0xf8, 0xd6, 0x96, 0x78,
+  0x38, 0x43, 0x83, 0x85, 0xa9, 0x6d, 0x53, 0x8c, 0xe0, 0x5b, 0x8c, 0x53,
+  0x58, 0xe8, 0xb9, 0xbc, 0xa3, 0xa5, 0x2c, 0xa6, 0x99, 0xf7, 0x4b, 0xed,
+  0xf0, 0xd6, 0xb9, 0x59, 0x2e, 0x7a, 0x2e, 0x78, 0xa4, 0x60, 0xdc, 0x80,
+  0x22, 0x20, 0xa9, 0x4f, 0xe8, 0x77, 0xa7, 0x68, 0x8d, 0x53, 0x50, 0xf8,
+  0xec, 0x52, 0xf2, 0x81, 0x67, 0x42, 0x2e, 0xaf, 0x07, 0xa9, 0xda, 0xac,
+  0x04, 0x98, 0x5c, 0xde, 0x11, 0x0b, 0x57, 0x41, 0xed, 0xd1, 0x92, 0x22,
+  0x24, 0xc0, 0x9b, 0x2f, 0x3c, 0xef, 0xdc, 0x3a, 0xfe, 0x8b, 0x33, 0xea,
+  0x05, 0x4e, 0xd6, 0xd6, 0xd6, 0xde, 0x1c, 0x5d, 0x1c, 0x1c, 0x9f, 0x1c,
+  0xbd, 0x49, 0x8e, 0xdf, 0xbf, 0x3d, 0x3d, 0x7f, 0x77, 0x70, 0x21, 0x70,
+  0x8c, 0x37, 0xd6, 0x23, 0xe7, 0x0a, 0xe9, 0x49, 0xb9, 0x28, 0xcf, 0x5b,
+  0x87, 0x2d, 0x6c, 0x56, 0xd1, 0x4c, 0x06, 0x82, 0xfc, 0x3c, 0x0d, 0x59,
+  0x6b, 0x0e, 0xd6, 0x12, 0x81, 0x71, 0xb8, 0xca, 0x83, 0xa4, 0x17, 0x6c,
+  0xdb, 0xd8, 0xfb, 0x40, 0xa7, 0xd3, 0x52, 0x65, 0x11, 0xa3, 0xf4, 0xca,
+  0xa6, 0x6c, 0x21, 0x59, 0xbe, 0x13, 0x5d, 0xd5, 0x67, 0xec, 0xc9, 0xfe,
+  0xf1, 0x36, 0xd7, 0x2f, 0xf7, 0xaa, 0x52, 0x68, 0x49, 0x21, 0xf0, 0xae,
+  0x50, 0x3b, 0x1e, 0x47, 0xd2, 0x65, 0x09, 0x54, 0x89, 0xdf, 0xa6, 0x65,
+  0xfe, 0xc1, 0x8a, 0x1a, 0x2d, 0x80, 0x61, 0x3c, 0xf8, 0x89, 0xbf, 0xbe,
+  0x44, 0xbd, 0xb3, 0x46, 0xe8, 0xb3, 0x46, 0xea, 0xe1, 0x11, 0x8b, 0x55,
+  0x6d, 0x56, 0xca, 0x9e, 0x75, 0x30, 0x6b, 0x59, 0x81, 0xad, 0xd1, 0x39,
+  0xa1, 0x23, 0xf6, 0x9b, 0xda, 0xb4, 0xf1, 0x7a, 0xa3, 0x31, 0xf5, 0x8f,
+  0x85, 0x1b, 0x9b, 0xe6, 0x62, 0x6b, 0x8d, 0xcb, 0x27, 0x14, 0xca, 0x4a,
+  0x68, 0xd1, 0xa6, 0xce, 0xe2, 0xcf, 0xb7, 0xbd, 0xda, 0x9e, 0x38, 0x6d,
+  0xee, 0xdc, 0x2a, 0x97, 0x79, 0xff, 0x8d, 0x79, 0x68, 0xb2, 0x98, 0xcd,
+  0xdb, 0x85, 0xdb, 0xd9, 0x97, 0xa7, 0x4b, 0xc8, 0x4a, 0x1b, 0x94, 0x0f,
+  0x38, 0x7e, 0xde, 0xca, 0x1c, 0xf0, 0x38, 0xb0, 0xbf, 0x1b, 0x0d, 0x05,
+  0x82, 0x41, 0xc4, 0x46, 0xef, 0xba, 0x15, 0x5a, 0xdb, 0x9a, 0x0b, 0x26,
+  0x64, 0x68, 0x9f, 0xed, 0x96, 0x74, 0x4d, 0x1d, 0xd6, 0x08, 0xf3, 0xbf,
+  0xa9, 0x0c, 0x6f, 0xb4, 0x65, 0xa5, 0x41, 0xb9, 0x2a, 0xc2, 0xe0, 0x63,
+  0x6b, 0x50, 0xfe, 0x8b, 0x6d, 0x48, 0x8f, 0x2f, 0xe9, 0xf5, 0xd3, 0x8e,
+  0xd0, 0xac, 0xdb, 0x03, 0x91, 0xe2, 0x46, 0x9e, 0xdc, 0x6b, 0x2d, 0x13,
+  0xa2, 0xcd, 0x04, 0xdc, 0x88, 0x9c, 0xa5, 0x20, 0x3d, 0x10, 0x49, 0x89,
+  0x80, 0x98, 0x6e, 0xdf, 0x05, 0x2a, 0x74, 0x94, 0x9f, 0xc8, 0x96, 0xd7,
+  0xaa, 0xbc, 0x5e, 0xba, 0x1e, 0xa3, 0xc8, 0x84, 0xcc, 0x10, 0x42, 0xaf,
+  0x58, 0xd3, 0xcc, 0x62, 0x7d, 0x49, 0xf1, 0x8e, 0x90, 0xfe, 0x9b, 0x34,
+  0x57, 0xe0, 0x6a, 0x44, 0x71, 0x95, 0x2c, 0xad, 0x61, 0x50, 0x21, 0x69,
+  0x87, 0xef, 0x0c, 0xeb, 0x86, 0x75, 0xbc, 0x7c, 0x5e, 0xad, 0x42, 0x88,
+  0xe8, 0x49, 0xf2, 0x8a, 0x9e, 0x25, 0xde, 0x23, 0x4b, 0xf2, 0x03, 0x90,
+  0xbe, 0x6d, 0x45, 0x03, 0x1c, 0xa6, 0x19, 0x20, 0xad, 0x05, 0x7a, 0x7a,
+  0x46, 0x0f, 0xa4, 0xaa, 0xe1, 0xaf, 0xbb, 0xba, 0x52, 0xeb, 0xf3, 0x6b,
+  0xf3, 0x8d, 0xf5, 0xe4, 0x8a, 0x6c, 0xa4, 0x91, 0xe9, 0x7a, 0x20, 0x40,
+  0x27, 0xfc, 0xf8, 0xeb, 0xf3, 0xf4, 0x32, 0xcd, 0xa6, 0x7f, 0xda, 0xdb,
+  0x19, 0xa6, 0x57, 0x8b, 0x69, 0xfa, 0x6f, 0x78, 0xf1, 0xf5, 0x93, 0x27,
+  0x7b, 0x3b, 0x9f, 0xbd, 0xd8, 0x59, 0xef, 0xa2, 0x0f, 0x1c, 0x83, 0x09,
+  0x10, 0x36, 0x60, 0xdd, 0x21, 0xb9, 0x8b, 0xef, 0x0c, 0xc6, 0x57, 0x39,
+  0x8c, 0x3a, 0x52, 0x94, 0x64, 0x0e, 0x52, 0xb6, 0x26, 0x21, 0x26, 0x39,
+  0x47, 0xd9, 0xec, 0xe0, 0xda, 0xec, 0xeb, 0x3f, 0xee, 0xee, 0xb3, 0x28,
+  0xbb, 0x82, 0xf3, 0x3d, 0xe5, 0x1d, 0x9b, 0xbc, 0xca, 0x0b, 0x73, 0x03,
+  0x7d, 0x91, 0x34, 0xe9, 0x95, 0xdd, 0xab, 0x68, 0x01, 0xab, 0x61, 0x97,
+  0xb3, 0x41, 0x88, 0x7a, 0xaa, 0xb0, 0xe8, 0x63, 0x29, 0xf1, 0xb6, 0x41,
+  0xde, 0x8f, 0x75, 0x76, 0x7f, 0xac, 0xa3, 0x03, 0x3d, 0x5b, 0xd7, 0xbb,
+  0x3f, 0xd1, 0x4e, 0x0d, 0xf0, 0x77, 0x90, 0x7c, 0xa4, 0xcc, 0xcf, 0xb8,
+  0x3e, 0xe7, 0xb4, 0x7a, 0x5b, 0xed, 0x8b, 0xfd, 0x64, 0x79, 0xab, 0x0b,
+  0xa9, 0xc3, 0x62, 0x26, 0xaf, 0xd4, 0xa1, 0xb3, 0xfb, 0xc5, 0x6b, 0xac,
+  0xdd, 0xee, 0x17, 0xff, 0x66, 0x7f, 0xb6, 0x27, 0x3f, 0xdb, 0xfb, 0xe2,
+  0xdf, 0x06, 0x03, 0xf4, 0x8f, 0x16, 0x73, 0x43, 0x7f, 0xbd, 0x21, 0xf4,
+  0x41, 0xa9, 0x9c, 0x36, 0xfe, 0x17, 0x59, 0xd8, 0x5c, 0x22, 0x0c, 0xcb,
+  0xb2, 0xae, 0x5f, 0xf6, 0x27, 0xa4, 0x27, 0xc1, 0x4f, 0x2b, 0x62, 0xf2,
+  0xda, 0x27, 0x02, 0xac, 0x63, 0xf3, 0x63, 0x43, 0x16, 0x68, 0x47, 0x10,
+  0x8f, 0x78, 0xf9, 0xcf, 0xb4, 0xa9, 0xfe, 0xbc, 0x96, 0x48, 0x20, 0x72,
+  0x9e, 0x55, 0x46, 0x0d, 0xa6, 0xd8, 0x84, 0xee, 0x30, 0xa6, 0x99, 0x62,
+  0x96, 0x6a, 0x6a, 0x99, 0x12, 0x3b, 0xe8, 0xba, 0xf2, 0x0a, 0x5e, 0xfd,
+  0x45, 0xc8, 0x4b, 0x78, 0x6d, 0xd6, 0x12, 0xfb, 0x0c, 0x27, 0xc0, 0x18,
+  0x75, 0xa0, 0xa1, 0x83, 0x8c, 0x67, 0xff, 0xf4, 0xc3, 0x0f, 0xa2, 0xfb,
+  0x98, 0xbf, 0x48, 0xcf, 0xaf, 0x8d, 0xd8, 0x98, 0x18, 0x49, 0x34, 0x43,
+  0x05, 0x1d, 0xa9, 0x51, 0x26, 0xb7, 0xf3, 0xa5, 0x8c, 0x94, 0x1b, 0x31,
+  0x4b, 0x7b, 0x30, 0x3c, 0x3c, 0x3e, 0x06, 0xb8, 0x13, 0x93, 0x7a, 0xc4,
+  0x12, 0x07, 0xdb, 0x68, 0x13, 0x68, 0x0c, 0x87, 0x20, 0xf4, 0x77, 0x29,
+  0xad, 0x1d, 0x96, 0x1d, 0x1b, 0xd5, 0x34, 0xa6, 0xb6, 0xb2, 0x2c, 0x25,
+  0xb6, 0x17, 0x2b, 0x24, 0xaf, 0xd7, 0xf9, 0xc1, 0xab, 0x7c, 0x5d, 0xe2,
+  0x4d, 0xfc, 0x93, 0x75, 0x47, 0x49, 0xc6, 0xeb, 0x81, 0x45, 0x7b, 0xcd,
+  0x5a, 0x4e, 0xfe, 0x8f, 0xec, 0xf5, 0xee, 0x4e, 0xfc, 0x09, 0x04, 0x58,
+  0x89, 0x84, 0xf1, 0xb5, 0x8b, 0xdd, 0xad, 0x7a, 0x3e, 0x9f, 0xf0, 0xd3,
+  0x52, 0xe3, 0x1b, 0xe5, 0xd6, 0x5e, 0xaf, 0x8f, 0xe8, 0x32, 0xa4, 0xff,
+  0xbf, 0xa4, 0x1f, 0x08, 0x2e, 0xc9, 0xb3, 0xf5, 0x62, 0x34, 0xcb, 0x5b,
+  0x1d, 0xde, 0xa6, 0x01, 0x7e, 0x41, 0x03, 0xfe, 0x3e, 0xb3, 0xbb, 0x23,
+  0x23, 0x2d, 0x8c, 0xd5, 0xb4, 0x8d, 0xcb, 0xb2, 0x1c, 0xa5, 0xd5, 0x86,
+  0x44, 0x5e, 0xb4, 0x9f, 0x1b, 0xbb, 0x7b, 0x4f, 0x9e, 0x3e, 0xdb, 0x18,
+  0x88, 0x4a, 0x85, 0xd3, 0xdc, 0xf8, 0x54, 0x24, 0xdc, 0x84, 0x65, 0xd0,
+  0x60, 0x10, 0x35, 0x52, 0xf7, 0x63, 0x71, 0x50, 0x12, 0x38, 0xf4, 0xb9,
+  0xd7, 0xfc, 0xb5, 0x7f, 0xa3, 0xef, 0xbc, 0xc6, 0x27, 0xfe, 0x2d, 0x9f,
+  0xbc, 0xb6, 0x23, 0xfc, 0x37, 0x1a, 0xcb, 0x6b, 0x19, 0x84, 0x59, 0x57,
+  0x4d, 0x2f, 0xac, 0xb7, 0xd6, 0xa2, 0x22, 0x28, 0xba, 0xb8, 0xba, 0x88,
+  0x6b, 0x18, 0x34, 0xc0, 0x06, 0xfd, 0x09, 0x07, 0x2a, 0xa0, 0x58, 0xba,
+  0xdc, 0xba, 0xed, 0xbb, 0xbe, 0x69, 0xa5, 0x4f, 0xad, 0xf4, 0x9d, 0x6c,
+  0x05, 0x77, 0x66, 0x9f, 0x16, 0xa2, 0x27, 0xc9, 0x95, 0x53, 0x38, 0x44,
+  0xe4, 0xd6, 0x2e, 0x4b, 0xc4, 0xeb, 0x0f, 0xbf, 0x3e, 0xde, 0x10, 0x8c,
+  0x0c, 0x5b, 0x74, 0xbd, 0x98, 0x2b, 0xd9, 0xa2, 0x01, 0xc7, 0xe9, 0x9c,
+  0x4e, 0xff, 0x9a, 0xd2, 0x03, 0xa7, 0x04, 0xf9, 0xa0, 0xef, 0x72, 0x26,
+  0xb4, 0xf9, 0x98, 0x5c, 0x10, 0x53, 0x72, 0x4e, 0x57, 0xcc, 0xea, 0xe9,
+  0x35, 0x63, 0xe6, 0xa5, 0x16, 0xec, 0x07, 0xc2, 0x33, 0x73, 0x9b, 0x48,
+  0xd9, 0x7f, 0x6b, 0xe3, 0x93, 0x36, 0x71, 0x4f, 0x1e, 0x35, 0xbf, 0x62,
+  0x79, 0xa2, 0x22, 0x62, 0x7d, 0xa0, 0x15, 0xd4, 0x79, 0x27, 0xf8, 0xd2,
+  0x03, 0xc9, 0xfc, 0xa3, 0x4c, 0xd2, 0x2f, 0xd9, 0xc3, 0xc1, 0x3a, 0x1c,
+  0xc9, 0xcf, 0x57, 0xb6, 0x74, 0xe1, 0x17, 0x09, 0x58, 0xbe, 0xf9, 0x2d,
+  0x09, 0x11, 0x8a, 0xaf, 0x88, 0xdd, 0xab, 0x78, 0x69, 0xcd, 0x95, 0x4b,
+  0xe4, 0x19, 0x71, 0xc0, 0x19, 0xb9, 0xc3, 0x7d, 0xfa, 0xd2, 0xd1, 0xbd,
+  0xf8, 0x05, 0xa8, 0x85, 0x8d, 0xcf, 0x71, 0x08, 0x5e, 0xd1, 0x32, 0xe0,
+  0xd7, 0x5f, 0x6c, 0xac, 0xd9, 0xca, 0x5d, 0x56, 0xc9, 0xee, 0xc4, 0x7a,
+  0x79, 0x83, 0xfa, 0xe3, 0xf1, 0xf8, 0x12, 0x58, 0x71, 0x22, 0x7e, 0x16,
+  0x94, 0xe7, 0x30, 0x8a, 0xcf, 0x74, 0x22, 0x75, 0x8f, 0xad, 0x2f, 0x99,
+  0x1b, 0xcf, 0x88, 0xe2, 0x86, 0x14, 0xbd, 0x0d, 0x02, 0x96, 0xe2, 0xbd,
+  0x0d, 0x4b, 0x55, 0x0b, 0xf7, 0x26, 0x04, 0x5e, 0x95, 0x69, 0x39, 0xde,
+  0x35, 0x49, 0xb6, 0x77, 0x8a, 0xb7, 0x3f, 0xb0, 0xda, 0xbb, 0xe7, 0x5d,
+  0xfa, 0x22, 0x53, 0x16, 0x05, 0x47, 0xe4, 0x2d, 0xe5, 0x05, 0xcb, 0x47,
+  0x5f, 0xd3, 0x74, 0xef, 0x0e, 0xae, 0xf2, 0x4b, 0x9e, 0x0c, 0x23, 0x22,
+  0xaf, 0xb2, 0x6d, 0xf3, 0xcf, 0x9e, 0xf9, 0xf9, 0x1e, 0x29, 0x50, 0xf4,
+  0x97, 0x27, 0x80, 0x4e, 0xf9, 0xd7, 0xb4, 0x77, 0x36, 0xec, 0xb9, 0xa0,
+  0xbf, 0xe4, 0xf6, 0x7a, 0x96, 0x00, 0x8c, 0xf4, 0xb2, 0xaf, 0xec, 0xb1,
+  0x48, 0x9a, 0x53, 0xad, 0xd0, 0xc7, 0x7f, 0x90, 0x4d, 0x44, 0xd6, 0xe3,
+  0x82, 0xb2, 0x55, 0x2c, 0xce, 0x43, 0x30, 0x0f, 0xa2, 0x53, 0x93, 0x8a,
+  0x9c, 0x8b, 0x27, 0x85, 0xb2, 0x7b, 0x70, 0xb3, 0x66, 0xb7, 0x5b, 0x3d,
+  0x1f, 0x14, 0x6b, 0xc4, 0xfb, 0x0d, 0xe5, 0xca, 0x13, 0x9f, 0x88, 0xcb,
+  0xb4, 0xa4, 0xcf, 0x6f, 0x4a, 0x95, 0x4b, 0x2f, 0x87, 0x18, 0xcb, 0x9c,
+  0x77, 0x57, 0xb0, 0x5d, 0x28, 0x92, 0x31, 0x77, 0x79, 0xdd, 0x6c, 0xd1,
+  0x67, 0xb2, 0x29, 0x93, 0xa7, 0x49, 0x89, 0x58, 0xfd, 0xaa, 0xb2, 0xa6,
+  0xe1, 0x43, 0x1b, 0xfe, 0xd9, 0x2f, 0xc7, 0x4d, 0x66, 0xcc, 0x52, 0x24,
+  0x1b, 0xb0, 0x9c, 0x3b, 0x9a, 0x31, 0x41, 0x34, 0xb6, 0xf0, 0xb4, 0xcf,
+  0xb7, 0xa7, 0x68, 0x2f, 0xfd, 0xb7, 0x83, 0xe4, 0x04, 0xe0, 0xee, 0x3a,
+  0x65, 0x72, 0x1e, 0xbd, 0x61, 0x75, 0x37, 0x98, 0xad, 0xc3, 0xea, 0xf2,
+  0x1a, 0x97, 0xef, 0x24, 0xa2, 0x0b, 0xdd, 0x52, 0xa0, 0x01, 0x75, 0xf6,
+  0x21, 0xeb, 0x17, 0xa2, 0x8f, 0xf4, 0xe0, 0xb6, 0xb6, 0xcf, 0xc1, 0x3d,
+  0xcf, 0x2e, 0x3a, 0xa4, 0x75, 0xd9, 0x0d, 0xeb, 0x35, 0xc2, 0xf8, 0x2a,
+  0xd1, 0x15, 0x3d, 0xb1, 0x6e, 0x0f, 0x01, 0xa3, 0x1f, 0x33, 0xf6, 0x8f,
+  0x10, 0xe3, 0x02, 0x71, 0x04, 0x21, 0x7c, 0x6b, 0x5a, 0xc3, 0x2e, 0xa3,
+  0x0a, 0x9e, 0xb4, 0x8d, 0xd6, 0x61, 0xe2, 0x4d, 0x33, 0x6b, 0x07, 0xf3,
+  0x5a, 0x95, 0x16, 0x19, 0x0e, 0xb7, 0x89, 0x90, 0x1f, 0xdb, 0xc8, 0x1a,
+  0x75, 0x92, 0xfa, 0x95, 0xde, 0x98, 0xbf, 0x90, 0xe7, 0x70, 0x54, 0x99,
+  0x55, 0xcf, 0x2a, 0xbe, 0x1a, 0x18, 0xce, 0xe3, 0x95, 0x33, 0xfd, 0xe6,
+  0xe2, 0xdd, 0x49, 0xa2, 0x24, 0x47, 0x97, 0x4e, 0xab, 0x53, 0x10, 0x25,
+  0x86, 0x28, 0x4e, 0x0c, 0xd6, 0x87, 0xe4, 0x29, 0xbe, 0xe5, 0x78, 0x6e,
+  0x29, 0xff, 0x3d, 0xa1, 0xc9, 0x69, 0x1d, 0x59, 0xef, 0x09, 0x7e, 0x75,
+  0x8d, 0xa9, 0xd7, 0x36, 0x68, 0x0a, 0x36, 0x7a, 0xc9, 0x06, 0x75, 0x95,
+  0x7e, 0xb1, 0x81, 0xf9, 0xc4, 0x8f, 0xbd, 0xe9, 0xdb, 0x18, 0x44, 0x4e,
+  0x21, 0x3d, 0xf3, 0xfa, 0xcb, 0xd6, 0x2c, 0xe1, 0xe7, 0xda, 0xd4, 0x6b,
+  0x4e, 0xed, 0x08, 0xd4, 0x63, 0x7d, 0xd7, 0x6b, 0xff, 0xf5, 0x61, 0x49,
+  0xbc, 0xaf, 0x54, 0x2e, 0xd5, 0x21, 0x52, 0xc7, 0xf6, 0x67, 0x39, 0x72,
+  0x61, 0x83, 0x86, 0x1e, 0x3e, 0xc5, 0x17, 0x2a, 0x8a, 0x2c, 0x5a, 0x93,
+  0xa5, 0x1b, 0x6f, 0x01, 0x95, 0xbc, 0x66, 0x35, 0x73, 0x36, 0xd1, 0x6e,
+  0x4b, 0x38, 0x04, 0x20, 0x73, 0x76, 0x07, 0xc8, 0x8d, 0x74, 0x3c, 0xf5,
+  0xb6, 0x01, 0x6b, 0x67, 0xaf, 0x63, 0x42, 0xd7, 0x2d, 0x80, 0x56, 0xad,
+  0x6f, 0x9d, 0xe5, 0x98, 0xec, 0x9a, 0xe7, 0x63, 0xca, 0xae, 0x31, 0xa2,
+  0x6b, 0x52, 0x5e, 0x91, 0xe4, 0xea, 0x99, 0x83, 0x46, 0x7f, 0x02, 0x3b,
+  0xbc, 0x27, 0x1f, 0xe5, 0x0e, 0xe3, 0xac, 0x70, 0xa8, 0x45, 0xff, 0xbd,
+  0x04, 0x4d, 0xfa, 0x96, 0xbc, 0x96, 0x63, 0x69, 0xdb, 0x36, 0xcd, 0xeb,
   0x61, 0xda, 0xb7, 0xbf, 0xf0, 0xbf, 0xa5, 0x93, 0x93, 0x4a, 0xcb, 0x5c,
-  0x41, 0x56, 0x4a, 0xec, 0xce, 0xee, 0x6d, 0xfd, 0x2c, 0x38, 0xb8, 0x88,
-  0xfa, 0x9d, 0xef, 0xad, 0x99, 0x64, 0x01, 0x6e, 0x7e, 0xb5, 0xc9, 0x39,
-  0x02, 0x9b, 0x2f, 0x37, 0x21, 0xc1, 0x48, 0x2e, 0xcd, 0xc7, 0x19, 0x72,
-  0xd5, 0xe4, 0x72, 0xda, 0xe4, 0x5b, 0x71, 0xc0, 0xba, 0x83, 0x10, 0x5c,
-  0xba, 0x03, 0x82, 0x6b, 0xd9, 0x99, 0x91, 0x3e, 0x78, 0x12, 0x6e, 0x02,
-  0x94, 0x60, 0x41, 0xaf, 0x88, 0xa5, 0x79, 0xdc, 0x30, 0x50, 0x46, 0x2e,
-  0x5d, 0xa8, 0x65, 0x20, 0x56, 0x21, 0xae, 0x21, 0x71, 0x73, 0x2e, 0x8b,
-  0x05, 0xa5, 0xd2, 0x4f, 0x1a, 0x78, 0x5b, 0xf8, 0x2c, 0x0d, 0x93, 0xf7,
-  0xc5, 0x94, 0xcb, 0xce, 0x93, 0xb1, 0x9c, 0x57, 0x93, 0xe5, 0x9c, 0x5c,
-  0x15, 0x13, 0x72, 0x90, 0xe1, 0xe2, 0x61, 0xf5, 0xa0, 0x15, 0x9e, 0xf7,
-  0x3b, 0xcc, 0xce, 0x11, 0x76, 0x98, 0xcb, 0x77, 0x01, 0x45, 0x21, 0x00,
-  0x96, 0x38, 0xc4, 0xa1, 0x15, 0x58, 0x82, 0x15, 0x11, 0x40, 0x14, 0x19,
-  0x3c, 0x7e, 0x73, 0x7c, 0x71, 0x71, 0x7c, 0x41, 0xf3, 0x7d, 0xd8, 0x29,
-  0x54, 0xa6, 0xfc, 0xd0, 0x2e, 0xd4, 0xa8, 0xb0, 0x5f, 0xdf, 0x53, 0xa3,
-  0x59, 0x49, 0x24, 0x0a, 0xa5, 0x4a, 0x17, 0x2c, 0x08, 0xa6, 0x14, 0xe2,
-  0x4a, 0x10, 0xbe, 0x7b, 0x11, 0xb0, 0x6f, 0x1b, 0x36, 0x00, 0x0c, 0x0a,
-  0x0e, 0xc8, 0x96, 0x6e, 0xe1, 0x5a, 0xa8, 0xa4, 0x38, 0xc0, 0x52, 0x33,
-  0xf8, 0x6f, 0xb2, 0x96, 0x9a, 0x3a, 0x14, 0xa4, 0x6e, 0x26, 0xc1, 0xf4,
-  0x99, 0xf5, 0x4f, 0x60, 0xc8, 0x57, 0x74, 0x46, 0xc9, 0x76, 0xc2, 0x64,
-  0xd4, 0xcd, 0x72, 0x91, 0x4f, 0xad, 0xb7, 0xd7, 0xfc, 0xdc, 0xa8, 0x7f,
-  0x09, 0x9f, 0xf2, 0x5a, 0xb1, 0x2e, 0x88, 0x6a, 0xaa, 0x33, 0xc2, 0xf7,
-  0xb6, 0x75, 0xca, 0x78, 0x27, 0x48, 0x7c, 0x63, 0xd0, 0x98, 0x72, 0xbe,
-  0xb7, 0x53, 0xd1, 0x65, 0xef, 0x67, 0xf0, 0x32, 0x92, 0xb4, 0x50, 0xf8,
-  0x8d, 0x2f, 0x19, 0xc8, 0x97, 0x35, 0x77, 0x78, 0x77, 0x57, 0xf6, 0xf7,
-  0x02, 0x19, 0xa8, 0xd5, 0x41, 0xf2, 0x97, 0x3a, 0x9f, 0xfc, 0xec, 0x2e,
-  0x0f, 0xa4, 0xff, 0xb4, 0x39, 0xaf, 0x30, 0x75, 0x32, 0x51, 0x62, 0x0c,
-  0x73, 0xe6, 0xf7, 0xfb, 0xd1, 0xf1, 0x45, 0x72, 0xf8, 0x0d, 0x91, 0x9d,
-  0xff, 0x83, 0x0b, 0x4c, 0xcf, 0xc9, 0xed, 0xb0, 0x21, 0x1c, 0x8e, 0x42,
-  0x83, 0x92, 0xa9, 0x2b, 0x5c, 0xaa, 0x06, 0x1e, 0xb5, 0x01, 0x6e, 0xdc,
-  0x2b, 0x77, 0xdd, 0xb7, 0xd7, 0x90, 0xdc, 0x85, 0x0f, 0xac, 0xe2, 0x63,
-  0xd6, 0x90, 0x0e, 0x99, 0xbf, 0x8a, 0x4c, 0xa0, 0xc4, 0x21, 0x09, 0x5d,
-  0x1b, 0xe9, 0x7d, 0x1d, 0x98, 0x9d, 0xbc, 0x4a, 0x87, 0xc9, 0xe6, 0xdb,
-  0xf2, 0xef, 0x46, 0x19, 0x48, 0x77, 0x9e, 0x0c, 0x77, 0x93, 0xad, 0x1f,
-  0xf2, 0xe2, 0xc5, 0xb3, 0x2f, 0x92, 0x93, 0xed, 0xcd, 0x16, 0x98, 0x9f,
-  0xab, 0xad, 0x8c, 0xd3, 0xe2, 0xa3, 0x5d, 0xb2, 0x33, 0x9c, 0x6c, 0x06,
-  0xd5, 0x89, 0xf3, 0xa1, 0xe6, 0x4a, 0x07, 0x2b, 0x5b, 0x44, 0x9e, 0xa8,
-  0xe4, 0x05, 0x24, 0xdf, 0x4b, 0xba, 0xf3, 0x13, 0x58, 0xf9, 0xe6, 0xa9,
-  0x29, 0x4d, 0xdd, 0x8b, 0x67, 0x41, 0x13, 0x4f, 0x6d, 0x1b, 0xef, 0xb9,
-  0x8d, 0x5f, 0xd8, 0xc4, 0xfe, 0x70, 0x77, 0x3f, 0xd9, 0x3a, 0x1b, 0xed,
-  0xec, 0xdb, 0x16, 0xc2, 0x26, 0xf6, 0xd1, 0x04, 0x3d, 0xd4, 0x7e, 0xf9,
-  0x29, 0x7d, 0xff, 0x2f, 0x59, 0xf1, 0x73, 0xb2, 0xf5, 0xe3, 0xde, 0x9e,
-  0x69, 0xe0, 0x8b, 0xe4, 0xf0, 0xe4, 0xc7, 0xe4, 0xe9, 0xd0, 0x34, 0xf6,
-  0x2e, 0xbd, 0x95, 0xe6, 0x84, 0xb0, 0x79, 0x84, 0x46, 0xcc, 0xef, 0x83,
-  0x36, 0x9e, 0x75, 0xda, 0x38, 0x35, 0x76, 0xe1, 0x27, 0x73, 0xad, 0xec,
-  0x0e, 0x9f, 0xec, 0x27, 0xf9, 0xb3, 0xcf, 0x9f, 0x6b, 0x43, 0xd2, 0x06,
-  0x7e, 0xdf, 0xf6, 0x56, 0x32, 0xbb, 0x8a, 0x51, 0x75, 0x8e, 0x3f, 0x19,
-  0x81, 0x06, 0x11, 0x51, 0x91, 0xa7, 0xf0, 0x26, 0xad, 0xa6, 0xb2, 0xdd,
-  0xa8, 0x0c, 0x8b, 0x59, 0x29, 0x61, 0xcb, 0xcf, 0xe0, 0xb6, 0x34, 0x17,
-  0xe7, 0x41, 0xd0, 0x1d, 0xb2, 0x4d, 0xf5, 0xd1, 0x2f, 0x92, 0xb7, 0xa3,
-  0x93, 0x63, 0x33, 0xa2, 0x5d, 0xd3, 0x35, 0x37, 0x87, 0xdc, 0x21, 0xfc,
-  0x0a, 0x93, 0xfb, 0x02, 0x8c, 0xb6, 0xd2, 0x86, 0xea, 0xdc, 0x0c, 0x64,
-  0x35, 0x9b, 0xce, 0x5c, 0xdc, 0x35, 0xbe, 0x4b, 0x90, 0x94, 0xc1, 0xe1,
-  0x35, 0x99, 0x10, 0x7c, 0xd5, 0xe2, 0xd3, 0xdf, 0x95, 0x85, 0x39, 0x26,
-  0x55, 0x59, 0x11, 0x72, 0x6a, 0xb3, 0xa5, 0x2d, 0x7c, 0xf7, 0xfa, 0x98,
-  0x33, 0xf0, 0xdf, 0xa6, 0x85, 0x91, 0x91, 0x44, 0xa4, 0x55, 0x7f, 0xa4,
-  0xf8, 0x3f, 0x87, 0x73, 0xf8, 0xfd, 0xd3, 0xfb, 0xe2, 0x93, 0x59, 0xc7,
-  0xcf, 0x86, 0x7b, 0x04, 0xd9, 0x26, 0xab, 0xf7, 0xcd, 0x5b, 0xf3, 0xef,
-  0xbd, 0xa7, 0x9b, 0x09, 0xfd, 0xaa, 0x6d, 0xc1, 0xeb, 0x79, 0xdd, 0x38,
-  0x3a, 0x3b, 0xfb, 0xee, 0x84, 0x01, 0x20, 0x47, 0xe2, 0x56, 0x25, 0xe5,
-  0xca, 0x5a, 0xc5, 0x2c, 0x5d, 0x8d, 0xf5, 0xe6, 0xb2, 0x95, 0x10, 0x8c,
-  0xfb, 0x98, 0x65, 0x0b, 0xe4, 0x0c, 0x77, 0x24, 0x42, 0x23, 0x32, 0xda,
-  0x62, 0x9b, 0x48, 0xfd, 0xe9, 0xf0, 0x7d, 0x36, 0xb5, 0x75, 0xe1, 0x8e,
-  0xef, 0x2d, 0xcb, 0x47, 0xea, 0x8a, 0xf2, 0xa2, 0x8b, 0x36, 0x5b, 0x41,
-  0x5d, 0xd0, 0x58, 0x61, 0x2a, 0xf8, 0x23, 0xb6, 0xef, 0xe6, 0xc8, 0x68,
-  0xf7, 0xdc, 0xe9, 0x03, 0xf1, 0xda, 0x6e, 0x7a, 0xfc, 0xf9, 0xd0, 0x68,
-  0x91, 0xae, 0xc3, 0x10, 0x35, 0x32, 0x10, 0x04, 0x38, 0x2f, 0xb2, 0x19,
-  0x35, 0xd3, 0x33, 0xc0, 0xf3, 0xde, 0x1d, 0xbe, 0x3d, 0x7e, 0xf5, 0xfd,
-  0xe1, 0xe9, 0xfb, 0x63, 0xf3, 0x4a, 0x6e, 0x3e, 0xb6, 0xe5, 0x20, 0x7c,
-  0xe8, 0xe3, 0x3c, 0x9f, 0x94, 0x33, 0x8a, 0x32, 0x6d, 0x7e, 0xb1, 0xb9,
-  0xc1, 0xf0, 0xf2, 0xa4, 0x47, 0x6f, 0xed, 0xf1, 0x6b, 0x66, 0x5f, 0xd0,
-  0xbf, 0xf6, 0xf9, 0x5f, 0xfb, 0x5f, 0xf4, 0xb6, 0x5b, 0x83, 0x0e, 0xac,
-  0xe4, 0x2b, 0x94, 0xe5, 0x44, 0x39, 0x45, 0x54, 0xa0, 0x46, 0xee, 0x06,
-  0xcf, 0x4a, 0x4f, 0x63, 0x34, 0x7a, 0xb7, 0xd1, 0xb3, 0x5b, 0xe3, 0x7b,
-  0xdf, 0x06, 0xef, 0xd1, 0x4b, 0xaf, 0xa0, 0x60, 0xf4, 0xb6, 0xfb, 0x56,
-  0xe5, 0x40, 0xa8, 0x9c, 0xda, 0xd0, 0x26, 0x98, 0x79, 0x32, 0xd9, 0xea,
-  0xf1, 0x5f, 0x5e, 0xbd, 0x3e, 0xbc, 0x3c, 0xa6, 0x17, 0xf4, 0xf3, 0x82,
-  0x46, 0xb4, 0x69, 0x14, 0xd4, 0x9f, 0x2d, 0x09, 0x4d, 0xbf, 0xa2, 0x01,
-  0xf5, 0xb6, 0x39, 0x96, 0x81, 0xa0, 0x7a, 0xa7, 0x5f, 0x65, 0xa1, 0xc0,
-  0x6d, 0x97, 0xd5, 0x5e, 0x2b, 0x62, 0x65, 0xab, 0xc7, 0xbf, 0xeb, 0x59,
-  0x0f, 0xae, 0x94, 0x81, 0x91, 0x70, 0xe5, 0x14, 0x49, 0x16, 0x41, 0x66,
-  0x2d, 0x43, 0xd2, 0xdc, 0xfa, 0x48, 0xb0, 0x82, 0x3d, 0x4e, 0x5e, 0x41,
-  0x01, 0xbb, 0xf0, 0x92, 0x36, 0x4f, 0x3e, 0xa6, 0xb2, 0xdc, 0xdb, 0x7f,
-  0xf2, 0x05, 0xe6, 0xf3, 0x55, 0x6f, 0xc7, 0xdc, 0x0d, 0xbd, 0x2f, 0xe8,
-  0xd3, 0x79, 0xe3, 0x95, 0xc5, 0x93, 0xcf, 0x90, 0x3d, 0x25, 0x3b, 0x8a,
-  0xe1, 0x32, 0xb4, 0xea, 0x1e, 0x1b, 0x10, 0x26, 0xf4, 0x8e, 0xb3, 0xc4,
-  0x94, 0x3b, 0x47, 0xc1, 0x03, 0x58, 0x2f, 0xd4, 0xf3, 0x42, 0xa9, 0x12,
-  0x76, 0xea, 0xe2, 0x73, 0xfe, 0xfd, 0xd1, 0xe7, 0x77, 0x79, 0x8c, 0xc2,
-  0x37, 0x44, 0xdf, 0x9c, 0xdf, 0x6b, 0x22, 0x19, 0xbe, 0x05, 0x9d, 0x9c,
-  0xd7, 0x2c, 0xd0, 0x8c, 0xc7, 0xe2, 0xdb, 0x51, 0x63, 0x04, 0x3a, 0x81,
-  0x11, 0x2d, 0xf7, 0x50, 0x94, 0x80, 0x36, 0xf0, 0x41, 0x16, 0x7a, 0x67,
-  0xa7, 0xe3, 0xdc, 0x68, 0xc2, 0x36, 0x35, 0xc6, 0xb3, 0xca, 0xed, 0xd4,
-  0xeb, 0xf1, 0xcb, 0x3d, 0x22, 0xa7, 0x0d, 0xcb, 0x7f, 0x5a, 0x5b, 0x1f,
-  0x12, 0xa2, 0x8d, 0xf2, 0x6c, 0x7b, 0x9d, 0x3a, 0xf9, 0x68, 0x18, 0x06,
-  0x9b, 0xf4, 0x6c, 0x1f, 0x1b, 0x51, 0x53, 0x64, 0xd5, 0x5a, 0x80, 0x45,
-  0x24, 0x18, 0x85, 0x21, 0xfa, 0xf4, 0xfc, 0xe6, 0x9d, 0xe1, 0x70, 0x68,
-  0xcd, 0x1d, 0x04, 0xd2, 0x24, 0x06, 0x45, 0x14, 0x79, 0x3e, 0xf7, 0x30,
-  0xe6, 0x78, 0x0b, 0xca, 0x3c, 0x14, 0xea, 0x6d, 0x01, 0xde, 0x88, 0x9f,
-  0xc0, 0x1e, 0x0d, 0xcf, 0xc7, 0xb1, 0x29, 0x9f, 0xdd, 0x54, 0x8e, 0x87,
-  0x8f, 0xb1, 0x45, 0x58, 0xd3, 0x37, 0xf6, 0x3d, 0x4a, 0x81, 0x20, 0x2b,
-  0xa7, 0x4a, 0x3b, 0x17, 0xb4, 0x83, 0x09, 0x40, 0xce, 0x75, 0xec, 0xb0,
-  0x24, 0x3c, 0x69, 0xd2, 0x95, 0x3e, 0x63, 0x0f, 0x48, 0xc8, 0x95, 0x77,
-  0xe0, 0x33, 0x00, 0x6b, 0x02, 0x61, 0x4f, 0x0a, 0x76, 0x0f, 0xe8, 0x0d,
-  0xb2, 0xb0, 0x6a, 0xb3, 0xb4, 0x23, 0x3c, 0xd4, 0x64, 0x33, 0x43, 0xf7,
-  0x97, 0x2c, 0x47, 0x61, 0xaf, 0xa9, 0x35, 0x89, 0xc7, 0xa8, 0x6d, 0x25,
-  0x98, 0x1a, 0x74, 0xf0, 0xce, 0x5d, 0x45, 0x68, 0xb3, 0x01, 0xf3, 0xbf,
-  0x68, 0x22, 0xa2, 0x4a, 0x0f, 0xe1, 0x00, 0x59, 0x17, 0x2f, 0x9f, 0x68,
-  0x8b, 0x36, 0x58, 0xde, 0x99, 0x1b, 0x77, 0x2b, 0xb7, 0x45, 0x97, 0x99,
-  0x51, 0xf6, 0x2e, 0xdb, 0x62, 0x16, 0x22, 0xf7, 0x92, 0xf4, 0xce, 0x5c,
-  0x3d, 0x45, 0x46, 0xf8, 0x4c, 0x20, 0x1d, 0xe0, 0x95, 0x39, 0xf5, 0xfc,
-  0x8c, 0x76, 0x84, 0x5a, 0x3d, 0x2a, 0x75, 0xf5, 0xa3, 0x92, 0x2d, 0x36,
-  0x34, 0x98, 0x82, 0x59, 0x1d, 0x7a, 0xa4, 0x80, 0x97, 0x73, 0x62, 0x42,
-  0x15, 0x4d, 0x5d, 0xcd, 0x73, 0xea, 0xb9, 0x11, 0xd1, 0x23, 0xd9, 0x37,
-  0x39, 0x70, 0x89, 0xe4, 0xe7, 0x60, 0x5c, 0x85, 0xce, 0x16, 0xaa, 0xa8,
-  0xd8, 0x8f, 0xd8, 0xf8, 0xb4, 0xb8, 0x9f, 0x08, 0xde, 0x5b, 0x0c, 0xc0,
-  0x59, 0xa1, 0x21, 0x61, 0x31, 0xaf, 0xae, 0xaf, 0xd9, 0x6a, 0x4b, 0xba,
-  0x43, 0x8b, 0x6f, 0xb2, 0x53, 0x9a, 0x15, 0x42, 0x41, 0xdf, 0xaf, 0x9a,
-  0xcd, 0x4b, 0x5b, 0x63, 0x50, 0xbc, 0x2e, 0xad, 0xcd, 0xac, 0x31, 0x49,
-  0x5e, 0xb7, 0xc6, 0x26, 0x5d, 0x21, 0x41, 0xa3, 0x1d, 0x43, 0x3e, 0xbb,
-  0xd8, 0x40, 0x55, 0x85, 0xc2, 0x11, 0x32, 0xe8, 0xa2, 0x83, 0xcc, 0xcf,
-  0x21, 0x50, 0x1c, 0x12, 0xf5, 0xce, 0x42, 0xad, 0xb0, 0x5d, 0x93, 0x71,
-  0xea, 0x4c, 0xae, 0x8d, 0xa4, 0xe5, 0xed, 0xa5, 0xaa, 0x74, 0x27, 0x85,
-  0xc8, 0xa1, 0xf2, 0x36, 0x73, 0x5c, 0x92, 0xce, 0xe1, 0xe8, 0x08, 0x86,
-  0xe5, 0xf4, 0x5b, 0x61, 0xd2, 0x09, 0xf0, 0x5a, 0x79, 0x85, 0x41, 0x76,
-  0x66, 0x65, 0x98, 0x78, 0x4d, 0xb2, 0xab, 0xa4, 0x6c, 0xf1, 0x34, 0xa3,
-  0x6f, 0x12, 0xb7, 0xd6, 0x16, 0x79, 0x8f, 0x30, 0x23, 0x8c, 0x67, 0x9a,
-  0x70, 0x5d, 0x25, 0x2d, 0x0e, 0x61, 0x31, 0x7a, 0x2e, 0xfe, 0xab, 0xa3,
-  0xec, 0xd9, 0x45, 0xea, 0x21, 0xcd, 0x73, 0x2c, 0x9b, 0x00, 0x7b, 0x80,
-  0x14, 0x3a, 0x1b, 0xc2, 0xbf, 0x94, 0x75, 0xc2, 0x4e, 0x86, 0x07, 0xad,
-  0x23, 0x48, 0x83, 0x33, 0x67, 0x21, 0x1a, 0xc8, 0x43, 0x31, 0x92, 0x17,
-  0xb8, 0x82, 0xc1, 0x78, 0x83, 0xf3, 0x8d, 0x06, 0x13, 0x95, 0xe8, 0xeb,
-  0x09, 0x0b, 0xc6, 0xad, 0x83, 0xf9, 0xd0, 0x39, 0x3d, 0xbf, 0x38, 0xfb,
-  0xe6, 0xe2, 0x78, 0x34, 0x4a, 0xde, 0x1e, 0x5f, 0xb2, 0xad, 0x7f, 0xc9,
-  0xd0, 0xbb, 0x6b, 0x14, 0xd5, 0x46, 0xac, 0x41, 0x09, 0x9f, 0x14, 0x72,
-  0xa2, 0x8e, 0x04, 0xe4, 0x3c, 0x51, 0xbd, 0x68, 0xdc, 0x8e, 0x6c, 0xc4,
-  0xcf, 0x04, 0xb1, 0x77, 0x03, 0x6f, 0x3f, 0x30, 0x4d, 0x08, 0x48, 0x5a,
-  0xe7, 0xb9, 0x73, 0xa3, 0x42, 0x31, 0x66, 0x94, 0x93, 0xcd, 0x39, 0x74,
-  0x2e, 0x74, 0xba, 0xb2, 0xcd, 0x9f, 0x18, 0xde, 0x1f, 0xcd, 0x6c, 0x4a,
-  0x85, 0xbc, 0x3f, 0x1a, 0xe3, 0x57, 0x36, 0xc5, 0x1f, 0x93, 0x1f, 0x4d,
-  0x9b, 0x53, 0x63, 0xbc, 0x4a, 0x39, 0xe0, 0x11, 0xea, 0x00, 0x3b, 0x3e,
-  0xe7, 0xdc, 0xab, 0x73, 0x9d, 0x70, 0x8a, 0x61, 0xf5, 0x40, 0x09, 0x4e,
-  0x70, 0xc5, 0x70, 0xa5, 0x61, 0xc1, 0xd4, 0xd9, 0x2f, 0x4b, 0x19, 0xb6,
-  0x24, 0x39, 0xcd, 0xae, 0x50, 0xa1, 0x06, 0x9f, 0x33, 0xcd, 0xed, 0x12,
-  0xf1, 0xf5, 0xde, 0x5b, 0xfa, 0xd1, 0x6e, 0xf2, 0xe4, 0xf3, 0xe7, 0xbb,
-  0x9f, 0xf3, 0x5f, 0xf5, 0xbf, 0x2f, 0x9e, 0xee, 0x0a, 0x03, 0xbf, 0xf9,
-  0xd7, 0xd3, 0x83, 0xa7, 0x7b, 0x07, 0xc4, 0x05, 0xb9, 0x7b, 0xb0, 0x6b,
-  0xfe, 0xff, 0x53, 0xf9, 0x09, 0x11, 0x5e, 0xbe, 0xd8, 0xff, 0xfc, 0x33,
-  0xa0, 0x61, 0x68, 0x7f, 0xcc, 0xcc, 0x47, 0x06, 0x4d, 0x39, 0x00, 0x25,
-  0x15, 0x34, 0x9f, 0x3f, 0xb6, 0x3d, 0x91, 0x14, 0x5e, 0xa7, 0x02, 0xe1,
-  0x34, 0x70, 0x5b, 0x1e, 0x55, 0xbd, 0xaa, 0x4c, 0x61, 0xe3, 0x17, 0x75,
-  0xb4, 0xc3, 0x90, 0xb7, 0xb9, 0xc6, 0x20, 0x38, 0xde, 0x5a, 0xef, 0x30,
-  0xd0, 0xdc, 0xa3, 0x93, 0xfb, 0xa5, 0x9f, 0xd6, 0x44, 0xf2, 0x0d, 0x90,
-  0xc4, 0xc9, 0x52, 0xc9, 0x7b, 0x13, 0xad, 0x64, 0xe7, 0xd7, 0xdc, 0xee,
-  0x14, 0xaa, 0xfe, 0xa5, 0xdf, 0x63, 0xcf, 0x15, 0xbd, 0x25, 0xbb, 0x21,
-  0x09, 0xbf, 0x66, 0x73, 0x11, 0x22, 0xdf, 0x6a, 0x6d, 0x9e, 0x0d, 0xb7,
-  0xfc, 0x6e, 0xa6, 0xbc, 0x82, 0xd3, 0x36, 0x87, 0x8b, 0x4b, 0x4e, 0x47,
-  0x86, 0x1c, 0x34, 0xf7, 0x7e, 0xe1, 0xb7, 0xf7, 0x98, 0xe6, 0xdc, 0x88,
-  0xb0, 0x83, 0xed, 0xca, 0x0d, 0xbc, 0xc5, 0xc9, 0x19, 0xd8, 0x66, 0x6b,
-  0x8a, 0x2a, 0x09, 0xa9, 0x2d, 0xf7, 0x8c, 0x57, 0xed, 0x96, 0x1d, 0xf0,
-  0x1b, 0xa2, 0x73, 0xda, 0xbc, 0x38, 0x94, 0x72, 0xc5, 0x15, 0xcf, 0xcf,
-  0xeb, 0xce, 0x0e, 0x3e, 0x45, 0xbb, 0xd1, 0xfb, 0x9e, 0x7c, 0x03, 0xe7,
-  0xc9, 0x1e, 0xba, 0xb5, 0x43, 0x73, 0xd8, 0x7a, 0x2d, 0x67, 0xc9, 0x38,
-  0x2e, 0x28, 0xdf, 0xb1, 0x23, 0xe9, 0x9e, 0x03, 0x7c, 0xdd, 0x36, 0xe7,
-  0xdf, 0x3e, 0x33, 0x70, 0x8d, 0x73, 0x49, 0x15, 0x62, 0x36, 0xa5, 0x7a,
-  0x11, 0xdb, 0x2a, 0xc2, 0x06, 0x7f, 0xb0, 0xb0, 0x2d, 0x5c, 0x66, 0x0c,
-  0x6b, 0xa3, 0xa6, 0x68, 0x3e, 0x67, 0x7e, 0x2e, 0xad, 0x95, 0x76, 0xe3,
-  0xb4, 0x6a, 0xd5, 0x65, 0xd8, 0xe0, 0x3a, 0x24, 0xe6, 0x7a, 0x35, 0xd7,
-  0x05, 0xd2, 0x1d, 0x59, 0x8f, 0xf8, 0x97, 0x8d, 0x8d, 0xd1, 0xf9, 0xf1,
-  0xf1, 0xeb, 0xe4, 0xf4, 0xe4, 0xed, 0xc9, 0xa5, 0xa7, 0x85, 0xdb, 0xdb,
-  0x43, 0x3d, 0xad, 0x5a, 0x56, 0xaf, 0x33, 0x1d, 0x8e, 0xde, 0x99, 0xbf,
-  0xa7, 0xf7, 0xf7, 0x3c, 0x93, 0x2c, 0x8a, 0x59, 0xf7, 0x3d, 0xd8, 0xdb,
-  0x60, 0x76, 0xa2, 0xf2, 0xe4, 0x9e, 0x16, 0x57, 0x1b, 0x8d, 0xc6, 0xf4,
-  0x6e, 0xc0, 0xec, 0x02, 0x83, 0x3f, 0x0b, 0x4e, 0xa3, 0xad, 0x2e, 0x09,
-  0x53, 0xad, 0x4d, 0xe9, 0x11, 0x6c, 0x6b, 0xa7, 0x57, 0x34, 0xb7, 0x19,
-  0x43, 0xab, 0x3d, 0xb7, 0x1c, 0x60, 0x7b, 0x77, 0x19, 0xd8, 0x0e, 0xe6,
-  0x39, 0xe7, 0x5a, 0xfa, 0x98, 0x62, 0x94, 0x4b, 0x91, 0x1b, 0x0f, 0x72,
-  0xdc, 0xff, 0xa2, 0x77, 0x3a, 0x2c, 0xa0, 0x56, 0xbf, 0x55, 0x73, 0xa9,
-  0x42, 0x33, 0x01, 0x45, 0xf2, 0x64, 0xd7, 0xa6, 0x2b, 0x2c, 0x20, 0x73,
-  0x44, 0xbf, 0xa7, 0x8f, 0xed, 0x25, 0x46, 0x09, 0x59, 0x92, 0x2a, 0x5f,
-  0x2d, 0x8b, 0xe0, 0xba, 0xfb, 0x33, 0xbf, 0x6b, 0xc6, 0xff, 0x7c, 0x17,
-  0xd7, 0xdb, 0x55, 0x5a, 0x0d, 0x8c, 0xba, 0x75, 0x3f, 0x50, 0x97, 0x2a,
-  0xef, 0x08, 0xc1, 0x1b, 0xb3, 0xbf, 0x27, 0x73, 0x25, 0x40, 0x3b, 0x2a,
-  0xa2, 0xcb, 0x39, 0x29, 0x11, 0x97, 0x9c, 0xc9, 0x01, 0xa0, 0xa1, 0x53,
-  0xa6, 0xaf, 0x7a, 0x38, 0x9d, 0x82, 0xe3, 0x58, 0x8c, 0x75, 0x15, 0x9d,
-  0x8c, 0xa2, 0x0c, 0x04, 0x88, 0x55, 0x6a, 0x35, 0xa7, 0x61, 0xca, 0x58,
-  0x42, 0x7d, 0x7a, 0x9e, 0xec, 0x7d, 0x4e, 0xe3, 0x78, 0xdc, 0x78, 0xde,
-  0x94, 0xd5, 0xc4, 0xe6, 0x14, 0xc3, 0x46, 0xf0, 0x12, 0x4c, 0x39, 0x2d,
-  0x02, 0xe5, 0xe8, 0x78, 0x76, 0x15, 0x14, 0x0b, 0xd0, 0x1e, 0x19, 0x25,
-  0x12, 0x4f, 0x87, 0x3b, 0x0a, 0x01, 0x6e, 0x56, 0x8b, 0xe8, 0xae, 0x91,
-  0x79, 0x21, 0x07, 0x2b, 0x83, 0xf6, 0x36, 0x2b, 0x9b, 0x80, 0xca, 0xd3,
-  0x40, 0x2e, 0x11, 0xb3, 0xd7, 0xee, 0xf2, 0x29, 0x54, 0x69, 0xc7, 0x67,
-  0x67, 0xd6, 0x8b, 0x37, 0x1f, 0x63, 0xa5, 0x11, 0xb3, 0x44, 0xb0, 0xd3,
-  0xf6, 0x4c, 0x14, 0x18, 0x9a, 0xd6, 0x12, 0x1e, 0x85, 0x2d, 0xe8, 0x0f,
-  0x94, 0xdf, 0xec, 0xe2, 0x02, 0x64, 0x3f, 0x91, 0x68, 0xee, 0xb9, 0xaf,
-  0x50, 0xae, 0x40, 0xd3, 0xcc, 0xd4, 0x99, 0xf0, 0xd6, 0x6e, 0xec, 0xf6,
-  0x98, 0x89, 0xa9, 0xc5, 0x1b, 0xf6, 0xde, 0xae, 0x51, 0x5a, 0x67, 0xa5,
-  0xdd, 0x56, 0xb2, 0xa9, 0x42, 0x4b, 0x14, 0xc3, 0x1a, 0x60, 0x76, 0xf6,
-  0x76, 0xbf, 0x5b, 0x3d, 0xeb, 0xe0, 0xe9, 0x5f, 0xfb, 0xf2, 0xfe, 0xd3,
-  0x35, 0x8b, 0x76, 0x56, 0xc1, 0x18, 0xcf, 0x14, 0x03, 0x09, 0x45, 0xd0,
-  0x45, 0x5e, 0x82, 0x65, 0x33, 0x1b, 0x3f, 0xbb, 0x4e, 0x51, 0x15, 0x79,
-  0x4d, 0xef, 0x35, 0x27, 0xa4, 0xd3, 0x95, 0xb7, 0x82, 0xca, 0xe6, 0x5f,
-  0xd6, 0xe4, 0x16, 0x5b, 0x80, 0x69, 0xcf, 0xd9, 0xae, 0x36, 0x9d, 0x9c,
-  0xb9, 0x19, 0xbc, 0xb7, 0x59, 0x72, 0xf6, 0xdb, 0x42, 0x42, 0x77, 0x4f,
-  0x95, 0x5d, 0x2f, 0x99, 0x09, 0xa3, 0x64, 0x5b, 0x9f, 0xc8, 0xaf, 0xe5,
-  0xbc, 0x1a, 0xd9, 0x4c, 0xf0, 0x21, 0xde, 0x4f, 0x10, 0xbc, 0x93, 0x54,
-  0x55, 0x56, 0x29, 0x6b, 0xdc, 0xb9, 0x18, 0xc8, 0x29, 0x3b, 0x29, 0xe7,
-  0x52, 0x18, 0x95, 0x8f, 0x57, 0xe1, 0x25, 0xf6, 0x33, 0xbb, 0xe3, 0x10,
-  0x99, 0xbe, 0xbc, 0x51, 0xac, 0xb0, 0xa7, 0xb4, 0x32, 0x8a, 0x86, 0x35,
-  0x1c, 0x16, 0x40, 0x03, 0x7d, 0xd9, 0xb5, 0x68, 0xc9, 0x7e, 0x8a, 0x24,
-  0x7e, 0xad, 0x2c, 0x9b, 0xcc, 0xc6, 0x4f, 0xce, 0xfe, 0xa3, 0xb3, 0x77,
-  0x6f, 0x4e, 0xbe, 0xb1, 0x54, 0x46, 0x2c, 0xc4, 0x5b, 0x14, 0x1b, 0xec,
-  0x3e, 0xf6, 0x23, 0xdd, 0x52, 0x6f, 0x56, 0xd0, 0xb7, 0x46, 0x3c, 0x7d,
-  0xf0, 0x7f, 0x00, 0x01, 0x52, 0x3c, 0x21, 0x07, 0x39, 0xf3, 0x7f, 0xd4,
-  0xdb, 0xce, 0xdd, 0xd0, 0xa1, 0xaa, 0xe3, 0x2c, 0x8d, 0xb4, 0x6a, 0x96,
-  0x0b, 0x0b, 0x22, 0xf4, 0xea, 0xd5, 0x0a, 0x57, 0xb7, 0xa6, 0xa2, 0x2f,
-  0x17, 0x2c, 0x9a, 0x24, 0xa1, 0xb4, 0xe5, 0xcd, 0xe5, 0x3b, 0x80, 0xdc,
-  0x09, 0xc2, 0xa5, 0x22, 0x17, 0x40, 0x80, 0xcb, 0x99, 0x11, 0xc3, 0xa7,
-  0x8f, 0x97, 0xd7, 0xf8, 0xcd, 0x34, 0xad, 0x6f, 0x78, 0xa0, 0xb8, 0x34,
-  0x72, 0x86, 0x69, 0x23, 0xd6, 0x96, 0x4e, 0xc9, 0x50, 0x77, 0x60, 0x1c,
-  0x8b, 0xfe, 0x75, 0xf1, 0xa1, 0x3a, 0xd1, 0xac, 0x07, 0x8b, 0x4f, 0xd2,
-  0x34, 0xd6, 0x14, 0xa1, 0x4a, 0xc4, 0x3a, 0xf1, 0x93, 0x57, 0x14, 0x96,
-  0x39, 0x20, 0xce, 0xfa, 0x39, 0x13, 0xca, 0xf9, 0xe9, 0xa7, 0x22, 0x25,
-  0x1d, 0xb3, 0xfc, 0xc9, 0x95, 0x97, 0xd1, 0xc6, 0x38, 0x41, 0xdd, 0x74,
-  0xec, 0x23, 0x26, 0x07, 0xcb, 0xe6, 0x1f, 0x36, 0x07, 0xf5, 0xfd, 0x7c,
-  0x5c, 0xce, 0x34, 0xf1, 0xc2, 0x12, 0x48, 0xe8, 0x43, 0xad, 0x7a, 0x7a,
-  0x1c, 0xa9, 0x6d, 0x3c, 0xb7, 0xa4, 0xc3, 0x4a, 0xb9, 0xfe, 0x73, 0xc1,
-  0x24, 0x84, 0x87, 0x74, 0x14, 0xe0, 0xf6, 0x21, 0x19, 0x9f, 0x15, 0x93,
-  0x59, 0x29, 0xbb, 0x9a, 0x12, 0xcc, 0x31, 0x53, 0xed, 0xa1, 0x53, 0xc4,
-  0xaf, 0x5c, 0x92, 0x87, 0x03, 0x35, 0x4a, 0x8c, 0xba, 0xd3, 0x13, 0x46,
-  0x0d, 0x0c, 0x90, 0xde, 0xe6, 0x5f, 0x08, 0x2a, 0xdf, 0xe3, 0xb7, 0xe1,
-  0xa2, 0x26, 0xa6, 0xab, 0x3f, 0xb1, 0x43, 0x91, 0xe3, 0x7e, 0x7f, 0xd6,
-  0x8f, 0xeb, 0xa3, 0x9d, 0xa9, 0x37, 0xfb, 0x29, 0xad, 0xae, 0x85, 0xa5,
-  0x4f, 0x22, 0x69, 0x30, 0x12, 0x6d, 0xe9, 0x1c, 0xeb, 0x98, 0x24, 0xa5,
-  0xc4, 0xa2, 0x66, 0xa0, 0x3e, 0x2d, 0x39, 0xa7, 0x50, 0x32, 0xae, 0xd8,
-  0x25, 0x69, 0x37, 0xa2, 0x27, 0x71, 0xfe, 0x60, 0xb1, 0x28, 0xa9, 0xbb,
-  0xcb, 0xb4, 0x02, 0x86, 0xf3, 0xcf, 0xca, 0x65, 0xe6, 0xbd, 0x46, 0x4e,
-  0x3c, 0x58, 0xc2, 0x99, 0x38, 0x4e, 0xf8, 0x53, 0xd0, 0x25, 0x88, 0xd7,
-  0x46, 0x2a, 0x6b, 0xba, 0x26, 0xf8, 0xf7, 0xaf, 0xa4, 0x16, 0x9a, 0x39,
-  0xcf, 0xc2, 0x94, 0x22, 0xf4, 0x81, 0x9f, 0xef, 0x8a, 0xfb, 0xad, 0x11,
-  0xb8, 0x6a, 0x9d, 0x1c, 0x5e, 0x1c, 0x1b, 0xcd, 0xf6, 0xba, 0x00, 0x47,
-  0x45, 0xd1, 0x68, 0x52, 0x5d, 0x56, 0x48, 0xf1, 0xb5, 0x42, 0xcf, 0x07,
-  0x7d, 0xf0, 0xce, 0x7b, 0x93, 0x36, 0x93, 0x00, 0x03, 0x38, 0x7f, 0xdb,
-  0x6d, 0xb9, 0x89, 0x72, 0x0f, 0x43, 0xea, 0x10, 0x4d, 0x02, 0x6f, 0x29,
-  0x0a, 0x91, 0x98, 0x4f, 0x95, 0xca, 0x3b, 0x7c, 0x1e, 0x88, 0x75, 0x9f,
-  0x70, 0x58, 0xe7, 0x1a, 0xa7, 0xda, 0xa5, 0x22, 0xfc, 0x4d, 0x89, 0x39,
-  0xe5, 0x5b, 0xad, 0xb0, 0xa7, 0xdb, 0x4e, 0xfd, 0xb8, 0xcb, 0xe8, 0x6f,
-  0xb8, 0x67, 0x48, 0x17, 0xe9, 0xea, 0x05, 0x99, 0x45, 0xd8, 0xb3, 0xf7,
-  0x7a, 0xea, 0x29, 0xbf, 0x9c, 0x02, 0x48, 0x18, 0x6b, 0x76, 0x4c, 0x0b,
-  0x13, 0x90, 0xf8, 0x75, 0xd8, 0x1c, 0x98, 0xca, 0x59, 0xa5, 0x5d, 0x41,
-  0x70, 0xe1, 0x31, 0xb1, 0x25, 0x7d, 0x64, 0x05, 0xc0, 0x97, 0x4f, 0x51,
-  0xdf, 0xee, 0x1f, 0xec, 0x68, 0x5d, 0x1f, 0x36, 0xbc, 0x92, 0xf3, 0x66,
-  0x49, 0x95, 0xdd, 0x8e, 0x7a, 0x31, 0xa4, 0x0f, 0x41, 0xa4, 0x22, 0x66,
-  0x4a, 0x7f, 0xc1, 0x8f, 0x81, 0x7a, 0x53, 0xba, 0x53, 0x48, 0x1d, 0x4b,
-  0xa1, 0x55, 0x4a, 0x4c, 0xd5, 0x75, 0x84, 0x03, 0x7b, 0x90, 0xd0, 0x63,
-  0x5f, 0x35, 0x1e, 0x7c, 0xb7, 0xa3, 0xa5, 0xbe, 0xc9, 0x7f, 0x43, 0x09,
-  0xc4, 0x7a, 0xe0, 0xeb, 0xac, 0x55, 0x1b, 0xdc, 0x66, 0x0a, 0xf5, 0x06,
-  0x3d, 0x33, 0x17, 0x9b, 0xb3, 0x99, 0x13, 0xf8, 0xfa, 0x18, 0xad, 0x2a,
-  0x92, 0xea, 0x9c, 0xc2, 0x24, 0xb2, 0x8b, 0x0a, 0x77, 0xdc, 0xb7, 0x52,
-  0x1c, 0xa8, 0x14, 0x1e, 0x65, 0x00, 0x59, 0x62, 0x2f, 0xa4, 0x89, 0x00,
-  0x24, 0x70, 0x9b, 0xd7, 0x1a, 0x7c, 0x34, 0x7b, 0x7b, 0xc2, 0x98, 0x88,
-  0x86, 0x09, 0x09, 0xb2, 0x66, 0xe2, 0x4d, 0x65, 0x36, 0xb9, 0x29, 0x19,
-  0x53, 0x6b, 0x26, 0xcd, 0xcb, 0xf4, 0xec, 0x25, 0xff, 0x4b, 0xf6, 0xc0,
-  0x77, 0x2e, 0x69, 0x8f, 0x36, 0xc2, 0x90, 0x79, 0x28, 0x87, 0x6e, 0x43,
-  0x1c, 0xff, 0x78, 0x79, 0x71, 0x98, 0x7c, 0x7b, 0x7c, 0xf8, 0xfa, 0xf8,
-  0x62, 0xd4, 0xb9, 0xf4, 0x05, 0xfe, 0xc1, 0x1a, 0x1a, 0x39, 0x81, 0xa1,
-  0x1a, 0x2b, 0xf1, 0x80, 0xe0, 0xf6, 0x55, 0xea, 0x99, 0xcd, 0x43, 0x07,
-  0xc9, 0x9c, 0x0f, 0x32, 0x88, 0x38, 0x5a, 0x00, 0x92, 0xe4, 0x1a, 0xc2,
-  0xc6, 0xb6, 0x31, 0x31, 0x12, 0x8a, 0x40, 0x0c, 0xea, 0x32, 0xf7, 0x33,
-  0x66, 0x1c, 0x57, 0x9f, 0xbb, 0x4c, 0xa6, 0xa5, 0x26, 0x03, 0xb6, 0x57,
-  0xee, 0x5b, 0x97, 0xef, 0xed, 0x89, 0x2d, 0xb9, 0x64, 0xc4, 0x6b, 0xd8,
-  0xfb, 0x71, 0x60, 0xbe, 0x3b, 0x30, 0x93, 0x3f, 0x20, 0x32, 0xc7, 0xfb,
-  0xac, 0xee, 0x75, 0x5c, 0x80, 0xed, 0xcf, 0x6f, 0x70, 0xb5, 0xa7, 0xe0,
-  0x24, 0x7d, 0x1b, 0x6d, 0x89, 0x4e, 0xd7, 0x8c, 0x6a, 0x30, 0x75, 0x2d,
-  0x08, 0x5c, 0xaa, 0x9e, 0x92, 0x2c, 0x27, 0x28, 0x48, 0x6f, 0x11, 0x80,
-  0x92, 0x33, 0x33, 0x05, 0x0f, 0x86, 0x8e, 0xc8, 0x10, 0xa0, 0xeb, 0x98,
-  0xb3, 0xc7, 0x97, 0xfa, 0x8c, 0xf9, 0x9c, 0xd9, 0x63, 0x66, 0xba, 0x25,
-  0x0f, 0xf9, 0xf7, 0x03, 0x02, 0x20, 0x82, 0xc1, 0xaf, 0x5b, 0xf1, 0x51,
-  0x71, 0x86, 0x0a, 0xd5, 0xb7, 0x34, 0x47, 0x7d, 0xb0, 0x7b, 0x5e, 0xa1,
-  0xfb, 0xf4, 0x49, 0xad, 0x42, 0x22, 0xef, 0x32, 0x0a, 0x8c, 0x8c, 0x7a,
-  0xf8, 0x37, 0xb9, 0x2c, 0x2f, 0x17, 0xb8, 0x64, 0xc1, 0xe6, 0xe5, 0x02,
-  0xf9, 0x9b, 0x19, 0xe5, 0xdf, 0x80, 0x1e, 0xb7, 0xcf, 0x65, 0xc9, 0xb7,
-  0x65, 0x8d, 0xbb, 0x20, 0x7c, 0x9c, 0x2e, 0xf9, 0xd8, 0xf4, 0xe3, 0x0d,
-  0x89, 0x6f, 0x59, 0x92, 0xd8, 0x8d, 0x0d, 0x4d, 0xa9, 0x3a, 0x3f, 0xbc,
-  0xfc, 0x16, 0xd1, 0x55, 0x6c, 0xe1, 0xd7, 0x60, 0x4c, 0xd1, 0x98, 0x5a,
-  0x98, 0x92, 0x65, 0x0d, 0x38, 0xd6, 0x7f, 0x95, 0x98, 0x51, 0xf5, 0x49,
-  0x44, 0xef, 0x72, 0x06, 0x22, 0xcd, 0xb8, 0x0c, 0x32, 0x64, 0x74, 0xab,
-  0xda, 0x23, 0xa0, 0xef, 0x36, 0xdf, 0xce, 0xe2, 0x2d, 0x37, 0x39, 0x11,
-  0x7e, 0x93, 0xc7, 0x84, 0x4d, 0x4f, 0xca, 0xdc, 0x46, 0xd2, 0x66, 0x1e,
-  0xc6, 0x2f, 0x28, 0xd3, 0x99, 0x03, 0x50, 0xd3, 0x32, 0xce, 0x7b, 0xe8,
-  0x1d, 0xe9, 0xaf, 0xe6, 0xf7, 0xc3, 0x90, 0x80, 0x27, 0xf9, 0x7a, 0xd9,
-  0xb4, 0xc5, 0x4a, 0x87, 0xff, 0xd8, 0x6a, 0x96, 0x55, 0x59, 0x36, 0x5e,
-  0x1f, 0xa0, 0xfd, 0xa4, 0x8d, 0x9c, 0x68, 0x26, 0xb8, 0xe4, 0xbe, 0x50,
-  0x53, 0x85, 0xe8, 0xdd, 0xbe, 0x62, 0x98, 0x8e, 0xeb, 0x72, 0xb6, 0x6c,
-  0x3c, 0xf4, 0xf5, 0x2f, 0xeb, 0xb3, 0xd7, 0xe9, 0xad, 0x93, 0xa1, 0x92,
-  0x7d, 0x16, 0x4c, 0x51, 0x67, 0x2c, 0x7d, 0xa3, 0x5e, 0x22, 0xd8, 0x58,
-  0x95, 0x45, 0xbb, 0xce, 0x1c, 0x80, 0xde, 0xdb, 0x1b, 0x1b, 0x23, 0x5d,
-  0x6c, 0xa2, 0x7b, 0x0d, 0x17, 0xfd, 0x07, 0x68, 0x93, 0xd4, 0x07, 0x0e,
-  0x16, 0x4c, 0xcc, 0x5f, 0x94, 0x04, 0x2e, 0xe3, 0x35, 0x85, 0x08, 0xe7,
-  0x35, 0xce, 0xeb, 0xf6, 0xa0, 0xf0, 0x2b, 0x1b, 0xae, 0xd0, 0xfc, 0xb2,
-  0xcb, 0x52, 0x79, 0xff, 0x25, 0x5c, 0xe7, 0x36, 0x44, 0x2b, 0x1b, 0x3e,
-  0xca, 0x30, 0x4d, 0x97, 0x80, 0x16, 0xd7, 0xb6, 0x70, 0x5c, 0xea, 0xe4,
-  0xce, 0xff, 0xde, 0x49, 0xfa, 0x5c, 0x01, 0x21, 0x42, 0xda, 0xb3, 0x4c,
-  0xfe, 0x3f, 0x00, 0x5e, 0x09, 0xbd, 0x2f, 0xb5, 0x39, 0x6c, 0x13, 0xc8,
-  0x0e, 0x8d, 0x09, 0x75, 0x53, 0x4d, 0xdc, 0xee, 0x37, 0xda, 0x41, 0x76,
-  0x47, 0xf6, 0x8b, 0xda, 0x08, 0x42, 0x17, 0xc2, 0xf5, 0xad, 0x2d, 0x01,
-  0x13, 0xe8, 0x36, 0xae, 0xac, 0x57, 0x8f, 0x6a, 0xb6, 0x72, 0x65, 0x53,
-  0x56, 0xeb, 0x51, 0xb2, 0x49, 0xc3, 0xa6, 0x1b, 0x49, 0xcb, 0x6e, 0xa7,
-  0x92, 0x87, 0xfc, 0xa7, 0x26, 0x1d, 0x09, 0xb0, 0x4b, 0xb6, 0xbf, 0x57,
-  0x06, 0xd0, 0x2b, 0xa8, 0xac, 0x88, 0x53, 0x46, 0xd3, 0x69, 0x38, 0x52,
-  0x3b, 0xa9, 0x5a, 0x00, 0x45, 0x2b, 0x41, 0x6b, 0x29, 0xcc, 0x23, 0x84,
-  0x24, 0x23, 0x0e, 0x63, 0x4e, 0xda, 0xa6, 0x82, 0x95, 0x6a, 0xc9, 0xe8,
-  0x95, 0xaa, 0x69, 0x1c, 0x76, 0xa5, 0x5c, 0xf7, 0xe5, 0xee, 0x47, 0x12,
-  0x3e, 0x22, 0x73, 0x54, 0xa2, 0xd3, 0x57, 0x09, 0x74, 0x48, 0x52, 0x33,
-  0x98, 0xc1, 0x1b, 0x3e, 0x20, 0xc5, 0x21, 0x36, 0xaf, 0x29, 0xcb, 0x43,
-  0x5c, 0x52, 0xc2, 0x65, 0x02, 0xff, 0xd7, 0x4d, 0x2e, 0xb8, 0x52, 0x9e,
-  0xf5, 0x76, 0x9d, 0x56, 0x78, 0xf8, 0x08, 0x52, 0xe0, 0xa2, 0xaa, 0x16,
-  0xf8, 0x30, 0x0c, 0x0f, 0xcc, 0xd0, 0xb2, 0xaa, 0xca, 0x25, 0x72, 0xe2,
-  0xe7, 0x94, 0x33, 0x0a, 0xc3, 0x62, 0x9d, 0x1f, 0xf9, 0x75, 0xff, 0x93,
-  0x04, 0x62, 0x2d, 0x12, 0x4e, 0x20, 0x11, 0xaa, 0x38, 0xba, 0x50, 0xf6,
-  0xf7, 0x60, 0x98, 0x32, 0x66, 0x03, 0x3c, 0xa5, 0xda, 0x82, 0xf2, 0xa5,
-  0x75, 0x27, 0x7f, 0xbb, 0x2f, 0xb3, 0x64, 0x33, 0xee, 0x25, 0xc4, 0xcc,
-  0x7a, 0xa1, 0x17, 0x77, 0x6a, 0x15, 0x9a, 0xe3, 0x2c, 0xee, 0xba, 0xa9,
-  0x96, 0x93, 0x26, 0x28, 0x91, 0xda, 0x0a, 0xcd, 0xdb, 0x39, 0x2e, 0x7d,
-  0xdb, 0xfe, 0xe4, 0x5c, 0xcc, 0x7b, 0xb6, 0x3e, 0xa8, 0x67, 0x5b, 0x69,
-  0x2b, 0xc9, 0x85, 0x5f, 0xde, 0x48, 0x5a, 0xdf, 0xdd, 0xb6, 0xbb, 0x6c,
-  0x70, 0x6e, 0x33, 0xea, 0xdb, 0xf4, 0x47, 0xc8, 0x4e, 0xf0, 0xee, 0x5e,
-  0x51, 0xc4, 0xa0, 0x78, 0x54, 0x89, 0x90, 0x2f, 0x42, 0xad, 0x21, 0x97,
-  0xe5, 0x86, 0x25, 0x48, 0x34, 0x5d, 0x1a, 0x08, 0x54, 0x95, 0xa3, 0xbf,
-  0x3b, 0x66, 0x22, 0xb5, 0x9a, 0x90, 0x2d, 0xa3, 0x55, 0x3b, 0x92, 0xc5,
-  0x0e, 0x4e, 0x15, 0x14, 0x4d, 0x56, 0x3f, 0x14, 0xb2, 0x38, 0x99, 0xbf,
-  0x61, 0xf2, 0x5a, 0x0e, 0x85, 0x7c, 0xa1, 0xab, 0x4e, 0x84, 0x77, 0xe3,
-  0x39, 0x53, 0xa1, 0x04, 0xfb, 0xe8, 0xb5, 0xfa, 0x54, 0x21, 0x72, 0x30,
-  0x37, 0x64, 0xd9, 0xe8, 0x22, 0x99, 0x79, 0xd5, 0x4f, 0x98, 0x2e, 0xd0,
-  0x88, 0x37, 0x67, 0xd9, 0xee, 0xa6, 0x57, 0x07, 0x6c, 0x8b, 0x41, 0xff,
-  0x25, 0xac, 0x1f, 0x4b, 0x56, 0xc8, 0xde, 0x0b, 0x02, 0xb7, 0x6d, 0x47,
-  0xba, 0x62, 0x9a, 0xf8, 0xa5, 0x9d, 0xd9, 0x7b, 0xb1, 0x3f, 0xdc, 0x7b,
-  0xfe, 0xf9, 0x70, 0x77, 0xb8, 0xb7, 0x4b, 0xf2, 0x85, 0xba, 0xe2, 0x75,
-  0x8e, 0xe7, 0x25, 0xf2, 0xa9, 0xd6, 0x7b, 0xe1, 0x37, 0xdf, 0x1d, 0x5f,
-  0xfe, 0x70, 0x76, 0xf1, 0x5d, 0x72, 0xf2, 0xee, 0xf2, 0xf8, 0xe2, 0xcd,
-  0xe1, 0xd1, 0x63, 0x09, 0xfb, 0x7d, 0xb7, 0xb5, 0x57, 0x17, 0x3d, 0x73,
-  0x13, 0x13, 0xfa, 0x06, 0xdd, 0x9c, 0x65, 0xcd, 0xcd, 0xee, 0xc1, 0xde,
-  0x5a, 0x4a, 0xea, 0x88, 0x7b, 0xd0, 0xbd, 0xaf, 0x83, 0xda, 0xa3, 0x41,
-  0xad, 0x6e, 0xc5, 0x52, 0x33, 0x8e, 0x18, 0x5b, 0x65, 0x71, 0xb9, 0x10,
-  0xf3, 0xa8, 0xb4, 0x04, 0x46, 0x56, 0x11, 0xec, 0x63, 0x26, 0xbf, 0xe5,
-  0xf4, 0x5a, 0x21, 0x99, 0x11, 0x0c, 0xba, 0xc8, 0xdc, 0x0d, 0xae, 0x41,
-  0xde, 0x88, 0x3b, 0x85, 0xe9, 0x6c, 0xa7, 0x50, 0xf1, 0x54, 0x2a, 0x4b,
-  0xee, 0x1a, 0xed, 0x16, 0xa9, 0x82, 0xca, 0x84, 0x83, 0x53, 0x9b, 0x27,
-  0x62, 0x59, 0x08, 0x00, 0x7d, 0x50, 0x3d, 0x1d, 0x7d, 0x6d, 0x97, 0x91,
-  0xf7, 0xe1, 0xb3, 0x1d, 0xee, 0xd5, 0x5a, 0x71, 0xcd, 0x18, 0x58, 0xcb,
-  0x35, 0x7a, 0x24, 0x1d, 0xc1, 0x69, 0xf0, 0x7a, 0xc3, 0x9f, 0x82, 0x42,
-  0x45, 0x24, 0x69, 0xa0, 0x87, 0x6c, 0x31, 0x24, 0xf3, 0x1d, 0x85, 0xdc,
-  0x09, 0xd6, 0xff, 0xb4, 0xac, 0x05, 0xb5, 0x5e, 0xb7, 0x48, 0x0a, 0x13,
-  0x2e, 0x7c, 0xe2, 0xbf, 0xce, 0xaa, 0x36, 0xd0, 0x99, 0xd3, 0x2a, 0xbd,
-  0x43, 0x09, 0x97, 0xdc, 0x51, 0x8e, 0x6e, 0x24, 0xad, 0x12, 0x29, 0xa4,
-  0x38, 0xb9, 0x39, 0x4f, 0xce, 0x8f, 0xdf, 0x0e, 0xb4, 0x88, 0xb2, 0xf9,
-  0x3b, 0x3b, 0xa3, 0x94, 0x5f, 0x92, 0x73, 0x7b, 0x16, 0x59, 0xa1, 0x58,
-  0x1a, 0xc8, 0x44, 0x01, 0xff, 0xf8, 0x03, 0xa0, 0x43, 0x63, 0x19, 0x28,
-  0x05, 0x32, 0xaa, 0x98, 0x4b, 0xce, 0x2d, 0xec, 0xd2, 0x72, 0xd2, 0x7a,
-  0x0a, 0x60, 0x39, 0xd9, 0xb2, 0x20, 0x5d, 0xfa, 0x1e, 0x90, 0xa8, 0x40,
-  0x0d, 0x58, 0x98, 0x40, 0xa9, 0x99, 0xd7, 0xe7, 0xdf, 0x1d, 0x8d, 0xfe,
-  0xb0, 0xb7, 0x2f, 0xdd, 0xd9, 0x56, 0xab, 0x80, 0x64, 0x55, 0x37, 0x29,
-  0x1f, 0xe2, 0xda, 0xef, 0xa3, 0xa6, 0x58, 0xe3, 0x80, 0x63, 0x31, 0xb6,
-  0x6c, 0x62, 0xd0, 0x76, 0x2b, 0x33, 0x08, 0xc8, 0xaf, 0x7b, 0xab, 0x62,
-  0xda, 0xc2, 0xc0, 0x14, 0x12, 0x41, 0x09, 0x29, 0x29, 0xe2, 0xd4, 0x58,
-  0xa8, 0x5f, 0x5a, 0xe8, 0x8f, 0xb8, 0x65, 0x69, 0x0d, 0x39, 0xe4, 0x0e,
-  0xce, 0xd2, 0x5d, 0x73, 0x9a, 0x6f, 0xf7, 0x5b, 0xe2, 0x89, 0x95, 0x9b,
-  0x5d, 0x09, 0x81, 0xdc, 0x67, 0x70, 0x00, 0x04, 0xbd, 0x3e, 0xd5, 0x32,
-  0x71, 0x85, 0xab, 0x83, 0x42, 0x4f, 0x9f, 0x99, 0x85, 0x32, 0x27, 0x8b,
-  0x79, 0x1b, 0x48, 0x28, 0x94, 0x33, 0x32, 0x5d, 0xec, 0x23, 0xaf, 0x2b,
-  0x2a, 0x1d, 0xb3, 0x60, 0x1c, 0xe9, 0xbb, 0x61, 0xf2, 0x6d, 0x56, 0x50,
-  0xe2, 0x3c, 0x21, 0xee, 0x34, 0xf7, 0x0a, 0xb8, 0x40, 0xaa, 0x53, 0x89,
-  0xba, 0x7d, 0xa7, 0x59, 0x2a, 0x9c, 0x9c, 0x46, 0xd6, 0xd5, 0x6c, 0xe1,
-  0x6a, 0xcd, 0xaa, 0x94, 0xd0, 0x79, 0x42, 0x20, 0x6a, 0xc9, 0x2e, 0x98,
-  0x24, 0x9a, 0x1a, 0xd8, 0x6a, 0x13, 0x6b, 0xa2, 0x24, 0x02, 0x9a, 0x93,
-  0x63, 0x8e, 0x58, 0x93, 0x78, 0x95, 0x6f, 0x40, 0xa7, 0x4d, 0xde, 0x42,
-  0xb6, 0xb8, 0x9c, 0x50, 0x99, 0x56, 0x37, 0xe4, 0xfa, 0xa8, 0xcd, 0x75,
-  0x93, 0x16, 0x93, 0xfb, 0xe1, 0xd4, 0xe8, 0xb2, 0xe4, 0x3c, 0x1b, 0x2e,
-  0x3f, 0xee, 0x78, 0xc7, 0x94, 0x44, 0xfe, 0x0d, 0x73, 0x04, 0xb4, 0x1d,
-  0xdf, 0x5a, 0x0c, 0x39, 0xa4, 0x0e, 0x4b, 0x5b, 0x67, 0x82, 0xb6, 0x84,
-  0x66, 0xfb, 0xf3, 0xf1, 0x5c, 0x49, 0xb2, 0x75, 0x9c, 0x58, 0x86, 0x63,
-  0x6a, 0x61, 0xb8, 0xc8, 0xe6, 0x07, 0x36, 0x1b, 0x59, 0xe5, 0x83, 0x54,
-  0xd5, 0xb0, 0x86, 0x85, 0xe7, 0xa4, 0x2d, 0xb2, 0xeb, 0x99, 0x28, 0x14,
-  0xbe, 0xe9, 0x62, 0x9b, 0x88, 0xa4, 0x80, 0xb0, 0xc1, 0x23, 0x15, 0x95,
-  0xa0, 0xb1, 0x9b, 0x7d, 0xd8, 0x08, 0xa4, 0x96, 0x1f, 0xae, 0x48, 0xa1,
-  0x77, 0x8d, 0x08, 0x73, 0x08, 0xc8, 0x96, 0x49, 0x19, 0x16, 0x17, 0x8f,
-  0x22, 0x91, 0x24, 0xfc, 0x44, 0x44, 0xb0, 0xd8, 0x21, 0xa0, 0x71, 0x17,
-  0x54, 0x34, 0x82, 0x9f, 0x5a, 0x73, 0x98, 0xcf, 0x8a, 0xf9, 0xf5, 0xed,
-  0x13, 0xf2, 0x78, 0x5f, 0x9e, 0x8e, 0x34, 0x2a, 0x52, 0x64, 0x77, 0xde,
-  0xd6, 0xe2, 0xd2, 0x03, 0xb2, 0xff, 0xc8, 0x01, 0xc4, 0x94, 0xca, 0x60,
-  0x3b, 0x40, 0x4f, 0x58, 0x2a, 0xb8, 0x30, 0x99, 0x4b, 0x7e, 0xd0, 0x49,
-  0x10, 0x18, 0x31, 0x75, 0x45, 0xcb, 0xa3, 0xb1, 0x32, 0x64, 0x99, 0x5e,
-  0x88, 0xbb, 0xcf, 0x28, 0x4b, 0x4f, 0xfa, 0xc9, 0x60, 0x1f, 0xfc, 0x39,
-  0x7b, 0xed, 0x49, 0x4c, 0x1b, 0xa6, 0x09, 0xa4, 0x36, 0x4c, 0x4b, 0xda,
-  0x8a, 0x88, 0x83, 0x2d, 0xd9, 0xd2, 0xb7, 0xe6, 0x7d, 0xfa, 0x63, 0x5f,
-  0x06, 0x74, 0xbb, 0x07, 0xc4, 0x36, 0xf3, 0x56, 0xce, 0xee, 0x43, 0x95,
-  0x61, 0x7f, 0xed, 0xaa, 0x22, 0x37, 0xe2, 0x2e, 0xb7, 0x04, 0xd2, 0x5c,
-  0x34, 0x01, 0xae, 0x50, 0xa1, 0x04, 0xd5, 0x0e, 0x98, 0x29, 0x14, 0x27,
-  0x77, 0x91, 0xdc, 0xee, 0x6b, 0xac, 0x99, 0x7e, 0xa3, 0xf3, 0xc6, 0xce,
-  0x7a, 0x27, 0x44, 0x82, 0xb4, 0x45, 0x42, 0xb9, 0x79, 0xbb, 0x96, 0xb2,
-  0x9e, 0xcc, 0x9e, 0x35, 0x52, 0xa4, 0x25, 0x65, 0xca, 0x42, 0xdc, 0x0a,
-  0x9c, 0xf2, 0xce, 0x7c, 0xf4, 0x64, 0xc0, 0x7b, 0x30, 0x27, 0x20, 0xbf,
-  0x3d, 0x44, 0xe4, 0x49, 0x61, 0x13, 0x25, 0xc4, 0x95, 0x0f, 0x8a, 0x3e,
-  0x2c, 0xff, 0x4d, 0xce, 0x8e, 0x09, 0x60, 0x4d, 0x71, 0x9d, 0x9b, 0x93,
-  0xbf, 0x99, 0x98, 0xc3, 0xb4, 0x24, 0x89, 0xdf, 0xd8, 0x5a, 0x6d, 0x23,
-  0xa6, 0xf6, 0xdc, 0xf4, 0xc5, 0xdc, 0xe0, 0x4b, 0x1a, 0x4a, 0xbd, 0xe9,
-  0xc6, 0x2e, 0x14, 0xe7, 0xed, 0x81, 0x48, 0x9c, 0x43, 0xab, 0x93, 0x9d,
-  0x57, 0x5a, 0x80, 0x7d, 0xf3, 0xf8, 0x13, 0xe9, 0x38, 0x9b, 0xf2, 0x25,
-  0xfe, 0x35, 0xe7, 0xf4, 0x63, 0x8e, 0xce, 0x4f, 0xde, 0x71, 0x49, 0x71,
-  0x7b, 0x16, 0x32, 0xa2, 0x5e, 0xdc, 0xe0, 0xda, 0xf5, 0xe8, 0x4f, 0xaa,
-  0x1c, 0xf0, 0xec, 0x38, 0xa2, 0x3d, 0x43, 0x7b, 0x3c, 0x97, 0x6f, 0x5d,
-  0x2c, 0xf9, 0xeb, 0x9b, 0x74, 0xcf, 0xd5, 0xf5, 0x6c, 0xb3, 0x53, 0x2a,
-  0xd7, 0xae, 0x49, 0xe7, 0x42, 0xb1, 0x1e, 0xa9, 0xc9, 0xd4, 0x29, 0xf8,
-  0x28, 0x05, 0x4e, 0xad, 0xb4, 0xe4, 0x5c, 0xbf, 0x93, 0xe9, 0xe8, 0xbb,
-  0xc2, 0xff, 0x90, 0x0c, 0x77, 0xcc, 0x07, 0xeb, 0x1d, 0x7d, 0x71, 0xf1,
-  0x71, 0x52, 0x9b, 0x1b, 0x8e, 0xd2, 0x7a, 0xff, 0x02, 0x83, 0x1c, 0xcb,
-  0x61, 0x7a, 0x3c, 0xfd, 0x39, 0x19, 0x4c, 0x66, 0x18, 0x5f, 0x82, 0x82,
-  0xdc, 0x7f, 0x31, 0x2b, 0x4f, 0x4f, 0xfc, 0x6c, 0xd7, 0xf0, 0x4d, 0x4e,
-  0xe7, 0xed, 0x53, 0x5f, 0x87, 0x7e, 0xc6, 0x06, 0x03, 0xf3, 0xdb, 0x26,
-  0x87, 0xd3, 0x5b, 0x4a, 0xba, 0x9b, 0xca, 0x3f, 0x69, 0x3c, 0xc7, 0x05,
-  0xca, 0x99, 0x62, 0xa4, 0xe9, 0x98, 0xab, 0x97, 0x7f, 0x9f, 0x1b, 0xa3,
-  0xe3, 0xa8, 0xa3, 0x5f, 0x50, 0xfe, 0x1f, 0x75, 0x10, 0x6f, 0x79, 0xbf,
-  0xd4, 0x64, 0x8e, 0xbe, 0xe4, 0x2c, 0x38, 0x68, 0x29, 0x49, 0x67, 0x5a,
-  0xba, 0x61, 0xf2, 0x35, 0xc5, 0x38, 0xab, 0xcc, 0x63, 0x7f, 0x95, 0x8b,
-  0x8f, 0xcb, 0xfe, 0xd1, 0x62, 0xa4, 0xcc, 0x3f, 0x31, 0xb4, 0x23, 0x09,
-  0x72, 0x60, 0xec, 0x98, 0xec, 0x6f, 0xda, 0x83, 0x43, 0xbf, 0x34, 0xa5,
-  0xdd, 0x0c, 0x45, 0xf3, 0x25, 0x92, 0x60, 0x28, 0x1e, 0x2f, 0x25, 0xf7,
-  0x90, 0x2f, 0xcc, 0x69, 0xa6, 0x89, 0xfd, 0xa5, 0xcf, 0xa6, 0xa2, 0x9e,
-  0x63, 0x34, 0xa5, 0x1a, 0x81, 0xdd, 0x12, 0xb8, 0xc3, 0x5d, 0xaf, 0x8f,
-  0x6e, 0x8c, 0x68, 0xce, 0x6c, 0x57, 0x47, 0xec, 0xd2, 0xd3, 0x2e, 0x8e,
-  0xe8, 0x8e, 0xd2, 0x45, 0xb0, 0xbf, 0xd4, 0xec, 0x48, 0x68, 0xa1, 0x3b,
-  0x2c, 0xbb, 0xec, 0xde, 0xe5, 0xd9, 0x6d, 0x0f, 0x81, 0x92, 0x1a, 0x47,
-  0xef, 0xdf, 0x52, 0x69, 0x13, 0x54, 0xb9, 0xbe, 0xbc, 0x38, 0x7c, 0x37,
-  0x7a, 0xc3, 0xae, 0xf1, 0xcb, 0xd2, 0x2b, 0x9f, 0x2d, 0x71, 0x05, 0x8d,
-  0x1f, 0x5b, 0x9a, 0xb8, 0x3b, 0xae, 0xb7, 0xa1, 0x78, 0x7a, 0xa9, 0xad,
-  0xdd, 0xef, 0xf2, 0xed, 0x73, 0x61, 0x6e, 0x9a, 0x0d, 0xea, 0xda, 0xd6,
-  0x68, 0xdb, 0x2a, 0x42, 0xb5, 0x5f, 0x94, 0xcd, 0x55, 0xb6, 0x57, 0x66,
-  0x68, 0x79, 0x88, 0xa6, 0xe5, 0x48, 0x3b, 0xa3, 0x3f, 0xe5, 0xbb, 0x77,
-  0x25, 0x19, 0xe9, 0x91, 0x31, 0x15, 0x07, 0x52, 0xa9, 0xc6, 0xf1, 0xb1,
-  0x39, 0x77, 0x2a, 0xdf, 0xbd, 0x42, 0xe5, 0x67, 0x1b, 0xf7, 0xf3, 0x3e,
-  0xb5, 0xe9, 0xad, 0x7f, 0xdb, 0xdb, 0x8e, 0x37, 0x7f, 0xf9, 0x4b, 0x9b,
-  0x8f, 0xf7, 0x5d, 0x6d, 0x33, 0x97, 0x52, 0xb4, 0xf5, 0x6f, 0xfb, 0xdb,
-  0x6b, 0x47, 0xe4, 0x67, 0x45, 0xba, 0x6f, 0x9a, 0x37, 0xa8, 0xb3, 0xc9,
-  0x2b, 0x3e, 0x66, 0x56, 0x67, 0xb2, 0x08, 0x1d, 0x8f, 0x6f, 0xb8, 0x45,
-  0xd8, 0x41, 0xb0, 0x6d, 0xab, 0xa9, 0xbb, 0xc0, 0x9b, 0x64, 0x97, 0x9c,
-  0xfc, 0xcf, 0x63, 0x9f, 0x46, 0xb2, 0xd8, 0x6c, 0xfc, 0x2b, 0x8a, 0xd8,
-  0x01, 0xea, 0x72, 0x88, 0x6f, 0xef, 0xaf, 0xf9, 0xb6, 0x1b, 0x9d, 0xe7,
-  0x96, 0xa0, 0x28, 0x36, 0xc1, 0xe0, 0x94, 0x0d, 0x5b, 0xbe, 0x63, 0xbf,
-  0xbd, 0xee, 0x7b, 0x97, 0x27, 0x6f, 0x8f, 0x89, 0x35, 0xfb, 0xf5, 0x09,
-  0x91, 0xcf, 0x8d, 0x84, 0xfe, 0x51, 0x3d, 0x10, 0x96, 0x91, 0xd7, 0xaf,
-  0x96, 0xc2, 0xe1, 0x5d, 0x8b, 0x36, 0xb3, 0x92, 0xc3, 0xae, 0x04, 0x7d,
-  0x5a, 0x30, 0xd0, 0xb5, 0x66, 0x5a, 0x9e, 0x5c, 0x0d, 0xde, 0x96, 0x53,
-  0x58, 0xc9, 0x83, 0x11, 0xa0, 0x82, 0xe6, 0x2d, 0xf3, 0xc3, 0xf7, 0xc5,
-  0xbc, 0xf5, 0xe3, 0x61, 0x24, 0x53, 0x77, 0x63, 0x55, 0x51, 0x9e, 0xbf,
-  0xef, 0x0c, 0x06, 0xd4, 0x99, 0x01, 0xc3, 0xba, 0x24, 0xb8, 0xd3, 0xe2,
-  0xe7, 0x50, 0xd1, 0x62, 0x26, 0x28, 0x9f, 0xdd, 0x33, 0x10, 0x21, 0x75,
-  0xf0, 0x31, 0x97, 0xbd, 0x79, 0x4d, 0x19, 0x64, 0xce, 0xc5, 0xc7, 0x4e,
-  0xbc, 0x0d, 0x9f, 0xbc, 0x14, 0x86, 0x54, 0x76, 0xe7, 0xf0, 0x4f, 0x52,
-  0xe2, 0xb9, 0x5c, 0xdc, 0x63, 0x94, 0x77, 0x2d, 0x68, 0x45, 0x34, 0xbe,
-  0xfa, 0x77, 0x7e, 0xa7, 0x55, 0x86, 0x4a, 0x38, 0xa6, 0xbd, 0x1d, 0x28,
-  0x3f, 0x91, 0xaa, 0x4d, 0x67, 0x95, 0x77, 0x5d, 0x49, 0xb7, 0xb5, 0xba,
-  0x9d, 0x47, 0x6c, 0xea, 0xf1, 0xb0, 0xb6, 0xfb, 0xe9, 0x93, 0xc0, 0x96,
-  0x94, 0xfa, 0xfa, 0xba, 0xb4, 0xc1, 0x31, 0x23, 0x76, 0x16, 0xed, 0x22,
-  0xca, 0x59, 0xa2, 0x49, 0xde, 0x9c, 0xc3, 0xbf, 0x39, 0xd8, 0x44, 0x5d,
-  0x86, 0xbc, 0x88, 0x0c, 0x66, 0xf0, 0xcb, 0x47, 0x13, 0x84, 0x5e, 0x93,
-  0xde, 0x15, 0x11, 0x61, 0x50, 0x1c, 0xab, 0xc7, 0x1d, 0x60, 0x9e, 0x18,
-  0xde, 0x5c, 0xe6, 0x82, 0x20, 0xb9, 0xa6, 0x86, 0x24, 0x1b, 0xd5, 0x16,
-  0x19, 0x6b, 0x9d, 0xe4, 0xec, 0x95, 0x24, 0x41, 0xba, 0x5c, 0x4c, 0x01,
-  0xca, 0x60, 0x38, 0xea, 0x7f, 0x10, 0x29, 0x76, 0x75, 0x9f, 0xec, 0xed,
-  0xf7, 0x93, 0xfd, 0xdd, 0xbd, 0xfd, 0xc8, 0x18, 0x7a, 0xff, 0x41, 0xa0,
-  0xa8, 0x7d, 0xfc, 0xba, 0xf7, 0xd8, 0x51, 0xb8, 0x7c, 0x06, 0xdc, 0x24,
-  0x92, 0xf9, 0x6b, 0x84, 0x0f, 0xc5, 0x67, 0x41, 0xc4, 0x8c, 0xca, 0xca,
-  0xa0, 0xb3, 0xc3, 0xb5, 0xc5, 0x4e, 0x42, 0xad, 0xb1, 0x69, 0x4b, 0x87,
-  0x4d, 0x51, 0x49, 0x87, 0x8b, 0xdb, 0x02, 0xf9, 0x62, 0x3d, 0xa5, 0x69,
-  0x85, 0x52, 0xa0, 0xed, 0x35, 0xca, 0x1b, 0x5d, 0x16, 0x82, 0xd6, 0xd0,
-  0xda, 0x98, 0xfd, 0xfe, 0xfa, 0xe4, 0xe8, 0x52, 0xf9, 0x0e, 0xaf, 0x48,
-  0x79, 0xaa, 0xee, 0x1f, 0x57, 0x8c, 0x71, 0xed, 0x33, 0xd3, 0x83, 0x9b,
-  0xcc, 0xa8, 0xd1, 0xc5, 0x78, 0x79, 0x7d, 0xf0, 0xd7, 0xb4, 0xba, 0x2e,
-  0x8b, 0x87, 0x9e, 0x9f, 0x22, 0xa1, 0xec, 0xc0, 0x48, 0xa8, 0xbd, 0x17,
-  0x7b, 0x4f, 0x90, 0xff, 0x3d, 0xcb, 0x51, 0x10, 0x88, 0x04, 0xc4, 0xe6,
-  0x7c, 0x93, 0x09, 0x36, 0x90, 0x26, 0x61, 0x59, 0x35, 0x8a, 0xe9, 0x26,
-  0x5f, 0xf7, 0xa9, 0xff, 0xec, 0x54, 0x9e, 0xe5, 0xd4, 0xf3, 0x4d, 0xc9,
-  0x55, 0xd8, 0xa4, 0x34, 0xcd, 0xe5, 0x62, 0xb3, 0x4d, 0x11, 0xff, 0xc0,
-  0x58, 0xe9, 0x13, 0xb6, 0xf6, 0xe4, 0x91, 0x25, 0xbe, 0x47, 0x06, 0x51,
-  0x95, 0xa5, 0x1f, 0x5d, 0xa9, 0x65, 0xc7, 0xbe, 0xa1, 0x21, 0x8f, 0x8b,
-  0x37, 0x47, 0xcc, 0x60, 0xaa, 0xf9, 0x52, 0x98, 0xea, 0xc4, 0xba, 0xa6,
-  0xb6, 0xa9, 0x97, 0x0f, 0x7c, 0x9f, 0x72, 0x1b, 0x0e, 0xa6, 0xe3, 0x47,
-  0x3c, 0x64, 0xce, 0x1d, 0x93, 0xc5, 0x1d, 0xb6, 0x4b, 0xef, 0x90, 0xa1,
-  0x86, 0xfa, 0x21, 0x5a, 0x57, 0x79, 0x8b, 0x6b, 0xca, 0x72, 0xc4, 0x81,
-  0xba, 0xa6, 0xd5, 0xaa, 0xd5, 0xbb, 0x63, 0xfa, 0x4d, 0x55, 0x5e, 0x5f,
-  0x1f, 0x9e, 0x7b, 0x86, 0x2e, 0x0c, 0x49, 0xe7, 0xd4, 0xa3, 0xe7, 0xc8,
-  0xd0, 0x41, 0xd9, 0x76, 0xa9, 0xc6, 0xd4, 0x77, 0x26, 0x4a, 0x03, 0x39,
-  0x49, 0xba, 0x11, 0x00, 0xf2, 0xa5, 0xdc, 0x27, 0xf0, 0x3f, 0xa1, 0x9a,
-  0xc1, 0x6c, 0x9a, 0x22, 0x10, 0x2a, 0xb7, 0x10, 0x65, 0x40, 0x9c, 0x15,
-  0x9a, 0xc5, 0xdc, 0xef, 0x94, 0x6e, 0x30, 0x3f, 0xc6, 0x77, 0x70, 0x45,
-  0x9f, 0x1b, 0x25, 0x1c, 0x34, 0x2e, 0xa3, 0xd7, 0xdf, 0x51, 0x8f, 0x25,
-  0xa8, 0x03, 0xad, 0x4d, 0x7d, 0xd9, 0x36, 0x12, 0xa5, 0x56, 0xa3, 0x3a,
-  0xaf, 0xd4, 0xb7, 0x48, 0xcd, 0xdd, 0x3e, 0x19, 0xf2, 0x9f, 0xfb, 0xb6,
-  0xbc, 0x31, 0x1e, 0x03, 0xce, 0xf3, 0x4a, 0x8b, 0x27, 0xcf, 0x33, 0xaa,
-  0xe6, 0x9b, 0xd7, 0x73, 0x07, 0x4b, 0xb9, 0x92, 0xd7, 0x5d, 0x49, 0x3d,
-  0x51, 0x22, 0x29, 0xb4, 0x80, 0x7e, 0xa0, 0xb7, 0xb9, 0xe0, 0xba, 0xcc,
-  0x2e, 0xfb, 0x94, 0x48, 0x3a, 0x8a, 0xe4, 0xdd, 0x48, 0xe5, 0x14, 0x3c,
-  0x46, 0xf9, 0xd5, 0xf7, 0xba, 0x14, 0x7c, 0xd3, 0x98, 0x65, 0x48, 0xeb,
-  0x8f, 0xe6, 0x52, 0x60, 0x28, 0x82, 0x99, 0xc7, 0x5c, 0x82, 0xf9, 0xe4,
-  0xbe, 0xca, 0x19, 0x12, 0x44, 0x8e, 0x34, 0x30, 0x3a, 0xb5, 0xb6, 0x1e,
-  0x5f, 0xa6, 0x64, 0x3b, 0xcf, 0xea, 0x8c, 0xf9, 0x17, 0x41, 0x08, 0x44,
-  0xb1, 0x3f, 0xda, 0x7a, 0xb0, 0x99, 0x14, 0x53, 0x0b, 0x71, 0x46, 0xbb,
-  0x74, 0x7f, 0xff, 0xd9, 0xb3, 0x7e, 0xd2, 0x23, 0xbf, 0x23, 0xfa, 0x44,
-  0x1b, 0xfa, 0x0d, 0x04, 0x4f, 0x2f, 0x5a, 0x61, 0x77, 0xa7, 0xba, 0x9a,
-  0xd0, 0xff, 0xd1, 0x7b, 0x5a, 0x58, 0xf2, 0x52, 0x12, 0x71, 0xa8, 0x9b,
-  0x08, 0xb2, 0x5a, 0xba, 0x1c, 0xde, 0x69, 0xf4, 0xbb, 0x13, 0xeb, 0x5a,
-  0xa2, 0x38, 0xd2, 0x22, 0x2b, 0x17, 0x1a, 0x30, 0x9e, 0x4b, 0xc9, 0x10,
-  0x7c, 0xdf, 0x8b, 0xb2, 0x21, 0xc4, 0xcf, 0x08, 0x39, 0xe1, 0x45, 0xa8,
-  0x97, 0xe3, 0x81, 0x24, 0x08, 0xb3, 0xa1, 0x99, 0x9b, 0xc3, 0x3c, 0xa7,
-  0x45, 0x10, 0x0f, 0x7e, 0x20, 0xa4, 0xbf, 0x4e, 0x7a, 0xb2, 0xdd, 0xe8,
-  0x8f, 0x21, 0xe2, 0xbd, 0xd9, 0x84, 0x86, 0x51, 0xbe, 0x92, 0x7f, 0xfc,
-  0xfb, 0xbf, 0x9b, 0x66, 0xff, 0x9d, 0x5a, 0x79, 0xf5, 0x6f, 0x75, 0x73,
-  0xe3, 0x3d, 0xd3, 0x93, 0x33, 0x70, 0xe2, 0xa2, 0xdd, 0x40, 0xb0, 0x81,
-  0x79, 0x16, 0x79, 0x6c, 0x6f, 0x4f, 0x45, 0x48, 0xf7, 0xbd, 0xf1, 0xe5,
-  0xc8, 0x30, 0x64, 0xbf, 0xa9, 0x05, 0x90, 0x7c, 0x4d, 0x91, 0xe8, 0x8c,
-  0x32, 0xd3, 0xcd, 0x22, 0x80, 0x58, 0x70, 0xdb, 0x41, 0x4a, 0x58, 0xbe,
-  0xc3, 0x37, 0xca, 0x25, 0xe7, 0x3a, 0x25, 0xb4, 0xee, 0xf4, 0xa6, 0xe0,
-  0x53, 0x8c, 0x75, 0x32, 0xbf, 0x4a, 0x67, 0xe5, 0xb5, 0x1d, 0x71, 0xac,
-  0x68, 0xcd, 0x2f, 0x1a, 0x7b, 0xcf, 0x6f, 0x48, 0xdf, 0xf4, 0xe3, 0xeb,
-  0x8f, 0x6c, 0x85, 0x70, 0x02, 0xf6, 0x68, 0x02, 0xfe, 0x1a, 0x16, 0x29,
-  0x13, 0x46, 0x62, 0x63, 0xa9, 0xa8, 0x20, 0xd9, 0xd1, 0x83, 0x6e, 0x4f,
-  0x3e, 0x41, 0x77, 0x27, 0x74, 0x04, 0x3a, 0x55, 0x73, 0x9c, 0xac, 0xb0,
-  0xca, 0x8d, 0x14, 0x44, 0x11, 0xdd, 0x24, 0x33, 0xf2, 0x2a, 0x37, 0x67,
-  0x01, 0x17, 0x20, 0x7d, 0x87, 0xe6, 0x0c, 0xa1, 0xc9, 0x8c, 0x09, 0x69,
-  0xc6, 0x5c, 0x73, 0x6c, 0x30, 0x28, 0x9a, 0xd9, 0x9c, 0xf9, 0x9b, 0xa7,
-  0xa8, 0x3f, 0xa6, 0x19, 0x1a, 0x79, 0x11, 0x92, 0x0c, 0xb6, 0xe7, 0x99,
-  0x5f, 0xfd, 0xc7, 0x66, 0xc9, 0x17, 0x7a, 0x5c, 0xd6, 0x93, 0xda, 0xd9,
-  0x71, 0xc4, 0x8d, 0x8e, 0x1c, 0x8d, 0x7c, 0xa1, 0x83, 0x42, 0x4a, 0xa2,
-  0x01, 0xda, 0x6f, 0x45, 0x93, 0xb0, 0x8f, 0xf9, 0x90, 0x55, 0xcd, 0x34,
-  0x22, 0x9e, 0x69, 0x72, 0xbe, 0x19, 0xf9, 0x9e, 0x01, 0x94, 0x5c, 0x27,
-  0x5b, 0xa3, 0xd1, 0xf9, 0xc9, 0x8e, 0x56, 0x54, 0xdb, 0xd8, 0x38, 0x7e,
-  0xf7, 0xfd, 0xc9, 0xc5, 0xd9, 0xbb, 0xb7, 0xc7, 0xef, 0x2e, 0x93, 0xef,
-  0x0f, 0x2f, 0x4e, 0x0e, 0xbf, 0x3e, 0x15, 0xf2, 0x05, 0x1a, 0x26, 0x61,
-  0xce, 0xd8, 0x14, 0xec, 0x90, 0x12, 0x7b, 0x79, 0x71, 0xd1, 0x52, 0x36,
-  0x9d, 0x2a, 0xdd, 0x1f, 0x84, 0x51, 0x1f, 0x86, 0xf1, 0x07, 0x54, 0xe5,
-  0xea, 0x93, 0x2d, 0xf4, 0x41, 0x0b, 0x74, 0x91, 0x2d, 0x7f, 0xef, 0xa5,
-  0xf3, 0x13, 0x1c, 0x8e, 0xc4, 0x99, 0x0a, 0x73, 0x57, 0x9a, 0xd2, 0xd6,
-  0x7a, 0xf9, 0x86, 0x19, 0x21, 0xb4, 0xf0, 0x8d, 0xbe, 0x0a, 0xf9, 0xc1,
-  0xba, 0x8e, 0xeb, 0xc3, 0xe1, 0xe9, 0xa9, 0xfb, 0xd4, 0xfa, 0x9a, 0x48,
-  0xc2, 0x06, 0xc6, 0xb9, 0x84, 0x68, 0x94, 0xe2, 0xd4, 0xd7, 0xa5, 0x2b,
-  0x0f, 0x50, 0xdc, 0xfb, 0x95, 0x00, 0xe8, 0x63, 0x66, 0xbb, 0x6c, 0x31,
-  0x8d, 0x0b, 0x81, 0x16, 0x9a, 0xac, 0xca, 0xeb, 0x8f, 0xfd, 0x64, 0xf3,
-  0xdf, 0x36, 0x39, 0xb1, 0x33, 0x03, 0x77, 0x35, 0x57, 0x5c, 0xda, 0x76,
-  0x9d, 0x7a, 0x77, 0xe6, 0xfa, 0x24, 0x71, 0x78, 0xdb, 0x01, 0xfb, 0xa2,
-  0x43, 0x51, 0xd4, 0xaa, 0x5e, 0x03, 0xbe, 0xec, 0x1e, 0x97, 0xb2, 0x24,
-  0x96, 0x9d, 0x42, 0xe4, 0x23, 0xc5, 0x59, 0xa3, 0xef, 0xc2, 0x89, 0x90,
-  0x4e, 0x3c, 0x8a, 0x72, 0x8c, 0xb5, 0x20, 0xcf, 0x9b, 0x2d, 0x15, 0xa7,
-  0xce, 0x69, 0x33, 0xd5, 0x53, 0x21, 0x5c, 0x4c, 0xb5, 0x65, 0x49, 0x65,
-  0x46, 0xaa, 0xb8, 0x8d, 0x40, 0x79, 0x4e, 0xc6, 0x54, 0x00, 0xed, 0x43,
-  0x33, 0xd3, 0x38, 0xf9, 0xec, 0x44, 0x6a, 0x79, 0x77, 0x11, 0x13, 0xea,
-  0xe4, 0x7e, 0x4a, 0xac, 0xa3, 0x6c, 0xfd, 0x4c, 0xd6, 0x55, 0x82, 0x50,
-  0x4c, 0xda, 0xcd, 0xb3, 0x0f, 0x16, 0x0c, 0x76, 0x67, 0xea, 0x4c, 0x02,
-  0x30, 0xe9, 0xbf, 0xde, 0x43, 0x6e, 0x12, 0xc7, 0x5a, 0x2c, 0x29, 0x22,
-  0x51, 0x0e, 0x61, 0x8e, 0x1d, 0x2e, 0x3d, 0xfb, 0xc4, 0x5c, 0x42, 0x76,
-  0x97, 0xb9, 0x9d, 0xc0, 0xd5, 0xf4, 0x04, 0x86, 0xde, 0xed, 0xb1, 0x56,
-  0xca, 0x4a, 0xb5, 0x32, 0x13, 0xe2, 0x66, 0xac, 0x72, 0x41, 0x69, 0xea,
-  0x0e, 0x07, 0x4e, 0x43, 0x06, 0x3c, 0xb7, 0x3a, 0xdd, 0x69, 0xb8, 0xa7,
-  0x78, 0x82, 0x65, 0x2d, 0x2a, 0x14, 0xee, 0x90, 0x4f, 0x3b, 0x5a, 0xeb,
-  0x0a, 0x20, 0x03, 0x4a, 0x08, 0xaa, 0x8c, 0x14, 0xad, 0x57, 0x97, 0x94,
-  0x1a, 0x22, 0x36, 0x7d, 0x71, 0x84, 0x9a, 0x0c, 0x05, 0x55, 0x65, 0x75,
-  0xb5, 0x74, 0x90, 0x3c, 0x50, 0x64, 0x4d, 0x45, 0x19, 0xb9, 0x85, 0x58,
-  0x21, 0x00, 0xe4, 0xc3, 0x48, 0x4f, 0xaf, 0x4b, 0x35, 0xc0, 0x53, 0x8b,
-  0x9a, 0xb1, 0x15, 0x07, 0x3d, 0xa3, 0xde, 0x32, 0x07, 0x5a, 0xc1, 0x05,
-  0x7c, 0x8d, 0x46, 0x08, 0x09, 0x5f, 0x4a, 0x87, 0x4c, 0x2b, 0xc8, 0xd7,
-  0x1e, 0x37, 0x83, 0x4b, 0x5f, 0x22, 0x49, 0xce, 0x59, 0x3a, 0x4a, 0xe5,
-  0x07, 0xfa, 0x44, 0xe5, 0x72, 0x00, 0xd2, 0x19, 0xdd, 0xa2, 0x07, 0xd1,
-  0xa4, 0x80, 0xd6, 0xd1, 0xa4, 0x06, 0xaf, 0x8c, 0xbc, 0x9a, 0x51, 0x06,
-  0xa9, 0xea, 0x1d, 0x69, 0x32, 0xce, 0xaf, 0x99, 0x13, 0x84, 0x08, 0x28,
-  0xe8, 0x5c, 0x82, 0xe2, 0xb1, 0x9c, 0x67, 0x74, 0x38, 0x40, 0xe0, 0x08,
-  0xe3, 0xfd, 0xa6, 0x9c, 0xf9, 0x2c, 0x83, 0x3a, 0x12, 0x59, 0x7d, 0x1b,
-  0xfb, 0x40, 0xec, 0x73, 0x49, 0xf3, 0xa8, 0x70, 0x54, 0x29, 0x4f, 0x20,
-  0xe0, 0x5c, 0x0a, 0xaa, 0x81, 0x2b, 0xb5, 0x40, 0x2a, 0xa0, 0x72, 0x29,
-  0x60, 0x1e, 0x34, 0x71, 0x81, 0x36, 0x2e, 0x1c, 0xe9, 0x54, 0xe7, 0x75,
-  0xcb, 0xd6, 0x17, 0xa0, 0x56, 0x26, 0xcc, 0xd0, 0x4c, 0x62, 0x86, 0x21,
-  0x25, 0xed, 0x82, 0x60, 0xb2, 0x58, 0xc2, 0x9d, 0x67, 0xf6, 0x04, 0x75,
-  0xda, 0xcc, 0xd4, 0x96, 0xa7, 0x66, 0x14, 0x66, 0x8b, 0xf0, 0x63, 0xec,
-  0x41, 0x92, 0x7f, 0x0d, 0x6c, 0x2d, 0x43, 0x01, 0x9e, 0x6c, 0x3b, 0xe0,
-  0x11, 0x9b, 0x01, 0x24, 0x1f, 0x26, 0x52, 0x4d, 0x16, 0x10, 0x1d, 0x2a,
-  0x85, 0x0b, 0x42, 0xb8, 0x56, 0xf0, 0x21, 0xd1, 0x84, 0xbb, 0xd9, 0xcc,
-  0x2b, 0x30, 0xc0, 0xfe, 0xc8, 0x34, 0x30, 0x3e, 0x48, 0x4e, 0x0c, 0x59,
-  0xe6, 0x32, 0xf4, 0x8f, 0xc9, 0xc8, 0xbd, 0x81, 0x48, 0x52, 0x09, 0x99,
-  0x67, 0x9d, 0x98, 0x86, 0x77, 0x85, 0x28, 0x3c, 0xc6, 0x57, 0x43, 0xa5,
-  0x9e, 0x4e, 0x9e, 0xce, 0xd9, 0x78, 0x74, 0xbb, 0x6f, 0x7e, 0xcf, 0xb0,
-  0xe3, 0x8d, 0x8d, 0xa3, 0xf7, 0xa3, 0xcb, 0xb3, 0xb7, 0xc9, 0xd9, 0xfb,
-  0xcb, 0xf3, 0xf7, 0x97, 0xa2, 0xa7, 0x8e, 0x39, 0x69, 0x83, 0xa1, 0x4b,
-  0xac, 0x3b, 0xeb, 0x62, 0xce, 0x05, 0xe0, 0x03, 0x8c, 0x59, 0x09, 0x5a,
-  0x51, 0x8f, 0x51, 0xcc, 0x26, 0x65, 0x82, 0x6b, 0x8f, 0xf9, 0xca, 0x31,
-  0xe5, 0x77, 0x66, 0xca, 0x91, 0x50, 0x0f, 0x4f, 0xbe, 0xe6, 0x78, 0xc2,
-  0xef, 0xa1, 0x67, 0xad, 0x5d, 0xab, 0xea, 0xbe, 0xed, 0xc7, 0x00, 0x3a,
-  0xa7, 0xcd, 0xe0, 0xe6, 0x97, 0xcc, 0x65, 0xe7, 0xae, 0xf3, 0xfd, 0xfa,
-  0x98, 0x6e, 0x29, 0xb8, 0xab, 0x11, 0x28, 0x85, 0xd5, 0x03, 0x6b, 0xd8,
-  0xce, 0x2c, 0xf6, 0x13, 0x9c, 0x9b, 0xd2, 0x8c, 0xf0, 0xc6, 0xa6, 0xc4,
-  0x10, 0x8c, 0x10, 0x50, 0x60, 0x46, 0x50, 0x11, 0xe6, 0x96, 0x5d, 0x06,
-  0x45, 0x76, 0x47, 0x8a, 0x4f, 0xa0, 0x53, 0xdf, 0x25, 0x9b, 0x3f, 0x64,
-  0x7e, 0x83, 0x7f, 0xfc, 0x4f, 0xca, 0xdb, 0xfe, 0xa0, 0x3f, 0xf9, 0x2f,
-  0xfe, 0xe4, 0x4f, 0xc5, 0x26, 0x04, 0x66, 0x1b, 0x2a, 0xf3, 0xdd, 0xf1,
-  0xc5, 0xd7, 0xc7, 0x17, 0x67, 0x23, 0xc8, 0x03, 0xf5, 0x77, 0x87, 0x7b,
-  0xfd, 0x63, 0x56, 0x8d, 0xb3, 0xaa, 0x94, 0x3a, 0x7a, 0xfa, 0xaf, 0x67,
-  0x3b, 0xdf, 0x8c, 0x46, 0x87, 0xe7, 0x27, 0xb6, 0x52, 0x95, 0xcd, 0x20,
-  0x65, 0x1f, 0x49, 0xc1, 0x39, 0xce, 0x34, 0x7e, 0x7d, 0xc5, 0xec, 0x8b,
-  0xc9, 0x47, 0xce, 0x2c, 0x08, 0x40, 0x29, 0x1a, 0x58, 0x23, 0x34, 0x8a,
-  0x24, 0x16, 0x53, 0xc3, 0xca, 0x04, 0xe7, 0x57, 0x9b, 0xe0, 0xb2, 0x10,
-  0x14, 0x0c, 0xec, 0x5b, 0x08, 0xee, 0xc7, 0x6a, 0x3c, 0x30, 0xbb, 0xfd,
-  0xa3, 0x16, 0x6e, 0xe7, 0x44, 0x28, 0x23, 0x2a, 0x39, 0x43, 0xc2, 0x39,
-  0x1b, 0x3f, 0xe6, 0x45, 0xde, 0xec, 0x7c, 0xa4, 0xf3, 0x41, 0x55, 0x94,
-  0x66, 0x43, 0x96, 0xee, 0x7c, 0xa0, 0x14, 0xf6, 0x4e, 0x22, 0x76, 0x1d,
-  0x3b, 0x8d, 0xf9, 0x9a, 0x2d, 0x7d, 0xca, 0x0e, 0x6f, 0xf3, 0x93, 0xa7,
-  0x96, 0xa6, 0x4f, 0x34, 0x7f, 0x20, 0x65, 0xaf, 0xcc, 0x5d, 0xb5, 0xb8,
-  0x9b, 0xca, 0x25, 0x02, 0x96, 0x7a, 0x56, 0x2e, 0x45, 0x86, 0x77, 0x23,
-  0xd4, 0x54, 0x9e, 0x15, 0x19, 0x5b, 0x92, 0x8f, 0x92, 0x8c, 0x67, 0x69,
-  0xf1, 0x11, 0xfa, 0x03, 0x34, 0x02, 0xba, 0xfb, 0x94, 0x7c, 0x8e, 0xca,
-  0xe6, 0x02, 0x90, 0x20, 0x7c, 0x30, 0x30, 0xf9, 0x66, 0x24, 0xdc, 0xee,
-  0x39, 0x98, 0x67, 0x39, 0xf6, 0xbc, 0xd0, 0x3b, 0x8e, 0x93, 0x9b, 0x04,
-  0xf2, 0x1d, 0x1f, 0x9f, 0x9a, 0x8b, 0xc9, 0x66, 0x99, 0xc1, 0x47, 0x97,
-  0xcd, 0x28, 0x16, 0xa4, 0x90, 0x40, 0x4e, 0xac, 0xce, 0x21, 0xc8, 0x58,
-  0x7a, 0x68, 0x01, 0x05, 0x04, 0x90, 0xb1, 0x5d, 0x90, 0x3f, 0x5e, 0xdb,
-  0x32, 0x43, 0x22, 0xb9, 0x59, 0x88, 0x81, 0x1d, 0xd8, 0x55, 0x1d, 0xf2,
-  0xeb, 0x5f, 0x09, 0xde, 0xf6, 0xc8, 0x01, 0x02, 0x6d, 0x41, 0x40, 0xee,
-  0x84, 0x33, 0x42, 0x2d, 0xc4, 0xa0, 0x95, 0xde, 0xb6, 0x72, 0x99, 0xf8,
-  0xf5, 0x98, 0x17, 0x90, 0x49, 0x0d, 0xa7, 0x12, 0xf0, 0xb4, 0x7c, 0x60,
-  0x9a, 0xb3, 0xd0, 0xce, 0x13, 0xd0, 0x8e, 0x33, 0x1c, 0x88, 0xa2, 0x37,
-  0xb3, 0xc6, 0x3a, 0x2a, 0x6a, 0x66, 0x58, 0x83, 0xd2, 0x35, 0x85, 0xc8,
-  0xa9, 0x5a, 0x54, 0xd5, 0x3e, 0x3c, 0x9f, 0x29, 0x6b, 0x4a, 0x6b, 0x64,
-  0xb2, 0xf5, 0x6f, 0xad, 0xd9, 0xc1, 0x3b, 0xba, 0x2e, 0xca, 0xc1, 0x78,
-  0x09, 0xc7, 0x8c, 0x57, 0xa8, 0x8f, 0x93, 0xb8, 0xcb, 0x2b, 0xd6, 0x3c,
-  0xf8, 0xf7, 0x14, 0x90, 0x06, 0x3d, 0x06, 0xc7, 0xa8, 0x91, 0x2f, 0xdd,
-  0x66, 0xda, 0xb2, 0xfc, 0x4a, 0x9c, 0x84, 0xe4, 0x2a, 0x88, 0xdb, 0x01,
-  0xca, 0x22, 0x5b, 0x27, 0x8d, 0x67, 0xd3, 0xf4, 0x3b, 0x29, 0x17, 0x8d,
-  0x2d, 0x78, 0x71, 0x09, 0x35, 0x21, 0x93, 0x32, 0x10, 0x9a, 0x4b, 0xa1,
-  0x99, 0x5b, 0xb7, 0x0d, 0x95, 0x96, 0x63, 0x6a, 0x98, 0x74, 0xc6, 0x75,
-  0x7a, 0x56, 0x5e, 0x25, 0x7c, 0x98, 0x9a, 0xcb, 0xcb, 0x3f, 0x9f, 0x1f,
-  0xbf, 0xd2, 0x37, 0xd7, 0xad, 0x19, 0x33, 0x26, 0x02, 0x34, 0x97, 0x09,
-  0x43, 0xb1, 0xe6, 0xd0, 0xb0, 0xa8, 0x18, 0x34, 0x0a, 0xe6, 0xe1, 0xcf,
-  0x0c, 0x92, 0x1f, 0x5f, 0x9f, 0x8c, 0xce, 0x4f, 0xcf, 0x8e, 0x5e, 0xbd,
-  0xfc, 0x51, 0x45, 0xf2, 0x97, 0x14, 0x23, 0x64, 0x3d, 0xcd, 0xfe, 0xcc,
-  0x31, 0xba, 0xc8, 0x7b, 0xef, 0x8e, 0x7f, 0xf8, 0x60, 0xec, 0xb1, 0x57,
-  0x54, 0xd7, 0xa1, 0x7f, 0x9b, 0xce, 0xe4, 0x25, 0xd2, 0x4f, 0x23, 0xba,
-  0xdd, 0xb0, 0x4d, 0xc1, 0xd9, 0x9d, 0x58, 0x5b, 0x9f, 0xd8, 0x25, 0x2a,
-  0xdd, 0x2b, 0x8e, 0xd6, 0x2b, 0x45, 0x97, 0xb6, 0xf2, 0xea, 0x23, 0xd5,
-  0xc4, 0xdd, 0xf5, 0xbf, 0xd9, 0x30, 0xa8, 0x9a, 0x30, 0x44, 0x3e, 0x34,
-  0x07, 0xc0, 0x75, 0xf9, 0x8d, 0x03, 0xf4, 0x0b, 0x7f, 0x7a, 0x45, 0x7e,
-  0x34, 0x4b, 0x40, 0x2b, 0x25, 0xea, 0x01, 0x7a, 0x11, 0x96, 0x5a, 0xa1,
-  0x5e, 0x23, 0x0c, 0xbd, 0xa6, 0xd3, 0xa8, 0x1c, 0x13, 0x15, 0xc6, 0xf6,
-  0x25, 0xd5, 0x62, 0xd9, 0xa8, 0xc8, 0x75, 0x7e, 0x7c, 0x31, 0x3a, 0x19,
-  0x5d, 0x92, 0xe1, 0x2a, 0x95, 0x5b, 0x25, 0x08, 0xa5, 0x65, 0x75, 0x41,
-  0xda, 0xd2, 0x26, 0x1c, 0xf6, 0xab, 0x05, 0xb5, 0x4e, 0xb4, 0x15, 0x73,
-  0xed, 0x2c, 0x6e, 0xba, 0x01, 0x38, 0x35, 0x9c, 0x14, 0x51, 0xa6, 0xcd,
-  0x4e, 0xaf, 0xf4, 0x00, 0x97, 0xb2, 0x35, 0x3a, 0x45, 0x73, 0x50, 0xf0,
-  0x0a, 0xab, 0x33, 0xcb, 0xc7, 0xce, 0x99, 0xd9, 0xc1, 0x90, 0x10, 0x3c,
-  0x49, 0x28, 0x7a, 0xfc, 0x23, 0xa4, 0x01, 0x31, 0x47, 0x8d, 0x20, 0xc5,
-  0xbc, 0xe5, 0x5a, 0x93, 0xb4, 0x66, 0x3f, 0x81, 0xdd, 0xba, 0xa5, 0x60,
-  0xb4, 0xa8, 0x9e, 0x66, 0x7f, 0xea, 0xa1, 0xd0, 0x85, 0xf5, 0x0d, 0x84,
-  0xd5, 0x22, 0xb2, 0x49, 0x28, 0xe7, 0x9c, 0x8a, 0x4a, 0xfe, 0x49, 0xa3,
-  0xb5, 0x80, 0x5a, 0x03, 0x40, 0x41, 0x19, 0x59, 0xa0, 0x82, 0x88, 0xea,
-  0x78, 0x4d, 0x39, 0xac, 0xa0, 0xd6, 0x9b, 0x92, 0xbe, 0x05, 0x17, 0xbc,
-  0xff, 0x31, 0xbd, 0x4e, 0x69, 0x06, 0xc7, 0x4b, 0xbf, 0x14, 0xa4, 0xed,
-  0x3d, 0x57, 0x25, 0xc2, 0xc4, 0x03, 0x22, 0x9d, 0x56, 0xf0, 0x64, 0x34,
-  0x52, 0x2a, 0x42, 0x0d, 0x1f, 0xc1, 0x3b, 0x0f, 0xdb, 0x2c, 0x5e, 0xba,
-  0x2f, 0xd5, 0x08, 0x5b, 0x37, 0xa3, 0x5e, 0xed, 0x58, 0xda, 0xbe, 0x55,
-  0xa6, 0xc0, 0x45, 0x76, 0x2a, 0xd6, 0x14, 0x71, 0x2c, 0x26, 0xf6, 0x32,
-  0xa6, 0xac, 0x43, 0x02, 0x18, 0x54, 0xc2, 0x90, 0x66, 0xc4, 0x1f, 0x85,
-  0x96, 0x50, 0x70, 0x16, 0x95, 0xd8, 0x29, 0xec, 0xae, 0xec, 0x99, 0x2e,
-  0x8f, 0x83, 0xa7, 0xdb, 0xdb, 0x56, 0x1c, 0x5f, 0xbb, 0x97, 0x0f, 0x5a,
-  0x86, 0x0c, 0x5d, 0xac, 0x3e, 0x27, 0x5c, 0xa6, 0xc8, 0xef, 0xd3, 0xc0,
-  0x8e, 0x97, 0x27, 0x5e, 0x4b, 0xf6, 0xbd, 0xc5, 0xa7, 0x40, 0xe0, 0xb5,
-  0xaa, 0x6e, 0xd3, 0xe8, 0x5a, 0xd8, 0x00, 0xa3, 0x5f, 0x2e, 0x50, 0x42,
-  0x6d, 0x22, 0x35, 0x24, 0x80, 0xda, 0xb7, 0x0d, 0xea, 0x25, 0xe2, 0x26,
-  0xcb, 0xcc, 0xea, 0xdb, 0xf7, 0xa7, 0x97, 0x27, 0xe7, 0x3e, 0xfe, 0x20,
-  0xf9, 0xe1, 0xe4, 0xf2, 0x5b, 0xa3, 0xb5, 0x8f, 0x4e, 0xde, 0x7d, 0x73,
-  0x4a, 0x41, 0xde, 0xb7, 0x6f, 0x0f, 0xdf, 0x11, 0xbd, 0xc8, 0x3b, 0x40,
-  0x9b, 0x0f, 0x61, 0x38, 0x90, 0x38, 0x32, 0x53, 0x4c, 0x7b, 0x87, 0x88,
-  0x27, 0xfa, 0x61, 0xac, 0xb1, 0x73, 0xfc, 0xb8, 0xaa, 0x7a, 0xd1, 0x9e,
-  0x24, 0x5a, 0x71, 0xb1, 0x0c, 0xee, 0xc9, 0x8d, 0x8b, 0x63, 0x4b, 0xc6,
-  0x16, 0x4d, 0x74, 0xb7, 0x78, 0x04, 0x92, 0x9c, 0x59, 0x43, 0x07, 0x8e,
-  0x86, 0xef, 0x6e, 0x17, 0xbf, 0xc4, 0x8a, 0x5a, 0xea, 0x69, 0xd8, 0x31,
-  0x46, 0x67, 0x2a, 0xc4, 0xae, 0xe1, 0xfb, 0xb2, 0x9d, 0x74, 0x64, 0xbe,
-  0x88, 0x2e, 0x01, 0x48, 0x54, 0x3a, 0x47, 0x3a, 0x59, 0x9c, 0x64, 0x34,
-  0x5f, 0x9c, 0xfa, 0x17, 0xea, 0xb0, 0x55, 0x73, 0x50, 0xf1, 0xc1, 0xd7,
-  0x65, 0xe6, 0x4e, 0xee, 0xe0, 0x4c, 0x9b, 0xd1, 0xf8, 0x0f, 0xcc, 0x30,
-  0xbe, 0x5c, 0x06, 0x24, 0xd7, 0x06, 0x66, 0x49, 0xb6, 0x6d, 0x9d, 0x31,
-  0x31, 0xfb, 0x0f, 0x58, 0xad, 0xb4, 0xe4, 0xea, 0x5a, 0x9e, 0xd3, 0x34,
-  0xa7, 0x2d, 0x0b, 0x16, 0x0d, 0x09, 0x19, 0x92, 0xd7, 0x28, 0x63, 0x86,
-  0xb4, 0xd4, 0xc7, 0x5a, 0xb4, 0x0c, 0x7c, 0xdf, 0x9d, 0x69, 0x70, 0x52,
-  0xf3, 0x5a, 0x6d, 0xe1, 0x47, 0x07, 0x9d, 0x40, 0x69, 0x45, 0xb8, 0x2b,
-  0x32, 0x42, 0x39, 0xd0, 0x5f, 0xff, 0xba, 0xb8, 0xf6, 0x53, 0x5e, 0xb9,
-  0xb0, 0xfc, 0x22, 0xb6, 0xb2, 0xc2, 0xe4, 0xce, 0x6a, 0x91, 0x14, 0xb3,
-  0x6c, 0xf5, 0x40, 0x2a, 0x54, 0xee, 0xad, 0xfa, 0xa0, 0xfc, 0x7e, 0x3f,
-  0xfc, 0xfd, 0x3e, 0x07, 0x19, 0x4e, 0xce, 0x6f, 0x9f, 0x5b, 0x06, 0x64,
-  0x26, 0x72, 0xf0, 0xd5, 0x37, 0x55, 0x0a, 0x68, 0x87, 0xd1, 0xa3, 0xe2,
-  0x32, 0x67, 0x99, 0xc8, 0xc1, 0x3f, 0x82, 0x90, 0x2e, 0x2b, 0x24, 0xa8,
-  0xe3, 0x11, 0x44, 0x57, 0x18, 0xf7, 0x0f, 0xcf, 0x13, 0xe4, 0x14, 0x5d,
-  0x57, 0xa6, 0x41, 0xf3, 0xfb, 0xa7, 0x36, 0x19, 0xc7, 0xc9, 0x34, 0x14,
-  0x69, 0x94, 0x74, 0xc8, 0x41, 0xbe, 0xb8, 0xd5, 0x2a, 0xdf, 0xe6, 0xaf,
-  0xcf, 0x6d, 0x81, 0xae, 0xba, 0x15, 0xa4, 0x6e, 0xb1, 0x8d, 0xab, 0xf0,
-  0x47, 0xe7, 0xe0, 0x03, 0x23, 0xc9, 0xe0, 0x8c, 0x8c, 0x4e, 0xbf, 0xb2,
-  0x76, 0x46, 0x86, 0x57, 0xa6, 0x18, 0x59, 0x5f, 0x33, 0xa4, 0xc6, 0x43,
-  0x1e, 0x79, 0xc2, 0xc5, 0xaf, 0xf4, 0x21, 0xab, 0xfe, 0x97, 0xfd, 0xdd,
-  0xdd, 0xbd, 0x83, 0xbd, 0xcf, 0x5f, 0xec, 0x1e, 0xec, 0xed, 0xed, 0xed,
-  0x1f, 0xec, 0x1d, 0x1c, 0xec, 0xef, 0xfe, 0xbc, 0x43, 0xfe, 0xa3, 0xdb,
-  0x3c, 0xbb, 0xd3, 0xc8, 0x34, 0xfb, 0xf9, 0xb0, 0xad, 0xeb, 0xe6, 0x9e,
-  0xc1, 0x00, 0xec, 0xe9, 0xc3, 0xbe, 0x56, 0xcd, 0xc7, 0xd2, 0xca, 0x70,
-  0xce, 0x0c, 0x53, 0x48, 0x2e, 0x5c, 0xaa, 0x39, 0xce, 0xa0, 0x47, 0x73,
-  0x8f, 0x5e, 0xfd, 0x6d, 0x49, 0x23, 0x1d, 0x93, 0x3a, 0x00, 0x9d, 0xa6,
-  0xb6, 0x89, 0xbd, 0xd7, 0xb3, 0x72, 0x3c, 0x46, 0xea, 0x92, 0xcd, 0x6d,
-  0x1f, 0x26, 0xc4, 0xa5, 0xfc, 0x91, 0xb7, 0x84, 0x84, 0x0e, 0x81, 0x2a,
-  0xe6, 0x83, 0xee, 0x66, 0xc7, 0x79, 0xf6, 0xcc, 0x0e, 0x98, 0x94, 0x54,
-  0x57, 0x04, 0x9e, 0x6e, 0x33, 0x49, 0x95, 0xcd, 0x79, 0x4b, 0xae, 0xb2,
-  0xcf, 0x77, 0x0f, 0x0e, 0xa8, 0xf4, 0xcf, 0x1f, 0xf7, 0xfa, 0x02, 0x08,
-  0xf7, 0xb3, 0x5c, 0xfa, 0xf6, 0x7a, 0xe2, 0x36, 0xc8, 0xfc, 0xf0, 0xc7,
-  0x59, 0x2c, 0xe7, 0x59, 0x65, 0x0c, 0x11, 0x2a, 0x1e, 0x0d, 0x44, 0x34,
-  0x3c, 0x86, 0xcc, 0xb1, 0x08, 0x46, 0xa6, 0x4e, 0x36, 0x0e, 0xdd, 0x08,
-  0xcc, 0x15, 0x6d, 0x59, 0x28, 0x98, 0x2f, 0xcc, 0x0d, 0xd1, 0xb6, 0x8d,
-  0xf2, 0x57, 0x00, 0x6b, 0x72, 0x2e, 0x1b, 0x67, 0xf1, 0xf1, 0x7d, 0x2b,
-  0x92, 0x01, 0x87, 0xab, 0xe0, 0x92, 0xc6, 0xf4, 0x38, 0xeb, 0xf0, 0xf0,
-  0x98, 0x78, 0xca, 0xad, 0x24, 0xf0, 0xfd, 0xc5, 0x1b, 0xec, 0xfe, 0xb3,
-  0xbd, 0x9f, 0x19, 0xaf, 0x4c, 0x07, 0xc2, 0xcd, 0x9a, 0x06, 0x5f, 0xfc,
-  0x14, 0x2d, 0xdd, 0x48, 0x5b, 0xd9, 0xf0, 0x7a, 0xa8, 0x5a, 0x85, 0x78,
-  0x1b, 0xfb, 0x7e, 0xd6, 0x08, 0xd7, 0x29, 0xe0, 0x42, 0xe5, 0xb0, 0xd3,
-  0xd4, 0xa1, 0xe4, 0xbb, 0x6a, 0x75, 0x60, 0xb6, 0x1c, 0xdd, 0xdb, 0xe3,
-  0xcb, 0x43, 0x73, 0x79, 0x7c, 0x17, 0x1a, 0xfa, 0x6f, 0x33, 0x63, 0x95,
-  0xd3, 0x62, 0x6f, 0xe1, 0x3c, 0xdc, 0x5a, 0x76, 0x70, 0x9a, 0xbb, 0xa7,
-  0xc9, 0x16, 0x85, 0x28, 0x9f, 0x7d, 0xfe, 0xec, 0xe9, 0x36, 0x97, 0x62,
-  0xe1, 0xd7, 0x32, 0x4a, 0x10, 0x83, 0x57, 0x52, 0xd8, 0xa9, 0xc8, 0x81,
-  0x6f, 0x45, 0xd2, 0xfb, 0x8b, 0x13, 0x3e, 0xd2, 0x37, 0x4c, 0x22, 0xc2,
-  0x46, 0x6f, 0x97, 0x4d, 0x12, 0xf7, 0xad, 0xa7, 0x64, 0xcc, 0x73, 0x62,
-  0x3a, 0x05, 0xf9, 0x02, 0x5d, 0x8c, 0x96, 0xfc, 0x03, 0x37, 0xac, 0x39,
-  0xa0, 0x25, 0x0a, 0x94, 0x4a, 0xdd, 0x37, 0x74, 0x06, 0xd4, 0xa8, 0xc4,
-  0xcc, 0x2c, 0xfb, 0xcc, 0x5a, 0x60, 0x64, 0x07, 0xb1, 0x3c, 0x62, 0xe9,
-  0xdf, 0x61, 0xe3, 0xdf, 0x66, 0xc8, 0x0f, 0x94, 0x42, 0xda, 0x86, 0xe6,
-  0x41, 0xc5, 0x8e, 0x53, 0x8f, 0x5b, 0xe9, 0xa8, 0x4e, 0xdb, 0xf4, 0x48,
-  0xdd, 0x94, 0xcf, 0x49, 0x44, 0x91, 0x9d, 0x42, 0xc6, 0xb3, 0x34, 0xf0,
-  0x2c, 0xe6, 0x2d, 0x97, 0x8f, 0x90, 0x69, 0x80, 0xd4, 0x02, 0x39, 0x07,
-  0x73, 0x73, 0x1d, 0x55, 0xf7, 0xa2, 0x61, 0xc3, 0x4c, 0xb0, 0xf5, 0x14,
-  0x3b, 0x88, 0x20, 0xa6, 0x8d, 0xf1, 0x53, 0x69, 0x2c, 0x6b, 0x92, 0x1a,
-  0xcd, 0xad, 0x0e, 0xb4, 0xc4, 0xfe, 0x60, 0xae, 0xbf, 0xf2, 0x00, 0x73,
-  0x7e, 0x7e, 0xa9, 0xfe, 0x5d, 0x9f, 0xf3, 0xb0, 0xd4, 0x69, 0x77, 0x60,
-  0x2b, 0xba, 0xc6, 0x8c, 0xba, 0xc0, 0x4f, 0x5a, 0xeb, 0x67, 0x0b, 0x3d,
-  0xd9, 0xd9, 0xd9, 0x5e, 0xd1, 0x1b, 0xf9, 0x75, 0xec, 0xeb, 0xe7, 0x20,
-  0x25, 0xf2, 0x52, 0xba, 0xcd, 0x9a, 0xb7, 0x1b, 0xa7, 0xa9, 0xcd, 0x6b,
-  0x5a, 0xc9, 0xa9, 0x00, 0xe3, 0xd9, 0x8d, 0xaa, 0xe6, 0x15, 0x77, 0x5e,
-  0x85, 0x57, 0x7b, 0x10, 0x82, 0xc5, 0x53, 0x92, 0x38, 0xae, 0x2a, 0xcf,
-  0xa8, 0x80, 0x61, 0x72, 0x48, 0xbb, 0xa1, 0xf5, 0x61, 0xaf, 0xcb, 0xea,
-  0xcf, 0xd5, 0xba, 0x07, 0xaa, 0xc4, 0x5a, 0x77, 0x5e, 0xdf, 0xfb, 0xa5,
-  0xaa, 0x79, 0xca, 0x09, 0x62, 0x9d, 0xbd, 0xe3, 0x8c, 0xf9, 0x8f, 0xac,
-  0xe4, 0xf4, 0xf8, 0xcc, 0xf3, 0xa2, 0x55, 0x28, 0x58, 0x1a, 0x01, 0xd2,
-  0xc5, 0x0e, 0x02, 0x54, 0xa9, 0x95, 0x52, 0x70, 0xfb, 0xc5, 0x43, 0x41,
-  0x41, 0x22, 0x59, 0x2d, 0xac, 0x58, 0xdb, 0x4d, 0xcc, 0x20, 0x85, 0x31,
-  0x6f, 0xaf, 0xd6, 0x7c, 0xf4, 0x79, 0xc7, 0x33, 0x8a, 0xc9, 0x42, 0x2a,
-  0x48, 0x60, 0x1c, 0x9e, 0x9c, 0x12, 0x2c, 0xf6, 0xd4, 0x98, 0x78, 0x23,
-  0x55, 0x95, 0x00, 0x13, 0x07, 0x60, 0xb7, 0xc8, 0x49, 0x5d, 0xef, 0xdb,
-  0x82, 0x43, 0x9a, 0x2d, 0x09, 0xbb, 0x85, 0x42, 0xac, 0x6c, 0xfa, 0x0b,
-  0x49, 0xa8, 0x59, 0x2d, 0xa3, 0x2f, 0xd5, 0xec, 0xb4, 0x05, 0x01, 0x37,
-  0x95, 0xa6, 0xb8, 0xcd, 0x66, 0xe5, 0x02, 0x26, 0x35, 0x8b, 0x69, 0xd4,
-  0x3b, 0xab, 0xb2, 0x59, 0x76, 0x2b, 0xde, 0x55, 0xa6, 0x33, 0xfe, 0x46,
-  0x10, 0x0b, 0x5c, 0xf0, 0xb8, 0x91, 0xac, 0x96, 0x00, 0x15, 0x41, 0x1f,
-  0xdd, 0x61, 0x56, 0x28, 0x47, 0xf6, 0x43, 0xdf, 0x77, 0x45, 0x38, 0xcc,
-  0x0c, 0xd9, 0x22, 0x0e, 0x03, 0x32, 0x72, 0x05, 0xdc, 0xfe, 0xbe, 0x16,
-  0x3e, 0x97, 0x6e, 0xb6, 0x08, 0x3b, 0x0b, 0xb5, 0x66, 0x26, 0x7b, 0xdf,
-  0xfb, 0x4a, 0x93, 0xce, 0x21, 0x03, 0xba, 0x79, 0xfa, 0xe4, 0xa9, 0x45,
-  0x4b, 0x57, 0xc6, 0x22, 0xa3, 0x82, 0x38, 0x7d, 0x4e, 0x1d, 0xc7, 0xe6,
-  0x28, 0x67, 0xe6, 0x9f, 0x00, 0x54, 0x32, 0xc4, 0xda, 0x3c, 0x4b, 0xf1,
-  0x66, 0x0f, 0xd3, 0x4e, 0x98, 0x1b, 0xa4, 0x43, 0xc9, 0xbf, 0xd0, 0x54,
-  0xb5, 0x04, 0x9b, 0x78, 0x9f, 0x6f, 0x43, 0x8a, 0xf3, 0x36, 0x93, 0xa1,
-  0xed, 0xbd, 0xa0, 0x7e, 0xb8, 0xff, 0xaf, 0x79, 0x2a, 0x69, 0x10, 0xac,
-  0x87, 0x94, 0x95, 0x4e, 0x2f, 0x2f, 0xc3, 0x98, 0x4b, 0x9c, 0x7e, 0xbd,
-  0xa4, 0xf8, 0xa3, 0x2d, 0xe0, 0x45, 0xbd, 0x98, 0xd3, 0x5d, 0x94, 0x71,
-  0x35, 0x61, 0xdb, 0x38, 0x99, 0x74, 0x4b, 0xb3, 0xbc, 0xdc, 0xfa, 0x69,
-  0x79, 0x47, 0xa5, 0x90, 0xaf, 0xae, 0xf2, 0x09, 0xc5, 0xfe, 0x1d, 0x6b,
-  0x38, 0xc9, 0x78, 0x7e, 0x70, 0xae, 0xd5, 0xd7, 0xcc, 0xd8, 0x92, 0xc5,
-  0x72, 0x3c, 0x33, 0x97, 0xb5, 0xe6, 0xb3, 0x98, 0x53, 0x85, 0x59, 0x32,
-  0xd6, 0x16, 0x9a, 0x63, 0x7a, 0x43, 0x18, 0x9c, 0x9d, 0x1c, 0x0a, 0x84,
-  0x4b, 0x2b, 0xa8, 0xe0, 0x73, 0xd4, 0x84, 0xa6, 0x44, 0x83, 0x79, 0x59,
-  0x68, 0x3a, 0xdc, 0xb2, 0x66, 0x3a, 0x59, 0x44, 0x73, 0xb8, 0x4a, 0x56,
-  0x82, 0x27, 0xa5, 0x68, 0x83, 0x98, 0xe6, 0x78, 0xc3, 0x1f, 0xcc, 0x74,
-  0xb0, 0xb8, 0x59, 0xe8, 0x4a, 0xab, 0x42, 0xc4, 0xda, 0x92, 0x24, 0x60,
-  0xe1, 0xe8, 0x9d, 0x7f, 0x7b, 0x3e, 0x4c, 0x8e, 0xa9, 0x25, 0xee, 0x93,
-  0x28, 0xba, 0xf0, 0xd1, 0x98, 0xdf, 0x99, 0xc1, 0x5e, 0xd3, 0x05, 0x76,
-  0x56, 0xd1, 0xbf, 0xd0, 0x9a, 0xfc, 0x92, 0xdd, 0xb2, 0xf8, 0x6d, 0xfb,
-  0xab, 0xa6, 0x21, 0x4d, 0xb3, 0x38, 0xc7, 0xdf, 0xcd, 0x59, 0x31, 0xea,
-  0x97, 0x5d, 0x26, 0xf7, 0x85, 0xb2, 0x6a, 0x91, 0x6f, 0xf1, 0x9b, 0x89,
-  0xd1, 0xca, 0xa0, 0x5b, 0x2d, 0xee, 0xb1, 0x7e, 0x9e, 0x70, 0x64, 0xfd,
-  0x93, 0x1b, 0xf0, 0xb6, 0x96, 0x6c, 0x3f, 0x0b, 0xe0, 0xe5, 0x83, 0x55,
-  0x31, 0xed, 0x54, 0x95, 0x09, 0xdc, 0xb9, 0x94, 0xc0, 0x34, 0x7b, 0x34,
-  0xea, 0xac, 0x73, 0x5e, 0x3d, 0xfb, 0x4d, 0x7f, 0x41, 0x66, 0x37, 0xf5,
-  0xc5, 0x68, 0x2d, 0x66, 0x09, 0x86, 0x1b, 0xff, 0x5f, 0x59, 0x1d, 0xb8,
-  0x57, 0x8a, 0xfa, 0x02, 0x00,
+  0xb6, 0x56, 0xaa, 0xfa, 0x4e, 0xef, 0x6d, 0xc9, 0x2e, 0xf8, 0xa2, 0x88,
+  0x6f, 0x9e, 0xef, 0xad, 0xa9, 0x24, 0xec, 0x6d, 0x7c, 0xb9, 0xc1, 0x70,
+  0xfe, 0x8d, 0x57, 0x1b, 0x90, 0x60, 0x24, 0x97, 0x66, 0xa3, 0x0c, 0x69,
+  0x65, 0x72, 0x39, 0x6d, 0xf0, 0xad, 0xd8, 0x67, 0xdd, 0x41, 0x58, 0x29,
+  0xdd, 0x01, 0xc1, 0xb5, 0xec, 0x2c, 0x3e, 0x1f, 0xe7, 0x08, 0x8b, 0xde,
+  0x15, 0xd3, 0x25, 0x62, 0xe8, 0x51, 0xc3, 0x98, 0x16, 0xb9, 0x74, 0xa1,
+  0x96, 0x81, 0x03, 0x85, 0x68, 0x81, 0xc4, 0x23, 0xb9, 0x28, 0xe6, 0x94,
+  0xf5, 0x3e, 0x6e, 0xe0, 0x18, 0xe1, 0xb3, 0x34, 0x48, 0x3e, 0x14, 0x13,
+  0x2e, 0x75, 0x4f, 0x76, 0x6d, 0x5e, 0x8d, 0x17, 0x33, 0xf2, 0x2a, 0x8c,
+  0xc9, 0x97, 0x85, 0x8b, 0x87, 0xd5, 0x83, 0x56, 0x24, 0xdd, 0xef, 0x30,
+  0xfb, 0x31, 0xd8, 0xb7, 0x2d, 0xdf, 0x05, 0x6a, 0x84, 0xb0, 0x52, 0xe2,
+  0xbb, 0x86, 0x56, 0x60, 0xb9, 0x50, 0x44, 0x00, 0x51, 0x10, 0xef, 0xe8,
+  0xed, 0xd1, 0xf9, 0xf9, 0xd1, 0x39, 0xcd, 0xf7, 0x41, 0xa7, 0x36, 0x9a,
+  0x92, 0x52, 0xbb, 0xa8, 0xa0, 0x22, 0x74, 0x7d, 0xa7, 0x8a, 0x26, 0x10,
+  0x91, 0x28, 0x14, 0x5e, 0x54, 0x58, 0x10, 0xcc, 0xfe, 0xc3, 0xc5, 0x27,
+  0x7c, 0x4f, 0x20, 0x10, 0xda, 0xd6, 0xc3, 0x0f, 0xc4, 0x12, 0x7c, 0x85,
+  0x2d, 0xdd, 0xc2, 0xb5, 0x50, 0x49, 0x39, 0x82, 0x85, 0xe6, 0xda, 0x5f,
+  0x67, 0x2d, 0x35, 0x75, 0x20, 0xa0, 0xda, 0x4c, 0xe2, 0xde, 0x53, 0xeb,
+  0x4a, 0xc0, 0x90, 0x2f, 0xe9, 0x8c, 0x92, 0xed, 0x84, 0xc9, 0xa8, 0x9b,
+  0xc5, 0x3c, 0x9f, 0x58, 0xc7, 0xac, 0xf9, 0xb9, 0x51, 0xff, 0x12, 0x3e,
+  0xe5, 0xb5, 0xc2, 0x52, 0x10, 0x80, 0x54, 0xbf, 0x81, 0xef, 0x18, 0xeb,
+  0x54, 0x0e, 0x4f, 0x90, 0xa3, 0xc6, 0xf8, 0x2e, 0xa5, 0x99, 0x6f, 0x67,
+  0x8d, 0xcb, 0xde, 0xcf, 0xe0, 0x10, 0x24, 0x69, 0xa1, 0x48, 0x19, 0x5f,
+  0x32, 0x90, 0xdb, 0x69, 0xe6, 0xa0, 0xe9, 0xae, 0xd2, 0xf0, 0x39, 0x92,
+  0x45, 0xab, 0xfd, 0xe4, 0xc7, 0x3a, 0x1f, 0xff, 0xec, 0x2e, 0x0f, 0x64,
+  0xea, 0xb4, 0xe9, 0xa9, 0x30, 0x75, 0x32, 0x51, 0x62, 0x0c, 0x73, 0x92,
+  0xf6, 0x87, 0xe1, 0xd1, 0x79, 0x72, 0xf0, 0x35, 0xf1, 0xab, 0xff, 0x93,
+  0x0b, 0x4c, 0xcf, 0xc9, 0xed, 0xb0, 0x26, 0xdc, 0x09, 0xc2, 0x58, 0x92,
+  0x4d, 0xfc, 0xba, 0xc0, 0x83, 0xd6, 0xca, 0xe6, 0x5a, 0x4d, 0xc2, 0xa3,
+  0x97, 0x68, 0xad, 0x21, 0x79, 0xf6, 0x1e, 0x58, 0xc5, 0xc7, 0xac, 0x21,
+  0x1d, 0x32, 0x7f, 0x15, 0x99, 0xeb, 0x88, 0xa3, 0x07, 0xba, 0x36, 0xd2,
+  0xfb, 0x3a, 0x30, 0x3b, 0x79, 0x95, 0x0e, 0x92, 0x8d, 0x77, 0xe5, 0x3f,
+  0x8c, 0x32, 0x90, 0x6e, 0x3f, 0x19, 0xec, 0x24, 0x9b, 0xdf, 0xe7, 0xc5,
+  0xcb, 0x67, 0x9f, 0x27, 0xc7, 0x5b, 0x1b, 0x2d, 0xdc, 0x3d, 0x17, 0x78,
+  0x19, 0xa5, 0xc5, 0x27, 0xbb, 0x64, 0xa7, 0x38, 0xd9, 0x8c, 0x7f, 0x13,
+  0xe7, 0x43, 0xcd, 0xc5, 0x15, 0x96, 0xb6, 0x88, 0x94, 0x4e, 0x81, 0xf0,
+  0x27, 0xdf, 0x49, 0x66, 0xf2, 0x13, 0x58, 0xf9, 0xe6, 0xa9, 0x09, 0x4d,
+  0xdd, 0xcb, 0x67, 0x41, 0x13, 0x4f, 0x6d, 0x1b, 0x1f, 0xb8, 0x8d, 0x5f,
+  0xd8, 0xc4, 0xde, 0x60, 0x67, 0x2f, 0xd9, 0x3c, 0x1d, 0x6e, 0xef, 0xd9,
+  0x16, 0xc2, 0x26, 0xf6, 0xd0, 0x04, 0x3d, 0xd4, 0x7e, 0xf9, 0x29, 0x7d,
+  0xff, 0xc7, 0xac, 0xf8, 0x39, 0xd9, 0xfc, 0x61, 0x77, 0xd7, 0x34, 0xf0,
+  0x79, 0x72, 0x70, 0xfc, 0x43, 0xf2, 0x74, 0x60, 0x1a, 0x7b, 0x9f, 0xde,
+  0x48, 0x73, 0x42, 0x11, 0x3d, 0x44, 0x23, 0xe6, 0xf7, 0x41, 0x1b, 0xcf,
+  0x3a, 0x6d, 0x9c, 0x18, 0xbb, 0xf0, 0xce, 0x5c, 0x2b, 0x3b, 0x83, 0x27,
+  0x7b, 0x49, 0xfe, 0xec, 0xc5, 0x73, 0x6d, 0x48, 0xda, 0xc0, 0xef, 0xdb,
+  0x8e, 0x45, 0x26, 0x42, 0x31, 0xaa, 0xce, 0xd1, 0x9d, 0x11, 0x68, 0x10,
+  0x11, 0x15, 0x39, 0xf5, 0xae, 0xd3, 0x6a, 0x22, 0xdb, 0x8d, 0x4a, 0xbf,
+  0x98, 0x95, 0x12, 0x82, 0xfe, 0x0c, 0x1e, 0x46, 0x73, 0x71, 0xee, 0x07,
+  0xdd, 0x21, 0xdb, 0x54, 0x1f, 0xfd, 0x3c, 0x79, 0x37, 0x3c, 0x3e, 0x32,
+  0x23, 0xda, 0x31, 0x5d, 0x73, 0x73, 0xc8, 0x1d, 0xc2, 0xaf, 0x30, 0xb9,
+  0x2f, 0x41, 0x3e, 0x2b, 0x6d, 0xa8, 0xce, 0xcd, 0x98, 0x53, 0xb3, 0xe9,
+  0xcc, 0xc5, 0x5d, 0xe3, 0xbb, 0x84, 0x1e, 0xe9, 0x1f, 0x5c, 0x91, 0x09,
+  0xc1, 0x57, 0x2d, 0x3e, 0xfd, 0x6d, 0x59, 0x98, 0x63, 0x52, 0x95, 0x15,
+  0x81, 0x9c, 0x36, 0x5a, 0xda, 0xc2, 0xb7, 0x6f, 0x8e, 0x38, 0x59, 0xfe,
+  0x5d, 0x5a, 0x18, 0x19, 0x49, 0x84, 0x57, 0xf5, 0x27, 0x0a, 0xd5, 0x73,
+  0xe4, 0x85, 0xdf, 0x3f, 0xb9, 0x2f, 0xee, 0xcc, 0x3a, 0x7e, 0x36, 0xd8,
+  0x25, 0x74, 0x35, 0x59, 0xbd, 0x6f, 0xdf, 0x99, 0x7f, 0xef, 0x3e, 0xdd,
+  0x48, 0xe8, 0x57, 0x6d, 0x0b, 0x5e, 0xcf, 0xeb, 0xda, 0xe1, 0xe9, 0xe9,
+  0xb7, 0xc7, 0x8c, 0xd5, 0x38, 0x14, 0x0f, 0x28, 0x29, 0x57, 0xd6, 0x2a,
+  0x66, 0xe9, 0x6a, 0xac, 0x37, 0x97, 0x58, 0x84, 0xb8, 0xd9, 0xa7, 0x2c,
+  0x9b, 0x23, 0xbd, 0xb7, 0x23, 0x11, 0x1a, 0x91, 0xd1, 0x16, 0x86, 0x44,
+  0xea, 0x4f, 0x87, 0x9a, 0xb3, 0xa9, 0xad, 0xb7, 0x75, 0x74, 0x6f, 0x09,
+  0x39, 0x52, 0x57, 0x07, 0x18, 0x5d, 0xb4, 0x89, 0x05, 0xea, 0x2d, 0xc6,
+  0x0a, 0x53, 0x8d, 0x21, 0xb1, 0x7d, 0x37, 0x86, 0x46, 0xbb, 0xe7, 0x4e,
+  0xef, 0x8b, 0x83, 0x75, 0xc3, 0x63, 0xec, 0x87, 0x46, 0x8b, 0xcc, 0x1a,
+  0x46, 0x93, 0x91, 0x81, 0x20, 0x18, 0x77, 0x91, 0xcd, 0x28, 0xd3, 0x9e,
+  0x01, 0x49, 0xf7, 0xfe, 0xe0, 0xdd, 0xd1, 0xeb, 0xef, 0x0e, 0x4e, 0x3e,
+  0x1c, 0x99, 0x57, 0x72, 0xf3, 0xb1, 0x4d, 0x87, 0xb6, 0x43, 0x1f, 0x67,
+  0xf9, 0xb8, 0x9c, 0x52, 0x40, 0x68, 0xe3, 0xf3, 0x8d, 0x35, 0x46, 0x82,
+  0x27, 0xeb, 0xf4, 0xd6, 0x2e, 0xbf, 0x66, 0xf6, 0x05, 0xfd, 0x6b, 0x8f,
+  0xff, 0xb5, 0xf7, 0xf9, 0xfa, 0x56, 0x6b, 0xd0, 0x81, 0x95, 0x7c, 0x89,
+  0x52, 0xa0, 0xa8, 0xe0, 0x88, 0xa2, 0xd7, 0x48, 0xb3, 0xe0, 0x59, 0x59,
+  0xd7, 0x70, 0x8a, 0xde, 0x6d, 0xf4, 0xec, 0xe6, 0xe8, 0xde, 0xb7, 0xc1,
+  0xd7, 0xe9, 0xa5, 0xd7, 0x50, 0x30, 0xd6, 0xb7, 0x7a, 0x56, 0xe5, 0x40,
+  0x54, 0x9b, 0xda, 0xd0, 0x26, 0x98, 0x24, 0x32, 0xd9, 0x5c, 0xe7, 0xbf,
+  0xbc, 0x7e, 0x73, 0x70, 0x71, 0x44, 0x2f, 0xe8, 0xe7, 0x05, 0x38, 0x68,
+  0x33, 0x1e, 0xa8, 0x3f, 0x9b, 0x12, 0x45, 0x7e, 0x4d, 0x03, 0x5a, 0xdf,
+  0xe2, 0xb0, 0x03, 0xe2, 0xdf, 0x9d, 0x7e, 0x95, 0x85, 0x62, 0xac, 0x5d,
+  0x02, 0x7a, 0xad, 0xe0, 0x92, 0xcd, 0x75, 0xfe, 0xdd, 0xfa, 0x96, 0x7a,
+  0x70, 0xa5, 0xf6, 0x8c, 0x44, 0x16, 0x27, 0xc8, 0x87, 0x08, 0x92, 0x60,
+  0x19, 0x3d, 0xe6, 0xd6, 0x47, 0xe2, 0x0a, 0xec, 0x71, 0xf2, 0x6a, 0x18,
+  0xd8, 0x85, 0x97, 0x0c, 0x77, 0xf2, 0x31, 0x95, 0xe5, 0xee, 0xde, 0x93,
+  0xcf, 0x31, 0x9f, 0xaf, 0xd7, 0xb7, 0xcd, 0xdd, 0xb0, 0xfe, 0x39, 0x7d,
+  0x3a, 0x6f, 0xbc, 0x4a, 0x7c, 0xf2, 0x19, 0xb2, 0xa7, 0x64, 0x47, 0x31,
+  0xb2, 0x85, 0x56, 0xdd, 0xe3, 0xed, 0xc1, 0x84, 0xde, 0x72, 0x42, 0x97,
+  0x32, 0xdd, 0x68, 0x9c, 0x1f, 0xeb, 0x85, 0x12, 0x62, 0x28, 0x8e, 0xc2,
+  0x4e, 0x5d, 0x7c, 0xce, 0xbf, 0x3f, 0x7a, 0xfc, 0x2e, 0x8f, 0x51, 0x98,
+  0x81, 0xe8, 0x9b, 0xb3, 0x7b, 0xcd, 0xf9, 0xc2, 0xb7, 0xa0, 0x93, 0xf3,
+  0x9a, 0x05, 0x9a, 0xf1, 0x48, 0x7c, 0x3b, 0x6a, 0x8c, 0x40, 0x27, 0x30,
+  0xa2, 0xe5, 0x1e, 0x8a, 0x12, 0x80, 0x01, 0x3e, 0x1e, 0x42, 0xef, 0xec,
+  0x74, 0x94, 0x1b, 0x4d, 0xd8, 0x66, 0xb1, 0x78, 0x56, 0xb9, 0x9d, 0x7a,
+  0x3d, 0x7e, 0xb9, 0xc7, 0xb9, 0x44, 0x17, 0x25, 0xcf, 0x65, 0x6d, 0x7d,
+  0x48, 0x08, 0x0c, 0xca, 0xb3, 0xed, 0x75, 0xea, 0xa4, 0x8e, 0x61, 0x18,
+  0x6c, 0xd2, 0xb3, 0x7d, 0x6c, 0x44, 0x4d, 0x91, 0x55, 0x2b, 0xb1, 0x10,
+  0x91, 0xb8, 0x11, 0x86, 0xe8, 0x17, 0x04, 0x30, 0xef, 0x0c, 0x06, 0x03,
+  0x6b, 0xee, 0x20, 0xe6, 0x25, 0xe1, 0x22, 0x62, 0xb3, 0xf3, 0x69, 0x82,
+  0x31, 0xc7, 0x9b, 0x50, 0xe6, 0xa1, 0x50, 0x6f, 0x09, 0x46, 0x46, 0xfc,
+  0x04, 0xf6, 0x68, 0x78, 0x3e, 0x8e, 0x0d, 0xf9, 0xec, 0x86, 0xd2, 0x31,
+  0x7c, 0x8a, 0x2d, 0xc2, 0x8a, 0xbe, 0xb1, 0xef, 0x51, 0x4a, 0x12, 0x59,
+  0x39, 0x55, 0xda, 0xb9, 0xa0, 0x1d, 0x4c, 0x58, 0x6f, 0x2e, 0x9d, 0x77,
+  0x6f, 0x4b, 0x11, 0x69, 0x57, 0x7a, 0x0c, 0x13, 0x20, 0x21, 0x57, 0xde,
+  0x82, 0x7a, 0x00, 0x04, 0x07, 0x04, 0x13, 0x29, 0xd8, 0x3d, 0xa0, 0x37,
+  0xc8, 0xdc, 0xaa, 0xcd, 0xd2, 0x8e, 0xb0, 0x46, 0x93, 0xcd, 0x0c, 0xdd,
+  0xbf, 0xe7, 0x98, 0xa5, 0xd7, 0x50, 0x25, 0x29, 0x13, 0xeb, 0xd9, 0x74,
+  0x15, 0x11, 0x2a, 0x19, 0xbc, 0x73, 0x57, 0x11, 0x30, 0xac, 0xcf, 0x54,
+  0x2d, 0x9a, 0x33, 0xa8, 0xd2, 0x43, 0xc8, 0x3a, 0x56, 0x85, 0xb6, 0xc7,
+  0xda, 0xa2, 0x8d, 0x6b, 0x77, 0xe6, 0xc6, 0xdd, 0xca, 0x6d, 0xd1, 0x65,
+  0x66, 0x94, 0xbd, 0xcb, 0x4c, 0x8a, 0xe1, 0xe4, 0x5e, 0x92, 0xde, 0x9a,
+  0xab, 0xa7, 0xc8, 0x08, 0x4a, 0x09, 0x50, 0x02, 0xbc, 0x32, 0x27, 0x9e,
+  0x9f, 0xd1, 0x71, 0x67, 0x4b, 0xc5, 0xaa, 0xd4, 0x95, 0xac, 0x4a, 0x36,
+  0xd9, 0xd0, 0x60, 0xb6, 0x64, 0x75, 0xe8, 0x91, 0x02, 0x5e, 0xce, 0x88,
+  0xb4, 0x54, 0x34, 0x75, 0x35, 0xcf, 0xa9, 0xe7, 0x46, 0x44, 0x0f, 0x65,
+  0xdf, 0xe4, 0x80, 0x10, 0x92, 0x9f, 0x83, 0x21, 0x10, 0x3a, 0x5b, 0x69,
+  0x31, 0xf1, 0x3e, 0x62, 0x43, 0xc9, 0xe2, 0x7e, 0x22, 0x24, 0x6e, 0xd1,
+  0x07, 0xbd, 0x84, 0x46, 0x6f, 0xc5, 0xbc, 0xba, 0xba, 0x62, 0xab, 0x2d,
+  0xe9, 0x0e, 0x2d, 0xbe, 0xc9, 0x4e, 0x68, 0x56, 0x08, 0xb0, 0x7c, 0xbf,
+  0x6c, 0x36, 0x2f, 0x6c, 0x5d, 0x43, 0xf1, 0xba, 0xb4, 0x36, 0xb3, 0x86,
+  0x0f, 0x79, 0xdd, 0x1a, 0x9b, 0x1f, 0x85, 0x5c, 0x8a, 0x76, 0xb8, 0xf7,
+  0xf4, 0x7c, 0x0d, 0xe5, 0x68, 0x0a, 0xc7, 0x9d, 0xa0, 0x8b, 0x0e, 0xde,
+  0x3d, 0x07, 0x16, 0x71, 0xa0, 0xd1, 0x5b, 0x8b, 0x8a, 0xc2, 0x76, 0x4d,
+  0x46, 0xa9, 0x33, 0xb9, 0xd6, 0x92, 0x96, 0xb7, 0x97, 0x6a, 0x64, 0x1d,
+  0x17, 0x22, 0x87, 0xca, 0x9b, 0xcc, 0x11, 0x3f, 0x3a, 0x87, 0xa3, 0x23,
+  0x1f, 0x96, 0xd3, 0x6f, 0x85, 0x49, 0x27, 0x16, 0x6b, 0xe5, 0x15, 0x06,
+  0xd9, 0x99, 0x95, 0x41, 0xe2, 0x35, 0xc9, 0xae, 0x92, 0xb2, 0xc5, 0x4d,
+  0x8d, 0xbe, 0x49, 0x88, 0x59, 0x5b, 0xe4, 0x3d, 0xc2, 0xe4, 0x2d, 0x9e,
+  0x69, 0xc2, 0xa5, 0x9c, 0xb4, 0x9a, 0x83, 0x85, 0xd3, 0xb9, 0x50, 0xad,
+  0x8e, 0x72, 0xdd, 0x2e, 0xd2, 0xba, 0xd6, 0xcd, 0xc0, 0x26, 0xc0, 0x1e,
+  0x20, 0x85, 0xce, 0x46, 0xdb, 0x2f, 0x64, 0x9d, 0xb0, 0x93, 0xe1, 0x41,
+  0xeb, 0x08, 0xd2, 0xe0, 0xcc, 0x59, 0x34, 0x05, 0x52, 0x46, 0x88, 0xa9,
+  0x97, 0x20, 0x00, 0xfd, 0xd1, 0x1a, 0xa7, 0x06, 0xf5, 0xc7, 0x2a, 0xd1,
+  0x57, 0x73, 0x0b, 0x8c, 0x5a, 0x07, 0xf3, 0xa1, 0x73, 0x7a, 0x76, 0x7e,
+  0xfa, 0xf5, 0xf9, 0xd1, 0x70, 0x98, 0xbc, 0x3b, 0xba, 0x60, 0x5b, 0xff,
+  0x82, 0x51, 0x72, 0x57, 0xa8, 0xe4, 0x8d, 0x58, 0x83, 0x72, 0x33, 0x29,
+  0x3a, 0x44, 0x1d, 0x09, 0x48, 0x4f, 0xa2, 0x02, 0xd5, 0xb8, 0x1d, 0xd9,
+  0x88, 0x9f, 0x0a, 0xb8, 0xee, 0x1a, 0xde, 0x7e, 0xc0, 0x8f, 0x10, 0x90,
+  0xb4, 0xce, 0x73, 0xe7, 0x46, 0x85, 0x62, 0xcc, 0x80, 0x24, 0x9b, 0x1e,
+  0xe8, 0x5c, 0xe8, 0x74, 0x65, 0x9b, 0x3f, 0x31, 0xbc, 0x3f, 0x99, 0xd9,
+  0x94, 0xa2, 0x7c, 0x7f, 0x32, 0xc6, 0xaf, 0x6c, 0x8a, 0x3f, 0x25, 0x3f,
+  0x98, 0x36, 0x27, 0xc6, 0x78, 0x95, 0x02, 0xc4, 0x43, 0x14, 0x1e, 0x76,
+  0xd4, 0xcb, 0xb9, 0x57, 0x5a, 0x3b, 0xe1, 0x6c, 0xc0, 0xea, 0x81, 0xaa,
+  0x9f, 0xa0, 0x75, 0x61, 0x3a, 0x23, 0x81, 0xbf, 0xd9, 0x2f, 0x4b, 0xe5,
+  0xb7, 0x24, 0x39, 0xc9, 0x2e, 0x51, 0x9c, 0x07, 0x9f, 0x33, 0xcd, 0xed,
+  0x10, 0x47, 0xf5, 0xee, 0x3b, 0xfa, 0xd1, 0x4e, 0xf2, 0xe4, 0xc5, 0xf3,
+  0x9d, 0x17, 0xfc, 0x57, 0xfd, 0xef, 0xcb, 0xa7, 0x3b, 0x42, 0x96, 0x6f,
+  0xfe, 0xf5, 0x74, 0xff, 0xe9, 0xee, 0x3e, 0xd1, 0x36, 0xee, 0xec, 0xef,
+  0x98, 0xff, 0xff, 0x54, 0x7e, 0x42, 0xdc, 0x94, 0x2f, 0xf7, 0x5e, 0x7c,
+  0x06, 0xe0, 0x0a, 0xed, 0x8f, 0xa9, 0xf9, 0x48, 0xbf, 0x29, 0xfb, 0x60,
+  0x8f, 0x82, 0xe6, 0xf3, 0xa7, 0xb6, 0x27, 0x92, 0xf0, 0xfd, 0x54, 0x94,
+  0x9c, 0x06, 0x6e, 0x2b, 0xb2, 0xaa, 0x57, 0x95, 0xc9, 0x66, 0xfc, 0x3a,
+  0x92, 0x76, 0x18, 0xf2, 0x36, 0xd7, 0x35, 0x04, 0x1d, 0x5b, 0xeb, 0x1d,
+  0xc6, 0x84, 0x7b, 0xcc, 0x6f, 0xbf, 0xf4, 0xd3, 0x9a, 0xf3, 0xbd, 0x06,
+  0x3e, 0x37, 0x59, 0x2a, 0x79, 0x6f, 0xac, 0xc5, 0xf3, 0xfc, 0x32, 0xdf,
+  0x9d, 0xda, 0xd8, 0xbf, 0xf4, 0x7b, 0xec, 0xb9, 0xa2, 0xb7, 0x64, 0x37,
+  0x24, 0xe1, 0xd7, 0x6c, 0xda, 0x40, 0xe4, 0x5b, 0xad, 0xcd, 0xb3, 0xe6,
+  0x96, 0xdf, 0xcd, 0x94, 0x57, 0x79, 0xdb, 0xa6, 0x5b, 0x71, 0x8d, 0xeb,
+  0xc8, 0x90, 0x83, 0xe6, 0x3e, 0xcc, 0xfd, 0xf6, 0x1e, 0xd3, 0x9c, 0x1b,
+  0x11, 0x76, 0xb0, 0x5d, 0xb9, 0xbe, 0xb7, 0x38, 0x39, 0x63, 0xd0, 0x6c,
+  0x1d, 0x53, 0xe5, 0x0b, 0xb5, 0x15, 0xa6, 0xf1, 0xaa, 0xdd, 0xb2, 0x7d,
+  0x7e, 0x43, 0x74, 0x4e, 0x9b, 0xc2, 0x86, 0xea, 0xb1, 0xb8, 0xe2, 0xf9,
+  0x79, 0xdd, 0xd9, 0xc1, 0xa7, 0x68, 0x37, 0x7a, 0xdf, 0x93, 0x6f, 0xe0,
+  0x3c, 0xd9, 0x43, 0xb7, 0x72, 0x68, 0x0e, 0x06, 0xaf, 0x25, 0x34, 0x19,
+  0x72, 0x05, 0xe5, 0x3b, 0x76, 0x24, 0xdd, 0x73, 0x40, 0x9a, 0xdb, 0xe6,
+  0xfc, 0xdb, 0x67, 0x0a, 0x56, 0x70, 0xea, 0x1f, 0x18, 0x95, 0x16, 0x54,
+  0xda, 0x61, 0x4b, 0x45, 0x58, 0xff, 0x8f, 0x16, 0x61, 0x85, 0xcb, 0x8c,
+  0x11, 0x68, 0xd4, 0x14, 0xcd, 0xe7, 0xd4, 0x4f, 0x7b, 0xb5, 0xd2, 0x6e,
+  0x94, 0x56, 0xad, 0x22, 0x0a, 0x6b, 0x52, 0x84, 0x63, 0x46, 0xd4, 0x73,
+  0xc8, 0x4c, 0x64, 0x3d, 0xe2, 0x0f, 0x6b, 0x6b, 0xc3, 0xb3, 0xa3, 0xa3,
+  0x37, 0xc9, 0xc9, 0xf1, 0xbb, 0xe3, 0x0b, 0x4f, 0x0b, 0xb7, 0xb7, 0x87,
+  0x7a, 0x5a, 0xb5, 0x96, 0x5f, 0x67, 0x3a, 0x1c, 0x13, 0xb3, 0x94, 0x7b,
+  0x91, 0xfb, 0x7b, 0x96, 0x49, 0xc2, 0xc3, 0xb4, 0xfb, 0x1e, 0xec, 0x6d,
+  0x90, 0x30, 0x51, 0x45, 0x74, 0x4f, 0x8b, 0xab, 0x8d, 0x46, 0x63, 0x7a,
+  0xd7, 0x67, 0x22, 0x80, 0xfe, 0x5f, 0x05, 0xa7, 0xd1, 0x56, 0x97, 0x84,
+  0x54, 0xd6, 0x66, 0xdf, 0x08, 0x0c, 0xb5, 0xd3, 0x2b, 0x9a, 0xdb, 0x8c,
+  0x51, 0xd0, 0x9e, 0x5b, 0x0e, 0x08, 0xbb, 0xdb, 0x0c, 0xc4, 0x04, 0xb3,
+  0x9c, 0xd3, 0x22, 0x7d, 0xf8, 0x2f, 0x2a, 0x9b, 0xc8, 0x8d, 0x07, 0x39,
+  0xee, 0x7f, 0xd1, 0x3b, 0x1d, 0x16, 0xfb, 0xaa, 0xdf, 0xaa, 0xb9, 0x3a,
+  0xa2, 0x99, 0x80, 0x22, 0x79, 0xb2, 0x63, 0x33, 0x0b, 0xe6, 0x90, 0x39,
+  0xa2, 0xdf, 0xd3, 0xc7, 0x76, 0x13, 0xa3, 0x84, 0x2c, 0x48, 0x95, 0xaf,
+  0x16, 0x45, 0x70, 0xdd, 0xfd, 0x95, 0xdf, 0x35, 0xe3, 0x7f, 0xbe, 0x83,
+  0xeb, 0xed, 0x32, 0xad, 0xfa, 0x46, 0xdd, 0xba, 0xef, 0xab, 0x4b, 0x95,
+  0x77, 0x84, 0x40, 0x83, 0xd9, 0xdf, 0x93, 0xb9, 0xaa, 0xa3, 0x1d, 0x15,
+  0xd1, 0xa5, 0x87, 0x94, 0x88, 0x4b, 0x4e, 0xe5, 0x00, 0xd0, 0xd0, 0x29,
+  0x29, 0x57, 0x3d, 0x9c, 0x4e, 0xc1, 0x71, 0x84, 0xc3, 0xba, 0x8a, 0x4e,
+  0x46, 0x51, 0xb2, 0x00, 0xc4, 0x2a, 0xb5, 0x9a, 0xd3, 0x30, 0x65, 0x2c,
+  0xa1, 0x3e, 0x3d, 0x4b, 0x76, 0x5f, 0xd0, 0x38, 0x1e, 0x37, 0x9e, 0xb7,
+  0x65, 0x35, 0xb6, 0xe9, 0xbf, 0xb0, 0x11, 0xbc, 0x5c, 0x50, 0xce, 0x60,
+  0x40, 0x01, 0x3c, 0x9e, 0x5d, 0xc5, 0xaf, 0x02, 0x5f, 0x47, 0x46, 0x89,
+  0xc4, 0xd3, 0xe1, 0x8e, 0x42, 0x80, 0x9b, 0xd5, 0x22, 0xba, 0x6b, 0x64,
+  0x5e, 0xbc, 0x7a, 0xb1, 0x95, 0xcd, 0x15, 0xe5, 0x69, 0x20, 0x97, 0x88,
+  0xd9, 0x6b, 0xb7, 0xf9, 0x04, 0xaa, 0xb4, 0xa3, 0x9e, 0x33, 0xeb, 0xc5,
+  0x9b, 0x8f, 0x61, 0xcd, 0x88, 0x59, 0x22, 0xd8, 0x69, 0x7b, 0x26, 0x0a,
+  0x0c, 0x4d, 0x6b, 0x09, 0x8f, 0xc2, 0x26, 0xf4, 0x07, 0x4a, 0x45, 0x76,
+  0x71, 0x01, 0xb2, 0x9f, 0x48, 0x34, 0xaf, 0xbb, 0xaf, 0x10, 0xac, 0xbf,
+  0x69, 0xa6, 0xea, 0x4c, 0x78, 0x67, 0x37, 0x76, 0x7b, 0xcc, 0x44, 0xaa,
+  0xe2, 0x0d, 0x7b, 0x77, 0xc7, 0x28, 0xad, 0xd3, 0xd2, 0x6e, 0x2b, 0xd9,
+  0x54, 0xa1, 0x25, 0x8a, 0x61, 0xf5, 0x31, 0x3b, 0xbb, 0x3b, 0xdf, 0x2e,
+  0x9f, 0x75, 0x10, 0xd7, 0xaf, 0x7c, 0x79, 0xef, 0xe9, 0x8a, 0x45, 0x3b,
+  0xad, 0x60, 0x8c, 0x67, 0x0a, 0x57, 0x84, 0x22, 0xe8, 0x22, 0x2f, 0xc1,
+  0xb2, 0x99, 0x8d, 0x9f, 0x5d, 0xa5, 0xa8, 0xc3, 0xbc, 0xa2, 0xf7, 0x9a,
+  0xbe, 0xd1, 0xe9, 0xca, 0x3b, 0x01, 0x50, 0xf3, 0x2f, 0x6b, 0x72, 0x8b,
+  0xcd, 0x41, 0x8a, 0xe7, 0x6c, 0x57, 0x9b, 0xf9, 0xcd, 0x34, 0x0a, 0xde,
+  0xdb, 0x2c, 0x39, 0x7b, 0x6d, 0x21, 0xa1, 0xbb, 0xa7, 0xca, 0xae, 0x16,
+  0x4c, 0x5a, 0x51, 0xb2, 0xad, 0x4f, 0x3c, 0xd5, 0x72, 0x5e, 0x8d, 0x6c,
+  0x26, 0xf8, 0x10, 0xef, 0x27, 0x08, 0xde, 0x71, 0xaa, 0x2a, 0xab, 0x94,
+  0x52, 0xee, 0x5c, 0x0c, 0xe4, 0x94, 0x1d, 0x97, 0x33, 0xa9, 0xc5, 0xca,
+  0xc7, 0xab, 0xf0, 0x72, 0xf0, 0x99, 0x88, 0x71, 0x80, 0xa4, 0x5c, 0xde,
+  0x28, 0x56, 0xd8, 0x53, 0x06, 0x18, 0x45, 0xc3, 0x1a, 0x0e, 0x0b, 0xa0,
+  0x81, 0x9e, 0xec, 0x5a, 0xb4, 0x64, 0x3f, 0x45, 0x12, 0xbf, 0x56, 0x42,
+  0x4c, 0xa6, 0xce, 0x27, 0x67, 0xff, 0xe1, 0xe9, 0xfb, 0xb7, 0xc7, 0x5f,
+  0x5b, 0xd6, 0x21, 0x16, 0xe2, 0x2d, 0x36, 0x0c, 0x76, 0x1f, 0xfb, 0x91,
+  0x6e, 0x29, 0x71, 0x2b, 0x40, 0x59, 0x23, 0x9e, 0x3e, 0xfa, 0x3f, 0x80,
+  0x00, 0x29, 0x9e, 0x90, 0x83, 0x9c, 0xa9, 0x3a, 0xea, 0x2d, 0xe7, 0x6e,
+  0xe8, 0xb0, 0xca, 0x71, 0x42, 0x45, 0x5a, 0x35, 0x8b, 0xb9, 0x05, 0x11,
+  0x7a, 0x25, 0x72, 0x85, 0x58, 0x5b, 0xb3, 0xc6, 0x17, 0x73, 0x16, 0x4d,
+  0x92, 0xfb, 0xd9, 0xf2, 0xe6, 0xf2, 0x1d, 0x40, 0xee, 0x04, 0xa1, 0x3d,
+  0x91, 0x0b, 0x20, 0xc0, 0xe5, 0x4c, 0x89, 0x89, 0xd3, 0x87, 0xb6, 0x6b,
+  0xfc, 0x66, 0x92, 0xd6, 0xd7, 0x3c, 0x50, 0x5c, 0x1a, 0x39, 0x23, 0xaa,
+  0x11, 0x6b, 0x4b, 0x27, 0x64, 0xa8, 0x3b, 0x30, 0x8e, 0x05, 0xea, 0xba,
+  0xf8, 0x90, 0x2d, 0x71, 0xe6, 0xf0, 0x49, 0x9a, 0x71, 0x9a, 0x22, 0x54,
+  0x89, 0x58, 0x27, 0x7e, 0xf2, 0x9a, 0xc2, 0x32, 0xfb, 0xc4, 0x2f, 0x3f,
+  0x63, 0xee, 0x37, 0x3f, 0x53, 0x54, 0xa4, 0xa4, 0x23, 0x81, 0x3f, 0xbe,
+  0xf4, 0x92, 0xcf, 0x18, 0x27, 0xa8, 0x9b, 0x8e, 0x7d, 0xc4, 0xe4, 0x60,
+  0xd9, 0xf8, 0xe3, 0x46, 0xbf, 0xbe, 0x9f, 0x8d, 0xca, 0xa9, 0xe6, 0x48,
+  0x58, 0xae, 0x07, 0x7d, 0xc8, 0xaf, 0x7d, 0x97, 0x70, 0xa4, 0xb6, 0xf1,
+  0xdc, 0x92, 0x0e, 0x2b, 0xe5, 0xfa, 0xcf, 0xa5, 0x8d, 0x10, 0x1e, 0xd2,
+  0x51, 0x80, 0x86, 0x87, 0x64, 0x3c, 0x57, 0x65, 0x94, 0x4a, 0x2c, 0x66,
+  0xfb, 0x61, 0xa6, 0xda, 0x43, 0xa7, 0x88, 0x5f, 0xb9, 0x20, 0x0f, 0x07,
+  0xca, 0x89, 0x18, 0x75, 0x67, 0x5d, 0xc8, 0x2f, 0x30, 0x40, 0x7a, 0x9b,
+  0x7f, 0x21, 0x00, 0x7a, 0x8f, 0x8a, 0x86, 0xeb, 0x8f, 0x98, 0xae, 0xfe,
+  0xc4, 0x0e, 0x45, 0x8e, 0xfb, 0xfd, 0x55, 0x3f, 0xae, 0x8f, 0x76, 0xa6,
+  0xde, 0xec, 0xa7, 0xb4, 0xba, 0x12, 0x42, 0x3d, 0x89, 0xa4, 0xc1, 0x48,
+  0xb4, 0x55, 0x6e, 0xac, 0x63, 0x92, 0x94, 0x12, 0x8b, 0x9a, 0x81, 0xfa,
+  0xb4, 0xe0, 0xf4, 0x3f, 0x49, 0x8e, 0x62, 0x97, 0xa4, 0xdd, 0x88, 0x9e,
+  0xc4, 0xf9, 0xa3, 0xc5, 0xa2, 0xa4, 0xee, 0x2e, 0xd3, 0x6a, 0x15, 0xce,
+  0x3f, 0x2b, 0x97, 0x99, 0xf7, 0x1a, 0x39, 0xf1, 0x60, 0x09, 0x67, 0xe2,
+  0x38, 0xe1, 0x4f, 0x41, 0x97, 0x20, 0x0a, 0x1a, 0x29, 0xe6, 0xe9, 0x9a,
+  0xe0, 0xdf, 0xbf, 0x96, 0xa2, 0x65, 0xe6, 0x3c, 0x0b, 0xa9, 0x89, 0x30,
+  0xfd, 0xbd, 0xd8, 0x11, 0xf7, 0x5b, 0x23, 0x70, 0xd5, 0x3a, 0x39, 0x38,
+  0x3f, 0x32, 0x9a, 0xed, 0x55, 0x01, 0x3a, 0x89, 0xa2, 0xd1, 0xfc, 0xb7,
+  0xac, 0x90, 0x3a, 0x69, 0x85, 0x9e, 0x0f, 0xfa, 0xe0, 0xad, 0xf7, 0x26,
+  0x6d, 0x26, 0x01, 0x06, 0x70, 0xaa, 0xb5, 0xdb, 0x72, 0x63, 0xa5, 0x09,
+  0x86, 0xd4, 0x21, 0x46, 0x03, 0xde, 0x52, 0x14, 0x22, 0x31, 0x9f, 0x2a,
+  0x95, 0x22, 0xf8, 0x2c, 0x10, 0xeb, 0x3e, 0x37, 0xb0, 0xce, 0x35, 0x4e,
+  0xb5, 0xcb, 0x1a, 0xf8, 0xbb, 0x72, 0x68, 0xca, 0xb7, 0x5a, 0x61, 0x4f,
+  0xb7, 0x9d, 0x7a, 0x71, 0x97, 0xd1, 0xdf, 0x71, 0xcf, 0x90, 0x2e, 0xd2,
+  0xd5, 0x0b, 0x32, 0x0b, 0x86, 0x67, 0xef, 0xf5, 0xc4, 0x53, 0x7e, 0x39,
+  0x5b, 0xef, 0x3a, 0x9b, 0xce, 0xd9, 0x31, 0x2d, 0xa4, 0x3d, 0xe2, 0xd7,
+  0x61, 0x73, 0x60, 0xb2, 0x66, 0xab, 0x91, 0x02, 0x2e, 0x3c, 0x22, 0x62,
+  0xa3, 0x4f, 0xac, 0x00, 0xf8, 0xf2, 0x29, 0xea, 0xdb, 0xfd, 0xa3, 0x1d,
+  0xad, 0xeb, 0xc3, 0x9a, 0x57, 0xe5, 0xde, 0x2c, 0xa9, 0x12, 0xd1, 0x51,
+  0x2f, 0x06, 0xf4, 0x21, 0x88, 0x54, 0xc4, 0x4c, 0xe9, 0x2f, 0xf8, 0x31,
+  0x50, 0x6f, 0xca, 0x4c, 0x0a, 0xa9, 0x63, 0xd9, 0xae, 0x4a, 0x89, 0xa9,
+  0xba, 0x8e, 0x70, 0x60, 0x0f, 0x12, 0x7a, 0xe4, 0xab, 0xc6, 0xfd, 0x6f,
+  0xb7, 0xb5, 0xba, 0x38, 0xf9, 0x6f, 0x28, 0xd7, 0x57, 0x0f, 0x7c, 0x9d,
+  0xb5, 0xca, 0x91, 0xdb, 0xa4, 0x9e, 0xf5, 0xfe, 0xba, 0x99, 0x8b, 0x8d,
+  0xe9, 0xd4, 0x09, 0x7c, 0x7d, 0x8c, 0x56, 0x15, 0xf9, 0x6f, 0x4e, 0x61,
+  0x12, 0xd9, 0x45, 0x35, 0x36, 0xee, 0x5b, 0xd9, 0x08, 0x54, 0xb5, 0x8e,
+  0x92, 0x75, 0x2c, 0x07, 0x17, 0x32, 0x3a, 0x00, 0x12, 0xb8, 0xc9, 0x6b,
+  0x0d, 0x3e, 0x9a, 0xbd, 0x3d, 0x66, 0x4c, 0x44, 0xc3, 0xdc, 0x01, 0x59,
+  0x33, 0xf6, 0xa6, 0x32, 0x1b, 0x5f, 0x97, 0x8c, 0xa9, 0x35, 0x93, 0xe6,
+  0x25, 0x65, 0xae, 0x27, 0xff, 0x4b, 0xf6, 0xc0, 0xb7, 0x2e, 0xbf, 0x8e,
+  0x36, 0xc2, 0x80, 0x29, 0x23, 0x07, 0x6e, 0x43, 0x1c, 0xfd, 0x70, 0x71,
+  0x7e, 0x90, 0x7c, 0x73, 0x74, 0xf0, 0xe6, 0xe8, 0x7c, 0xd8, 0xb9, 0xf4,
+  0x05, 0xfe, 0xc1, 0x1a, 0x1a, 0x39, 0x81, 0xa1, 0x1a, 0x2b, 0x47, 0x00,
+  0x6c, 0xa2, 0x74, 0xa6, 0x52, 0xcf, 0x6c, 0x1e, 0x3a, 0x48, 0xe6, 0x7c,
+  0x90, 0x41, 0xc4, 0xd1, 0x02, 0xf0, 0x19, 0xd7, 0x10, 0x36, 0xb6, 0x8d,
+  0xb1, 0x91, 0x50, 0x04, 0x62, 0x50, 0x97, 0xb9, 0x9f, 0xdc, 0xe2, 0x68,
+  0xf5, 0xdc, 0x65, 0x32, 0x29, 0x35, 0x6f, 0xaf, 0xbd, 0x72, 0xdf, 0xb8,
+  0xd4, 0x6c, 0x4f, 0x6c, 0xc9, 0x25, 0x23, 0x5e, 0xc3, 0xf5, 0x1f, 0xfa,
+  0xe6, 0xbb, 0x7d, 0x33, 0xf9, 0x7d, 0xe2, 0x5d, 0xbc, 0xcf, 0xea, 0xf5,
+  0x8e, 0x0b, 0xb0, 0xfd, 0x79, 0xc8, 0xe8, 0xab, 0xf0, 0x24, 0x7d, 0x13,
+  0x6d, 0x89, 0x4e, 0xd7, 0x94, 0xca, 0x25, 0x75, 0x2d, 0x08, 0x5c, 0xaa,
+  0x9e, 0x92, 0x2c, 0x27, 0x28, 0xc8, 0x44, 0x11, 0x80, 0x92, 0x33, 0x33,
+  0x05, 0x0f, 0x86, 0x8e, 0xc8, 0x10, 0xa0, 0xeb, 0x98, 0xb3, 0xc7, 0x97,
+  0xfa, 0x94, 0xa9, 0x97, 0xd9, 0x63, 0x66, 0xba, 0x25, 0x0f, 0xf9, 0xf7,
+  0x03, 0x02, 0x20, 0x82, 0xc1, 0xaf, 0x5b, 0xf1, 0x51, 0x71, 0x86, 0x4a,
+  0x09, 0x47, 0x69, 0x8e, 0xfa, 0x60, 0xf7, 0xbc, 0x42, 0xf7, 0xe9, 0x93,
+  0x5a, 0x30, 0x44, 0xde, 0x65, 0x14, 0x18, 0x19, 0xf5, 0xf0, 0x6f, 0x72,
+  0x0d, 0x5d, 0x7a, 0x47, 0xf5, 0x55, 0x2f, 0x6d, 0xc7, 0xdf, 0xcc, 0xa8,
+  0xd4, 0x06, 0xf4, 0xb8, 0x7d, 0x2e, 0x4b, 0xbe, 0x29, 0x6b, 0xdc, 0x05,
+  0xe1, 0xe3, 0x74, 0xc9, 0xc7, 0xa6, 0x1f, 0x6f, 0x48, 0x7c, 0xcb, 0xf2,
+  0xb9, 0xae, 0xad, 0x69, 0xf6, 0xd3, 0xd9, 0xc1, 0xc5, 0x37, 0x88, 0xae,
+  0x62, 0x0b, 0xbf, 0x01, 0xb9, 0x89, 0xc6, 0xd4, 0xc2, 0xec, 0x29, 0x6b,
+  0xc0, 0xb1, 0xfe, 0xab, 0x1c, 0x8a, 0xaa, 0x4f, 0x22, 0x7a, 0x97, 0x33,
+  0x10, 0x69, 0xca, 0x75, 0x8b, 0x21, 0xa3, 0x5b, 0x65, 0x19, 0x01, 0x7d,
+  0xb7, 0xa9, 0x71, 0x16, 0x6f, 0xb9, 0xc1, 0x39, 0xeb, 0x1b, 0x3c, 0x26,
+  0x6c, 0x7a, 0x52, 0xe6, 0xc8, 0xe2, 0xf1, 0x49, 0x82, 0xf1, 0x0b, 0x4a,
+  0x4a, 0xe6, 0x00, 0xd4, 0xa4, 0x8c, 0x53, 0x14, 0x7a, 0x47, 0xfa, 0xcb,
+  0xd9, 0xfd, 0x20, 0xe4, 0xca, 0x49, 0xbe, 0x5a, 0x34, 0x6d, 0xb1, 0xd2,
+  0xa1, 0x2a, 0xb6, 0x9a, 0x65, 0x55, 0x96, 0x8d, 0xd7, 0x07, 0x68, 0x3f,
+  0x69, 0x23, 0x27, 0x9a, 0xb9, 0x28, 0xb9, 0x2f, 0xd4, 0x54, 0x21, 0x7a,
+  0xb7, 0xaf, 0x18, 0xa6, 0xa3, 0xba, 0x9c, 0x2e, 0x1a, 0x0f, 0x7d, 0xfd,
+  0xcb, 0xfa, 0xec, 0x75, 0x7a, 0xf3, 0x78, 0xa0, 0xbc, 0x9c, 0x05, 0xb3,
+  0xc9, 0x19, 0x4b, 0xdf, 0xa8, 0x97, 0x08, 0x36, 0x56, 0x65, 0xd1, 0x2e,
+  0x09, 0x07, 0xa0, 0xf7, 0xd6, 0xda, 0xda, 0x50, 0x17, 0x9b, 0x98, 0x59,
+  0xc3, 0x45, 0xff, 0x1e, 0xda, 0x24, 0xf5, 0x81, 0x83, 0x05, 0x63, 0xf3,
+  0x17, 0xe5, 0x6b, 0xcb, 0x78, 0x4d, 0x21, 0xc2, 0x79, 0x8d, 0xf3, 0xba,
+  0x3d, 0x28, 0xfc, 0xca, 0x86, 0x2b, 0x34, 0x15, 0xec, 0xa2, 0x54, 0x8a,
+  0x7e, 0x09, 0xd7, 0xb9, 0x0d, 0xd1, 0x4a, 0x5c, 0x8f, 0x92, 0x41, 0xd3,
+  0x25, 0xa0, 0xd5, 0xb0, 0x2d, 0x1c, 0x97, 0x3a, 0xb9, 0xfd, 0xbf, 0xb7,
+  0x93, 0x1e, 0x17, 0x2b, 0x88, 0xf0, 0xeb, 0x2c, 0x92, 0xff, 0x0f, 0x80,
+  0x57, 0xc2, 0xc4, 0x4b, 0x6d, 0x0e, 0xda, 0x5c, 0xaf, 0x03, 0x63, 0x42,
+  0x5d, 0x57, 0x63, 0xb7, 0xfb, 0x8d, 0x76, 0x90, 0xdd, 0x92, 0xfd, 0xa2,
+  0x36, 0x82, 0x30, 0x7b, 0x70, 0x41, 0x6a, 0xcb, 0x95, 0x04, 0x66, 0x8c,
+  0x4b, 0xeb, 0xd5, 0xa3, 0xf2, 0xaa, 0x5c, 0x83, 0x94, 0xd5, 0x7a, 0x54,
+  0x57, 0xd2, 0xb0, 0xe9, 0x5a, 0xd2, 0xb2, 0xdb, 0xa9, 0x3a, 0x21, 0xff,
+  0xa9, 0x49, 0x47, 0x02, 0xec, 0x92, 0xed, 0xef, 0x55, 0xec, 0x93, 0xda,
+  0xc7, 0x48, 0x6d, 0x12, 0xc4, 0x29, 0xa3, 0xe9, 0x34, 0x1c, 0xa9, 0x9d,
+  0x54, 0x2d, 0x80, 0xa2, 0x95, 0x60, 0xa0, 0x14, 0x92, 0x10, 0x42, 0x92,
+  0x11, 0xdd, 0x30, 0xe7, 0x57, 0x53, 0x6d, 0x49, 0xb5, 0x64, 0xf4, 0x4a,
+  0xd5, 0x34, 0x0e, 0xbb, 0x52, 0xae, 0xfb, 0x72, 0xf7, 0x23, 0x5f, 0x1e,
+  0x91, 0x39, 0xaa, 0xa8, 0xe9, 0xab, 0x04, 0x3a, 0x24, 0x29, 0xf0, 0xcb,
+  0xe0, 0x0d, 0x1f, 0x90, 0xe2, 0x10, 0x9b, 0x57, 0x94, 0xe5, 0x21, 0x2e,
+  0x29, 0xa1, 0x1d, 0x81, 0xff, 0xeb, 0x3a, 0x17, 0x5c, 0x29, 0xcf, 0x7a,
+  0xbb, 0xa8, 0x2a, 0x3c, 0x7c, 0x6b, 0x89, 0x1f, 0x55, 0xb5, 0xc0, 0x87,
+  0x41, 0x78, 0x60, 0x06, 0x96, 0x00, 0x55, 0x2e, 0x91, 0x63, 0x3f, 0xfd,
+  0x9b, 0x51, 0x18, 0x16, 0xeb, 0xfc, 0xc8, 0xaf, 0xfb, 0x9f, 0x24, 0x10,
+  0x6b, 0x91, 0x70, 0x02, 0x89, 0xb0, 0xba, 0xd1, 0x85, 0xb2, 0xb7, 0x0b,
+  0xc3, 0x94, 0x31, 0x1b, 0xa0, 0x14, 0xd5, 0x16, 0x5a, 0x75, 0xd9, 0xbc,
+  0xc9, 0xdf, 0xea, 0xc9, 0x2c, 0xd9, 0xe4, 0x78, 0x09, 0x31, 0xb3, 0x5e,
+  0xe8, 0xc5, 0x9d, 0x5a, 0x05, 0xe1, 0x38, 0xe1, 0xba, 0x6e, 0xaa, 0xc5,
+  0xb8, 0x69, 0x97, 0x85, 0x75, 0x3b, 0xcc, 0x16, 0x9f, 0xe3, 0x39, 0x2e,
+  0x7d, 0xdb, 0xfe, 0xf8, 0x4c, 0xcc, 0x7b, 0xb6, 0x3e, 0xa8, 0x67, 0x9b,
+  0x69, 0x2b, 0xc9, 0xc5, 0x96, 0x24, 0xf5, 0xbf, 0xbb, 0x65, 0x77, 0x59,
+  0xff, 0xcc, 0x26, 0xbf, 0xb7, 0x99, 0x8a, 0x90, 0x9d, 0xe0, 0xdd, 0xbd,
+  0xa2, 0x88, 0x41, 0xf1, 0xa8, 0x12, 0xe1, 0x49, 0x84, 0x5a, 0x43, 0x2e,
+  0xcb, 0x35, 0xcb, 0x65, 0x68, 0xba, 0xd4, 0x17, 0xa8, 0x2a, 0x47, 0x7f,
+  0xb7, 0xcd, 0x44, 0x6a, 0xe1, 0x1f, 0x5b, 0xf4, 0xaa, 0x76, 0x7c, 0x88,
+  0x1d, 0x9c, 0x2a, 0xd8, 0x94, 0xac, 0x7e, 0x28, 0xbc, 0x6e, 0x32, 0x7f,
+  0x83, 0xe4, 0x8d, 0x1c, 0x0a, 0xf9, 0x42, 0x57, 0x9d, 0x08, 0xef, 0xc6,
+  0x33, 0x66, 0x2d, 0x09, 0xf6, 0xd1, 0x1b, 0xf5, 0xa9, 0x42, 0xe4, 0x60,
+  0x6e, 0xc8, 0xb2, 0xd1, 0x45, 0x32, 0xf3, 0xaa, 0x9f, 0x30, 0x5d, 0xa0,
+  0x11, 0x6f, 0x4c, 0xb3, 0x9d, 0x0d, 0xaf, 0x6a, 0xd7, 0x26, 0x83, 0xfe,
+  0x4b, 0x58, 0x3f, 0x96, 0x57, 0x90, 0xbd, 0x17, 0x04, 0x6e, 0xdb, 0x8a,
+  0x74, 0xc5, 0x34, 0xf1, 0x4b, 0x3b, 0xb3, 0xfb, 0x72, 0x6f, 0xb0, 0xfb,
+  0xfc, 0xc5, 0x60, 0x67, 0xb0, 0xbb, 0x43, 0xf2, 0x85, 0xba, 0xe2, 0x75,
+  0x8e, 0xe7, 0x25, 0xf2, 0xa9, 0xd6, 0x7b, 0xe1, 0x37, 0xdf, 0x1f, 0x5d,
+  0x7c, 0x7f, 0x7a, 0xfe, 0x6d, 0x72, 0xfc, 0xfe, 0xe2, 0xe8, 0xfc, 0xed,
+  0xc1, 0xe1, 0x63, 0xb9, 0xf5, 0x7d, 0xb7, 0xb5, 0x57, 0xc2, 0x3c, 0x73,
+  0x13, 0x13, 0xfa, 0x06, 0xdd, 0x9c, 0x65, 0xcd, 0xf5, 0xce, 0xfe, 0xee,
+  0x4a, 0xf6, 0xe8, 0x88, 0x7b, 0xd0, 0xbd, 0xaf, 0x83, 0xda, 0xa5, 0x41,
+  0x2d, 0x6f, 0xc5, 0xb2, 0x28, 0x0e, 0x19, 0x5b, 0x65, 0x71, 0xb9, 0x10,
+  0xf3, 0x28, 0x8a, 0x04, 0xf2, 0x54, 0x11, 0xec, 0x23, 0xe6, 0xa9, 0xe5,
+  0x12, 0x6f, 0xc2, 0x07, 0x23, 0x18, 0x74, 0x91, 0xb9, 0x6b, 0x5c, 0x2e,
+  0xbc, 0x11, 0x77, 0x0a, 0x33, 0xcf, 0x4e, 0xa0, 0xe2, 0xa9, 0x54, 0x96,
+  0xdc, 0x35, 0xda, 0x2d, 0x52, 0xb3, 0x94, 0xb9, 0x01, 0x27, 0x36, 0x4f,
+  0xc4, 0x12, 0x06, 0xac, 0x25, 0x9e, 0x9e, 0x8e, 0xbe, 0xb6, 0x2b, 0xbe,
+  0xfb, 0xf0, 0xd9, 0x0e, 0x4d, 0x6a, 0xad, 0xb8, 0x66, 0x0c, 0xac, 0xe5,
+  0x1a, 0x3d, 0x94, 0x8e, 0xe0, 0x34, 0x78, 0xbd, 0xe1, 0x4f, 0x41, 0xa1,
+  0x22, 0x3e, 0x33, 0x30, 0x39, 0xb6, 0xc8, 0x8c, 0xf9, 0x8e, 0x42, 0xee,
+  0x04, 0xeb, 0x7f, 0x5a, 0x81, 0x82, 0x5a, 0xaf, 0x5b, 0x7c, 0x82, 0x09,
+  0xd7, 0x28, 0xf1, 0x5f, 0x67, 0x55, 0x1b, 0xe8, 0xcc, 0x49, 0x95, 0xde,
+  0xa2, 0xda, 0x4a, 0xee, 0xd8, 0x41, 0xd7, 0xda, 0xc5, 0xb6, 0x48, 0x71,
+  0x72, 0x73, 0x9e, 0x9c, 0x1d, 0xbd, 0xeb, 0x6b, 0xc9, 0x63, 0xf3, 0x77,
+  0x76, 0x46, 0x29, 0x15, 0x24, 0xe7, 0xf6, 0xcc, 0xb3, 0x42, 0xb1, 0x34,
+  0x90, 0x89, 0x02, 0xfe, 0xf1, 0x07, 0x40, 0x87, 0xc6, 0x92, 0x45, 0x0a,
+  0x64, 0x54, 0x31, 0x97, 0x9c, 0x5b, 0xd8, 0x65, 0xd0, 0xa4, 0xf5, 0x14,
+  0xc0, 0x72, 0xb2, 0x69, 0x41, 0xba, 0xf4, 0x3d, 0x20, 0x51, 0x81, 0x1a,
+  0xb0, 0x30, 0x81, 0x52, 0xab, 0xff, 0x9d, 0x7d, 0x7b, 0x38, 0xfc, 0xe3,
+  0xee, 0x9e, 0x74, 0x67, 0x4b, 0xad, 0x02, 0x92, 0x55, 0xdd, 0xfc, 0x79,
+  0x88, 0x6b, 0xbf, 0x8f, 0x9a, 0x62, 0x8d, 0x03, 0x8e, 0xc5, 0xd8, 0xb4,
+  0x89, 0x41, 0x5b, 0xad, 0xcc, 0x20, 0x20, 0xbf, 0xee, 0xad, 0x8a, 0x69,
+  0x4b, 0xf8, 0x52, 0x48, 0x04, 0xd5, 0x9e, 0xa4, 0xde, 0x52, 0x63, 0xa1,
+  0x7e, 0x69, 0xa1, 0x3f, 0xe2, 0x96, 0xa5, 0xb5, 0x8d, 0x5a, 0x92, 0xac,
+  0x18, 0xce, 0xd2, 0x5d, 0x73, 0x9a, 0x6f, 0xf7, 0x5b, 0xa2, 0x74, 0x95,
+  0x9b, 0x5d, 0xb9, 0x7b, 0xdc, 0x67, 0x70, 0x00, 0x04, 0xbd, 0x3e, 0xd1,
+  0x8a, 0x6e, 0x85, 0x2b, 0x59, 0x42, 0x4f, 0x9f, 0x9a, 0x85, 0x32, 0x27,
+  0x8b, 0x29, 0x16, 0x48, 0x28, 0x94, 0x53, 0x32, 0x5d, 0xec, 0x23, 0x6f,
+  0x2a, 0x2a, 0xf2, 0x32, 0x67, 0x1c, 0xe9, 0xfb, 0x41, 0xf2, 0x4d, 0x56,
+  0x50, 0x8e, 0x3b, 0x21, 0xee, 0x34, 0xf7, 0x0a, 0xb8, 0x40, 0x2a, 0x29,
+  0x89, 0x12, 0x7b, 0x27, 0x59, 0x2a, 0xf4, 0x99, 0x46, 0xd6, 0xd5, 0x6c,
+  0xe1, 0x6a, 0x79, 0xa9, 0x94, 0xd0, 0x79, 0xc2, 0xf5, 0x69, 0x79, 0x29,
+  0x98, 0xcf, 0x99, 0x1a, 0xd8, 0x6c, 0x73, 0x60, 0xa2, 0x7a, 0x01, 0x9a,
+  0x93, 0x63, 0x8e, 0x58, 0x93, 0x78, 0x95, 0xaf, 0xc1, 0x7c, 0x4d, 0xde,
+  0x42, 0xb6, 0xb8, 0x9c, 0x50, 0x99, 0x54, 0xd7, 0xe4, 0xfa, 0xa8, 0xcd,
+  0x75, 0x93, 0x16, 0xe3, 0xfb, 0xc1, 0xc4, 0xe8, 0xb2, 0xe4, 0x3c, 0x1b,
+  0x2c, 0x3e, 0x6d, 0x7b, 0xc7, 0x94, 0x44, 0xfe, 0x35, 0xa7, 0xf3, 0xb7,
+  0x1d, 0xdf, 0x5a, 0xba, 0x38, 0x64, 0xf9, 0x4a, 0x5b, 0x67, 0x82, 0xb6,
+  0x04, 0xa3, 0x22, 0xf5, 0x78, 0x2e, 0xe5, 0xc3, 0x3a, 0x4a, 0x2c, 0x19,
+  0x31, 0xb5, 0x30, 0x98, 0x67, 0xb3, 0x7d, 0x9b, 0x8d, 0xac, 0xf2, 0x41,
+  0x0a, 0x60, 0x58, 0xc3, 0xc2, 0x73, 0xd2, 0x16, 0xd9, 0xd5, 0x54, 0x14,
+  0x0a, 0xdf, 0x74, 0xb1, 0x4d, 0x44, 0x52, 0x40, 0xd8, 0xe0, 0x91, 0xe2,
+  0x47, 0xd0, 0xd8, 0xcd, 0x3e, 0x6c, 0x04, 0x52, 0xcb, 0x0f, 0x57, 0xa4,
+  0xd0, 0xbb, 0x46, 0x84, 0xe4, 0x03, 0xbc, 0xc8, 0xa4, 0x0c, 0x8b, 0x8b,
+  0x47, 0x91, 0x48, 0x12, 0x7e, 0x22, 0xce, 0x56, 0xec, 0x10, 0x30, 0xae,
+  0x0b, 0x2a, 0x1a, 0xc1, 0x4f, 0x2d, 0x0f, 0xcc, 0x67, 0xc5, 0xfc, 0xfa,
+  0xe6, 0x09, 0x79, 0xbc, 0x2f, 0x4e, 0x86, 0x1a, 0x15, 0x29, 0xb2, 0x5b,
+  0x6f, 0x6b, 0x71, 0x95, 0x00, 0xd9, 0x7f, 0xe4, 0x00, 0x62, 0xf6, 0x63,
+  0xb0, 0x1d, 0xa0, 0x27, 0x2c, 0x15, 0x5c, 0x98, 0xcc, 0x25, 0x3f, 0xe8,
+  0x24, 0x08, 0x8c, 0x98, 0xba, 0xa2, 0x95, 0xcc, 0x58, 0x19, 0xb2, 0xa4,
+  0x2c, 0x44, 0xb3, 0x67, 0x94, 0xa5, 0x27, 0xbd, 0xa4, 0xbf, 0x07, 0xaa,
+  0x9b, 0xdd, 0xf6, 0x24, 0xa6, 0x0d, 0x33, 0xfa, 0x51, 0x1b, 0xa6, 0x25,
+  0x6d, 0x45, 0xc4, 0xc1, 0xa6, 0x6c, 0xe9, 0x1b, 0xf3, 0x3e, 0xfd, 0xb1,
+  0x27, 0x03, 0xba, 0xd9, 0x05, 0x62, 0x9b, 0x29, 0x26, 0xa7, 0xf7, 0xa1,
+  0xca, 0xb0, 0xb7, 0x72, 0x55, 0x91, 0x1b, 0x71, 0x9b, 0x5b, 0xae, 0x67,
+  0xae, 0x6f, 0x00, 0x57, 0xa8, 0xb0, 0x77, 0x6a, 0x07, 0xcc, 0x14, 0x8a,
+  0x93, 0xbb, 0x48, 0x6e, 0xf6, 0x34, 0xd6, 0x4c, 0xbf, 0xd1, 0x79, 0x63,
+  0x67, 0xbd, 0x13, 0x22, 0x41, 0xda, 0x22, 0xa1, 0xdc, 0xbc, 0x5d, 0x4b,
+  0x59, 0x4f, 0x66, 0xcf, 0x1a, 0x29, 0xd2, 0x92, 0x32, 0x65, 0x21, 0x6e,
+  0x05, 0x4e, 0x79, 0x67, 0xea, 0x78, 0x32, 0xe0, 0x3d, 0x98, 0x13, 0x90,
+  0xdf, 0x1e, 0x22, 0xf2, 0xb8, 0xb0, 0x89, 0x12, 0xe2, 0xca, 0x07, 0x9b,
+  0x1e, 0x96, 0xff, 0x3a, 0x67, 0xc7, 0x04, 0xb0, 0xa6, 0xb8, 0xce, 0xcd,
+  0xc9, 0xdf, 0x48, 0xcc, 0x61, 0x5a, 0x90, 0xc4, 0x6f, 0x6c, 0x59, 0xb5,
+  0x21, 0xb3, 0x70, 0x6e, 0xf8, 0x62, 0xae, 0xff, 0x05, 0x0d, 0xa5, 0xde,
+  0x70, 0x63, 0x17, 0x36, 0xf2, 0xf6, 0x40, 0x24, 0xce, 0xa1, 0x85, 0xc4,
+  0xce, 0x2a, 0x2d, 0x95, 0xbe, 0x71, 0x74, 0x47, 0x3a, 0xce, 0x86, 0x7c,
+  0x89, 0x7f, 0xcd, 0x39, 0xfd, 0x98, 0xa3, 0xb3, 0xe3, 0xf7, 0x5c, 0xfd,
+  0xdb, 0x9e, 0x85, 0x8c, 0x58, 0x12, 0xd7, 0xb8, 0xcc, 0x3c, 0xfa, 0x93,
+  0x2a, 0x5d, 0x3b, 0x3b, 0x8e, 0x68, 0xcf, 0xd0, 0x1e, 0xcf, 0xe5, 0x5b,
+  0xe7, 0x0b, 0xfe, 0xfa, 0x06, 0xdd, 0x73, 0x75, 0x3d, 0xdd, 0xe8, 0x54,
+  0xb5, 0xb5, 0x6b, 0xd2, 0xb9, 0x50, 0xac, 0x47, 0x6a, 0x3c, 0x71, 0x0a,
+  0x7e, 0x92, 0x48, 0x2b, 0x2d, 0x39, 0xd7, 0xeb, 0x64, 0x3a, 0xfa, 0xae,
+  0xf0, 0x3f, 0x26, 0x83, 0x6d, 0xf3, 0xc1, 0x7a, 0x5b, 0x5f, 0x9c, 0x7f,
+  0x1a, 0xd7, 0xe6, 0x86, 0xa3, 0xb4, 0xde, 0x1f, 0x61, 0x90, 0x63, 0x39,
+  0x4c, 0x8f, 0x27, 0x3f, 0x27, 0xfd, 0xf1, 0x14, 0xe3, 0x4b, 0x50, 0x3e,
+  0xfb, 0x47, 0xb3, 0xf2, 0xf4, 0xc4, 0xcf, 0x76, 0x0d, 0xdf, 0xe6, 0x74,
+  0xde, 0xee, 0x7a, 0x3a, 0xf4, 0x53, 0x36, 0x18, 0x98, 0x8a, 0x36, 0x39,
+  0x98, 0xdc, 0x50, 0xd2, 0xdd, 0x44, 0xfe, 0x49, 0xe3, 0x39, 0x2a, 0x50,
+  0x79, 0x14, 0x23, 0x4d, 0x47, 0x5c, 0x68, 0xfc, 0xbb, 0xdc, 0x18, 0x1d,
+  0x87, 0x1d, 0xfd, 0x82, 0xf2, 0xff, 0xa8, 0x83, 0x78, 0xcb, 0xfb, 0xa5,
+  0x26, 0x73, 0xf4, 0x24, 0x67, 0xc1, 0x41, 0x4b, 0x49, 0x3a, 0xd3, 0xd2,
+  0x0d, 0x92, 0xaf, 0x28, 0xc6, 0x59, 0x65, 0x1e, 0x51, 0xab, 0x5c, 0x7c,
+  0x5c, 0xa1, 0x8f, 0x16, 0x23, 0x65, 0xfe, 0x89, 0x81, 0x1d, 0x49, 0x90,
+  0x03, 0x63, 0xc7, 0x64, 0x7f, 0xd3, 0x1e, 0x1c, 0xfa, 0xa5, 0x29, 0xed,
+  0x66, 0x28, 0x9a, 0x2f, 0x91, 0x04, 0x43, 0xf1, 0x28, 0x24, 0xb9, 0x87,
+  0x7c, 0x61, 0x4e, 0x32, 0x4d, 0xec, 0x2f, 0x7d, 0x36, 0x15, 0xf5, 0x1c,
+  0xa3, 0x29, 0xd5, 0x08, 0xec, 0x96, 0xc0, 0x1d, 0xee, 0x7a, 0x7d, 0x78,
+  0x6d, 0x44, 0x73, 0x66, 0xbb, 0x3a, 0x64, 0x97, 0x9e, 0x76, 0x71, 0x48,
+  0x77, 0x94, 0x2e, 0x82, 0xfd, 0xa5, 0x66, 0x47, 0x42, 0x0b, 0xdd, 0x66,
+  0xd9, 0x65, 0xf7, 0x2e, 0xcf, 0x6e, 0x7b, 0x08, 0x94, 0xd4, 0x38, 0xfc,
+  0xf0, 0x8e, 0xaa, 0x90, 0xa0, 0x20, 0xf5, 0xc5, 0xf9, 0xc1, 0xfb, 0xe1,
+  0x5b, 0x76, 0x8d, 0x5f, 0x94, 0x5e, 0xa9, 0x6b, 0x89, 0x2b, 0x68, 0xfc,
+  0xd8, 0x32, 0xba, 0xdd, 0x72, 0x69, 0x0c, 0xc5, 0xd3, 0x4b, 0x1d, 0xec,
+  0x5e, 0x97, 0x1a, 0x9f, 0x8b, 0x68, 0xd3, 0x6c, 0x50, 0xd7, 0x36, 0x87,
+  0x5b, 0x56, 0x11, 0xaa, 0xfd, 0xfa, 0x69, 0xae, 0x08, 0xbd, 0x92, 0x38,
+  0xcb, 0x43, 0x34, 0x2d, 0x87, 0xda, 0x19, 0xfd, 0x29, 0xdf, 0xbd, 0x4b,
+  0x79, 0x43, 0x0f, 0x8d, 0xa9, 0xd8, 0x97, 0xa2, 0x32, 0x8e, 0x3a, 0xcd,
+  0xb9, 0x53, 0xf9, 0xee, 0x15, 0xd6, 0x3d, 0xdb, 0xb8, 0x9f, 0xf7, 0xa9,
+  0x4d, 0x6f, 0xfe, 0x79, 0x77, 0x2b, 0xde, 0xfc, 0xc5, 0x2f, 0x6d, 0x3e,
+  0xde, 0x77, 0xb5, 0xcd, 0x5c, 0x4a, 0xd1, 0xe6, 0x9f, 0xf7, 0xb6, 0x56,
+  0x8e, 0xc8, 0xcf, 0x8a, 0x74, 0xdf, 0x34, 0x6f, 0x50, 0x67, 0x93, 0xd7,
+  0x7c, 0xcc, 0xac, 0xce, 0x64, 0x11, 0x3a, 0x1e, 0x35, 0x70, 0x8b, 0xb0,
+  0x83, 0x60, 0xdb, 0x56, 0x53, 0x77, 0x81, 0x37, 0xc9, 0x2e, 0x39, 0xfe,
+  0x9f, 0x47, 0x3e, 0xe3, 0x63, 0xb1, 0xd1, 0xf8, 0x57, 0x14, 0xb1, 0x03,
+  0xd4, 0xe5, 0x00, 0xdf, 0xde, 0x5b, 0xf1, 0x6d, 0x37, 0x3a, 0xcf, 0x2d,
+  0x41, 0x51, 0x6c, 0x82, 0xc1, 0x29, 0x71, 0xb5, 0x7c, 0xc7, 0x7e, 0x7b,
+  0xd5, 0xf7, 0x2e, 0x8e, 0xdf, 0x1d, 0x11, 0xc1, 0xf5, 0x9b, 0x63, 0xe2,
+  0x89, 0x1b, 0x0a, 0x53, 0xa3, 0x7a, 0x20, 0x2c, 0x79, 0xae, 0x5f, 0xd8,
+  0x84, 0xc3, 0xbb, 0x16, 0x6d, 0x66, 0x25, 0x87, 0x5d, 0x09, 0xfa, 0xb4,
+  0x60, 0xa0, 0x6b, 0xcd, 0xb4, 0x3c, 0xbe, 0xec, 0xbf, 0x2b, 0x27, 0xb0,
+  0x92, 0xfb, 0x43, 0x40, 0x05, 0xcd, 0x5b, 0xe6, 0x87, 0x1f, 0x8a, 0x59,
+  0xeb, 0xc7, 0x83, 0x48, 0xa6, 0xee, 0xda, 0xb2, 0xfa, 0x39, 0xff, 0xd8,
+  0xee, 0xf7, 0xa9, 0x33, 0x7d, 0x86, 0x75, 0x49, 0x70, 0xa7, 0xc5, 0xcf,
+  0xa1, 0xa2, 0xc5, 0x4c, 0x50, 0x3e, 0xbd, 0x67, 0x20, 0x42, 0xea, 0xe0,
+  0x63, 0x2e, 0x7b, 0xf3, 0x8a, 0x32, 0xc8, 0x9c, 0x8b, 0x8f, 0x9d, 0x78,
+  0x6b, 0x3e, 0xcf, 0x28, 0x0c, 0xa9, 0xec, 0xd6, 0xe1, 0x9f, 0xa4, 0x1a,
+  0x73, 0x39, 0xbf, 0xc7, 0x28, 0x6f, 0x5b, 0xd0, 0x8a, 0x68, 0x7c, 0xf5,
+  0x1f, 0xfc, 0x4e, 0xab, 0x62, 0x94, 0xd0, 0x41, 0x7b, 0x3b, 0x50, 0x7e,
+  0x22, 0x05, 0x96, 0x4e, 0x2b, 0xef, 0xba, 0x92, 0x6e, 0x6b, 0x21, 0x3a,
+  0x8f, 0x83, 0xd4, 0xa3, 0x4c, 0x6d, 0xf7, 0xd3, 0xe7, 0x6b, 0x2d, 0x29,
+  0xf5, 0xf5, 0x4d, 0x69, 0x83, 0x63, 0x46, 0xec, 0xcc, 0xdb, 0xf5, 0x8e,
+  0xb3, 0x44, 0x93, 0xbc, 0x39, 0x87, 0x7f, 0xa3, 0xbf, 0x81, 0x12, 0x0a,
+  0x79, 0x11, 0x19, 0x4c, 0xff, 0x97, 0x8f, 0x26, 0x08, 0xbd, 0x26, 0xeb,
+  0x97, 0x44, 0x84, 0x41, 0x71, 0xac, 0x75, 0xee, 0x00, 0xf3, 0xc4, 0xf0,
+  0xe6, 0x32, 0x17, 0x04, 0xc9, 0x35, 0x35, 0x24, 0xd9, 0xa8, 0xb6, 0xc8,
+  0x58, 0xeb, 0x24, 0x67, 0xaf, 0x24, 0x09, 0xd2, 0xc5, 0x7c, 0x02, 0x50,
+  0x06, 0xc3, 0x51, 0xff, 0x83, 0xf8, 0xab, 0xab, 0xfb, 0x64, 0x77, 0xaf,
+  0x97, 0xec, 0xed, 0xec, 0xee, 0x45, 0xc6, 0xb0, 0xfe, 0x1f, 0x04, 0x8a,
+  0xda, 0xc3, 0xaf, 0xd7, 0x1f, 0x3b, 0x0a, 0x97, 0xcf, 0x80, 0x9b, 0x44,
+  0x32, 0x7f, 0x8d, 0xf0, 0xa1, 0xf8, 0x2c, 0x38, 0x93, 0x51, 0x04, 0x19,
+  0xcc, 0x73, 0xb8, 0xb6, 0xd8, 0x49, 0xa8, 0xe5, 0x30, 0x6d, 0x95, 0xaf,
+  0x09, 0x8a, 0xde, 0x70, 0x1d, 0x5a, 0x20, 0x5f, 0xac, 0xa7, 0x34, 0xad,
+  0x50, 0xb5, 0xb3, 0xbd, 0x46, 0x79, 0xa3, 0xcb, 0x42, 0xd0, 0x1a, 0x5a,
+  0x1b, 0xb3, 0xdf, 0xdf, 0x1c, 0x1f, 0x5e, 0x28, 0x35, 0xe1, 0x25, 0x29,
+  0x4f, 0xd5, 0xfd, 0xe3, 0xea, 0x26, 0xae, 0x7c, 0x66, 0xb2, 0x7f, 0x9d,
+  0x19, 0x35, 0xba, 0x18, 0x2d, 0xae, 0xf6, 0xff, 0x96, 0x56, 0x57, 0x65,
+  0xf1, 0xd0, 0xf3, 0x13, 0x24, 0x94, 0xed, 0x1b, 0x09, 0xb5, 0xfb, 0x72,
+  0xf7, 0x09, 0xf2, 0xbf, 0xa7, 0x39, 0x6a, 0xf7, 0x90, 0x80, 0xd8, 0x98,
+  0x6d, 0x30, 0xc1, 0x06, 0xd2, 0x24, 0x2c, 0xab, 0x46, 0x31, 0xd9, 0xe0,
+  0xeb, 0x3e, 0xf5, 0x9f, 0x9d, 0xc8, 0xb3, 0x9c, 0x7a, 0xbe, 0x21, 0xb9,
+  0x0a, 0x1b, 0x94, 0xa6, 0xb9, 0x98, 0x6f, 0xb4, 0xd9, 0xdc, 0x1f, 0x18,
+  0x2b, 0x7d, 0xc2, 0x96, 0x89, 0x3c, 0xb4, 0x1c, 0xf5, 0xc8, 0x20, 0xaa,
+  0xb2, 0xf4, 0x93, 0xab, 0x8a, 0xec, 0xd8, 0x37, 0x34, 0xe4, 0x71, 0xfe,
+  0xf6, 0x90, 0xc9, 0x46, 0x35, 0x5f, 0x0a, 0x53, 0x9d, 0x58, 0xd7, 0xd4,
+  0x16, 0xf5, 0xf2, 0x81, 0xef, 0x53, 0x6e, 0xc3, 0xfe, 0x64, 0xf4, 0x88,
+  0x87, 0xcc, 0xb9, 0x63, 0xb2, 0xb8, 0x83, 0x76, 0x95, 0x1c, 0x32, 0xd4,
+  0x50, 0xea, 0x43, 0xcb, 0x1f, 0x6f, 0x72, 0xf5, 0x57, 0x8e, 0x38, 0x50,
+  0xd7, 0xb4, 0xb0, 0xb4, 0x7a, 0x77, 0x4c, 0xbf, 0xa9, 0x20, 0xeb, 0x9b,
+  0x83, 0x33, 0xcf, 0xd0, 0x85, 0x21, 0xe9, 0x9c, 0x7a, 0xf4, 0x1c, 0x19,
+  0x3a, 0xa8, 0xb0, 0x2e, 0x85, 0x93, 0x7a, 0xce, 0x44, 0x69, 0x20, 0x27,
+  0x49, 0x37, 0x02, 0x40, 0xbe, 0x94, 0xfb, 0x04, 0xfe, 0x27, 0x14, 0x1e,
+  0x98, 0x4e, 0x52, 0x04, 0x42, 0xe5, 0x16, 0xa2, 0x0c, 0x88, 0xd3, 0x42,
+  0xb3, 0x98, 0x7b, 0x9d, 0x2a, 0x0b, 0xe6, 0xc7, 0xf8, 0x0e, 0xae, 0xe8,
+  0x33, 0xa3, 0x84, 0x83, 0xc6, 0x65, 0xf8, 0xe6, 0x5b, 0xea, 0xb1, 0x04,
+  0x75, 0xa0, 0xb5, 0xa9, 0x2f, 0xdb, 0x46, 0xa2, 0xd4, 0x6a, 0x54, 0xe7,
+  0x95, 0xfa, 0x16, 0xa9, 0xb9, 0x9b, 0x27, 0x03, 0xfe, 0x73, 0xcf, 0x56,
+  0x22, 0xc6, 0x63, 0xc0, 0x79, 0x5e, 0x6a, 0x9d, 0xe3, 0x59, 0x46, 0x85,
+  0x77, 0xf3, 0x7a, 0xe6, 0x60, 0x29, 0x97, 0xf2, 0xba, 0xab, 0x7e, 0x27,
+  0x4a, 0x24, 0x85, 0x16, 0xd0, 0x0f, 0xf4, 0x36, 0x17, 0x5c, 0x97, 0xd9,
+  0x65, 0x77, 0x89, 0xa4, 0xa3, 0x48, 0xde, 0x8d, 0x14, 0x39, 0xc1, 0x63,
+  0x94, 0x5f, 0x7d, 0xaf, 0x4b, 0xc1, 0x37, 0x8d, 0x59, 0x86, 0xb4, 0xfe,
+  0x64, 0x2e, 0x05, 0x86, 0x22, 0x98, 0x79, 0xcc, 0x25, 0x98, 0x4f, 0xee,
+  0xab, 0x9c, 0x21, 0x41, 0xe4, 0x48, 0x03, 0xa3, 0x53, 0x6b, 0xeb, 0xf1,
+  0x65, 0x4a, 0xb6, 0xf3, 0xb4, 0xce, 0x98, 0x2a, 0x11, 0x84, 0x40, 0x14,
+  0xfb, 0xa3, 0xad, 0x07, 0x9b, 0x49, 0x31, 0xb5, 0x10, 0x67, 0xb4, 0x4b,
+  0xf7, 0xf6, 0x9e, 0x3d, 0xeb, 0x25, 0xeb, 0xe4, 0x77, 0x44, 0x9f, 0x68,
+  0x43, 0xbf, 0x85, 0xe0, 0x59, 0x8f, 0x16, 0xc3, 0xdd, 0xae, 0x2e, 0xc7,
+  0xf4, 0x3f, 0x7a, 0x4f, 0x6b, 0x40, 0x5e, 0x48, 0x22, 0x0e, 0x75, 0x13,
+  0x41, 0x56, 0x4b, 0x97, 0xc3, 0x3b, 0x8d, 0x7e, 0x77, 0x6c, 0x5d, 0x4b,
+  0x14, 0x47, 0x9a, 0x67, 0xe5, 0x5c, 0x03, 0xc6, 0x33, 0xa9, 0xee, 0x81,
+  0xef, 0x7b, 0x51, 0x36, 0x84, 0xf8, 0x19, 0x21, 0x27, 0xbc, 0x08, 0xf5,
+  0x62, 0xd4, 0x97, 0x04, 0x61, 0x36, 0x34, 0x73, 0x73, 0x98, 0x67, 0xb4,
+  0x08, 0xe2, 0xc1, 0x0f, 0x84, 0xf4, 0x57, 0xc9, 0xba, 0x6c, 0x37, 0xfa,
+  0x63, 0x80, 0x78, 0x6f, 0x36, 0xa6, 0x61, 0x94, 0xaf, 0xe5, 0x1f, 0xff,
+  0xfe, 0xef, 0xa6, 0xd9, 0x7f, 0xa7, 0x56, 0x5e, 0xff, 0xb9, 0x6e, 0xae,
+  0xbd, 0x67, 0xd6, 0xe5, 0x0c, 0x1c, 0xbb, 0x68, 0x37, 0x10, 0x6c, 0x20,
+  0x89, 0x45, 0x1e, 0xdb, 0xbb, 0x13, 0x11, 0xd2, 0x3d, 0x6f, 0x7c, 0x39,
+  0x32, 0x0c, 0xd9, 0x6f, 0x6a, 0x01, 0x24, 0x5f, 0x51, 0x24, 0x3a, 0xa3,
+  0xcc, 0x74, 0xb3, 0x08, 0x20, 0x16, 0xdc, 0x72, 0x90, 0x12, 0x96, 0xef,
+  0xf0, 0x8d, 0x72, 0x75, 0xb8, 0x4e, 0xb5, 0xab, 0x5b, 0xbd, 0x29, 0xf8,
+  0x14, 0x63, 0x9d, 0xcc, 0xaf, 0xd2, 0x69, 0x79, 0x65, 0x47, 0x1c, 0xab,
+  0x2f, 0xf3, 0x8b, 0xc6, 0xbe, 0xee, 0x37, 0xa4, 0x6f, 0xfa, 0xf1, 0xf5,
+  0x47, 0xb6, 0x42, 0x38, 0x01, 0x7b, 0x34, 0x01, 0x7f, 0x0d, 0xeb, 0x89,
+  0x09, 0x79, 0xb0, 0xb1, 0x54, 0x54, 0x90, 0x6c, 0xeb, 0x41, 0xb7, 0x27,
+  0x9f, 0xa0, 0xbb, 0x63, 0x3a, 0x02, 0x9d, 0x02, 0x37, 0x4e, 0x56, 0x58,
+  0xe5, 0x46, 0x6a, 0x97, 0x88, 0x6e, 0x92, 0x19, 0x79, 0x95, 0x9b, 0xb3,
+  0x80, 0x0b, 0x90, 0xbe, 0x43, 0x73, 0x86, 0xd0, 0x64, 0xc6, 0x84, 0x34,
+  0x23, 0x2e, 0x0f, 0xd6, 0xef, 0x17, 0xcd, 0x74, 0xc6, 0x54, 0xcb, 0x13,
+  0x94, 0x0a, 0xd3, 0x0c, 0x8d, 0xbc, 0x08, 0x49, 0x06, 0xdb, 0xf3, 0xcc,
+  0xaf, 0xfe, 0x73, 0xb3, 0xe4, 0x0b, 0x3d, 0xae, 0xc0, 0x49, 0xed, 0x6c,
+  0x3b, 0xe2, 0x46, 0x47, 0x8e, 0x46, 0xbe, 0xd0, 0x7e, 0x21, 0xd5, 0xcb,
+  0x00, 0xed, 0xb7, 0xa2, 0x49, 0xd8, 0xc7, 0x7c, 0xc8, 0xaa, 0x66, 0x1a,
+  0x11, 0x25, 0x34, 0x39, 0xdf, 0x8c, 0x7c, 0xcf, 0x00, 0x4a, 0xae, 0x93,
+  0xcd, 0xe1, 0xf0, 0xec, 0x78, 0x5b, 0x8b, 0x9f, 0xad, 0xad, 0x1d, 0xbd,
+  0xff, 0xee, 0xf8, 0xfc, 0xf4, 0xfd, 0xbb, 0xa3, 0xf7, 0x17, 0xc9, 0x77,
+  0x07, 0xe7, 0xc7, 0x07, 0x5f, 0x9d, 0x08, 0xf9, 0x02, 0x0d, 0x93, 0x30,
+  0x67, 0x6c, 0x0a, 0x76, 0xf8, 0x83, 0xbd, 0xbc, 0xb8, 0x68, 0xd5, 0x99,
+  0x4e, 0x41, 0xed, 0x8f, 0x42, 0x7e, 0x0f, 0xc3, 0xf8, 0x23, 0x0a, 0x68,
+  0xf5, 0xc8, 0x16, 0xfa, 0xa8, 0xb5, 0xb4, 0xc8, 0x96, 0xbf, 0xf7, 0xd2,
+  0xf9, 0x09, 0x0e, 0x47, 0xe2, 0x4c, 0x85, 0xb9, 0xab, 0x22, 0x69, 0xcb,
+  0xb2, 0x7c, 0xcd, 0x8c, 0x10, 0x5a, 0xa3, 0x46, 0x5f, 0x85, 0xfc, 0x60,
+  0x5d, 0xc7, 0xf5, 0xe1, 0xe0, 0xe4, 0xc4, 0x7d, 0x6a, 0x75, 0xf9, 0x22,
+  0x61, 0x03, 0xe3, 0x5c, 0x42, 0x34, 0x4a, 0x71, 0xea, 0xab, 0xd2, 0x31,
+  0xf9, 0x17, 0xf7, 0x3e, 0x69, 0x3f, 0x7d, 0xcc, 0x6c, 0x97, 0x4d, 0xa6,
+  0x71, 0x21, 0xd0, 0x42, 0x93, 0x55, 0x79, 0xfd, 0xa9, 0x97, 0x6c, 0xfc,
+  0x79, 0x43, 0x0a, 0xd6, 0x83, 0x66, 0x9a, 0x8b, 0x23, 0x6d, 0xb9, 0x4e,
+  0xbd, 0x3f, 0x75, 0x7d, 0x92, 0x38, 0xbc, 0xed, 0x80, 0x7d, 0xd1, 0xa1,
+  0x28, 0x6a, 0x55, 0xaf, 0x01, 0x5f, 0x76, 0x8f, 0x4b, 0x05, 0x11, 0xcb,
+  0x4e, 0x21, 0xf2, 0x91, 0xe2, 0xac, 0xd1, 0x77, 0xe1, 0x44, 0x48, 0xc7,
+  0x1e, 0x9b, 0x38, 0xc6, 0x5a, 0x90, 0xe7, 0xcd, 0x56, 0x75, 0x53, 0xe7,
+  0xb4, 0x99, 0xea, 0x89, 0x10, 0x2e, 0xa6, 0xda, 0xb2, 0xa4, 0x32, 0x23,
+  0x55, 0xdc, 0x46, 0xa0, 0x3c, 0x27, 0x63, 0x2a, 0x80, 0xf6, 0x81, 0x99,
+  0x69, 0x9c, 0x7c, 0x76, 0x22, 0xb5, 0xbc, 0xbb, 0x88, 0x09, 0x75, 0x72,
+  0x3f, 0x25, 0xd6, 0x51, 0xb6, 0x7e, 0x26, 0xeb, 0x2a, 0x41, 0x28, 0xe6,
+  0xd7, 0xe6, 0xd9, 0x07, 0x0b, 0x06, 0xbb, 0x33, 0x75, 0x26, 0x01, 0x98,
+  0xf4, 0x5f, 0x5f, 0x47, 0x6e, 0x12, 0xc7, 0x5a, 0x2c, 0x29, 0x22, 0x51,
+  0x0e, 0x61, 0x8e, 0x1d, 0x2e, 0x3d, 0xbb, 0x63, 0x2e, 0x21, 0xbb, 0xcb,
+  0xdc, 0x4e, 0xe0, 0xc2, 0x77, 0x02, 0x43, 0xef, 0xf6, 0x58, 0x8b, 0x5a,
+  0xa5, 0x5a, 0x44, 0x09, 0x71, 0x33, 0x56, 0xb9, 0xa0, 0x34, 0x75, 0x87,
+  0x03, 0xa7, 0x21, 0x03, 0x9e, 0x5b, 0x9d, 0xee, 0x34, 0xbc, 0xae, 0x78,
+  0x82, 0x45, 0x2d, 0x2a, 0x14, 0xee, 0x90, 0xbb, 0x6d, 0x2d, 0x4b, 0x05,
+  0x90, 0x01, 0x25, 0x04, 0x55, 0x46, 0x8a, 0xd6, 0xcb, 0xab, 0x3f, 0x0d,
+  0x10, 0x9b, 0x3e, 0x3f, 0x44, 0xf9, 0x84, 0x82, 0x0a, 0xa8, 0xba, 0xb2,
+  0x37, 0x48, 0x1e, 0x28, 0xb2, 0xa6, 0xa2, 0x8c, 0xdc, 0x42, 0xac, 0x10,
+  0x00, 0xf2, 0x61, 0xa4, 0xa7, 0x57, 0xa5, 0x1a, 0xe0, 0xa9, 0x45, 0xcd,
+  0xd8, 0xe2, 0x80, 0x9e, 0x51, 0x6f, 0x99, 0x03, 0xad, 0xe0, 0x02, 0xbe,
+  0x46, 0x23, 0x84, 0x84, 0x2f, 0xa5, 0x43, 0xa6, 0xc5, 0xde, 0x6b, 0x8f,
+  0x9b, 0xc1, 0xa5, 0x2f, 0x91, 0x24, 0xe7, 0x2c, 0x1d, 0xa5, 0xf2, 0x03,
+  0x7d, 0xa2, 0x72, 0x39, 0x00, 0xe9, 0x8c, 0x6e, 0xd1, 0x83, 0x68, 0x52,
+  0x40, 0xeb, 0x68, 0x52, 0x83, 0x57, 0x46, 0x5e, 0x4d, 0x29, 0x83, 0x54,
+  0xf5, 0x8e, 0x34, 0x19, 0xe5, 0x57, 0xcc, 0x09, 0x42, 0x04, 0x14, 0x74,
+  0x2e, 0x41, 0xf1, 0x58, 0xce, 0x32, 0x3a, 0x1c, 0x20, 0x70, 0x84, 0xf1,
+  0x7e, 0x5d, 0x4e, 0x7d, 0x96, 0x41, 0x1d, 0x89, 0xac, 0xbe, 0x8d, 0x7d,
+  0x20, 0xf6, 0xb9, 0xa0, 0x79, 0x54, 0x38, 0xaa, 0x54, 0x12, 0x10, 0x70,
+  0x2e, 0x05, 0xd5, 0xc0, 0x95, 0x5a, 0x20, 0x15, 0x50, 0xb9, 0x14, 0x30,
+  0x0f, 0x9a, 0xb8, 0x40, 0x1b, 0x17, 0x8e, 0x74, 0x2a, 0xc9, 0xba, 0x69,
+  0x4b, 0x01, 0x50, 0x2b, 0x63, 0x66, 0x68, 0x26, 0x31, 0xc3, 0x90, 0x92,
+  0x76, 0xed, 0x2e, 0x59, 0x2c, 0xe1, 0xce, 0x33, 0x7b, 0x82, 0x3a, 0x6d,
+  0x66, 0x6a, 0xd3, 0x53, 0x33, 0x0a, 0xb3, 0x45, 0xf8, 0x31, 0xf6, 0x20,
+  0xc9, 0xbf, 0xfa, 0xb6, 0xec, 0xa0, 0x00, 0x4f, 0xb6, 0x1c, 0xf0, 0x88,
+  0xcd, 0x00, 0x92, 0x0f, 0x63, 0x29, 0xfc, 0x0a, 0x88, 0x0e, 0x55, 0xad,
+  0x05, 0x21, 0x5c, 0x2b, 0xf8, 0x90, 0x68, 0xc2, 0xdd, 0x74, 0xea, 0xd5,
+  0x02, 0x60, 0x7f, 0x64, 0x1a, 0x18, 0x1f, 0x24, 0x27, 0x06, 0x2c, 0x73,
+  0x19, 0xfa, 0xc7, 0xbc, 0xe1, 0xde, 0x40, 0x24, 0xa9, 0x84, 0xcc, 0xb3,
+  0x4e, 0x4c, 0xc3, 0xbb, 0x42, 0x14, 0x1e, 0xe3, 0xab, 0xa1, 0x52, 0xfa,
+  0x26, 0x4f, 0x67, 0x6c, 0x3c, 0xba, 0xdd, 0x37, 0xbb, 0x67, 0xd8, 0xf1,
+  0xda, 0xda, 0xe1, 0x87, 0xe1, 0xc5, 0xe9, 0xbb, 0xe4, 0xf4, 0xc3, 0xc5,
+  0xd9, 0x87, 0x0b, 0xd1, 0x53, 0x47, 0x9c, 0xb4, 0xc1, 0xd0, 0x25, 0xd6,
+  0x9d, 0x75, 0x31, 0x67, 0x02, 0xf0, 0x01, 0xc6, 0xac, 0x04, 0xad, 0xa8,
+  0xc7, 0x28, 0x66, 0x93, 0x32, 0xc1, 0xb5, 0xc7, 0xd4, 0xe2, 0x98, 0xf2,
+  0x5b, 0x33, 0xe5, 0x48, 0xa8, 0x87, 0x27, 0x5f, 0x73, 0x3c, 0xe1, 0xf7,
+  0xd0, 0xb3, 0xd6, 0x2e, 0x2b, 0x75, 0xdf, 0xf6, 0x63, 0x00, 0x9d, 0xd3,
+  0x66, 0x70, 0xf3, 0xab, 0xdb, 0xb2, 0x73, 0xd7, 0xf9, 0x7e, 0x7d, 0x4c,
+  0xb7, 0xd4, 0xc6, 0xd5, 0x08, 0x94, 0xc2, 0xea, 0x81, 0x35, 0x6c, 0x67,
+  0x16, 0xfb, 0x09, 0xce, 0x4d, 0x69, 0x46, 0x78, 0x6d, 0x53, 0x62, 0x08,
+  0x46, 0x08, 0x28, 0x30, 0x23, 0xa8, 0x08, 0x73, 0xcb, 0x2e, 0x83, 0x22,
+  0xbb, 0x25, 0xc5, 0x27, 0xd0, 0xa9, 0x6f, 0x93, 0x8d, 0xef, 0x33, 0xbf,
+  0xc1, 0x3f, 0xfd, 0x27, 0xe5, 0x6d, 0x7f, 0xd4, 0x9f, 0xfc, 0x17, 0x7f,
+  0xf2, 0xa7, 0x62, 0x03, 0x02, 0xb3, 0x0d, 0x95, 0xf9, 0xf6, 0xe8, 0xfc,
+  0xab, 0xa3, 0xf3, 0xd3, 0x21, 0xe4, 0x81, 0xfa, 0xbb, 0xc3, 0xbd, 0xfe,
+  0x29, 0xab, 0x46, 0x59, 0x55, 0x4a, 0xc9, 0x3b, 0xfd, 0xd7, 0xb3, 0xed,
+  0xaf, 0x87, 0xc3, 0x83, 0xb3, 0x63, 0x5b, 0x54, 0xca, 0x66, 0x90, 0xb2,
+  0x8f, 0xa4, 0xe0, 0x1c, 0x67, 0x1a, 0xbf, 0xbe, 0x62, 0xf6, 0xc5, 0xf8,
+  0x13, 0x67, 0x16, 0x04, 0xa0, 0x14, 0x0d, 0xac, 0x11, 0x1a, 0x45, 0x12,
+  0x8b, 0xa9, 0x61, 0x65, 0x82, 0xf3, 0x0b, 0x43, 0x70, 0x05, 0x07, 0x0a,
+  0x06, 0xf6, 0x2c, 0x04, 0xf7, 0x53, 0x35, 0xea, 0x9b, 0xdd, 0xfe, 0x49,
+  0x6b, 0xac, 0x73, 0x22, 0x94, 0x11, 0x95, 0x9c, 0x21, 0xe1, 0x9c, 0x8d,
+  0x9f, 0xf2, 0x22, 0x6f, 0xb6, 0x3f, 0xd1, 0xf9, 0xa0, 0x82, 0x47, 0xd3,
+  0x01, 0x4b, 0x77, 0x3e, 0x50, 0x0a, 0x7b, 0x27, 0x11, 0xbb, 0x8a, 0x9d,
+  0xc6, 0x7c, 0xcd, 0x56, 0x29, 0x65, 0x87, 0xb7, 0xf9, 0xc9, 0x53, 0x4b,
+  0xd3, 0x27, 0x9a, 0x3f, 0x90, 0xb2, 0x97, 0xe6, 0xae, 0x9a, 0xdf, 0x4e,
+  0xe4, 0x12, 0x01, 0x4b, 0x3d, 0x2b, 0x97, 0x22, 0xc3, 0xbb, 0x11, 0x6a,
+  0xaa, 0xa4, 0x8a, 0x8c, 0x2d, 0xc9, 0x47, 0x49, 0x46, 0xd3, 0xb4, 0xf8,
+  0x04, 0xfd, 0x01, 0x1a, 0x01, 0xdd, 0x7d, 0x4a, 0x3e, 0x47, 0x15, 0x6e,
+  0x01, 0x48, 0x10, 0x3e, 0x18, 0x98, 0x7c, 0x53, 0x12, 0x6e, 0xf7, 0x1c,
+  0xcc, 0xb3, 0x1c, 0x7b, 0x5e, 0xe8, 0x1d, 0xc7, 0xc9, 0x4d, 0x02, 0xf9,
+  0x8e, 0x8f, 0x4e, 0xcc, 0xc5, 0x64, 0xb3, 0xcc, 0xe0, 0xa3, 0xcb, 0xa6,
+  0x14, 0x0b, 0x52, 0x48, 0x20, 0x27, 0x56, 0xe7, 0x10, 0x64, 0x2c, 0x3d,
+  0xb4, 0xd6, 0x01, 0x02, 0xc8, 0xd8, 0x2e, 0xc8, 0x1f, 0xaf, 0x6d, 0x45,
+  0x20, 0x91, 0xdc, 0x2c, 0xc4, 0xc0, 0x0e, 0xec, 0x0a, 0x04, 0xf9, 0xa5,
+  0xaa, 0x04, 0x6f, 0x7b, 0xe8, 0x00, 0x81, 0xb6, 0x76, 0x1f, 0x77, 0xc2,
+  0x19, 0xa1, 0x16, 0x62, 0xd0, 0x4a, 0x6f, 0x5b, 0xba, 0x4c, 0xfc, 0x7a,
+  0xcc, 0x0b, 0xc8, 0xa4, 0x86, 0x13, 0x09, 0x78, 0x5a, 0x3e, 0x30, 0xcd,
+  0x59, 0x68, 0xe7, 0x09, 0x68, 0xc7, 0x19, 0x0e, 0x44, 0xd1, 0x9b, 0x69,
+  0x63, 0x1d, 0x15, 0x35, 0x33, 0xac, 0x41, 0xe9, 0x9a, 0x40, 0xe4, 0x54,
+  0x2d, 0xaa, 0x6a, 0x1f, 0x9e, 0xcf, 0x94, 0x35, 0xa5, 0x35, 0x32, 0xd9,
+  0xfa, 0xb7, 0xd6, 0x6c, 0xff, 0x3d, 0x5d, 0x17, 0x65, 0x7f, 0xb4, 0x80,
+  0x63, 0xc6, 0xab, 0xa9, 0xc7, 0x49, 0xdc, 0xe5, 0x25, 0x6b, 0x1e, 0xfc,
+  0x7b, 0x0a, 0x48, 0x83, 0x1e, 0x83, 0x63, 0xd4, 0xc8, 0x97, 0x6e, 0x33,
+  0x6d, 0x59, 0x7e, 0x25, 0x4e, 0x42, 0x72, 0xc5, 0xbe, 0xed, 0x00, 0x65,
+  0x91, 0xad, 0x93, 0xc6, 0xb3, 0x69, 0x7a, 0x9d, 0x94, 0x8b, 0xc6, 0xd6,
+  0xa6, 0xb8, 0x80, 0x9a, 0x90, 0x49, 0xc5, 0x06, 0xcd, 0xa5, 0xd0, 0xcc,
+  0xad, 0x9b, 0x86, 0xaa, 0xc0, 0x31, 0x35, 0x4c, 0x3a, 0xe5, 0x92, 0x3a,
+  0x4b, 0xaf, 0x12, 0x3e, 0x4c, 0xcd, 0xc5, 0xc5, 0x5f, 0xcf, 0x8e, 0x5e,
+  0xeb, 0x9b, 0xab, 0xd6, 0x8c, 0x19, 0x13, 0x01, 0x9a, 0xcb, 0x84, 0xa1,
+  0xd8, 0xab, 0x63, 0x6f, 0x36, 0x59, 0xbf, 0x51, 0x30, 0x0f, 0x7f, 0xa6,
+  0x9f, 0xfc, 0xf0, 0xe6, 0x78, 0x78, 0x76, 0x72, 0x7a, 0xf8, 0xfa, 0xd5,
+  0x0f, 0x2a, 0x92, 0xbf, 0xa0, 0x18, 0x21, 0xeb, 0x69, 0xf6, 0x67, 0x8e,
+  0xd1, 0x45, 0xde, 0x7b, 0x7f, 0xf4, 0xfd, 0x47, 0x63, 0x8f, 0xbd, 0xa6,
+  0xba, 0x0e, 0xbd, 0x9b, 0x74, 0x2a, 0x2f, 0x91, 0x7e, 0x1a, 0xd1, 0xed,
+  0x06, 0x6d, 0x0a, 0xce, 0xee, 0xc4, 0xda, 0x52, 0xc2, 0x2e, 0x51, 0xe9,
+  0x5e, 0x71, 0xb4, 0x5e, 0xd5, 0xb8, 0xb4, 0x95, 0x57, 0x1f, 0x29, 0xfc,
+  0xed, 0xae, 0xff, 0x8d, 0x86, 0x41, 0xd5, 0x84, 0x21, 0xf2, 0xa1, 0x39,
+  0x00, 0xae, 0xcb, 0x6f, 0x1c, 0xa0, 0x5f, 0xf8, 0xd3, 0x2b, 0xf2, 0xa3,
+  0x59, 0x02, 0x5a, 0xa9, 0x26, 0x0f, 0xd0, 0x8b, 0xb0, 0xd4, 0x0a, 0xf5,
+  0x1a, 0x61, 0xe8, 0x35, 0x9d, 0x46, 0xe5, 0x98, 0xa8, 0x30, 0xb6, 0x2f,
+  0xa9, 0xd6, 0xb5, 0x46, 0xf1, 0xac, 0xb3, 0xa3, 0xf3, 0xe1, 0xf1, 0xf0,
+  0x82, 0x0c, 0x57, 0x29, 0xb2, 0x2a, 0x41, 0x28, 0xad, 0x80, 0x0b, 0xd2,
+  0x96, 0x36, 0xe1, 0xb0, 0x5f, 0xd8, 0xa7, 0x75, 0xa2, 0xad, 0x98, 0x6b,
+  0x67, 0x71, 0xd3, 0x0d, 0xc0, 0xa9, 0xe1, 0xa4, 0x88, 0x32, 0x6d, 0x76,
+  0x7a, 0xa9, 0x07, 0xb8, 0x94, 0xad, 0xd1, 0xa9, 0x6f, 0x83, 0xda, 0x54,
+  0x58, 0x9d, 0x69, 0x3e, 0xf2, 0xaa, 0xda, 0xb7, 0x31, 0x24, 0x04, 0x4f,
+  0x12, 0x8a, 0x1e, 0xff, 0x08, 0x69, 0x40, 0xcc, 0x51, 0x23, 0x48, 0xdd,
+  0x6d, 0xb9, 0xd6, 0x24, 0xad, 0xd9, 0x4f, 0x60, 0xb7, 0x6e, 0x29, 0x18,
+  0x2d, 0xaa, 0xa7, 0xd9, 0x9f, 0x7a, 0x28, 0x74, 0x61, 0x7d, 0x03, 0x61,
+  0xb5, 0x88, 0x6c, 0x12, 0xca, 0x39, 0xa7, 0xa2, 0x92, 0x7f, 0xd2, 0x68,
+  0x2d, 0xa0, 0xd6, 0x00, 0x50, 0x50, 0x46, 0x16, 0xa8, 0x20, 0xa2, 0x3a,
+  0x5e, 0x51, 0x0e, 0x2b, 0xa8, 0xf5, 0x26, 0xa4, 0x6f, 0xc1, 0x05, 0xef,
+  0x7f, 0x4c, 0xaf, 0x53, 0x9a, 0xc1, 0xd1, 0xc2, 0xaf, 0xda, 0x68, 0x7b,
+  0xcf, 0x05, 0x84, 0x30, 0xf1, 0x80, 0x48, 0xa7, 0x15, 0x3c, 0x19, 0x8d,
+  0x94, 0x8a, 0x50, 0xc3, 0x47, 0xf0, 0xce, 0x83, 0x36, 0x8b, 0x97, 0xee,
+  0x4b, 0x35, 0xc2, 0x56, 0xcd, 0xa8, 0x57, 0xe6, 0x95, 0xb6, 0x6f, 0x95,
+  0x29, 0x70, 0x91, 0x9d, 0x8a, 0x35, 0x45, 0x1c, 0x8b, 0xb1, 0xbd, 0x8c,
+  0x29, 0xeb, 0x90, 0x00, 0x06, 0x95, 0x30, 0xa4, 0x19, 0xf1, 0x47, 0xa1,
+  0x25, 0xd4, 0x86, 0x45, 0xd1, 0x74, 0x0a, 0xbb, 0x2b, 0x7b, 0xa6, 0xcb,
+  0xe3, 0xe0, 0xe9, 0xf6, 0xb6, 0x15, 0xc7, 0xd7, 0xee, 0xe5, 0x83, 0x96,
+  0x21, 0x43, 0x17, 0xab, 0xc7, 0x09, 0x97, 0x29, 0xf2, 0xfb, 0x34, 0xb0,
+  0xe3, 0xe5, 0x89, 0xd7, 0x92, 0x7d, 0x6f, 0xf1, 0x29, 0x10, 0x78, 0xad,
+  0x02, 0xd9, 0x34, 0xba, 0x16, 0x36, 0xc0, 0xe8, 0x97, 0x73, 0x54, 0x3b,
+  0x1b, 0x4b, 0x0d, 0x09, 0xa0, 0xf6, 0x6d, 0x83, 0x7a, 0x89, 0xb8, 0xc9,
+  0x32, 0xb3, 0xfa, 0xee, 0xc3, 0xc9, 0xc5, 0xf1, 0x99, 0x8f, 0x3f, 0x48,
+  0xbe, 0x3f, 0xbe, 0xf8, 0xc6, 0x68, 0xed, 0xc3, 0xe3, 0xf7, 0x5f, 0x9f,
+  0x50, 0x90, 0xf7, 0xdd, 0xbb, 0x83, 0xf7, 0x44, 0x2f, 0xf2, 0x1e, 0xd0,
+  0xe6, 0x03, 0x18, 0x0e, 0x24, 0x8e, 0xcc, 0x14, 0xd3, 0xde, 0x21, 0xe2,
+  0x89, 0x5e, 0x18, 0x6b, 0xec, 0x1c, 0x3f, 0x2e, 0x80, 0x5e, 0xb4, 0x27,
+  0x69, 0x0d, 0xe5, 0xec, 0x61, 0x19, 0xdc, 0x93, 0x1b, 0x17, 0xc7, 0x96,
+  0x8c, 0x2d, 0x9a, 0xe8, 0x6e, 0xf1, 0x08, 0x24, 0x39, 0xb3, 0x86, 0x0e,
+  0x1c, 0x0d, 0xdf, 0xdd, 0x2e, 0x7e, 0x89, 0x15, 0xb5, 0xd4, 0xd3, 0xb0,
+  0x63, 0x8c, 0xce, 0x54, 0x88, 0x5d, 0xc3, 0xf7, 0x65, 0x3b, 0xe9, 0xc8,
+  0x7c, 0x11, 0x5d, 0x02, 0x90, 0xa8, 0x74, 0x8e, 0x74, 0xb2, 0x38, 0xc9,
+  0x68, 0x3e, 0x3f, 0xf1, 0x2f, 0xd4, 0x41, 0xab, 0x3c, 0xa0, 0xe2, 0x83,
+  0xaf, 0xca, 0xcc, 0x9d, 0xdc, 0xfe, 0xa9, 0x36, 0xa3, 0xf1, 0x1f, 0x98,
+  0x61, 0x7c, 0xb9, 0xf4, 0x49, 0xae, 0xf5, 0xcd, 0x92, 0x6c, 0xd9, 0x92,
+  0x60, 0x62, 0xf6, 0xef, 0xb3, 0x5a, 0x69, 0xc9, 0xd5, 0xb5, 0x92, 0xa6,
+  0x69, 0x4e, 0x5b, 0x16, 0x2c, 0x1a, 0x12, 0x32, 0x24, 0xaf, 0x51, 0xc6,
+  0x0c, 0x69, 0xa9, 0x8f, 0xb5, 0x68, 0x19, 0xf8, 0xbe, 0x3b, 0xd5, 0xe0,
+  0xa4, 0xe6, 0xb5, 0xda, 0x1a, 0x8d, 0x0e, 0x3a, 0x81, 0x2a, 0x88, 0x70,
+  0x57, 0x64, 0x84, 0x72, 0xa0, 0xbf, 0xfe, 0x6d, 0x7e, 0xe5, 0xa7, 0xbc,
+  0x72, 0x0d, 0xf8, 0x79, 0x6c, 0x65, 0x85, 0xc9, 0x9d, 0xd5, 0x22, 0xa9,
+  0x3b, 0xd9, 0xea, 0x81, 0x14, 0x93, 0xdc, 0x5d, 0xf6, 0x41, 0xf9, 0xfd,
+  0x5e, 0xf8, 0xfb, 0x3d, 0x0e, 0x32, 0x1c, 0x9f, 0xdd, 0x3c, 0xb7, 0x0c,
+  0xc8, 0x4c, 0xe4, 0xe0, 0xab, 0x6f, 0xaa, 0x14, 0xd0, 0x0e, 0xa3, 0x47,
+  0xc5, 0x65, 0xce, 0x32, 0x91, 0x83, 0x7f, 0x04, 0x21, 0x5d, 0x54, 0x48,
+  0x50, 0xc7, 0x23, 0x88, 0xae, 0x30, 0xee, 0x1f, 0x9e, 0x27, 0xc8, 0x29,
+  0xba, 0xae, 0x4c, 0x83, 0xe6, 0xf7, 0x4f, 0x6d, 0x32, 0x8e, 0x93, 0x69,
+  0xa8, 0xa7, 0x28, 0xe9, 0x90, 0xfd, 0x7c, 0x7e, 0xa3, 0x05, 0xb9, 0xcd,
+  0x5f, 0x9f, 0xdb, 0x5a, 0x5a, 0x75, 0x2b, 0x48, 0xdd, 0x62, 0x1b, 0x57,
+  0xe1, 0x8f, 0xce, 0xc1, 0x07, 0x46, 0x92, 0xc1, 0x19, 0x19, 0x9d, 0x7e,
+  0x65, 0xed, 0x8c, 0x0c, 0xaf, 0xa2, 0x30, 0xb2, 0xbe, 0xa6, 0x48, 0x8d,
+  0x87, 0x3c, 0xf2, 0x84, 0x8b, 0x5f, 0xe9, 0x43, 0x56, 0xfd, 0xc7, 0xbd,
+  0x9d, 0x9d, 0xdd, 0xfd, 0xdd, 0x17, 0x2f, 0x77, 0xf6, 0x77, 0x77, 0x77,
+  0xf7, 0xf6, 0x77, 0xf7, 0xf7, 0xf7, 0x76, 0x7e, 0xde, 0x26, 0xff, 0xd1,
+  0x4d, 0x9e, 0xdd, 0x6a, 0x64, 0x9a, 0xfd, 0x7c, 0xd8, 0xd6, 0x75, 0x73,
+  0xcf, 0x60, 0x00, 0xf6, 0xf4, 0x61, 0x5f, 0xab, 0xe6, 0x63, 0x69, 0x65,
+  0x38, 0x67, 0x86, 0x29, 0x24, 0xe7, 0x2e, 0xd5, 0x1c, 0x67, 0xd0, 0xa3,
+  0xb9, 0x47, 0xaf, 0xfe, 0xbe, 0xa0, 0x91, 0x8e, 0x48, 0x1d, 0x80, 0x4e,
+  0x53, 0xdb, 0xc4, 0xde, 0xab, 0x69, 0x39, 0x1a, 0x21, 0x75, 0xc9, 0xe6,
+  0xb6, 0x0f, 0x12, 0xe2, 0x52, 0xfe, 0xc4, 0x5b, 0x42, 0x42, 0x87, 0x40,
+  0x15, 0xf3, 0x41, 0x77, 0xb3, 0xe3, 0x3c, 0x7b, 0x66, 0x07, 0x8c, 0x4b,
+  0xaa, 0x2b, 0x02, 0x4f, 0xb7, 0x99, 0xa4, 0xca, 0xe6, 0xbc, 0x25, 0x97,
+  0xd9, 0x8b, 0x9d, 0xfd, 0x7d, 0x2a, 0xfd, 0xf3, 0xa7, 0xdd, 0x9e, 0x00,
+  0xc2, 0xfd, 0x2c, 0x97, 0x9e, 0xbd, 0x9e, 0xb8, 0x0d, 0x32, 0x3f, 0xfc,
+  0x71, 0x16, 0x8b, 0x59, 0x56, 0x19, 0x43, 0x84, 0xea, 0x3c, 0x03, 0x11,
+  0x0d, 0x8f, 0x21, 0x73, 0x2c, 0x82, 0x91, 0xa9, 0x93, 0x8d, 0x43, 0x37,
+  0x02, 0x73, 0x45, 0x5b, 0x16, 0x0a, 0xe6, 0x0b, 0x73, 0x43, 0xb4, 0x6d,
+  0xa3, 0xfc, 0x15, 0xc0, 0x9a, 0x9c, 0xcb, 0xc6, 0x59, 0x7c, 0x7c, 0xdf,
+  0x8a, 0x64, 0xc0, 0xe1, 0x2a, 0xb8, 0xfa, 0x30, 0x3d, 0xce, 0x3a, 0x3c,
+  0x3c, 0x26, 0x9e, 0x72, 0x2b, 0x09, 0x7c, 0x3f, 0x7a, 0x83, 0xdd, 0x7b,
+  0xb6, 0xfb, 0x33, 0xe3, 0x95, 0xe9, 0x40, 0xb8, 0x59, 0xd3, 0xe0, 0x8b,
+  0x9f, 0xa2, 0xa5, 0x1b, 0x69, 0x33, 0x1b, 0x5c, 0x0d, 0x54, 0xab, 0x10,
+  0x6f, 0x63, 0xcf, 0xcf, 0x1a, 0xe1, 0x3a, 0x05, 0x5c, 0x53, 0x1c, 0x76,
+  0x9a, 0x3a, 0x94, 0x7c, 0x57, 0xad, 0x0e, 0xcc, 0x56, 0x8e, 0x7b, 0x77,
+  0x74, 0x71, 0x60, 0x2e, 0x8f, 0x6f, 0x43, 0x43, 0xff, 0x5d, 0x66, 0xac,
+  0x72, 0x5a, 0xec, 0x4d, 0x9c, 0x87, 0x1b, 0xcb, 0x0e, 0x4e, 0x73, 0xf7,
+  0x34, 0xd9, 0xa4, 0x10, 0xe5, 0xb3, 0x17, 0xcf, 0x9e, 0x6e, 0x71, 0x29,
+  0x16, 0x7e, 0x2d, 0xa3, 0x04, 0x31, 0x78, 0x25, 0x85, 0x9d, 0x8a, 0x1c,
+  0xf8, 0x56, 0x24, 0x7d, 0x38, 0x3f, 0xe6, 0x23, 0x7d, 0xcd, 0x24, 0x22,
+  0x6c, 0xf4, 0x76, 0xd9, 0x24, 0x71, 0xdf, 0x7a, 0x4a, 0xc6, 0x2c, 0x27,
+  0xa6, 0x53, 0x90, 0x2f, 0xd0, 0xc5, 0x68, 0xc9, 0x3f, 0x70, 0xc3, 0x9a,
+  0x03, 0x5a, 0xa2, 0x96, 0xa8, 0xd4, 0x7d, 0x43, 0x67, 0x40, 0x8d, 0x4a,
+  0xcc, 0xcc, 0xb2, 0xcf, 0xac, 0x05, 0x46, 0x76, 0x10, 0xcb, 0x23, 0x96,
+  0xfe, 0x1d, 0x36, 0xfe, 0x2d, 0x86, 0xfc, 0x40, 0x29, 0xa4, 0x6d, 0x68,
+  0x1e, 0x54, 0xec, 0x38, 0xf5, 0xb8, 0x95, 0x8e, 0xea, 0xb4, 0x4d, 0x8f,
+  0xd4, 0x4d, 0xf9, 0x9c, 0x44, 0x14, 0xd9, 0x29, 0x64, 0x3c, 0x4b, 0x03,
+  0xcf, 0x62, 0xde, 0x72, 0xf9, 0x08, 0x99, 0x06, 0x48, 0x2d, 0x90, 0x73,
+  0x30, 0x33, 0xd7, 0x51, 0x75, 0x2f, 0x1a, 0x36, 0xcc, 0x04, 0x5b, 0xfa,
+  0xb0, 0x83, 0x08, 0x62, 0xda, 0x18, 0x3f, 0x95, 0xc6, 0xb2, 0x26, 0xa9,
+  0xd1, 0xdc, 0xea, 0x40, 0x4b, 0xec, 0xf7, 0x67, 0xfa, 0x2b, 0x0f, 0x30,
+  0xe7, 0xe7, 0x97, 0xea, 0xdf, 0xf5, 0x39, 0x0f, 0x4b, 0x9d, 0x76, 0x07,
+  0xb6, 0xa4, 0x6b, 0xcc, 0xa8, 0x0b, 0xfc, 0xa4, 0xb5, 0x7e, 0x36, 0xd1,
+  0x93, 0xed, 0xed, 0xad, 0x25, 0xbd, 0x91, 0x5f, 0xc7, 0xbe, 0x7e, 0x06,
+  0x52, 0x22, 0x2f, 0xa5, 0xdb, 0xac, 0x79, 0xbb, 0x71, 0x9a, 0xda, 0xbc,
+  0xa6, 0x95, 0x9c, 0x08, 0x30, 0x9e, 0xdd, 0xa8, 0x6a, 0x5e, 0x71, 0xe7,
+  0x55, 0x78, 0xb5, 0x07, 0x21, 0x58, 0x3c, 0x25, 0x89, 0xe3, 0x02, 0xf0,
+  0x8c, 0x0a, 0x18, 0x24, 0x07, 0xb4, 0x1b, 0x5a, 0x1f, 0xf6, 0xba, 0xac,
+  0xfe, 0x5c, 0xad, 0x7b, 0xa0, 0x4a, 0xac, 0x75, 0xe7, 0xf5, 0xbc, 0x5f,
+  0xaa, 0x9a, 0xa7, 0x9c, 0x20, 0xd6, 0xd9, 0x3b, 0xca, 0x98, 0xff, 0xc8,
+  0x4a, 0x4e, 0x8f, 0xcf, 0x3c, 0x2f, 0x5a, 0x35, 0x7d, 0xa5, 0x11, 0x20,
+  0x5d, 0xec, 0x20, 0x40, 0x95, 0x5a, 0x29, 0x05, 0xb7, 0x5f, 0xe7, 0x13,
+  0x14, 0x24, 0x92, 0xd5, 0xc2, 0x8a, 0xb5, 0xdd, 0xc4, 0x0c, 0x52, 0x18,
+  0xf1, 0xf6, 0x6a, 0xcd, 0x47, 0x8f, 0x77, 0x3c, 0xa3, 0x98, 0x2c, 0xa4,
+  0x82, 0x04, 0xc6, 0xc1, 0xf1, 0x09, 0xc1, 0x62, 0x4f, 0x8c, 0x89, 0x37,
+  0x54, 0x55, 0x09, 0x30, 0x71, 0x00, 0x76, 0x8b, 0x9c, 0xd4, 0xf5, 0x9e,
+  0x2d, 0x38, 0xa4, 0xd9, 0x92, 0xb0, 0x5b, 0x28, 0xc4, 0xca, 0xa6, 0xbf,
+  0x90, 0x84, 0x9a, 0xd5, 0x32, 0xfa, 0x52, 0xcd, 0x4e, 0x5b, 0x10, 0x70,
+  0x53, 0x69, 0x8a, 0x9b, 0x6c, 0x5a, 0xce, 0x61, 0x52, 0xb3, 0x98, 0x46,
+  0xbd, 0xb3, 0x2a, 0x9b, 0x66, 0x37, 0xe2, 0x5d, 0x65, 0x3a, 0xe3, 0xaf,
+  0x05, 0xb1, 0xc0, 0xb5, 0x89, 0x1b, 0xc9, 0x6a, 0x09, 0x50, 0x11, 0xf4,
+  0xd1, 0x6d, 0x66, 0x85, 0x72, 0x64, 0x3f, 0xf4, 0x7d, 0x57, 0x84, 0xc3,
+  0xcc, 0x90, 0x2d, 0xe2, 0xd0, 0x27, 0x23, 0x57, 0xc0, 0xed, 0x1f, 0x6a,
+  0xe1, 0x73, 0xe9, 0x66, 0x8b, 0xb0, 0xb3, 0x50, 0xcb, 0x5b, 0xb2, 0xf7,
+  0xbd, 0xa7, 0x34, 0xe9, 0x1c, 0x32, 0xa0, 0x9b, 0xa7, 0x47, 0x9e, 0x5a,
+  0xb4, 0x74, 0x69, 0x2c, 0x32, 0x2a, 0x88, 0xd3, 0xe3, 0xd4, 0x71, 0x6c,
+  0x8e, 0x72, 0x6a, 0xfe, 0x09, 0x40, 0x25, 0x43, 0xac, 0xcd, 0xb3, 0x14,
+  0x6f, 0xf6, 0x30, 0xed, 0x84, 0xb9, 0x41, 0x3a, 0x94, 0xfc, 0x0b, 0x4d,
+  0x55, 0x0b, 0xb0, 0x89, 0xf7, 0xf8, 0x36, 0xa4, 0x38, 0x6f, 0x33, 0x1e,
+  0xd8, 0xde, 0x0b, 0xea, 0x87, 0xfb, 0xff, 0x86, 0xa7, 0x92, 0x06, 0xc1,
+  0x7a, 0x48, 0x59, 0xe9, 0xf4, 0xf2, 0x32, 0x8c, 0xb8, 0x1a, 0xe9, 0x57,
+  0x0b, 0x8a, 0x3f, 0xda, 0x02, 0x5e, 0xd4, 0x8b, 0x19, 0xdd, 0x45, 0x19,
+  0x17, 0xfe, 0xb5, 0x8d, 0x93, 0x49, 0xb7, 0x30, 0xcb, 0xcb, 0xad, 0x9f,
+  0x94, 0xb7, 0x54, 0xb5, 0xf8, 0xf2, 0x32, 0x1f, 0x53, 0xec, 0xdf, 0xb1,
+  0x86, 0x93, 0x8c, 0xe7, 0x07, 0x67, 0x5a, 0x7d, 0xcd, 0x8c, 0x2d, 0x99,
+  0x2f, 0x46, 0x53, 0x73, 0x59, 0x6b, 0x3e, 0x8b, 0x39, 0x55, 0x98, 0x25,
+  0x63, 0x6d, 0xa1, 0x39, 0xa6, 0x37, 0x84, 0xc1, 0xd9, 0xc9, 0xa1, 0x40,
+  0xb8, 0xb4, 0x82, 0x0a, 0x3e, 0x43, 0xf9, 0x66, 0x4a, 0x34, 0x98, 0x95,
+  0x85, 0xa6, 0xc3, 0x2d, 0x6a, 0xa6, 0x93, 0x45, 0x34, 0x87, 0xab, 0x64,
+  0x25, 0x78, 0x52, 0x8a, 0x36, 0x88, 0x69, 0x8e, 0x37, 0xfc, 0xc1, 0x4c,
+  0xfa, 0xf3, 0xeb, 0xb9, 0xae, 0xb4, 0x2a, 0x44, 0xac, 0x2d, 0x49, 0x02,
+  0x16, 0x8e, 0xde, 0xd9, 0x37, 0x67, 0x83, 0xe4, 0x88, 0x5a, 0xe2, 0x3e,
+  0x89, 0xa2, 0x0b, 0x1f, 0x8d, 0xf9, 0x9d, 0x19, 0xec, 0x15, 0x5d, 0x60,
+  0xa7, 0x15, 0xfd, 0x0b, 0xad, 0xc9, 0x2f, 0xd9, 0x2d, 0x8b, 0xdf, 0xb6,
+  0xbf, 0x6a, 0x1a, 0xd2, 0x34, 0x8b, 0x33, 0xfc, 0xdd, 0x9c, 0x15, 0xa3,
+  0x7e, 0xd9, 0x65, 0x72, 0x5f, 0x28, 0xab, 0x16, 0xf9, 0x16, 0xbf, 0x99,
+  0x18, 0xad, 0x0c, 0xba, 0xd5, 0xfc, 0x1e, 0xeb, 0xe7, 0x09, 0x47, 0xd6,
+  0x3f, 0xb9, 0x01, 0x6f, 0x6b, 0xc9, 0xf6, 0xb3, 0x00, 0x5e, 0x3e, 0x58,
+  0x15, 0xd3, 0x4e, 0x55, 0x99, 0xc0, 0x9d, 0x4b, 0x09, 0x4c, 0xb3, 0x47,
+  0xa3, 0xce, 0x3a, 0xe7, 0xd5, 0xb3, 0xdf, 0xf4, 0x17, 0x64, 0x76, 0x53,
+  0x5f, 0x8c, 0xd6, 0x62, 0x96, 0x60, 0xb0, 0xf6, 0xff, 0x05, 0xe8, 0x55,
+  0xa2, 0x40, 0x3e, 0x0c, 0x03, 0x00,
 };
 #define BUF_SIZE 0x10000
 static voidpf zalloc_func(voidpf opaque, unsigned int items, unsigned int size)
diff --git a/src/tool_metalink.c b/src/tool_metalink.c
index bbbfc2a..03f1597 100644
--- a/src/tool_metalink.c
+++ b/src/tool_metalink.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -243,7 +243,7 @@
 {
   PK11Context *ctx;
 
-  /* we have to initialize NSS if not initialized alraedy */
+  /* we have to initialize NSS if not initialized already */
   if(!NSS_IsInitialized() && !nss_context) {
     static NSSInitParameters params;
     params.length = sizeof params;
@@ -461,6 +461,11 @@
 
 #endif /* CRYPTO LIBS */
 
+/* Disable this picky gcc-8 compiler warning */
+#if defined(__GNUC__) && (__GNUC__ >= 8)
+#pragma GCC diagnostic ignored "-Wcast-function-type"
+#endif
+
 const digest_params MD5_DIGEST_PARAMS[] = {
   {
     (Curl_digest_init_func) MD5_Init,
diff --git a/src/tool_operate.c b/src/tool_operate.c
index 5401955..626c308 100644
--- a/src/tool_operate.c
+++ b/src/tool_operate.c
@@ -25,12 +25,6 @@
 #  include <fcntl.h>
 #endif
 
-#ifdef HAVE_UTIME_H
-#  include <utime.h>
-#elif defined(HAVE_SYS_UTIME_H)
-#  include <sys/utime.h>
-#endif
-
 #ifdef HAVE_LOCALE_H
 #  include <locale.h>
 #endif
@@ -56,6 +50,7 @@
 #include "tool_dirhie.h"
 #include "tool_doswin.h"
 #include "tool_easysrc.h"
+#include "tool_filetime.h"
 #include "tool_getparam.h"
 #include "tool_helpers.h"
 #include "tool_homedir.h"
@@ -174,79 +169,6 @@
 }
 #endif /* __VMS */
 
-#if defined(HAVE_UTIME) || \
-    (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
-static void setfiletime(long filetime, const char *filename,
-                        FILE *error_stream)
-{
-  if(filetime >= 0) {
-/* Windows utime() may attempt to adjust our unix gmt 'filetime' by a daylight
-   saving time offset and since it's GMT that is bad behavior. When we have
-   access to a 64-bit type we can bypass utime and set the times directly. */
-#if defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)
-    HANDLE hfile;
-
-#if (SIZEOF_LONG >= 8)
-    /* 910670515199 is the maximum unix filetime that can be used as a
-       Windows FILETIME without overflow: 30827-12-31T23:59:59. */
-    if(filetime > CURL_OFF_T_C(910670515199)) {
-      fprintf(error_stream,
-              "Failed to set filetime %ld on outfile: overflow\n",
-              filetime);
-      return;
-    }
-#endif /* SIZEOF_LONG >= 8 */
-
-    hfile = CreateFileA(filename, FILE_WRITE_ATTRIBUTES,
-                        (FILE_SHARE_READ | FILE_SHARE_WRITE |
-                         FILE_SHARE_DELETE),
-                        NULL, OPEN_EXISTING, 0, NULL);
-    if(hfile != INVALID_HANDLE_VALUE) {
-      curl_off_t converted = ((curl_off_t)filetime * 10000000) +
-                             CURL_OFF_T_C(116444736000000000);
-      FILETIME ft;
-      ft.dwLowDateTime = (DWORD)(converted & 0xFFFFFFFF);
-      ft.dwHighDateTime = (DWORD)(converted >> 32);
-      if(!SetFileTime(hfile, NULL, &ft, &ft)) {
-        fprintf(error_stream,
-                "Failed to set filetime %ld on outfile: "
-                "SetFileTime failed: GetLastError %u\n",
-                filetime, GetLastError());
-      }
-      CloseHandle(hfile);
-    }
-    else {
-      fprintf(error_stream,
-              "Failed to set filetime %ld on outfile: "
-              "CreateFile failed: GetLastError %u\n",
-              filetime, GetLastError());
-    }
-
-#elif defined(HAVE_UTIMES)
-    struct timeval times[2];
-    times[0].tv_sec = times[1].tv_sec = filetime;
-    times[0].tv_usec = times[1].tv_usec = 0;
-    if(utimes(filename, times)) {
-      fprintf(error_stream,
-              "Failed to set filetime %ld on outfile: errno %d\n",
-              filetime, errno);
-    }
-
-#elif defined(HAVE_UTIME)
-    struct utimbuf times;
-    times.actime = (time_t)filetime;
-    times.modtime = (time_t)filetime;
-    if(utime(filename, &times)) {
-      fprintf(error_stream,
-              "Failed to set filetime %ld on outfile: errno %d\n",
-              filetime, errno);
-    }
-#endif
-  }
-}
-#endif /* defined(HAVE_UTIME) || \
-          (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */
-
 #define BUFFER_SIZE (100*1024)
 
 static CURLcode operate_do(struct GlobalConfig *global,
@@ -306,52 +228,76 @@
   if(!config->cacert &&
      !config->capath &&
      !config->insecure_ok) {
-    char *env;
-    env = curlx_getenv("CURL_CA_BUNDLE");
-    if(env) {
-      config->cacert = strdup(env);
-      if(!config->cacert) {
-        curl_free(env);
-        helpf(global->errors, "out of memory\n");
-        result = CURLE_OUT_OF_MEMORY;
-        goto quit_curl;
-      }
+    struct curl_tlssessioninfo *tls_backend_info = NULL;
+
+    /* With the addition of CAINFO support for Schannel, this search could find
+     * a certificate bundle that was previously ignored. To maintain backward
+     * compatibility, only perform this search if not using Schannel.
+     */
+    result = curl_easy_getinfo(config->easy,
+                               CURLINFO_TLS_SSL_PTR,
+                               &tls_backend_info);
+    if(result) {
+      goto quit_curl;
     }
-    else {
-      env = curlx_getenv("SSL_CERT_DIR");
+
+    /* Set the CA cert locations specified in the environment. For Windows if
+     * no environment-specified filename is found then check for CA bundle
+     * default filename curl-ca-bundle.crt in the user's PATH.
+     *
+     * If Schannel (WinSSL) is the selected SSL backend then these locations
+     * are ignored. We allow setting CA location for schannel only when
+     * explicitly specified by the user via CURLOPT_CAINFO / --cacert.
+     */
+    if(tls_backend_info->backend != CURLSSLBACKEND_SCHANNEL) {
+      char *env;
+      env = curlx_getenv("CURL_CA_BUNDLE");
       if(env) {
-        config->capath = strdup(env);
-        if(!config->capath) {
+        config->cacert = strdup(env);
+        if(!config->cacert) {
           curl_free(env);
           helpf(global->errors, "out of memory\n");
           result = CURLE_OUT_OF_MEMORY;
           goto quit_curl;
         }
-        capath_from_env = true;
       }
       else {
-        env = curlx_getenv("SSL_CERT_FILE");
+        env = curlx_getenv("SSL_CERT_DIR");
         if(env) {
-          config->cacert = strdup(env);
-          if(!config->cacert) {
+          config->capath = strdup(env);
+          if(!config->capath) {
             curl_free(env);
             helpf(global->errors, "out of memory\n");
             result = CURLE_OUT_OF_MEMORY;
             goto quit_curl;
           }
+          capath_from_env = true;
+        }
+        else {
+          env = curlx_getenv("SSL_CERT_FILE");
+          if(env) {
+            config->cacert = strdup(env);
+            if(!config->cacert) {
+              curl_free(env);
+              helpf(global->errors, "out of memory\n");
+              result = CURLE_OUT_OF_MEMORY;
+              goto quit_curl;
+            }
+          }
         }
       }
-    }
 
-    if(env)
-      curl_free(env);
+      if(env)
+        curl_free(env);
 #ifdef WIN32
-    else {
-      result = FindWin32CACert(config, "curl-ca-bundle.crt");
-      if(result)
-        goto quit_curl;
-    }
+      else {
+        result = FindWin32CACert(config, tls_backend_info->backend,
+                                 "curl-ca-bundle.crt");
+        if(result)
+          goto quit_curl;
+      }
 #endif
+    }
   }
 
   if(config->postfields) {
@@ -510,8 +456,7 @@
            the number of resources as urlnum. */
         urlnum = count_next_metalink_resource(mlfile);
       }
-      else
-      if(!config->globoff) {
+      else if(!config->globoff) {
         /* Unless explicitly shut off, we expand '{...}' and '[...]'
            expressions and return total number of URLs in pattern set */
         result = glob_url(&urls, urlnode->url, &urlnum,
@@ -710,7 +655,7 @@
            * to be considered with one appended if implied CC
            */
 #ifdef __VMS
-          /* Calculate the real upload site for VMS */
+          /* Calculate the real upload size for VMS */
           infd = -1;
           if(stat(uploadfile, &fileinfo) == 0) {
             fileinfo.st_size = VmsSpecialSize(uploadfile, &fileinfo);
@@ -1232,7 +1177,7 @@
 #endif
 
         my_setopt_enum(curl, CURLOPT_TIMECONDITION, (long)config->timecond);
-        my_setopt(curl, CURLOPT_TIMEVALUE, (long)config->condtime);
+        my_setopt(curl, CURLOPT_TIMEVALUE_LARGE, config->condtime);
         my_setopt_str(curl, CURLOPT_CUSTOMREQUEST, config->customrequest);
         customrequest_helper(config, config->httpreq, config->customrequest);
         my_setopt(curl, CURLOPT_STDERR, global->errors);
@@ -1518,6 +1463,15 @@
         if(config->tftp_no_options)
           my_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
 
+        /* new in 7.59.0 */
+        if(config->happy_eyeballs_timeout_ms != CURL_HET_DEFAULT)
+          my_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS,
+                    config->happy_eyeballs_timeout_ms);
+
+        /* new in 7.60.0 */
+        if(config->haproxy_protocol)
+          my_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L);
+
         /* initialize retry vars for loop below */
         retry_sleep_default = (config->retry_delay) ?
           config->retry_delay*1000L : RETRY_SLEEP_DEFAULT; /* ms */
@@ -1639,9 +1593,13 @@
               }
             } /* if CURLE_OK */
             else if(result) {
-              curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+              long protocol;
 
-              if(response/100 == 4)
+              curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
+              curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
+
+              if((protocol == CURLPROTO_FTP || protocol == CURLPROTO_FTPS) &&
+                 response / 100 == 4)
                 /*
                  * This is typically when the FTP server only allows a certain
                  * amount of users and we are not one of them.  All 4xx codes
@@ -1841,18 +1799,13 @@
         }
 #endif
 
-#if defined(HAVE_UTIME) || \
-    (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8))
         /* File time can only be set _after_ the file has been closed */
         if(!result && config->remote_time && outs.s_isreg && outs.filename) {
           /* Ask libcurl if we got a remote file time */
-          long filetime = -1;
-          curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
-          if(filetime >= 0)
-            setfiletime(filetime, outs.filename, config->global->errors);
+          curl_off_t filetime = -1;
+          curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
+          setfiletime(filetime, outs.filename, config->global->errors);
         }
-#endif /* defined(HAVE_UTIME) || \
-          (defined(WIN32) && (SIZEOF_CURL_OFF_T >= 8)) */
 
 #ifdef USE_METALINK
         if(!metalink && config->use_metalink && result == CURLE_OK) {
@@ -1904,8 +1857,7 @@
              */
             break;
         }
-        else
-        if(urlnum > 1) {
+        else if(urlnum > 1) {
           /* when url globbing, exit loop upon critical error */
           if(is_fatal_error(result))
             break;
@@ -2051,7 +2003,7 @@
         size_t count = 0;
         struct OperationConfig *operation = config->first;
 
-        /* Get the required aguments for each operation */
+        /* Get the required arguments for each operation */
         while(!result && operation) {
           result = get_args(operation, count++);
 
diff --git a/src/tool_urlglob.c b/src/tool_urlglob.c
index f78d058..6fae236 100644
--- a/src/tool_urlglob.c
+++ b/src/tool_urlglob.c
@@ -579,7 +579,7 @@
       }
       break;
     case UPTNumRange:
-      snprintf(buf, buflen, "%0*ld",
+      snprintf(buf, buflen, "%0*lu",
                pat->content.NumRange.padlength,
                pat->content.NumRange.ptr_n);
       len = strlen(buf);
diff --git a/src/tool_version.h b/src/tool_version.h
index d5424df..0752dec 100644
--- a/src/tool_version.h
+++ b/src/tool_version.h
@@ -25,7 +25,7 @@
 
 #define CURL_NAME "curl"
 #define CURL_COPYRIGHT LIBCURL_COPYRIGHT
-#define CURL_VERSION "7.58.0"
+#define CURL_VERSION "7.60.0"
 #define CURL_VERSION_MAJOR LIBCURL_VERSION_MAJOR
 #define CURL_VERSION_MINOR LIBCURL_VERSION_MINOR
 #define CURL_VERSION_PATCH LIBCURL_VERSION_PATCH
diff --git a/tests/FILEFORMAT b/tests/FILEFORMAT
index 5426f33..d584ac1 100644
--- a/tests/FILEFORMAT
+++ b/tests/FILEFORMAT
@@ -231,6 +231,7 @@
 Kerberos
 large_file
 libz
+manual
 Metalink
 NSS
 NTLM
@@ -293,8 +294,8 @@
 Variables are first substituted as in the <command> section.
 </setenv>
 
-<command [option="no-output/no-include"] [timeout="secs"] [delay="secs"]
-         [type="perl"]>
+<command [option="no-output/no-include/force-output"] [timeout="secs"]
+         [delay="secs"][type="perl"]>
 command line to run, there's a bunch of %variables that get replaced
 accordingly.
 
@@ -317,6 +318,9 @@
 argument that directs the output to a file. The --output is also not added if
 the verify/stdout section is used.
 
+Set option="force-output" to make use of --output even when the test is
+otherwise written to verify stdout.
+
 Set option="no-include" to prevent the test script to slap on the --include
 argument.
 
diff --git a/tests/certs/Makefile.am b/tests/certs/Makefile.am
index 7e7f1fa..6a1c22a 100644
--- a/tests/certs/Makefile.am
+++ b/tests/certs/Makefile.am
@@ -62,7 +62,25 @@
   Server-localhost0h-sv.key \
   Server-localhost0h-sv.pem \
   Server-localhost0h-sv.pub.der \
-  Server-localhost0h-sv.pub.pem
+  Server-localhost0h-sv.pub.pem \
+  Server-localhost-firstSAN-sv.crl \
+  Server-localhost-firstSAN-sv.crt \
+  Server-localhost-firstSAN-sv.csr \
+  Server-localhost-firstSAN-sv.der \
+  Server-localhost-firstSAN-sv.dhp \
+  Server-localhost-firstSAN-sv.key \
+  Server-localhost-firstSAN-sv.pem \
+  Server-localhost-firstSAN-sv.pub.der \
+  Server-localhost-firstSAN-sv.pub.pem \
+  Server-localhost-lastSAN-sv.crl \
+  Server-localhost-lastSAN-sv.crt \
+  Server-localhost-lastSAN-sv.csr \
+  Server-localhost-lastSAN-sv.der \
+  Server-localhost-lastSAN-sv.dhp \
+  Server-localhost-lastSAN-sv.key \
+  Server-localhost-lastSAN-sv.pem \
+  Server-localhost-lastSAN-sv.pub.der \
+  Server-localhost-lastSAN-sv.pub.pem
 
 SRPFILES = \
   srp-verifier-conf \
@@ -76,7 +94,8 @@
 	cd $(srcdir); rm -f $(GENERATEDCERTS)
 
 build-certs: $(srcdir)/EdelCurlRoot-ca.cacert $(srcdir)/Server-localhost-sv.pem \
-	$(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem
+	$(srcdir)/Server-localhost.nn-sv.pem $(srcdir)/Server-localhost0h-sv.pem \
+	$(srcdir)/Server-localhost-firstSAN-sv.pem $(srcdir)/Server-localhost-lastSAN-sv.pem
 
 $(srcdir)/EdelCurlRoot-ca.cacert:
 	cd $(srcdir); scripts/genroot.sh EdelCurlRoot
@@ -89,3 +108,9 @@
 
 $(srcdir)/Server-localhost0h-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
 	cd $(srcdir); scripts/genserv.sh Server-localhost0h EdelCurlRoot
+
+$(srcdir)/Server-localhost-firstSAN-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+	cd $(srcdir); scripts/genserv.sh Server-localhost-firstSAN EdelCurlRoot
+
+$(srcdir)/Server-localhost-lastSAN-sv.pem: $(srcdir)/EdelCurlRoot-ca.cacert
+	cd $(srcdir); scripts/genserv.sh Server-localhost-firstSAN EdelCurlRoot
diff --git a/tests/certs/Server-localhost-firstSAN-sv.crl b/tests/certs/Server-localhost-firstSAN-sv.crl
new file mode 100644
index 0000000..af0be0d
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.crl
@@ -0,0 +1,13 @@
+-----BEGIN X509 CRL-----
+MIIB9TCB3gIBATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJOTjExMC8GA1UE
+CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDEmMCQG
+A1UEAwwdTm9ydGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IXDTE2MDgzMDE4MzIx
+NVoXDTE2MDkyOTE4MzIxNVowMjAXAgYNZJ8o86IXDTE2MDgzMDE4MzAxNVowFwIG
+DWSfO0UqFw0xNjA4MzAxODMyMTVaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0B
+AQUFAAOCAQEAOUlXQDrOURgODds6feyO+87oPHkgTveOiTm8CtSVHObxwkPkHTIg
+pivd7iXccgEc8CstcGF9Pk5KLVJrXXxEKgGr69NZNGtHa8xXlYSIh+Vre0Pni3Px
+sUAMcsnvGt+cYw/5s/2Wy9u5UVzfJwdxjkxMMp9X648AqeSop229541zGV47M4ox
+h0wh2Mj/w/CFUKw0ijVgVWff5DhKXVaLPCXdh7hhgXcsYUZ4W3G/iOL/jd+Ji88o
+OmZvoP+MOco6or13rz178bGB1mS626z7EU/HNgP8sn25TyQwwopr9uW6H7VvRMaI
+6uwWvihKgoGCRVSVwYEfX+oOLadfJqdHdg==
+-----END X509 CRL-----
diff --git a/tests/certs/Server-localhost-firstSAN-sv.crt b/tests/certs/Server-localhost-firstSAN-sv.crt
new file mode 100644
index 0000000..5e37ef0
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.crt
@@ -0,0 +1,80 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 14725819352362 (0xd649f3b452a)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = Northern Nowhere Trust Anchor
+        Validity
+            Not Before: Aug 30 18:32:15 2016 GMT
+            Not After : Nov 16 18:32:15 2024 GMT
+        Subject:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = localhost.nn
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (1024 bit)
+                Modulus:
+                    00:c5:87:2e:fb:f5:88:8a:39:4c:62:88:9f:fb:4a:
+                    02:1c:27:92:9d:0b:65:a2:70:1f:d1:b7:de:c8:1d:
+                    87:28:4b:9c:4b:cc:f6:f6:7c:83:1f:2d:76:be:41:
+                    29:5e:31:fa:23:0c:2d:7d:cb:38:c2:8b:54:8f:fc:
+                    6a:50:6d:c7:d7:af:72:fb:3b:a1:a7:4d:c4:1b:d2:
+                    0d:75:7c:92:62:97:48:c4:e8:12:c0:00:33:66:0e:
+                    28:17:0f:5c:36:d6:50:70:ec:c8:9f:a2:ae:b9:eb:
+                    eb:19:05:f0:53:83:42:2a:ae:40:1f:fa:fb:7a:b7:
+                    86:4c:ab:6b:28:0b:2f:7f:81
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Subject Alternative Name: 
+                DNS:localhost, DNS:localhost1, DNS:localhost2
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment, Key Agreement
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+            X509v3 Subject Key Identifier: 
+                2C:4D:DD:54:88:59:3F:A4:34:9C:E3:56:FF:95:0F:E2:CE:51:20:95
+            X509v3 Authority Key Identifier: 
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
+
+            X509v3 Basic Constraints: 
+                CA:FALSE
+    Signature Algorithm: sha1WithRSAEncryption
+         77:cd:d2:17:91:a6:4b:70:de:79:6a:20:82:a3:56:a3:d0:6a:
+         ba:f7:7d:6f:00:69:d2:06:06:0b:da:cd:49:9d:36:fd:d0:cc:
+         bd:8a:dc:e1:d6:89:c9:23:02:8a:19:2d:14:ca:c6:06:87:66:
+         c7:f4:32:37:95:0d:f1:a7:1c:a1:fe:43:4f:3b:03:03:e2:1a:
+         c6:fc:91:d5:0d:a0:7e:82:60:14:31:2f:6d:b8:f4:57:98:8d:
+         04:74:a3:82:28:6d:1c:b4:de:1a:70:bd:fe:73:ac:b7:96:ec:
+         7c:9b:6d:64:c6:f8:67:39:c7:ea:f4:aa:48:26:b8:14:85:f0:
+         00:ab:8f:bd:1a:95:e2:a7:63:92:35:1e:37:04:c2:70:2c:1c:
+         56:95:b1:83:70:8c:99:88:1c:8a:6f:7a:a2:0d:84:dd:4f:0e:
+         3e:8b:fb:31:cf:ae:ee:b0:e4:f6:c1:8d:d1:98:a9:8d:17:1f:
+         5d:5a:79:e8:7c:97:ab:40:bc:aa:7e:c4:0b:19:30:ad:18:aa:
+         9c:9b:eb:3f:35:d3:86:9c:3a:cc:e6:9a:2c:47:d1:bb:36:6e:
+         f2:c5:d4:e3:0c:5b:c6:eb:30:e6:0d:3a:4b:3a:a3:6b:62:93:
+         8b:6a:59:1f:48:66:2e:d9:70:14:b6:aa:4f:d1:3b:38:5e:e6:
+         79:7f:b7:00
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIGDWSfO0UqMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
+Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNjA4MzAxODMyMTVaFw0yNDExMTYxODMyMTVaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAMWHLvv1iIo5TGKIn/tKAhwnkp0LZaJwH9G33sgdhyhLnEvM9vZ8gx8tdr5B
+KV4x+iMMLX3LOMKLVI/8alBtx9evcvs7oadNxBvSDXV8kmKXSMToEsAAM2YOKBcP
+XDbWUHDsyJ+irrnr6xkF8FODQiquQB/6+3q3hkyraygLL3+BAgMBAAGjgZ4wgZsw
+LAYDVR0RBCUwI4IJbG9jYWxob3N0ggpsb2NhbGhvc3Qxggpsb2NhbGhvc3QyMAsG
+A1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQULE3dVIhZ
+P6Q0nONW/5UP4s5RIJUwHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84w
+CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAd83SF5GmS3DeeWoggqNWo9Bq
+uvd9bwBp0gYGC9rNSZ02/dDMvYrc4daJySMCihktFMrGBodmx/QyN5UN8accof5D
+TzsDA+IaxvyR1Q2gfoJgFDEvbbj0V5iNBHSjgihtHLTeGnC9/nOst5bsfJttZMb4
+ZznH6vSqSCa4FIXwAKuPvRqV4qdjkjUeNwTCcCwcVpWxg3CMmYgcim96og2E3U8O
+Pov7Mc+u7rDk9sGN0ZipjRcfXVp56HyXq0C8qn7ECxkwrRiqnJvrPzXThpw6zOaa
+LEfRuzZu8sXU4wxbxusw5g06Szqja2KTi2pZH0hmLtlwFLaqT9E7OF7meX+3AA==
+-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost-firstSAN-sv.csr b/tests/certs/Server-localhost-firstSAN-sv.csr
new file mode 100644
index 0000000..729034e
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.csr
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
+cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
+dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxYcu+/WIijlMYoif+0oC
+HCeSnQtlonAf0bfeyB2HKEucS8z29nyDHy12vkEpXjH6Iwwtfcs4wotUj/xqUG3H
+169y+zuhp03EG9INdXySYpdIxOgSwAAzZg4oFw9cNtZQcOzIn6KuuevrGQXwU4NC
+Kq5AH/r7ereGTKtrKAsvf4ECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBADlhAYRy
+2heMP/fGllGXW/uAEm2q6ubWhqgd3/5d+06LjTIs57qT/nwbr79e1PxholGWM+Zb
+/NGKZ4geZK0mJT/gnaJCyUsrjdp2KIEw9zmBoZyypJd/5Fhe1tzX0xwG40+3np9K
+orpp7wcILLeMho8+I4mNEzOJHidxy/9uia5U
+-----END CERTIFICATE REQUEST-----
diff --git a/tests/certs/Server-localhost-firstSAN-sv.der b/tests/certs/Server-localhost-firstSAN-sv.der
new file mode 100644
index 0000000..c878bfb
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.der
Binary files differ
diff --git a/tests/certs/Server-localhost-firstSAN-sv.dhp b/tests/certs/Server-localhost-firstSAN-sv.dhp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.dhp
diff --git a/tests/certs/Server-localhost-firstSAN-sv.key b/tests/certs/Server-localhost-firstSAN-sv.key
new file mode 100644
index 0000000..4903266
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQDFhy779YiKOUxiiJ/7SgIcJ5KdC2WicB/Rt97IHYcoS5xLzPb2
+fIMfLXa+QSleMfojDC19yzjCi1SP/GpQbcfXr3L7O6GnTcQb0g11fJJil0jE6BLA
+ADNmDigXD1w21lBw7Mifoq656+sZBfBTg0IqrkAf+vt6t4ZMq2soCy9/gQIDAQAB
+AoGAUjKXErJyR1LgvoAsUt3RUvYExOVhPd963kKtqojfHZ2ZRNHeU2QtDGRW7YUg
+OdqCRONkatyOmiZw4hogA6graJKiqKLvM/F4qRoLsxH9T/cSOIl9QjZVkUd1HV/Z
+iJluibPTewVyfoYzkq48GN+QIi//msYKBjI5Q2Yybn4WrgECQQDk/mDp4sAvuLXL
+NxaQKuDZA5TxU2u8GTItFqOoHneVFSJLE4O3kr7wh47O817mnljZfskZwVXBYx6R
+VbXsy8ZJAkEA3NLRFh8cR03CN+eYPi33JrUVRSrn8eAB5MNOaOdO4mT0pTAzfVfe
+g6rMDnK2n7WZzwf6YmvRVyppW2/kQjyPeQJAXoa3ILTuWoSn3owN71MT3+E/oWKr
+LUlFUiFvSx3QhSTlNBKJI8UatpVumPUTbqVczeMtRkltidfNrXaxE1+GqQJAW9WU
+vMVtZj3xUnyPNPS6vy85zE0ertmBEBklJ71icgaYM4aLM0pysIE8YZnVVzAX6iCg
+QYQjSEPMEwnCfMVgyQJAcWnk6HPLbJmUt+ZGGAcqzfycR6jMKFnm4st2Ld6JuDT2
+h2lb40Uma9gO+aXLIf+K9prCxb+7nR1M3qLwV4krkQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost-firstSAN-sv.pem b/tests/certs/Server-localhost-firstSAN-sv.pem
new file mode 100644
index 0000000..2b5ada5
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.pem
@@ -0,0 +1,120 @@
+extensions = x509v3
+[ x509v3 ]
+subjectAltName = DNS:localhost,DNS:localhost1,DNS:localhost2
+keyUsage	= keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage = serverAuth
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid
+basicConstraints = CA:false
+[ req ]
+default_bits                    = 1024
+distinguished_name              = req_DN
+default_md			= sha256
+string_mask			= utf8only
+[ req_DN ]
+countryName                     = "Country Name is Northern Nowhere"
+countryName_value            = NN
+organizationName              = "Organization Name"
+organizationName_value     = Edel Curl Arctic Illudium Research Cloud
+commonName                      = "Common Name"
+commonName_value              = localhost.nn
+
+[something]
+# The key
+# the certificate
+# some dhparam
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQDFhy779YiKOUxiiJ/7SgIcJ5KdC2WicB/Rt97IHYcoS5xLzPb2
+fIMfLXa+QSleMfojDC19yzjCi1SP/GpQbcfXr3L7O6GnTcQb0g11fJJil0jE6BLA
+ADNmDigXD1w21lBw7Mifoq656+sZBfBTg0IqrkAf+vt6t4ZMq2soCy9/gQIDAQAB
+AoGAUjKXErJyR1LgvoAsUt3RUvYExOVhPd963kKtqojfHZ2ZRNHeU2QtDGRW7YUg
+OdqCRONkatyOmiZw4hogA6graJKiqKLvM/F4qRoLsxH9T/cSOIl9QjZVkUd1HV/Z
+iJluibPTewVyfoYzkq48GN+QIi//msYKBjI5Q2Yybn4WrgECQQDk/mDp4sAvuLXL
+NxaQKuDZA5TxU2u8GTItFqOoHneVFSJLE4O3kr7wh47O817mnljZfskZwVXBYx6R
+VbXsy8ZJAkEA3NLRFh8cR03CN+eYPi33JrUVRSrn8eAB5MNOaOdO4mT0pTAzfVfe
+g6rMDnK2n7WZzwf6YmvRVyppW2/kQjyPeQJAXoa3ILTuWoSn3owN71MT3+E/oWKr
+LUlFUiFvSx3QhSTlNBKJI8UatpVumPUTbqVczeMtRkltidfNrXaxE1+GqQJAW9WU
+vMVtZj3xUnyPNPS6vy85zE0ertmBEBklJ71icgaYM4aLM0pysIE8YZnVVzAX6iCg
+QYQjSEPMEwnCfMVgyQJAcWnk6HPLbJmUt+ZGGAcqzfycR6jMKFnm4st2Ld6JuDT2
+h2lb40Uma9gO+aXLIf+K9prCxb+7nR1M3qLwV4krkQ==
+-----END RSA PRIVATE KEY-----
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 14725819352362 (0xd649f3b452a)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = Northern Nowhere Trust Anchor
+        Validity
+            Not Before: Aug 30 18:32:15 2016 GMT
+            Not After : Nov 16 18:32:15 2024 GMT
+        Subject:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = localhost.nn
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (1024 bit)
+                Modulus:
+                    00:c5:87:2e:fb:f5:88:8a:39:4c:62:88:9f:fb:4a:
+                    02:1c:27:92:9d:0b:65:a2:70:1f:d1:b7:de:c8:1d:
+                    87:28:4b:9c:4b:cc:f6:f6:7c:83:1f:2d:76:be:41:
+                    29:5e:31:fa:23:0c:2d:7d:cb:38:c2:8b:54:8f:fc:
+                    6a:50:6d:c7:d7:af:72:fb:3b:a1:a7:4d:c4:1b:d2:
+                    0d:75:7c:92:62:97:48:c4:e8:12:c0:00:33:66:0e:
+                    28:17:0f:5c:36:d6:50:70:ec:c8:9f:a2:ae:b9:eb:
+                    eb:19:05:f0:53:83:42:2a:ae:40:1f:fa:fb:7a:b7:
+                    86:4c:ab:6b:28:0b:2f:7f:81
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Subject Alternative Name: 
+                DNS:localhost, DNS:localhost1, DNS:localhost2
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment, Key Agreement
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+            X509v3 Subject Key Identifier: 
+                2C:4D:DD:54:88:59:3F:A4:34:9C:E3:56:FF:95:0F:E2:CE:51:20:95
+            X509v3 Authority Key Identifier: 
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
+
+            X509v3 Basic Constraints: 
+                CA:FALSE
+    Signature Algorithm: sha1WithRSAEncryption
+         77:cd:d2:17:91:a6:4b:70:de:79:6a:20:82:a3:56:a3:d0:6a:
+         ba:f7:7d:6f:00:69:d2:06:06:0b:da:cd:49:9d:36:fd:d0:cc:
+         bd:8a:dc:e1:d6:89:c9:23:02:8a:19:2d:14:ca:c6:06:87:66:
+         c7:f4:32:37:95:0d:f1:a7:1c:a1:fe:43:4f:3b:03:03:e2:1a:
+         c6:fc:91:d5:0d:a0:7e:82:60:14:31:2f:6d:b8:f4:57:98:8d:
+         04:74:a3:82:28:6d:1c:b4:de:1a:70:bd:fe:73:ac:b7:96:ec:
+         7c:9b:6d:64:c6:f8:67:39:c7:ea:f4:aa:48:26:b8:14:85:f0:
+         00:ab:8f:bd:1a:95:e2:a7:63:92:35:1e:37:04:c2:70:2c:1c:
+         56:95:b1:83:70:8c:99:88:1c:8a:6f:7a:a2:0d:84:dd:4f:0e:
+         3e:8b:fb:31:cf:ae:ee:b0:e4:f6:c1:8d:d1:98:a9:8d:17:1f:
+         5d:5a:79:e8:7c:97:ab:40:bc:aa:7e:c4:0b:19:30:ad:18:aa:
+         9c:9b:eb:3f:35:d3:86:9c:3a:cc:e6:9a:2c:47:d1:bb:36:6e:
+         f2:c5:d4:e3:0c:5b:c6:eb:30:e6:0d:3a:4b:3a:a3:6b:62:93:
+         8b:6a:59:1f:48:66:2e:d9:70:14:b6:aa:4f:d1:3b:38:5e:e6:
+         79:7f:b7:00
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIGDWSfO0UqMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
+Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNjA4MzAxODMyMTVaFw0yNDExMTYxODMyMTVaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAMWHLvv1iIo5TGKIn/tKAhwnkp0LZaJwH9G33sgdhyhLnEvM9vZ8gx8tdr5B
+KV4x+iMMLX3LOMKLVI/8alBtx9evcvs7oadNxBvSDXV8kmKXSMToEsAAM2YOKBcP
+XDbWUHDsyJ+irrnr6xkF8FODQiquQB/6+3q3hkyraygLL3+BAgMBAAGjgZ4wgZsw
+LAYDVR0RBCUwI4IJbG9jYWxob3N0ggpsb2NhbGhvc3Qxggpsb2NhbGhvc3QyMAsG
+A1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQULE3dVIhZ
+P6Q0nONW/5UP4s5RIJUwHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84w
+CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEAd83SF5GmS3DeeWoggqNWo9Bq
+uvd9bwBp0gYGC9rNSZ02/dDMvYrc4daJySMCihktFMrGBodmx/QyN5UN8accof5D
+TzsDA+IaxvyR1Q2gfoJgFDEvbbj0V5iNBHSjgihtHLTeGnC9/nOst5bsfJttZMb4
+ZznH6vSqSCa4FIXwAKuPvRqV4qdjkjUeNwTCcCwcVpWxg3CMmYgcim96og2E3U8O
+Pov7Mc+u7rDk9sGN0ZipjRcfXVp56HyXq0C8qn7ECxkwrRiqnJvrPzXThpw6zOaa
+LEfRuzZu8sXU4wxbxusw5g06Szqja2KTi2pZH0hmLtlwFLaqT9E7OF7meX+3AA==
+-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost-firstSAN-sv.pub.der b/tests/certs/Server-localhost-firstSAN-sv.pub.der
new file mode 100644
index 0000000..fb1b486
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.pub.der
Binary files differ
diff --git a/tests/certs/Server-localhost-firstSAN-sv.pub.pem b/tests/certs/Server-localhost-firstSAN-sv.pub.pem
new file mode 100644
index 0000000..ef14594
--- /dev/null
+++ b/tests/certs/Server-localhost-firstSAN-sv.pub.pem
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFhy779YiKOUxiiJ/7SgIcJ5Kd
+C2WicB/Rt97IHYcoS5xLzPb2fIMfLXa+QSleMfojDC19yzjCi1SP/GpQbcfXr3L7
+O6GnTcQb0g11fJJil0jE6BLAADNmDigXD1w21lBw7Mifoq656+sZBfBTg0IqrkAf
++vt6t4ZMq2soCy9/gQIDAQAB
+-----END PUBLIC KEY-----
diff --git a/tests/certs/Server-localhost-lastSAN-sv.crl b/tests/certs/Server-localhost-lastSAN-sv.crl
new file mode 100644
index 0000000..486bf92
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.crl
@@ -0,0 +1,14 @@
+-----BEGIN X509 CRL-----
+MIICDjCB9wIBATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJOTjExMC8GA1UE
+CgwoRWRlbCBDdXJsIEFyY3RpYyBJbGx1ZGl1bSBSZXNlYXJjaCBDbG91ZDEmMCQG
+A1UEAwwdTm9ydGhlcm4gTm93aGVyZSBUcnVzdCBBbmNob3IXDTE2MDgzMDE4MzI1
+N1oXDTE2MDkyOTE4MzI1N1owSzAXAgYNZJ8o86IXDTE2MDgzMDE4MzAxNVowFwIG
+DWSfO0UqFw0xNjA4MzAxODMyMTVaMBcCBg1kn0GuixcNMTYwODMwMTgzMjU3WqAO
+MAwwCgYDVR0UBAMCAQEwDQYJKoZIhvcNAQEFBQADggEBAE0v3zGBeKKuODAUugh7
+l6bJi7Cs0CDhuBJ8wCpwL5XRGwWhYChJtEXWFUKLBhMarIPYKEv3f3rd8gtFII/8
+wmnxoTL6eXZNL+FpHkZJ+blsHi73G7xzpB6kdFHIxI4tixwiUCe85u6WIRWkIEBs
+kyPPAgbnosF37umQfEaBrweVy+EztrYw8jgd0oDBybQp25p7Noa0N4uDoDInuOgP
+A7Q1Zf0ndWjrlEQtjMAUdA6blGKlb8BjMPtX50mbXuXctLeICns8TVUSQSiKU+oR
+1QTgbkl+AfdaFlfNAum4a42bCLyeBQ/O31NydZbCE8o2q9PqPepAkL9dXhMLiK/a
+tjA=
+-----END X509 CRL-----
diff --git a/tests/certs/Server-localhost-lastSAN-sv.crt b/tests/certs/Server-localhost-lastSAN-sv.crt
new file mode 100644
index 0000000..a6d8ae9
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.crt
@@ -0,0 +1,80 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 14725819772555 (0xd649f41ae8b)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = Northern Nowhere Trust Anchor
+        Validity
+            Not Before: Aug 30 18:32:57 2016 GMT
+            Not After : Nov 16 18:32:57 2024 GMT
+        Subject:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = localhost.nn
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (1024 bit)
+                Modulus:
+                    00:a3:2a:75:d7:bf:75:41:40:be:42:b8:b9:00:28:
+                    f1:45:29:55:bc:36:ca:a6:b7:86:93:97:25:84:aa:
+                    c9:80:ac:41:d9:28:fb:b0:68:4b:5b:ee:bd:94:83:
+                    da:2b:f6:cc:cc:11:df:fb:48:e6:e9:d5:97:41:7f:
+                    9a:0d:b7:87:96:12:22:41:2a:7f:95:8a:14:d6:6c:
+                    4b:34:df:18:29:01:0d:b2:3c:4d:c8:c4:5e:87:fa:
+                    9f:aa:ee:a4:73:e9:bb:74:57:85:24:2a:51:e4:43:
+                    5c:4b:97:51:52:b9:82:6e:9c:ce:ae:0f:91:45:25:
+                    f9:b4:24:66:8e:47:1f:d7:d5
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Subject Alternative Name: 
+                DNS:localhost1, DNS:localhost2, DNS:localhost
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment, Key Agreement
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+            X509v3 Subject Key Identifier: 
+                2C:CF:E3:6E:08:F9:CE:9B:98:3B:B3:17:7F:0C:9D:E4:5B:1B:76:8A
+            X509v3 Authority Key Identifier: 
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
+
+            X509v3 Basic Constraints: 
+                CA:FALSE
+    Signature Algorithm: sha1WithRSAEncryption
+         2e:3d:c1:a2:a7:e4:70:f8:a8:13:86:c3:af:22:1f:e9:e1:62:
+         f4:cf:16:66:a8:3b:70:f6:12:30:be:fe:8e:44:1b:71:b5:c1:
+         e0:4b:66:c4:5d:d4:d7:7d:49:43:4a:6d:22:1b:ce:3d:e3:14:
+         14:b3:6d:3a:93:39:0c:9b:2c:83:35:1d:7e:7c:29:29:3c:51:
+         6b:27:c3:5b:2d:f2:61:18:f8:c7:90:be:3b:68:3f:08:9b:ac:
+         68:01:d2:0c:ec:aa:5d:9e:78:b7:8b:84:04:01:b2:08:ef:df:
+         0c:f2:29:99:fe:61:d1:65:80:aa:ef:df:8e:28:55:a6:f9:88:
+         0c:01:bb:fc:1c:9e:9c:08:8d:c5:34:24:91:c1:ac:71:22:e1:
+         12:78:e0:45:d5:e2:39:c4:3c:16:09:80:d0:5b:bc:49:0a:4c:
+         a3:5b:e1:36:40:ed:26:6d:8d:a0:d3:4a:3c:86:93:2f:d4:0a:
+         3c:72:08:62:d7:66:d0:b3:05:c2:0f:1d:af:3c:65:67:f2:6c:
+         76:a5:9c:37:ac:c4:ac:96:b7:e4:c0:ef:a4:5b:28:1e:16:09:
+         15:f6:7b:bb:5d:a2:94:9a:df:52:7b:ae:c9:39:f4:18:9e:84:
+         57:6c:d3:6d:ae:35:38:8f:8f:9b:0d:df:77:69:ae:25:ec:ce:
+         d0:2b:bd:8d
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIGDWSfQa6LMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
+Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNjA4MzAxODMyNTdaFw0yNDExMTYxODMyNTdaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAKMqdde/dUFAvkK4uQAo8UUpVbw2yqa3hpOXJYSqyYCsQdko+7BoS1vuvZSD
+2iv2zMwR3/tI5unVl0F/mg23h5YSIkEqf5WKFNZsSzTfGCkBDbI8TcjEXof6n6ru
+pHPpu3RXhSQqUeRDXEuXUVK5gm6czq4PkUUl+bQkZo5HH9fVAgMBAAGjgZ4wgZsw
+LAYDVR0RBCUwI4IKbG9jYWxob3N0MYIKbG9jYWxob3N0MoIJbG9jYWxob3N0MAsG
+A1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQULM/jbgj5
+zpuYO7MXfwyd5FsbdoowHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84w
+CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEALj3BoqfkcPioE4bDryIf6eFi
+9M8WZqg7cPYSML7+jkQbcbXB4EtmxF3U131JQ0ptIhvOPeMUFLNtOpM5DJssgzUd
+fnwpKTxRayfDWy3yYRj4x5C+O2g/CJusaAHSDOyqXZ54t4uEBAGyCO/fDPIpmf5h
+0WWAqu/fjihVpvmIDAG7/ByenAiNxTQkkcGscSLhEnjgRdXiOcQ8FgmA0Fu8SQpM
+o1vhNkDtJm2NoNNKPIaTL9QKPHIIYtdm0LMFwg8drzxlZ/JsdqWcN6zErJa35MDv
+pFsoHhYJFfZ7u12ilJrfUnuuyTn0GJ6EV2zTba41OI+Pmw3fd2muJezO0Cu9jQ==
+-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost-lastSAN-sv.csr b/tests/certs/Server-localhost-lastSAN-sv.csr
new file mode 100644
index 0000000..bf63555
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.csr
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCTk4xMTAvBgNVBAoMKEVkZWwgQ3VybCBB
+cmN0aWMgSWxsdWRpdW0gUmVzZWFyY2ggQ2xvdWQxFTATBgNVBAMMDGxvY2FsaG9z
+dC5ubjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAoyp11791QUC+Qri5ACjx
+RSlVvDbKpreGk5clhKrJgKxB2Sj7sGhLW+69lIPaK/bMzBHf+0jm6dWXQX+aDbeH
+lhIiQSp/lYoU1mxLNN8YKQENsjxNyMReh/qfqu6kc+m7dFeFJCpR5ENcS5dRUrmC
+bpzOrg+RRSX5tCRmjkcf19UCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBACoIAlf0
+hSnZJOBBt7FS7iXlNRyKZAD881jhHFux+Gxq3gtbJsP57c+ALZ3MswjjUXW0Iq11
+IZLeZQGCAHYp4/GuTHbaq0qo1LjgpTqgQfwEB3BqNGs6yJiST+3risgawFbfqEDY
+LCm7rs/yyaOdMjwdwrUMciSv5KtlXZ1VThyt
+-----END CERTIFICATE REQUEST-----
diff --git a/tests/certs/Server-localhost-lastSAN-sv.der b/tests/certs/Server-localhost-lastSAN-sv.der
new file mode 100644
index 0000000..5ffa9ce
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.der
Binary files differ
diff --git a/tests/certs/Server-localhost-lastSAN-sv.dhp b/tests/certs/Server-localhost-lastSAN-sv.dhp
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.dhp
diff --git a/tests/certs/Server-localhost-lastSAN-sv.key b/tests/certs/Server-localhost-lastSAN-sv.key
new file mode 100644
index 0000000..824ee6f
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.key
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQCjKnXXv3VBQL5CuLkAKPFFKVW8Nsqmt4aTlyWEqsmArEHZKPuw
+aEtb7r2Ug9or9szMEd/7SObp1ZdBf5oNt4eWEiJBKn+VihTWbEs03xgpAQ2yPE3I
+xF6H+p+q7qRz6bt0V4UkKlHkQ1xLl1FSuYJunM6uD5FFJfm0JGaORx/X1QIDAQAB
+AoGAaC2QGDSSNRuVXxx6YnPBuJrvtsB1G4VKU6nJtq8lARb65CCassOkegow2UZm
+YnOtxw4SqGqfpOVPMe66+c8Yrd+6zimC7VorxmfhNxqOO34bxzztKKk8Q7c+odl3
++c4aVnFBk2hzuOW4PuJoFfFNQZWmh/XJdKK85X+bkryS/oECQQDTdzwYyDxvrPaw
+ZeR5oDleopk5W5QwmBAq4ehtie1oZfhzlNZzPOjnI9I71MRYdCwkesKHL2k6q7cT
+jA4sSmx5AkEAxYc6+o8l0/HE8HzypWe/ZfozaY3ccIFzmvcwQorbCvAxDtZ1DbFy
+VWLOgM/6gwDIUDF6ckaInaVmiVJl60Y3PQJAZFBOuO7cBJoHWDytuqiwLl1x1EzG
+KpsoKD+MU9I3RewBhUrYxEfjsCpFA8716YQKoK9/ckOiZouoyGQLISWY+QJAG5id
+AMxm+Ilafk62h61K7DBcZm7PUViEki3erC1CFPEhqXUEvXkBBDTdrNlholPFqI6B
+EN4R0BR/ksfUPV598QJAF8jl/8gz8pmAWmqw8tKbWdQeDgisyTHeYlPMxq4fUbLH
+mJk05csSX9CTg4eO7NRRwPxODKmPCd88sZZSOuTQmQ==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/certs/Server-localhost-lastSAN-sv.pem b/tests/certs/Server-localhost-lastSAN-sv.pem
new file mode 100644
index 0000000..b563e0a
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.pem
@@ -0,0 +1,120 @@
+extensions = x509v3
+[ x509v3 ]
+subjectAltName = DNS:localhost1,DNS:localhost2,DNS:localhost
+keyUsage	= keyEncipherment,digitalSignature,keyAgreement
+extendedKeyUsage = serverAuth
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid
+basicConstraints = CA:false
+[ req ]
+default_bits                    = 1024
+distinguished_name              = req_DN
+default_md			= sha256
+string_mask			= utf8only
+[ req_DN ]
+countryName                     = "Country Name is Northern Nowhere"
+countryName_value            = NN
+organizationName              = "Organization Name"
+organizationName_value     = Edel Curl Arctic Illudium Research Cloud
+commonName                      = "Common Name"
+commonName_value              = localhost.nn
+
+[something]
+# The key
+# the certificate
+# some dhparam
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQCjKnXXv3VBQL5CuLkAKPFFKVW8Nsqmt4aTlyWEqsmArEHZKPuw
+aEtb7r2Ug9or9szMEd/7SObp1ZdBf5oNt4eWEiJBKn+VihTWbEs03xgpAQ2yPE3I
+xF6H+p+q7qRz6bt0V4UkKlHkQ1xLl1FSuYJunM6uD5FFJfm0JGaORx/X1QIDAQAB
+AoGAaC2QGDSSNRuVXxx6YnPBuJrvtsB1G4VKU6nJtq8lARb65CCassOkegow2UZm
+YnOtxw4SqGqfpOVPMe66+c8Yrd+6zimC7VorxmfhNxqOO34bxzztKKk8Q7c+odl3
++c4aVnFBk2hzuOW4PuJoFfFNQZWmh/XJdKK85X+bkryS/oECQQDTdzwYyDxvrPaw
+ZeR5oDleopk5W5QwmBAq4ehtie1oZfhzlNZzPOjnI9I71MRYdCwkesKHL2k6q7cT
+jA4sSmx5AkEAxYc6+o8l0/HE8HzypWe/ZfozaY3ccIFzmvcwQorbCvAxDtZ1DbFy
+VWLOgM/6gwDIUDF6ckaInaVmiVJl60Y3PQJAZFBOuO7cBJoHWDytuqiwLl1x1EzG
+KpsoKD+MU9I3RewBhUrYxEfjsCpFA8716YQKoK9/ckOiZouoyGQLISWY+QJAG5id
+AMxm+Ilafk62h61K7DBcZm7PUViEki3erC1CFPEhqXUEvXkBBDTdrNlholPFqI6B
+EN4R0BR/ksfUPV598QJAF8jl/8gz8pmAWmqw8tKbWdQeDgisyTHeYlPMxq4fUbLH
+mJk05csSX9CTg4eO7NRRwPxODKmPCd88sZZSOuTQmQ==
+-----END RSA PRIVATE KEY-----
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 14725819772555 (0xd649f41ae8b)
+    Signature Algorithm: sha1WithRSAEncryption
+        Issuer:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = Northern Nowhere Trust Anchor
+        Validity
+            Not Before: Aug 30 18:32:57 2016 GMT
+            Not After : Nov 16 18:32:57 2024 GMT
+        Subject:
+            countryName               = NN
+            organizationName          = Edel Curl Arctic Illudium Research Cloud
+            commonName                = localhost.nn
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (1024 bit)
+                Modulus:
+                    00:a3:2a:75:d7:bf:75:41:40:be:42:b8:b9:00:28:
+                    f1:45:29:55:bc:36:ca:a6:b7:86:93:97:25:84:aa:
+                    c9:80:ac:41:d9:28:fb:b0:68:4b:5b:ee:bd:94:83:
+                    da:2b:f6:cc:cc:11:df:fb:48:e6:e9:d5:97:41:7f:
+                    9a:0d:b7:87:96:12:22:41:2a:7f:95:8a:14:d6:6c:
+                    4b:34:df:18:29:01:0d:b2:3c:4d:c8:c4:5e:87:fa:
+                    9f:aa:ee:a4:73:e9:bb:74:57:85:24:2a:51:e4:43:
+                    5c:4b:97:51:52:b9:82:6e:9c:ce:ae:0f:91:45:25:
+                    f9:b4:24:66:8e:47:1f:d7:d5
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Subject Alternative Name: 
+                DNS:localhost1, DNS:localhost2, DNS:localhost
+            X509v3 Key Usage: 
+                Digital Signature, Key Encipherment, Key Agreement
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+            X509v3 Subject Key Identifier: 
+                2C:CF:E3:6E:08:F9:CE:9B:98:3B:B3:17:7F:0C:9D:E4:5B:1B:76:8A
+            X509v3 Authority Key Identifier: 
+                keyid:12:CA:BA:4B:46:04:A7:75:8A:2C:E8:0E:54:94:BC:12:65:A6:7B:CE
+
+            X509v3 Basic Constraints: 
+                CA:FALSE
+    Signature Algorithm: sha1WithRSAEncryption
+         2e:3d:c1:a2:a7:e4:70:f8:a8:13:86:c3:af:22:1f:e9:e1:62:
+         f4:cf:16:66:a8:3b:70:f6:12:30:be:fe:8e:44:1b:71:b5:c1:
+         e0:4b:66:c4:5d:d4:d7:7d:49:43:4a:6d:22:1b:ce:3d:e3:14:
+         14:b3:6d:3a:93:39:0c:9b:2c:83:35:1d:7e:7c:29:29:3c:51:
+         6b:27:c3:5b:2d:f2:61:18:f8:c7:90:be:3b:68:3f:08:9b:ac:
+         68:01:d2:0c:ec:aa:5d:9e:78:b7:8b:84:04:01:b2:08:ef:df:
+         0c:f2:29:99:fe:61:d1:65:80:aa:ef:df:8e:28:55:a6:f9:88:
+         0c:01:bb:fc:1c:9e:9c:08:8d:c5:34:24:91:c1:ac:71:22:e1:
+         12:78:e0:45:d5:e2:39:c4:3c:16:09:80:d0:5b:bc:49:0a:4c:
+         a3:5b:e1:36:40:ed:26:6d:8d:a0:d3:4a:3c:86:93:2f:d4:0a:
+         3c:72:08:62:d7:66:d0:b3:05:c2:0f:1d:af:3c:65:67:f2:6c:
+         76:a5:9c:37:ac:c4:ac:96:b7:e4:c0:ef:a4:5b:28:1e:16:09:
+         15:f6:7b:bb:5d:a2:94:9a:df:52:7b:ae:c9:39:f4:18:9e:84:
+         57:6c:d3:6d:ae:35:38:8f:8f:9b:0d:df:77:69:ae:25:ec:ce:
+         d0:2b:bd:8d
+-----BEGIN CERTIFICATE-----
+MIIDWjCCAkKgAwIBAgIGDWSfQa6LMA0GCSqGSIb3DQEBBQUAMGgxCzAJBgNVBAYT
+Ak5OMTEwLwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNo
+IENsb3VkMSYwJAYDVQQDDB1Ob3J0aGVybiBOb3doZXJlIFRydXN0IEFuY2hvcjAe
+Fw0xNjA4MzAxODMyNTdaFw0yNDExMTYxODMyNTdaMFcxCzAJBgNVBAYTAk5OMTEw
+LwYDVQQKDChFZGVsIEN1cmwgQXJjdGljIElsbHVkaXVtIFJlc2VhcmNoIENsb3Vk
+MRUwEwYDVQQDDAxsb2NhbGhvc3Qubm4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
+AoGBAKMqdde/dUFAvkK4uQAo8UUpVbw2yqa3hpOXJYSqyYCsQdko+7BoS1vuvZSD
+2iv2zMwR3/tI5unVl0F/mg23h5YSIkEqf5WKFNZsSzTfGCkBDbI8TcjEXof6n6ru
+pHPpu3RXhSQqUeRDXEuXUVK5gm6czq4PkUUl+bQkZo5HH9fVAgMBAAGjgZ4wgZsw
+LAYDVR0RBCUwI4IKbG9jYWxob3N0MYIKbG9jYWxob3N0MoIJbG9jYWxob3N0MAsG
+A1UdDwQEAwIDqDATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4EFgQULM/jbgj5
+zpuYO7MXfwyd5FsbdoowHwYDVR0jBBgwFoAUEsq6S0YEp3WKLOgOVJS8EmWme84w
+CQYDVR0TBAIwADANBgkqhkiG9w0BAQUFAAOCAQEALj3BoqfkcPioE4bDryIf6eFi
+9M8WZqg7cPYSML7+jkQbcbXB4EtmxF3U131JQ0ptIhvOPeMUFLNtOpM5DJssgzUd
+fnwpKTxRayfDWy3yYRj4x5C+O2g/CJusaAHSDOyqXZ54t4uEBAGyCO/fDPIpmf5h
+0WWAqu/fjihVpvmIDAG7/ByenAiNxTQkkcGscSLhEnjgRdXiOcQ8FgmA0Fu8SQpM
+o1vhNkDtJm2NoNNKPIaTL9QKPHIIYtdm0LMFwg8drzxlZ/JsdqWcN6zErJa35MDv
+pFsoHhYJFfZ7u12ilJrfUnuuyTn0GJ6EV2zTba41OI+Pmw3fd2muJezO0Cu9jQ==
+-----END CERTIFICATE-----
diff --git a/tests/certs/Server-localhost-lastSAN-sv.pub.der b/tests/certs/Server-localhost-lastSAN-sv.pub.der
new file mode 100644
index 0000000..06fe6d0
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.pub.der
Binary files differ
diff --git a/tests/certs/Server-localhost-lastSAN-sv.pub.pem b/tests/certs/Server-localhost-lastSAN-sv.pub.pem
new file mode 100644
index 0000000..a8e2dd4
--- /dev/null
+++ b/tests/certs/Server-localhost-lastSAN-sv.pub.pem
@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCjKnXXv3VBQL5CuLkAKPFFKVW8
+Nsqmt4aTlyWEqsmArEHZKPuwaEtb7r2Ug9or9szMEd/7SObp1ZdBf5oNt4eWEiJB
+Kn+VihTWbEs03xgpAQ2yPE3IxF6H+p+q7qRz6bt0V4UkKlHkQ1xLl1FSuYJunM6u
+D5FFJfm0JGaORx/X1QIDAQAB
+-----END PUBLIC KEY-----
diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index 9635d12..12373ba 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -55,8 +55,11 @@
 test289 test290 test291 test292 test293 test294 test295 test296 test297 \
 test298 test299 test300 test301 test302 test303 test304 test305 test306 \
 test307 test308 test309 test310 test311 test312 test313 test314 test315 \
-test316 test317 test318         test320 test321 test322 test323 test324 \
-test325 \
+test316 test317 test318 test319 test320 test321 test322 test323 test324 \
+test325 test326 \
+\
+test340 \
+\
 test350 test351 test352 test353 test354 \
 test393 test394 test395 \
 \
@@ -80,7 +83,7 @@
 test626 test627 test628 test629 test630 test631 test632 test633 test634 \
 test635 test636 test637 test638 test639 test640 test641 test642 \
 test643 test644 test645 test646 test647 test648 test649 test650 test651 \
-test652 test653 test654 \
+test652 test653 test654 test655 \
 \
 test700 test701 test702 test703 test704 test705 test706 test707 test708 \
 test709 test710 test711 test712 test713 test714 test715 \
@@ -103,7 +106,7 @@
 test918 test919 test920 test921 test922 test923 test924 test925 test926 \
 test927 test928 test929 test930 test931 test932 test933 test934 test935 \
 test936 test937 test938 test939 test940 test941 test942 test943 test944 \
-test945 test946 test947 test948 test949 test950 \
+test945 test946 test947 test948 test949 test950 test951 test952 \
 \
 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 \
 test1008 test1009 test1010 test1011 test1012 test1013 test1014 test1015 \
@@ -124,9 +127,10 @@
 test1128 test1129 test1130 test1131 test1132 test1133 test1134 test1135 \
 test1136 test1137 test1138 test1139 test1140 test1141 test1142 test1143 \
 test1144 test1145 test1146 test1147 test1148 test1149 test1150 test1151 \
-test1152 test1153 \
+test1152 test1153 test1154 test1155 \
 \
-test1160 test1161 test1162 test1163 \
+test1160 test1161 test1162 test1163 test1164 \
+test1170 test1171 \
 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
 test1208 test1209 test1210 test1211 test1212 test1213 test1214 test1215 \
 test1216 test1217 test1218 test1219 \
@@ -135,10 +139,10 @@
 test1236 test1237 test1238 test1239 test1240 test1241 test1242 test1243 \
 test1244 test1245 test1246 test1247 test1248 test1249 test1250 test1251 \
 test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 \
-test1260 test1261 test1262 test1263 test1264 \
+test1260 test1261 test1262 test1263 test1264 test1265 \
 \
 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 \
-test1288 test1289 test1290 test1291 \
+test1288 test1289 test1290 test1291 test1292 \
 test1298 test1299 \
 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 \
 test1308 test1309 test1310 test1311 test1312 test1313 test1314 test1315 \
@@ -161,7 +165,7 @@
 test1428 test1429 test1430 test1431 test1432 test1433 test1434 test1435 \
 test1436 test1437 test1438 test1439 test1440 test1441 test1442 test1443 \
 test1444 test1445 test1446 test1447 test1448 test1449 test1450 test1451 \
-test1452 test1453 test1454 \
+test1452 test1453 test1454 test1455 test1456 \
 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
 test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
 test1516 test1517 \
@@ -171,8 +175,9 @@
 test1525 test1526 test1527 test1528 test1529 test1530 test1531 test1532 \
 test1533 test1534 test1535 test1536 test1537 test1538 \
 test1540 \
-test1550 test1551 test1552 test1553 test1554 \
-test1600 test1601 test1602 test1603 test1604 test1605 test1606 \
+test1550 test1551 test1552 test1553 test1554 test1555 test1556 \
+test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 \
+test1608 \
 \
 test1700 test1701 test1702 \
 \
@@ -190,4 +195,6 @@
 test2056 test2057 test2058 test2059 test2060 test2061 test2062 test2063 \
 test2064 test2065 test2066 test2067 test2068 test2069 \
 \
-test2070 test2071 test2072 test2073
+test2070 test2071 test2072 test2073 \
+\
+test3000 test3001
diff --git a/tests/data/test1026 b/tests/data/test1026
index e47b12a..bd5dc9c 100644
--- a/tests/data/test1026
+++ b/tests/data/test1026
@@ -13,6 +13,9 @@
 #
 # Client-side
 <client>
+<features>
+manual
+</features>
 <server>
 none
 </server>
diff --git a/tests/data/test1108 b/tests/data/test1108
index 7b779e1..f83eb95 100644
--- a/tests/data/test1108
+++ b/tests/data/test1108
@@ -11,7 +11,7 @@
 <reply>
 
 <servercmd>
-REPLY PRET 550 unkown command
+REPLY PRET 550 unknown command
 </servercmd>
 </reply>
 
diff --git a/tests/data/test1136 b/tests/data/test1136
index d3327e8..2030bd2 100644
--- a/tests/data/test1136
+++ b/tests/data/test1136
@@ -56,8 +56,8 @@
 # https://curl.haxx.se/docs/http-cookies.html
 # This file was generated by libcurl! Edit at your own risk.
 
-.www.example.ck	TRUE	/	FALSE	0	test2	allowed2
 .www.ck	TRUE	/	FALSE	0	test4	allowed4
+.www.example.ck	TRUE	/	FALSE	0	test2	allowed2
 .z-1.compute-1.amazonaws.com	TRUE	/	FALSE	0	test5	forbidden5
 </file>
 </verify>
diff --git a/tests/data/test1148 b/tests/data/test1148
index 52f6c7e..f483bcd 100644
--- a/tests/data/test1148
+++ b/tests/data/test1148
Binary files differ
diff --git a/tests/data/test1154 b/tests/data/test1154
new file mode 100644
index 0000000..cb056d1
--- /dev/null
+++ b/tests/data/test1154
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 6
+Connection: close
+Long: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
+-foo-
+</data>
+<datacheck>
+</datacheck>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1154
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1154 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+# 27 == CURLE_OUT_OF_MEMORY
+<errorcode>
+27
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test1155 b/tests/data/test1155
new file mode 100644
index 0000000..0eae2a9
--- /dev/null
+++ b/tests/data/test1155
@@ -0,0 +1,54 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+cookies
+</keywords>
+</info>
+
+# Server-side
+<reply>
+
+<data>
+HTTP/1.1 200 OK

+Date: Thu, 09 Nov 2010 14:49:00 GMT

+Content-Length: 0

+Set-Cookie: domain=value;secure;path=/
+

+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP cookie with parameter word as name
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1155 -c log/cookies1155.txt
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1155 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+<file name="log/cookies1155.txt">
+# Netscape HTTP Cookie File
+# https://curl.haxx.se/docs/http-cookies.html
+# This file was generated by libcurl! Edit at your own risk.
+
+127.0.0.1	FALSE	/	TRUE	0	domain	value
+</file>
+</verify>
+</testcase>
diff --git a/tests/data/test1164 b/tests/data/test1164
new file mode 100644
index 0000000..061e395
--- /dev/null
+++ b/tests/data/test1164
@@ -0,0 +1,52 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+# perl -e 'print "swsclose" . "\0" x 200;' | base64
+# 'swsclose' is there to force server to close after send
+<data nocheck="yes" base64="yes">
+c3dzY2xvc2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP/0.9 GET and all zeroes
+ </name>
+ <command option="force-output">
+http://%HOSTIP:%HTTPPORT/1164 -w '%{size_download}\n'
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1164 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+<stdout>
+208
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1170 b/tests/data/test1170
new file mode 100644
index 0000000..a4d9eb8
--- /dev/null
+++ b/tests/data/test1170
@@ -0,0 +1,70 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+compressed
+Transfer-Encoding
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data base64="yes">
+SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBNb24sIDI5IE5vdiAyMDA0IDIxOjU2OjUzIEdNVA0KU2Vy
+dmVyOiBBcGFjaGUvMS4zLjMxIChEZWJpYW4gR05VL0xpbnV4KSBtb2RfZ3ppcC8xLjMuMjYuMWEg
+UEhQLzQuMy45LTEgbW9kX3NzbC8yLjguMjAgT3BlblNTTC8wLjkuN2QgbW9kX3BlcmwvMS4yOQ0K
+VmFyeTogQWNjZXB0LUVuY29kaW5nDQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1J
+U08tODg1OS0xDQpUcmFuc2Zlci1FbmNvZGluZzogZ3ppcA0KQ29udGVudC1MZW5ndGg6IDQ0DQoN
+Ch+LCAh5nqtBAANsYWxhbGEAy8nMS1Uw5FLIAdFGXAoQhjEXAAoCcWAYAAAA
+</data>
+
+<datacheck>
+HTTP/1.1 200 OK

+Date: Mon, 29 Nov 2004 21:56:53 GMT

+Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29

+Vary: Accept-Encoding

+Content-Type: text/html; charset=ISO-8859-1

+Transfer-Encoding: gzip

+Content-Length: 44

+

+line 1
+ line 2
+  line 3
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+libz
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP GET transfer-encoding with removed Connection:
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1170 --tr-encoding -H "Connection:"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1170 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+Connection: TE

+TE: gzip

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1171 b/tests/data/test1171
new file mode 100644
index 0000000..0f7ee90
--- /dev/null
+++ b/tests/data/test1171
@@ -0,0 +1,70 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+compressed
+Transfer-Encoding
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data base64="yes">
+SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBNb24sIDI5IE5vdiAyMDA0IDIxOjU2OjUzIEdNVA0KU2Vy
+dmVyOiBBcGFjaGUvMS4zLjMxIChEZWJpYW4gR05VL0xpbnV4KSBtb2RfZ3ppcC8xLjMuMjYuMWEg
+UEhQLzQuMy45LTEgbW9kX3NzbC8yLjguMjAgT3BlblNTTC8wLjkuN2QgbW9kX3BlcmwvMS4yOQ0K
+VmFyeTogQWNjZXB0LUVuY29kaW5nDQpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1J
+U08tODg1OS0xDQpUcmFuc2Zlci1FbmNvZGluZzogZ3ppcA0KQ29udGVudC1MZW5ndGg6IDQ0DQoN
+Ch+LCAh5nqtBAANsYWxhbGEAy8nMS1Uw5FLIAdFGXAoQhjEXAAoCcWAYAAAA
+</data>
+
+<datacheck>
+HTTP/1.1 200 OK

+Date: Mon, 29 Nov 2004 21:56:53 GMT

+Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29

+Vary: Accept-Encoding

+Content-Type: text/html; charset=ISO-8859-1

+Transfer-Encoding: gzip

+Content-Length: 44

+

+line 1
+ line 2
+  line 3
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+libz
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP GET transfer-encoding with blanked Connection:
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1171 --tr-encoding -H "Connection;"
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1171 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+Connection: TE

+TE: gzip

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1208 b/tests/data/test1208
index 504f6c7..b4545b5 100644
--- a/tests/data/test1208
+++ b/tests/data/test1208
@@ -5,6 +5,7 @@
 PORT
 RETR
 NODATACONN150
+flaky
 </keywords>
 </info>
 # Server-side
diff --git a/tests/data/test1209 b/tests/data/test1209
index 7086829..76bce5f 100644
--- a/tests/data/test1209
+++ b/tests/data/test1209
@@ -39,7 +39,7 @@
 
 # The protocol part does not include QUIT simply because the error is
 # CURLE_OPERATION_TIMEDOUT (28) which is a generic timeout error without
-# specificly saying for which connection it concerns, and for timeouts libcurl
+# specifically saying for which connection it concerns, and for timeouts libcurl
 # marks the control channel as "invalid". As this test case times out for the
 # data connection it could still use the control channel.
 <protocol>
diff --git a/tests/data/test1265 b/tests/data/test1265
new file mode 100644
index 0000000..5d3ef6d
--- /dev/null
+++ b/tests/data/test1265
@@ -0,0 +1,53 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP proxy
+NO_PROXY
+noproxy
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 4
+Content-Type: text/html
+
+foo
+</data>
+</reply>
+
+# Client-side
+<client>
+<server>
+http-ipv6
+</server>
+<name>
+NO_PROXY with IPv6 numerical address
+</name>
+<setenv>
+http_proxy=http://%HOSTIP:%HTTPPORT
+NO_PROXY=::1
+</setenv>
+<command>
+http://%HOST6IP:%HTTP6PORT/1265
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1265 HTTP/1.1

+Host: %HOST6IP:%HTTP6PORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1292 b/tests/data/test1292
new file mode 100644
index 0000000..880a4b4
--- /dev/null
+++ b/tests/data/test1292
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+HTTP added headers
+HTTP replaced headers
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake swsclose
+Content-Type: text/html
+Funny-head: yesyes
+
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+Replaced internal headers with a blank one
+ </name>
+ <command>
+ -H "Host;" -H "Accept;" http://%HOSTIP:%HTTPPORT/1292
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1292 HTTP/1.1

+Host:

+Accept:

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1455 b/tests/data/test1455
new file mode 100644
index 0000000..7768a1f
--- /dev/null
+++ b/tests/data/test1455
@@ -0,0 +1,56 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply name="1455">
+<data nocheck=yes>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: barkbark
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<name>
+HTTP GET when PROXY Protocol enabled
+</name>
+<command>
+http://%HOSTIP:%HTTPPORT/1455 --haproxy-protocol --local-port 37756
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+PROXY TCP4 %CLIENTIP %HOSTIP 37756 %HTTPPORT

+GET /1455 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1456 b/tests/data/test1456
new file mode 100644
index 0000000..07a6e7c
--- /dev/null
+++ b/tests/data/test1456
@@ -0,0 +1,59 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+IPv6
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data nocheck=yes>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+ipv6
+</features>
+<server>
+http-ipv6
+</server>
+ <name>
+HTTP-IPv6 GET with PROXY protocol
+ </name>
+ <command>
+-g "http://%HOST6IP:%HTTP6PORT/1456" --local-port 44444 --haproxy-protocol
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:
+</strip>
+<protocol>
+PROXY TCP6 ::1 ::1 44444 %HTTP6PORT

+GET /1456 HTTP/1.1

+Host: %HOST6IP:%HTTP6PORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test1538 b/tests/data/test1538
index 25b39a6..b084dac 100644
--- a/tests/data/test1538
+++ b/tests/data/test1538
@@ -125,7 +125,8 @@
 e90: SSL public key does not match pinned public key
 e91: SSL server certificate status verification FAILED
 e92: Stream error in the HTTP/2 framing layer
-e93: Unknown error
+e93: API function called from within callback
+e94: Unknown error
 m-1: Please call curl_multi_perform() soon
 m0: No error
 m1: Invalid multi handle
@@ -135,7 +136,8 @@
 m5: Invalid socket argument
 m6: Unknown option
 m7: The easy handle is already added to a multi handle
-m8: Unknown error
+m8: API function called from within callback
+m9: Unknown error
 s0: No error
 s1: Unknown share option
 s2: Share currently in use
diff --git a/tests/data/test155 b/tests/data/test155
index b6451ec..9bdc841 100644
--- a/tests/data/test155
+++ b/tests/data/test155
@@ -39,7 +39,7 @@
 # This is supposed to be returned when the server gets the second
 # Authorization: NTLM line passed-in from the client
 <data1002>
-HTTP/1.1 200 Type-3 Recevied and all Things are fine swsclose

+HTTP/1.1 200 Type-3 Received and all Things are fine swsclose

 Server: Microsoft-IIS/5.0

 Content-Type: text/html; charset=iso-8859-1

 Content-Length: 32

@@ -62,7 +62,7 @@
 Content-Type: text/html; charset=iso-8859-1

 WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAgACADAAAAAGgoEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA==

 

-HTTP/1.1 200 Type-3 Recevied and all Things are fine swsclose

+HTTP/1.1 200 Type-3 Received and all Things are fine swsclose

 Server: Microsoft-IIS/5.0

 Content-Type: text/html; charset=iso-8859-1

 Content-Length: 32

diff --git a/tests/data/test1555 b/tests/data/test1555
new file mode 100644
index 0000000..19512c5
--- /dev/null
+++ b/tests/data/test1555
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+RECURSIVE_API_CALL
+</keywords>
+</info>
+
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 204 PARTIAL

+X-Comment: partial response to keep the client waiting

+</data>
+<postcmd>
+wait 10
+</postcmd>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+<tool>
+lib1555
+</tool>
+ <name>
+verify api is protected against calls from callbacks
+ </name>
+
+# this server/host won't be used for real
+ <command>
+http://%HOSTIP:%HTTPPORT/1555
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+</protocol>
+# 42 == CURLE_ABORTED_BY_CALLBACK
+<errorcode>
+42
+</errorcode>
+<stdout>
+curl_easy_recv returned 93
+curl_easy_send returned 93
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1556 b/tests/data/test1556
new file mode 100644
index 0000000..0f99abd
--- /dev/null
+++ b/tests/data/test1556
@@ -0,0 +1,63 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data nocheck="yes">
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+Long: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
+-foo-
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+<tool>
+lib1556
+</tool>
+ <name>
+send long HTTP headers to header callback
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/1556
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /1556 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+<stdout>
+-foo-
+Max: 100008
+</stdout>
+</verify>
+</testcase>
diff --git a/tests/data/test1607 b/tests/data/test1607
new file mode 100644
index 0000000..9628324
--- /dev/null
+++ b/tests/data/test1607
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+CURLOPT_RESOLVE
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+CURLOPT_RESOLVE parsing
+ </name>
+<tool>
+unit1607
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test1608 b/tests/data/test1608
new file mode 100644
index 0000000..7023107
--- /dev/null
+++ b/tests/data/test1608
@@ -0,0 +1,26 @@
+<testcase>
+<info>
+<keywords>
+unittest
+curlopt_dns_shuffle_addresses
+</keywords>
+</info>
+
+#
+# Client-side
+<client>
+<server>
+none
+</server>
+<features>
+unittest
+</features>
+ <name>
+verify DNS shuffling
+ </name>
+<tool>
+unit1608
+</tool>
+</client>
+
+</testcase>
diff --git a/tests/data/test2072 b/tests/data/test2072
index 2949c25..0d2489f 100644
--- a/tests/data/test2072
+++ b/tests/data/test2072
@@ -6,6 +6,13 @@
 </info>
 
 <reply>
+<data>
+foo
+   bar
+bar
+   foo
+moo
+</data>
 </reply>
 
 # Client-side
@@ -14,12 +21,15 @@
 file
 </server>
 <name>
-file:// with SMB path
+file:// with unix path resolution behavior for the case of extra slashes
 </name>
 <command>
-file:////bad-host%PWD/log/test1145.txt
+file:////%PWD/log/test2072.txt
 </command>
-<file name="log/test1145.txt">
+<precheck>
+perl -e "print 'Test requires a unix system' if ( $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O eq 'dos');"
+</precheck>
+<file name="log/test2072.txt">
 foo
    bar
 bar
@@ -30,9 +40,5 @@
 
 # Verify data after the test has been "shot"
 <verify>
-# CURLE_URL_MALFORMAT is error code 3
-<errorcode>
-3
-</errorcode>
 </verify>
 </testcase>
diff --git a/tests/data/test3000 b/tests/data/test3000
new file mode 100644
index 0000000..e62e531
--- /dev/null
+++ b/tests/data/test3000
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+
+MooMoo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+</features>
+<server>
+https Server-localhost-firstSAN-sv.pem
+</server>
+<name>
+HTTPS GET to localhost, first subject alt name matches, CN does not match
+</name>
+<command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/3000
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /3000 HTTP/1.1

+Host: localhost:%HTTPSPORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test3001 b/tests/data/test3001
new file mode 100644
index 0000000..706c3f7
--- /dev/null
+++ b/tests/data/test3001
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTPS
+HTTP GET
+PEM certificate
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Content-Length: 7
+
+MooMoo
+</data>
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+SSL
+</features>
+<server>
+https Server-localhost-lastSAN-sv.pem
+</server>
+<name>
+HTTPS GET to localhost, last subject alt name matches, CN does not match
+</name>
+<command>
+--cacert %SRCDIR/certs/EdelCurlRoot-ca.crt https://localhost:%HTTPSPORT/3001
+</command>
+# Ensure that we're running on localhost because we're checking the host name
+<precheck>
+perl -e "print 'Test requires default test server host' if ( '%HOSTIP' ne '127.0.0.1' );"
+</precheck>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /3001 HTTP/1.1

+Host: localhost:%HTTPSPORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test319 b/tests/data/test319
new file mode 100644
index 0000000..6a61a14
--- /dev/null
+++ b/tests/data/test319
@@ -0,0 +1,57 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+compressed
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data base64="yes">
+SFRUUC8xLjEgMjAwIE9LDQpEYXRlOiBNb24sIDI5IE5vdiAyMDA0IDIxOjU2OjUzIEdNVA0KU2Vy
+dmVyOiBBcGFjaGUvMS4zLjMxIChEZWJpYW4gR05VL0xpbnV4KSBtb2RfZ3ppcC8xLjMuMjYuMWEg
+UEhQLzQuMy45LTEgbW9kX3NzbC8yLjguMjAgT3BlblNTTC8wLjkuN2QgbW9kX3BlcmwvMS4yOQ0K
+Q29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQ0KVHJhbnNmZXItRW5j
+b2Rpbmc6IGd6aXANCkNvbnRlbnQtTGVuZ3RoOiA0NA0KDQofiwgIeZ6rQQADbGFsYWxhAMvJzEtV
+MORSyAHRRlwKEIYxFwAKAnFgGAAAAA==
+</data>
+
+<datacheck base64="yes">
+H4sICHmeq0EAA2xhbGFsYQDLycxLVTDkUsgB0UZcChCGMRcACgJxYBgAAAA=
+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<features>
+libz
+</features>
+<server>
+http
+</server>
+ <name>
+HTTP GET gzip transfer-encoded data in raw mode
+ </name>
+ <command option="no-include">
+http://%HOSTIP:%HTTPPORT/319 --raw
+ </command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /319 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test326 b/tests/data/test326
new file mode 100644
index 0000000..1a4aae5
--- /dev/null
+++ b/tests/data/test326
@@ -0,0 +1,66 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+HTTP GET
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK

+Date: Mon, 29 Nov 2004 21:56:53 GMT

+Server: Apache/1.3.31 (Debian GNU/Linux) mod_gzip/1.3.26.1a PHP/4.3.9-1 mod_ssl/2.8.20 OpenSSL/0.9.7d mod_perl/1.29

+Content-Type: text/html; charset=ISO-8859-1

+Transfer-Encoding: chunked

+

+18

+line 1
+ line 2
+  line 3
+

+0

+

+</data>
+
+<datacheck>
+18

+line 1
+ line 2
+  line 3
+

+0

+

+</datacheck>
+
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+http
+</server>
+ <name>
+HTTP GET chunked data in raw mode
+ </name>
+ <command option="no-include">
+http://%HOSTIP:%HTTPPORT/326 --raw
+ </command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /326 HTTP/1.1

+Host: %HOSTIP:%HTTPPORT

+Accept: */*

+

+</protocol>
+</verify>
+</testcase>
diff --git a/tests/data/test340 b/tests/data/test340
new file mode 100644
index 0000000..d834d76
--- /dev/null
+++ b/tests/data/test340
@@ -0,0 +1,40 @@
+<testcase>
+<info>
+<keywords>
+FTP
+PASV
+CWD
+--ftp-method
+singlecwd
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+</reply>
+
+# Client-side
+<client>
+<server>
+ftp
+</server>
+ <name>
+FTP using %00 in path with singlecwd
+ </name>
+ <command>
+--ftp-method singlecwd ftp://%HOSTIP:%FTPPORT/%00first/second/third/340
+</command>
+</client>
+
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+USER anonymous

+PASS ftp@example.com

+PWD

+</protocol>
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test46 b/tests/data/test46
index abcbda8..fd0e666 100644
--- a/tests/data/test46
+++ b/tests/data/test46
@@ -33,7 +33,7 @@
 http
 </server>
  <name>
-HTTP, get cookies and store in cookie jar
+HTTP with bad domain name, get cookies and store in cookie jar
  </name>
 # Explicitly set the time zone to a known good one, in case the user is
 # using one of the 'right' zones that take into account leap seconds
@@ -42,7 +42,7 @@
 TZ=GMT
 </setenv>
  <command>
-%HOSTIP:%HTTPPORT/want/46 -c log/jar46 -b log/injar46
+domain..tld:%HTTPPORT/want/46 --resolve domain..tld:%HTTPPORT:%HOSTIP -c log/jar46 -b log/injar46
 </command>
 <file name="log/injar46">
 # Netscape HTTP Cookie File
@@ -51,9 +51,9 @@
 
 www.fake.come	FALSE	/	FALSE	2022144953	cookiecliente	si
 www.loser.com	FALSE	/	FALSE	2139150993	UID	99
-%HOSTIP	FALSE	/	FALSE	1739150993	mooo	indeed
-#HttpOnly_%HOSTIP	FALSE	/want	FALSE	1739150993	mooo2	indeed2
-%HOSTIP	FALSE	/want	FALSE	0	empty	
+domain..tld	FALSE	/	FALSE	1739150993	mooo	indeed
+#HttpOnly_domain..tld	FALSE	/want	FALSE	1739150993	mooo2	indeed2
+domain..tld	FALSE	/want	FALSE	0	empty	
 </file>
 </client>
 
@@ -64,7 +64,7 @@
 </strip>
 <protocol>
 GET /want/46 HTTP/1.1

-Host: %HOSTIP:%HTTPPORT

+Host: domain..tld:%HTTPPORT

 Accept: */*

 Cookie: empty=; mooo2=indeed2; mooo=indeed

 

@@ -75,15 +75,15 @@
 # This file was generated by libcurl! Edit at your own risk.
 
 www.fake.come	FALSE	/	FALSE	2022144953	cookiecliente	si
+domain..tld	FALSE	/	FALSE	1739150993	mooo	indeed
+#HttpOnly_domain..tld	FALSE	/want	FALSE	1739150993	mooo2	indeed2
+domain..tld	FALSE	/want	FALSE	0	empty	
+domain..tld	FALSE	/	FALSE	2054030187	ckyPersistent	permanent
+domain..tld	FALSE	/	FALSE	0	ckySession	temporary
+domain..tld	FALSE	/	FALSE	0	ASPSESSIONIDQGGQQSJJ	GKNBDIFAAOFDPDAIEAKDIBKE
+domain..tld	FALSE	/	FALSE	0	justaname	
+domain..tld	FALSE	/want/	FALSE	0	simplyhuge	zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 www.loser.com	FALSE	/	FALSE	2139150993	UID	99
-%HOSTIP	FALSE	/	FALSE	1739150993	mooo	indeed
-#HttpOnly_%HOSTIP	FALSE	/want	FALSE	1739150993	mooo2	indeed2
-%HOSTIP	FALSE	/want	FALSE	0	empty	
-%HOSTIP	FALSE	/	FALSE	2054030187	ckyPersistent	permanent
-%HOSTIP	FALSE	/	FALSE	0	ckySession	temporary
-%HOSTIP	FALSE	/	FALSE	0	ASPSESSIONIDQGGQQSJJ	GKNBDIFAAOFDPDAIEAKDIBKE
-%HOSTIP	FALSE	/	FALSE	0	justaname	
-%HOSTIP	FALSE	/want/	FALSE	0	simplyhuge	zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 </file>
 </verify>
 </testcase>
diff --git a/tests/data/test517 b/tests/data/test517
index 513634f..f58f4ed 100644
--- a/tests/data/test517
+++ b/tests/data/test517
@@ -32,96 +32,6 @@
 # Verify data after the test has been "shot"
 <verify>
 <stdout>
-0: Sun, 06 Nov 1994 08:49:37 GMT => 784111777
-1: Sunday, 06-Nov-94 08:49:37 GMT => 784111777
-2: Sun Nov  6 08:49:37 1994 => 784111777
-3: 06 Nov 1994 08:49:37 GMT => 784111777
-4: 06-Nov-94 08:49:37 GMT => 784111777
-5: Nov  6 08:49:37 1994 => 784111777
-6: 06 Nov 1994 08:49:37 => 784111777
-7: 06-Nov-94 08:49:37 => 784111777
-8: 1994 Nov 6 08:49:37 => 784111777
-9: GMT 08:49:37 06-Nov-94 Sunday => 784111777
-10: 94 6 Nov 08:49:37 => 784111777
-11: 1994 Nov 6 => 784080000
-12: 06-Nov-94 => 784080000
-13: Sun Nov 6 94 => 784080000
-14: 1994.Nov.6 => 784080000
-15: Sun/Nov/6/94/GMT => 784080000
-16: Sun, 06 Nov 1994 08:49:37 CET => 784108177
-17: 06 Nov 1994 08:49:37 EST => 784129777
-18: Sun, 12 Sep 2004 15:05:58 -0700 => 1095026758
-19: Sat, 11 Sep 2004 21:32:11 +0200 => 1094931131
-20: 20040912 15:05:58 -0700 => 1095026758
-21: 20040911 +0200 => 1094853600
-22: Thu, 01-Jan-1970 00:59:59 GMT => 3599
-23: Thu, 01-Jan-1970 01:00:00 GMT => 3600
-24: Sat, 15-Apr-17 21:01:22 GMT => 1492290082
-25: Thu, 19-Apr-2007 16:00:00 GMT => 1176998400
-26: Wed, 25 Apr 2007 21:02:13 GMT => 1177534933
-27: Thu, 19/Apr\2007 16:00:00 GMT => 1176998400
-28: Fri, 1 Jan 2010 01:01:50 GMT => 1262307710
-29: Wednesday, 1-Jan-2003 00:00:00 GMT => 1041379200
-30: , 1-Jan-2003 00:00:00 GMT => 1041379200
-31:  1-Jan-2003 00:00:00 GMT => 1041379200
-32: 1-Jan-2003 00:00:00 GMT => 1041379200
-33: Wed,18-Apr-07 22:50:12 GMT => 1176936612
-34: WillyWonka  , 18-Apr-07 22:50:12 GMT => -1
-35: WillyWonka  , 18-Apr-07 22:50:12 => -1
-36: WillyWonka  ,  18-apr-07   22:50:12 => -1
-37: Mon, 18-Apr-1977 22:50:13 GMT => 230251813
-38: Mon, 18-Apr-77 22:50:13 GMT => 230251813
-39: "Sat, 15-Apr-17\"21:01:22\"GMT" => 1492290082
-40: Partyday, 18- April-07 22:50:12 => -1
-41: Partyday, 18 - Apri-07 22:50:12 => -1
-42: Wednes, 1-Januar-2003 00:00:00 GMT => -1
-43: Sat, 15-Apr-17 21:01:22 => 1492290082
-44: Sat, 15-Apr-17 21:01:22 GMT-2 => 1492290082
-45: Sat, 15-Apr-17 21:01:22 GMT BLAH => 1492290082
-46: Sat, 15-Apr-17 21:01:22 GMT-0400 => 1492290082
-47: Sat, 15-Apr-17 21:01:22 GMT-0400 (EDT) => 1492290082
-48: Sat, 15-Apr-17 21:01:22 DST => -1
-49: Sat, 15-Apr-17 21:01:22 -0400 => 1492304482
-50: Sat, 15-Apr-17 21:01:22 (hello there) => -1
-51: Sat, 15-Apr-17 21:01:22 11:22:33 => -1
-52: Sat, 15-Apr-17 ::00 21:01:22 => -1
-53: Sat, 15-Apr-17 boink:z 21:01:22 => -1
-54: Sat, 15-Apr-17 91:22:33 21:01:22 => -1
-55: Thu Apr 18 22:50:12 2007 GMT => 1176936612
-56: 22:50:12 Thu Apr 18 2007 GMT => 1176936612
-57: Thu 22:50:12 Apr 18 2007 GMT => 1176936612
-58: Thu Apr 22:50:12 18 2007 GMT => 1176936612
-59: Thu Apr 18 22:50:12 2007 GMT => 1176936612
-60: Thu Apr 18 2007 22:50:12 GMT => 1176936612
-61: Thu Apr 18 2007 GMT 22:50:12 => 1176936612
-62: Sat, 15-Apr-17 21:01:22 GMT => 1492290082
-63: 15-Sat, Apr-17 21:01:22 GMT => 1492290082
-64: 15-Sat, Apr 21:01:22 GMT 17 => 1492290082
-65: 15-Sat, Apr 21:01:22 GMT 2017 => 1492290082
-66: 15 Apr 21:01:22 2017 => 1492290082
-67: 15 17 Apr 21:01:22 => 1492290082
-68: Apr 15 17 21:01:22 => 1492290082
-69: Apr 15 21:01:22 17 => 1492290082
-70: 2017 April 15 21:01:22 => -1
-71: 15 April 2017 21:01:22 => -1
-72: 98 April 17 21:01:22 => -1
-73: Thu, 012-Aug-2008 20:49:07 GMT => 1218574147
-74: Thu, 999999999999-Aug-2007 20:49:07 GMT => -1
-75: Thu, 12-Aug-2007 20:61:99999999999 GMT => -1
-76: IAintNoDateFool => -1
-77: Thu Apr 18 22:50 2007 GMT => 1176936600
-78: 20110623 12:34:56 => 1308832496
-79: 20110632 12:34:56 => -1
-80: 20110623 56:34:56 => -1
-81: 20111323 12:34:56 => -1
-82: 20110623 12:34:79 => -1
-83: Wed, 31 Dec 2008 23:59:60 GMT => 1230768000
-84: 20110623 12:3 => 1308830580
-85: 20110623 1:3 => 1308790980
-86: 20110623 1:30 => 1308792600
-87: 20110623 12:12:3 => 1308831123
-88: 20110623 01:12:3 => 1308791523
-89: 20110623 01:99:30 => -1
 </stdout>
 
 # This test case previously tested an overflow case ("2094 Nov 6 =>
diff --git a/tests/data/test555 b/tests/data/test555
index 3aa2ef1..18bbc43 100644
--- a/tests/data/test555
+++ b/tests/data/test555
@@ -106,10 +106,6 @@
 <strip>
 ^User-Agent: curl/.*
 </strip>
-<strippart>
-# remove CR that CURLOPT_TRANSFERTEXT added, when CharConv enabled:
-s/^(this is the blurb we want to upload)\r\n/$1\n/ if($has_charconv)
-</strippart>
 <protocol>
 POST http://test.remote.example.com/path/555 HTTP/1.1

 Host: test.remote.example.com

diff --git a/tests/data/test655 b/tests/data/test655
new file mode 100644
index 0000000..d98729c
--- /dev/null
+++ b/tests/data/test655
@@ -0,0 +1,50 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK

+Date: Thu, 09 Nov 2010 14:49:00 GMT

+Server: test-server/fake swsclose

+Connection: close

+Content-Type: text/html

+

+hello
+</data>
+<datacheck>
+hello
+</datacheck>
+</reply>
+
+# Client-side
+<client>
+<server>
+http
+</server>
+# tool is what to use instead of 'curl'
+<tool>
+lib655
+</tool>
+
+ <name>
+resolver start callback
+ </name>
+ <command>
+http://%HOSTIP:%HTTPPORT/655
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+0
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test911 b/tests/data/test911
index cc87349..f4c5458 100644
--- a/tests/data/test911
+++ b/tests/data/test911
@@ -40,7 +40,6 @@
 QUIT

 </protocol>
 <upload>
-

 .

 </upload>
 </verify>
diff --git a/tests/data/test951 b/tests/data/test951
new file mode 100644
index 0000000..7d2e17b
--- /dev/null
+++ b/tests/data/test951
@@ -0,0 +1,45 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP data with dot as first character
+ </name>
+<stdin>
+.This first line starts with a dot

+</stdin>
+<command>
+smtp://%HOSTIP:%SMTPPORT/951 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 951

+MAIL FROM:<sender@example.com>

+RCPT TO:<recipient@example.com>

+DATA

+QUIT

+</protocol>
+<upload>
+..This first line starts with a dot

+.

+</upload>
+</verify>
+</testcase>
diff --git a/tests/data/test952 b/tests/data/test952
new file mode 100644
index 0000000..54334b2
--- /dev/null
+++ b/tests/data/test952
@@ -0,0 +1,45 @@
+<testcase>
+<info>
+<keywords>
+SMTP
+</keywords>
+</info>
+
+#
+# Server-side
+<reply>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+smtp
+</server>
+ <name>
+SMTP data with single dot-only line
+ </name>
+<stdin>
+.

+</stdin>
+<command>
+smtp://%HOSTIP:%SMTPPORT/952 --mail-rcpt recipient@example.com --mail-from sender@example.com -T -
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<protocol>
+EHLO 952

+MAIL FROM:<sender@example.com>

+RCPT TO:<recipient@example.com>

+DATA

+QUIT

+</protocol>
+<upload>
+..

+.

+</upload>
+</verify>
+</testcase>
diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl
index 9562758..97f7b8e 100755
--- a/tests/ftpserver.pl
+++ b/tests/ftpserver.pl
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -920,7 +920,7 @@
                 print FILE $line if(!$nosave);
 
                 $raw .= $line;
-                if($raw =~ /\x0d\x0a\x2e\x0d\x0a/) {
+                if($raw =~ /(?:^|\x0d\x0a)\x2e\x0d\x0a/) {
                     # end of data marker!
                     $eob = 1;
                 }
@@ -2708,7 +2708,7 @@
 }
 
 #**********************************************************************
-# nodataconn_str returns string of efective nodataconn command. Notice
+# nodataconn_str returns string of effective nodataconn command. Notice
 # that $nodataconn may be set alone or in addition to a $nodataconnXXX.
 #
 sub nodataconn_str {
@@ -2934,7 +2934,7 @@
 }
 
 #***************************************************************************
-# Initialize command line option dependant variables
+# Initialize command line option dependent variables
 #
 
 if(!$srcdir) {
diff --git a/tests/libtest/Makefile.am b/tests/libtest/Makefile.am
index a4e85ef..0b8ebe9 100644
--- a/tests/libtest/Makefile.am
+++ b/tests/libtest/Makefile.am
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -49,6 +49,8 @@
 
 CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@
 
+CFLAGS += @CURL_CFLAG_EXTRAS@
+
 # Prevent LIBS from being used for all link targets
 LIBS = $(BLANK_AT_MAKETIME)
 
diff --git a/tests/libtest/Makefile.inc b/tests/libtest/Makefile.inc
index d8a55e2..e7e8c48 100644
--- a/tests/libtest/Makefile.inc
+++ b/tests/libtest/Makefile.inc
@@ -20,14 +20,14 @@
  lib559 lib560 lib562 lib564 lib565 lib566 lib567 lib568 lib569 lib570   \
  lib571 lib572 lib573 lib574 lib575 lib576        lib578 lib579 lib582   \
  lib583 lib585 lib586 lib587 lib589 lib590 lib591 lib597 lib598 lib599   \
- lib643 lib644 lib645 lib650 lib651 lib652 lib653 lib654 \
+ lib643 lib644 lib645 lib650 lib651 lib652 lib653 lib654 lib655 \
  lib1500 lib1501 lib1502 lib1503 lib1504 lib1505 lib1506 lib1507 lib1508 \
  lib1509 lib1510 lib1511 lib1512 lib1513 lib1514 lib1515         lib1517 \
  lib1520 lib1521 \
  lib1525 lib1526 lib1527 lib1528 lib1529 lib1530 lib1531 lib1532 lib1533 \
  lib1534 lib1535 lib1536 lib1537 lib1538 \
  lib1540 \
- lib1550 lib1551 lib1552 lib1553 lib1554 \
+ lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 \
  lib1900 \
  lib2033
 
@@ -327,6 +327,9 @@
 lib654_SOURCES = lib654.c $(SUPPORTFILES)
 lib654_CPPFLAGS = $(AM_CPPFLAGS)
 
+lib655_SOURCES = lib655.c $(SUPPORTFILES)
+lib655_CPPFLAGS = $(AM_CPPFLAGS)
+
 lib1500_SOURCES = lib1500.c $(SUPPORTFILES) $(TESTUTIL)
 lib1500_LDADD = $(TESTUTIL_LIBS)
 lib1500_CPPFLAGS = $(AM_CPPFLAGS)
@@ -477,6 +480,14 @@
 lib1554_SOURCES = lib1554.c $(SUPPORTFILES)
 lib1554_CPPFLAGS = $(AM_CPPFLAGS)
 
+lib1555_SOURCES = lib1555.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1555_LDADD = $(TESTUTIL_LIBS)
+lib1555_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1555
+
+lib1556_SOURCES = lib1556.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
+lib1556_LDADD = $(TESTUTIL_LIBS)
+lib1556_CPPFLAGS = $(AM_CPPFLAGS) -DLIB1556
+
 lib1900_SOURCES = lib1900.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
 lib1900_LDADD = $(TESTUTIL_LIBS)
 lib1900_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/libtest/lib1502.c b/tests/libtest/lib1502.c
index 6f253c7..5b75e2f 100644
--- a/tests/libtest/lib1502.c
+++ b/tests/libtest/lib1502.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -40,6 +40,7 @@
 int test(char *URL)
 {
   CURL *easy = NULL;
+  CURL *dup;
   CURLM *multi = NULL;
   int still_running;
   int res = 0;
@@ -72,6 +73,15 @@
   easy_setopt(easy, CURLOPT_HEADER, 1L);
   easy_setopt(easy, CURLOPT_RESOLVE, dns_cache_list);
 
+  dup = curl_easy_duphandle(easy);
+  if(dup) {
+    curl_easy_cleanup(easy);
+    easy = dup;
+  }
+  else {
+    return CURLE_OUT_OF_MEMORY;
+  }
+
   multi_init(multi);
 
   multi_add_handle(multi, easy);
diff --git a/tests/libtest/lib1509.c b/tests/libtest/lib1509.c
index ccb6683..63bc589 100644
--- a/tests/libtest/lib1509.c
+++ b/tests/libtest/lib1509.c
@@ -69,7 +69,7 @@
     goto test_cleanup;
   }
 
-  printf("header length is ........: %lu\n", headerSize);
+  printf("header length is ........: %ld\n", headerSize);
   printf("header length should be..: %lu\n", realHeaderSize);
 
 test_cleanup:
diff --git a/tests/libtest/lib1521.c b/tests/libtest/lib1521.c
index 2852b86..9f9f17c 100644
--- a/tests/libtest/lib1521.c
+++ b/tests/libtest/lib1521.c
@@ -38,7 +38,7 @@
 /* Unexpected error.
     CURLE_NOT_BUILT_IN   - means disabled at build
     CURLE_UNKNOWN_OPTION - means no such option (anymore?)
-    CURLE_SSL_ENGINE_NOTFOUND - set unkown ssl engine
+    CURLE_SSL_ENGINE_NOTFOUND - set unknown ssl engine
     CURLE_UNSUPPORTED_PROTOCOL - set bad HTTP version
     CURLE_BAD_FUNCTION_ARGUMENT - unsupported value
    */
@@ -99,6 +99,7 @@
 static curl_fnmatch_callback fnmatch_cb;
 static curl_closesocket_callback closesocketcb;
 static curl_xferinfo_callback xferinfocb;
+static curl_resolver_start_callback resolver_start_cb;
 
 int test(char *URL)
 {
@@ -2352,6 +2353,64 @@
   res = curl_easy_setopt(curl, CURLOPT_MIMEPOST, NULL);
   if(UNEX(res)) {
     err("MIMEPOST", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_TIMEVALUE_LARGE, OFF_NO);
+  if(UNEX(res)) {
+    err("TIMEVALUE_LARGE", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_TIMEVALUE_LARGE, OFF_HI);
+  if(UNEX(res)) {
+    err("TIMEVALUE_LARGE", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_TIMEVALUE_LARGE, OFF_LO);
+  if(UNEX(res)) {
+    err("TIMEVALUE_LARGE", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, 0L);
+  if(UNEX(res)) {
+    err("HAPPY_EYEBALLS_TIMEOUT_MS", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, 22L);
+  if(UNEX(res)) {
+    err("HAPPY_EYEBALLS_TIMEOUT_MS", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, LO);
+  if(UNEX(res)) {
+    err("HAPPY_EYEBALLS_TIMEOUT_MS", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, HI);
+  if(UNEX(res)) {
+    err("HAPPY_EYEBALLS_TIMEOUT_MS", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION,
+                         resolver_start_cb);
+  if(UNEX(res)) {
+    err("RESOLVER_START_FUNCTION", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, NULL);
+  if(UNEX(res)) {
+    err("RESOLVER_START_FUNCTION", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, &object);
+  if(UNEX(res)) {
+    err("RESOLVER_START_DATA", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_RESOLVER_START_DATA, NULL);
+  if(UNEX(res)) {
+    err("RESOLVER_START_DATA", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 0L);
+  if(UNEX(res)) {
+    err("HAPROXYPROTOCOL", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 22L);
+  if(UNEX(res)) {
+    err("HAPROXYPROTOCOL", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, LO);
+  if(UNEX(res)) {
+    err("HAPROXYPROTOCOL", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, HI);
+  if(UNEX(res)) {
+    err("HAPROXYPROTOCOL", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, 0L);
+  if(UNEX(res)) {
+    err("DNS_SHUFFLE_ADDRESSES", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, 22L);
+  if(UNEX(res)) {
+    err("DNS_SHUFFLE_ADDRESSES", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, LO);
+  if(UNEX(res)) {
+    err("DNS_SHUFFLE_ADDRESSES", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_setopt(curl, CURLOPT_DNS_SHUFFLE_ADDRESSES, HI);
+  if(UNEX(res)) {
+    err("DNS_SHUFFLE_ADDRESSES", res, __LINE__); goto test_cleanup; }
   res = curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &charp);
   if(UNEX(res)) {
     geterr("EFFECTIVE_URL", res, __LINE__); goto test_cleanup; }
@@ -2406,6 +2465,9 @@
   res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &val);
   if(UNEX(res)) {
     geterr("FILETIME", res, __LINE__); goto test_cleanup; }
+  res = curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &oval);
+  if(UNEX(res)) {
+    geterr("FILETIME_T", res, __LINE__); goto test_cleanup; }
   res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &dval);
   if(UNEX(res)) {
     geterr("CONTENT_LENGTH_DOWNLOAD", res, __LINE__); goto test_cleanup; }
diff --git a/tests/libtest/lib1535.c b/tests/libtest/lib1535.c
index 32519f2..6ff0346 100644
--- a/tests/libtest/lib1535.c
+++ b/tests/libtest/lib1535.c
@@ -71,7 +71,7 @@
   }
   if(protocol != CURLPROTO_HTTP) {
     fprintf(stderr, "%s:%d protocol of http resource is incorrect; "
-            "expected %ld but is %ld\n",
+            "expected %d but is %ld\n",
             __FILE__, __LINE__, CURLPROTO_HTTP, protocol);
     res = CURLE_HTTP_RETURNED_ERROR;
     goto test_cleanup;
diff --git a/tests/libtest/lib1536.c b/tests/libtest/lib1536.c
index 7f5b614..0c04bbf 100644
--- a/tests/libtest/lib1536.c
+++ b/tests/libtest/lib1536.c
@@ -72,7 +72,7 @@
   if(memcmp(scheme, "HTTP", 5) != 0) {
     fprintf(stderr, "%s:%d scheme of http resource is incorrect; "
             "expected 'HTTP' but is %s\n",
-            __FILE__, __LINE__, CURLPROTO_HTTP,
+            __FILE__, __LINE__,
             (scheme == NULL ? "NULL" : "invalid"));
     res = CURLE_HTTP_RETURNED_ERROR;
     goto test_cleanup;
diff --git a/tests/libtest/lib1555.c b/tests/libtest/lib1555.c
new file mode 100644
index 0000000..e4f2255
--- /dev/null
+++ b/tests/libtest/lib1555.c
@@ -0,0 +1,77 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+/*
+ * Verify that some API functions are locked from being called inside callback
+ */
+
+#include "test.h"
+
+#include "memdebug.h"
+
+static CURL *curl;
+
+static int progressCallback(void *arg,
+                            double dltotal,
+                            double dlnow,
+                            double ultotal,
+                            double ulnow)
+{
+  CURLcode res = 0;
+  (void)arg;
+  (void)dltotal;
+  (void)dlnow;
+  (void)ultotal;
+  (void)ulnow;
+  res = curl_easy_recv(curl, NULL, 0, NULL);
+  printf("curl_easy_recv returned %d\n", res);
+  res = curl_easy_send(curl, NULL, 0, NULL);
+  printf("curl_easy_send returned %d\n", res);
+
+  return 1;
+}
+
+int test(char *URL)
+{
+  int res = 0;
+
+  global_init(CURL_GLOBAL_ALL);
+
+  easy_init(curl);
+
+  easy_setopt(curl, CURLOPT_URL, URL);
+  easy_setopt(curl, CURLOPT_TIMEOUT, (long)7);
+  easy_setopt(curl, CURLOPT_NOSIGNAL, (long)1);
+  easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progressCallback);
+  easy_setopt(curl, CURLOPT_PROGRESSDATA, NULL);
+  easy_setopt(curl, CURLOPT_NOPROGRESS, (long)0);
+
+  res = curl_easy_perform(curl);
+
+test_cleanup:
+
+  /* undocumented cleanup sequence - type UA */
+
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return res;
+}
diff --git a/tests/libtest/lib1556.c b/tests/libtest/lib1556.c
new file mode 100644
index 0000000..fa0e60e
--- /dev/null
+++ b/tests/libtest/lib1556.c
@@ -0,0 +1,78 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "testutil.h"
+#include "warnless.h"
+#include "memdebug.h"
+
+struct headerinfo {
+  size_t largest;
+};
+
+static size_t header(void *ptr, size_t size, size_t nmemb, void *stream)
+{
+  size_t headersize = size * nmemb;
+  struct headerinfo *info = (struct headerinfo *)stream;
+  (void)ptr;
+
+  if(headersize > info->largest)
+    /* remember the longest header */
+    info->largest = headersize;
+
+  return nmemb * size;
+}
+
+int test(char *URL)
+{
+  CURLcode code;
+  CURL *curl = NULL;
+  int res = 0;
+  struct headerinfo info = {0};
+
+  global_init(CURL_GLOBAL_ALL);
+
+  easy_init(curl);
+
+  easy_setopt(curl, CURLOPT_HEADERFUNCTION, header);
+  easy_setopt(curl, CURLOPT_HEADERDATA, &info);
+  easy_setopt(curl, CURLOPT_VERBOSE, 1L);
+  easy_setopt(curl, CURLOPT_URL, URL);
+
+  code = curl_easy_perform(curl);
+  if(CURLE_OK != code) {
+    fprintf(stderr, "%s:%d curl_easy_perform() failed, "
+            "with code %d (%s)\n",
+            __FILE__, __LINE__, (int)code, curl_easy_strerror(code));
+    res = TEST_ERR_MAJOR_BAD;
+    goto test_cleanup;
+  }
+
+  printf("Max: %ld\n", (long)info.largest);
+
+test_cleanup:
+
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return res;
+}
diff --git a/tests/libtest/lib517.c b/tests/libtest/lib517.c
index af7b2aa..2f7d9a0 100644
--- a/tests/libtest/lib517.c
+++ b/tests/libtest/lib517.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -23,117 +23,142 @@
 
 #include "memdebug.h"
 
-static const char * const dates[]={
-  "Sun, 06 Nov 1994 08:49:37 GMT",
-  "Sunday, 06-Nov-94 08:49:37 GMT",
-  "Sun Nov  6 08:49:37 1994",
-  "06 Nov 1994 08:49:37 GMT",
-  "06-Nov-94 08:49:37 GMT",
-  "Nov  6 08:49:37 1994",
-  "06 Nov 1994 08:49:37",
-  "06-Nov-94 08:49:37",
-  "1994 Nov 6 08:49:37",
-  "GMT 08:49:37 06-Nov-94 Sunday",
-  "94 6 Nov 08:49:37",
-  "1994 Nov 6",
-  "06-Nov-94",
-  "Sun Nov 6 94",
-  "1994.Nov.6",
-  "Sun/Nov/6/94/GMT",
-  "Sun, 06 Nov 1994 08:49:37 CET",
-  "06 Nov 1994 08:49:37 EST",
-  "Sun, 12 Sep 2004 15:05:58 -0700",
-  "Sat, 11 Sep 2004 21:32:11 +0200",
-  "20040912 15:05:58 -0700",
-  "20040911 +0200",
-  "Thu, 01-Jan-1970 00:59:59 GMT",
-  "Thu, 01-Jan-1970 01:00:00 GMT",
-/*  "2094 Nov 6", See ../data/test517 for details */
-  "Sat, 15-Apr-17 21:01:22 GMT",
-  "Thu, 19-Apr-2007 16:00:00 GMT",
-  "Wed, 25 Apr 2007 21:02:13 GMT",
-  "Thu, 19/Apr\\2007 16:00:00 GMT",
-  "Fri, 1 Jan 2010 01:01:50 GMT",
-  "Wednesday, 1-Jan-2003 00:00:00 GMT",
-  ", 1-Jan-2003 00:00:00 GMT",
-  " 1-Jan-2003 00:00:00 GMT",
-  "1-Jan-2003 00:00:00 GMT",
-  "Wed,18-Apr-07 22:50:12 GMT",
-  "WillyWonka  , 18-Apr-07 22:50:12 GMT",
-  "WillyWonka  , 18-Apr-07 22:50:12",
-  "WillyWonka  ,  18-apr-07   22:50:12",
-  "Mon, 18-Apr-1977 22:50:13 GMT",
-  "Mon, 18-Apr-77 22:50:13 GMT",
-  "\"Sat, 15-Apr-17\\\"21:01:22\\\"GMT\"",
-  "Partyday, 18- April-07 22:50:12",
-  "Partyday, 18 - Apri-07 22:50:12",
-  "Wednes, 1-Januar-2003 00:00:00 GMT",
-  "Sat, 15-Apr-17 21:01:22",
-  "Sat, 15-Apr-17 21:01:22 GMT-2",
-  "Sat, 15-Apr-17 21:01:22 GMT BLAH",
-  "Sat, 15-Apr-17 21:01:22 GMT-0400",
-  "Sat, 15-Apr-17 21:01:22 GMT-0400 (EDT)",
-  "Sat, 15-Apr-17 21:01:22 DST",
-  "Sat, 15-Apr-17 21:01:22 -0400",
-  "Sat, 15-Apr-17 21:01:22 (hello there)",
-  "Sat, 15-Apr-17 21:01:22 11:22:33",
-  "Sat, 15-Apr-17 ::00 21:01:22",
-  "Sat, 15-Apr-17 boink:z 21:01:22",
-  "Sat, 15-Apr-17 91:22:33 21:01:22",
-  "Thu Apr 18 22:50:12 2007 GMT",
-  "22:50:12 Thu Apr 18 2007 GMT",
-  "Thu 22:50:12 Apr 18 2007 GMT",
-  "Thu Apr 22:50:12 18 2007 GMT",
-  "Thu Apr 18 22:50:12 2007 GMT",
-  "Thu Apr 18 2007 22:50:12 GMT",
-  "Thu Apr 18 2007 GMT 22:50:12",
-  "Sat, 15-Apr-17 21:01:22 GMT",
-  "15-Sat, Apr-17 21:01:22 GMT",
-  "15-Sat, Apr 21:01:22 GMT 17",
-  "15-Sat, Apr 21:01:22 GMT 2017",
-  "15 Apr 21:01:22 2017",
-  "15 17 Apr 21:01:22",
-  "Apr 15 17 21:01:22",
-  "Apr 15 21:01:22 17",
-  "2017 April 15 21:01:22",
-  "15 April 2017 21:01:22",
-  "98 April 17 21:01:22",
-  "Thu, 012-Aug-2008 20:49:07 GMT",
+struct dcheck {
+  const char *input;
+  time_t output;
+};
+
+static struct dcheck dates[] = {
+  {"Sun, 06 Nov 1994 08:49:37 GMT", 784111777 },
+  {"Sunday, 06-Nov-94 08:49:37 GMT", 784111777 },
+  {"Sun Nov  6 08:49:37 1994", 784111777 },
+  {"06 Nov 1994 08:49:37 GMT", 784111777 },
+  {"06-Nov-94 08:49:37 GMT", 784111777 },
+  {"Nov  6 08:49:37 1994", 784111777 },
+  {"06 Nov 1994 08:49:37", 784111777 },
+  {"06-Nov-94 08:49:37", 784111777 },
+  {"1994 Nov 6 08:49:37", 784111777 },
+  {"GMT 08:49:37 06-Nov-94 Sunday", 784111777 },
+  {"94 6 Nov 08:49:37", 784111777 },
+  {"1994 Nov 6", 784080000 },
+  {"06-Nov-94", 784080000 },
+  {"Sun Nov 6 94", 784080000 },
+  {"1994.Nov.6", 784080000 },
+  {"Sun/Nov/6/94/GMT", 784080000 },
+  {"Sun, 06 Nov 1994 08:49:37 CET", 784108177 },
+  {"06 Nov 1994 08:49:37 EST", 784129777 },
+  {"Sun, 06 Nov 1994 08:49:37 UT", 784111777 },
+  {"Sun, 12 Sep 2004 15:05:58 -0700", 1095026758 },
+  {"Sat, 11 Sep 2004 21:32:11 +0200", 1094931131 },
+  {"20040912 15:05:58 -0700", 1095026758 },
+  {"20040911 +0200", 1094853600 },
+  {"Thu, 01-Jan-1970 00:59:59 GMT", 3599 },
+  {"Thu, 01-Jan-1970 01:00:00 GMT", 3600 },
+  {"Sat, 15-Apr-17 21:01:22 GMT", 1492290082 },
+  {"Thu, 19-Apr-2007 16:00:00 GMT", 1176998400 },
+  {"Wed, 25 Apr 2007 21:02:13 GMT", 1177534933 },
+  {"Thu, 19/Apr\\2007 16:00:00 GMT", 1176998400 },
+  {"Fri, 1 Jan 2010 01:01:50 GMT", 1262307710 },
+  {"Wednesday, 1-Jan-2003 00:00:00 GMT", 1041379200 },
+  {", 1-Jan-2003 00:00:00 GMT", 1041379200 },
+  {"1-Jan-2003 00:00:00 GMT", 1041379200 },
+  {"1-Jan-2003 00:00:00 GMT", 1041379200 },
+  {"Wed,18-Apr-07 22:50:12 GMT", 1176936612 },
+  {"WillyWonka  , 18-Apr-07 22:50:12 GMT", -1 },
+  {"WillyWonka  , 18-Apr-07 22:50:12", -1 },
+  {"WillyWonka  ,  18-apr-07   22:50:12", -1 },
+  {"Mon, 18-Apr-1977 22:50:13 GMT", 230251813 },
+  {"Mon, 18-Apr-77 22:50:13 GMT", 230251813 },
+  {"Sat, 15-Apr-17\"21:01:22\"GMT", 1492290082 },
+  {"Partyday, 18- April-07 22:50:12", -1 },
+  {"Partyday, 18 - Apri-07 22:50:12", -1 },
+  {"Wednes, 1-Januar-2003 00:00:00 GMT", -1 },
+  {"Sat, 15-Apr-17 21:01:22", 1492290082 },
+  {"Sat, 15-Apr-17 21:01:22 GMT-2", 1492290082 },
+  {"Sat, 15-Apr-17 21:01:22 GMT BLAH", 1492290082 },
+  {"Sat, 15-Apr-17 21:01:22 GMT-0400", 1492290082 },
+  {"Sat, 15-Apr-17 21:01:22 GMT-0400 (EDT)", 1492290082 },
+  {"Sat, 15-Apr-17 21:01:22 DST", -1 },
+  {"Sat, 15-Apr-17 21:01:22 -0400", 1492304482 },
+  {"Sat, 15-Apr-17 21:01:22 (hello there)", -1 },
+  {"Sat, 15-Apr-17 21:01:22 11:22:33", -1 },
+  {"Sat, 15-Apr-17 ::00 21:01:22", -1 },
+  {"Sat, 15-Apr-17 boink:z 21:01:22", -1 },
+  {"Sat, 15-Apr-17 91:22:33 21:01:22", -1 },
+  {"Thu Apr 18 22:50:12 2007 GMT", 1176936612 },
+  {"22:50:12 Thu Apr 18 2007 GMT", 1176936612 },
+  {"Thu 22:50:12 Apr 18 2007 GMT", 1176936612 },
+  {"Thu Apr 22:50:12 18 2007 GMT", 1176936612 },
+  {"Thu Apr 18 22:50:12 2007 GMT", 1176936612 },
+  {"Thu Apr 18 2007 22:50:12 GMT", 1176936612 },
+  {"Thu Apr 18 2007 GMT 22:50:12", 1176936612 },
+  {"Sat, 15-Apr-17 21:01:22 GMT", 1492290082 },
+  {"15-Sat, Apr-17 21:01:22 GMT", 1492290082 },
+  {"15-Sat, Apr 21:01:22 GMT 17", 1492290082 },
+  {"15-Sat, Apr 21:01:22 GMT 2017", 1492290082 },
+  {"15 Apr 21:01:22 2017", 1492290082 },
+  {"15 17 Apr 21:01:22", 1492290082 },
+  {"Apr 15 17 21:01:22", 1492290082 },
+  {"Apr 15 21:01:22 17", 1492290082 },
+  {"2017 April 15 21:01:22", -1 },
+  {"15 April 2017 21:01:22", -1 },
+  {"98 April 17 21:01:22", -1 },
+  {"Thu, 012-Aug-2008 20:49:07 GMT", 1218574147 },
+  {"Thu, 999999999999-Aug-2007 20:49:07 GMT", -1 },
+  {"Thu, 12-Aug-2007 20:61:99999999999 GMT", -1 },
+  {"IAintNoDateFool", -1 },
+  {"Thu Apr 18 22:50 2007 GMT", 1176936600 },
+  {"20110623 12:34:56", 1308832496 },
+  {"20110632 12:34:56", -1 },
+  {"20110623 56:34:56", -1 },
+  {"20111323 12:34:56", -1 },
+  {"20110623 12:34:79", -1 },
+  {"Wed, 31 Dec 2008 23:59:60 GMT", 1230768000 },
+  {"20110623 12:3", 1308830580 },
+  {"20110623 1:3", 1308790980 },
+  {"20110623 1:30", 1308792600 },
+  {"20110623 12:12:3", 1308831123 },
+  {"20110623 01:12:3", 1308791523 },
+  {"20110623 01:99:30", -1 },
+  {"Thu, 01-Jan-1970 00:00:00 GMT", 0 },
+  {"Thu, 31-Dec-1969 23:59:58 GMT", -2 },
+  {"Thu, 31-Dec-1969 23:59:59 GMT", 0 }, /* avoids -1 ! */
+#if SIZEOF_TIME_T > 4
+  {"Sun, 06 Nov 2044 08:49:37 GMT", 2362034977 },
+  {"Sun, 06 Nov 3144 08:49:37 GMT", 37074617377 },
+#ifndef HAVE_TIME_T_UNSIGNED
 #if 0
-  /* leaving out these strings since they differ between 32 and 64 bit
-     archs and the test suite has no good way to support two different outputs
-     like that */
-  "Thu, 12-Aug-31841 20:49:07 GMT",
-  "Thu, 12-Aug-9999999999 20:49:07 GMT",
+  /* causes warning on MSVC */
+  {"Sun, 06 Nov 1900 08:49:37 GMT", -2182259423 },
 #endif
-  "Thu, 999999999999-Aug-2007 20:49:07 GMT",
-  "Thu, 12-Aug-2007 20:61:99999999999 GMT",
-  "IAintNoDateFool",
-  "Thu Apr 18 22:50 2007 GMT", /* without seconds */
-  "20110623 12:34:56",
-  "20110632 12:34:56",
-  "20110623 56:34:56",
-  "20111323 12:34:56",
-  "20110623 12:34:79",
-  "Wed, 31 Dec 2008 23:59:60 GMT", /* leap second */
-  "20110623 12:3",
-  "20110623 1:3",
-  "20110623 1:30",
-  "20110623 12:12:3",
-  "20110623 01:12:3",
-  "20110623 01:99:30",
-  NULL
+  {"Sun, 06 Nov 1800 08:49:37 GMT", -5337933023 },
+  {"Thu, 01-Jan-1583 00:00:00 GMT", -12212553600 },
+#endif
+  {"Thu, 01-Jan-1499 00:00:00 GMT", -1 },
+#else
+  {"Sun, 06 Nov 2044 08:49:37 GMT", -1 },
+#endif
+#ifndef HAVE_TIME_T_UNSIGNED
+  {"Sun, 06 Nov 1968 08:49:37 GMT", -36342623 },
+#endif
+  { NULL, 0 }
 };
 
 int test(char *URL)
 {
   int i;
+  int error = 0;
 
   (void)URL; /* not used */
 
-  for(i = 0; dates[i]; i++) {
-    printf("%d: %s => %ld\n", i, dates[i], (long)curl_getdate(dates[i], NULL));
+  for(i = 0; dates[i].input; i++) {
+    time_t out = curl_getdate(dates[i].input, NULL);
+    if(out != dates[i].output) {
+      printf("WRONGLY %s => %ld (instead of %ld)\n",
+             dates[i].input, out, dates[i].output);
+      error++;
+    }
   }
 
-  return 0;
+  return error;
 }
diff --git a/tests/libtest/lib544.c b/tests/libtest/lib544.c
index 1f832d2..cb1aefc 100644
--- a/tests/libtest/lib544.c
+++ b/tests/libtest/lib544.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -26,9 +26,12 @@
 static char teststring[] =
 #ifdef CURL_DOES_CONVERSIONS
   /* ASCII representation with escape sequences for non-ASCII platforms */
-  "\x54\x68\x69\x73\x00\x20\x69\x73\x20\x74\x65\x73\x74\x20\x62\x69\x6e\x61"
-  "\x72\x79\x20\x64\x61\x74\x61\x20\x77\x69\x74\x68\x20\x61\x6e\x20\x65\x6d"
-  "\x62\x65\x64\x64\x65\x64\x20\x4e\x55\x4c\x20\x62\x79\x74\x65\x0a";
+{ '\x54', '\x68', '\x69', '\x73', '\x00', '\x20', '\x69', '\x73', '\x20',
+  '\x74', '\x65', '\x73', '\x74', '\x20', '\x62', '\x69', '\x6e', '\x61',
+  '\x72', '\x79', '\x20', '\x64', '\x61', '\x74', '\x61', '\x20', '\x77',
+  '\x69', '\x74', '\x68', '\x20', '\x61', '\x6e', '\x20', '\x65', '\x6d',
+  '\x62', '\x65', '\x64', '\x64', '\x65', '\x64', '\x20', '\x4e', '\x55',
+  '\x4c'};
 #else
 {   'T', 'h', 'i', 's', '\0', ' ', 'i', 's', ' ', 't', 'e', 's', 't', ' ',
     'b', 'i', 'n', 'a', 'r', 'y', ' ', 'd', 'a', 't', 'a', ' ',
diff --git a/tests/libtest/lib552.c b/tests/libtest/lib552.c
index 5082eb0..83797f3 100644
--- a/tests/libtest/lib552.c
+++ b/tests/libtest/lib552.c
@@ -46,11 +46,11 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stream, "%s, %d bytes (0x%x)\n", text, (int)size, (int)size);
+  fprintf(stream, "%s, %zu bytes (0x%zx)\n", text, size, size);
 
   for(i = 0; i<size; i += width) {
 
-    fprintf(stream, "%04x: ", (int)i);
+    fprintf(stream, "%04zx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
diff --git a/tests/libtest/lib555.c b/tests/libtest/lib555.c
index fc71bb6..c887b56 100644
--- a/tests/libtest/lib555.c
+++ b/tests/libtest/lib555.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -35,7 +35,15 @@
 
 #define TEST_HANG_TIMEOUT 60 * 1000
 
-#define UPLOADTHIS "this is the blurb we want to upload\n"
+static const char uploadthis[] =
+#ifdef CURL_DOES_CONVERSIONS
+  /* ASCII representation with escape sequences for non-ASCII platforms */
+  "\x74\x68\x69\x73\x20\x69\x73\x20\x74\x68\x65\x20\x62\x6c\x75\x72"
+  "\x62\x20\x77\x65\x20\x77\x61\x6e\x74\x20\x74\x6f\x20\x75\x70\x6c"
+  "\x6f\x61\x64\x0a";
+#else
+  "this is the blurb we want to upload\n";
+#endif
 
 static size_t readcallback(void  *ptr,
                            size_t size,
@@ -51,10 +59,10 @@
   }
   (*counter)++; /* bump */
 
-  if(size * nmemb > strlen(UPLOADTHIS)) {
+  if(size * nmemb > strlen(uploadthis)) {
     fprintf(stderr, "READ!\n");
-    strcpy(ptr, UPLOADTHIS);
-    return strlen(UPLOADTHIS);
+    strcpy(ptr, uploadthis);
+    return strlen(uploadthis);
   }
   fprintf(stderr, "READ NOT FINE!\n");
   return 0;
@@ -98,13 +106,9 @@
   easy_setopt(curl, CURLOPT_READDATA, &counter);
   /* We CANNOT do the POST fine without setting the size (or choose
      chunked)! */
-  easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(UPLOADTHIS));
+  easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(uploadthis));
 
   easy_setopt(curl, CURLOPT_POST, 1L);
-#ifdef CURL_DOES_CONVERSIONS
-  /* Convert the POST data to ASCII. */
-  easy_setopt(curl, CURLOPT_TRANSFERTEXT, 1L);
-#endif
   easy_setopt(curl, CURLOPT_PROXY, libtest_arg2);
   easy_setopt(curl, CURLOPT_PROXYUSERPWD, libtest_arg3);
   easy_setopt(curl, CURLOPT_PROXYAUTH,
diff --git a/tests/libtest/lib560.c b/tests/libtest/lib560.c
index 0093ea1..16045e6 100644
--- a/tests/libtest/lib560.c
+++ b/tests/libtest/lib560.c
@@ -31,7 +31,7 @@
  * Simply download a HTTPS file!
  *
  * This test was added after the HTTPS-using-multi-interface with OpenSSL
- * regression of 7.19.1 to hopefully prevent this embarassing mistake from
+ * regression of 7.19.1 to hopefully prevent this embarrassing mistake from
  * appearing again... Unfortunately the bug wasn't triggered by this test,
  * which presumably is because the connect to a local server is too
  * fast/different compared to the real/distant servers we saw the bug happen
diff --git a/tests/libtest/lib655.c b/tests/libtest/lib655.c
new file mode 100644
index 0000000..8777b99
--- /dev/null
+++ b/tests/libtest/lib655.c
@@ -0,0 +1,112 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "test.h"
+
+#include "memdebug.h"
+
+static const char *TEST_DATA_STRING = "Test data";
+static int cb_count = 0;
+
+static int
+resolver_alloc_cb_fail(void *resolver_state, void *reserved, void *userdata)
+{
+  (void)resolver_state;
+  (void)reserved;
+
+  cb_count++;
+  if(strcmp(userdata, TEST_DATA_STRING)) {
+    fprintf(stderr, "Invalid test data received");
+    exit(1);
+  }
+
+  return 1;
+}
+
+static int
+resolver_alloc_cb_pass(void *resolver_state, void *reserved, void *userdata)
+{
+  (void)resolver_state;
+  (void)reserved;
+
+  cb_count++;
+  if(strcmp(userdata, TEST_DATA_STRING)) {
+    fprintf(stderr, "Invalid test data received");
+    exit(1);
+  }
+
+  return 0;
+}
+
+int test(char *URL)
+{
+  CURL *curl;
+  CURLcode res = CURLE_OK;
+
+  if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
+    fprintf(stderr, "curl_global_init() failed\n");
+    return TEST_ERR_MAJOR_BAD;
+  }
+  curl = curl_easy_init();
+  if(!curl) {
+    fprintf(stderr, "curl_easy_init() failed\n");
+    res = TEST_ERR_MAJOR_BAD;
+    goto test_cleanup;
+  }
+
+  /* First set the URL that is about to receive our request. */
+  test_setopt(curl, CURLOPT_URL, URL);
+
+  test_setopt(curl, CURLOPT_RESOLVER_START_DATA, TEST_DATA_STRING);
+  test_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_alloc_cb_fail);
+
+  /* this should fail */
+  res = curl_easy_perform(curl);
+  if(res != CURLE_COULDNT_RESOLVE_HOST) {
+    fprintf(stderr, "curl_easy_perform should have returned "
+            "CURLE_COULDNT_RESOLVE_HOST but instead returned error %d\n", res);
+    if(res == CURLE_OK)
+      res = TEST_ERR_FAILURE;
+    goto test_cleanup;
+  }
+
+  test_setopt(curl, CURLOPT_RESOLVER_START_FUNCTION, resolver_alloc_cb_pass);
+
+  /* this should succeed */
+  res = curl_easy_perform(curl);
+  if(res) {
+    fprintf(stderr, "curl_easy_perform failed.\n");
+    goto test_cleanup;
+  }
+
+  if(cb_count != 2) {
+    fprintf(stderr, "Unexpected number of callbacks: %d\n", cb_count);
+    res = TEST_ERR_FAILURE;
+    goto test_cleanup;
+  }
+
+test_cleanup:
+  /* always cleanup */
+  curl_easy_cleanup(curl);
+  curl_global_cleanup();
+
+  return (int)res;
+}
diff --git a/tests/libtest/mk-lib1521.pl b/tests/libtest/mk-lib1521.pl
index 6ded472..9771cf5 100644
--- a/tests/libtest/mk-lib1521.pl
+++ b/tests/libtest/mk-lib1521.pl
@@ -71,7 +71,7 @@
 /* Unexpected error.
     CURLE_NOT_BUILT_IN   - means disabled at build
     CURLE_UNKNOWN_OPTION - means no such option (anymore?)
-    CURLE_SSL_ENGINE_NOTFOUND - set unkown ssl engine
+    CURLE_SSL_ENGINE_NOTFOUND - set unknown ssl engine
     CURLE_UNSUPPORTED_PROTOCOL - set bad HTTP version
     CURLE_BAD_FUNCTION_ARGUMENT - unsupported value
    */
@@ -132,6 +132,7 @@
 static curl_fnmatch_callback fnmatch_cb;
 static curl_closesocket_callback closesocketcb;
 static curl_xferinfo_callback xferinfocb;
+static curl_resolver_start_callback resolver_start_cb;
 
 int test(char *URL)
 {
diff --git a/tests/libtest/stub_gssapi.c b/tests/libtest/stub_gssapi.c
index 168becf..883cc19 100644
--- a/tests/libtest/stub_gssapi.c
+++ b/tests/libtest/stub_gssapi.c
@@ -324,7 +324,7 @@
     if(status_string->value)
       status_string->length = strlen(status_string->value);
     else
-       return GSS_S_FAILURE;
+      return GSS_S_FAILURE;
   }
 
   return GSS_S_COMPLETE;
diff --git a/tests/libtest/testtrace.c b/tests/libtest/testtrace.c
index 5c68b3b..63e022b 100644
--- a/tests/libtest/testtrace.c
+++ b/tests/libtest/testtrace.c
@@ -43,12 +43,12 @@
     /* without the hex output, we can fit more on screen */
     width = 0x40;
 
-  fprintf(stream, "%s%s, %d bytes (0x%x)\n", timebuf, text,
-          (int)size, (int)size);
+  fprintf(stream, "%s%s, %zu bytes (0x%zx)\n", timebuf, text,
+          size, size);
 
   for(i = 0; i < size; i += width) {
 
-    fprintf(stream, "%04x: ", (int)i);
+    fprintf(stream, "%04zx: ", i);
 
     if(!nohex) {
       /* hex not disabled, show it */
diff --git a/tests/nroff-scan.pl b/tests/nroff-scan.pl
index 393068c..6121d4c 100644
--- a/tests/nroff-scan.pl
+++ b/tests/nroff-scan.pl
@@ -69,7 +69,7 @@
             if($str =~ /((libcurl|curl)([^ ]*))\(3\)/i) {
                 my $man = "$1.3";
                 if(!manpresent($man)) {
-                    print STDERR "error: $f:$line: refering to non-existing man page $man\n";
+                    print STDERR "error: $f:$line: referring to non-existing man page $man\n";
                     $errors++;
                 }
                 if($pre ne "I") {
@@ -87,7 +87,7 @@
             while($i =~ s/((lib|)curl([^ ]*)) *\"\(3\)(,|) *\" *//i ) {
                 my $man = "$1.3";
                 if(!manpresent($man)) {
-                    print STDERR "error: $f:$line: refering to non-existing man page $man\n";
+                    print STDERR "error: $f:$line: referring to non-existing man page $man\n";
                     $errors++;
                 }
             }
diff --git a/tests/pathhelp.pm b/tests/pathhelp.pm
index 10a87aa..bd91c91 100644
--- a/tests/pathhelp.pm
+++ b/tests/pathhelp.pm
@@ -451,7 +451,7 @@
         return $path;
     }
     elsif(should_use_cygpath()) {
-        # 'cygpath' is avalable - use it.
+        # 'cygpath' is available - use it.
 
         my $has_final_slash = ($path =~ m{[\\/]$});
 
diff --git a/tests/python_dependencies/impacket/spnego.py b/tests/python_dependencies/impacket/spnego.py
index f177d18..43e65fb 100644
--- a/tests/python_dependencies/impacket/spnego.py
+++ b/tests/python_dependencies/impacket/spnego.py
@@ -226,7 +226,7 @@
                     raise Exception('OID tag not found %x' % next_byte)
                 decode_data2 = decode_data2[1:]
                 item, total_bytes2 = asn1decode(decode_data2)
-                self['SuportedMech'] = item
+                self['SupportedMech'] = item
 
                 decode_data = decode_data[1:]
                 decode_data = decode_data[total_bytes:]
diff --git a/tests/runtests.1 b/tests/runtests.1
index f0a3686..5a51e04 100644
--- a/tests/runtests.1
+++ b/tests/runtests.1
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH runtests.pl 1 "May 05, 2017" "Curl 7.58.0" "runtests"
+.TH runtests.pl 1 "May 05, 2017" "Curl 7.60.0" "runtests"
 
 .SH NAME
 runtests.pl \- run one or more test cases
diff --git a/tests/runtests.pl b/tests/runtests.pl
index d68c20f..054c64b 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -235,6 +235,7 @@
 my $has_psl;        # set if libcurl is built with PSL support
 my $has_ldpreload;  # set if curl is built for systems supporting LD_PRELOAD
 my $has_multissl;   # set if curl is build with MultiSSL support
+my $has_manual;     # set if curl is built with built-in manual
 
 # this version is decided by the particular nghttp2 library that is being used
 my $h2cver = "h2c";
@@ -2772,6 +2773,7 @@
             }
            if ($libcurl =~ /winssl/i) {
                $has_winssl=1;
+               $has_sslpinning=1;
                $ssllib="WinSSL";
            }
            elsif ($libcurl =~ /openssl/i) {
@@ -3032,6 +3034,17 @@
             "TrackMemory feature (--enable-curldebug)";
     }
 
+    open(M, "$CURL -M 2>&1|");
+    while(my $s = <M>) {
+        if($s =~ /built-in manual was disabled at build-time/) {
+            $has_manual = 0;
+            last;
+        }
+        $has_manual = 1;
+        last;
+    }
+    close(M);
+
     $has_shared = `sh $CURLCONFIG --built-shared`;
     chomp $has_shared;
 
@@ -3471,6 +3484,11 @@
                     next;
                 }
             }
+            elsif($1 eq "manual") {
+                if($has_manual) {
+                    next;
+                }
+            }
             elsif($1 eq "socks") {
                 next;
             }
@@ -3908,7 +3926,8 @@
 
     if((!$cmdhash{'option'}) || ($cmdhash{'option'} !~ /no-output/)) {
         #We may slap on --output!
-        if (!@validstdout) {
+        if (!@validstdout ||
+                ($cmdhash{'option'} && $cmdhash{'option'} =~ /force-output/)) {
             $out=" --output $CURLOUT ";
         }
     }
diff --git a/tests/server/CMakeLists.txt b/tests/server/CMakeLists.txt
index cfc1434..7384102 100644
--- a/tests/server/CMakeLists.txt
+++ b/tests/server/CMakeLists.txt
@@ -20,7 +20,7 @@
   target_link_libraries(${TEST_NAME} ${CURL_LIBS})
 
   # Test servers simply are standalone programs that do not use libcurl
-  # library.  For convinience and to ease portability of these servers,
+  # library.  For convenience and to ease portability of these servers,
   # some source code files from the libcurl subdirectory are also used
   # to build the servers.  In order to achieve proper linkage of these
   # files on Win32 targets it is necessary to build the test servers
diff --git a/tests/server/Makefile.inc b/tests/server/Makefile.inc
index 208aa0f..c6233af 100644
--- a/tests/server/Makefile.inc
+++ b/tests/server/Makefile.inc
@@ -4,13 +4,15 @@
  ../../lib/mprintf.c \
  ../../lib/nonblock.c \
  ../../lib/strtoofft.c \
- ../../lib/warnless.c
+ ../../lib/warnless.c \
+ ../../lib/curl_ctype.c
 
 CURLX_HDRS = \
  ../../lib/curlx.h \
  ../../lib/nonblock.h \
  ../../lib/strtoofft.h \
- ../../lib/warnless.h
+ ../../lib/warnless.h \
+ ../../lib/curl_ctype.h
 
 USEFUL = \
  getpart.c \
diff --git a/tests/server/fake_ntlm.c b/tests/server/fake_ntlm.c
index ca2b438..ec127a8 100644
--- a/tests/server/fake_ntlm.c
+++ b/tests/server/fake_ntlm.c
@@ -37,7 +37,7 @@
 /* include memdebug.h last */
 #include "memdebug.h"
 
-#define LOGFILE "log/fake_ntlm%d.log"
+#define LOGFILE "log/fake_ntlm%ld.log"
 
 const char *serverlogfile;
 
diff --git a/tests/server/sockfilt.c b/tests/server/sockfilt.c
index ceb04d8..844d35a 100644
--- a/tests/server/sockfilt.c
+++ b/tests/server/sockfilt.c
@@ -727,24 +727,20 @@
   }
 
   /* allocate internal array for the internal data */
-  data = malloc(nfds * sizeof(struct select_ws_data));
+  data = calloc(nfds, sizeof(struct select_ws_data));
   if(data == NULL) {
     errno = ENOMEM;
     return -1;
   }
 
   /* allocate internal array for the internal event handles */
-  handles = malloc(nfds * sizeof(HANDLE));
+  handles = calloc(nfds, sizeof(HANDLE));
   if(handles == NULL) {
     free(data);
     errno = ENOMEM;
     return -1;
   }
 
-  /* clear internal arrays */
-  memset(data, 0, nfds * sizeof(struct select_ws_data));
-  memset(handles, 0, nfds * sizeof(HANDLE));
-
   /* loop over the handles in the input descriptor sets */
   for(fds = 0; fds < nfds; fds++) {
     networkevents = 0;
@@ -1050,7 +1046,7 @@
 
        Commands:
 
-       DATA - plain pass-thru data
+       DATA - plain pass-through data
     */
 
     if(!read_stdin(buffer, 5))
diff --git a/tests/server/sws.c b/tests/server/sws.c
index 1d47375..10a8774 100644
--- a/tests/server/sws.c
+++ b/tests/server/sws.c
@@ -1347,7 +1347,7 @@
   serverfd = socket(socket_domain, SOCK_STREAM, 0);
   if(CURL_SOCKET_BAD == serverfd) {
     error = SOCKERRNO;
-    logmsg("Error creating socket for server conection: (%d) %s",
+    logmsg("Error creating socket for server connection: (%d) %s",
            error, strerror(error));
     return CURL_SOCKET_BAD;
   }
@@ -1358,7 +1358,7 @@
     curl_socklen_t flag = 1;
     if(0 != setsockopt(serverfd, IPPROTO_TCP, TCP_NODELAY,
                        (void *)&flag, sizeof(flag)))
-      logmsg("====> TCP_NODELAY for server conection failed");
+      logmsg("====> TCP_NODELAY for server connection failed");
   }
 #endif
 
@@ -1423,7 +1423,7 @@
  * either end.
  *
  * When doing FTP through a CONNECT proxy, we expect that the data connection
- * will be setup while the first connect is still being kept up. Therefor we
+ * will be setup while the first connect is still being kept up. Therefore we
  * must accept a new connection and deal with it appropriately.
  */
 
@@ -1567,7 +1567,7 @@
             curl_socklen_t flag = 1;
             if(0 != setsockopt(datafd, IPPROTO_TCP, TCP_NODELAY,
                                (void *)&flag, sizeof(flag)))
-              logmsg("====> TCP_NODELAY for client DATA conection failed");
+              logmsg("====> TCP_NODELAY for client DATA connection failed");
           }
 #endif
           req2.pipelining = FALSE;
diff --git a/tests/testcurl.1 b/tests/testcurl.1
index 4ba7a7a..a866c94 100644
--- a/tests/testcurl.1
+++ b/tests/testcurl.1
@@ -20,7 +20,7 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH testcurl.pl 1 "October 22, 2016" "Curl 7.58.0" "testcurl"
+.TH testcurl.pl 1 "October 22, 2016" "Curl 7.60.0" "testcurl"
 
 .SH NAME
 testcurl.pl \- (automatically) test curl
diff --git a/tests/testcurl.pl b/tests/testcurl.pl
index 9749bc7..69722fb 100755
--- a/tests/testcurl.pl
+++ b/tests/testcurl.pl
@@ -31,7 +31,7 @@
 # at a regular interval. The output is suitable to be mailed to
 # curl-autocompile@haxx.se to be dealt with automatically (make sure the
 # subject includes the word "autobuild" as the mail gets silently discarded
-# otherwise).  The most current build status (with a resonable backlog) will
+# otherwise).  The most current build status (with a reasonable backlog) will
 # be published on the curl site, at https://curl.haxx.se/auto/
 
 # USAGE:
diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am
index 61b72c0..fab82d2 100644
--- a/tests/unit/Makefile.am
+++ b/tests/unit/Makefile.am
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -50,6 +50,8 @@
 
 EXTRA_DIST = Makefile.inc CMakeLists.txt
 
+CFLAGS += @CURL_CFLAG_EXTRAS@
+
 # Prevent LIBS from being used for all link targets
 LIBS = $(BLANK_AT_MAKETIME)
 
diff --git a/tests/unit/Makefile.inc b/tests/unit/Makefile.inc
index bfb5c4d..f77da75 100644
--- a/tests/unit/Makefile.inc
+++ b/tests/unit/Makefile.inc
@@ -9,7 +9,8 @@
  unit1308 unit1309 unit1323 \
  unit1330 unit1394 unit1395 unit1396 unit1397 unit1398	\
  unit1399	\
- unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606
+ unit1600 unit1601 unit1602 unit1603 unit1604 unit1605 unit1606 unit1607 \
+ unit1608
 
 unit1300_SOURCES = unit1300.c $(UNITFILES)
 unit1300_CPPFLAGS = $(AM_CPPFLAGS)
@@ -85,3 +86,9 @@
 
 unit1606_SOURCES = unit1606.c $(UNITFILES)
 unit1606_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1607_SOURCES = unit1607.c $(UNITFILES)
+unit1607_CPPFLAGS = $(AM_CPPFLAGS)
+
+unit1608_SOURCES = unit1608.c $(UNITFILES)
+unit1608_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/tests/unit/unit1307.c b/tests/unit/unit1307.c
index 266eed3..0d2257b 100644
--- a/tests/unit/unit1307.c
+++ b/tests/unit/unit1307.c
@@ -25,7 +25,6 @@
 
 #define MATCH   CURL_FNMATCH_MATCH
 #define NOMATCH CURL_FNMATCH_NOMATCH
-#define RE_ERR  CURL_FNMATCH_FAIL
 
 struct testcase {
   const char *pattern;
@@ -36,8 +35,8 @@
 static const struct testcase tests[] = {
   /* brackets syntax */
   { "\\[",                      "[",                      MATCH },
-  { "[",                        "[",                      RE_ERR },
-  { "[]",                       "[]",                     RE_ERR },
+  { "[",                        "[",                      MATCH },
+  { "[]",                       "[]",                     MATCH },
   { "[][]",                     "[",                      MATCH },
   { "[][]",                     "]",                      MATCH },
   { "[[]",                      "[",                      MATCH },
@@ -49,6 +48,8 @@
   { "[][[[]",                   "[",                      MATCH },
   { "[[]",                      "]",                      NOMATCH },
 
+  { "[a@]",                     "a",                      MATCH },
+
   { "[a-z]",                    "a",                      MATCH },
   { "[a-z]",                    "A",                      NOMATCH },
   { "?[a-z]",                   "?Z",                     NOMATCH },
@@ -77,6 +78,7 @@
   { "[][?*-]",                  "*",                      MATCH },
   { "[][?*-]",                  "-",                      MATCH },
   { "[]?*-]",                   "-",                      MATCH },
+  { "[\xFF]",                   "\xFF",                   MATCH },
   { "?/b/c",                    "a/b/c",                  MATCH },
   { "^_{}~",                    "^_{}~",                  MATCH },
   { "!#%+,-./01234567889",      "!#%+,-./01234567889",    MATCH },
@@ -97,8 +99,10 @@
   { "*[^a].t?t",                "a.txt",                  NOMATCH },
   { "*[^a].t?t",                "ba.txt",                 NOMATCH },
   { "*[^a].t?t",                "ab.txt",                 MATCH },
-  { "*[^a]",                    "",                       MATCH },
-  { "[!ÿ]",                     "",                       MATCH },
+  { "*[^a]",                    "",                       NOMATCH },
+  { "[!\xFF]",                  "",                       NOMATCH },
+  { "[!\xFF]",                  "\xFF",                   NOMATCH },
+  { "[!\xFF]",                  "a",                      MATCH },
   { "[!?*[]",                   "?",                      NOMATCH },
   { "[!!]",                     "!",                      NOMATCH },
   { "[!!]",                     "x",                      MATCH },
@@ -130,6 +134,8 @@
   { "[^[:blank:]]",             "\t",                     NOMATCH },
   { "[^[:print:]]",             "\10",                    MATCH },
   { "[[:lower:]][[:lower:]]",   "ll",                     MATCH },
+  { "[[:foo:]]",                "bar",                    NOMATCH },
+  { "[[:foo:]]",                "f]",                     MATCH },
 
   { "Curl[[:blank:]];-)",       "Curl ;-)",               MATCH },
   { "*[[:blank:]]*",            " ",                      MATCH },
@@ -167,7 +173,7 @@
   { "x",                        "",                       NOMATCH },
 
   /* backslash */
-  { "\\",                       "\\",                     RE_ERR },
+  { "\\",                       "\\",                     MATCH },
   { "\\\\",                     "\\",                     MATCH },
   { "\\\\",                     "\\\\",                   NOMATCH },
   { "\\?",                      "?",                      MATCH },
diff --git a/tests/unit/unit1309.c b/tests/unit/unit1309.c
index c53cbcb..9d88538 100644
--- a/tests/unit/unit1309.c
+++ b/tests/unit/unit1309.c
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2011, 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -22,6 +22,7 @@
 #include "curlcheck.h"
 
 #include "splay.h"
+#include "warnless.h"
 
 
 static CURLcode unit_setup(void)
@@ -72,6 +73,7 @@
 
   struct Curl_tree *root, *removed;
   struct Curl_tree nodes[NUM_NODES*3];
+  size_t storage[NUM_NODES*3];
   int rc;
   int i, j;
   struct curltime tv_now = {0, 0};
@@ -80,13 +82,11 @@
   /* add nodes */
   for(i = 0; i < NUM_NODES; i++) {
     struct curltime key;
-    size_t payload;
 
     key.tv_sec = 0;
     key.tv_usec = (541*i)%1023;
-    payload = (size_t) key.tv_usec;
-
-    nodes[i].payload = (void *)payload; /* for simplicity */
+    storage[i] = key.tv_usec;
+    nodes[i].payload = &storage[i];
     root = Curl_splayinsert(key, root, &nodes[i]);
   }
 
@@ -97,8 +97,8 @@
     int rem = (i + 7)%NUM_NODES;
     printf("Tree look:\n");
     splayprint(root, 0, 1);
-    printf("remove pointer %d, payload %ld\n", rem,
-           (long)(nodes[rem].payload));
+    printf("remove pointer %d, payload %zu\n", rem,
+           *(size_t *)nodes[rem].payload);
     rc = Curl_splayremovebyaddr(root, &nodes[rem], &root);
     if(rc) {
       /* failed! */
@@ -118,8 +118,8 @@
 
     /* add some nodes with the same key */
     for(j = 0; j <= i % 3; j++) {
-      size_t payload = key.tv_usec*10 + j;
-      nodes[i * 3 + j].payload = (void *)payload; /* for simplicity */
+      storage[i * 3 + j] = key.tv_usec*10 + j;
+      nodes[i * 3 + j].payload = &storage[i * 3 + j];
       root = Curl_splayinsert(key, root, &nodes[i * 3 + j]);
     }
   }
@@ -130,8 +130,9 @@
     tv_now.tv_usec = i;
     root = Curl_splaygetbest(tv_now, root, &removed);
     while(removed != NULL) {
-      printf("removed payload %ld[%ld]\n", (long)(removed->payload) / 10,
-             (long)(removed->payload) % 10);
+      printf("removed payload %zu[%zu]\n",
+             (*(size_t *)removed->payload) / 10,
+             (*(size_t *)removed->payload) % 10);
       root = Curl_splaygetbest(tv_now, root, &removed);
     }
   }
@@ -139,7 +140,3 @@
   fail_unless(root == NULL, "tree not empty when it should be");
 
 UNITTEST_STOP
-
-
-
-
diff --git a/tests/unit/unit1395.c b/tests/unit/unit1395.c
index 527f281..78fdfa0 100644
--- a/tests/unit/unit1395.c
+++ b/tests/unit/unit1395.c
@@ -79,13 +79,13 @@
     abort_unless(out != NULL, "returned NULL!");
 
     if(strcmp(out, pairs[i].output)) {
-      fprintf(stderr, "Test %d: '%s' gave '%s' instead of '%s'\n",
+      fprintf(stderr, "Test %u: '%s' gave '%s' instead of '%s'\n",
               i, pairs[i].input, out, pairs[i].output);
       fail("Test case output mismatched");
       fails++;
     }
     else
-      fprintf(stderr, "Test %d: OK\n", i);
+      fprintf(stderr, "Test %u: OK\n", i);
     free(out);
   }
 
diff --git a/tests/unit/unit1607.c b/tests/unit/unit1607.c
new file mode 100644
index 0000000..71c5993
--- /dev/null
+++ b/tests/unit/unit1607.c
@@ -0,0 +1,213 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "urldata.h"
+#include "connect.h"
+#include "share.h"
+
+#include "memdebug.h" /* LAST include file */
+
+static struct Curl_easy *easy;
+static struct curl_hash *hostcache;
+
+static void unit_stop(void)
+{
+  curl_easy_cleanup(easy);
+  curl_global_cleanup();
+}
+
+static CURLcode unit_setup(void)
+{
+  int res = CURLE_OK;
+
+  global_init(CURL_GLOBAL_ALL);
+
+  easy = curl_easy_init();
+  if(!easy) {
+    curl_global_cleanup();
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  hostcache = Curl_global_host_cache_init();
+  if(!hostcache) {
+    unit_stop();
+    return CURLE_OUT_OF_MEMORY;
+  }
+
+  return res;
+}
+
+struct testcase {
+  /* host:port:address[,address]... */
+  const char *optval;
+
+  /* lowercase host and port to retrieve the addresses from hostcache */
+  const char *host;
+  int port;
+
+  /* 0 to 9 addresses expected from hostcache */
+  const char *address[10];
+};
+
+
+/* In builds without IPv6 support CURLOPT_RESOLVE should skip over those
+   addresses, so we have to do that as well. */
+static const char skip = 0;
+#ifdef ENABLE_IPV6
+#define IPV6ONLY(x) x
+#else
+#define IPV6ONLY(x) &skip
+#endif
+
+/* CURLOPT_RESOLVE address parsing tests */
+static const struct testcase tests[] = {
+  /* spaces aren't allowed, for now */
+  { "test.com:80:127.0.0.1, 127.0.0.2",
+    "test.com", 80, { NULL, }
+  },
+  { "TEST.com:80:,,127.0.0.1,,,127.0.0.2,,,,::1,,,",
+    "test.com", 80, { "127.0.0.1", "127.0.0.2", IPV6ONLY("::1"), }
+  },
+  { "test.com:80:::1,127.0.0.1",
+    "test.com", 80, { IPV6ONLY("::1"), "127.0.0.1", }
+  },
+  { "test.com:80:[::1],127.0.0.1",
+    "test.com", 80, { IPV6ONLY("::1"), "127.0.0.1", }
+  },
+  { "test.com:80:::1",
+    "test.com", 80, { IPV6ONLY("::1"), }
+  },
+  { "test.com:80:[::1]",
+    "test.com", 80, { IPV6ONLY("::1"), }
+  },
+  { "test.com:80:127.0.0.1",
+    "test.com", 80, { "127.0.0.1", }
+  },
+  { "test.com:80:,127.0.0.1",
+    "test.com", 80, { "127.0.0.1", }
+  },
+  { "test.com:80:127.0.0.1,",
+    "test.com", 80, { "127.0.0.1", }
+  },
+  { "test.com:0:127.0.0.1",
+    "test.com", 0, { "127.0.0.1", }
+  },
+};
+
+UNITTEST_START
+  int i;
+  int testnum = sizeof(tests) / sizeof(struct testcase);
+
+  for(i = 0; i < testnum; ++i, curl_easy_reset(easy)) {
+    int j;
+    int addressnum = sizeof tests[i].address / sizeof *tests[i].address;
+    struct Curl_addrinfo *addr;
+    struct Curl_dns_entry *dns;
+    struct curl_slist *list;
+    void *entry_id;
+    bool problem = false;
+
+    Curl_hostcache_clean(easy, hostcache);
+    easy->dns.hostcache = hostcache;
+    easy->dns.hostcachetype = HCACHE_GLOBAL;
+
+    list = curl_slist_append(NULL, tests[i].optval);
+    if(!list)
+        goto unit_test_abort;
+    curl_easy_setopt(easy, CURLOPT_RESOLVE, list);
+
+    Curl_loadhostpairs(easy);
+
+    entry_id = (void *)aprintf("%s:%d", tests[i].host, tests[i].port);
+    if(!entry_id) {
+      curl_slist_free_all(list);
+      goto unit_test_abort;
+    }
+    dns = Curl_hash_pick(easy->dns.hostcache, entry_id, strlen(entry_id) + 1);
+    free(entry_id);
+    entry_id = NULL;
+
+    addr = dns ? dns->addr : NULL;
+
+    for(j = 0; j < addressnum; ++j) {
+      long port = 0;
+      char ipaddress[MAX_IPADR_LEN] = {0};
+
+      if(!addr && !tests[i].address[j])
+        break;
+
+      if(tests[i].address[j] == &skip)
+        continue;
+
+      if(addr && !Curl_getaddressinfo(addr->ai_addr,
+                                      ipaddress, &port)) {
+        fprintf(stderr, "%s:%d tests[%d] failed. getaddressinfo failed.\n",
+                __FILE__, __LINE__, i);
+        problem = true;
+        break;
+      }
+
+      if(addr && !tests[i].address[j]) {
+        fprintf(stderr, "%s:%d tests[%d] failed. the retrieved addr "
+                "is %s but tests[%d].address[%d] is NULL.\n",
+                __FILE__, __LINE__, i, ipaddress, i, j);
+        problem = true;
+        break;
+      }
+
+      if(!addr && tests[i].address[j]) {
+        fprintf(stderr, "%s:%d tests[%d] failed. the retrieved addr "
+                "is NULL but tests[%d].address[%d] is %s.\n",
+                __FILE__, __LINE__, i, i, j, tests[i].address[j]);
+        problem = true;
+        break;
+      }
+
+      if(!curl_strequal(ipaddress, tests[i].address[j])) {
+        fprintf(stderr, "%s:%d tests[%d] failed. the retrieved addr "
+                "%s is not equal to tests[%d].address[%d] %s.\n",
+                __FILE__, __LINE__, i, ipaddress, i, j, tests[i].address[j]);
+        problem = true;
+        break;
+      }
+
+      if(port != tests[i].port) {
+        fprintf(stderr, "%s:%d tests[%d] failed. the retrieved port "
+                "for tests[%d].address[%d] is %ld but tests[%d].port is %d.\n",
+                __FILE__, __LINE__, i, i, j, port, i, tests[i].port);
+        problem = true;
+        break;
+      }
+
+      addr = addr->ai_next;
+    }
+
+    Curl_hostcache_clean(easy, easy->dns.hostcache);
+    curl_slist_free_all(list);
+
+    if(problem) {
+      unitfail++;
+      continue;
+    }
+  }
+UNITTEST_STOP
diff --git a/tests/unit/unit1608.c b/tests/unit/unit1608.c
new file mode 100644
index 0000000..9ae474b
--- /dev/null
+++ b/tests/unit/unit1608.c
@@ -0,0 +1,70 @@
+/***************************************************************************
+ *                                  _   _ ____  _
+ *  Project                     ___| | | |  _ \| |
+ *                             / __| | | | |_) | |
+ *                            | (__| |_| |  _ <| |___
+ *                             \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
+ *
+ * This software is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at https://curl.haxx.se/docs/copyright.html.
+ *
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+ * copies of the Software, and permit persons to whom the Software is
+ * furnished to do so, under the terms of the COPYING file.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ***************************************************************************/
+#include "curlcheck.h"
+
+#include "hostip.h"
+
+#define NUM_ADDRS 8
+static struct Curl_addrinfo addrs[NUM_ADDRS];
+
+static CURLcode unit_setup(void)
+{
+  int i;
+  for(i = 0; i < NUM_ADDRS - 1; i++) {
+    addrs[i].ai_next = &addrs[i + 1];
+  }
+
+  return CURLE_OK;
+}
+
+static void unit_stop(void)
+{
+
+}
+
+UNITTEST_START
+{
+  int i;
+  CURLcode code;
+  struct Curl_addrinfo* addrhead = addrs;
+
+  struct Curl_easy *easy = curl_easy_init();
+  abort_unless(easy, "out of memory");
+
+  code = curl_easy_setopt(easy, CURLOPT_DNS_SHUFFLE_ADDRESSES, 1L);
+  abort_unless(code == CURLE_OK, "curl_easy_setopt failed");
+
+  /* Shuffle repeatedly and make sure that the list changes */
+  for(i = 0; i < 10; i++) {
+    if(CURLE_OK != Curl_shuffle_addr(easy, &addrhead))
+      break;
+    if(addrhead != addrs)
+      break;
+  }
+
+  curl_easy_cleanup(easy);
+
+  abort_unless(addrhead != addrs, "addresses are not being reordered");
+
+  return 0;
+}
+UNITTEST_STOP
diff --git a/winbuild/BUILD.WINDOWS.txt b/winbuild/BUILD.WINDOWS.txt
index 98deed0..33252f8 100644
--- a/winbuild/BUILD.WINDOWS.txt
+++ b/winbuild/BUILD.WINDOWS.txt
@@ -12,7 +12,7 @@
 

    The latest Platform SDK can be downloaded freely from:

 

-    https://msdn.microsoft.com/en-us/windows/bb980924

+    https://developer.microsoft.com/en-us/windows/downloads/sdk-archive

 

    If you are building with VC6 then you will also need the February 2003

    Edition of the Platform SDK which can be downloaded from:

@@ -44,15 +44,25 @@
 Building with Visual C++

 ========================

 

-Open a Visual Studio Command prompt or the SDK CMD shell.

+Open a Visual Studio Command prompt:

 

-    Using the CMD Shell:

-     choose the right environment via the setenv command (see setenv /?)

-     for the full list of options. setenv /xp /x86 /release for example.

+     Using the 'Developer Command Prompt for VS <version>' menu entry:

+       where version is the Visual Studio version. The developer prompt at default

+       uses the x86 mode. It is required to call Vcvarsall.bat to setup the prompt

+       for the machine type you want, using Vcvarsall.bat.

+       This type of command prompt may not exist in all Visual Studio versions.

 

-    Using the Visual Studio command prompt Shell:

-     Everything is already pre-configured by calling one of the command

-     prompt.

+       For more information, check:

+         https://docs.microsoft.com/en-us/dotnet/framework/tools/developer-command-prompt-for-vs

+         https://docs.microsoft.com/en-us/cpp/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line

+

+     Using the 'VS <version> <platform> <type> Command Prompt' menu entry:

+       where version is the Visual Studio version, platform is e.g. x64

+       and type Native of Cross platform build.  This type of command prompt

+       may not exist in all Visual Studio versions.

+

+       See also:

+         https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

 

 Once you are in the console, go to the winbuild directory in the Curl

 sources:

@@ -65,26 +75,32 @@
 nmake /f Makefile.vc mode=<static or dll> <options>

 

 where <options> is one or many of:

-  VC=<6,7,8,9,10,11,12,14,15>  - VC versions

-  WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)

-                                 Defaults to sibbling directory deps: ../deps

-                                 Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/

-                                 Uncompress them into the deps folder.

-  WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static

-  WITH_NGHTTP2=<dll or static> - Enable HTTP/2 support, DLL or static

-  WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static

-  WITH_CARES=<dll or static>   - Enable c-ares support, DLL or static

-  WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static

-  WITH_SSH2=<dll or static>    - Enable libSSH2 support, DLL or static

-  ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes

-  ENABLE_IPV6=<yes or no>      - Enable IPv6, defaults to yes

-  ENABLE_IDN=<yes or no>       - Enable use of Windows IDN APIs, defaults to yes

-                                 Requires Windows Vista or later, or installation from:

-                                 https://www.microsoft.com/downloads/details.aspx?FamilyID=AD6158D7-DDBA-416A-9109-07607425A815

-  ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes

-  GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)

-  DEBUG=<yes or no>            - Debug builds

-  MACHINE=<x86 or x64>         - Target architecture (default is x86)

+  VC=<6,7,8,9,10,11,12,14,15>    - VC versions

+  WITH_DEVEL=<path>              - Paths for the development files (SSL, zlib, etc.)

+                                   Defaults to sibbling directory deps: ../deps

+                                   Libraries can be fetched at http://windows.php.net/downloads/php-sdk/deps/

+                                   Uncompress them into the deps folder.

+  WITH_SSL=<dll or static>       - Enable OpenSSL support, DLL or static

+  WITH_NGHTTP2=<dll or static>   - Enable HTTP/2 support, DLL or static

+  WITH_MBEDTLS=<dll or static>   - Enable mbedTLS support, DLL or static

+  WITH_CARES=<dll or static>     - Enable c-ares support, DLL or static

+  WITH_ZLIB=<dll or static>      - Enable zlib support, DLL or static

+  WITH_SSH2=<dll or static>      - Enable libSSH2 support, DLL or static

+  ENABLE_SSPI=<yes or no>        - Enable SSPI support, defaults to yes

+  ENABLE_IPV6=<yes or no>        - Enable IPv6, defaults to yes

+  ENABLE_IDN=<yes or no>         - Enable use of Windows IDN APIs, defaults to yes

+                                   Requires Windows Vista or later

+  ENABLE_WINSSL=<yes or no>      - Enable native Windows SSL support, defaults to yes

+  GEN_PDB=<yes or no>            - Generate Program Database (debug symbols for release build)

+  DEBUG=<yes or no>              - Debug builds

+  MACHINE=<x86 or x64>           - Target architecture (default is x86)

+  CARES_PATH=<path to cares>     - Custom path for c-ares

+  MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS

+  NGHTTP2_PATH=<path to HTTP/2>  - Custom path for nghttp2

+  SSH2_PATH=<path to libSSH2>    - Custom path for libSSH2

+  SSL_PATH=<path to OpenSSL>     - Custom path for OpenSSL

+  ZLIB_PATH=<path to zlib>       - Custom path for zlib

+

 

 Static linking of Microsoft's C RunTime (CRT):

 ==============================================

diff --git a/winbuild/Makefile.vc b/winbuild/Makefile.vc
index cec9b14..a874b77 100644
--- a/winbuild/Makefile.vc
+++ b/winbuild/Makefile.vc
@@ -37,26 +37,31 @@
 
 !MESSAGE Usage: nmake /f Makefile.vc mode=<static or dll> <options>
 !MESSAGE where <options> is one or many of:
-!MESSAGE   VC=<6,7,8,9,10,11,12,14,15>  - VC versions
-!MESSAGE   WITH_DEVEL=<path>            - Paths for the development files (SSL, zlib, etc.)
-!MESSAGE                                  Defaults to sibbling directory deps: ../deps
-!MESSAGE                                  Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/
-!MESSAGE                                  Uncompress them into the deps folder.
-!MESSAGE   WITH_SSL=<dll or static>     - Enable OpenSSL support, DLL or static
-!MESSAGE   WITH_NGHTTP2=<dll or static> - Enable HTTP/2 support, DLL or static
-!MESSAGE   WITH_CARES=<dll or static>   - Enable c-ares support, DLL or static
-!MESSAGE   WITH_ZLIB=<dll or static>    - Enable zlib support, DLL or static
-!MESSAGE   WITH_SSH2=<dll or static>    - Enable libSSH2 support, DLL or static
-!MESSAGE   WITH_MBEDTLS=<dll or static> - Enable mbedTLS support, DLL or static
-!MESSAGE   ENABLE_IDN=<yes or no>       - Enable use of Windows IDN APIs, defaults to yes
-!MESSAGE                                  Requires Windows Vista or later, or installation from:
-!MESSAGE                                  https://www.microsoft.com/en-us/download/details.aspx?id=734
-!MESSAGE   ENABLE_IPV6=<yes or no>      - Enable IPv6, defaults to yes
-!MESSAGE   ENABLE_SSPI=<yes or no>      - Enable SSPI support, defaults to yes
-!MESSAGE   ENABLE_WINSSL=<yes or no>    - Enable native Windows SSL support, defaults to yes
-!MESSAGE   GEN_PDB=<yes or no>          - Generate Program Database (debug symbols for release build)
-!MESSAGE   DEBUG=<yes or no>            - Debug builds
-!MESSAGE   MACHINE=<x86 or x64>         - Target architecture (default x64 on AMD64, x86 on others)
+!MESSAGE   VC=<6,7,8,9,10,11,12,14,15>    - VC versions
+!MESSAGE   WITH_DEVEL=<path>              - Paths for the development files (SSL, zlib, etc.)
+!MESSAGE                                    Defaults to sibbling directory deps: ../deps
+!MESSAGE                                    Libraries can be fetched at http://pecl2.php.net/downloads/php-windows-builds/
+!MESSAGE                                    Uncompress them into the deps folder.
+!MESSAGE   WITH_SSL=<dll or static>       - Enable OpenSSL support, DLL or static
+!MESSAGE   WITH_NGHTTP2=<dll or static>   - Enable HTTP/2 support, DLL or static
+!MESSAGE   WITH_CARES=<dll or static>     - Enable c-ares support, DLL or static
+!MESSAGE   WITH_ZLIB=<dll or static>      - Enable zlib support, DLL or static
+!MESSAGE   WITH_SSH2=<dll or static>      - Enable libSSH2 support, DLL or static
+!MESSAGE   WITH_MBEDTLS=<dll or static>   - Enable mbedTLS support, DLL or static
+!MESSAGE   ENABLE_IDN=<yes or no>         - Enable use of Windows IDN APIs, defaults to yes
+!MESSAGE                                    Requires Windows Vista or later
+!MESSAGE   ENABLE_IPV6=<yes or no>        - Enable IPv6, defaults to yes
+!MESSAGE   ENABLE_SSPI=<yes or no>        - Enable SSPI support, defaults to yes
+!MESSAGE   ENABLE_WINSSL=<yes or no>      - Enable native Windows SSL support, defaults to yes
+!MESSAGE   GEN_PDB=<yes or no>            - Generate Program Database (debug symbols for release build)
+!MESSAGE   DEBUG=<yes or no>              - Debug builds
+!MESSAGE   MACHINE=<x86 or x64>           - Target architecture (default x64 on AMD64, x86 on others)
+!MESSAGE   CARES_PATH=<path to cares>     - Custom path for c-ares
+!MESSAGE   MBEDTLS_PATH=<path to mbedTLS> - Custom path for mbedTLS
+!MESSAGE   NGHTTP2_PATH=<path to HTTP/2>  - Custom path for nghttp2
+!MESSAGE   SSH2_PATH=<path to libSSH2>    - Custom path for libSSH2
+!MESSAGE   SSL_PATH=<path to OpenSSL>     - Custom path for OpenSSL
+!MESSAGE   ZLIB_PATH=<path to zlib>       - Custom path for zlib
 !ERROR please choose a valid mode
 
 !ENDIF
@@ -248,12 +253,12 @@
 	@SET DIROBJ=$(LIBCURL_DIROBJ)
 	@SET MACRO_NAME=LIBCURL_OBJS
 	@SET OUTFILE=LIBCURL_OBJS.inc
-	@gen_resp_file.bat $(LIBCURL_OBJS)
+	@CALL gen_resp_file.bat $(LIBCURL_OBJS)
 
 	@SET DIROBJ=$(CURL_DIROBJ)
 	@SET MACRO_NAME=CURL_OBJS
 	@SET OUTFILE=CURL_OBJS.inc
-	@gen_resp_file.bat $(CURL_OBJS)
+	@CALL gen_resp_file.bat $(CURL_OBJS)
 
 	@SET CONFIG_NAME_LIB=$(CONFIG_NAME_LIB)
 	@SET MACHINE=$(MACHINE)
@@ -270,3 +275,6 @@
 copy_from_lib:
 	echo copying .c...
 	FOR %%i IN ($(CURLX_CFILES:/=\)) DO copy %%i ..\src\
+
+clean:
+	$(MAKE) /NOLOGO /F MakefileBuild.vc $@
diff --git a/winbuild/MakefileBuild.vc b/winbuild/MakefileBuild.vc
index 32790ff..bf79db3 100644
--- a/winbuild/MakefileBuild.vc
+++ b/winbuild/MakefileBuild.vc
@@ -45,6 +45,11 @@
 

 CFGSET=FALSE

 WINBUILD_DIR=`cd`

+

+# Utilities.

+# If a path is required that contains characters such as space, quote the path.

+MT         = mt.exe

+RC         = rc.exe

 ZIP        = zip.exe

 

 # Allow changing C compiler via environment variable CC (default cl.exe)

@@ -65,14 +70,19 @@
 

 LFLAGS     = /nologo /machine:$(MACHINE)

 LNKDLL     = link.exe /DLL

-LNKLIB     = link.exe /lib

+# Use lib.exe instead of link.exe as link.exe /lib has the following bad habits:

+# - optimizing options like /opt:ref raises warnings (at least in Visual Studio 2015)

+# - all (including Windows) dependencies are aggregated (as static parts) 

+# - link.exe /lib is not documented (anymore) at MSDN

+# Instead of id: just create an archive, that contains all objects

+LNKLIB     = lib.exe

 

 CFLAGS_PDB = /Zi

-LFLAGS_PDB = /incremental:no /opt:ref,icf

+LFLAGS_PDB = /incremental:no /opt:ref,icf /DEBUG

 

 CFLAGS_LIBCURL_STATIC  = /DCURL_STATICLIB

 

-WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib

+WIN_LIBS    = ws2_32.lib wldap32.lib advapi32.lib crypt32.lib

 

 BASE_NAME              = libcurl

 BASE_NAME_DEBUG        = $(BASE_NAME)_debug

@@ -92,9 +102,9 @@
 PDB_NAME_DLL_DEBUG     = $(BASE_NAME_DEBUG).pdb

 

 # CURL Command section

-PROGRAM_NAME = curl.exe

-CURL_CFLAGS   =  /I../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c

-CURL_LFLAGS   = /nologo /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console /machine:$(MACHINE)

+PROGRAM_NAME  = curl.exe

+CURL_CFLAGS   = /I../lib /I../include /nologo /W4 /EHsc /DWIN32 /FD /c

+CURL_LFLAGS   = /out:$(DIRDIST)\bin\$(PROGRAM_NAME) /subsystem:console $(LFLAGS)

 CURL_RESFLAGS = /i../include

 

 #############################################################

@@ -103,57 +113,92 @@
 CURL_SRC_DIR = ..\src

 

 !IFNDEF WITH_DEVEL

-WITH_DEVEL          = ../../deps

+WITH_DEVEL   = ../../deps

 !ENDIF

-DEVEL_INCLUDE  = $(WITH_DEVEL)/include

-DEVEL_LIB      = $(WITH_DEVEL)/lib

-DEVEL_BIN      = $(WITH_DEVEL)/bin

+DEVEL_INCLUDE= $(WITH_DEVEL)/include

+DEVEL_LIB    = $(WITH_DEVEL)/lib

 

-CFLAGS         = $(CFLAGS) /I"$(DEVEL_INCLUDE)"

-LFLAGS         = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"

+!IF EXISTS("$(DEVEL_INCLUDE)")

+CFLAGS       = $(CFLAGS) /I"$(DEVEL_INCLUDE)"

+!ENDIF

+!IF EXISTS("$(DEVEL_LIB)")

+LFLAGS       = $(LFLAGS) "/LIBPATH:$(DEVEL_LIB)"

+!ENDIF

 

+!IFDEF SSL_PATH

+SSL_INC_DIR  = $(SSL_PATH)\include

+SSL_LIB_DIR  = $(SSL_PATH)\lib

+SSL_LFLAGS   = $(SSL_LFLAGS) "/LIBPATH:$(SSL_LIB_DIR)"

+!ELSE

+SSL_INC_DIR=$(DEVEL_INCLUDE)\openssl

+SSL_LIB_DIR=$(DEVEL_LIB)

+!ENDIF

 

-!IF "$(WITH_SSL)"=="dll"

-!IF EXISTS("$(DEVEL_LIB)\libssl.lib")

+!IF "$(WITH_SSL)"=="dll" || "$(WITH_SSL)"=="static"

+!IF EXISTS("$(SSL_LIB_DIR)\libssl.lib")

 SSL_LIBS     = libssl.lib libcrypto.lib

 !ELSE

 SSL_LIBS     = libeay32.lib ssleay32.lib

 !ENDIF

 USE_SSL      = true

-SSL          = dll

-!ELSEIF "$(WITH_SSL)"=="static"

-!IF EXISTS("$(DEVEL_LIB)\libssl.lib")

-SSL_LIBS     = libssl.lib libcrypto.lib gdi32.lib user32.lib crypt32.lib

-!ELSE

-SSL_LIBS     = libeay32.lib ssleay32.lib gdi32.lib user32.lib crypt32.lib

+SSL          = $(WITH_SSL)

+!IF "$(WITH_SSL)"=="static"

+WIN_LIBS     = $(WIN_LIBS) gdi32.lib user32.lib crypt32.lib

 !ENDIF

-USE_SSL      = true

-SSL          = static

 !ENDIF

 

 !IFDEF USE_SSL

-SSL_CFLAGS   = /DUSE_OPENSSL /I"$(DEVEL_INCLUDE)/openssl"

-!IF EXISTS("$(DEVEL_INCLUDE)\openssl\is_boringssl.h")

+SSL_CFLAGS   = /DUSE_OPENSSL /I"$(SSL_INC_DIR)"

+!IF EXISTS("$(SSL_INC_DIR)\is_boringssl.h")

 SSL_CFLAGS   = $(SSL_CFLAGS) /DHAVE_BORINGSSL

 !ENDIF

 !ENDIF

 

+

+!IFDEF NGHTTP2_PATH

+NGHTTP2_INC_DIR  = $(NGHTTP2_PATH)\include

+NGHTTP2_LIB_DIR  = $(NGHTTP2_PATH)\lib

+NGHTTP2_LFLAGS   = $(NGHTTP2_LFLAGS) "/LIBPATH:$(NGHTTP2_LIB_DIR)"

+!ELSE

+NGHTTP2_INC_DIR  = $(DEVEL_INCLUDE)

+NGHTTP2_LIB_DIR  = $(DEVEL_LIB)

+!ENDIF

+

 !IF "$(WITH_NGHTTP2)"=="dll"

-NGHTTP2_CFLAGS   = /DUSE_NGHTTP2

+NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /I"$(NGHTTP2_INC_DIR)"

 NGHTTP2_LIBS     = nghttp2.lib

 !ELSEIF "$(WITH_NGHTTP2)"=="static"

-NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB

+NGHTTP2_CFLAGS   = /DUSE_NGHTTP2 /DNGHTTP2_STATICLIB /I"$(NGHTTP2_INC_DIR)"

 NGHTTP2_LIBS     = nghttp2_static.lib

 !ENDIF

 

+

+!IFDEF MBEDTLS_PATH

+MBEDTLS_INC_DIR  = $(MBEDTLS_PATH)\include

+MBEDTLS_LIB_DIR  = $(MBEDTLS_PATH)\lib

+MBEDTLS_LFLAGS   = $(MBEDTLS_LFLAGS) "/LIBPATH:$(MBEDTLS_LIB_DIR)"

+!ELSE

+MBEDTLS_INC_DIR  = $(DEVEL_INCLUDE)

+MBEDTLS_LIB_DIR  = $(DEVEL_LIB)

+!ENDIF

+

 !IF "$(WITH_MBEDTLS)"=="dll" || "$(WITH_MBEDTLS)"=="static"

 USE_MBEDTLS    = true

 MBEDTLS        = $(WITH_MBEDTLS)

-MBEDTLS_CFLAGS = /DUSE_MBEDTLS

+MBEDTLS_CFLAGS = /DUSE_MBEDTLS /I"$(MBEDTLS_INC_DIR)"

 MBEDTLS_LIBS   = mbedtls.lib mbedcrypto.lib mbedx509.lib

 !ENDIF

 

 

+!IFDEF CARES_PATH

+CARES_INC_DIR  = $(CARES_PATH)\include

+CARES_LIB_DIR  = $(CARES_PATH)\lib

+CARES_LFLAGS   = $(CARES_LFLAGS) "/LIBPATH:$(CARES_LIB_DIR)"

+!ELSE

+CARES_INC_DIR  = $(DEVEL_INCLUDE)/cares

+CARES_LIB_DIR  = $(DEVEL_LIB)

+!ENDIF

+

 !IF "$(WITH_CARES)"=="dll"

 !IF "$(DEBUG)"=="yes"

 CARES_LIBS     = caresd.lib

@@ -173,37 +218,76 @@
 !ENDIF

 

 !IFDEF USE_CARES

-CARES_CFLAGS   = /DUSE_ARES /I"$(DEVEL_INCLUDE)/cares"

+CARES_CFLAGS   = /DUSE_ARES /I"$(CARES_INC_DIR)"

 !ENDIF

 

+

+!IFDEF ZLIB_PATH

+ZLIB_INC_DIR = $(ZLIB_PATH)\include

+ZLIB_LIB_DIR = $(ZLIB_PATH)\lib

+ZLIB_LFLAGS  = $(ZLIB_LFLAGS) "/LIBPATH:$(ZLIB_LIB_DIR)"

+!ELSE

+ZLIB_INC_DIR = $(DEVEL_INCLUDE)

+ZLIB_LIB_DIR = $(DEVEL_LIB)

+!ENDIF

+

+# Depending on how zlib is built the libraries have different names, we 

+# try to handle them all. 

 !IF "$(WITH_ZLIB)"=="dll"

+!IF EXISTS("$(ZLIB_LIB_DIR)\zlibwapi.lib")

+ZLIB_LIBS = zlibwapi.lib

+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zdll.lib")

+ZLIB_LIBS   = zdll.lib

+!ELSE

 ZLIB_LIBS   = zlib.lib

+!ENDIF

 USE_ZLIB    = true

 ZLIB        = dll

 !ELSEIF "$(WITH_ZLIB)"=="static"

+!IF EXISTS("$(ZLIB_LIB_DIR)\zlibstat.lib")

+ZLIB_LIBS   = zlibstat.lib

+!ELSEIF EXISTS("$(ZLIB_LIB_DIR)\zlib.lib")

+ZLIB_LIBS   = zlib.lib

+!ELSE

 ZLIB_LIBS   = zlib_a.lib

+!ENDIF

 USE_ZLIB    = true

 ZLIB        = static

 !ENDIF

 

 !IFDEF USE_ZLIB

-ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ

+ZLIB_CFLAGS = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I"$(ZLIB_INC_DIR)"

 !ENDIF

 

 

+!IFDEF SSH2_PATH

+SSH2_INC_DIR= $(SSH2_PATH)\include

+SSH2_LIB_DIR= $(SSH2_PATH)\lib

+SSH2_LFLAGS = $(SSH2_LFLAGS) "/LIBPATH:$(SSH2_LIB_DIR)"

+!ELSE

+SSH2_LIB_DIR= $(DEVEL_LIB)

+SSH2_INC_DIR= $(DEVEL_INCLUDE)/libssh2

+!ENDIF

+

 !IF "$(WITH_SSH2)"=="dll"

 SSH2_LIBS   = libssh2.lib

 USE_SSH2    = true

 SSH2        = dll

 !ELSEIF "$(WITH_SSH2)"=="static"

-SSH2_LIBS   = libssh2_a.lib user32.lib

+# libssh2 NMakefile on Windows at default creates a static library without _a suffix

+!IF EXISTS("$(SSH2_LIB_DIR)\libssh2.lib")

+SSH2_LIBS   = libssh2.lib

+!ELSE

+SSH2_LIBS   = libssh2_a.lib

+!ENDIF

+WIN_LIBS     = $(WIN_LIBS) user32.lib

 USE_SSH2    = true

 SSH2        = static

 !ENDIF

 

 !IFDEF USE_SSH2

 SSH2_CFLAGS = /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /DUSE_LIBSSH2

-SSH2_CFLAGS = $(SSH2_CFLAGS) /I$(WITH_DEVEL)/include/libssh2

+SSH2_CFLAGS = $(SSH2_CFLAGS) /I$(SSH2_INC_DIR)

 !ENDIF

 

 

@@ -267,7 +351,7 @@
 

 

 !IFDEF EMBED_MANIFEST

-MANIFESTTOOL = mt -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1

+MANIFESTTOOL = $(MT) -manifest $(DIRDIST)\bin\$(PROGRAM_NAME).manifest -outputresource:$(DIRDIST)\bin\$(PROGRAM_NAME);1

 !ENDIF

 

 # Runtime library configuration

@@ -311,7 +395,7 @@
 

 !IF "$(AS_DLL)" == "true"

 

-LNK       = $(LNKDLL) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)

+LNK       = $(LNKDLL) $(LFLAGS) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)

 !IF "$(DEBUG)"=="yes"

 TARGET    = $(LIB_NAME_DLL_DEBUG)

 LNK       = $(LNK) /DEBUG /IMPLIB:$(LIB_DIROBJ)\$(LIB_NAME_IMP_DEBUG)

@@ -335,7 +419,7 @@
 TARGET   = $(LIB_NAME_STATIC)

 PDB      = $(PDB_NAME_STATIC)

 !ENDIF

-LNK      = $(LNKLIB) $(WIN_LIBS) /out:$(LIB_DIROBJ)\$(TARGET)

+LNK      = $(LNKLIB) /out:$(LIB_DIROBJ)\$(TARGET)

 CURL_CC  = $(CURL_CC) $(CFLAGS_LIBCURL_STATIC)

 

 # AS_DLL

@@ -397,27 +481,7 @@
 #

 CURL_LINK = link.exe /incremental:no /libpath:"$(DIRDIST)\lib"

 

-#!IF "$(CFG)" == "release-ssh2-ssl-dll-zlib"

-#TARGET   = $(LIB_NAME_STATIC)

-#LNK      = $(LNKLIB) $(WINLIBS) $(SSLLIBS) $(ZLIBLIBS)  $(SSH2LIBS) $(SSL_LFLAGS) $(ZLIB_LFLAGS) $(LFLAGSSSH) /out:$(LIB_DIROBJ)\$(TARGET)

-#CC       = $(CCNODBG) $(RTLIB) $(SSL_CFLAGS) $(ZLIB_CFLAGS) $(CFLAGSLIB)  $(SSH2_CFLAGS)

-#CFGSET   = TRUE

-#!ENDIF

-

-#######################

-# Only the clean target can be used if a config was not provided.

-#

-!IF "$(CFGSET)" == "FALSE"

-clean:

-	@-erase /s *.dll 2> NUL

-	@-erase /s *.exp 2> NUL

-	@-erase /s *.idb 2> NUL

-	@-erase /s *.lib 2> NUL

-	@-erase /s *.obj 2> NUL

-	@-erase /s *.pch 2> NUL

-	@-erase /s *.pdb 2> NUL

-	@-erase /s *.res 2> NUL

-!ELSE

+!IF "$(CFGSET)" != "FALSE"

 # A mode was provided, so the library can be built.

 #

 !include CURL_OBJS.inc

@@ -453,7 +517,7 @@
 	@echo GenPDB:     $(GEN_PDB)

 	@echo Debug:      $(DEBUG)

 	@echo Machine:    $(MACHINE)

-	$(LNK) $(LFLAGS) $(LIB_OBJS)

+	$(LNK) $(LIB_OBJS)

 	@echo Copying libs...

 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_DLL) copy $(LIB_DIROBJ)\$(LIB_NAME_DLL)       $(DIRDIST)\bin\ /y >nul 2<&1

 	@if exist $(LIB_DIROBJ)\$(LIB_NAME_STATIC) copy $(LIB_DIROBJ)\$(LIB_NAME_STATIC)    $(DIRDIST)\lib\ /y >nul 2<&1

@@ -496,7 +560,7 @@
 	$(CURL_CC) $(CFLAGS) /Fo"$@"  $<

 

 $(LIB_DIROBJ)\libcurl.res: $(LIBCURL_SRC_DIR)\libcurl.rc

-	rc $(RC_FLAGS)

+	$(RC) $(RC_FLAGS)

 

 #

 # curl.exe

@@ -520,7 +584,8 @@
 CURL_FROM_LIBCURL=$(CURL_DIROBJ)\tool_hugehelp.obj \

  $(CURL_DIROBJ)\nonblock.obj \

  $(CURL_DIROBJ)\strtoofft.obj \

- $(CURL_DIROBJ)\warnless.obj

+ $(CURL_DIROBJ)\warnless.obj \

+ $(CURL_DIROBJ)\curl_ctype.obj

  

 $(PROGRAM_NAME): $(CURL_DIROBJ) $(CURL_FROM_LIBCURL) $(EXE_OBJS)

 	$(CURL_LINK) $(CURL_LFLAGS) $(CURL_LIBCURL_LIBNAME) $(WIN_LIBS) $(CURL_FROM_LIBCURL) $(EXE_OBJS)

@@ -537,7 +602,23 @@
 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/strtoofft.c

 $(CURL_DIROBJ)\warnless.obj: ../lib/warnless.c

 	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/warnless.c

+$(CURL_DIROBJ)\curl_ctype.obj: ../lib/curl_ctype.c

+	$(CURL_CC) $(CURL_CFLAGS) /Fo"$@" ../lib/curl_ctype.c

 $(CURL_DIROBJ)\curl.res: $(CURL_SRC_DIR)\curl.rc

 	rc $(CURL_RC_FLAGS)

 

 !ENDIF  # End of case where a config was provided.

+

+clean:

+	@-erase /s *.dll 2> NUL

+	@-erase /s *.exp 2> NUL

+	@-erase /s *.idb 2> NUL

+	@-erase /s *.lib 2> NUL

+	@-erase /s *.obj 2> NUL

+	@-erase /s *.pch 2> NUL

+	@-erase /s *.pdb 2> NUL

+	@-erase /s *.res 2> NUL

+	@if exist $(LIB_DIROBJ) rd /s/q $(LIB_DIROBJ)

+	@if exist $(CURL_DIROBJ)rd /s/q $(CURL_DIROBJ)

+	@if exist $(DIRDIST) rd /s/q $(DIRDIST)

+